作者:故事的小黄瓜
链接:https://www.nowcoder.com/discuss/436386
来源:牛客网
1. 线程池如何开启一个新线程?
2. 线程池初始化的步骤?
3. 线程池中线程状态?
4. Connect 函数与非阻塞?
5. Accept函数与三次握手关系?
6. 主线程与IO线程之间描述符传递?
7. TIME_WAIT时长?为什么?如何取消?
8. 报文的最大生存期与那些因素有关?
9 SO_REUSEPORT和SO_REUSEADDR的区别?
10. 如何实现日志系统?
11. 日志数据生成过快怎么解决?
12. 定时器实现?
13. 进程调度的方式有哪些?Linux中进程调度的方式?
14. 单进程与IO复用?
15. map的实现?与哈希表区别?
16. vector实现?
Include头文件的顺序:对于include的头文件来说,如果在文件a.h中声明一个在文件b.h中定义的变量,而不引用b.h。那么要在a.c文件中引用b.h文件,并且要先引用b.h,后引用a.h,否则汇报变量类型未声明错误。 双引号和尖括号的区别:编译器预处理阶段查找头文件的路径不一样。 对于使用双引号包含的头文件,查找头文件路径的顺序为: 1) 当前头文件目录 2) 编译器设置的头文件路径(编译器可使用-I显式指定搜索路径) 3) 系统变量CPLUS_INCLUDE_PATH/C_INCLUDE_PATH指定的头文件路径 对于使用尖括号包含的头文件,查找头文件的路径顺序为: 1) 编译器设置的头文件路径(编译器可使用-I显式指定搜索路径) 2) 系统变量CPLUS_INCLUDE_PATH/C_INCLUDE_PATH指定的头文件路径
为了解决循环引用导致的内存泄漏,引入了weak_ptr弱指针,weak_ptr的构造函数不会修改引用计数的值,从而不会对对象的内存进行管理,其类似一个普通指针,但不指向引用计数的共享内存,但是其可以检测到所管理的对象是否已经被释放,从而避免非法访问。
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
一行代码 return 1<<--number;
请你讲讲Redis的定时机制怎么实现的
参考回答:
Redis服务器是一个事件驱动程序,服务器需要处理以下两类事件:文件事件(服务器对套接字操作的抽象)和时间事件(服务器对定时操作的抽象)。Redis的定时机制就是借助时间事件实现的。
一个时间事件主要由以下三个属性组成:id:时间事件标识号;when:记录时间事件的到达时间;timeProc:时间事件处理器,当时间事件到达时,服务器就会调用相应的处理器来处理时间。一个时间事件根据时间事件处理器的返回值来判断是定时事件还是周期性事件
一个时间事件主要由以下三个属性组成:id:时间事件标识号;when:记录时间事件的到达时间;timeProc:时间事件处理器,当时间事件到达时,服务器就会调用相应的处理器来处理时间。一个时间事件根据时间事件处理器的返回值来判断是定时事件还是周期性事件。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)