程序员 graphviz 的基本用法 一、基本用法 画一个简单的二叉树: [crayon-6866016f7bc67272565594/] 图形: 二、设置形状 上面的 1/2/3 都是一个 node,通常被称为节点,默认情况下节点是圆形的。可... 01 月 31 日2,253评论graphviz 阅读全文
程序员 cmake 中判断操作系统的方法 判断操作系统的方法: [crayon-6866016f7c2ac624273093/] 要注意的问题是 APPLE 也属于 UNIX 。 01 月 30 日1,891评论cmake 阅读全文
程序员 C++基于 googletest 做单元测试 一、安装 googletest 单测对程序员而言是提升代码质量最重要、最有效的一个措施,对程序员来说,要想写一个好的程序,那么必定少不了好的单元测试。 googletest(gtest) 是 google 开发... 01 月 30 日5,1491 阅读全文
程序员 CMakeLists.txt 文件的基本语法 一、概述 CMakeLists.txt 是 cmake 编译系统构建器的构建文件,就像是 make 中的 Makefile 一样。 Makefile 是通过固定的文件格式来构建目标,相对于 Makefile 而言,CMa... 01 月 30 日1,008评论cmake 阅读全文
计算机网络 HTTP/2 简介 一、 HTTP/2 概述 HTTP/2 是 HTTP 协议的第二个大版本,相较于 HTTP/1 而言,HTTP/2 的核心观念是 「构建一个更快、更简单以及更强大」 的 web 应用。 HTTP/2 will make ou... 01 月 29 日238评论http 阅读全文
计算机网络 HTTP 协议中的 keep-alive 机制 一、长连接和短连接 长连接和短链接的概念: 短连接:传输完数据后连接立刻关闭。 长连接:传输完数据后不会立刻关闭连接,下次传输数据继续复用这个连接。 很容易看出,长连接和短连接的主要区别就是连接完成后... 01 月 28 日878评论http 阅读全文
MySQL 数据库中的多版本并发控制 (MVCC) 一、概述 事务的出现给并发带来了巨大的便利性,它的 ACID 特性使得数据在并发时更加可靠。但是对于事务而言,它也会导致出现第一类丢失更新、第二类丢失更新、脏读、不可重复读以及幻读的问题,当然又出现了多种... 01 月 25 日1,694评论 阅读全文
MySQL MySQL 中的行锁、两阶段锁协议以及死锁 一、行锁和两阶段锁协议 行锁:顾名思义,就是对某一行加锁,修改的时候不会锁住整个表。相对于表锁来说,行锁的开销更大 (因为涉及到 MVCC 等需要保存快照),但是粒度更小,更适合于高并发场景。行锁是每个引擎... 01 月 22 日1,247评论 阅读全文
C/C++ 关于 vector 的扩容机制 往 vector 中添加元素时,如果空间不够将会导致扩容。 vector 有两个属性:size 和 capacity 。 size 表示已经使用的数据容量,capacity 表示数组的实际容量,包含已使用的和未使用的。 ... 01 月 20 日6,046评论stl 阅读全文