github居然被fork了!

阅读更多

开发过程遇到的一些问题排查

开发过程中遇到的问题

阅读更多

GODEBUG

GODEBUG

阅读更多

Raft算法

Raft

  1. raft基本原理演示请参考 http://thesecretlivesofdata.com/raft/
  2. go语言的raft实现 https://github.com/goraft/raft, 但是该项目早已不再维护,原作者将raft融入到etcd和influxdb(现在貌似不是了)里了,这里摘出etcd的raft实现进行研究

阅读更多

Go Plugin动态加载库

利用Go plugin实现动态加载库文件

阅读更多

mysql并发调试

常用命令列举

阅读更多

TCP Delayed Ack(Ack确认延迟) && Nagle Algorithm(纳格算法)

[原文连接: https://www.jianshu.com/p/bc3c1d6dafe8?from=singlemessage]

如果一个 TCP 连接的一端启用了 Nagle‘s Algorithm,而另一端启用了 TCP Delayed
Ack,而发送的数据包又比较小,则可能会出现这样的情况:发送端在等 待接收端对上
一个packet 的 Ack 才发送当前的 packet,而接收端则正好延迟了 此 Ack 的发送,那么
这个正要被发送的 packet 就会同样被延迟。当然 Delayed Ack 是有个超时机制的,而默
认的超时正好就是40ms。

阅读更多

Go语言TCP网络编程

[原文链接:https://blog.csdn.net/hacker00011000/article/details/53910367]

一、序言

Golang的主要 设计目标之一就是面向大规模后端服务程序,网络通信这块是服务端 程序必不可少也是至关重要的一部分。在日常应用中,我们也可以看到Go中的net以及其subdirectories下的包均是“高频+刚需”,而TCP socket则是网络编程的主流,即便您没有直接使用到net中有关TCP Socket方面的接口,但net/http总是用到了吧,http底层依旧是用tcp socket实现的

网络编程方面,我们最常用的就是tcp socket编程了,在posix标准出来后,socket在各大主流OS平台上都得到了很好的支持。关于tcp programming,最好的资料莫过于W. Richard Stevens 的网络编程圣经《UNIX网络 编程 卷1:套接字联网API》 了,书中关于tcp socket接口的各种使用、行为模式、异常处理讲解的十分细致。Go是自带runtime的跨平台编程语言,Go中暴露给语言使用者的tcp socket api是建立OS原生tcp socket接口之上的。由于Go runtime调度的需要,golang tcp socket接口在行为特点与异常处理方面与OS原生接口有着一些差别。这篇博文的目标就是整理出关于Go tcp socket在各个场景下的使用方法、行为特点以及注意事项

阅读更多

redis_其他

命令参考

阅读更多

读<<Redis设计与实现>>与redis(5.0)源码__rdb

db

1
2
3
4
5
6
7
8
9
10
typedef struct redisDb {
dict *dict; /* The keyspace for this DB */
dict *expires; /* Timeout of keys with a timeout set */
dict *blocking_keys; /* Keys with clients waiting for data (BLPOP)*/
dict *ready_keys; /* Blocked keys that received a PUSH */
dict *watched_keys; /* WATCHED keys for MULTI/EXEC CAS */
int id; /* Database ID */
long long avg_ttl; /* Average TTL, just for stats */
list *defrag_later; /* List of key names to attempt to defrag one by one, gradually. */
} redisDb;

阅读更多