
开发语言
文章平均质量分 75
主要以C和C++为主
大草原的小灰灰
消灭了一个bug,还会有千千万万个bug。bug是改不完的。
展开
-
C/C++回调函数实现与std::function和std::bind介绍
回调函数是一种编程模式,指的是将一个函数作为参数传递给另一个函数,并在某个特定事件发生时或满足某些条件时由该函数调用。这种机制允许你定义在特定事件发生时应执行的代码,从而实现更灵活和模块化的程序设计。原创 2025-03-29 10:35:37 · 1057 阅读 · 0 评论 -
右值引用、移动语义std::move和完美转发std::forward
左值是指那些具有持久存储位置的表达式。右值是指那些没有持久存储位置的临时表达式,通常表示的是临时值或即将被销毁的对象。原创 2025-03-27 09:00:00 · 507 阅读 · 0 评论 -
C++ STL之函数对象
重载函数通用操作符的类,其对象常称为函数对象。函数对象使用重载的()运算符,行为类似函数调用,也叫仿函数。原创 2025-02-08 08:30:00 · 806 阅读 · 0 评论 -
C++ STL之算法介绍
STL提供了大量的算法,用于对容器中的元素进行各种操作,包括排序、搜索、复制、移动、变换等。这些算法在使用时不需要关心容器的具体类型,只需要指定要操作的范围即可。原创 2025-01-16 21:18:52 · 886 阅读 · 0 评论 -
C++ STL之容器介绍(vector、list、set、map)
STL(Standard Template Library)即标准模板库。STL通过使用模板实现了容器和算法的分离,允许程序员编写与类型无关的代码,这正是泛型编程的核心思想。原创 2025-01-12 11:46:10 · 1334 阅读 · 0 评论 -
C++四种类型转换操作符 static_cast、dynamic_cast、reinterpret_cast、const_cast介绍
C风格的强制类型转换很简单,都可以使用Type b = (Type)a形式转换。但这种方式存在一些缺点,比如信息丢失或精度损失,代码可读性的下降等。因此C++提供了四种类型转换符来应对不同场合。分别是static_cast、dynamic_cast、reinterpret_cast、const_cast。原创 2024-11-23 18:35:52 · 1398 阅读 · 0 评论 -
C++11语法之Lambda表达式介绍
Lambda表示匿名函数,属于可调用对象,特点是就地定义就地使用。简单理解就是没有名称的函数。在任何需要可调用对象的接口,都可以传入一个lambda表达式。原创 2024-11-18 09:43:41 · 467 阅读 · 0 评论 -
C++ 多线程std::thread以及条件变量和互斥量的使用
本文章主要介绍C++11语法中std::thread的使用,以及条件变量和互斥量的使用。原创 2024-11-16 18:18:01 · 1147 阅读 · 0 评论 -
C++智能指针 shared_ptr 和 unique_ptr
传统C/C++编程中,使用new或者malloc动态申请内存后,必须手动调用delete或者free去释放,否则就会造成内存泄漏。在C++ 11语法中,提供了智能指针来管理内存,开发者不必再关心内存的释放问题,智能指针可以自动去释放管理的内存空间。原创 2024-11-10 11:53:16 · 1107 阅读 · 0 评论 -
C/C++二维码生成库qrencode编译与使用
qrencode 是一个用于生成 QR 码(Quick Response Code)的工具和库。QR 码是一种矩阵条形码或二维条形码,能够在水平和垂直方向上存储信息。qrencode 支持多种编码方式,并能够生成不同复杂度和错误校正级别的 QR 码。原创 2024-08-31 13:17:22 · 2546 阅读 · 0 评论 -
Qt实现json数据的生成、解析、修改和删除
本文章主要介绍如何使用QT提供的json相关类来处理json数据,包括json数据的生成、解析、修改和json数据的删除。原创 2024-08-23 18:51:38 · 1284 阅读 · 0 评论 -
cmake之find_package命令详解
find_package是cmake用来管理第三方库的一个命令。原创 2024-08-03 17:43:19 · 3103 阅读 · 0 评论 -
CMake生成Debug和Release目标程序时的一些配置
本文章将介绍在Windows和Linux平台,生成可执行程序时,如何设置Debug和Release的一些属性。主要介绍如何设置目标程序的生成路径,以及运行时库的设置和目标程序版本号的设置。原创 2024-07-21 10:57:15 · 6157 阅读 · 0 评论 -
使用OpenCppCoverage统计代码覆盖率
OpenCppCoverage 是一款专为Windows平台设计的开源C++代码覆盖率统计工具。原创 2024-07-20 09:49:34 · 1749 阅读 · 0 评论 -
CMake多行注释以及通过Message打印不同级别日志
本文章主要介绍了cmake的单行和多行注释语法,以及如何使用message输出不同级别的日志。原创 2024-06-17 08:52:01 · 1399 阅读 · 0 评论 -
CMake编译安装、生成可执行程序、生成静态动态库以及静态动态库的链接
本文章介绍了CMake的安装,使用CMake生成可执行程序,生成静态和动态库以及静态库和动态库的链接。原创 2024-06-02 12:39:00 · 3972 阅读 · 0 评论 -
使用RapidJson开源库解析和生成Json数据
RapidJSON是一个高效、轻量级的 C++ JSON 解析器及生成器库,由腾讯公司开源。RapidJSON 是只有头文件的 C++ 库。只需把 include/rapidjson 目录复制到项目中即可使用。原创 2024-05-12 12:01:58 · 1510 阅读 · 0 评论 -
通过C++开源库TinyXML2解析和生成XML数据
TinyXML2是一个轻量级的、开源的C++库,专门用于解析和生成XML文档。它是原始TinyXML库的一个升级版本,设计得更为高效和强大,同时保持了简单易用的特点。TinyXML2非常适合那些需要处理XML数据,而又希望保持代码简洁和执行效率的应用场景。原创 2024-04-27 13:01:02 · 1939 阅读 · 0 评论 -
C++ UML 类图介绍与设计
UML(Unified Modeling Language),即统一建模语言,是用来设计软件的可视化建模语言。它的特点是简单、统一、图形化、能表达软件设计中的动态与静态信息。原创 2024-04-14 17:23:33 · 2547 阅读 · 0 评论 -
MFC编程入门级教程
MFC (Microsoft Foundation Classes) 是微软公司专门为C++开发者设计的一套应用程序框架和类库。它通过C++类的形式对Windows API进行了高度封装,简化了Windows应用程序的开发过程。MFC提供了一系列预定义的类,这些类对应于Windows编程中的各种基本元素,如窗口、菜单、对话框、控件等,同时也包含了应用程序框架的支持,如文档/视图体系结构、命令路由、消息映射机制等。原创 2024-04-13 11:18:11 · 11534 阅读 · 0 评论 -
使用c语言libexpat开源库解析XML数据
Expat 是一个用 C 语言编写的开源 XML 解析库,以其高性能和小巧的体积著称。Expat 兼容多种操作系统平台,包括但不限于 Windows、Linux、macOS 等。由于其跨平台特性和简单易用的API,Expat 成为了许多C/C++程序员解析XML文档的首选工具之一。原创 2024-04-04 09:54:36 · 2101 阅读 · 0 评论 -
C++高性能日志库spdlog使用指南
Spdlog 专注于提供极致的性能,在大量日志记录场景下也能保持较低的延迟和较高的吞吐量。原创 2024-02-28 16:48:10 · 19743 阅读 · 7 评论 -
C++日志库plog使用指南
plog是一个轻量级、跨平台的C++日志库,它设计简洁且易于使用原创 2024-02-22 21:07:39 · 3496 阅读 · 1 评论 -
QT消息机制和事件 - 鼠标事件、键盘按下事件、绘图事件、定时器事件处理
事件(event)是由系统或者Qt本身在不同时刻发出的。当用户按下鼠标、敲下键盘,或者是窗口需要重新绘制的时候,都会发出一个相应的事件。一些事件在对用户操作做出响应时发出,如键盘事件等。另一些事件则由系统自动发出,如定时器事件。原创 2023-12-02 17:03:44 · 721 阅读 · 0 评论 -
Qt中使用QNetworkAccessManager类发送https请求时状态码返回0
在项目开发中,碰到一个问题,使用QNetworkAccessManager类对象发送https请求时,状态码一直返回0,抓包分析看请求响应也是正常的。费了好大劲终于搞定了,主要是两个原因导致的。原创 2023-11-18 17:37:36 · 1719 阅读 · 0 评论 -
Qt实现TCP调试助手 - 简述如何在Qt中实现TCP多并发
软件开发中,可能经常会用到TCP调试工具。本人使用QT开发了一款TCP调试工具,方便大家使用。本文章主要介绍下,该工具的功能,以及如何在Qt中实现TCP服务器的并发。原创 2023-11-12 18:55:57 · 1256 阅读 · 1 评论 -
轻量级c语言开源日志库log.c介绍 - 实现不同级别和参数化日志打印
c语言没有现成的日志库,如果要记录日志,需要自己封装一个日志库。如果要实现日志级别区别和参数打印,还是比较麻烦的,正好在github找到了一个c语言开源日志库,可以实现日志级别打印,参数打印,而且还会记录日期和行号,最重要的是代码非常少,只有100多行,可以直接包含在我们自己的工程代码中,不需要任何依赖。原创 2023-09-18 19:07:42 · 8658 阅读 · 0 评论 -
Windows/Linux(命令、安装包和源码安装)平台各个版本QT详细安装教程
本文章主要介绍了Windows/Linux平台Qt4,Qt5和Qt6的安装步骤,在Linux平台又提供了命令安装、源码安装和安装包安装三种方式。原创 2023-09-17 18:06:53 · 4413 阅读 · 0 评论 -
使用WinDbg进行动态调试
本文章主要介绍如何使用WinDbg进行动态调试。如果程序崩溃后,没有记录dump文件,或者程序启动时发生异常,比如常见的 应用程序无法正常启动(0xc000007b) 报错,都可以使用WinDbg动态调试功能来定位问题。文章最后,对WinDbg常用命令进行了总结。原创 2023-09-09 13:08:25 · 1481 阅读 · 0 评论 -
Dump文件的生成以及使用WinDbg静态分析
本文章主要介绍了如何生成Dump文件,包括两种方式,通过代码生成和通过注册表生成。并且介绍了WinDbg工具的下载和使用,以及如何使用WinDbg工具去静态分析Dump文件,从而找到程序的崩溃位置。原创 2023-09-03 00:03:06 · 1016 阅读 · 0 评论 -
不同系统和架构下的宏定义名称
C/C++代码实现跨平台编译时,基本上都会调用系统函数,这个时候就可以使用不同系统下的宏定义来实现跨平台的编译。系统主要分为windows,linux和mac。架构主要指的是linux下的架构,常用的有x86,arm和mips架构。原创 2023-07-26 20:31:00 · 1999 阅读 · 0 评论 -
静态链接和动态链接 -- 静态加载(隐式调用)和动态加载(显式调用)
静态链接 : 由链接器在链接时将库的内容加入到可执行程序中,这里的库是静态库,Windos下是*.lib后缀,Linux下是*.a后缀。动态链接 : 可执行程序加载时(静态加载) 或者 运行时(动态加载),将库文件中的内容加入到可执行程序中,这里的库是动态库,Windows下是*.dll后缀,Linux下是*.so后缀。原创 2023-06-17 18:26:43 · 1129 阅读 · 0 评论 -
QT实现发送get和post请求
介绍下如何在qt程序中给http服务端发送get和post请求,首先你要有一个http服务端,下面直接贴下代码。ui界面代码就不贴了,分别是两个按钮控件发送get和post请求和一个plainTextEdit控件来展示信息。...原创 2022-08-15 19:18:57 · 3575 阅读 · 1 评论 -
QT自定义控件
QT的UI设计器提供了很多GUI设计的界面组件,可以满足常见的界面设计需求。但是某些时候需要设计特殊的界面组件,而在UI设计器的组件面板里根本没有合适的组件,这时就需要设计自定义的界面组件。在widget界面上放置一个Widget组件,右击Widget,点击提升为提升的类的名称就是刚才添加的那个类Custom点击添加,然后点击提升运行程序后,可以看到,在Widget主窗口中就会出现我们自定义的控件我们想要的效果是拉动进度条,数字同步发生变化。原创 2023-03-12 11:39:04 · 4100 阅读 · 0 评论 -
QT实现线程操作
1、第一种方法第一种方法是QT4.8之前的写法,需要重写一个类,继承于QThread类。1.1、自己实现一个子线程类myThread,并继承于QThread类。1.2、重写子线程类myThread中的虚函数run()。1.3、在主线程Widget中定义子线程类对象。1.4、在主线程Widget中连接信号槽,实现子线程于主线程之前通信。1.5、主线程Widget中使用子线程的start()方法启动子线程。项目结构主线程代码widget.h#ifndef WID原创 2021-12-26 14:36:20 · 1840 阅读 · 0 评论 -
QT程序打包发布
1、拷贝支持应用程序的动态库,QT有自动的拷贝工具。 在你的QT安装目录下找到windeployqt.exe程序。我的是在该目录下D:\qt5.9\5.9\msvc2017_64\bin,然后在该目录下打开cmd,运行windeployqt.exe程序,后面跟你的应用程序。 执行后,QWebEngineView.exe所需的动态库就会被自动拷贝过来。2、下载打包工具https://jrsoftware.org/isdl.php ...原创 2021-09-02 13:59:46 · 542 阅读 · 0 评论 -
使用QT绘制折线图
我们先创建一个工程,然后在界面上放置一个Graphics Widget组件,在组件上点击鼠标右键,选择提升为...提升的类的名称我们写为QChartView下面我们贴下主要代码zx.pro#-------------------------------------------------## Project created by QtCreator 2022-02-13T18:15:06##--------------------------------------------原创 2022-02-19 12:13:48 · 9066 阅读 · 4 评论 -
QT之QTableWidget控件
QTableWidget是QT中的表格组件类。一般用来展示多行多列的数据,是QT中使用较多的控件之一。1、QTableWidgetItem对象QTableWidget中的每一个单元格都是一个QTableWidgetItem对象,因此先介绍下QTableWidgetItem的常用方法。1.1、设置文本内容void QTableWidgetItem::setText(const QString &text)1.2、设置对齐方式void QTableWidgetItem::setT原创 2022-02-12 18:48:59 · 24321 阅读 · 0 评论 -
QLabel中文乱码问题
给QLabel设置显示中文时,一直乱码。中文不能正常显示。ui->label->setText("测试");在代码中已经设置了UTF-8编码格式 QTextCodec *codec = QTextCodec::codecForName("UTF-8"); QTextCodec::setCodecForTr(codec); QTextCodec::setCodecForLocale(codec); QTextCodec::setCodecForCStr原创 2022-02-28 15:55:59 · 3121 阅读 · 0 评论 -
setAttribute(Qt::WA_DeleteOnClose) 导致程序崩溃问题
项目开发过程中,碰到一个问题,关闭窗口后,程序会崩溃掉。找了好久才发现是设置了这个属性setAttribute(Qt::WA_DeleteOnClose)未设置该属性时,你去关闭窗口,窗口资源不会立即释放,窗口只是隐藏了。当调用析构函数时,窗口资源才会真正释放。而设置了该属性,那么你去关闭窗口,窗口资源会立即释放掉。可以看下代码:widget.cpp#include "widget.h"#include "ui_widget.h"Widget::Widget(QWidget *par原创 2022-04-08 20:56:52 · 4805 阅读 · 0 评论