概述 JSON for Modern C++ 用起来方便,感觉跟使用动态语言JavaScript一样方便。举个例子 #include <iostream> #include <iomanip> #include <nlohmann/json.hpp> using json = nlohmann::json; in…
Git是一个 “分布式版本管理工具”,简单的理解版本管理工具:大家在写东西的时候都用过 “回撤” 这个功能,但是回撤只能回撤几步,假如想要找回我三天之前的修改,光用 “回撤” 是找不回来的。而 “版本管理工具” 能记录每次的修改,只要提交到版本仓库,你就可以找到之前任何时刻的状态(文本状态)。 下面的内容就是列举了常用的 Git 命令和一些小技巧,…
索引 B+ Tree 原理 数据结构 B Tree 指的是 Balance Tree,也就是平衡树。平衡树是一颗查找树,并且所有叶子节点位于同一层。 B+ Tree 是基于 B Tree 和叶子节点顺序访问指针进行实现,它具有 B Tree 的平衡性,并且通过顺序访问指针来提高区间查询的性能。 在 B+ Tree 中,一个节点中的 key 从左到右…
弃用特性 不再允许字符串字面值常量赋值给一个 char *。如果需要用字符串字面值常量赋值和初始化一个 char *,应该使用 const char * 或者 auto。char *str = "hello world!"; // 将出现弃用警告 warning: ISO C++ forbids converting a str…
概述 描述一下基于 C++ 版本的以太坊代码,从交易到出块上链的整个流程做个备忘。以太坊公链采用的共识算法为Pow,联盟链采用的算法是PBFT。 交易 交易接收 交易的接收有两大类,一类是通过RPC接口eth_sendRawTransaction()与eth_sendTransaction()接收到的交易。eth_sendRawTransactio…
概述 定义于头文件 <string> template< class CharT, class Traits = std::char_traits<CharT>, class Allocator = std::allocator<CharT> > class basic_string; (1) namesp…
概述 算法库提供大量用途的函数(例如查找、排序、计数、操作),它们在元素范围上操作。注意范围定义为 [first, last) ,其中 last 指代要查询或修改的最后元素的后一个元素。 大部分操作定义于头文件 <algorithm> 排序 参考:排序算法 排序算法 平均时间复杂度 最差时间复杂度 空间复杂度 数据对象稳定性 冒泡排序 …
概述 容器 底层数据结构 时间复杂度 有无序 可不可重复 其他 array 数组 随机读改 O(1) 无序 可重复 支持快速随机访问 vector 数组 随机读改、尾部插入、尾部删除 O(1)头部插入、头部删除 O(n) 无序 可重复 支持快速随机访问 list 双向链表 插入、删除 O(1)随机读改 O(n) 无序 可重复 支持快速增删 dequ…
学前理论 linux主要特征 一切且文件(目录、硬盘等都是文件);硬件都在/dev 目录,如硬盘、U盘为/dev/sd[a-d]; /dev/sr0(/dev/cdrom)是光驱的设备名(df命令查看),为设备文件,代表的是光驱本身,得把这个设备挂载到目录下(一般为/mnt)(文件系统的临时挂载点),才能对设备上的文件进行读写等操作; 不懂的命令`…
Hash 算法特点 正向快速:给定明文和 Hash 算法,在有限时间和有限资源内能计算得到 Hash 值。 逆向困难:给定(若干) Hash 值,在有限时间内很难(基本不可能)逆推出明文。 输入敏感:原始输入信息发生任何改变,新产生的 Hash 值都应该出现很大不同。 冲突避免:很难找到两段内容不同的明文,使得它们的 Hash 值一致(发生碰撞)。…