自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(680)
  • 收藏
  • 关注

原创 C++17 新特性

一个用于解构初始化的提案,允许编写 auto [ x, y, z ] = expr;,其中 expr 的类型是一个类似元组的对象,其元素将绑定到变量 x、y 和 z(这些变量由该构造声明)。类似元组的对象包括 std::tuple、std::pair、std::array 和聚合结构。原文链接:https://blog.youkuaiyun.com/qq_29426201/article/details/147447716。

2025-08-17 16:30:02 140

原创 pair之于vector、queue(vector<pair<int,int>>)

vector:的这种用法。map:会对插入的元素。

2025-08-17 12:17:30 130

原创 stringstream + getline()实现字符串分割

【代码】stringstream + getline()实现字符串分割。

2025-08-16 18:51:20 143

转载 为何modern C++推荐用make_shared,而不是直接new

虽然使用new直接创建对象并没有错,但提供了更高效、更安全的方式来构造shared_ptr。它不仅优化了内存分配、减少了内存泄漏的风险,还能提升缓存的性能。对于大多数情况下,尤其是常规的 C++ 开发,推荐优先使用。除非你有特殊需求,比如需要自定义删除器或者自定义内存管理,这时可以考虑使用new。简单来说,不仅让代码更简洁,还能提高性能和安全性,是现代 C++ 编程中管理动态内存的首选工具。

2025-07-29 13:23:11 52

原创 结合项目阐述 设计模式:单例、工厂、观察者、代理

C++17及之后可编译。

2025-07-28 22:22:57 253

原创 SGI-STL空间配置器

