<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[CodeBowl的博客]]></title><description><![CDATA[学妹的工具人，C++开发误入数据开发，梦想30岁退休的靓仔就是我啦]]></description><link>https://blog.csdn.net/CodeBowl</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; CodeBowl]]></copyright><item><title><![CDATA[内存管理整理V1]]></title><link>https://blog.csdn.net/CodeBowl/article/details/130255107</link><guid>https://blog.csdn.net/CodeBowl/article/details/130255107</guid><author>CodeBowl</author><pubDate>Wed, 19 Apr 2023 22:34:19 +0800</pubDate><description><![CDATA[2023.04.19今天阅读《C专家编程》第七章 对内存的思考，结合小林codin网站的学习笔记及扩展。]]></description><category></category></item><item><title><![CDATA[一种轻量的“虚拟机”——Windows 沙盒模式]]></title><link>https://blog.csdn.net/CodeBowl/article/details/130141692</link><guid>https://blog.csdn.net/CodeBowl/article/details/130141692</guid><author>CodeBowl</author><pubDate>Thu, 13 Apr 2023 22:23:19 +0800</pubDate><description><![CDATA[相比虚拟机和第三方的沙盒软件，Windows Sandbox启用后仅占用100MB硬盘空间，还能与物理机安全地共享部分内存空间。简单来说就是易用、免费、不卡机！

由于要保证沙盒内的数据不泄露并影响物理系统，所有文件读写都经过了重定向，所以沙盒虚拟化对存储性能影响较大，建议用固态。

注：win10沙盒每次关闭都会自动清零]]></description><category></category></item><item><title><![CDATA[std::thread创建线程，使用std::ref()传递类对象参数]]></title><link>https://blog.csdn.net/CodeBowl/article/details/125959193</link><guid>https://blog.csdn.net/CodeBowl/article/details/125959193</guid><author>CodeBowl</author><pubDate>Sun, 24 Jul 2022 14:59:00 +0800</pubDate><description><![CDATA[stdref只是尝试模拟引用传递，并不能真正变成引用，在非模板情况下，stdref根本没法实现引用传递，只有模板自动推导类型时，ref能用包装类型reference_wrapper来代替原本会被识别的值类型，而reference_wrapper能隐式转换为被引用的值的引用类型。thread在使用类对象作为参数传递过程中，常常会出现多次拷贝构造的情况，理想中的情况是只需一次拷贝构造。stdref主要是考虑函数式编程（如stdbind）在使用时，是对参数直接拷贝，而不是引用。...]]></description><category></category></item><item><title><![CDATA[C++并发编程：线程安全链表]]></title><link>https://blog.csdn.net/CodeBowl/article/details/125958634</link><guid>https://blog.csdn.net/CodeBowl/article/details/125958634</guid><author>CodeBowl</author><pubDate>Sun, 24 Jul 2022 14:43:45 +0800</pubDate><description><![CDATA[最近遇到这么一个问题，一个处理路径的函数，在多线程中被调用，我需要记录某个状态的路径，并在后续当再次处于某个状态时，从链表中将其取出。
为了满足这个需求，用来存储的数据结构要满足：

 1. 线程安全：防止在多线程中错误地对一个变量进行修改
 2. 便于查询
 3. 便于插入、删除
 最终想来选择了线程安全的链表，同时备选的队列，但队列不满足便于查询。...]]></description><category></category></item><item><title><![CDATA[C++调试内存泄漏]]></title><link>https://blog.csdn.net/CodeBowl/article/details/125382275</link><guid>https://blog.csdn.net/CodeBowl/article/details/125382275</guid><author>CodeBowl</author><pubDate>Mon, 20 Jun 2022 23:27:58 +0800</pubDate><description><![CDATA[内存泄漏(memory leak) 是指由于疏忽或错误造成了程序未能释放掉不再使用的内存的情况。内存泄漏并非指内存在物理上的消失，而是应用程序分配某段内存后，由于设计错误，失去了对该段内存的控制，因而造成了内存的浪费。...]]></description><category></category></item><item><title><![CDATA[不要再用if/else和switch/case了，快使用“表驱动法”代替，面向对象思维，对修改关闭。]]></title><link>https://blog.csdn.net/CodeBowl/article/details/125269258</link><guid>https://blog.csdn.net/CodeBowl/article/details/125269258</guid><author>CodeBowl</author><pubDate>Mon, 13 Jun 2022 23:08:27 +0800</pubDate><description><![CDATA[表驱动是一种编程模式，是一种将输入变量作为索引在表里查找直接的结果或者处理函数，而不是用很多的逻辑语句来进行判断(比如if-sle||switch_case).索引表可以是个数组、map或者其他高效率查找的数据结构。...]]></description><category></category></item><item><title><![CDATA[PC端本地存储方案，Windows和Mac双端通用方案]]></title><link>https://blog.csdn.net/CodeBowl/article/details/124831840</link><guid>https://blog.csdn.net/CodeBowl/article/details/124831840</guid><author>CodeBowl</author><pubDate>Tue, 17 May 2022 22:43:02 +0800</pubDate><description><![CDATA[功能要求：缓存数据
