内存泄露检测神器 作者: nbboy 时间: 2020-08-05 分类: 软件架构,软件工程 评论 ###Summary 用非GC语言比如c/c++写程序的时候,内存泄露是非常让人头疼的,一个服务运行一段时间后莫名下线。在测试环境,我们有很多检测内存的方法,valgrind就是一个很犀利的工具。今天花了一点时间学习,最常用的就是检测内存泄露,命令也很简单: ```shell valgrind --tool=memcheck --leak-check=full ./program_name ``` ###Refs [Linux下几款C++程序中的内存泄露检查工具](https://blog.csdn.net/u012662731/article/details/78652651 "Linux下几款C++程序中的内存泄露检查工具") [内存泄漏检测工具valgrind神器](https://zhuanlan.zhihu.com/p/75416381 "内存泄漏检测工具valgrind神器")
设计模式之外观模式(二) 作者: nbboy 时间: 2019-08-11 分类: 软件架构,软件工程,设计模式 评论 ###简介 外观模式主要解决封装复杂逻辑的问题,也一定程度封装了变化的部分,对外提供一致的接口。具体实际中也用的比较多,比如Laravel框架中就用到外观模式去封装服务容器中底层类的 「静态代理」。我一般用在三方系统的接口封装上,比如三方接口封装不合理或者过于复杂,我就会用外观模式封装然后提供给内部系统使用。思想很简单,不多介绍了。 ###结构图和源码 借用一张图来表示下:  可以看到左边是复杂的具体实现类,右边下面就是外观类,其封装了左边的实现类。 具体实现可以看我的代码[study_design_pattern](https://github.com/x-debug/study_design_pattern "study_design_pattern"),在facade包下。
设计模式之简单工厂模式(一) 作者: nbboy 时间: 2019-06-07 分类: 软件架构,软件工程,设计模式 评论 ###简介 简单工厂模式就是用一个工厂函数封装具体的对象初始化过程,通过参数来控制需要具体初始化的对象。这里不容易变的部分是接口定义部分,比如例子中的Shape部分,容易变的部分是Rectangle,Circle等这些实现,要扩展的时候,根据需求增加不同的实现就可以做到无限扩展。 ###结构图与代码 用图表示大概是这样的:  可以看到,客户端在使用的时候,只需要调用工厂函数就可以创建具体实现,其依赖的也是接口。这就是针对接口去编程,而不是具体实现。 具体实现可以看我的代码[study_design_pattern](https://github.com/x-debug/study_design_pattern "study_design_pattern"),在simple_factory包下。