SF
煎鱼的清汤锅
煎鱼的清汤锅
注册登录
关注博客
注册登录
主页
关于
RSS
新书《Go语言编程之旅:一起用Go做项目》出版啦!
煎鱼
2020-07-06
阅读 3 分钟
8k
最早从我在 Segmentfault 开始写技术文章起,不知不觉近三年过去了,咨询和催我出书和读者逐年递增,在 2019 年算是达到一个高峰。当然,综合考虑下我也是一直拒绝的,觉得火候还不够。
为什么容器内存占用居高不下,频频 OOM
煎鱼
2020-06-08
阅读 4 分钟
4.8k
最近我在回顾思考(写 PPT),整理了现状,发现了这个问题存在多时,经过一番波折,最终确定了元凶和相对可行的解决方案,因此也在这里分享一下排查历程。
首发特性:goproxy.cn 现已推出首个 Go 模块代理统计数据 API
煎鱼
2020-03-30
阅读 6 分钟
2.7k
这周很值得纪念,首先是 goproxy.cn 已缓存的模块版本总数突破了一百万,这甚至比起 Go 官方的 proxy.golang.org 已缓存的还要多出不少。其次是 goproxy.cn 的日访问量已稳定在千万级,正在朝着亿级进发,目前这在国内我了解到的别的几个同类服务中是最多的了。另外尤为重要的一点是,经过我们的不懈努力,甚至付出了两...
Go Modules 终极入门
煎鱼
2020-02-27
阅读 13 分钟
15.7k
Go modules 是 Go 语言中正式官宣的项目依赖解决方案,Go modules(前身为vgo)于 Go1.11 正式发布,在 Go1.14 已经准备好,并且可以用在生产上(ready for production)了,Go官方也鼓励所有用户从其他依赖项管理工具迁移到 Go modules。
干货满满的 Go Modules 和 goproxy.cn
煎鱼
2019-09-29
阅读 12 分钟
17.4k
大家好,我是一只普通的煎鱼,周四晚上很有幸邀请到 goproxy.cn 的作者 @盛傲飞(@aofei) 到 Go 夜读给我们进行第 61 期 《Go Modules、Go Module Proxy 和 goproxy.cn》的技术分享。
煎鱼换公众号啦。
煎鱼
2019-09-22
阅读 1 分钟
2.9k
大家周末好呀,我是煎鱼,由于现在这个公众号(煎鱼说)并没有留言功能,在互动交流方面总感觉缺了一块,一直觉得比较遗憾。 因此从今天起我将正式换到我的新号(我要煎鱼说)去开更了,欢迎大家再次关注我,新号的二维码如下: 感谢你的再次关注,如果你身边也有朋友关注了我,欢迎周知一下。 又要重新开始了,想想就激...
Go1.13 defer 的性能是如何提高的?
煎鱼
2019-09-07
阅读 5 分钟
7.2k
最近 Go1.13 终于发布了,其中一个值得关注的特性就是 defer 在大部分的场景下性能提升了30%,但是官方并没有具体写是怎么提升的,这让大家非常的疑惑。而我因为之前写过《深入理解 Go defer》 和 《Go defer 会有性能损耗,尽量不要用?》 这类文章,因此我挺感兴趣它是做了什么改变才能得到这样子的结果,所以今天和大...
goproxy.cn - 为中国 Go 语言开发者量身打造的模块代理
煎鱼
2019-09-05
阅读 3 分钟
70.9k
Go 1.13 的发布为 Go 带来了不少变化(详见:[链接] ),有些变化可能是开发者无法直接感觉到的,但有些又是和开发者日常开发息息相关的。其中,Go modules 的扶正就是这次 Go 1.13 发布中开发者能直接感觉到的最大变化。
用 GODEBUG 看 GC
煎鱼
2019-09-02
阅读 4 分钟
13.4k
在计算机科学中,垃圾回收(GC)是一种自动管理内存的机制,垃圾回收器会去尝试回收程序不再使用的对象及其占用的内存。而最早 John McCarthy 在 1959 年左右发明了垃圾回收,以简化 Lisp 中的手动内存管理的机制(来自 wikipedia)。
用 GODEBUG 看调度跟踪
煎鱼
2019-08-19
阅读 8 分钟
10.9k
让 Go 更强大的原因之一莫过于它的 GODEBUG 工具,GODEBUG 的设置可以让 Go 程序在运行时输出调试信息,可以根据你的要求很直观的看到你想要的调度器或垃圾回收等详细信息,并且还不需要加装其它的插件,非常方便,今天我们将先讲解 GODEBUG 的调度器相关内容,希望对你有所帮助。
Golang 大杀器之跟踪剖析 trace
煎鱼
2019-07-12
阅读 5 分钟
22.5k
在 Go 中有许许多多的分析工具,在之前我有写过一篇 《Golang 大杀器之性能剖析 PProf》 来介绍 PProf,如果有小伙伴感兴趣可以去我博客看看。
从实践到原理,带你参透 gRPC
煎鱼
2019-06-29
阅读 19 分钟
46.4k
gRPC 在 Go 语言中大放异彩,越来越多的小伙伴在使用,最近也在公司安利了一波,希望能通过这篇文章能带你一览 gRPC 的爱与恨。本文篇幅较长,希望你做好阅读准备,目录如下:
gRPC+gRPC Gateway 能不能不用证书?
煎鱼
2019-06-22
阅读 3 分钟
7.7k
如果你以前有涉猎过 gRPC+gRPC Gateway 这两个组件,你肯定会遇到这个问题,就是 “为什么非得开 TLS,才能够实现同端口双流量,能不能不开?” 又或是 “我不想用证书就实现这些功能,行不行?”。我被无数的人问过无数次这些问题,也说服过很多人,但说服归说服,不代表放弃。前年不行,不代表今年不行,在今天我希望分享...
Go defer 会有性能损耗,尽量不要用?
煎鱼
2019-06-16
阅读 3 分钟
13.2k
上个月在 @polaris @轩脉刃 的全栈技术群里看到一个小伙伴问 “说 defer 在栈退出时执行,会有性能损耗,尽量不要用,这个怎么解?”。
深入理解 Go defer
煎鱼
2019-05-27
阅读 7 分钟
10.7k
在上一章节 《深入理解 Go panic and recover》 中,我们发现了 defer 与其关联性极大,还是觉得非常有必要深入一下。希望通过本章节大家可以对 defer 关键字有一个深刻的理解,那么我们开始吧。你先等等,请排好队,我们这儿采取后进先出 LIFO 的出站方式...
深入理解 Go panic and recover
煎鱼
2019-05-21
阅读 9 分钟
8.7k
作为一个 gophper,我相信你对于 panic 和 recover 肯定不陌生,但是你有没有想过。当我们执行了这两条语句之后。底层到底发生了什么事呢?前几天和同事刚好聊到相关的话题,发现其实大家对这块理解还是比较模糊的。希望这篇文章能够从更深入的角度告诉你为什么,它到底做了什么事?
我要在栈上。不,你应该在堆上
煎鱼
2019-05-20
阅读 5 分钟
6.6k
原文地址:我要在栈上。不,你应该在堆上 前言 我们在写代码的时候,有时候会想这个变量到底分配到哪里了?这时候可能会有人说,在栈上,在堆上。信我准没错... 但从结果上来讲你还是一知半解,这可不行,万一被人懵了呢。今天我们一起来深挖下 Go 在这块的奥妙,自己动手丰衣足食 问题 {代码...} 开局就是一把问号,带...
为什么遍历 Go map 是无序的?
煎鱼
2019-04-07
阅读 5 分钟
7.2k
有的小伙伴没留意过 Go map 输出顺序,以为它是稳定的有序的;有的小伙伴知道是无序的,但却不知道为什么?有的却理解错误?今天我们将通过本文,揭开 for range map 的 “神秘” 面纱,看看它内部实现到底是怎么样的,输出顺序到底是怎么样?
简单围观一下有趣的 //go: 指令
煎鱼
2019-03-31
阅读 3 分钟
6.2k
原文地址:简单围观一下有趣的 //go: 指令 前言 如果你平时有翻看源码的习惯,你肯定会发现。咦,怎么有的方法上面总是写着 //go: 这类指令呢。他们到底是干嘛用的? 今天我们一同揭开他们的面纱,我将简单给你介绍一下,它们都负责些什么 go:linkname {代码...} 该指令指示编译器使用 importpath.name 作为源代码中声明...
深入理解 Go map:赋值和扩容迁移
煎鱼
2019-03-24
阅读 11 分钟
16.7k
在 上一章节 中,数据结构小节里讲解了大量基础字段,可能你会疑惑需要 #&(!……#(!¥! 来干嘛?接下来我们一起简单了解一下基础概念。再开始研讨今天文章的重点内容。我相信这样你能更好的读懂这篇文章
深入理解 Go map:初始化和访问元素
煎鱼
2019-03-05
阅读 7 分钟
13.3k
从本文开始咱们一起探索 Go map 里面的奥妙吧,看看它的内在是怎么构成的,又分别有什么值得留意的地方? 第一篇将探讨初始化和访问元素相关板块,咱们带着疑问去学习,例如: 初始化的时候会马上分配内存吗? 底层数据是如何存储的? 底层是如何使用 key 去寻找数据的? 底层是用什么方式解决哈希冲突的? 数据类型那么...
for-loop 与 json.Unmarshal 性能分析概要
煎鱼
2019-02-17
阅读 6 分钟
4.2k
在项目中,常常会遇到循环交换赋值的数据处理场景,尤其是 RPC,数据交互格式要转为 Protobuf,赋值是无法避免的。一般会有如下几种做法:
来,控制一下 Goroutine 的并发数量
煎鱼
2019-01-20
阅读 6 分钟
24.1k
在这里,假设 userCount 是一个外部传入的参数(不可预测,有可能值非常大),有人会全部丢进去循环。想着全部都并发 goroutine 去同时做某一件事。觉得这样子会效率会更高,对不对!
Go Slice 最大容量大小是怎么来的
煎鱼
2019-01-06
阅读 4 分钟
6.3k
在《深入理解 Go Slice》中,我们提到了 “根据其类型大小去获取能够申请的最大容量大小” 的处理逻辑。今天我们将更深入地去探究一下,底层到底做了什么东西,涉及什么知识点?
在 Go 中恰到好处的内存对齐
煎鱼
2018-12-26
阅读 6 分钟
20k
原文地址:在 Go 中恰到好处的内存对齐 问题 {代码...} 在开始之前,希望你计算一下 Part1 共占用的大小是多少呢? {代码...} 输出结果: {代码...} 这么一算,Part1 这一个结构体的占用内存大小为 1+4+1+8+1 = 15 个字节。相信有的小伙伴是这么算的,看上去也没什么毛病 真实情况是怎么样的呢?我们实际调用看看,如下...
有点不安全却又一亮的 Go unsafe.Pointer
煎鱼
2018-12-15
阅读 3 分钟
26.1k
首先,Go 是一门静态语言,所有的变量都必须为标量类型。不同的类型不能够进行赋值、计算等跨类型的操作。那么指针也对应着相对的类型,也在 Compile 的静态类型检查的范围内。同时静态语言,也称为强类型。也就是一旦定义了,就不能再改变它
深入理解 Go Slice
煎鱼
2018-12-11
阅读 8 分钟
10.9k
在 Go 中,Slice(切片)是抽象在 Array(数组)之上的特殊类型。为了更好地了解 Slice,第一步需要先对 Array 进行理解。深刻了解 Slice 与 Array 之间的区别后,就能更好的对其底层一番摸索 😄
Golang 源码剖析:fmt 标准库 --- Print* 是怎么样输出的?
煎鱼
2018-12-04
阅读 9 分钟
2.1k
原文地址:Golang 源码剖析:fmt 标准库 前言 {代码...} 标准开场见多了,那内部标准库又是怎么输出这段英文的呢?今天一起来围观下源码吧 🤭 原型 {代码...} Print:使用默认格式说明符打印格式并写入标准输出。当两者都不是字符串时,在操作数之间添加空格 Println:同上,不同的地方是始终在操作数之间添加空格,并附...
使用 Gomock 进行单元测试
煎鱼
2018-11-25
阅读 5 分钟
20.7k
1、 第一步:我们将安装 gomock 第三方库和 mock 代码的生成工具 mockgen。而后者可以大大的节省我们的工作量。只需要了解其使用方式就可以
带入gRPC:分布式链路追踪 gRPC-Opentracing-Zipkin
煎鱼
2018-10-20
阅读 5 分钟
15.9k
原文地址:带入gRPC:分布式链路追踪 gRPC + Opentracing + Zipkin项目地址:[链接] 前言 在实际应用中,你做了那么多 Server 端,写了 N 个 RPC 方法。想看看方法的指标,却无处下手? 本文将通过 gRPC + Opentracing + Zipkin 搭建一个分布式链路追踪系统来实现查看整个系统的链路、性能等指标 🤓 Opentracing 是什么 O...
上一页
1
…
More
6
7
8
(current)
9
10
下一页
上一页
8
(current)
下一页