![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
服务器
文章平均质量分 86
服务器模块
radixun
qwq
展开
-
【服务器学习】hook模块
hook实际上就是对系统调用API进行一次封装,将其封装成一个与原始的系统调用API同名的接口,应用在调用这个接口时,会先执行封装中的操作,再执行原始的系统调用API。hook技术可以使应用程序在执行系统调用之前进行一些隐藏的操作,比如可以对系统提供malloc()和free()进行hook,在真正进行内存分配和释放之前,统计内存的引用计数,以排查内存泄露问题。hook功能hook的目的是在不重新编写代码的情况下,把老代码中的socket IO相关的API都转成异步,以提高性能。hook实现。原创 2023-11-18 20:36:12 · 811 阅读 · 2 评论 -
【服务器学习】timer定时器模块
通过定时器可以实现给服务器注册定时事件,这是服务器上经常要处理的一类事件,比如3秒后关闭一个连接,或是定期检测一个客户端的连接状态。alarm()或setitimer(),这俩的本质都是先设置一个超时时间,然后等SIGALARM信号触发,通过捕获信号来判断超时套接字超时选项,对应SO_RECVTIMEO和SO_SNDTIMEO,通过errno来判断超时多路复用超时参数,select/poll/epoll都支持设置超时参数,通过判断返回值为0来判断超时。原创 2023-11-18 19:46:37 · 621 阅读 · 0 评论 -
【服务器学习】 iomanager IO协程调度模块
IO协程调度可以看成是增强版的协程调度。在前面的协程调度模块中,调度器对协程的调度是无条件执行的,在调度器已经启动调度的情况下,任务一旦添加成功,就会排队等待调度器执行。调度器不支持删除调度任务,并且调度器在正常退出之前一定会执行完全部的调度任务,所以在某种程度上可以认为,把一个协程添加到调度器的任务队列,就相当于调用了协程的resume方法。IO协程调度支持协程调度的全部功能,因为IO协程调度器是直接继承协程调度器实现的。原创 2023-11-08 23:27:08 · 853 阅读 · 1 评论 -
【服务器学习】scheduler协程调度模块
参考资料实现协程调度之后,可以解决前一章协程模块中子协程不能运行另一个子协程的缺陷,子协程可以通过向调度器添加调度任务的方式来运行另一个子协程。既然多线程可以提高协程调度的效率,那么,能不能把调度器所在的线程(称为caller线程)也加入进来作为调度线程呢?比如典型地,在main函数中定义的调度器,能不能把main函数所在的线程也用来执行调度任务呢?原创 2023-11-08 23:19:33 · 739 阅读 · 0 评论 -
【服务器】fiber协程模块
函数只有两个行为:调用与返回。一旦函数返回后,它在栈上所拥有的状态将被销毁。协程相比函数多了两个动作:挂起与恢复。当协程主动挂起时,它的控制权将转交给另一个协程,这时它所拥有的状态仍被保留着,另一个协程获取控制权后,在将来某个时间点也可能选择挂起,从而使原协程的控制权得以恢复,一旦协程像函数一样返回,它所拥有的状态将被销毁。协程是能暂停执行以在之后恢复的函数。原创 2023-11-04 14:44:03 · 158 阅读 · 1 评论 -
【服务器学习】thread线程模块
前置知识—>原创 2023-11-04 14:41:47 · 94 阅读 · 0 评论 -
【服务器】Log日志模块
Appender有单独的日志级别,可以自定义不同级别的日志,输出到不同的Appender,常用于将错误日志统一输出到一个地方。也就是说写一条日志,可以落到多个输出,并且每个输出的格式都可以不一样。管理所有的日志器,并且可以通过解析Yaml配置,动态创建或修改日志器相关的内容(日志级别,日志格式,输出落地点等等)日志事件的封装,将要写的日志,填充到LogEvent中。解析日志格式,将用户自定义的日志格式,解析为对应的FormatItem。日志格式器,执行日志格式化,负责日志格式的初始化。原创 2023-10-18 23:39:19 · 127 阅读 · 4 评论