浅析gRPC

gRPC是一个高性能、通用的开源RPC框架,其由Google主要面向移动应用开发并基于HTTP/2协议标准而设计,基于ProtoBuf(Protocol Buffers)序列化协议开发,且支持众多开发语言。(这Ctrl-C/V也是没有下限了…. »

揭开Python元类(metaclass)神秘的面纱

Python语言的metaclass特性一直是初学者的”噩梦”,当初博主在学习元类时也是一头雾水,但是一旦真正的理解了什么是”动态语言”之后,元类就不再神秘与难以理解了。Python这门动态语言最大的特性就是不需要一个类的字节码就能够在运行时创建出一个类,这是理解元类最为关键的信息。 »

TCP有限状态机

相较于Linux进程状态的变迁,TCP的状态变迁则会复杂许多,当然这与TCP本身的实现有关。当线上的Web服务或者是基于TCP连接的服务出现了时断时续的网络状况时,往往需要通过tcpdump以及TCP连接的状态进行问题定位。同时,这一复杂的有限状态机设计也能够为业务的设计提供指导性的帮助。 »

InnoDB独特的LRU

由于硬盘和内存的造价差异,一台主机实例的硬盘容量通常会远超于内存容量。对于数据库等应用而言,为了保证更快的查询效率,通常会将使用过的数据放在内存中进行加速读取。LRU算法经常用于数据的置换,但InnoDB的LRU却更加独特。 »

MySQL主从复制

MySQL的异步复制算的上是一种典型的单领导者复制模式,就复制本身而已并无特殊之处。但是复制的细节,例如binlog的格式选取,从节点如何在保证数据准确的情况下进行并行复制,MySQL的实现方案总是能令人眼前一亮。 »

Linux主机通过Windows虚拟机转发Easyconnect内网请求

世界上有个恶心的公司叫Sangfor,开发出了恶心的工具EasyConnect,本来这东西都是给在校的学生用的,好不好用都无所谓。但是很多公司也开始使用这个来访问内网,并且还不支持Linux(反正到目前Ubuntu下的64bit版本连接就没成功过),这就很令人讨厌了。回想起Ubuntu下使用Wine安装微信的种种难受,决定还是使用Windows虚拟机开启EasyConnect,并把部分的Linux流量打进虚拟机。 »

MySQL-InnoDB中的锁

锁在InnoDB存储引擎中的使用远比我们想象中的更加频繁,及时是一条最为简单的update set语句,其中也涉及到了各种锁的使用。包括常说的一致性锁定读,解决幻读等场景中,同样包含了锁的大量使用。 »

Golang中的interface

Golang除了方便使用的协程以外,最令我感到惊讶的就是interface,接口。在其它语言中,接口承担的主要作用为解耦和协议,但是在Golang中,interface还作为一种”通用”类型广泛使用于标准库和第三方库中。 »