分布式系统中的事务问题

2020-10-08
在分布式系统、微服务架构大行其道的今天,服务间互相调用出现失败已经成为常态。如何处理异常,如何保证数据一致性,成为微服务设计过程中,绕不开的一个难题。 在不同的业务场景下,解决方案会有所差异,常见的方式有:
Read More

股票投资的基本原则

2020-06-17
最近看了弗朗西斯科·加西亚·帕拉梅斯的《长期投资》,帕拉梅斯被称为西班牙巴菲特。西班牙股票市场体量相对较小,长期收益率也只有 3.6%;但帕拉梅斯 25 年收益 30 倍年化接近15%,管理的资金量最高 65 亿欧元,已经是非常厉害的战绩了。
Read More

人民币的通胀与解法

2020-05-05
货币是交易的媒介,货币的数量应该等同于商品和劳务的总价,如果多了就膨胀,少了就通缩,这是基本经济学法则。现代社会的货币是信用货币,没有真正的锚点,发行机构很容易被外界压力超发货币,后果轻则通货膨胀,重则民不聊生,甚至威胁统治稳定性,例如民国时代的金圆券。
Read More

time_wait 原理分析和优化

2020-04-13
TCP 连接关闭时,会有 4 次通讯(四次挥手),来确认双方都停止收发数据了。如上图,主动关闭方,最后发送 ACK 时,会进入 TIME_WAIT 状态,要等 2MSL 时间后,这条连接才真正消失。TCP 的可靠传输机制要求,被动关闭方(简称 S)要确保最后发送的 FIN K 对方能收到。
Read More

Go中http超时问题的排查

2019-10-29
最新有同事反馈,服务间有调用超时的现象,在业务高峰期发生的概率和次数比较高。从日志中调用关系来看,有2个调用链经常发生超时问题。问题1: A服务使用 http1.1 发送请求到 B 服务超时。问题2: A服务使用一个轻量级 http-sdk(内部http2.0) 发送请求到 C 服务超时。
Read More

Go中链路层套接字的实践

2018-07-17
接上次的博客,按照约定的划分,还有一层链路层socket。这一层就可以自定义链路层的协议头部(header)了,下面是目前主流的Ethernet 2(以太网)标准的头部: 相比IP和TCP的头部,以太网的头部要简单些,仅有目标MAC地址,源MAC地址,数据协议类型(比如常见的IP和ARP协议)。
Read More

Go中原始套接字的深度实践

2018-05-28
原始套接字(raw socket)是一种网络套接字,允许直接发送/接收更底层的数据包而不需要任何传输层协议格式。平常我们使用较多的套接字(socket)都是基于传输层,发送/接收的数据包都是不带TCP/UDP等协议头部的。 当使用套接字发送数据时,传输层在数据包前填充上面格式的
Read More

Go中string转[]byte的陷阱

2018-05-07
上周四小伙伴发了Go社区一个帖子下hej8875的回复,如下:这个回复比原贴有意思,也很有迷惑性。作者测试了下,确实如此,于是和小伙伴们讨论深究下。开始以为应该挺简单的,理解后,发现涉及挺多知识点,值得跟大家分享下过程。先抛去注释的这行代码
Read More

WSL与Windows交互实践

2018-04-28
WSL 是**Windows Subsystem for Linux** 的简称,主要是为了在Windows 10上原生运行Linux二进制可执行文件(ELF格式),而提供的兼容层。 通俗来讲是在Windows10 嵌入了个Linux子系统(默认是ubuntu),方便运行大部分 Linux 命令及软件,比如```grep``` ```MySQL``` ```Apache```
Read More