摘要:
reactor模型 Reactor模式是处理并发I/O比较常见的一种模式,用于同步I/O,中心思想是将所有要处理的I/O事件注册到一个中心I/O多路复用器上,同时主线程/进程阻塞在多路复用器上;一旦有I/O事件到来或是准备就绪(文件描述符或socket可读、写),多路复用器返回并将事先注册的相应I/ 阅读全文
摘要:
Linux网络环境: 僵尸进程、孤儿进程、守护进程、进程组、会话、前台进程组、后台进程组 Linux下进程通信的八种方法 Linux下进程通信的八种方法:管道(pipe),命名管道(FIFO),内存映射(mapped memeory),消息队列(message queue),共享内存(shared 阅读全文
摘要:
内碎片:需要3字节,系统分配4字节,剩下的1字节就是内碎片 外碎片:由于不断申请内存和归还内存使得内存中剩下很多小片段的内存,无法被利用 作用:(1)提高代码复用率,功能模块化。(2)减少内存碎片问题。(3)提高内存分配的效率。(4)有内存不足时的应对措施。(5)隐藏实际中对存储空间的分配及释放细节 阅读全文
摘要:
内联函数的作用 作用:不是在调用时发生控制转移,而是在编译时将函数体嵌入在每一个调用处,适用于功能简单,规模较小又使用频繁的函数。递归函数无法内联处理,内联函数不能有循环体,switch语句,不能进行异常接口声明。 主要体现在于inline关键字 内联是以代码膨胀(复制)为代价,仅仅省去了函数调用的 阅读全文
摘要:
死锁的四个条件 互斥:每个资源要么已经分配给了一个进程,要么就是可用的。 占有和等待:已经得到了某个资源的进程可以再请求新的资源。 不可抢占:已经分配给一个进程的资源不能强制性地被抢占,它只能被占有它的进程显式地释放。 循环等待:有两个或者两个以上的进程组成一条环路,该环路中的每个进程都在等待下一个 阅读全文
摘要:
linux系统架构 特权级的概念 对于任何操作系统来说,创建一个进程是核心功能。创建进程要做很多工作,会消耗很多物理资源。比如分配物理内存,父子进程拷贝信息,拷贝设置页目录页表等等,这些工作得由特定的进程去做,所以就有了特权级别的概念。最关键的工作必须交给特权级最高的进程去执行,这样可以做到集中管理 阅读全文
摘要:
变量的可见性又叫做作用域。 一般来说变量如果是在栈上分配的,那么变量的可见性和生命周期是一样的。但在堆区,静态区,常量区的变量声明周期大于变量的可见性(如果理解有误,请大佬们指出)。 即指针对应的是可见性,而指针所指向的对象(也即指针所指向的内存)对应的是生命期。因为指针是在栈上分配存储的(指针也是 阅读全文
摘要:
主从复制的作用 1、做数据的热备,作为后备数据库,主数据库服务器故障后,可切换到从数据库继续工作,避免数据丢失。2、架构的扩展。业务量越来越大,I/O访问频率过高,单机无法满足,此时做多库的存储,降低磁盘I/O访问的频率,提高单个机器的I/O性能。3、读写分离,使数据库能支撑更大的并发。在报表中尤其 阅读全文
摘要:
字典树nb 参考链接: 【1】https://zhuanlan.zhihu.com/p/65208157 【2】https://zhuanlan.zhihu.com/p/65061096 阅读全文
摘要:
对于空类,编译器不会生成任何的成员函数,只会生成1个字节的占位符。 有时可能会以为编译器会为空类生成默认构造函数等,事实上是不会的,编译器只会在需要的时候生成6个成员函数:默认构造函数、默认拷贝构造函数、默认析构函数、默认赋值运算符 这四个是我们通常大都知道的。但是除了这四个,还有两个,那就是取址运 阅读全文