- 博客(390)
- 资源 (1)
- 收藏
- 关注
原创 零基础学C++第十五次课 | 指针
②作用:通过指针可以间接访问和修改内存中的数据,实现对内存的灵活操作(如动态内存分配、函数传址等)。③数据类型* 指针名;表示该变量是指针)int* p;定义一个指向int类型变量的指针p。// 普通变量// 指针变量,存储var的地址2.指针的声明与初始化。
2025-11-15 07:25:56
424
原创 深入理解C/C++的编译与链接技术:导论
上一节提到,如果链接器找不到符号的定义来将其与对该符号的引用连接起来,就会给出错误消息。那么,如果在链接时某个符号有两个定义,会发生什么情况呢?我不急着说答案,您先动手试试看。比如说,恢复demo_extern中对的定义,同时,立马这样修改咱们的demo.creturn1;intextern_func() { // 拷贝一份定义到这里,return您随意,因为就不影响我们的结论return3;return2;<- 注释掉外部查找的强调关键字extern。
2025-11-14 13:31:53
910
原创 Qt中的设计模式:经典的MVC,MVP和MVVM
这个示例展示了一个可增删字符串项的简单列表。核心是自定义(继承自),MainWindow作为 Controller/Coordinator,负责把 View(QListView、按钮)和 Model 连在一起。return {};return {};if (!returntrue;
2025-11-14 13:23:38
613
原创 Qt编程Action:Qt的自动反色方案
笔者最近正在做的事情是制作一款简单的ToDo软件,在编写和设计控件的时候,笔者就注意到一个很经典的问题,我们如何进行科学的反色,从而给编程软件使用者,也就是我们的用户以最好的阅读体验呢?这一篇文章,笔者尝试给出我的一些方案。
2025-11-14 13:15:01
492
原创 Qt编程Action:Qt的自动反色方案
笔者最近正在做的事情是制作一款简单的ToDo软件,在编写和设计控件的时候,笔者就注意到一个很经典的问题,我们如何进行科学的反色,从而给编程软件使用者,也就是我们的用户以最好的阅读体验呢?这一篇文章,笔者尝试给出我的一些方案。
2025-11-14 13:11:42
872
原创 正点原子Alpha IMX6ULL开发板2025年最新部署方案指南(Ubuntu24.04)
这里也是最激动人心的部分,我们准备好摆脱老旧的4.1.15了!现在我们需要做的,就是泡上一杯茶,笔者是去上了一个小时的课回来下好的。这里给出我们的地址。nxp-imx/linux-imx: i.MX Linux kernel[10]:If_6.12.y分支,截止至2025年的4月10号,还是这个分支。
2025-11-14 12:55:50
1020
原创 C++17智能指针完全指南:unique_ptr、shared_ptr、weak_ptr实战解析
本文将通过一个完整的Visual Studio 2022工程案例,深入剖析C++17智能指针在现代软件架构中的正确应用。我们将超越简单的API介绍,从和不仅是内存容器,更是的编译期保障的核心价值在于的真正威力体现在的架构层面通过资源管理器、网络连接池和缓存系统这三个相互关联的模块,我们将展示如何将智能指针从“语法糖”提升为“架构工具”,帮助您在复杂工程中构建既安全又高效的C++17现代应用程序。
2025-11-13 16:57:56
282
原创 性能暴增200%!C++内存池:从通用到极致优化工业级源码
工具链:Visual Studio 2022(平台工具集v143),MSBuild,Windows 10 SDK。-统一 allocate(size)/deallocate(ptr,size)接口与统计。-提供allocate/deallocate、统计(块大小/总块数/已分配/利用率)-32/64/128/256B固定池分层;-平台:Windows x64(Win32平台配置亦存在)-不同对象大小(16~256B)与标准分配器性能对比。基准测试(Benchmark)-第三方依赖:无(纯标准库)
2025-11-13 16:56:54
289
原创 放弃MySQL/PostgreSQL:如何用SQLite3+C++20打造承载千万级数据存储《软件项目管理》
本项目是一个专为软件公司设计的项目信息管理系统,能够高效管理大量项目数据。系统采用现代化的Qt6框架开发,具备高性能分页显示、智能搜索、数据导出等核心功能,特别针对大数据量场景进行了优化。剩余各项功能不在全部演示出来,大家自己去测试!2:mainwindow.cpp文件--源码注释。3:修改软件项目(扈三娘 更改为 vico)1:mainwindow.h文件--源码注释。Qt 6.5.3:跨平台GUI框架。Qt Creator:集成开发环境。MinGW 64-bit:编译器。QSql:Qt数据库模块。
2025-11-13 16:56:24
299
原创 Qt网络编程避坑指南:TCP粘包/拆包、心跳机制与断线重连的终极解决方案
项目适合学习Qt网络编程、事件驱动模型、以及基础的客户端/服务器(C/S)架构。UI技术:QtWidgets(QGroupBox/QTextEdit/QPushButton等)服务器端负责监听端口、接受连接、转发消息(广播到其他客户端),并维护客户端数量与日志。客户端负责与服务器建立连接、发送消息、接收广播消息,并以美观的暗色主题显示通信日志。框架:Qt6(Core/Gui/Widgets/Network)2:连接服务器(客户端1)3:连接服务器(客户端2)4:客户端1(发送消息)5:客户端2(发送消息)
2025-11-13 16:55:54
269
原创 深入剖析QtCharts图表引擎,开发《支持36种模型数据可视化框架》
Bar Chart Percent Horizontal(横向百分比柱状图)Bar Chart Stacked Horizontal(横向堆叠柱状图)Chart Interactions(缩放、平移、选取等交互)Bar Chart Horizontal(横向柱状图)Bar Model Mapper(模型映射到柱状图)Line and Bar Chart(线+柱复合图)Bar Chart Percent(百分比柱状图)Drilldown Bar Chart(柱状钻取)
2025-11-13 16:55:24
400
原创 C++杀手锏立身之本,内存管理(堆/栈/RAII)
自动管理:无需手动释放资源,减少错误异常安全:即使发生异常,资源也能正确释放代码简洁:资源管理逻辑集中在构造/析构函数中作用域控制:资源生命周期与对象作用域一致可预测:清楚地知道资源何时被释放。
2025-11-13 16:54:22
323
原创 C++ 标准模板库(Standard Template Library,STL)之vector详解
1. vector 是一个序列容器,。它在算法友好、缓存友好(cache-friendly)方面都很强,因此除非有明确理由,优先用 vector;与数组相比,vector提供了更多的功能,如等。2.
2025-11-12 11:09:21
406
原创 IO多路复用之epoll模型-详细解释
1. epoll 是一种 IO多路复用机制,在 Linux 上高效地同时等待很多文件描述符(fd)的事件(socket 最常见)。把关心的socket的事件交给内核维护,只有就绪的fd会被返回,避免每次O(n)复杂度扫描。(找一个监控组织(内核);帮我监控关心的那些人(socket)的那些事(发生的事件),只要人和事都能对上,我马上就能收到通知)。
2025-11-12 11:08:48
285
原创 C++ 标准模板库(Standard Template Library,STL)基础详解--stl学习查询收藏这一篇就够了
• push_front(x) / emplace_front(...):头部插入(deque/list/forward_list)• lower_bound(key) / upper_bound(key) / equal_range(key):范围查询。• 迭代器(Iterators):把算法与容器解耦的“指针风格”对象(输入/输出/前向/双向/随机访问 等类别)• count(key):计数(set/map 为 0/1;• begin()/end()/cbegin()/cend():迭代起止(遍历)
2025-11-12 11:08:06
306
原创 IO多路复用之poll函数详解用法-带详细注释-阻塞版本
1. poll() 是一种 IO多路复用机制,它能让一个线程同时监听多个文件描述符(通常是多个 socket),等待它们“可读”“可写”“异常”等事件的发生。2. poll()函数以及struct pollfd结构体介绍3.常用事件标志事件常量含义说明POLLIN可读事件表示对应的 fd 可进行读取操作(包括普通数据与优先数据)POLLRDNORM普通数据可读与POLLIN类似,表示普通数据可读POLLRDBAND优先级带数据可读通常用于带外数据(OOB)POLLPRI紧急数据到达。
2025-11-12 11:06:54
288
原创 C++ (STL)之set/unordered_set/multiset/unordered_multiset详解
目录1. set1. std::set<T, Compare = std::less<T>> 的实现与特性2. 常用接口3. 示例1. std::unordered_set<T, Hash = std::hash<T>, KeyEq = std::equal_to<T>>实现与特性2. 常用接口3. 示例1. std::multiset<T, Compare = std::less<T>>实现与特性2. 常用接口3. 示例。
2025-11-12 11:06:23
277
原创 C++循环嵌套
一个循环内包含另外一个或者多个循环,处于外层的循环称为外循环,处于内层的循环称为内循环。两层嵌套的循环为二重循环,三层嵌套的循环称为三重循环,嵌套两层以上的称为多重循环。cout << "公鸡:" << cock << ",母鸡:" << hen << ",小鸡:" << chick << endl;1、多层循环时,满足外层循环后依次执行内层循环,直到内层循环结束,内层循环终止条件要写对。鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?
2025-11-11 17:28:47
331
原创 C++循环结构
(1)a++,表示使用a之后a的值加1,表达式的值仍是自增前的值。例如a=1,执行后结果表达式结果是1,a的值为2。(1)a--,表示使用a之后a的值减1,表达式的值仍是自减前的值。例如a=1,执行后结果表达式结果是1,a的值为0。(2)++a,表示使用a之前,a的值加1,表达式的值为自增后的值。(2)--a,表示使用a之前,a的值减1,表达式的值为自增后的值。循环结构是C++编程非常重要的结构,C++语言有3种循环语句,分别是for,while, do-while。继续循环到表达式为假,退出循环。
2025-11-11 17:28:11
201
原创 C++选择结构
表达式1为真,执行表达式2,返回表达式2的结果;表达式1为假,执行表达式3,返回表达式3的结果。计算表达式的值,根据不同的值运行后面的语句组。包含default,表示表达式值如果都不匹配,执行后面的语句组。(1)计算表达式的值,根据不同的值运行后面的语句组。顺序结构是自上而下,选择结构是根据设定的条件选择执行的语句,又称为分支结构。如果条件(表达式)满足,执行后面的语句1,如果不满足,执行其他下面的语句。如果条件(表达式)满足,执行后面的语句1,如果不满足,执行语句2。case 常量表达式1:语句组1;
2025-11-11 17:27:39
295
原创 C++数组(一)
访问的数组元素并不在数组的存储空间里,这种情况称为数组越界。数组越界是编程中常见的错误,数组越界访问系统不会提示,本身程序不会立即出现错误,需要编程程序时特别注意。我们可以借助数组来存储成绩,int score[50]。常量表达式1表示行,常量表达式2表示列,行列的下标也是从0开始。初始化后值少于数组元素个数时,会把剩余元素初始化为0。(3)数组元素全部初始化为0,可以简写为{0}。如int num[10],第一个为num[0]。定义的数组下标有多个时,称为多维数组,如三维数组、四维数组。
2025-11-11 17:26:32
310
原创 C++编程实践——magic_enum的应用
正如很多小说中所说,主人公最重要的不是自己能力多高而是要善于借势。其实,开发者使用第三方库或框架就类似于这种情况。特别是随着开发者的水平越来越高,回头看时,发现好多公司其实都是在国外的开源框架或库的基础上不断的修改完善,然后走出自己的一条路的。这就是学以致用的一种表现。与大家共勉!
2025-11-11 17:25:56
713
原创 c++编程 | —— 找数字篇
计算机编程语言C++(c plus plus)是一种计算机高级程序设计语言,由C语言扩展升级而产生 ,最早于1979年由本贾尼·斯特劳斯特卢普在AT&T贝尔工作室研发。C++拥有计算机运行的实用性特征,同时还致力于提高大规模程序的编程质量与程序设计语言的问题描述能力。想要解决这道题目,我们可以按照。
2025-11-11 17:25:25
408
原创 Go | range 用法总结与风险规避
range 遍历中,索引和值的变量是复用的(即每次循环使用同一个内存地址)。range 遍历中,索引和值的变量是复用的(即每次循环使用同一个内存地址)。非 ASCII 字符(如中文)在字符串中占多个字节,range 返回的索引是字节索引,而非字符位置。非 ASCII 字符(如中文)在字符串中占多个字节,range 返回的索引是字节索引,而非字符位置。遍历数组时,range 会按数组的实际长度遍历,而非指针或切片的长度。遍历数组时,range 会按数组的实际长度遍历,而非指针或切片的长度。
2025-11-10 17:50:08
317
原创 C++ | 初始化方法总结
原创 岭南过客os-artificer 技术圈2025年11月9日 15:29广东os-artificer 技术圈总结、分享、温故而知新!20篇原创内容公众号----- initializer_list函数参数 -----apple banana cherry说明兼容性:标注了 C++11 的特性(如 {} 列表初始化、nullptr、std::initializer_list),其余部分兼容 C++98 及更早版本。列表初始化({})会阻止窄化转换(例如 int a{3.14};
2025-11-10 17:49:27
893
原创 C++11 | final和override让代码更健壮
原创 岭南过客os-artificer 技术圈2025年11月9日 12:00广东os-artificer 技术圈总结、分享、温故而知新!20篇原创内容公众号类),否则可能限制代码扩展性。结合virtual关键字使用override 仅用于重写虚函数,无需显式加 virtual(编译器自动识别);final 修饰的虚函数仍需基类声明为 virtual。补充说明C++ 的设计哲学是“信任程序员,但提供防护工具”;
2025-11-10 17:48:57
494
原创 C++|运算符重载方法总结
可重载的运算符覆盖了大多数常用操作,通过重载可使自定义类型的使用更接近内置类型(如 a + b、obj[i] 等)。适用于:需要左操作数为非自定义类型的场景(如 cout << 自定义对象 中的 <<),或对称运算符(如 + 允许 a + b 和 b + a,其中 a 是自定义类型,b 是内置类型)。适用于:需要左操作数为非自定义类型的场景(如 cout << 自定义对象 中的 <<),或对称运算符(如 + 允许 a + b 和 b + a,其中 a 是自定义类型,b 是内置类型)。
2025-11-10 17:47:41
541
原创 IO多路复用之poll函数详解用法-带详细注释-阻塞版本
1. poll() 是一种 IO多路复用机制,它能让一个线程同时监听多个文件描述符(通常是多个 socket),等待它们“可读”“可写”“异常”等事件的发生。2. poll()函数以及struct pollfd结构体介绍3.常用事件标志事件常量含义说明POLLIN可读事件表示对应的 fd 可进行读取操作(包括普通数据与优先数据)POLLRDNORM普通数据可读与POLLIN类似,表示普通数据可读POLLRDBAND优先级带数据可读通常用于带外数据(OOB)POLLPRI紧急数据到达。
2025-11-09 18:23:12
826
原创 IO多路复用之select函数详解用法-带详细注释
• select()是 Linux/Unix 系统中 I/O 多路复用 的经典机制,其核心功能是 让单个线程/进程同时监控多个文件描述符(FD)的 I/O 状态(如可读、可写、异常),并在至少一个 FD 就绪时唤醒程序进行处理。• 编译: gcc client.c -lpthread -o client。• 编译:gcc select_echo.c -o select_echo。• 运行示例:./select_echo 8888。• 运行:./select_echo 端口。
2025-11-09 18:22:01
167
原创 IO多路复用之select函数详解用法-带详细注释
• select()是 Linux/Unix 系统中 I/O 多路复用 的经典机制,其核心功能是 让单个线程/进程同时监控多个文件描述符(FD)的 I/O 状态(如可读、可写、异常),并在至少一个 FD 就绪时唤醒程序进行处理。• 编译: gcc client.c -lpthread -o client。• 编译:gcc select_echo.c -o select_echo。• 运行示例:./select_echo 8888。• 运行:./select_echo 端口。
2025-11-09 18:21:19
281
原创 IO多路复用[select,poll,epoll]常用函数,概念,详解
当你需要同时管理很多(常见是很多 socket)时,如果为每个连接都开一个线程,成本会很高。IO 多路复用让你用一个(或少量)线程就能同时等待多个 IO 的“可读/可写”等事件发生,哪个先就绪就先处理哪个。三个关键词:• 注册(register):把“对哪些 fd 的哪些事件感兴趣”告诉内核"【告诉内核需要关注的事件】。• 等待(wait):在一个系统调用里阻塞等待这些事件发生(或超时)。• 分发(dispatch):事件发生后,拿到就绪的那些 fd,逐个处理。
2025-11-09 18:20:46
920
原创 C++ 标准模板库(Standard Template Library,STL)基础详解--stl学习查询收藏这一篇就够了
• push_front(x) / emplace_front(...):头部插入(deque/list/forward_list)• lower_bound(key) / upper_bound(key) / equal_range(key):范围查询。• 迭代器(Iterators):把算法与容器解耦的“指针风格”对象(输入/输出/前向/双向/随机访问 等类别)• count(key):计数(set/map 为 0/1;• begin()/end()/cbegin()/cend():迭代起止(遍历)
2025-11-09 18:20:03
656
原创 C/C++ 代码的优化技巧
依然适用。虽然现代编译器会优化未使用的返回值,但还是建议始终明确声明返回类型(如 void),提升代码规范性和可读性,以及可维护性。
2025-11-08 12:34:06
730
原创 奶奶都能看懂的 C++ —— 数组与指针
对于数组和指针,我们已经非常深入了。现在你应该已经知道了遍历数组的多种方法,如何使用指针控制你的循环,同时用上省事的范围 for 和 auto。下一篇,我们终于将离开这堆你已经有了深入了解的数据海洋,去拆解更多其它 C++ 的知识,同样是奶奶级哦。
2025-11-08 12:29:21
909
原创 奶奶都能看懂的 C++ —— vector 与迭代器
这就是我们的主角,迭代器。我们用了自动类型判断,实际上it,也就是说,vector 有一个迭代器,而 vector 其中存储的对象是 int 类型的。嗯,你应该能推测出来,v1.begin()返回的是一个迭代器类型。顾名思义,它返回的是指向第一个对象的迭代器。你或许注意到了指向这个词,我们在指针那里曾经提到过。比较相似,迭代器也是“一次指向一个对象”,只不过该对象必须存在于一个 vector 中。什么意思呢?你可以理解为,迭代器是和一组对象结合使用的“指针”,在一个时刻,指向其中的一个对象。
2025-11-08 11:52:42
964
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