ARTS 打卡 2019-04-26

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命令
  1. CMD /graceful 这种方式,graceful程序会以 bash -c 方式启动,所以接收结束信号的是bash命令而不是graceful程序
  2. 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 介绍

徽章制作

https://shields.io/

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

你可能感兴趣的:(ARTS 打卡 2019-04-26)