![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
事件驱动
Michael_Good
脚踏实地,不负时光!
展开
-
【架构设计】高性能定时器方案选型,以及适用场景
比如在Linux中,可以通过SIGALARM信号进行实现。显然,(1)开销太大了;(2)完全依赖于操作系统,无法进行管理;(3)SIGALARM信号最小粒度为秒级,粒度太大了,满足不了我们的需求。可以实现,当然问题也很明显:链表的插入效率较低,而且遍历超时事件时,需要遍历很长的链表,效率低,自然开销大。对比下来,满足需求,且性能OK。插入:O(logn);2.应用层开启单独线程+Sleep进行计时。确实实现起来简单,问题也很显然:性能开销大。为什么需要高性能定时器(适用场景)?原创 2024-08-22 16:37:54 · 83 阅读 · 0 评论 -
如何做好需求分析
最近对于做需求分析的一些思考总结:原创 2024-08-22 09:10:59 · 40 阅读 · 0 评论 -
【架构设计】模块化-面向接口编程
路由通信,虽然解决了耦合的问题,但是调用的方法都是静态的。比如:一个读卡的操作,业务层需要对它进行开关、暂停等操作,通过接口可以很好的返回一个服务控制器,然后直接进行相应的操作即可。通过路由通信,可以很好的解决模块间耦合,但是拿不到对象无法持续交互,并且需要序列化,而通过面向接口编程,可以很好的解决这一点,并且代码的可读性较高。但是面向接口又会存在一定的耦合性,也就是依赖了服务侧的API,但是对于收益来说还是值得的。核心思想是,先定义底层接口模块,也就是通信的协议与功能约定,是提供方实现对应的功能与能力。原创 2024-06-23 20:34:01 · 328 阅读 · 0 评论 -
【后端技术】Nginx配置文件基本说明和使用,亲测可行
Nginx 是一个高性能的 HTTP 和反向代理服务器,以及 IMAP/POP3 代理服务器。它以其高性能、稳定性、丰富的功能集、简单的配置和低资源消耗而闻名。配置文件的修改通常需要重启 Nginx 服务以使更改生效。在实际使用中,你可能需要根据自己的需求添加或修改配置。例如,如果你需要配置 SSL/TLS 加密通信,你可能需要添加。如果有错误,它会指出错误的位置和原因。相关的配置块,并指定证书和密钥文件的位置。如果你需要配置反向代理,你可能需要在。,但具体位置可能会根据你的操作系统和安装方式有所不同。原创 2024-06-09 20:34:26 · 146 阅读 · 0 评论 -
关于水平触发与边缘触发
水平触发时,客户端输入 8 个字符触发了一次读就绪事件,由于被监视文件上还有数据可读故一直返回读就绪,服务端 4 次循环每次都能取到 2 个字符,直到 8 个字符全部读完。边缘触发:关注点是变化,只有监视的文件上有数据变化发生(读操作关注有数据写进缓冲区,写操作关注数据从缓冲区取走),epoll_wait 才会返回。等客户端再输入一个字符串后,服务端关注到了数据的“变化”继续从缓冲区读接下来的 2 个字符“c”和”d”。水平触发(LT)和边缘触发(ET)是 epoll_wait 的 2 种工作模式。原创 2023-04-14 10:20:39 · 398 阅读 · 0 评论 -
【Linux 事件驱动模型】selet/epoll 里程碑意义记录
具体来说,当进程调用select/epoll系统调用时,内核会将进程的文件描述符集合复制到内核空间,并使用poll_wait函数将进程添加到每个文件描述符对应的等待队列中。当有事件发生时,内核会使用中断或轮询等机制来感知事件的发生,并将发生事件的文件描述符集合传递给select/epoll系统调用的核心函数,让它检查哪些文件描述符有事件发生。当中断发生时,内核会调用中断处理程序来处理事件,并将发生事件的文件描述符集合传递给select/epoll系统调用的核心函数。原创 2023-04-13 16:49:15 · 136 阅读 · 0 评论 -
C/C++时间驱动案例/Demo
这个程序会监听指定的端口,当有客户端连接时,将客户端的socket添加到epoll中,并等待事件。当有数据可读时,读取数据并回复相同的数据。当客户端关闭连接时,关闭socket并从epoll中删除。这个程序使用了非阻塞IO和事件驱动的编程模式,可以处理多个连接和并发读写。原创 2023-03-08 10:56:48 · 212 阅读 · 0 评论