目录 - Go 源码阅读

第 67 期 Go database/sql 数据库连接池分析


Go 夜读第 67 期 Go database/sql 数据库连接池分析 本期 Go 夜读是由 POP 后端团队的邹文通给大家带来的 Go 标准包 database/sql 数据库连接池源码剖析。 大纲 sql 连接池简介 连接池的工作原理 sql 包连接池源码分析 连接池使用 tips Slides https://docs.google.com/presentation/d/10kGjeHGbB0h0Cz8f58reXOyCdyWSOSKrr2160IFNla4/edit?usp=sharing 回看视频 https://www.bilibili.com/video/av756
[阅读全文]

第 66 期 Paper Reading CSP 理解顺序进程间通信


Go 夜读第 66 期 Paper Reading CSP 理解顺序进程间通信 本期 Go 夜读是由 Go 夜读 SIG 核心小组成员欧长坤给大家带来的经典论文 CSP 的 Paper Reading。 CSP 是什么? 我们常常在讨论中提及 CSP,但鲜有人能真正说清楚 CSP 的演进历史,及其最核心的基本思想。我们已经对 Go 提供的并发原语足够熟悉了,是时候深入理解其背后的基础理论 —— 顺序进程间通信(Communicating Sequential Processes, CSP)了。本次分享我们针对 [Hoare 1978] 探讨 CSP 理论的原始设计(CSP 1978),主要围绕
[阅读全文]

第 65 期 Go 原生网络模型 vs 异步 Reactor 模型


Go 夜读第 65 期 Go 原生网络模型 vs 异步 Reactor 模型 本期 Go 夜读是由 Go 夜读 SIG 核心小组邀请到潘建锋给大家分享 Go 原生网络模型 vs 异步 Reactor 模型,以下是本次分享的部分内容和 QA 。 >潘建锋,曾任职腾讯、现亚马逊在职。Go 语言业余爱好者,开源库 gnet 和 ants 作者。 引子 我们都知道 Golang 基于 goroutine 构建了一个简洁而优秀的原生网络模型,让开发者能够用同步的模式去编写异步的逻辑:goroutine-per-connection 模式,极大地降低了开发者编写网络应用时的心智负担,而且借助于 Go
[阅读全文]

第 64 期深入浅出 Golang Runtime


Go 夜读第 64 期深入浅出 Golang Runtime 内容简介 本次分享将会对 go runtime 的调度,内存分配,gc 做一些细节上的讲解,同时也需要参与者对 runtime 有一些初步了解。 内容大纲 Golang Runtime 是什么,其发展历程; 调度的实质和关键数据结构,函数; 内存分配中 mspan, mheap, mcentral, mcache 等数据结构 Golang GC 发展,Golang 三色标记实现的一些细节,元信息,写屏障,1.5 与 1.12 GC 的区别; 一点优化思路与问题排查思路; 总结及 question; 平时我看 runtime 代码的
[阅读全文]

第 63 期 Go 编码风格阅读与讨论


Go 夜读第 63 期 Go 编码风格阅读与讨论 内容简介 本期主要是针对近期 uber-go/guide style 和 go-advices 的解读以及开发者讨论。 内容大纲 Go CodeReview Comments Uber-go/style Go-advices 分享地址 2019-10-17 21:00:00 ~ 22:10:00, UTC+8 https://zoom.us/j/6923842137 分享 Slides https://docs.google.com/presentation/d/1MlzZJBK0Zq0VzJVC_AqSWmmlS4Of-8xY6NGZmf
[阅读全文]

第 62 期 Go-Micro 微服务框架 Part 1


Go 夜读第 62 期 Go-Micro 微服务框架 Part 1 内容简介 介绍Go-Micro的设计及其重要组件 内容大纲 什么是 Micro Micro 风格服务架构 Go-Micro 框架的设计 Go-Micro 主要的组件 Go-Micro 的插件化 分享地址 2019-10-10 21:00 ~ 22:00, UTC+8 https://zoom.us/j/6923842137 进一步阅读的材料 Micro 项目 Micro 文档 示例项目 PPT 请点击:https://github.com/developer-learning/reading-go/issues/457
[阅读全文]

