graphviz的基本用法 程序员

graphviz的基本用法

一、基本用法 画一个简单的二叉树: 图形: 二、设置形状 上面的1/2/3都是一个node,通常被称为节点,默认情况下节点是圆形的。可以通过shape属性来设置节点形状。 设置形状为长方形: 设置形状...
阅读全文
C++基于googletest做单元测试 程序员

C++基于googletest做单元测试

一、安装googletest 单测对程序员而言是提升代码质量最重要、最有效的一个措施,对程序员来说,要想写一个好的程序,那么必定少不了好的单元测试。googletest(gtest)是google开发...
阅读全文
HTTP/2简介 计算机网络

HTTP/2简介

一、HTTP/2概述 HTTP/2是HTTP协议的第二个大版本,相较于HTTP/1而言,HTTP/2的核心观念是“构建一个更快、更简单以及更强大”的web应用。 HTTP/2 will make ou...
阅读全文
HTTP协议中的keep-alive机制 计算机网络

HTTP协议中的keep-alive机制

一、长连接和短连接 长连接和短链接的概念: 短连接:传输完数据后连接立刻关闭。 长连接:传输完数据后不会立刻关闭连接,下次传输数据继续复用这个连接。 很容易看出,长连接和短连接的主要区别就是连接完成后...
阅读全文
数据库中的多版本并发控制(MVCC) MySQL

数据库中的多版本并发控制(MVCC)

一、概述 事务的出现给并发带来了巨大的便利性,它的ACID特性使得数据在并发时更加可靠。但是对于事务而言,它也会导致出现第一类丢失更新、第二类丢失更新、脏读、不可重复读以及幻读的问题,当然又出现了多种...
阅读全文
MySQL中的行锁、两阶段锁协议以及死锁 MySQL

MySQL中的行锁、两阶段锁协议以及死锁

一、行锁和两阶段锁协议 行锁:顾名思义,就是对某一行加锁,修改的时候不会锁住整个表。相对于表锁来说,行锁的开销更大(因为涉及到MVCC等需要保存快照),但是粒度更小,更适合于高并发场景。行锁是每个引擎...
阅读全文
关于vector的扩容机制 C/C++

关于vector的扩容机制

往vector中添加元素时,如果空间不够将会导致扩容。vector有两个属性:size和capacity。size表示已经使用的数据容量,capacity表示数组的实际容量,包含已使用的和未使用的。 ...
阅读全文