自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Win32API调用

win32api简介

2025-07-03 18:01:13 977

原创 C++三维建模仿真软件开发(OSG/VTK/OpenGL)

三维建模仿真软件开发

2025-04-08 14:08:07 239

原创 “深入浅出”系列:如何入门C/C++

本文主要围绕C/C++编程。

2025-02-26 22:21:46 17854

原创 Python合集

本文主要是我在学习python编程过程中所作的笔记,以及在做毕设时的笔记。

2025-02-14 22:11:16 1078 1

原创 计算机专业秋招、春招笔面试记录

本文主要是本人在春秋招时的面经,仅供参考,如有雷同请联系本人

2025-02-08 12:08:07 359

原创 Windows消息机制

Windows GUI系统的核心是基于回调函数的消息轮询机制,它通过消息循环和窗口过程实现了事件驱动的编程模型,窗口过程函数是回调函数,操作系统在接收到与窗口相关的消息(如鼠标点击、键盘输入、窗口绘制等)时会调用它,并将消息作为参数传递给它。_cdecl:栈清理由调用方负责,对于同一个函数,多次调用时,每次调用都会生成一份栈清理代码,因此栈清理代码会多次出现,兼容性更好。_stdcall:栈清理由被调用函数负责,对于同一个函数,多次调用时,栈清理代码只会存在于被调用函数内部,只有一份。

2026-01-03 19:54:23 178

原创 用C语言实现一款简易的扫雷游戏

【代码】用C语言实现一款简易的扫雷游戏。

2025-12-26 15:53:26 187

原创 C++中的一种输出到屏幕和文件的接口

【代码】C++中的一种输出到屏幕和文件的接口。

2025-12-26 15:51:43 81

原创 Windows下用C实现Socket连接

【代码】Windows下用C实现Socket连接。

2025-12-26 15:50:59 183

原创 C++中的回调函数和函数指针详解

【代码】C、C++中的回调函数和函数指针。

2025-12-03 16:38:48 120

原创 C++公共接口类示例

【代码】C++公共接口类示例。

2025-12-03 15:30:42 86

原创 C、C++中的sprintf和stringstream的使用

【代码】C、C++中的sprintf和stringstream的使用。

2025-12-03 15:07:05 218

