2024年8月25日
一、基本数据类型 MySQL协议定义了2大类,7小类的数据类型,它们详细介绍如下: 1.1 数字类型 1.1.1 定长数字类型(FixLenInt) MySQL报文中整型值分别有1、2、3、4、6、8字节长度。存储使用小端存储的方式,比如 2字节 02 00,表示数字 2 而不是 512。 1.1.2 变长数字类型(LenEncInt) ………
阅读全文
2024年4月9日
Go的编译器先将源代码编译成Plan9风格的汇编指令,之后再通过汇编器和链接器生成不同平台的可执行程序。再深入研究源代码执行表现时,经常需要观察汇编指令,了解基本的Plan9汇编语法不可或缺。 CPU寄存器 32位x86架构的CPU有8个32位的通用寄存器(EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI),在汇编语言中可以 ………
阅读全文
2024年3月27日
CPU如何访问内存 CPU访问内存示意图 进程虚拟地址到物理地址转换示意图 根据逻辑地址A和页面大小D,得到页号P=floor(A/D),页内偏移量W=A%D。 判断越界,如果P≥M则越界,即页号比最大页号M还大就有问题了。 页表项的地址=起始地址F + 页号P × 页面大小D (这个是内存中的页表的物理地址)或者=F+A-W 物理地址E ………
阅读全文
2024年1月3日
参考阅读: https://zhuanlan.zhihu.com/p/473149603……
阅读全文
2023年7月19日
世界变化真快,转眼就到了HTTP3的时代。HTTP协议发展的时间轴是这样的: TCP的问题 TCP存在队头拥塞 QUIC QUIC(Quick UDP Internet Connections)是一种通用、安全、多路复用的传输层新型网络协议。它的目的是替代TCP(目前是互联网上用于数据传输的主流协议)。2012年,QUIC协议由当时还在谷 ………
阅读全文
2023年4月6日
很多时候我们需要对数据进行复制,在申请新的内存空间之后,我们可以用copy、append、for来复制拷贝。性能如何呢? 拷贝测试 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 ………
阅读全文
2023年3月30日
Ascii编码 Base64编码 标准Base64的码表如下: 为了适应网络传输,有些地方将 +/ 字符 替换成 -_ 字符(现实中还存在许多为适应不同场景,自定义各种可见字符来代替+/)。 填充 base64编码时将ascii字符串每3个一组编码成4个base64字符,当最后的ascii字符不足3个时,可以填充特定位(0值)来促成编码, ………
阅读全文
2023年3月28日
参考阅读: https://new.qq.com/rain/a/20210723A029CK00 https://github.com/preytaren/go-doc-zh (完)……
阅读全文
2023年3月22日
前面已经分析过在少量键值对检索的场景下,map的性能不如字符串数组直接检索。当时我们是用字符串数组循环遍历的方式做的测试。而实际上这种方式还有优化的空间。下面我们就来分析下字符串数组如何检索。 字符串== 看下面字符串比较的性能基准测试: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ………
阅读全文
2023年3月21日
JSON以其清晰明快横行,但网络大批量传输数据,序列化反序列化的场景下,和Protobuf这种数据传输协议相比,性能却不尽人意。为了解决JSON编解码性能差的问题,MsgPack给了我们新的选择。 JSON协议 菜鸟教程:https://www.runoob.com/json/json-syntax.html JSON 的两种结构: 1、 ………
阅读全文