没有频繁的读写，存储服务端下发的数据，当数据有更新的时候，本地存储会进行更新，同时刷新内存。
本地存储作为持久化储存方案，程序每次启动时会读取数据加载到内存，当数据有更新的时候，也会进行内存刷新。
从需求解析：存储的特点是持久化、稳定、读写频率不高。
方案预研
方案一：sqlite3本地存储
方案二：文件存储
sqlite3本地存储
考虑这个方案的原因是，sqlite是一个成熟的跨平台存储方案，比较稳定和成熟，且在依赖的项目中，已经使用了sqlite3来进行本地存储，且在落盘的时候就可以]]></description><category></category></item><item><title><![CDATA[Windows：如何将普通进程注册为服务进程]]></title><link>https://blog.csdn.net/CodeBowl/article/details/122333765</link><guid>https://blog.csdn.net/CodeBowl/article/details/122333765</guid><author>CodeBowl</author><pubDate>Wed, 05 Jan 2022 22:53:11 +0800</pubDate><description><![CDATA[最近遇到了一个需求：
需要把普通进程封装为服务进程，将积累的几种方案记录下来

Windows：如何将普通进程注册为服务进程进程和服务将进程改为服务一、通过代码来实现二、利用VS将窗口服务程序改为Windows服务于后台运行三、sc命令四、Instsrv.exe+Srvany.exe五、nssm注册简单介绍使用步骤总结
进程和服务

首先来了解一下什么是服务和进程

进程是指在系统中正在运行的一个应用程序；线程是系统分配处理器时间资源的基本单元，或者说进程之内独立执行的一个单元。对于操 作系统而言，其调度.]]></description><category></category></item><item><title><![CDATA[std::string自带“/0”吗？怎么将string拷贝到char*?]]></title><link>https://blog.csdn.net/CodeBowl/article/details/122204789</link><guid>https://blog.csdn.net/CodeBowl/article/details/122204789</guid><author>CodeBowl</author><pubDate>Tue, 28 Dec 2021 22:59:03 +0800</pubDate><description><![CDATA[std::string自带“/0”吗？怎么将string拷贝到char*?结论将string拷贝到char*字符串
结论
先说结论，string时不带“/0”的。
这个问题在网上一直有很多种说法，我之前也一直认为string的结尾是自带“/0"的，但是在进行string拷贝到char*字符串的时候，发现了不对劲！
我猜测的解释：

c语言用char*指针作为字符串时，在读取字符串时需要一个特殊字符0来标记指针的结束位置，也就是通常认为的字符串结束标记。
而c++语言则是面向对象的，长度信息直接被存储在了对象]]></description><category></category></item><item><title><![CDATA[C++设计模式：抽象工厂模式]]></title><link>https://blog.csdn.net/CodeBowl/article/details/121878721</link><guid>https://blog.csdn.net/CodeBowl/article/details/121878721</guid><author>CodeBowl</author><pubDate>Sat, 11 Dec 2021 21:04:10 +0800</pubDate><description><![CDATA[抽象工厂模式是一种创建型设计模式， 它能创建一系列相关的对象， 而无需指定其具体类。]]></description><category></category></item><item><title><![CDATA[C++接口设计的心得体会]]></title><link>https://blog.csdn.net/CodeBowl/article/details/121667074</link><guid>https://blog.csdn.net/CodeBowl/article/details/121667074</guid><author>CodeBowl</author><pubDate>Thu, 02 Dec 2021 00:04:52 +0800</pubDate><description><![CDATA[今天在模块接口设计的时候，对如何设计一个好的接口，产生了疑惑。
遂请教了俩位师傅，得到了俩条建议，私以为十分有用！]]></description><category></category></item><item><title><![CDATA[在Windows上安装git]]></title><link>https://blog.csdn.net/CodeBowl/article/details/121584558</link><guid>https://blog.csdn.net/CodeBowl/article/details/121584558</guid><author>CodeBowl</author><pubDate>Sun, 28 Nov 2021 16:20:51 +0800</pubDate><description><![CDATA[Git是由Linus花俩周时间开发出来的分布式版本控制系统，之前只运行在Linux系统上，后来被扩展到了多平台上。
今天进行在Windows安装Git！
下载地址
在Windows上使用Git，可以从Git官网直接下载安装程序，然后按默认选项安装即可。


