
设计模式
Michael_Good
脚踏实地,不负时光!
展开
-
【架构设计】高性能定时器方案选型,以及适用场景
比如在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 评论 -
【设计模式】观察者模式与责任链模式异同点
综上所述,责任链模式适用于处理复杂的请求处理流程,而观察者模式适用于实现一对多的通知机制。在实际应用中,应根据具体的需求选择适合的设计模式。责任链模式和观察者模式都是常见的设计模式,它们都可以用于解耦和增强代码的可维护性。原创 2023-05-23 20:57:11 · 864 阅读 · 0 评论 -
【设计模式】C语言使用共享内存和信号量,完美实现生产者与消费者模式
这种模式的优点是可以实现生产者和消费者之间的解耦,使得它们可以独立地进行操作,从而提高了系统的并发性和可扩展性。在生产者进程中,当共享内存非满时,生产者将 item 放入共享内存,并增加 full 信号量的值;在消费者进程中,当共享内存非空时,消费者从共享内存中取出一个项目,并增加 empty 信号量的值。由于信号量的特性,当信号量的值为 0 时,调用。总之,只要存在生产者和消费者之间的数据交换,就可以考虑使用生产者和消费者模式来实现。在该示例中,我们使用了共享内存和信号量来实现生产者和消费者模式。原创 2023-05-06 17:24:49 · 1268 阅读 · 0 评论 -
C语言单例模式-实现高性能配置管理器
代码中,使用了单例模式来创建配置管理器对象,保证了整个程序中只有一个配置管理器对象。配置管理器中包含了配置项数组、配置项数量、互斥锁等成员,通过这些成员来实现配置文件的读取和配置项的获取。在主函数中,获取了一个配置项的值,并打印出来,最后销毁互斥锁、释放内存。C语言单例模式-实现高性能配置管理器。原创 2023-04-06 17:57:35 · 458 阅读 · 0 评论 -
C语言单例模式-实现高性能日志管理器
在主函数中,设置了日志级别为DEBUG,并写入了5条不同级别的日志,最后关闭日志文件、销毁互斥锁、释放内存。日志管理器中包含了日志文件指针、日志级别、互斥锁等成员,通过这些成员来实现日志的写入和级别控制。代码中,使用了单例模式来创建日志管理器对象,保证了整个程序中只有一个日志管理器对象。C语言单例模式-实现高性能日志管理器。原创 2023-04-06 17:54:11 · 923 阅读 · 0 评论 -
C语言-单例模式实现线程池
在主函数中,提交了10个任务,每个任务都是一个简单的打印数字的函数,最后等待所有任务执行完毕后销毁线程池。线程池中包含了任务队列、工作线程数组、互斥锁、条件变量等成员,通过这些成员来实现任务的提交和执行。该代码中,使用了单例模式来创建线程池对象,保证了整个程序中只有一个线程池对象。C语言单例模式实现线程池。原创 2023-04-06 17:44:13 · 407 阅读 · 0 评论 -
C++ 使用抽象类实现接口
使用抽象类实现接口的好处在于可以实现多态性,即不同的对象可以使用相同的接口,从而提高代码的可重用性和灵活性。实现多态性:不同的对象可以使用相同的接口,从而可以在运行时动态地选择不同的实现类。提高代码的灵活性:接口可以被扩展,从而可以在不修改原有代码的情况下增加新的实现类。提高代码的可重用性:接口可以被多个实现类共享,从而避免了重复编写相同的代码。提高代码的可读性:接口定义了类的行为,从而可以更清晰地了解代码的功能和结构。总之,使用抽象类实现接口可以使代码更加模块化、可重用、灵活和易于维护。原创 2023-03-07 16:11:09 · 304 阅读 · 0 评论 -
设计模式-观察者模式-C实现(已亲测)
Subject 接口包括一个观察者列表和三个方法:attach 用于将观察者添加到列表中,detach 用于将观察者从列表中移除,notify 用于通知所有观察者状态发生了改变。在 main 函数中,我们创建了一个被观察者和两个观察者,然后将这两个观察者添加到被观察者的观察者列表中。接着,我们调用了被观察者的 notify 方法,通知所有观察者状态发生了改变,并输出了观察者接收到的数据。最后,我们将一个观察者从列表中移除,再次调用 notify 方法,观察到只有一个观察者接收到了数据。原创 2023-03-06 10:59:58 · 312 阅读 · 0 评论 -
Windows如何进行冷注入?如何冷注入后不被内存检测?如何混淆加密DLL?【已亲测】
混淆 DLL:可以使用混淆技术来隐藏 DLL 的真实内容,从而避免被检测到。在 Windows 中,冷注入本身并不会被内存检测所发现,因为它是一种将 DLL 注入到目标进程中的方法,而不需要启动目标进程。避免使用常见的注入函数:一些杀毒软件和安全软件会监测常见的注入函数,如 CreateRemoteThread、SetWindowsHookEx 等,因此可以尝试使用其他未被广泛使用的注入函数。加密和混淆 DLL:可以使用加密和混淆技术来隐藏 DLL 的真实内容,从而避免被检测到。原创 2023-03-04 11:28:17 · 1024 阅读 · 0 评论 -
理解时序图
理解时序图原创 2023-01-03 11:31:20 · 379 阅读 · 0 评论