函数调用源码剖析 2021-06-30 Go源码 约 6232 字 预计阅读 13 分钟 前言 函数是 Go 语言的一等公民,掌握和理解函数的调用过程是我们深入学习 Go 无法跳过的,本节将从函数的调用惯例和参数传递方法两个方面分别介绍函数的执 阅读更多
interface和reflect源码剖析 2021-06-28 Go源码 约 15937 字 预计阅读 32 分钟 interface Go 语言中的接口是一组方法的签名,它是 Go 语言的重要组成部分。使用接口能够让我们写出易于测试的代码,然而很多工程师对 Go 的接口了解都非常有限,也 阅读更多
基本原语panic和recover源码剖析 2021-06-20 Go源码 约 6274 字 预计阅读 13 分钟 前言 本节将分析 Go 语言中两个经常成对出现的两个关键字 — panic 和 recover。这两个关键字与上一节提到的 defer 有紧密的联系,它们都是 Go 语言中的内置函数 阅读更多
基本原语defer源码剖析 2021-06-18 Go源码 约 11584 字 预计阅读 24 分钟 前言 很多现代的编程语言中都有 defer 关键字,Go 语言的 defer 会在当前函数返回前执行传入的函数,它会经常被用于关闭文件描述符、关闭数据库连接以及解锁资源 阅读更多
基本原语make和new源码剖析 2021-06-18 Go源码 约 2511 字 预计阅读 6 分钟 前言 当我们想要在 Go 语言中初始化一个结构时,可能会用到两个不同的关键字 — make 和 new。因为它们的功能相似,所以初学者可能会对这两个关键字的作用感 阅读更多
如何做CodeReview 2021-06-17 Go调优 约 34964 字 预计阅读 70 分钟 前言 作为公司代码委员会 golang 分会的理事,我 review 了很多代码,看了很多别人的 review 评论。发现不少同学 code review 与写出好代码的水平有待提高。在这里,想分享一下我的 阅读更多
Go语言面向对象设计 2021-06-16 Go调优 约 6085 字 预计阅读 13 分钟 Code review 在座的各位有谁把 code review 作为日常工作的一部分?【整个房间举起了手,鼓舞人心】。好的,为什么要进行 code review ?【有人高呼“阻止不良代码”】 如果代码审 阅读更多
Protobuf如何使用动态反射 2021-06-16 编解码 约 4026 字 预计阅读 9 分钟 反射 Reflection(反射)是新实现的旗舰特性。与 reflect 包提供 Go 类型和值的视图相似,protoreflect 包根据 protocol buffer 类型系统提供值的视图。 阅读更多
Protobuf如何传递动态参数 2021-06-15 编解码 约 5684 字 预计阅读 12 分钟 前言 Protocol Buffers(protobuf)是Google推出的高效,静态类型,语言无关的数据序列化格式。我们在Envoy代理中使用protob 阅读更多
基本原语for和range源码剖析 2021-06-14 Go源码 约 5942 字 预计阅读 12 分钟 汇编 循环是所有编程语言都有的控制结构,除了使用经典的三段式循环之外,Go 语言还引入了另一个关键字 range 帮助我们快速遍历数组、切片、哈希表以及 Channel 等 阅读更多
go-assert库介绍 2021-06-09 Go三方库 约 1684 字 预计阅读 4 分钟 初衷 今天要聊的库就是 github.com/huandu/go-assert,是我在几年前突发奇想实现的库。当时有一个「痒点」:写 Go 测试用例的 阅读更多
Go的深拷贝库:go-clone 2021-06-08 Go三方库 约 8799 字 预计阅读 18 分钟 背景 这个库是 github.com/huandu/go-clone,主要用途是对任意的 Go 结构进行深拷贝,创造一个内容完全相同的副本,得到的值可 阅读更多
自动dump库homles介绍 2021-06-08 Go三方库 约 6778 字 预计阅读 14 分钟 背景 Go 项目做的比较大(主要说代码多,参与人多)之后,可能会遇到类似下面这样的问题: 程序老是半夜崩,崩了以后就重启了,我也醒不来,现场早就丢了 阅读更多
Go应用为什么虚拟内存占用过高 2021-06-08 Go调优 约 6027 字 预计阅读 13 分钟 前言 前段时间,某同学说某服务的容器因为超出内存限制,不断地重启,问我们是不是有内存泄露,赶紧排查,然后解决掉,省的出问题。我们大为震惊,赶紧 阅读更多
如何控制Go服务在容器环境的内存占用 2021-06-07 Go调优 约 2995 字 预计阅读 6 分钟 现象 为什么个别 Go 业务服务,Memory 总是提示这么高,经常达到容器限额,以至于被动 OOM Kill,是不是有什么安全隐患? 发现个别业务服务内存占用 阅读更多
K8s的日志采集实践 2021-06-07 Kubernetes 约 8862 字 预计阅读 18 分钟 Kubernetes中日志重要性 通常日志最基础的作用是记录程序的运行轨迹,在此之上会衍生出非常多的功能,例如线上监控、告警、运营分析、安全分 阅读更多
Go如何使用zstd压缩算法 2021-06-06 Go三方库 约 4333 字 预计阅读 9 分钟 zstd Zstandard是一种实时压缩算法,提供高压缩率。它提供了非常广泛的压缩/速度权衡,同时由非常快速的解码器提供支持。实现了高性能压缩算法 阅读更多
K8s如何在环境变量中引用其他环境变量 2021-06-06 Kubernetes 约 286 字 预计阅读 1 分钟 我有一个Deployment使用Downward API公开 POD ID的对象。这很好用。但是,我想设置另一个环境变量,日志路径,参考 POD ID。但是, 阅读更多
Linux的ln命令介绍 2021-06-06 Linux 约 632 字 预计阅读 2 分钟 创建软链接 ln -s [源文件或目录] [目标文件或目录] 例如: 当前路径创建test 引向/var/www/test 文件夹 ln –s /var/www/test test 创建/var/tes 阅读更多
Go中如何实现hmac算法 2021-05-31 Go实践 约 459 字 预计阅读 1 分钟 首先来说说SHA1加密 SHA-1(英语:Secure Hash Algorithm 1,中文名:安全散列算法1)是一种密码散列函数,美国国家安全局设计,并由美国国家标准 阅读更多