最细节篇
文章平均质量分 95
伢之国
云存储深耕之路,专注于对象存储,块存储,云计算等技术。坚持撰写有思考的技术文章。微信公众号:奇伢云存储。个人站点:https://liqingqiya.github.io。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Go 并发编程 — 深入浅出 sync.Pool ,围观最全的使用姿势,理解最深刻的原理
更多干货,关注公众号:奇伢云存储 文章目录使用姿势初始化 Pool 实例 New申请对象 Get释放对象 Put思考为什么用 Pool,而不是在运行的时候直接实例化对象呢?`sync.Pool` 是线程安全的吗?为什么 `sync.Pool` 不适合用于像 socket 长连接或数据库连接池?总结 Go 并发相关库 sync 里面有一个有趣的 package Pool,sync.Pool 是个有趣的库,用很少的代码实现了很巧的功能。 第一眼看到 Pool 这个名字,就让人想到池子,元素池化是常用的性能优.原创 2021-02-22 23:56:15 · 688 阅读 · 0 评论 -
Go defer 原理剖析篇 — 深度 defer 的基础知识前提:理解函数调用
文章目录地址空间函数栈帧栈帧的划定函数调用函数返回举个例子总结 更多干货:关注公众号 奇伢云存储 本篇文章是深入剖析 golang 的 defer 的基础知识准备,如果要完全理解 defer ,避免踩坑,这个章节的基础知识必不可少。我们先复习一个最基础的知识 —— 函数调用。这个对理解 defer 在函数里的行为必不可少。那么,当你看到一个函数调用的语句你能回忆起多少知识点呢? 地址空间 下图是一个典型的操作系统的地址空间示意图: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(i原创 2021-02-17 20:48:27 · 430 阅读 · 0 评论 -
Go defer 原理剖析篇 — 搞懂 golang defer 所有的使用姿势
文章目录defer 的特性延迟调用LIFO作用域异常场景使用姿势并发同步锁场景资源释放panic-recover总结 更多干货:关注公众号 奇伢云存储 Golang 的 defer 是什么?通俗来讲就是延迟调用。defer 会在当前函数返回之前执行 defer 注册的函数。比如 defer func_x( ) 这样语句会让你注册一个函数变量到 defer 的全局链表中,在 defer 语句所在的函数退出之前调用。 笔者使用一段时间 Golang 之后,对 Golang defer 的理解认为作用有两点原创 2021-02-17 20:47:00 · 1006 阅读 · 0 评论 -
Go 1.16 正式发布,支持 macOS ARM64 架构
文章目录多平台指令的支持Darwin and iOSNetBSDOpenBSD386RISC-V工具链Go CommandCgoVet运行时编译器链接器标准库总结 更多干货:关注公众号 奇伢云存储 Go 1.16 距离上个 Go 1.15 版本差不多 6 个月,所以这个版本迭代速度还是挺快的。本次更新没有对语言本身做变更,主要更新的是工具链,运行时( runtime ),标准库的一些功能实现和性能。Go 1.16 版本保持 Go 1 版本兼容性 的承诺。 相关地址: 更新公告地址:https://go原创 2021-02-17 20:50:46 · 1745 阅读 · 0 评论 -
Go defer 原理剖析篇 — 深度解密 defer 原理,究竟背着程序猿做了多少事情
文章目录编译器怎么编译 defer`struct _defer` 数据结构`struct _defer` 内存分配栈上分配 `deferprocStack`堆上分配 `deferproc`执行 defer 函数链( `deferreturn` )jmpdeferdefer 怎么传递参数?预计算参数defered 的参数准备一个函数多个 defer 语句的时候,会发生什么?defer 和 return 返回值运行顺序究竟是怎样的?函数的调用过程return 之后是先返回值还是先执行 defer 函数?总结原创 2021-02-17 20:49:47 · 862 阅读 · 1 评论 -
深度剖析 golang 的内存可见性
文章目录背景什么是内存可见性 ?多级缓存设计编译优化和 cpu 乱序执行什么是 happens-before ?为什么要有 happens-before 规则?C 语言的内存可见性`volatile` 关键字memory barrierGolang 的 happens-beforeInitializationGoroutine creationGoroutine destructionChannel communiactionLocksOnce错误的例子总结 更多干货:关注公众号 奇伢云存储 背景 Go原创 2021-02-17 20:44:32 · 2115 阅读 · 1 评论 -
Go chan 为啥没有判断 close 的接口?
文章目录Go 为什么没有判断 close 的接口?关闭 channel 究竟做了什么?`closechan`一个判断 chan 是否 close 的函数思考方法一:通过“写”chan 实现思考方法二:通过“读”chan 实现chan close 原则其实并不需要 `isChanClose` 函数 !!!怎么优雅关闭 chan ?方法一:panic-recover方法二:sync.Once方法三:事件同步来解决总结 更多干货,关注公众号奇伢云存储 Go 为什么没有判断 close 的接口? 相信大家初学原创 2021-02-17 20:38:37 · 487 阅读 · 0 评论 -
Go 最细节篇 — 空结构体是什么?
公众号:奇伢云存储 文章目录背景原理解密特殊变量:zerobase内存管理特殊处理定义的各种姿势原生定义重定义类型匿名嵌套类型内置字段`struct {}` 作为 receiver配合使用姿势`map` & `struct{}``chan` & `struct{}``slice` & `struct{}`总结 背景 golang 正常的 struct 就是普通的一个内存块,必定是占用一小块内存的,并且结构体的大小是要经过边界,长度的对齐的,但是“空结构体”是不占内存的,size .原创 2020-12-21 23:47:56 · 1245 阅读 · 0 评论 -
golang channel 最详细的源码剖析
大纲 文章目录channel 是什么?channel 使用姿势chan 创建chan 入队chan 出队结合 select 语句结合 for-range 语句源码解析`makechan`hchan 结构chansendchanrecvselectnbsendselectnbrecvselectnbrecv2chanrecv2总结 chan 是 golang 的最重要的一个结构,是区别于其他高级语言的最重要的特色之一,也是 goroutine 通信必须要的要素之一。很多人用它,但是很少人彻底理解过它,甚至 c原创 2020-11-09 23:32:44 · 1097 阅读 · 0 评论 -
对象存储 ListObject 有啥值得思考的?
文章目录如何列举桶中对象怎么列举对象?请求参数响应格式“列举对象”是否真的很简单?ListObject 的思考总结 如何列举桶中对象 云存储服务对业务提供基础的数据上传、下载能力,以简单易用作为重点,但有些时候,我们有列举需求。列举是什么意思?比如我们往一个 bucket 里面上传了一些对象,但是我们不知道名字,那么只能让存储系统来告诉你,这个 bucket 里对象的列表。“列举”这是一个简单的需求,但是也有隐形的约束或者前提需要明确。对象存储一把应对的场景是海量对象(上亿级甚至更多),这种前提下,提供的列原创 2020-11-09 23:30:23 · 1919 阅读 · 0 评论 -
Golang 最细节篇之 — Reader 和 ReaderAt 的区别
大纲 文章目录Golang 关于 Read 的两个接口定义C 语言 libc 库关于 read 的接口Golang 里 Read 和 ReadAt 的区别那么,会出什么样的坑呢?总结 分享一个细节语义问题引发的思考。关于 Golang Read,ReadAt 这两个接口,不知道大家有没有仔细品过这两个接口的区别。golang 里面有两个关于 Read 的 interface ,就是 Reader 和 ReaderAt ,这两个接口的定义在标准库 io 的 io.go 文件中,如下: Golang 关于 Re原创 2020-11-09 23:26:33 · 4162 阅读 · 0 评论
分享