
事件驱动
Michael_Good
脚踏实地,不负时光!
展开
-
【消息中间件】什么是MQTT?优势是什么?
一种针对移动终端设备的基于TCP/IP的发布订阅协议,可以连接大量远程边缘设备(如传感器、控制设备)。特点是,可以保持长连接,具有一定的实时性。2、“至少1次”:发生消息重复,不关注。即,出现消息丢失后,发送者会进行发送多次,直至觉察到接收者接收到了,重复接收几个相同的消息,也不care。1、”至多1次”:发生消息丢失,不关注。即,发送者仅发送1次,接收者能不能收到,不care。3、“只有1次”:确保消息仅仅到达1次。使用发布订阅模式,提供一对多的消息发布,解除应用程序的耦合。发布者、订阅者、代理中心。原创 2024-12-16 09:36:39 · 356 阅读 · 0 评论 -
【C/C++】事件驱动架构中,高性能位移操作事件状态位的优势
会清除EVENT_ONE的状态,而不会影响其他标志的状态。原创 2024-12-14 11:35:36 · 915 阅读 · 0 评论 -
【C/C++】使用位移操作符定义枚举成员的性能优势,以及实践场景
在 C 或 C++ 中,使用位移操作符(原创 2024-12-14 11:26:45 · 797 阅读 · 0 评论 -
【架构设计】关于架构设计的一些思考
面向过程->面向对象->函数式编程。原创 2024-12-10 15:23:32 · 900 阅读 · 0 评论 -
【事件IO分类】什么是慢IO事件,什么是快IO事件?
在大家耳熟能详的事件驱动框架,比如libevent libev libuv等,其中都会对IO进行分类,从而更高效的进行处理,而不阻塞整体运行流程。就是IO阻塞时间较短,比如:本地文件操作。当然,这里,所说的快,也是相对而言。也存在文件操作阻塞时间很长的场景。就是IO会长时间阻塞,比如:DNS解析。原创 2024-09-06 11:53:12 · 470 阅读 · 0 评论 -
【架构设计】什么是语义分离?有什么优缺点?
语义分离(Semantic Separation)指在软件设计和架构中,将不同的功能、职责或概念明确地划分开来,使得它们在逻辑上和实现上保持独立。这种分离有助于提高代码的可读性、可维护性和可扩展性。语义分离通常涉及将系统分解为更小、更易于管理的部分,每个部分都有明确的职责和接口。原创 2024-08-27 15:23:02 · 315 阅读 · 0 评论 -
【架构设计】高性能定时器方案选型,以及适用场景
比如在Linux中,可以通过SIGALARM信号进行实现。显然,(1)开销太大了;(2)完全依赖于操作系统,无法进行管理;(3)SIGALARM信号最小粒度为秒级,粒度太大了,满足不了我们的需求。可以实现,当然问题也很明显:链表的插入效率较低,而且遍历超时事件时,需要遍历很长的链表,效率低,自然开销大。对比下来,满足需求,且性能OK。插入:O(logn);2.应用层开启单独线程+Sleep进行计时。确实实现起来简单,问题也很显然:性能开销大。为什么需要高性能定时器(适用场景)?原创 2024-08-22 16:37:54 · 177 阅读 · 0 评论 -
如何做好需求分析
最近对于做需求分析的一些思考总结:原创 2024-08-22 09:10:59 · 105 阅读 · 0 评论 -
【架构设计】模块化-面向接口编程
路由通信,虽然解决了耦合的问题,但是调用的方法都是静态的。比如:一个读卡的操作,业务层需要对它进行开关、暂停等操作,通过接口可以很好的返回一个服务控制器,然后直接进行相应的操作即可。通过路由通信,可以很好的解决模块间耦合,但是拿不到对象无法持续交互,并且需要序列化,而通过面向接口编程,可以很好的解决这一点,并且代码的可读性较高。但是面向接口又会存在一定的耦合性,也就是依赖了服务侧的API,但是对于收益来说还是值得的。核心思想是,先定义底层接口模块,也就是通信的协议与功能约定,是提供方实现对应的功能与能力。原创 2024-06-23 20:34:01 · 453 阅读 · 0 评论 -
【后端技术】Nginx配置文件基本说明和使用,亲测可行
Nginx 是一个高性能的 HTTP 和反向代理服务器,以及 IMAP/POP3 代理服务器。它以其高性能、稳定性、丰富的功能集、简单的配置和低资源消耗而闻名。配置文件的修改通常需要重启 Nginx 服务以使更改生效。在实际使用中,你可能需要根据自己的需求添加或修改配置。例如,如果你需要配置 SSL/TLS 加密通信,你可能需要添加。如果有错误,它会指出错误的位置和原因。相关的配置块,并指定证书和密钥文件的位置。如果你需要配置反向代理,你可能需要在。,但具体位置可能会根据你的操作系统和安装方式有所不同。原创 2024-06-09 20:34:26 · 241 阅读 · 0 评论 -
关于水平触发与边缘触发
水平触发时,客户端输入 8 个字符触发了一次读就绪事件,由于被监视文件上还有数据可读故一直返回读就绪,服务端 4 次循环每次都能取到 2 个字符,直到 8 个字符全部读完。边缘触发:关注点是变化,只有监视的文件上有数据变化发生(读操作关注有数据写进缓冲区,写操作关注数据从缓冲区取走),epoll_wait 才会返回。等客户端再输入一个字符串后,服务端关注到了数据的“变化”继续从缓冲区读接下来的 2 个字符“c”和”d”。水平触发(LT)和边缘触发(ET)是 epoll_wait 的 2 种工作模式。原创 2023-04-14 10:20:39 · 532 阅读 · 0 评论 -
【Linux 事件驱动模型】selet/epoll 里程碑意义记录
具体来说,当进程调用select/epoll系统调用时,内核会将进程的文件描述符集合复制到内核空间,并使用poll_wait函数将进程添加到每个文件描述符对应的等待队列中。当有事件发生时,内核会使用中断或轮询等机制来感知事件的发生,并将发生事件的文件描述符集合传递给select/epoll系统调用的核心函数,让它检查哪些文件描述符有事件发生。当中断发生时,内核会调用中断处理程序来处理事件,并将发生事件的文件描述符集合传递给select/epoll系统调用的核心函数。原创 2023-04-13 16:49:15 · 201 阅读 · 0 评论 -
C/C++时间驱动案例/Demo
这个程序会监听指定的端口,当有客户端连接时,将客户端的socket添加到epoll中,并等待事件。当有数据可读时,读取数据并回复相同的数据。当客户端关闭连接时,关闭socket并从epoll中删除。这个程序使用了非阻塞IO和事件驱动的编程模式,可以处理多个连接和并发读写。原创 2023-03-08 10:56:48 · 272 阅读 · 0 评论