
工程实践
文章平均质量分 74
记录我在工作中的工程化实践内容,希望对其他人有一定的帮助
CodeBowl
一个靓仔!
展开
-
C++并发编程:线程安全链表
最近遇到这么一个问题,一个处理路径的函数,在多线程中被调用,我需要记录某个状态的路径,并在后续当再次处于某个状态时,从链表中将其取出。为了满足这个需求,用来存储的数据结构要满足: 1. 线程安全:防止在多线程中错误地对一个变量进行修改 2. 便于查询 3. 便于插入、删除 最终想来选择了线程安全的链表,同时备选的队列,但队列不满足便于查询。...原创 2022-07-24 14:43:45 · 2051 阅读 · 0 评论 -
C++调试内存泄漏
内存泄漏(memory leak) 是指由于疏忽或错误造成了程序未能释放掉不再使用的内存的情况。内存泄漏并非指内存在物理上的消失,而是应用程序分配某段内存后,由于设计错误,失去了对该段内存的控制,因而造成了内存的浪费。...原创 2022-06-20 23:27:58 · 616 阅读 · 0 评论 -
不要再用if/else和switch/case了,快使用“表驱动法”代替,面向对象思维,对修改关闭。
表驱动是一种编程模式,是一种将输入变量作为索引在表里查找直接的结果或者处理函数,而不是用很多的逻辑语句来进行判断(比如if-sle||switch_case).索引表可以是个数组、map或者其他高效率查找的数据结构。...原创 2022-06-13 23:08:27 · 835 阅读 · 0 评论 -
PC端本地存储方案,Windows和Mac双端通用方案
功能要求:缓存数据没有频繁的读写,存储服务端下发的数据,当数据有更新的时候,本地存储会进行更新,同时刷新内存。本地存储作为持久化储存方案,程序每次启动时会读取数据加载到内存,当数据有更新的时候,也会进行内存刷新。从需求解析:存储的特点是持久化、稳定、读写频率不高。方案预研方案一:sqlite3本地存储方案二:文件存储sqlite3本地存储考虑这个方案的原因是,sqlite是一个成熟的跨平台存储方案,比较稳定和成熟,且在依赖的项目中,已经使用了sqlite3来进行本地存储,且在落盘的时候就可以原创 2022-05-17 22:43:02 · 1031 阅读 · 0 评论 -
C++接口设计的心得体会
今天在模块接口设计的时候,对如何设计一个好的接口,产生了疑惑。遂请教了俩位师傅,得到了俩条建议,私以为十分有用!原创 2021-12-02 00:04:52 · 734 阅读 · 0 评论 -
在Windows上安装git
Git是由Linus花俩周时间开发出来的分布式版本控制系统,之前只运行在Linux系统上,后来被扩展到了多平台上。今天进行在Windows安装Git!下载地址在Windows上使用Git,可以从Git官网直接下载安装程序,然后按默认选项安装即可。...原创 2021-11-28 16:20:51 · 250 阅读 · 0 评论 -
工程实践:Windows迅捷开发,可以提升效率的一些小技巧
本专栏为工程实践,主要是作为小白在开发中,积累的心得,是在技术和语言层次上的一些感悟和技巧,记录下来,备忘!Windows开发Windows开发,客观地说,现在学习确实有点49年进国军的感觉了。一般而言,所谓的Windows开发,我认为有一个标准就是是否是在Windows平台上采用微软自己专有的技术,比如你用VC++/MFC/COM或者WinForm、WPF开发一个客户端程序,用WinSocket,IOCP开发服务器端程序,用http://ASP.NET开发网站服务程序,用Direct3D开发.原创 2021-11-19 23:11:51 · 1004 阅读 · 0 评论 -
工程实践:Windows包管理工具——VCPKG
工程实践:Windows包管理工具——VCPKG前言Windows C++开发使用第三方库使用第三方库存在的问题vcpkg的优点如何使用VCPKG总结前言作为推荐大家使用vcpkg来进行Windows开发,或者Windows、linux和mac跨平台开发的管理工具,熟练之后,可以大大提高效率!!!作为windows开发,推荐必会!Windows C++开发使用第三方库一般开发大型的Windows程序,都少不了使用开源的第三方库,例如我们要实现一个网络通讯的工程,自己实现一套的话,耗时耗力,还大概率原创 2021-11-19 22:51:39 · 770 阅读 · 0 评论 -
工程实践:到底要不要使用智能指针
前言写了很久的“C with class”,在接触到智能指针的时候,都有点欣喜若狂了,想的是,这下子不用再为new/delete头疼了,也不用担心内存泄漏了,但事实证明我太天真了。之前也学过modern cpp,甚至还总结过智能指针,但是看来没有实际的操作,空想还是太虚了!本文仅作新手经验所记,必不全面智能指针现状auto_ptr: 跟98的前辈say goodbyeunique_ptr:shard_ptr:我这个人擅长模仿学习,看见别人的代码里用的都是shared_ptr,所以在一段时间原创 2021-11-16 23:25:12 · 1029 阅读 · 1 评论 -
智能指针不是解决内存泄漏的万能良药
背景最近在重构一个模块,模块中的接口有指针参数,我想把他改成智能指针,凡是接口要保持不变,就很难修改。接口类似func(int ** p1),不知道怎么用shared_ptr代表。**然后我就进行了一系列骚操作!从而也发现了智能指针的不当使用带来的内存泄漏和悬空指针的问题。内存泄漏内存泄漏(MemoryLeak)是指程序中已动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。悬空指针在C/C++等语言中,悬空指针(Dangl原创 2021-11-16 22:22:04 · 871 阅读 · 0 评论 -
C++跨平台(三):进程间通讯(IPC)的技术选型
本系列继续记录,作为一个新人小白,在第一次接触C++跨平台(win、linux、mac)开发的经验和踩坑。前言在四个月前,我还是一名学生,开发一个功能,我的需求就是能跑就行,最多加一个没有bug。而现在,在一次次的开会中,我成为了憔悴的社会打工人,也明白了在代码开发前,更重要的是设计和架构,确定好大方向,后面的事情才能走在正确的道路上。开发一个功能,没有bug的运行自然是最低要求,但是往往在开发前,需要经过技术选型,选择一个最适合的方案,这几天有一个跨进程通信的需求,我们就使用什么方案也经过讨论.原创 2021-11-13 11:50:44 · 5917 阅读 · 0 评论 -
工程实践之路:C++接口设计中的工厂模型
工程实践之路:C++接口设计中的工厂模型设计模式之工厂模式为什么使用工厂模式1.工厂设计模式是为了将对象的创建与使用进行分离2.其他好处简单工厂模式工厂方法模式抽象工厂模式参考资料上一篇文章写了《工程实践:C++接口设计指北》主要写了用C++写第三库,如何设计接口的问题,其中用到了工厂模式,在此之前,一直不太明白《设计模式》在实际开发中的应用。现在正好被我逮到了,以此为例,深入学习一下!设计模式之工厂模式工厂顾名思义就是创建产品,根据产品是具体产品还是具体工厂可分为简单工厂模式和工厂方法模式,根原创 2021-10-30 22:27:49 · 309 阅读 · 0 评论 -
工程实践:C++接口设计指北
一般来说,有两种方法设计接口类。**第一种是PIMP方法,即Pointer to Implementation**,在接口类成员中包含一个指向实现类的指针,这样可以最大限度的做到接口和实现分离的原则。**第二种方法叫Object-Interface方法**,它的思想是采用C++的动态功能,实现类继承接口类,功能接口函数定义成虚函数。原创 2021-10-30 17:41:19 · 2119 阅读 · 0 评论