摘要:
kvmtool下载编译 git clone https://github.com/kvmtool/kvmtool.git 下载后进入到目录执行make即可。 补码 计算机怎么表示负数?以四位有符号数为例,使用高位作为符号位,最高位为0表示正数,为1表示负数,其余三位用来表示值。在计算机中,我们将这种 阅读全文
摘要:
什么是电? 宇宙中物质的基本构成单位是原子,原子是由一个原子核和若干电子组成。原子核带有正电荷,电子带有负电荷。由于电荷相反,原子核和轨道上的电子之间有一定的吸引力,因为电子在一定轨道上围绕着原子核运动。 原子的最外层轨道上可能有松散结构的电子,它们只要很小的能量就可以从母体原子中分离出来,因此这些 阅读全文
摘要:
Linux驱动程序的分类 字符设备驱动、块设备驱动和网络设备驱动。 Linux驱动程序运行方式 把驱动程序编译进内核里面,这样内核启动后就会自动运行驱动程序了; 把驱动程序编译成以.ko为后缀的模块文件,然后在Linux启动后,我们自己手动安装驱动程序。 驱动程序 #include <linux/m 阅读全文
摘要:
C++类在内存中的存储方式 C++ 内存分为 5 个区域: 堆 heap :由 new 分配的内存块,其释放编译器不去管,由程序员自己控制。如果程序员没有释放掉,在程序结束时系统会自动回收。涉及的问题:“缓冲区溢出”、“内存泄露”。 栈 stack :是那些编译器在需要时分配,在不需要时自动清除的存 阅读全文
摘要:
static 是什么? static 是C++中的一个修饰符,它用来控制变量的存储方式和可见性。 为什么要用static 因为函数内部定义的变量,当程序执行到它的定义处时,编译器为它在栈上分配空间,函数在栈上分配的空间在此函数执行结束时会释放掉。如果想将函数中此变量的值保存至下一次调用时,如何实现? 阅读全文
摘要:
class A { private: const int a; // 常对象成员,可以使用初始化列表或者类内初始化 public: // 构造函数 A() : a(0) { }; A(int x) : a(x) { }; // 初始化列表 // const可用于对重载函数的区分 int getVal 阅读全文
摘要:
Protobuf protobuf (protocol buffer) 是谷歌内部的混合语言数据标准。通过将结构化的数据进行序列化(串行化),用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。 序列化: 将结构数据或者对象转换成能够用于存储和传输的格式。 反序列化: 在其 阅读全文
摘要:
它什么是? 数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;类似的还有线程池。 为什么要用? 一个数据库连接对象均对应一个物理数据库连接,每次操作都打开一个物理连接,使用完都关闭连接,这样造成系统的性能低下。各种池化技术的使用原因都是类似 阅读全文
摘要:
快速排序 每次从当前考虑的数组中选一个元素,把这个元素想办法挪到应该排好序的位置,比如4这个元素,它就有一个性质4之前的元素都是小于它的,之后的元素都是大于它的,之后我们要做的事情是对小于4和大于4的数组分别继续使用快速排序的思路,逐渐递归下去完成整个排序过程。 对于快速排序如果把选定的元素挪到正确 阅读全文
摘要:
归并排序 首先把数组分成一半,想办法把左右两边数组排序,之后呢再将它们归并起来,这就是归并排序的基本思想。 这样的话如果有N个元素,就会分成log(n)层,如果整个归并过程我们可以以O(n)时间复杂度解决的话,那么我们就设计成了一个 Nlog(n)级别的排序算法。 这个归并的过程需要O(n)的辅助空 阅读全文