原创 Qt编译:libstdc++.so.6: version `GLIBCXX_3.4.32‘ not found

启动/data/Qtproject/build-TestAssist-moren-u8c03u8bd5/TestAssist ...

2025-11-03 14:24:28 212

原创 C/C++: void*的使用

void 在C/C++语言中通常表示“无类型”。因此,void* 可以理解为“指向一个无类型数据的指针”。void * 特殊之处在于它可以存储任何数据类型的地址。无论是 int、char、float、struct,它们的地址都可以赋给一个 void* 类型的指针变量。它不“知道”它指向的数据的类型和大小。正因为是“无类型”, void 本身没有具体的数据信息,void * 并不直接知道它所指向的数据的类型和大小。void * 被定义为 “指向任何类型数据的指针” 或 “通用指针”。

2025-10-31 15:40:27 876

原创 C/C++中的二级指针使用

二级指针就是:指向指针的指针,它存储的是“另一个指针变量的地址”。分配内存),那么必须用“指针的指针”。就是一个“指向字符串指针数组的指针”。pp 是二级指针,*pp 就是 p;p 是指针,*p 取出 a 的值;**pp 取出最终的值 a。2、修改指针本身(函数参数)3、C 语言字符串数组(1、动态分配二维数组。

2025-10-30 14:16:06 184

原创 VS2015开发C++项目时报错:Run-Time Check Failure #2 -Stack around the variable ‘myTimer‘ was corrupted

在设置第一项时,问题已解决,咨询GPT,GPT给出的解释是:代码本身并没有真正破坏栈,而是。在多线程 + 静态对象场景下,栈边界值可能被中间的 CRT/线程库访问或修改,项目属性 → C/C++ → 代码生成 → 基本运行时检查。项目属性 → C/C++ → 常规 → 调试信息格式。(VS 的“基本运行时检查 → 启用所有检查”),代码在逻辑上没错(线程退出、句柄关闭都正确),在退出阶段误报/触发了栈损坏检测。项目属性 → C/C++ → 优化。还在监视的栈空间上调用析构;

2025-10-29 16:22:22 323

原创 VSIDE调试记录

1、设置include目录(头文件路径)属性:配置属性->c/c++->常规在附加包含目录里添加:绝对路径D:\MyLib\include相对路径:$(ProjectDir)..\MyLib\include多个路径之间用分号;分隔。2、设置lib(库文件路径)配置属性->链接器->常规在附加库目录里添加lib所在的路径:绝对路径:D:\MyLib\lib相对路径:$(ProjectDir)..\MyLib\lib3、指定要链接的库文件:配置属性 → 链接器 → 输入。

2025-10-24 15:06:28 217

原创 Linux和Windows的C++程序移植问题

但 C++/Linux 使用 bool。unsigned long 或 uint32_t(来自 <cstdint>)pthread_t 或 std::thread 或 QThread*对线程安全性有要求时推荐用 std::atomic。Windows 的资源句柄,一般用于线程或文件,Windows 的调用约定,Linux 不需要。std::atomic<int> 或保持原样。Windows 定义,Linux 下不认识。指针类型,Linux 下就是 void*

2025-10-23 10:10:09 149

原创 C++:用CMake构建第一个项目

CMake允许开发者编写一种平台无关的 CMakeList.txt 文件来定制整个编译流程,然后再根据目标用户的平台进一步生成所需的本地化 Makefile 和工程文件,如 Unix 的 Makefile 或 Windows 的 Visual Studio 工程。使用通配符 * 自动匹配当前目录下所有 .cpp 文件,并将其列表赋值给变量 SOURCES。对于大型或严格的项目,建议手动列出源文件。,因为如果新增源文件,CMake 不会自动重新生成构建系统,需要手动重新运行。变量中的所有源文件来编译它。

2025-09-14 11:50:35 347

原创 银河麒麟Kylin编译Qt5.12.12

-platform:指定宿主机的编译器(如 linux-clang)。#-skip <module>:跳过某些模块(如 -skip webengine)可以解决某些依赖问题或减少编译时间,但除非你确定不需要该模块,否则一般不推荐6。# -prefix <path>:指定Qt的安装目录(例如 /usr/local/Qt-5.12.12)。#-xplatform:如果进行交叉编译,需指定目标平台的编译器(例如针对ARM64架构的编译器)。#-qt-xcb:使用XCB(X11)进行图形界面渲染4。

2025-08-30 17:37:07 746

原创 银河麒麟KylinV10安装反射内存卡和图像注入卡

【代码】银河麒麟Kylin系统安装各种板卡(反射内存卡、图像注入卡、串口卡等)步骤及解决方案。

2025-08-30 17:34:17 357

原创 正则表达式

正则表达式(Regular Expreesion,简称regex)是一种用于匹配字符串模式的工具,常用于查找、验证、替换文本等任务。断手机号是否符合规则(例如中国大陆手机号):^1[3-9]\d{9}$匹配:hello.world_1@my-domain.com。1、查找邮箱地址:[a-zA-Z0-9_.+-]3、匹配日期:\d{4}-\d{2}-\d{2}一个空白字符(空格、Tab等)转义字符,例如:\.匹配”.”[3-9]第二个数字为3~9。\d{9}后面是9个数字。一个字符或数字或下划线。

2025-08-22 14:07:33 378

原创 Qt核心内容详解:事件循环+信号槽+对象树+属性+元对象与反射

常用的通信接口+类QTcpsocket,QTcpsever,Qserialport,Mgtt,sqlite。容器类QMAp,万能类型Qvarient,常用的QBytearry类。本篇将对Qt开发中五大核心模块做一个详细的分析。多线程Qthread+类。

2025-08-22 14:06:45 116

原创 C/C++开发中Debug和Release模式的区别

启用了优化后,程序的运行速度更快,效率更高。Debug 模式下在内存分配上有所区别,在我们申请内存时,Debug 模式会多申请一部分空间,分布在内存块的前后,用于存放调试信息。数据溢出问题,在一个函数中,存在某些从未被使用的变量,且函数内存在数据溢出问题,在 Debug 模式下可能不会产生问题,因为不会对该变量进行优化,它在栈空间中还是占有几个字节,但是 Release 模式下可能会出问题,Release 模式下可能会优化掉此变量,栈空间相应变小,数据溢出就会导致栈内存损坏,有可能会产生奇奇怪怪的错误。

2025-08-17 10:23:31 627

原创 C/C++中的内存分区

如果在堆上分配了空间,就有责任回收它,否则运行的程序会出现内存泄漏,另外频繁地分配和释放不同大小的堆空间将会产生堆内碎块。在执行函数时,函数内局部变量的存储单元都在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。未初始化数据区(BSS Segment):存储未初始化的全局变量和静态变量,这些变量在程序开始执行前被自动初始化为零。一个C、C++程序编译时内存分为 5 大存储区:堆区、栈区、全局区、文字常量区、程序代码区。

2025-08-16 10:17:23 311

原创 C++中的static关键字

(5)在C++中,static关键字可以用于定义类中的静态成员函数:与静态成员变量类似,类里面同样可以定义静态成员函数。1、修饰静态局部变量,会改变局部变量的存储位置,从而使得局部变量的生命周期变长,延长至程序结束才销毁,普通的局部变量创建后是放在栈区,这种局部变量进入作用域时创建,出了作用域就销毁。在C语言中static用来修饰局部静态变量和外部静态变量和函数,而C++语言还可以用来定义类的成员变量和函数,即静态成员和静态成员函数,C++的静态成员可以在多个对象实例之间进行通信,传递信息。

2025-08-16 10:16:22 435

原创 Qt:QComboBox

【代码】Qt:QComboBox。

2025-08-13 19:14:08 3459

原创 Reactor模式

Reactor一种事件处理模式,主要用于高性能网络编程中处理并发I/O操作。Reactor(反应器)模式是一种的事件处理模式,核心思想是。当遇到下面这些情况时可以使用Reactor模式:需要跨平台支持熟悉同步编程模型连接数多但每个连接负载不高运行在Linux/Unix上。

2025-08-04 20:26:33 337

原创 Kylinv10(Linux)环境下编译安装OSG

【代码】Kylinv10(Linux)环境下编译安装OSG。

2025-07-21 18:45:43 181

原创 C++线程池详解

线程

2025-07-08 15:33:02 1021

原创 VTK(Visualization Toolkit)开发学习

可视化工具包(VTK)是用于操作和显示科学数据的开源软件。它配备了最先进的3D渲染工具,一套用于3D交互的小部件,以及广泛的2D绘图功能。vtkConeSource 生成几何数据并提供给。vtkConeSource 一个数据源类,用于生成圆锥形的几何体模型。它是VTK提供的一种简单的几何体生成器之一,用于在可视化和计算流程中创建基本的圆锥形状。数据源 你也可以换成别的,比如球,立方体,或者自定义的几何体。vtkPolyDataMapper 将几何数据转换为可供vtkActor显示的格式。

2025-07-08 11:10:58 540

原创 OSG(OpenSceneGraph)开发

【代码】OpenSceneGraph(OSG)开发学习。

2025-07-04 17:56:31 314

原创 Linux系统下如果忘记root用户密码处理方法

(如系统为 Ubuntu 这类默认禁用 root 的系统,可能需要先启用 root 帐号,可以执行。,在启动时看到GRUB菜单(可能需要按住或快速按shift键或Esc键)进入菜单。你现在会进入一个没有图形界面的 bash shell,root 用户已登录。表示系统启动后运行 bash 而不是默认的 systemd/init。选中平时启动的内核那一行(通常是第一行),通过GRUB引导菜单重置root密码。表示挂载根文件系统为可读写。找到以linux或linux。按下e进入编辑模式。修改 root 密码。

2025-07-04 17:23:34 263

原创 Http请求

幂等性:GET请求是幂等的,多次发送相同的GET请求不会对服务器产生任何副作用;POST请求不是幂等的,多次发送相同的POST请求可能会导致服务器状态改变。安全性:GET请求将参数暴露在URL中,因此不适合传输敏感数据,POST请求将参数放在请求正文在,相对更安全。数据体积:GET请求的数据大小受URL长度限制,通常用于获取少量数据,而POST请求可以发送大量数据。参数传递:GET请求将参数以查询字符串的形式附加到URL上,而POST请求将参数放在请求正文中。

2025-07-04 10:33:27 120

原创 C++:Lambda表达式

Lambda 表达式是 C++11 中引入的一种轻量级函数对象(匿名函数),它提供了一种简洁的方式来定义内联函数,可以像函数指针或函数对象一样使用,适合回调、算法、并发等场景。现代 C++ 编程中,尤其是 C++11 及以后的版本中,lambda 表达式和std:bind都可以用来表示函数对象,都可以用于将函数与特定参数绑定,或者生成可调用对象。是 C++11 中引入的一个函数模版,它允许我们将函数与部分参数绑定,生成一个新的可调用对象。将函数或成员函数与特定的参数组合,类似于固定函数的参数。

2025-07-03 17:40:20 496

原创 Leetcode力扣刷题记录(C++)

【代码】Leetcode力扣刷题记录(C++)

2025-06-19 11:21:41 302

原创 C语言中的字符串问题

在大概2000年的时候有一股热潮,将各个字符串函数替换成带最大长度限制的版本,例如strncpy (所以在阅读开源 C语言项目的时候经常会看到某个有点眼熟但是又不认识的函数,这时候一般就是这种情况)实际的开源项目中其实都有自己的字符串"类",即使是没有类语法支持的纯C项目中也是会有的,只是用C的语法罢了,实现思想就是字符串的类。这主要是早期的std::string 有很多问题,例如vc6中的版本复制出来的字符串占用的内存是同一块,只有当修改了其中一个的内容时它才会新生成一块内存,这在多线程环境下就是灾难。

2025-06-16 21:51:46 266

原创 C/C++项目的第一行代码

开源C项目最难的是编译,以上的措施其实只是一个预防,在引用各种头文件很混乱的时候还是会发现有重复定义的函数或者是其他元素导致编译失败的情况,这时候就要具体内容具体分析了,一般的做法是先想办法尽量减少引用的头文件,一般来说这时候是编译错误灾难的开始,是各种编译器错误提示爆发的开端。这是利用了C/C++的宏定义特性来防止代码文件被重复复制进最后的编译源码中,是一个预防措施,本质上并不是必须的,因为C语言的include会将对应的文件内容整个包含到最后的编译源码中,与其他所有的现代语言都不同。

2025-06-16 21:21:55 270

原创 Qt如何生成和使用DLL动态链接库

【代码】Qt如何生成和使用DLL动态链接库。

2025-06-15 19:39:27 603

原创 UNIX环境高级编程

Unix编程

2025-06-13 10:23:50 159

空空如也

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

TA关注的人

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