Algorithm
- 單鏈表翻轉(zhuǎn)
- lru 實(shí)現(xiàn)
https://github.com/jinjiaji512/LeetCode-in-Go
Review
主要是關(guān)于im系統(tǒng)的一系列文章
最近工作中接觸websocket比較多茴晋,準(zhǔn)備在im領(lǐng)域多了解一下眠菇。
主要有幾個(gè)方面:
- websocket協(xié)議 mqtt協(xié)議
- im系統(tǒng)的消息送達(dá)確認(rèn)
- im系統(tǒng)的心跳機(jī)制
- tcp keepalive機(jī)制為什么不能替代應(yīng)用層心跳機(jī)制
為什么說(shuō)基于TCP的移動(dòng)端IM仍然需要心跳彼婀耄活?
IM消息送達(dá)保證機(jī)制實(shí)現(xiàn)(一):保證在線實(shí)時(shí)消息的可靠投遞
知乎:TCP協(xié)議中的端口具體指的是什么屁奏,為什么要有端口,你是怎么理解的塑煎?
Tip
docker 的 gracefully shutdown
優(yōu)雅的終止docker容器
幾個(gè)關(guān)鍵點(diǎn):
-
docker stop 與 docker kill的區(qū)別
當(dāng)我們用docker stop命令來(lái)停掉容器的時(shí)候瘪阁,docker默認(rèn)會(huì)允許容器中的應(yīng)用程序有10秒的時(shí)間用以終止運(yùn)行
而docker kill命令,更像是Linux系統(tǒng)中的kill -9或者是kill -SIGKILL命令喳逛,用來(lái)發(fā)送SIGKILL信號(hào)瞧捌,強(qiáng)行終止進(jìn)程。 - Dockerfile中CMD命令
-
CMD /graceful
這種方式,graceful程序會(huì)以 bash -c 方式啟動(dòng)姐呐,所以接收結(jié)束信號(hào)的是bash命令而不是graceful程序 -
CMD [“/graceful”]
這種方式殿怜,graceful會(huì)直接啟動(dòng)作為pid=1的進(jìn)程,可以直接接收docker的結(jié)束信號(hào)
- 程序中處理退出signal
// main.go
package main
import (
"fmt"
"os"
"os/signal"
"syscall"
)
func main() {
fmt.Println("Program started...")
ch := make(chan os.Signal, 1)
signal.Notify(ch, syscall.SIGTERM)
s := <-ch
if s == syscall.SIGTERM {
fmt.Println("SIGTERM received!")
//Do something...
}
fmt.Println("Exiting...")
}
github項(xiàng)目配置 travis build 徽章
GitHub 研發(fā)鏈 travis-ci 和 codecov 介紹
徽章制作
Share
數(shù)據(jù)結(jié)構(gòu)與算法之美相關(guān)分享:
http://www.reibang.com/p/d028f4fe1256
http://www.reibang.com/p/a595d8731f92
http://www.reibang.com/p/95d121ede40d
http://www.reibang.com/p/d045199e9130