Algorithm
- 单链表翻转
- lru 实现
https://github.com/jinjiaji512/LeetCode-in-Go
Review
主要是关于im系统的一系列文章
最近工作中接触websocket比较多,准备在im领域多了解一下。
主要有几个方面:
- websocket协议 mqtt协议
- im系统的消息送达确认
- im系统的心跳机制
- tcp keepalive机制为什么不能替代应用层心跳机制
为什么说基于TCP的移动端IM仍然需要心跳保活?
IM消息送达保证机制实现(一):保证在线实时消息的可靠投递
知乎:TCP协议中的端口具体指的是什么,为什么要有端口,你是怎么理解的?
Tip
docker 的 gracefully shutdown
优雅的终止docker容器
几个关键点:
-
docker stop 与 docker kill的区别
当我们用docker stop命令来停掉容器的时候,docker默认会允许容器中的应用程序有10秒的时间用以终止运行
而docker kill命令,更像是Linux系统中的kill -9或者是kill -SIGKILL命令,用来发送SIGKILL信号,强行终止进程。 - Dockerfile中CMD命令
-
CMD /graceful
这种方式,graceful程序会以 bash -c 方式启动,所以接收结束信号的是bash命令而不是graceful程序 -
CMD [“/graceful”]
这种方式,graceful会直接启动作为pid=1的进程,可以直接接收docker的结束信号
- 程序中处理退出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项目配置 travis build 徽章
GitHub 研发链 travis-ci 和 codecov 介绍
徽章制作
Share
数据结构与算法之美相关分享:
https://www.jianshu.com/p/d028f4fe1256
https://www.jianshu.com/p/a595d8731f92
https://www.jianshu.com/p/95d121ede40d
https://www.jianshu.com/p/d045199e9130
网友评论