...]]></description><category></category></item><item><title><![CDATA[用RAII的思想去管理Windows的读写锁SRWLock]]></title><link>https://blog.csdn.net/CodeBowl/article/details/121504764</link><guid>https://blog.csdn.net/CodeBowl/article/details/121504764</guid><author>CodeBowl</author><pubDate>Tue, 23 Nov 2021 23:02:03 +0800</pubDate><description><![CDATA[前言
最近对C++的RAII(资源申请初始化)，又有了新的理解。
我们C++中使用一个资源(例如 内存)的步骤：

申请资源
使用资源
释放资源

简述一下RAII：
就是可以自动回收资源，将资源封装成对象。
关键在于：
变量的生命周期结束后，会自动释放变量。
例如一个变量是局部变量，存储在栈上，那么当该函数结束后，这个变量就已经被释放掉了。
那么，当变量是类变量的时候，当该类对象变量生命周期结束后，应该调用析构函数释放掉该资源！
生命周期
局部变量：存储在栈上，生命周期结束后，由栈释放。
全局或静态变量：]]></description><category></category></item><item><title><![CDATA[Visual Studio 2022 正式版下载教程]]></title><link>https://blog.csdn.net/CodeBowl/article/details/121446690</link><guid>https://blog.csdn.net/CodeBowl/article/details/121446690</guid><author>CodeBowl</author><pubDate>Sat, 20 Nov 2021 23:55:57 +0800</pubDate><description><![CDATA[visual studio的大版本vs2022终于在最近更新了，马上下载来试用一下！
visual studio 2022 简介
https://visualstudio.microsoft.com/zh-hans/vs/
可以通过上面这个网址去看一下简介：
下面的三个是最重量级的更新

我认为对开发者最友好的应该是它的智能编码了，还有支持了最新的C++20标准。
下载地址
https://visualstudio.microsoft.com/zh-hans/vs/
安装教程

选择下载版本，这里我选择的是]]></description><category></category></item><item><title><![CDATA[工程实践：Windows迅捷开发，可以提升效率的一些小技巧]]></title><link>https://blog.csdn.net/CodeBowl/article/details/121432679</link><guid>https://blog.csdn.net/CodeBowl/article/details/121432679</guid><author>CodeBowl</author><pubDate>Fri, 19 Nov 2021 23:11:51 +0800</pubDate><description><![CDATA[本专栏为工程实践，主要是作为小白在开发中，积累的心得，是在技术和语言层次上的一些感悟和技巧，记录下来，备忘！

Windows开发
Windows开发，客观地说，现在学习确实有点49年进国军的感觉了。

一般而言，所谓的Windows开发，我认为有一个标准就是是否是在Windows平台上采用微软自己专有的技术，比如你用VC++/MFC/COM或者WinForm、WPF
开发一个客户端程序，用WinSocket，IOCP开发服务器端程序，用http://ASP.NET开发网站服务程序，用Direct3D开发.]]></description><category></category></item><item><title><![CDATA[工程实践：Windows包管理工具——VCPKG]]></title><link>https://blog.csdn.net/CodeBowl/article/details/121432479</link><guid>https://blog.csdn.net/CodeBowl/article/details/121432479</guid><author>CodeBowl</author><pubDate>Fri, 19 Nov 2021 22:51:39 +0800</pubDate><description><![CDATA[工程实践：Windows包管理工具——VCPKG前言Windows C++开发使用第三方库使用第三方库存在的问题vcpkg的优点如何使用VCPKG总结
前言
作为推荐大家使用vcpkg来进行Windows开发，或者Windows、linux和mac跨平台开发的管理工具，熟练之后，可以大大提高效率！！！
作为windows开发，推荐必会！
Windows C++开发使用第三方库
一般开发大型的Windows程序，都少不了使用开源的第三方库，例如我们要实现一个网络通讯的工程，自己实现一套的话，耗时耗力，还大概率]]></description><category></category></item><item><title><![CDATA[误入歧途的COM之旅（1）：为什么我说是误入歧途]]></title><link>https://blog.csdn.net/CodeBowl/article/details/121412617</link><guid>https://blog.csdn.net/CodeBowl/article/details/121412617</guid><author>CodeBowl</author><pubDate>Thu, 18 Nov 2021 23:58:13 +0800</pubDate><description><![CDATA[误入歧途的COM之旅（1）前言为什么将误入歧途呢？**COM历史**com简介com设计的出发点com的坑说说com的优点最后放一点com的争论贴总结
前言
首先此com非彼com（www.com），而是Windows的com机制！

