摘要:
strings包 strings包的使用举例: bytes包 1、大小写转换 2、比较 3、替换 4、清除 5、分割、连接 6、子串 7、 NewReader创建一个从s读取数据的Reader。 buffer包 bytes.buffer是一个缓冲byte类型的缓冲器,这个缓冲器里存放着都是byte。 阅读全文
摘要:
Pika pika是360奇虎公司开源的一款类redis存储系统,主要解决的是用户使用 Redis 的内存大小超过 50G、80G 等等这样的情况,会遇到启动恢复时间长,一主多从代价大,硬件成本贵,缓冲区容易写满等问题。 Pika 就是针对这些场景的一个解决方案: Pika 的单线程的性能肯定不如 阅读全文
摘要:
高性能网络编程 1、建立连接 accept TCP通过三次握手建立连接,如下图, 当服务器绑定、监听了某个端口后,这个端口的SYN队列和ACCEPT队列就建立好了(在内核中实现)。注意,SYN队列存放的是未建立的连接,数值由内核 /proc/sys/net/ipv4/tcp_max_syn_back 阅读全文
摘要:
举例,一个结构体的定义如下: 对齐 如果直接对上面的结构体作sizeof()运算: 如果在成员名后面加上冒号,指定占用的bits数,可以节省结构体的大小,例如: 可以使用下面的宏计算结构体中某个成员的偏移位置: 演示如何计算成员的位置: 初始化 结构体变量在定义的同时进行初始化,类似于数组的初始化: 阅读全文
摘要:
消息队列库——ZeroMQ ZeroMQ(简称ZMQ)是一个基于消息队列的多线程网络库,其对套接字类型、连接处理、帧、甚至路由的底层细节进行抽象,提供跨越多种传输协议的套接字。 ZMQ是网络通信中新的一层,介于应用层和传输层之间(按照TCP/IP划分),其是一个可伸缩层,可并行运行,分散在分布式系统 阅读全文
摘要:
mysql-proxy 读写分离 主从复制 MySQL Replication可以将master的数据复制分布到多个slave上,然后利用slave来分担master的读压力。 读写分离 MySQL-Proxy 是处在MySQL数据库客户端和服务端之间的程序,它支持嵌入Lua。这个代理可以用来分析、 阅读全文
摘要:
位运算 判断字节序 问题描述:判断一台机器是大尾顺序还是小尾顺序。 整数的二进制中1的个数 判断是否为2的幂 如果一个数是2的N次幂,那么它的二进制表示中只有一个1。 判断是否为3的幂 如果是判断一个int类型是否是3的幂,在int范围内3^19=1162261467是最大的一个幂,3^20就超出了 阅读全文
摘要:
事务处理 让我们用最经典的 Use Case:“A帐号向B帐号汇钱”来说明一下,熟悉RDBMS事务的都知道从帐号A到帐号B需要6个操作: 从A帐号中把余额读出来; 对A帐号做减法操作; 把结果写回A帐号中; 从B帐号中把余额读出来; 对B帐号做加法操作; 把结果写回B帐号中; 为了数据的一致性,这6 阅读全文
摘要:
使用 Redis Cluster Redis 3.0 在2015年出了Stable版本,3.0版本相对于2.8版本带来的主要新特性包括: 实现了Redis Cluster,从而做到了对集群的支持; 引入了全新的"embedded string" 对象编码方式,从而实现了更少的缓存丢失和在特定的工作负 阅读全文