主要负责管理,其核心流程框架分为以下关键部分:功能:1、内存分配与释放2、对象构造与析构newdelete就是内存分配与释放=》内存池管理(malloc当空间申请超过128字节时,自动切换至一级配置器处理。‌。

2025-07-27 11:40:27 658

原创 内存 管理

1、2、3、4、

2025-07-25 18:00:47 293

原创 C++线程池执行步骤分析,总结线程池流程

1、构造函数中创建线程,并添加到线程池(构造函数返回时,线程自动启动,并停在等待wait:从线程池取出一个任务处);2、主线程中添加任务,到任务队列。并用“条件变量”通知一个线程,从线程池取出一个任务;3、取出任务后,执行线程的任务函数 =》回调添加的“实际的线程函数”;4、主线程执行完,return返回 =》调用线程池析构函数;5、“条件变量”通知所有线程停止,使得线程循环退出,并等待所有线程完成任务;6、主线程main结束。

2025-07-20 12:30:04 198

原创 C++ std::thread线程类 相关问题、函数总结

特性说明构造即启动线程在创建时立即开始执行移动语义线程所有权可转移,不可复制必须在线程析构前调用,否则程序终止参数传递默认值传递,引用需用std::ref,大对象用std::move异常隔离线程内异常不会传播到主线程RAII模式推荐使用包装类管理线程生命周期正确使用始终管理线程生命周期(join/detach)谨慎处理共享数据(使用同步原语)避免线程间悬垂引用考虑性能影响和线程创建开销优先使用高级抽象(如std::async)简化代码。

2025-07-19 22:36:10 727

原创 线程池ThreadPool封装测试

【代码】线程池ThreadPool封装测试。

2025-07-18 14:38:41 206

原创 线程池 和 IO复用(IO模型),是2个完全不相关的概念吗?

两者属于不同层级的技术(线程管理 vs IO模型),但存在互补关系。选择取决于业务特性:IO密集型优先考虑多路复用,CPU密集型适合线程池,混合型场景可组合使用。

2025-07-18 11:07:44 262

转载 多线程间同步之:事件Event

下面对这个触发一个事件脉冲PulseEvent ()写一个例子,主线程启动7个子线程,其中有5个线程Sleep(10)后对一事件调用等待函数(称为快线程),另有2个线程Sleep(100)后也对该事件调用等待函数(称为慢线程)。而不论手动置位事件还是自动置位事件,那2个慢线程由于Sleep(100)所以会错过事件脉冲,因此慢线程都会进入等待状态而无法顺利执行下去。事件Event内部它包含一个使用计数(所有内核对象都有),一个布尔值表示是手动置位事件还是自动置位事件,另一个布尔值用来表示事件有无触发。

2025-07-17 18:07:02 31

原创 多线程间同步之:信号量Semaphore

在对信号量调用等待函数时,等待函数会检查信号量的当前资源计数,如果大于0(即信号量处于触发状态),减1后返回让调用线程继续执行。第三个参数表示名称,不同进程中的各线程可以通过名称来确保它们访问同一个信号量。第三个参数可以用来传出先前的资源计数,设为NULL表示不需要传出。第四个参数表示信号量的名称,传入NULL表示匿名信号量。第二个参数表示增加个数,必须大于0且不超过最大资源数量。第二个参数表示信号量句柄继承性,一般传入TRUE即可。可以看出来,信号量也可以解决线程之间的同步问题。

2025-07-17 17:46:35 519

原创 Winsock2接口使用

在recv之前,使用"IO复用(select/poll)\IOCP模型" + 线程池=》可以提高效率!是Windows平台上用于网络通信的API库,它提供了丰富的函数和数据结构用于处理TCP/IP协议族。5.等待客户端连接accept(返回一个新建立连接的套接字)8.释放winsocket库资源WSACleanup。6.接收/发送数据recv/send。7.关闭套接字closesocket。3.绑定本地IP和本地端口bind。2.创建监听套接字Socket。4.监听套接字listen。

2025-07-17 15:13:29 168

原创 VS中没有x64平台问题:为VS2005添加X64编译平台

完成之后,重新打开vs项目:就会出现x64平台!原因:vs安装的时候,没有安装x64编译环境!

2025-07-15 20:52:09 220

原创 一定要会画 list节点指针指向

目的:在分析第2行代码的指针指向时,不要错误的认为成(第1行代码变更前的指向)。实际可能在第1行代码变更时,就改变了原有的指针指向!3、后面的每一行代码,都依托于“前方代码 指针变更后的结果”!一定要逐行进行分析!1、list节点前后2个节点,共计4个指针的指向问题!a:是节点2的前驱节点的后继指针;d:是节点2的后继节点的前驱指针;之后,才能更新指针的指向!b:是节点2的前驱指针;c:是节点2的后继指针;2、首要的是:搞清楚。

2025-07-05 11:40:31 163

原创 类型萃取 编译报错问题:typedef _A::size_type size_type;

1、模板类型T,在没有实例化的时候不能确定其类型。根据编译错误信息,加一个typename前缀即可。

2025-07-05 10:41:55 219

原创 架构、框架、设计模式 区分

微服务框架‌,代表框架‌:Spring Boot(Java)、Express.js(Node.js)。‌MVC衍生架构模式:包括MVVM、MVP、MVI、VIPER等衍生架构模式;假设C/S + MVC,编码层面可以用某些设计模式,如:“单例模式”,也可以不用!2、从概念的广泛性而言,架构(C/S, B/S)> MVC框架 > 设计模式;如:设计一个软件,首先可以知道是C/S 还是B/S部署;假设是C/S,那么可以采用MVC模式,也可以不采用;常见架构:C/S, B/S;

2025-07-03 16:17:04 193

原创 借助AI总结规律:分析、归纳、总结出规律比人强!

2、对于算法题,有些提醒“描述的很复杂”,无法得出有效结论!deepseek总结出如下规律!人的归纳总结能力不足:难以将 复杂问题简化、抽象,无法得出有效结论!用AI帮忙总结规律!然后,自己归纳保存!

2025-06-17 14:24:10 108

转载 std::list 的容器类中:友元 friend class iterator,有什么作用?

在这个例子中,如果 MyList::Node 是 private 的,并且 iterator 不是 MyList 的友元,那么 iterator 中的 current_node->data 和 current_node->next 将无法编译,因为它试图访问私有成员。是一种在保持容器类封装性的同时,允许其紧密耦合的迭代器类访问必要内部细节的有效方式。如果 MyList 的节点及其成员是 private 的,那么一个外部的 iterator 类将无法直接访问它们来执行其职责(如获取数据、移动到下一个节点)。

2025-06-16 17:48:14 38

原创 学习C++模版的神器:CppInsights

CppInsights是一个强大的工具,它通过展示C++代码的底层实现,极大地增强了开发者对C++语言的理解。随着C++标准的不断演进,CppInsights的功能也在不断扩展,未来将为开发者提供更多的支持和帮助。CppInsights正是在这一背景下应运而生的工具,它通过展示C++代码的底层实现,帮助开发者更好地理解C++代码的工作机制。代码审查和维护:CppInsights可以帮助开发者在代码审查过程中更清晰地理解代码的行为,特别是在处理复杂的模板和隐式代码生成时。2、什么是CppInsights?

2025-06-03 13:39:44 837

原创 算法技巧 整理:滑动窗口

1、滑动窗口算法: 本算法通过维护一个动态变化的窗口,能够在 O(n) 时间复杂度内找到最长的符合条件的区间。

2025-05-06 21:45:53 248

原创 加载ko驱动模块:显示Arm版本问题解决!

开始以为是内核zImage\dtb文件、根文件系统版本不统一导致的!更换了好几个linux版本测试,发现还是不行!后面发现是:menuconfig问题!

2025-05-01 20:53:33 719

原创 Visual Studio 自动生成:C++代码“类图“(QT项目也可以)

前几天学习了UML类图的基本知识,见文档UML类图快速掌握,但是手工绘制还是比较繁琐,本文记录了Visual Studio 2022自动生成C++代码类图的操作方法,可极大提高工作效率。文档记录的工具版本Visual Studio 2015(导入QT5.12.9版本pro项目)。

2025-04-29 18:17:15 759

原创 Python语法

1、

2025-04-29 15:42:28 112

转载 cl : 命令行 warning D9030: “/Gm”与多处理不兼容;忽略 /MP 开关

其中/Gm和/MP都是cl.exe命令行参数,参见http://blog.youkuaiyun.com/lijie45655/article/details/6730885。此时/MP 开关被关闭,不能使用多线程编译,生成速度又会变得巨慢无比,/Gm是最小生成,解决方法是打开项目属性页,把启用最小生成设为否。原文链接:https://blog.youkuaiyun.com/fly2leo/article/details/8229183。cl : 命令行 warning D9030: “/Gm”与多处理不兼容;操作与多处理不兼容;

2025-04-28 18:07:51 83

原创 驱动 开发

后面的“4.1.15”,这里要根据你所使用的 Linux 内核版本来设置,比如 ALPHA 开发板现在用的是 4.1.15 版本的 Linux 内核,因此就是“/lib/modules/4.1.15”。不然挂载驱动的时候,会报错(不一致)!uboot、linux内核(zImage\dtb)、根文件系统rootfs,可以在保留另外2个同时,随意替换其中的1个(在开发这1个的时候,可以找另外2个配合,做到随时随地开发/替换任意1个。但是,如果要把lcd驱动问题解决,需要注意各个板子型号特征量的不同,分别设置。

2025-04-21 10:29:27 425

原创 数字 电路

1.

2025-04-18 14:38:15 105

转载 UML建模图(类图)

原文链接:https://blog.youkuaiyun.com/m0_67656158/article/details/1431782101. 前言来理一理我们前面走过的【软件工程】学习之旅,来帮助大家更好的搞清楚软件工程学习思路。软件工程是什么首先定义软件工程的概念,解释其重要性和目标。要通过系统化(系统定界方法)、工程化方法(引入软件开发过程)来解决软件工程问题说明软件工程面临的挑战,并引入系统化和工程化方法作为解决方案。

2025-04-14 11:33:29 183

转载 看懂电路图

C31起到的是增加稳定系数的功能,由于电容两端电压不能突变,假设单片机的功耗短暂的增加了一下,我们不希望这个信号影响到AMS1117的输出电压,因为AMS1117有一定的反应时间,如果没有这个电容,那么IC就因为很小的波动而持续输出高电压或低电压,不稳定的电源对单片机的伤害还是很大的。AMS1117-3.3是在单片机电源中极其常用的一款贴片IC,能把5V的电压转换成3.3V的电压,VCC5和一般接地符号(倒三角)来自于5V的供电,C30接在VCC5和接地符号之间,起到了滤波的效果。

2025-04-11 15:45:53 72

原创 使用VS2022远程调试Linux项目问题

2.2 原因是自己创建的是一个“生成文件项目”。而这类项目 配置类型是“生成文件”,不是.out类型!所以一直无法生产.out可执行文件!当修改为“应用程序(.out)”之后,就可以生成可执行文件了!而且属性页的显示也变化了!2.1 c++语言格式 正确、远程也没有问题!2、搞了很久,发现是自己的一个疏漏!

2025-04-04 17:24:04 402

原创 VS2022中按照免费使用的AI助手Fitten code

2、VS2022扩展中直接搜索,下载按照。之后要关闭,重新打开VS2022才能使用。1、VS版本要19及其以后,这里可以从网上搜索,看一下需要新版本支持。

2025-04-04 11:34:27 627

原创 VS2022远程调试Linux程序

实际是:代码还是先部署在Windows中VSStudio项目中,之后编译的时候,会自动将这些“源码”复制一份到Linux的远程项目文件夹内!4.1 打开VS软件 ,打开软件上方菜单栏的【工具】->【选项】, 然后鼠标下翻滚选择【跨平台】->【连接管理器】->[添加]菜单栏上的【工具】->【选项】->【跨平台】->【连接管理器】->【远程连接标头管理器 ->【下载】注意:勾选的时候,要勾选下方的选项,才能调试Linux环境下运行的程序!IP】、【用户名】、【密码】,之后点击“连接”,之后选择“是”。

2025-04-04 11:24:12 974

原创 并发模型之事件驱动模型:其中的之一的Reactor模型

这种方式,服务器端使用一个线程基于多路复用就完成了所有的 IO 操作(包括连接,读数据、业务处理、写数据等),没有多线程间通信、竞争的问题,实现简单。这虽然是"传统"的处理方式,但是也是最经典的IO线程模型。这种模型下,Reactor线程只负责处理所有的事件的监听和响应(数据读、写),而不参与数据的业务处理(数据编解码、逻辑处理)。操作系统内核收到用户进程发起的请求后,从I/O设备读取数据到kernel buffer中,再将buffer中的数据拷贝到用户进程的地址空间,用户进程获取到数据后返回给客户端。

2025-03-30 15:21:22 605

原创 IO模型之于并发编程模型、并发模型之于架构模式

‌:利用操作系统的进程模型来实现并发。缺点是创建进程的开销高,且上下文切换的开销也大。线程比进程创建的系统开销小,但线程间通信复杂,需要解决竞态条件问题。‌:协程在用户态进行调度,避免了线程创建和上下文切换的开销,适合高并发场景。选择合适的并发模型可以提高程序的性能和稳定性。‌:通过单个线程或进程监听多个I/O事件,适用于高并发场景。‌:通过消息队列来处理并发任务,适用于解耦和异步处理。这种模型可以显著减少系统资源的消耗,提高系统的响应速度‌3。,可以有效地处理高并发场景下的任务调度和消息传递‌4。

2025-03-29 18:23:16 279

转载 IO模型在:Windows系统 与 linux系统的对比

IO复用。

2025-03-29 17:14:16 82

原创 c++跨平台的开源网络传输库LibCurl使用

libcurl是一个跨平台的开源网络传输库,它支持许多协议,包括HTTP、HTTPS、FTP、FTPS、SCP、SFTP、TFTP、LDAP、以及许多其他协议和文件传输方式。libcurl允许开发者使用C语言编写代码来进行网络通信,并提供了简单易用的API接口。跨平台性: 可以在各种操作系统上使用,包括Linux、Windows、macOS等。多协议支持: 支持多种常用的网络协议,例如HTTP、FTP等,以及安全协议如HTTPS、FTPS等。

2025-03-26 15:19:45 938

转载 UML建模

看到一篇总结的很不错的博客,学习一下,仅供学习使用!!如有侵犯权益,可以联系修改!第一篇原文链接:UML详解:建模语言在软件工程中的应用-优快云博客第二篇原文链接:https://zhuanlan.zhihu.com/p/645276949注重掌握常用的图:用例图、活动图、状态图、类图、时序图这些工作中常用的图!!可以将这几个图与其他图分开,这几个着重总结一下!一、背景UML:Unified Modeling Language(统一建模语言),是一种绘制软件蓝图的标准语言(是一种绘画语言,不是一种编程语

2025-03-26 10:02:42 79

原创 Gdiplus(也就是GDI+)使用

Gdiplus(也就是GDI+)使用步骤:1.包括相应的头文件及引入相应的lib//如果没有using namespace Gdiplus;就需要添加“命名空间作用域符” Gdiplus::Image2.初始化Gdiplus3. 加载相应的资源(此处为图片)//图片对象4.绘制图片5.关闭Gdiplus。

2025-03-20 15:57:22 1051

转载 C++流行的开源框架和库

关于开源框架和第三方库,看到一篇总结的很不错的博客,转载一下,仅供学习!!如有侵权可以联系修改!原文链接:https://zhuanlan.zhihu.com/p/651936903C++标准库,包括了STL容器,算法和函数等。C++通用框架和库音频,声音,音乐,数字化音乐库生物信息,基因组学和生物技术压缩和归档库并发执行和多线程数据库,SQL服务器,ODBC驱动程序和工具调试库, 内存和资源泄露检测,单元测试粒子物理动力学仿真引擎XML就是个垃圾,XML的解析很烦人,对于计算机它也是个灾难。这种糟糕的东西

2025-03-19 13:53:48 159

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除