18 年已经到 6
月份了,定目标可能有点太晚了,不过有总比没有强,作为一个硕士毕业已经工作四年的程序员,切实地感觉到了时间的重要性,需要按照规划来用,不能像年轻人那样挥霍了。
1. 完成 Golang 的大部分源代码阅读,并完成 golang-notes
[http://github.com/cch123/golang-notes]
2. 完成 redis 3.0 的源代码阅读并有总结产出
3. 完成 nginx 的源代码阅读并有总结产出,这个坑遗留得有点久,14
最近在看的 《concurrency in go》 里有这么一个例子:
package main
import (
"fmt"
"sync"
"sync/atomic"
"time"
)
func main() {
cadence := sync.NewCond(&sync.Mutex{})
go func() {
for range time.Tick(1 * time.Millisecond) {
cadence.Broadcast()
}
}()
takeStep := func(
最近在写 golang-notes 的时候,看到 hexo 的 blog 支持直接展示 plantuml 和 mermaid
图表,折腾了一晚上发现并不是很好用。。。这些功能都是以插件形式支持,但在每个 blog
主题下又都需要自己配置,主题显然也没有什么统一的规范,自己用的话还是会碰到蛋疼的问题。此外 hexo 也不支持直接把图片上传到自己的 blog
(别跟我说传什么七牛 cdn 之类的,几年后要是人挂了,你这就蛋疼了)。
虽然 ghost 已经商业化,且官网直接把 download
软件工程发展了这么多年,直到现如今,业界还是比较喜欢讨论 TDD [https://www.zhihu.com/question/37623307],BDD
[https://en.wikipedia.org/wiki/Behavior-driven_development],DDD
[https://www.zhihu.com/question/25089273/answer/69859648]。
虽然最后那个和前两个不太像是同一个维度的东西,不过因为都是
xDD,我们就先放在一起了嗯。每一种理论都有不少拥趸和践行者,都希望在各自的不归路上一路走到黑。
在 runtime2.go(go 1.10) 中定义了 goroutine
生命周期中所有可能的状态,虽然状态不多,不过其状态切换的可能性还是蛮多的,整理了一张图:
带上 GC 以后,图会比较乱,去掉 GC 相关的状态切换以后,会清爽许多。这里所有的 goroutine 状态切换都是由 runtime 的函数触发的,我们把
runtime 字样也从图上删除:
抽时间写写状态切换的文章。
再来一张 p 状态切换的: