瓶子的跋涉
🏺

瓶子的跋涉

=YuHeShui=

内存管理

内存管理

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

进制转换

# 基础概念 ## 原码 > `原码`表示与`机器数真值`表示的`一样`,即用`第一位`表示`符号`,`其余位`表示`数值` > > ![原码补码反码转换](https://mmbiz.qpic.cn/mmbiz_jpg/ORog4TEnkbtWag4RMZqqBh24Iv7t2wkkgk1PJE6kNuC2YeoMgGpUcca49PMlt2LbxBuTRhNBwQMNInibZk90WhA/640?wx_fmt=jpeg) # 进制转换 > 最常见的`进制转换`,`10进制`转`2进制`,`10进制`转`16进制`,`负数`转为`16进制`,`十进制负数`转为`十六进制` ![常
more...
笔试指针类考题

笔试指针类考题

# 特别 > `while`一般而言,所有`非零值`都视为`真`,只有`0`被视为`假`。 ```cpp #include <iostream> using namespace std; int main(void) { printf("%d\n", 1); int i = -6; // while 一般而言,所有非零值都视为真,只有0被视为假 while (i) { printf("%d\n", i); i++; } return 0; } ``` # 指针与`const` > 指针在初始化时,引用了,其它变量的值,无论对指针的地址还是对指针值`+ const
more...
C++面试字节系

C++面试字节系

# 字节序 > 即计算机在存储或读取数据时,字节的顺序。计算机是从低字节依次向高字节进行 读。 数据`12345678` > > * 大端:`低`字节在`高位(即后面)` ,`高`字节在`前面` (符合人类的习惯) > > ![大端](https://img-blog.csdnimg.cn/20210429171813889.png) > > * 小端:`低`字节在`低位(即前面)` > > ![小端存储](https://img-blog.csdnimg.cn/20210429172017425.png) > > * `计算机`一般都是`小端序` > > * `网络`序时`大端序` ``
more...
排序算法C++

排序算法C++

## 排序 > 算法稳定性: 关键字相同的元素在排序之后,`相对位置`不变 > > `内部排序`: 排序期间元素全部存放在`内存中`的排序 > > `外部排序`: 排序期间元素`无法全部`同时存放在内存中,必须在排序的过程中根据要求不断地`在内,外存之`间移动的排序。 ## 直接插入排序 > * 添加`哨兵`节点存放需要更换位置的节点值 > * 从第二个位置开始 > * 若小于前一个节点,此节点需要`前移`,变为哨兵 > * 根据判断往前循环判断哨兵应该放的位置,同时为了哨兵有位置放,在循环中,循环位置之后的`集体后移` > * 找到后,将哨兵插入到对应节点 > * 性能
more...
Hash

Hash

# Hash # 平衡二叉树 > 通过`比较`保证`有序`,`每次搜索`都能够`排除一半`,`时间复杂`度`O(log2为低n)` > > `100万`节点 --最`多`比较次数 ` 20次` > > `10亿`节点 -- 最`多`比较次数 ` 30次` # 散列表 > 根据key计算key在表中的位置的数据结构,是key和其所在存储地址的映射关系 ```cpp struct node { void *key; void *val; struct node *next; }; ``` ![散列表](https://mmbiz.qpic.cn/mmbiz_
more...
C++笔试题01

C++笔试题01

> 复习内容 > * 函数重载与继承 > * 指针 > * 排序与查询算法 > * 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]`在底层存储使用连续存储,存
more...
C++11新特性变量

C++11新特性变量

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

Linux后台服务器C++

# 基于`Reactor`高并发服务器 `C++` > 基于`Reactor`的高并发服务器,分为`反应堆模型`,`多线程`,`I/O模型`,`服务器`,`Http请求`和`响应`五部分 ![全局](https://mmbiz.qpic.cn/mmbiz_jpg/ORog4TEnkbvYbuq71ib9iaeQVznZ5coWayVyHeW1u9lLN9erbib5Gl9iaFzzueNicVmZLTYkp7MbpD5c6BZRjC6fOMg/640?wx_fmt=jpeg "全局反应堆模型") # 反应堆模型 ## `Channel` > 描述了文件描述符以及`读写事件`,以及对应
more...
B树

B树

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