- 博客(23)
- 资源 (32)
- 收藏
- 关注
原创 c++11 abi 兼容性
ABI(Application Binary Interface)定义了程序二进制接口,包括函数调用约定、参数传递方式、数据结构布局、库函数名称修饰等。ABI 的一致性对于确保编译的二进制文件能够正确链接和运行至关重要。
2024-06-26 17:39:21 597
原创 fatal error: bits/c++config.h: 没有那个文件或目录
/usr/include/c++/8/cstdlib:41:10: fatal error: bits/c++config.h: 没有那个文件或目录 #include
2024-06-17 18:29:55 1051
原创 mysql 8.0.31 rr隔离级别下的加锁规则总结
原则1:加锁的基本单位是next-key lock。希望你还记得,next-key lock是前开后闭区间。原则2:查找过程中访问到的对象才会加锁。优化1:索引上的等值查询,给唯一索引加锁的时候,next-key lock退化为行锁。优化2:索引上的等值查询,向右遍历时且最后一个值不满足等值条件的时候,next-key lock退化为间隙锁。一个bug:唯一索引上的范围查询会访问到不满足条件的第一个值为止。查看锁查performance_schema.data_locks表。
2023-03-25 18:46:34 320
原创 go sync.Map原理
无论是read还是dirty,本质上都是map[interface{}]*entry类型,这里的entry其实就是Map的value的容器。通过这种设计,规避了原生map无法并发安全delete的问题,同时在变更某个键所对应的值的时候,就也可以使用原子操作了。使用了两个原生的map作为存储介质,分别是read map(只读map)和dirty map(脏map)。entry的本质,是一层封装,可以表示具体值的指针,也可以表示key已删除的状态(即逻辑假删除)那sync.Map是怎么做的高性能的呢?
2023-03-17 18:02:56 155
转载 关于队头阻塞(Head-of-Line blocking),看这一篇就足够了
在这篇(很长,我知道)的文章中,我们一直在追踪队头阻塞。我们首先讨论了为什么 HTTP/1.1 会受到应用层队头阻塞的影响。这主要是因为 HTTP/1.1 没有识别单个资源块的方法。HTTP/2 使用帧来标记这些块并启用多路复用。这解决了 HTTP/1.1 的问题,但遗憾的是HTTP/2 仍然受到底层 TCP 的限制。由于 TCP 将 HTTP/2 数据抽象为一个单一的、有序的、但不透明的流,因此如果数据包在网络上丢失或严重延迟,它将遭受队头阻塞。
2022-09-21 16:52:32 739
原创 etcd 证书的坑
1etcdctl put key value --key=/etc/kubernetes/pki/etcd/server.key --cert=/etc/kubernetes/pki/etcd/server.crt --cacert=/etc/kubernetes/pki/etcd/ca.crt如果你的证书是自签名ca颁发,这三个证书参数缺一不可,--cacert 不带报错authentication handshake failed: x509: certificate signed by unknown
2022-06-30 10:17:53 998
原创 KMP算法精要
int strstr(string s,string p)在s中寻找p第一次出现的位置返回,找不到返回-1朴素字符串匹配步骤:确定s的匹配起点offset,第一次offset=0,以后offset=offset+1; 从s的offset开始,从p的位置0开始,逐位比较,一旦不匹配,回到步骤1KMP匹配KMP原理上根朴素字符串匹配没有区别,但是有两点优化:在确定s的匹配起点的时候,每次不匹配后不是每次后移动1位.移动多少位取决于已匹配部分公共前后缀长度与模式串p对比时,也不
2022-04-14 15:06:08 252
原创 推送局域网的公网地址到企业微信应用
前提条件1 已经注册了自己的企业微信 企业2 自己的企业微信添加了pushplus 推送应用func push() { //获取公网ip req, err := http.NewRequest(http.MethodGet, "http://ip.me/", nil) req.Header.Set("User-Agent", "curl/7.58.0") req.Header.Set("Accept", "*/*") cli := http.Client...
2021-09-01 11:12:53 663
原创 vim 中文乱码问题
vim 有一下三种编码1、fileencoding 在vim中e ++enc=cp936设置,cp936是中文gbk还是gb2312,vim按此格式载入文件,按此格式保存文件2、encoding LOCALE环境变量值获取,是vim buffer中的格式,是vim内部核心格式,载入时用iconv 从fileencoding到此格式encoding转换,保存时此格式encoding转成fi...
2019-05-23 16:27:00 866
原创 openssl 生成证书
// 生成顶级CA的公钥证书和私钥文件,有效期10年(RSA 1024bits,默认)openssl req -new -x509 -days 3650 -keyout CARoot1024.key -out CARoot1024.crt// 为顶级CA的私钥文件去除保护口令openssl rsa -in CARoot1024.key -out CARoot1024.key
2017-12-08 18:03:28 1113
原创 红黑树详解 原理 史上最强 精华
未经授权,不得私自转载,否则追究法律责任联系作者ntxbaby@163.com取得授权转载请注明作者和出处网上很多红黑树的讲解都没有分析清楚插入删除各种情况是怎么来的,他们大多把分析图画的很复杂,说到底还是理解不够深,其实这些情况都是极其简单的,我这里重点推导各种情况是怎么来的,不解释各种情况怎么调整,因为结构很简单调整很容易,且网上很多。红黑树的精髓是明白各种情况
2016-07-09 15:42:40 7988 4
翻译 go build命令
go build [-o output] [-i] [build flags] [packages]Build 编译由import path命名的包以及这些包所依赖的包,但不安装编译结果如果要编译的参数是.go文件列表,build把他们当作指定单个包的源文件列表当编译单个main包时,build生成的可执行文件的文件名是第一个源文件或者源码目录的名字,例如 go build
2015-12-13 15:44:06 4285
原创 iocp例子
//socket的简单封装CDSocket.h#include #define BUFFER_SIZE 1024#define OP_READ 1#define OP_WRITE 2#define OP_ACCEPT 3struct SockInit{ SockInit() { WSADATA wsaData; WSAStartup(MAKEWORD(2, 2)
2014-11-02 10:41:30 660
原创 mysql用现有表的数据建表或填充表
这种方式注意INSERT INTO表名(列名1,列名2…)SELECT表名(列名1,列名2…)插入与选取的列数要相同,且类型兼容,选取的列分别依次按顺序填入要插入的表的列这种方法注意: CREATETABLE表名1(列1类型1,列2类型2…) AS SELECT列1,列2… FROM表名2取数据的表2选
2013-04-18 20:41:13 1879 1
原创 mysql 外键约束
上图中contact_interest和contact_seeking两张表的创建涉及到外键约束,其中一个表创建完成后,另一个的创建总是失败,害我摸索好久。这是我创建失败的sql:create tablecontact_interest(contact_id int not null,interest_id int not null,primary key(contact_
2013-04-18 20:33:41 969
sed and awk 101 hacks.pdf (中文版带书签)
2023-06-25
pvtrace c/c++函数调用关系生成工具
2015-07-12
botan加密库
2012-08-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人