最近在项目中遇到了com相关的问题，说起来就离谱，我们要实现一个动态链接库提供服务，但是调用方是用com机制去调用的，并且要求这个调用方exe不能修改，也就是我要实现适应com接口去实现一个dll。
但是更离谱的是，这个动态库应该是跨平台的，同时支持com和跨平台，咨询了好多]]></description><category></category></item><item><title><![CDATA[工程实践：到底要不要使用智能指针]]></title><link>https://blog.csdn.net/CodeBowl/article/details/121367438</link><guid>https://blog.csdn.net/CodeBowl/article/details/121367438</guid><author>CodeBowl</author><pubDate>Tue, 16 Nov 2021 23:25:12 +0800</pubDate><description><![CDATA[前言
写了很久的“C with class”，在接触到智能指针的时候，都有点欣喜若狂了，想的是，这下子不用再为new/delete头疼了，也不用担心内存泄漏了，但事实证明我太天真了。
之前也学过modern cpp，甚至还总结过智能指针，但是看来没有实际的操作，空想还是太虚了！
本文仅作新手经验所记，必不全面
智能指针现状
auto_ptr: 跟98的前辈say goodbye
unique_ptr：
shard_ptr:

我这个人擅长模仿学习，看见别人的代码里用的都是shared_ptr，所以在一段时间]]></description><category></category></item><item><title><![CDATA[智能指针不是解决内存泄漏的万能良药]]></title><link>https://blog.csdn.net/CodeBowl/article/details/121366772</link><guid>https://blog.csdn.net/CodeBowl/article/details/121366772</guid><author>CodeBowl</author><pubDate>Tue, 16 Nov 2021 22:22:04 +0800</pubDate><description><![CDATA[背景
最近在重构一个模块，模块中的接口有指针参数，我想把他改成智能指针，凡是接口要保持不变，就很难修改。
接口类似func(int ** p1)，不知道怎么用shared_ptr代表。**
然后我就进行了一系列骚操作！
从而也发现了智能指针的不当使用带来的内存泄漏和悬空指针的问题。
内存泄漏

内存泄漏（Memory
Leak）是指程序中已动态分配的堆内存由于某种原因程序未释放或无法释放，造成系统内存的浪费，导致程序运行速度减慢甚至系统崩溃等严重后果。

悬空指针
在C/C++等语言中，悬空指针（Dangl]]></description><category></category></item><item><title><![CDATA[C++跨平台(四)：ZeroMQ的简单示例]]></title><link>https://blog.csdn.net/CodeBowl/article/details/121311357</link><guid>https://blog.csdn.net/CodeBowl/article/details/121311357</guid><author>CodeBowl</author><pubDate>Sat, 13 Nov 2021 23:32:43 +0800</pubDate><description><![CDATA[跨平台的IPC：ZeroMQ学习前言ZeroMQ是什么本文要做的事情实验开始！！！！一、获取ZeroMQ源码二、构建ZeroMQvs配置简单的Server\Client实验结果参考资料
前言
因为在开发中需要使用zmq来进行跨平台的进程间通信需求的开发，故此学习。
ZeroMQ是什么
ZeroMQ官网
ZeroMQ C++ 版GitHub地址
以下是它对自己的介绍：
总结一下：
ZMQ看起来像是一个嵌入式网络连接库，但实际上是一个并发框架。框架提供的套接字可以满足在多种协议之间传输原子信息，如线程间、进程间]]></description><category></category></item></channel></rss>