2.6k2 分钟

# 内存管理 简述: 栈 :存放程序的 局部变量和函数调用的参数 和 返回地址 。栈是一个 向下增长 的数据类型,具有 后进先出(LIFO) 的特性。栈上的内存由 编译器自动分配和释放 , 不 需要 程序员干预 , 栈上 的 内存空间 通常有限,因此不适合存放大量或复制的数据。 堆 :存放程序 动态分配 的内存,由程序员 控制其生命周期 。堆是一个 向上增长 的数据结构,可以 根据需要 扩展或收缩。使用 new 和 delete 操作符分配和释放堆上的内存时,需要注意 内存泄漏 或 野指针 等问题。 delete之后 要将地址设置 为nullptr 数据区 :存放程序的 全局变量和静
2.1k2 分钟

# 基础概念 # 原码 原码 表示与 机器数真值 表示的 一样 ,即用 第一位 表示 符号 , 其余位 表示 数值 # 进制转换 最常见的 进制转换 , 10进制 转 2进制 , 10进制 转 16进制 , 负数 转为 16进制 , 十进制负数 转为 十六进制 # 整数进制转换 除以R取余法 。即整数部分不断除以 R 取余数,直到 商为0 为止, 从下往上 取值 # 二进制转八,十六换技巧 以 小数点 为中心,将数据分为 两组 ,每 3/4位 为 一组 ,不够位数在 两侧补0 # 八 / 十六进制转二进制 以小数点为中心,将对应的 八进制 转为 二
10k9 分钟

# 特别 while 一般而言,所有 非零值 都视为 真 ,只有 0 被视为 假 。 #include <iostream>using namespace std;int main(void)&#123; printf("%d\n", 1); int i = -6; //while 一般而言,所有非零值都视为真,只有 0 被视为假 while (i) &#123; printf("%d\n", i); i++; &#125; return 0;&#125;# 指针与
1.8k2 分钟

# 字节序 即计算机在存储或读取数据时,字节的顺序。计算机是从低字节依次向高字节进行 读。 数据 12345678 大端: 低 字节在 高位(即后面) , 高 字节在 前面 (符合人类的习惯) 小端: 低 字节在 低位(即前面) 计算机 一般都是 小端序 网络 序时 大端序 #include <stdio.h>union &#123; short a; char b[2];&#125; un;int main(void)&#123; un.a = 0x1234; //0x 十六进制,0 八进制 i
9.4k9 分钟

# 排序 算法稳定性:关键字相同的元素在排序之后, 相对位置 不变 内部排序 :排序期间元素全部存放在 内存中 的排序 外部排序 :排序期间元素 无法全部 同时存放在内存中,必须在排序的过程中根据要求不断地 在内,外存之 间移动的排序。 # 直接插入排序 添加 哨兵 节点存放需要更换位置的节点值 从第二个位置开始 若小于前一个节点,此节点需要 前移 ,变为哨兵 根据判断往前循环判断哨兵应该放的位置,同时为了哨兵有位置放,在循环中,循环位置之后的 集体后移 找到后,将哨兵插入到对应节点 性能:时间复杂度 O(n^2 ),空间复杂度 O(1) , 稳定 void InsertSo
6.2k6 分钟

# Hash # 平衡二叉树 通过 比较 保证 有序 , 每次搜索 都能够 排除一半 , 时间复杂 度 O(log2为低n) 100万 节点 -- 最 多 比较次数 20次 10亿 节点 -- 最 多 比较次数 30次 # 散列表 根据 key 计算 key 在表中的位置的数据结构,是 key 和其所在存储地址的映射关系 struct node&#123; void *key; void *val; struct node *next;&#125;; # 散列表组成 # hash 函数 通过映射函数 Hash(key) = a
9.5k9 分钟

复习内容 函数重载与继承 指针 排序与查询算法 C 语言数组 指针 Linux 文件操作 # 选择题 (每题三分) 1、一个 C 程序的 执行 是从 A 。 (A)本程序的 main函数开始 到 main函数结束 (B)本程序文件的第一个函数开始到本程序文件的最后一个函数结束 (C)本程序的 main 函数开始到本程序文件的最后一个函数结束 (D)本程序文件的第一个函数开始到本程序 main 函数结束 2、若有定义: int a[3][4] ; 不能表示数组元素 a[1][1] 的是 D 。 a[3][4] 在底层存储使用连续存储,存储方式为: a[0][0] a[0]
7.9k7 分钟

# 原始字面意 使用原始字面意 R 可以直接表示字符串的实际含义,而不需要额外对字符串做转义或连接操作 原始字符串必须用括号 () 括起来,括号的前后可以加其它字符串,所加的 字符串会被忽略 ,并且 两边 的 字符串 必须 相同 #include <iostream>using namespace std;int main(void)&#123; // 括号两边的字符串相同,并且会被忽略 string str = R"foryouos:(D:\foryouos\blog#"C++新特性")foryouos:&q
19k17 分钟

# 基于 Reactor 高并发服务器 C++ 基于 Reactor 的高并发服务器,分为 反应堆模型 , 多线程 , I/O模型 , 服务器 , Http请求 和 响应 五部分 # 反应堆模型 # Channel 描述了文件描述符以及 读写事件 ,以及对应的读写销毁回调函数,对应存储 arg 读写回调对应的参数 # Channel 添加写和判断 异或 | : 相同为0 , 异为1 按位与 & :只有 11 为 1,其它组合全部为 0,即只有 真真为真 ,其它 一假则假 去反 ~ :二进制 全部取反 添加写属性 :若对应为 10 想
18k16 分钟

# B 树 多路平衡 搜索树 索引在 内存 , 数据 映射 磁盘( 磁盘页 4K 的整数倍), 多路,降低红黑树和二叉树的 层 高, 降低IO 访问次数 # B 树和 B + 树 B树 节点中即 存储数据 信息,也会 存储索引 信息 B+树 节点中即存储数据信息,也会存储索引信息, 非叶子 节点 只有索引 信息 B+ 树 期待更 少 的磁盘 IO - 将索引信息和数据信息进行 分层 管理 B+树 加载到内存的 无效 数据 更少 # etcd 强 一致性、 高 可用性的数据访问服务,用来存储 少量重要 的数据。刷盘的时候更快,B 树和 B + 树都是 映射着磁盘页 内存