控制器 采用命令nest new project-name初始化一个项目之后,会提示yarn start启动项目。此命令不是开发模式命令,会导致你修改文件与新增文件不会生效。应该使用yarn start:dev启动。 支持两个支持开箱即用的 HTTP 平台:express 和 fastify。默认是express。平台会暴露自己的 API 供使用。…
ThreadPool.h #include <vector> #include <queue> #include <atomic> #include <future> #include <condition_variable> #include <thread> #includ…
I/O 模型 一个输入操作通常包括两个阶段: 等待数据准备好 从内核向进程复制数据 对于一个套接字上的输入操作,第一步通常涉及等待数据从网络中到达。当所等待数据到达时,它被复制到内核中的某个缓冲区。第二步就是把数据从内核缓冲区复制到应用进程缓冲区。 Unix 有五种 I/O 模型: 阻塞式 I/O 非阻塞式 I/O I/O 复用(select 和 …
概述 JSON for Modern C++ 用起来方便,感觉跟使用动态语言JavaScript一样方便。举个例子 #include <iostream> #include <iomanip> #include <nlohmann/json.hpp> using json = nlohmann::json; in…
索引 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…
概述 定义于头文件 <string> template< class CharT, class Traits = std::char_traits<CharT>, class Allocator = std::allocator<CharT> > class basic_string; (1) namesp…
概述 容器 底层数据结构 时间复杂度 有无序 可不可重复 其他 array 数组 随机读改 O(1) 无序 可重复 支持快速随机访问 vector 数组 随机读改、尾部插入、尾部删除 O(1)头部插入、头部删除 O(n) 无序 可重复 支持快速随机访问 list 双向链表 插入、删除 O(1)随机读改 O(n) 无序 可重复 支持快速增删 dequ…
概览 Map 是一种无序的键值对的集合。Map 最重要的一点是通过 key 来快速检索数据,key 类似于索引,指向数据的值。 Map 是一种集合,所以我们可以像迭代数组和切片那样迭代它。不过,Map 是无序的,我们无法决定它的返回顺序,这是因为 Map 是使用 hash 表来实现的。 通过 key 在 map 中寻找值是很快的,比线性查找快得多,…
内部实现 对数组进行抽象封装,可以动态增长,类似C++里面的vector。切片有 3 个字段的数据结构。分别是指向底层数组的指针、切片访问的元素的个数(即长度)和切片允许增长到的元素个数(即容量) 声明和初始化 slice := make([]string, 5) 创建一个字符串切片,其长度和容量都是 5 个元素。如果只指定长度,那么切片的容量和长…