摘要: 树结构 1.二叉搜索树 typedef int DataType; struct TreeNode { DataType data; std::shared_ptr<TreeNode> left_node; std::shared_ptr<TreeNode> right_node; TreeNode 阅读全文
posted @ 2021-12-14 18:23 Clovran-Wong 阅读(83) 评论(0) 推荐(0) 编辑
摘要: 直观对比 物理内存:也就是安装在计算机中的内存条,比如安装了 2GB 大小的内存条,那么物理内存地址的范围就是 0 ~ 2GB。这也是CPU可以直接进行寻址的内存空间大小 虚拟内存:虚拟的内存地址。由于 CPU 只能使用物理内存地址,所以需要将虚拟内存地址转换为物理内存地址才能被 CPU 使用,这个 阅读全文
posted @ 2021-12-14 18:09 Clovran-Wong 阅读(579) 评论(0) 推荐(0) 编辑
摘要: 进程 VS 线程 进程是资源分配的最小单位,线程是程序执行CPU 调度的最小单位。这个太老生常谈了。 在早期的操作系统中并没有线程的概念,进程是能拥有资源和独立运行的最小单位,也是程序执行的最小单位。 任务调度采用的是时间片轮转的抢占式调度方式,而进程是任务调度的最小单位。 进程有自己的独立地址空间 阅读全文
posted @ 2021-12-14 18:06 Clovran-Wong 阅读(42) 评论(0) 推荐(0) 编辑
摘要: 1.Static Static 最大的作用是限定作用域。 1.面向对象的 静态成员变量 静态成员变量是该类的所有对象所共有的。对于普通成员变量,每个类对象都有自己的一份拷贝。整个运行过程中,静态成员变量一共就一份,只分配一次内存,由该类的所有对象共享访问。所以,静态数据成员的值对每个对象都是一样的, 阅读全文
posted @ 2021-12-14 17:46 Clovran-Wong 阅读(77) 评论(0) 推荐(0) 编辑
摘要: 每个进程各自有不同的用户地址空间,任何一个进程的全局变量在另一个进程中都看不到,所以进程之间要交换数据必须通过内核,在内核中开辟一块缓冲区,进程1把数据从用户空间拷到内核缓冲区,进程2再从内核缓冲区把数据读走,内核提供的这种机制称为进程间通信(IPC,InterProcess Communicati 阅读全文
posted @ 2021-12-14 15:28 Clovran-Wong 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 单例模式 #pragma once template<typename T> class Singleton { public: Singleton() = default; ~Singleton() = default; Singleton(const Singleton&) = delete; 阅读全文
posted @ 2021-12-14 00:04 Clovran-Wong 阅读(38) 评论(0) 推荐(0) 编辑