- 博客(202)
- 收藏
- 关注
原创 Visualization Toolkit(VTK)开发学习
可视化工具包(VTK)是用于操作和显示科学数据的开源软件。它配备了最先进的3D渲染工具,一套用于3D交互的小部件,以及广泛的2D绘图功能。vtkConeSource 生成几何数据并提供给。vtkConeSource 一个数据源类,用于生成圆锥形的几何体模型。它是VTK提供的一种简单的几何体生成器之一,用于在可视化和计算流程中创建基本的圆锥形状。数据源 你也可以换成别的,比如球,立方体,或者自定义的几何体。vtkPolyDataMapper 将几何数据转换为可供vtkActor显示的格式。
2025-07-08 11:10:58
409
原创 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
171
原创 Http请求
幂等性:GET请求是幂等的,多次发送相同的GET请求不会对服务器产生任何副作用;POST请求不是幂等的,多次发送相同的POST请求可能会导致服务器状态改变。安全性:GET请求将参数暴露在URL中,因此不适合传输敏感数据,POST请求将参数放在请求正文在,相对更安全。数据体积:GET请求的数据大小受URL长度限制,通常用于获取少量数据,而POST请求可以发送大量数据。参数传递:GET请求将参数以查询字符串的形式附加到URL上,而POST请求将参数放在请求正文中。
2025-07-04 10:33:27
96
原创 C++:Lambda表达式
Lambda 表达式是 C++11 中引入的一种轻量级函数对象(匿名函数),它提供了一种简洁的方式来定义内联函数,可以像函数指针或函数对象一样使用,适合回调、算法、并发等场景。现代 C++ 编程中,尤其是 C++11 及以后的版本中,lambda 表达式和std:bind都可以用来表示函数对象,都可以用于将函数与特定参数绑定,或者生成可调用对象。是 C++11 中引入的一个函数模版,它允许我们将函数与部分参数绑定,生成一个新的可调用对象。将函数或成员函数与特定的参数组合,类似于固定函数的参数。
2025-07-03 17:40:20
439
原创 C语言中的字符串问题
在大概2000年的时候有一股热潮,将各个字符串函数替换成带最大长度限制的版本,例如strncpy (所以在阅读开源 C语言项目的时候经常会看到某个有点眼熟但是又不认识的函数,这时候一般就是这种情况)实际的开源项目中其实都有自己的字符串"类",即使是没有类语法支持的纯C项目中也是会有的,只是用C的语法罢了,实现思想就是字符串的类。这主要是早期的std::string 有很多问题,例如vc6中的版本复制出来的字符串占用的内存是同一块,只有当修改了其中一个的内容时它才会新生成一块内存,这在多线程环境下就是灾难。
2025-06-16 21:51:46
242
原创 C/C++项目的第一行代码
开源C项目最难的是编译,以上的措施其实只是一个预防,在引用各种头文件很混乱的时候还是会发现有重复定义的函数或者是其他元素导致编译失败的情况,这时候就要具体内容具体分析了,一般的做法是先想办法尽量减少引用的头文件,一般来说这时候是编译错误灾难的开始,是各种编译器错误提示爆发的开端。这是利用了C/C++的宏定义特性来防止代码文件被重复复制进最后的编译源码中,是一个预防措施,本质上并不是必须的,因为C语言的include会将对应的文件内容整个包含到最后的编译源码中,与其他所有的现代语言都不同。
2025-06-16 21:21:55
217
原创 OpenGL屏幕和渲染解析
视觉暂留:人眼在观察景物时,光信号传入大脑神经,需经过一段短暂的时间,光的作用结束后,视觉形象并不立即消失,这种残留的视觉称“后像”,视觉的这一现象则被称为“视觉暂留”。以前总觉得图形的变换总是在第一帧的基础上进行是费时费力的,如果在上一帧的基础上变换岂不是更省事,理解了屏幕成像和渲染原理之后对这个问题,或者说对图形学才有了初步的理解。撕裂是由于CPU或GPU耗时过⻓而产生的,iOS解决的方式是引入垂直同步Vsync + 双缓冲的机制,而解决撕裂是以掉帧作为代价的,掉帧不能完全被解决。
2025-06-10 21:50:35
947
原创 交叉编译教程
不过幸运的是,主流开发板厂商(如友善之臂)通常会提供预编译好的工具链,只需按照官方手册配置,即可大幅降低入门门槛。32位编译器建议在32位系统中使用,虽可通过安装依赖在64位系统运行,但可能引发兼容性问题。,例如在x86架构的Linux主机上编译适用于ARM架构开发板的程序。官方文档永远是第一手资料,其次可参考CSDN等技术社区(如Qt编译参数详解)。使用CMake配置Qt6源码,指定交叉编译器路径,生成构建文件后运行。64位编译器仅支持64位系统,需确保主机与工具链位数匹配。
2025-06-10 21:49:00
948
原创 Qt如何打包程序为exe文件
Qt单独提取用的是Qt 5.12.9 (MinGW 7.3.0 64-bit)命令行输入: windeployqt.exe 文件名.exe。
2025-05-17 17:58:37
162
原创 多线程:mutex
std::mutex 是 C++ 标准库中一种常用的同步工具,能够确保同一时刻只有一个线程能访问某个资源,从而避免数据竞争,保证线程安全。它提供独占的非递归所有权语义。线程在访问共享资源之前必须先获取 mutex 锁,完成后再释放锁。释放锁之前,如果其他线程尝试获取 mutex 锁,它们会被阻塞。在这里,如果多个线程同时对一个对象进行操作,如果至少有一个写操作,那么必须保持其独占性。主要功能:1. try_lock_for:尝试在指定的时间内获取锁。如果在超时之前获取锁成功,返回true,否则返回。
2025-05-04 19:24:57
911
原创 C++开发库合集
c/c++的项目也是各种各样的都有,微电子,物联网,桌面客户端,游戏,服务器开发等等。开源框架种类繁多,有哪些值得推荐的c/c++开源框架与库?总结了一下:
2025-04-16 20:31:18
902
原创 “深入浅出”系列之C++:Git
当我们想要合并的两个分支的同一文件中的同一行代码上有不同的修改,或者一个分支删除了一个文件而另一个分支修改了这个文件时,Git 就不知道如何取舍了。对一个提交执行 cherry-pick 时,我们会在活动分支上创建一个新的提交,其中包含由拣选出来的提交所引入的修改。如果我们在当前分支上提交我们想要合并的分支不具备的改变,那么 git 将会执行 no-fast-forward 合并。如果你有一个远程 Git 分支,比如在 GitHub 上的分支,当远程分支上包含当前分支没有的提交时,可以使用取回。
2025-04-06 12:44:50
456
原创 “深入浅出”系列之Linux篇:(18)GDB
GDB,全称 GNU Debugger,是 GNU 开源组织发布的一款功能强大的程序调试工具。自 1986 年由理查德・斯托曼(Richard Stallman)编写以来,它不断发展和完善,如今已成为 Linux 系统下调试程序的首选工具 ,在整个 Linux 生态系统中占据着举足轻重的地位。它就像是一位经验丰富的侦探,深入程序的 “案发现场”,帮助开发者们找到隐藏在代码中的 “罪犯”——Bug。
2025-03-30 10:53:50
777
原创 “深入浅出”系列之Linux篇:(20)进程间通信
Linux 进程间通信(Inter-Process Communication,IPC)是指在多道程序环境下,进程间进行数据交换和信息传递的一种机制或方法。在现代操作系统中,进程是系统资源分配的基本单位,不同进程之间需要相互合作和通信,才能完成各种任务。进程间通信是实现进程间协作的重要手段。进程间通信在 Linux 系统中至关重要。每个进程在 Linux 环境下都有独立的用户地址空间,一般情况下,进程间的进程空间不能相互访问。但在很多实际应用场景中,进程与进程之间需要进行通信,以共同完成特定的功能需求。
2025-03-30 10:51:42
1160
原创 “深入浅出”系列之C++:栈回溯(Stack Unwinding)
栈回溯是指当异常发生时,C++ 运行时系统从异常抛出的点开始,沿着调用栈逆向遍历,逐个销毁已经构造完成的对象,直到找到匹配的catch块或终止程序。C++ 栈回溯(Stack Unwinding)是异常处理的核心机制,它确保异常发生时正确释放资源,从而防止资源泄漏。理解栈回溯的原理有助于编写更加健壮且异常安全的 C++ 代码。通过 RAII、智能指针和标准库容器等工具,开发者可以更好地管理资源,减少异常带来的风险。
2025-03-30 10:45:12
396
原创 “深入浅出”系列之C++:异常
在 C++ 语言中,异常(Exception)是一种用于处理运行时错误的机制。然而,在一些高性能或嵌入式开发环境中,部分公司明确禁止使用 C++ 异常机制。那么,为什么会出现这种情况呢?本文将试图探讨背后的原因,并分析其优缺点。
2025-03-30 10:43:55
646
原创 “深入浅出”系列之C++:C++11内存模型
在多线程编程的复杂领域中,C++11 内存模型犹如一座灯塔,为开发者指引着正确的方向。它的重要性不言而喻,是编写高效、正确的多线程 C++ 程序的基石。在 C++11 标准发布之前,C++ 语言对于多线程编程的支持相对薄弱,开发者往往需要借助第三方库或平台特定的 API 来实现多线程功能。这不仅增加了代码的复杂性和维护成本,还难以保证程序在不同平台上的一致性和可移植性。C++11 的出现,为多线程编程带来了重大变革。它引入了一系列新的特性和工具,其中内存模型的改进尤为关键。
2025-03-30 10:37:50
756
原创 Python:CSRNet
然而,如果我们将扩展率提高到2,内核就会像上面的图像所示的那样扩展(按照每个图像下面的标签)。CSRNet是我们在本文中将实现的一种技术,它部署了一个更深层次的CNN,用于捕获高级别的特性和生成高质量的密度图,而不需要扩展网络复杂性。到目前为止,我们已经在第A部分中为图像生成了地面真值,我们将对Part_B图像进行同样的处理。在给定的图像中,每个人的头部都是用高斯核模糊的。所有图像都被裁剪成9个补丁,每个补丁的大小是图像原始大小的1/4。最后,让我们检查一下我们的模型在看不见的数据上的性能。
2025-03-29 22:53:34
804
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人