第 60 期 IPFS 星际文件系统


Go 夜读第 60 期 IPFS 星际文件系统 背景介绍 传统的 HTTP 都是通过资源定位符来定位,在服务器关闭后,有些数据可能会永远丢失,而且如果某客户离服务器比较远,则可能延时较高。IPFS 提出使用基于内容寻址,只要拥有 hash 且网络上有人存储此数据,即可获得数据,同时自带 CDN 效果(热数据会自动分散)。 内容简介 主要介绍一下 ipfs 的基本思想与使用,并分析源码结构以及粗略介绍相关兄弟项目(如 multiformats,filecoin 等) 内容大纲 IPFS 的底层技术原理。 IPFS 源码概述。 超越 IPFS - 区块链存储简述。 Q&A。 分享地址
[阅读全文]

第 59 期 Real-world Go Concurrency Bugs


Go 夜读第 59 期 Real-world Go Concurrency Bugs 内容简介 Go 语言鼓励其用户多使用基于消息传递的同步原语 channel,但也不排斥其用户使用基于内存共享的同步原语,提供了诸如 sync.Mutex 等互斥原语。在过去十年的时间里,Go 的实践者不断思考着这些问题:哪种同步原语更加优秀?究竟什么场景下应该使用何种同步原语?哪类同步原语能够更好的保证数据操纵的正确性?哪类同步原语对程序员的心智负担较大?何种同步原语更容易产生程序 Bug?channel 是一种反模式吗?什么类型的 Bug 能够更好的被 Bug 检测器发现?…… [Tu et al., 20
[阅读全文]

第 58 期 What's new in Go 1.13?


Go 夜读第 58 期 What’s new in Go 1.13? 内容简介 主要介绍了刚刚发布的 Go 1.13 Release 的内容。 内容大纲 - Go modules - Toolchain - Runtime - CoreLibrary Improve Performance - Q&A 分享地址 2019-09-05, 21:00 ~ 22:10, UTC+8 https://zoom.us/j/6923842137 进一步阅读的材料 https://golang.org/doc/go1.13 improve defer perfermance 30%
[阅读全文]

第 57 期 sync/semaphore 源码浅析


Go 夜读第 57 期 sync/semaphore 源码浅析 内容简介 主要分析 golang.org/x/sync/semaphore 相关代码和 semaphore 部分使用场景。 内容大纲 - semaphore 定义 - 源码分析 - Q&A 分享地址 2019.08.29, 21:00 ~ 21:40, UTC+8 https://zoom.us/j/6923842137 进一步阅读的材料 semaphore 定义 源码 分享 PPT 补充资料 同步原语 结合 errgroup 使用 关于是否应该支持 resize 的讨论 semaphore 实现的 taskpoo
[阅读全文]

第 56 期 channel & select 源码分析


Go 夜读第 56 期 channel & select 源码分析 内容简介 Go 语言除了提供传统的互斥量、同步组等同步原语之外,还受 CSP 理论的影响,提供了 channel 这一强有力的同步原语。本次分享将讨论 channel 及其相关的 select 语句的源码,并简要讨论 Go 语言同步原语中的性能差异与反思。 内容大纲 - 同步原语概述 - channel/select 回顾 - channel 的结构设计 - channel 的初始化行为 - channel 的发送与接收过程及其性能优化 - channel 的回收 - select 的本质及其相关编译器优化 分享地址
[阅读全文]

第 55 期 Go&WebAssembly 简介


Go 夜读第 55 期 Go&WebAssembly 简介 WebAssembly 简介 WebAssembly 是一种新兴的网页虚拟机标准,它的设计目标包括:高可移植性、高安全性、高效率(包括载入效率和运行效率)、尽可能小的程序体积。 根据 Ending 定律:⼀切可被编译为 WebAssembly 的,终将被编译为 WebAssembly。 本次分享 Go&WebAssembly 相关的用法。 分享时间 2019-08-15 21:00:00 分享平台 zoom 在线直播 - https://zoom.us/j/6923842137 更多讨论 FelixSeptem:补充一
[阅读全文]

第 54 期 Go 夜读之 TiDB SQL 兼容性测试工具简介


Go 夜读第 54 期 TiDB SQL 兼容性测试工具简介 本次分享包含两方面内容: 通过 MySQL yacc 文件生成 SQL Cases,并用于 TiDB 的兼容性测试的原理讲解。 TiDB Parser 兼容性社区活动介绍,手把手的演示如何参与本次社区活动。 (彩蛋:Parser Working Group 成立了,有兴趣的小伙伴可以看视频然后扫描加入。) 分享时间 2019-08-14 21:00:00 分享平台 zoom 在线直播 - https://zoom.us/j/6923842137 参考资料 三十分钟成为 Contributor | 提升 TiDB Parser 对
[阅读全文]

第 53 期 Go 夜读之 build in func delete from map


Go 夜读第 53 期 delete from map in go 突然有一个需求要删除 map 中的一些过滤数据。 >由此查阅了一些资料,然后促成此次分享。 PPT: build-in func delete from map in go.pptx 分享时间 2019-08-01 21:00:00 分享平台 zoom 在线直播 - https://zoom.us/j/6923842137 参考资料 https://stackoverflow.com/questions/1736014/delete-mapkey-in-go https://blog.cyeam.com/json/2
[阅读全文]

第 52 期 Go 夜读之 httprouter 简介


httprouter 简介 详细内容,可以查看 https://cch123.github.io/httprouter/ 观看视频
[阅读全文]

第 51 期 Go 夜读之 sync/errgroup 源码阅读


golang.org/x/sync/errgroup errgroup 唯一的坑是for循环里千万别忘了 i, x := i, x,以前用 waitgroup 的时候都是 go func 手动给闭包传参解决这个问题的,errgroup 的.Go没法这么干,犯了好几次错才改过来” 观看视频
[阅读全文]

第 50 期 Go 夜读之 GoLand Tips & Tricks


GoLand Tips & Tricks 问答 21:01:08 From Shengyou Fan : 全程英文+中文翻译 21:04:11 From Hao : Shengyou , r u come from TW ? 21:04:50 From Shengyou Fan : Yes, I’m from TW 21:10:04 From lucas : ctrl + tab 对应 mac 是? 21:10:12 From mai yang : presentation assistant 21:10:26 From Shengyou Fan : 也是 ctrl + tab 21:
[阅读全文]

第 49 期 TiDB 源码阅读之 Transaction


TiDB Transaction 内容介绍 本次分享主要讲 TiDB 的事务执行过程和一些异常处理,涉及 TiDB 的 session 和 tikv 部分模块。 PDF: Source code reading of TiDB Transaction .pdf 推荐阅读 TiDB 源码阅读系列文章(十九)tikv-client(下) 三篇文章了解 TiDB 技术内幕 - 说存储 Transaction in TiDB Coprocessor in TiKV 视频回看 TiDB 源码学习之 Executor - YouTube TiDB 源码学习之 Executor - Bilibili
[阅读全文]

第 48 期 TiDB 源码阅读之 Compiler


TiDB Compiler 内容介绍 本次分享主要讲 TiDB 的优化器框架以及具体的 SQL 执行优化原理 。主要涉及 TiDB 的 planner 模块。欢迎大家参加! PPT: TiDB Compiler.pdf 推荐阅读 TiDB 源码阅读系列文章(七)基于规则的优化 TiDB 源码阅读系列文章(八)基于代价的优化 TiDB 源码阅读系列文章(二十一)基于规则的优化 II 视频回看 TiDB 源码学习之 Executor - YouTube TiDB 源码学习之 Executor - Bilibili 问题 22:13:46 From mai yang : rule 怎么对照文
[阅读全文]

第 47 期 TiDB 源码阅读之 Executor


TiDB Executor 内容介绍 本次分享主要讲 TiDB 中 insert/update/delete/select, 以及 DDL 等是如何执行的,以及涉及到相关模块。大概会涉及以下模块: executor distsql ddl PPT: TiDB Executor 源码阅读.pdf 推荐阅读 Select 语句概览 INSERT 语句详解 DDL 源码解析 视频回看 TiDB 源码学习之 Executor - YouTube TiDB 源码学习之 Executor - Bilibili PPT: https://github.com/developer-learnin
[阅读全文]

第 46 期 TiDB 源码阅读之概览


TiDB Source Code Overview 视频回看 TiDB 源码学习之 Source Code Overview - YouTube TiDB 源码学习之 Source Code Overview - Bilibili 意见反馈 【Go夜读】《TiDB Source Code Overview》反馈 chat 答疑 20:54:52 From mai yang : 大家好,欢迎大家前来参加 Go 夜读&TiDB 源码学习! 21:22:34 From nange : Session 怎么初始化的? 21:22:46 From ccong deng : 每个连接都是跟
[阅读全文]

第 45 期 goim 架构设计与源码分析


观看视频
[阅读全文]

第 44 期 Go map 源码阅读分析


观看视频
[阅读全文]

第 43 期 gomonkey 框架设计与应用实践


观看视频
[阅读全文]

第 42 期 An Introduction to Failpoint Design


观看视频
[阅读全文]

第 41 期 golint 及 golangci-lint 的介绍和使用


观看视频
[阅读全文]

第 40 期 atomic.Value 的使用和源码分析


观看视频
[阅读全文]

第 39 期 init function 使用分析


观看视频
[阅读全文]

第 38 期 kubernetes scheduler 源码阅读


观看视频
[阅读全文]

第 37 期 从 serverless 的一个设计说起


参考资料 预习材料 pulsar-effectively-once 观看视频
[阅读全文]

第 36 期 k8s context 实践源码阅读


实践 WithValue WithCancel WithTimeout WithDeadline 基本上没有用到。 参考资料 How to correctly use context.Context in Go 1.7 How to correctly use package context 视频笔记:如何正确使用 Context - Jack Lindamood 观看视频
[阅读全文]

第 35 期 context 源码阅读


预习材料 第 35 期 Go 夜读之《context 包源码阅读》预习资料 #191 观看视频
[阅读全文]

第 34 期 Go 夜读之 plan9 汇编入门,带你打通应用和底层 by Xargin


2019.3.16 晚上 21 点 ~ 23点 直播过程中的文字讨论 (如有涉及到隐私,请告知) 21:08:32 From xiong hekuan : 几乎没有 21:08:47 From amatist Kurisu : 大佬开下麦… 21:09:02 From Laily Long : 能听到 21:09:02 From xiong hekuan : 可以 21:09:03 From 何翔宇 : 可以 21:09:06 From xiye : 能听到 21:09:09 From haoc7 : 听到了 21:09:12 From 星星 : 挺清楚的 21:11:01 From am
[阅读全文]

第 1 期每日阅读特训营


阅读清单 标题 阅读者 漫话:如何给女朋友解释为什么有些网站域名不以 www 开头 mai LeetCode 的刷题利器(伪装到老板都无法 diss 你没有工作) mai 深入 GO 语言文本类型 ch k8s cpu 资源限制 k8s 内存资源限制 Jason Golang 之轻松化解 defer 的温柔陷阱 关于 go 语言中的延迟执行函数 Littlesqx “漫话”的阅读笔记 域名的一个重要功能——为数字化的互联网资源提供易于记忆的名称。 域名具有唯一性。 www,其实是 World Wide Web 的缩写,中文翻译为万维网 互联网并不等同万维网
[阅读全文]

第 33 期 Go 夜读之 Go defer 和逃逸分析


2019.3.7 晚上 观看视频
[阅读全文]

第 32 期 Go 夜读之 etcd raft 源码阅读


etcd raft 阅读 etcd 版本:3.3.10 2019.3.2 晚上 总结 etcd里的raft模块只实现了raft共识算法,而像消息的网络传输,数据存储都由上层应用来完成。 下面是各个文件(夹)的功能简介: raftpb 用Protocol Buffer定义了一些需要序列化的数据结构,比如Entry和Message。 log_unstable.go unstable数据结构表示用于还没有被用户层持久化的数据,它维护了两部分内容snapshot和entries。 storage.go 这个文件定义了一个Storage接口,应用层需要实现这个接口,以提供存储和查询日志的能
[阅读全文]

第 31 期 Go 夜读之 flag 包源码阅读


Go 标准包阅读 Go 版本:go 1.11.5 总结 *v.URL = *u flag 下有 package flag_test?? init 中定义相同的 stringvar ; 当一个文件中出现多个 init 函数时,他们都会被加载,并且以 init 出现在文件中的前后顺序执行。 type Value interface { String() string Set(string) error } type Getter interface { Value Get() interface{} } type boolFlag interface { Value IsBoolFlag(
[阅读全文]

第 30 期 Go 夜读之 go mod 源码阅读 part 4


Go 标准包阅读 Go 版本:go 1.11.5 net/http `` 换行 本期没有视频回放。 观看视频
[阅读全文]

第 29 期 Go opentracing jaeger 集成及源码分析


Go opentracing jaeger 集成及源码分析 一、分布式追踪论文 论文地址:http://bigbully.github.io/Dapper-translation/ 为什么要用分布式追踪 当代的互联网的服务,通常都是用复杂的、大规模分布式集群来实现的。 互联网应用构建在不同的软件模块集上,这些软件模块,有可能是由不同的团队开发、 可能使用不同的编程语言来实现、有可能布在了几千台服务器,横跨多个不同的数据中心。 因此,就需要一些可以帮助理解系统行为、用于分析性能问题的工具。 分布式系统调用过程 使用分布式追踪要留意哪些问题 低损耗 跟踪系统对在线服务的影响应该做到足够小。
[阅读全文]

第 28 期 Go 夜读之 go mod 源码阅读 part 3


Go 标准包阅读 Go 版本:go 1.11.5 学到的内容 json:",omitempty" 方法一: if path[len(path)-1] == '/' { return fmt.Errorf("trailing slash") } 方法二: strings.HasSuffix(path, "/") benchmark 方法一: strings.TrimSuffix(pathMajor, "-unstable") 方法二: i := len(path) if strings.HasSuf
[阅读全文]

第 27 期 Go 夜读之 go mod 源码阅读 part 2


Go 标准包阅读 Go 版本:go 1.11.5 学到的内容 1. mf := new(modfile.File) 2. lineno++ 感觉是无用的代码? dep.go 中 ParseGopkgLock 方法第48行有用到 lineno ,会打印出 strconv.Unquote 解析错误的文件名和行号 if len(val) >= 2 && val[0] == '"' && val[len(val)-1] == '"' { q, err := strconv.Unquote(val) // Go unq
[阅读全文]

第 26 期 Go 夜读之手把手教你基于 Github+Netlify 构建自动化持续集成的技术团队博客


Github Netlify 观看视频
[阅读全文]

第 25 期 TSDB 引擎介绍,对比及存储细节


TSDB 引擎介绍,对比及存储细节 OpenTSDB InfluxDB Druid 观看视频
[阅读全文]

第 24 期 go mod 源码阅读 part 1


Go 标准包阅读 Go 版本:go 1.11.5 观看视频 阅读重点 os.Stat filepath.SplitList os.Getwd() switch sync.Once os.IsNotExist(errMod) MustQuote AutoQuote modcmd.runGraph format := func(m module.Version) string { if m.Version == "" { return m.Path } return m.Path + "@" + m.Version } sort.Slice 什么是 go
[阅读全文]

第 23 期 Drone 简单介绍和部分源码分析


观看视频 参考资料 基于 gogs/gitlab 和 drone 搭建的 CI/CD 平台 Drone 源码分析之同步 repos 的策略研讨 Drone 源码分析之数据库初始化
[阅读全文]

第 22 期 Go 开发工具讨论


观看视频
[阅读全文]

第 21 期 Go errors 处理及 zap 源码分析


观看视频
[阅读全文]

第 20 期 go test 及测试覆盖率


观看视频
[阅读全文]

第 19 期 如何开发一个简单高性能的http router及gorouter源码分析


观看视频
[阅读全文]

第 18 期 去中心化加密通信框架 CovenantSQL/DH-RPC的设计


观看视频
[阅读全文]

第 17 期 grpc 开发及 grpcp 的源码分析


观看视频
[阅读全文]

第 16 期 Go 快速入门


创建一个新函数 faas-cli new –lang node hell-node 构建函数 faas-cli build -f hello-node.yml 推送函数到docker仓库 faas-cli push -f hello-node.yml 部署函数 faas-cli deploy -f hello-node.yml 稍等几秒钟,等待部署,然后就可以从postman发送get或者post请求。 在rancher中的状态 函数的状态
[阅读全文]

第 16 期 gateway-reading


OpenFaaS的Gateway是一个golang实现的请求转发的网关,在这个网关服务中,主要有以下几个功能: UI 部署函数 监控 自动伸缩 架构分析 从图中可以发现,当Gateway作为一个入口,当CLI或者web页面发来要部署或者调用一个函数的时候,Gateway会将请求转发给Provider,同时会将监控指标发给Prometheus。AlterManager会根据需求,调用API自动伸缩函数。 源码分析 依赖 github.com/gorilla/mux github.com/nats-io/go-nats-streaming github.com/nats-io/go-nats
[阅读全文]

第16期 OpenFaas 介绍及源码分析


关于我 网名: Lucas Github:https://github.com/zhenfeng-zhu 博客:https://zhenfeng-zhu.github.io/ 知乎:https://www.zhihu.com/people/zhu-zhen-feng-96/activities 专栏:https://zhuanlan.zhihu.com/openfaas-cn 微信:zhuzhenfeng1993 主要内容 OpenFaaS的简介 OpenFaaS的快速入门 OpenFaaS的基础组件 OpenFaaS的源码分析 OpenFaaS的定制 观看视频
[阅读全文]

第16期 faas-provider


faas-provider是一个模板,只要实现了这个模板的接口,就可以自定义实现自己的provider。 faas-provider OpenFaaS官方提供了两套后台provider: Docker Swarm Kubernetes 这两者在部署和调用函数的时候流程图如下: 部署一个函数 调用一个函数 provider要提供的一些API有: List / Create / Delete 一个函数 /system/functions 方法: GET / POST / DELETE 获取一个函数 /system/function/{name:[-a-zA-Z_0-9]+} 方法: G
[阅读全文]

第16期 queue-worker源码分析


异步函数和同步函数 在OpenFaaS中同步调用函数时,将会连接到网关,直到函数成功返回才会关闭连接。同步调用是阻塞的。 网关的路由是:/function/<function_name> 必须等待 在结束的时候得到结果 明确知道是成功还是失败 异步函数会有一些差异: 网关的路由是:/async-function/<function_name> 客户端获得202的即时响应码 从queue-worker中调用函数 默认情况下,结果是被丢弃的。 查看queue-worker的日志 docker service logs -f func_queue-worker 利用r
[阅读全文]

第16期 监视器 - watchdog


监视器 监视器提供了一个外部世界和函数之间的非托管的通用接口。它的工作是收集从API网关来的HTTP请求,然后调用程序。监视器是一个小型的Golang服务——下图展示了它是如何工作的: 上图:一个小型的web服务,可以为每个传入的HTTP请求分配所需要的进程。 每个函数都需要嵌入这个二进制文件并将其作为ENTRYPOINT 或 CMD,实际上是把它作为容器的初始化进程。一旦你的进程被创建分支,监视器就会通过stdin 传递HTTP请求并从stdout中读取HTTP响应。这意味着你的程序无需知道web和HTTP的任何信息。 轻松创建新函数 从CLI创建一个函数 创建函数最简单的方法是使用Fa
[阅读全文]

第 15 期 多路复用资源池组件剖析


2018-08-23 22:00:00 分享会之后的答疑。 源代码地址:pool#workshop 一个网友在分享会之后的个人理解:对是独占资源对象的复用,提升了最后的 qps,独占式方法 TestChanPool() 函数中使用了从资源池获取 worker 对象,执行完毕后再放回资源池,如果获取不到则阻塞等待,因此,100 000 请求,每个请求占用 10ms,可用 worker 对象 50 个,则最后 100 000*1050 =20s ,视频中测试结果也显示 21s 符合预期。而 TestWorkshop() 函数中使用回调函数对 worker 进行加锁,每个线程使用的那一刻是 wo
[阅读全文]

第 14 期 sync.Pool 源码分析及适用场景


Go 标准包阅读 观看视频
[阅读全文]

第 13 期 Kubernetes 入门指南


观看视频
[阅读全文]

第 12 期 golang 中 goroutine 的调度


郑宝杨(boya) 2018-08-01 listomebao@gmail.com 阅读源码前可以阅读的资料 Goroutine背后的系统知识 golang源码剖析-雨痕老师 go-intervals 也谈goroutine调度器 golang的调度模型概览 调度的机制用一句话描述: runtime准备好G,P,M,然后M绑定P,M从各种队列中获取G,切换到G的执行栈上并执行G上的任务函数,调用goexit做清理工作并回到M,如此反复。 基本概念 M(machine) M代表着真正的执行计算资源,可以认为它就是os thread(系统线程)。 M是真正调度系统的执行者,每个M就像一个勤劳
[阅读全文]

第 11 期 Golang 代码质量持续检测实践


观看视频
[阅读全文]

第 10 期 2018-06-28 线下活动


参与人数: 10 人 Go 标准包阅读 Go版本:go 1.10.2 net包 http/server.go http/request.go textproto/reader.go 读取位置 textproto/reader.go(140行) 问题 1.各个系统的回车换行符区别 注意:10.13及其以上是macOS系统 2.URI,URL和URN的区别 查看详情 3.HTTP CONNECT方法介绍 会议讨论小结 可以建立一个代理服务器到目标服务器的透明通道(tcp连接通道),中间完全不会对数据做任何处理,直接转发(支持https,一种翻墙的手段,专线独
[阅读全文]

第 9 期 2018-06-14 线下活动


参与人数: 12 人 Go 标准包阅读 Go 版本:go 1.10.2 net/http server.go h2_bundle.go 问题 WriteHeader(statusCode int) 要先调用 header.set() 再调用 WriteHeader() 然后调用 Write() 如果在调用 Write() 之后,还有比较多的逻辑要处理,则一定要紧跟着马上调一下 Flush() 然后调用 Flush() HTTP2 不支持 Hijacker 使用了 Hijacker 之后不能再使用 Request.Body type Hijacker interface
[阅读全文]

第 8 期 2018-05-31 线下活动 - Go 标准包阅读


参与人数: 10 人 Go 标准包阅读 Go 版本:go 1.10.2 net/http server.go 问题 func (s *Server) doKeepAlives() bool { return atomic.LoadInt32(&s.disableKeepAlives) == 0 && !s.shuttingDown() } 为什么要用 atomic.LoadInt32(&s.disableKeepAlives) == 0 ? 原子操作比用锁更节约一点性能。 server.go#Shutdown 不保险 panicChan := m
[阅读全文]

第 7 期 2018-05-24 线下活动 - Go 标准包阅读


参与人数: 10 人 Go 标准包阅读 Go 版本:go 1.10.1 net/http server.go 问题 Next Protocol Negotiation = NPN Expect 100 Continue support 见参考资料 header提到了:Expect和host 判断了 header里面的HOST,但是后面又删除,为什么? server.go#L980 delete(req.Header, "Host") 判断是否支持 HTTP2 (isH2Upgrade) // isH2Upgrade reports whether r re
[阅读全文]

第 6 期 2018-05-17 线下活动 - Go 标准包阅读


参与人数: 12 人 Go 标准包阅读 Go 版本:go 1.10.1 strings strings.go 问题清单 以下是我们在阅读过程中的一些问题,希望可以引起大家的关注,也欢迎大家提出自己的理解,最好可以给以文章总结。 // Remove if golang.org/issue/6714 is fixed bp := copy(b, a[0]) return len(s) >= len(prefix) && s[0:len(prefix)] == prefix 各种开发语言都有的短路机制;字符串底层也是可以用作切片的; 为什么要判断这个错误: if c =
[阅读全文]

第 5 期 2018-05-10 线下活动 - Go 标准包阅读


参与人数: 20 人 Go 标准包阅读 Go 版本:go 1.10.1 strings strings.go(进度50%) 问题清单 以下是我们在阅读过程中的一些问题,希望可以引起大家的关注,也欢迎大家提出自己的理解,最好可以给以文章总结。 重头戏:Rabin-Karp search Rabin-Karp 算法的思想: 假设待匹配字符串的长度为M,目标字符串的长度为N(N>M); 首先计算待匹配字符串的hash值,计算目标字符串前M个字符的hash值; 比较前面计算的两个hash值,比较次数N-M+1: 若hash值不相等,则继续计算目标字符串的下一个长度为M的字符子串的has
[阅读全文]

第 4 期 2018-04-25 线下活动


参与人数: 15 人 Go 标准包阅读 Go 版本:go 1.10.1 strings replace.go replace_test.go search.go search_test.go 问题清单 以下是我们在阅读过程中的一些问题,希望可以引起大家的关注,也欢迎大家提出自己的理解,最好可以给以文章总结。 Boyer-Moore 算法 延伸阅读 Boyer-Moore_string_search_algorithmde Boyer-Moore字符串搜索算法 字符串匹配的Boyer-Moore算法 grep之字符串搜索算法Boyer-Moore由浅入深(比KMP快3-5倍)
[阅读全文]

第 3 期 2018-04-18 线下活动


参与人数: 14 人 Go 标准包阅读 Go 版本:go 1.10.1 strings builder.go builder_test.go compare.go compare_test.go example_test.go export_test.go reader_test.go reader.go 问题清单 以下是我们在阅读过程中的一些问题,希望可以引起大家的关注,也欢迎大家提出自己的理解,最好可以给以文章总结。 defer runtime.GOMAXPROCS(runtime.GOMAXPROCS(1)) runtime.ReadMemStats(&m1) defer
[阅读全文]

第 2 期 2018-04-11 线下分享内容


参与人数: 9 人 微服务相关的开源项目,直接根据 Github 讲解,三个相关的项目链接如下: teleport是socket框架 tp-micro是它的扩展,实现了微服务 ants是该微服务的网关、配置中心、代码生成器、部署工具之类的 语音实录 以下内容是分享活动的实录回顾。 参与人数: 9人 参与者的自我介绍 演示 xiaoneai/ants 分析 tp-micro 和 teleport 框架代码 答疑 确定线下分享形式(标准包和开源项目) 语音实录 语音实录(文字版本 by 录音宝)
[阅读全文]

第2期 2018-04-11 线下分享内容语音实录(文字版本 by 录音宝)


在开始前的话,我就先闻着大概介绍一下。我我叫李亚春。李亚坤。那个网名就是亨利出实验,然后嗯13年开始写go,嗯写过几个开盘项目,然后主要有一个爬虫用猪,这个还有这个嗯开炮。今天我们要要介绍的一个然后还有就是一个黑狗,这就是一个外部框架。我叫吴良肖,然后我啊我毕业两年,然后我是从毕业的时候开始写够的,然后到现在没有开源项目,所以我的目标就是有一个开源项目。我叫武帝陵一个比较低的,然后我是整体来说,去年年底是开始觉得自己也写两个小工具放到D卡上面,因为现在我们公司要搬到S上面,学习架构云的与。BW好,我叫朱静涛,嗯够的话,我十年吧是对就接触这个语言,然后看他语法就特别特有吸引力,跟我之前是写开心嘛
[阅读全文]

第 1 期 2018-03-21 线下分享内容


参与人数: 3 人 cannot take address of temporary variables 延伸阅读 https://stackoverflow.com/questions/10535743/address-of-a-temporary-in-go https://stackoverflow.com/questions/40926479/take-the-address-of-a-character-in-string https://golang.org/ref/spec#Address_operators neochain teleport Teleport 是一个
[阅读全文]