自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

撬动未来的支点的专栏

代码与文章并驾齐驱。

  • 博客(211)
  • 资源 (11)
  • 问答 (2)
  • 收藏
  • 关注

原创 掌握Qt构造系统

掌握Qt构建系统

2022-12-20 01:36:31 798

原创 【精华】详解Qt中的内存管理机制

前言内存管理,是对软件中内存资源的分配与释放进行有效管理的方法和理论。众所周知,内存管理是软件开发的一个重要的内容。软件规模越大,内存管理可能出现的问题越多。如果像C语言一样手动地管理内存,一会给开发人员带来巨大的负担,二是手动管理内存的可靠性较差。Qt为软件开发人员提供了一套内存管理机制,用以替代手动内存管理。下面开始逐条讲述Qt中的内存管理机制。一脉相承的栈与堆的内存管理了解C语言的同学都知道,C语言中的内存分配有两种形式:栈内存、堆内存。栈内存栈内存的管理是由编译器来做的,栈上申请的内

2021-08-16 20:00:45 4864

原创 【GUI开发】图像处理类软件的浏览功能实现模型

图像处理软件包括但不限于:图片浏览器,2D地图浏览器、图片编辑器等软件。为了处理大分辨率图片,一般采用GDAL加载图像,GDAL可以动态加载图像的一部分,可以建立图像金字塔,优化加载速度。一般的图像处理软件都需要对加载的图像进行放大、缩小、平移操作。首先明确:放大是指图像细节增加,可见范围减少的一种浏览方式,缩小是指图像细节减少,可见范围增加的一种方式下面介绍如何实现。编写代码前,需要建立图像浏览所使用的观察模型。如下图所示:其中,显示窗口是指用于绘制当前浏览内容的窗口,观察区域是指,

2021-06-27 17:38:26 167 2

原创 【编译原理】二、理解BNF

总体理解一个源码文件本质上就是一棵树,即数据结构中的树。解析源码的本质就是将一维的字符串序列转换为一颗语法树。这个可以自己对着源码理解,代码中的缩进就是一种树层次的体现。BNF范式BNF范式本质上就是树形分解,很简单嘛。前端代码解析的难点就在于BNF,对于对数学不敏感的人来说,看到公式就很烦(像我一样)。那么我们就从计算机专业的角度来掌握它。产生式产生式就是将语法的分解规则表达出来的等式。如句子 = 主 + 谓 + 宾将语法规则描述出来是为了便于代码实现,便于计算,所以产生式可以看做

2021-01-24 11:15:31 16223 3

原创 Qt实现多屏幕多分辨率自适应

最近比较忙,这里仅大概描述一下我的实现思路。运行条件两个屏幕,分辨率不同。Qt软件问题提出前段时间写了一个软件,窗口内有自绘内容。自绘内容里面用的长度单位都是像素。可想而知,在开发者的电脑屏幕上大小都是符合要求的。到这一步都没问题。软件开发完成后发给客户,客户在他的电脑上运行,也没问题,毕竟分辨率差不多。偶然一次使用配有高分辨率显示器电脑运行软件,在4k屏下,软件出现了以下问题:整体尺寸和某些自绘内容(线条形状)变得很小,原因是屏幕分辨率升高了,像素更密集,相同个数的像素长度看起来更

2020-10-14 20:40:34 3624 1

原创 关注公众号永久免费使用!跨平台软件“批量哈希大师“发布

由本公众号开发的校验和/哈希值计算工具正式发布。批量哈希大师是本公众号原创开发的第一款基于Qt的跨平台工具软件,也是本公众号对跨平台免费软件生态的发展做出的一份努力。作为软件开发人员,我们会经常使用哈希工具来校验文件内容是否被篡改。但我们经常遇到的一个问题是,很难找到一款能够支持跨平台,支持批量计算并长期维护改进的免费软件。批量哈希大师正是为了满足以上需求而被开发出来。

2024-04-19 00:09:35 246

原创 Qt小型项目模板

我们每次通过Qt Creator新建的项目,其目录结构都比较简单。通常情况下,我们都要重新创建常用的源码目录结构,这种做法含有较多的重复劳动,费时费力。同时,笔者发现,每个人创建的项目的源码目录结构,相比之下差异很大。因为每个人对解决某一问题有自己的想法和视角,所以组织代码的方式也不一样。但是,个性抽象的代码组织方式,可能会导致项目协作、项目维护上出现沟通问题。对于小型项目,采用常用的源码组织方式,建立通用项目模板,不仅可以提高效率,同时可以使源码结构更加清晰,提高项目的可维护性。

2024-04-13 10:49:30 211

原创 Qt桌面GUI软件基础测试参考手册V0.0.1发布

下载地址:https://gitee.com/pivotfuture/qt_gui_software_base_test_reference_manual/releases/tag/V0.0.1。本测试手册旨在指导开发者、测试人员,对Qt桌面GUI程序进行软件基础功能测试,帮助减少程序低级别的错误和BUG。一旦您的提议被采纳,您的名字将被写入到贡献者致谢列表中。开发者使用此手册,可以实现在开发阶段对所开发程序进行基础自测,减少程序 bug 数量,减少因排查问题而耗费的时间精力和资金成本。

2024-04-10 23:14:29 385

原创 【三维】关于万向节锁的直白解释

但是如果用机械部件去真正的控制物体的姿态,一般就是用万向节这种机械部件,它本身有bug。为啥,因为万向节的旋转方向之间是有连接的,连接就是限制。在万向节的限制下,想要旋转物体到一定姿态,如果还按照先转a,再转b,最后转c,最后可能在某个位置卡住了,无法旋转。这种状态就是“万向节”锁住了。卡住的位置是在两个或者多个旋转平面重合的时候,就会消失一个旋转自由度。现实世界中,我们想把一个物体摆一个姿态,其实就是先转a,再转b,最后转c。用大脑去想象的话,很简单,完全不会有问题。这是简单问题复杂化的典型代表。

2024-03-31 13:23:17 104

原创 【3ds max笔记】理解三维场景的浏览方式与操作方法

初学3ds max,很容易会被它的浏览方式搞晕,或者想移动物体,切换观察角度,而不知道怎么操作。其实只要梳理一下,就会变得简单。玩这个软件,容易被各种按钮,菜单搞晕。我们学习的时候必须要按模块去学习,其中浏览与操作是基本功,需要梳理明白,不然会学得一头雾水。

2024-03-23 10:01:36 446

原创 【Qt基本功修炼】Qt线程的两种运行模式

QThread是Qt中的线程类,用于实现多线程运行。QThread有两种工作模式,即消息循环模式无消息循环模式两种模式分别适用于不同的场景。下面我们将从多个方面,讲解QThread两种工作模式的区别。在项目中,我们需要根据实际需求选择正确的线程运行模式,合理地实现软件功能,同时提高导致软件的稳定性和可靠性。以上是Qt线程的基本使用方法,可以满足基本的使用需求。但用起来还是稍显麻烦。

2024-02-01 21:27:23 1235

原创 【Git不走弯路】(二)提交与分支的本质

提交与分支是Git中两个基本对象,对初学者而言需要花些时间理解。正如我们之前所说,计算机中很多新概念是新瓶装旧酒。计算机技术来源于需求,服务于需求,需求是计算机技术的出发点和落脚点。梳理清楚工程实践中,版本管理工作的每个需求点和细节,就能摸清Git的来龙去脉。没有魔法,提交与分支的本质就是文件夹。后续文章中,我们将以“文件夹”的思路形象分析Git中的基本操作的具体含义,敬请关注!本文原创发布于Qt未来工程师。

2024-01-21 01:31:52 990 1

原创 控制台架构体系学习资源

微软微软官方教程:欢迎查看 Windows 控制台文档!

2024-01-19 10:18:25 343

原创 使用VS2015在win7 x64上编译调试FFmpeg(附源码和虚拟机下载)

在文章《使用VS2017在win10 x64上编译调试FFmpeg(附源码和虚拟机下载)》中,我们在win10+VS2017的环境下基于开源项目ShiftMediaProject完成了FFmpeg源码调试环境的配置。在win7+VS2015的环境下,ShiftMediaProject配置过程和win10+VS2017下类似,但编译问题会更多一些。经过一番排查,将编译问题解决后,即可进行源码调试。原因是代码中检测了系统类型,win7系统下,没有此结构的定义,相关函数也不会被使用。

2024-01-14 21:59:31 458

原创 【Git不走弯路】(一)版本管理需求分析

在计算机中,版本就是备份。备份是计算机中的“后悔药”,可以在任何需要的时候将数据从备份中原样取出。备份和快照、还原点是相似的东西。计算机词汇每年都层出不穷,很多词汇背后的原理却简单朴素。

2024-01-12 00:29:15 396

原创 DIY固态移动硬盘存放虚拟机

虚拟机可以在一台电脑上模拟多种操作系统环境,其应用十分广泛,在软件项目的开发和测试阶段中经常用到。本公众号累计发布了多款用于测试学习用途的虚拟机。一方面,虚拟机可以下载即用,节省虚拟机制作时间,随着光纤等高速网络的普及,下载虚拟机只需要很短的时间,而且几乎不需要人工参与;另一方面,使用制作好的虚拟机,可以减少重复劳动,减少重复踩坑的几率。在实际使用中,由于单个虚拟机的体积即使在压缩后,仍然有5G~40G大小不等,存储多个虚拟机需要大量的存储空间。

2024-01-10 19:17:10 1132

原创 使用FFmpeg+EasyDarwin搭建音视频推拉流测试环境

在上一篇文章《使用VS2017在win10 x64上编译调试FFmpeg(附源码和虚拟机下载)》中,我们讲解了如何搭建FFmpeg源码编译和调试环境。调试FFmpeg,还需要搭建流媒体服务器。流媒体服务器的作用是通过网络对外提供音视频服务,包括但不限于提供视频推流、拉流服务。推流(Push):推流是指将音视频数据从本地设备(如摄像头、麦克风)通过网络上传到服务器的过程。拉流(Pull):拉流是指从直播服务器获取音视频数据并在本地进行播放的过程。

2024-01-09 00:30:51 1480

原创 使用VS2017在win10 x64上编译调试FFmpeg(附源码和虚拟机下载)

借助开源项目,我们可以在Windows下使用Visual Studio编译和调试FFmpeg源码。网上相关的教程很多,写的也十分详细。但由于计算机环境的不同,笔者在编译环境搭建过程中,还是出现了不少问题。本文将对其中容易出问题的部分进行深入讲解。同时,本文将提供可成功编译调试的FFmpeg开发环境虚拟机下载。笔者认为前人踩过的坑,仅作记录即可,后来者不需要再花费同样的精力去重新踩一遍坑,后来者只有站在前人的肩膀上才能看得更远。本文使用VS2017编译FFmpeg,VS2015版本的编译环境正在制作中。

2024-01-07 01:40:36 852

原创 掌握经典排序算法(类型二)由数值找排名

本篇内容主要讲第二种排序类型,即由数值找排名排序法。本篇文章只包含一个算法,相对来说比较简单,读者在了解算法思想的基础上,尽量自己动手编写调试一遍算法代码。算法并不是一成不变的,只要理解了算法的原理,就可以根据需要对算法进行合理优化和改进。下一篇将研究整体局部排序法涉及的相关算法。本文原创发布于Qt未来工程师,后续内容已在公众号中发布,敬请关注。

2023-11-14 01:38:12 73

原创 掌握经典排序算法( 类型一)由排名找最值

排序算法是计算机学科的基础内容。在工作中通常很少需要我们自己编写排序算法,很多开发库会提供相关接口,例如C++标准库,Qt等。既然开发库中有算法可以调用,为什么还要专门学习排序算法呢?主要有两点原因。第一,有些场景需要自行编写排序算法,这需要编程人员对算法有较好的了解。第二,应对考试,面试,排序算法是面试及考试的热点内容,有必要掌握。常见的排序算法有十种,算法类型较多,靠死记硬背,很难记住。网络上有些文章采用了动画的方式进行演示,有助于理解单个算法的计算过程。

2023-11-12 22:19:13 85

原创 【Qt】使用pri文件管理项目中的子模块

pro 文件是Qt的项目文件,里面包含了源文件路径、头文件路径、ui文件路径、资源文件路径、编译选项等诸多信息。当项目比较大时,软件中各个模块的代码文件路径、资源文件路径、编译选项都会写入到pro文件中,不仅导致pro文件会比较大,而且模块之间划分不清晰、耦合性强。如果想要移除、修改某个软件模块,则需要一番查找定位,非常不方便;同时,耦合性强可能会导致在修改某个模块时,错误修改了其他模块,影响其他模块的稳定性。解决此问题的方法,是使用pri文件对Qt项目分模块管理。

2023-09-29 21:39:52 1067

原创 【理解线性代数】(五)矩阵乘法与仿射变换

努力编写中,敬请期待!

2023-09-10 00:47:19 72

原创 【Qt】总体把握文本编码问题

对世界上所有符号、文字进行编号,产生一张字符表,这个表叫做“字符集”。这样一来,我们可以使用数字编号来表示字符,每个编号占用相同的字节数。因为世界上的字符很多,一般使用32位的无符号整型存储编号,总计大约可以表示42亿种字符。目前通用的字符集是Unicode字符集。字符集中,因为有的字符使用频繁,有的字符使用不频繁,使用相同长度的编号有点浪费存储空间。改进的存储方案类似于哈夫曼编码:将使用频繁的字符用更少的字节数表示,使用不频繁的字符,用较长的字节数表示。经过优化的存储方式,叫做“文本编码”。

2023-09-05 01:35:49 778

原创 【理解线性代数】(四)从向量组点乘到矩阵相乘

矩阵A包含2个3维向量,矩阵B包含2个三维向量,矩阵B可以代表三维空间中的一个二维平面空间(两条线组成一个面),所以A中的所有向量投影到B,最终的结果变成了2个2维向量,符合我们对向量点乘及矩阵的理解。因为向量相加,必须在两个向量之间进行,所以矩阵相加,两个相加的矩阵包含的向量个数必须相等,否则会因为缺少向量而无法进行。矩阵A包含2个3维向量,矩阵B包含1个三维向量,矩阵B可以代表三维空间中的一个一维空间,所以A中的所有向量投影到B,最终的结果变成了2个一维向量,符合我们对向量点乘及矩阵的理解。

2023-09-03 16:54:23 1418

原创 【理解线性代数】(三)理解向量点乘

投影比较好理解,和现实生活中光的投影类似,投影最终的结果,和投影物体的形状,被投影物体的形状,以及投影角度有关。因为这里是一个向量(带箭头的线段)向另外一个向量(也是带箭头的线段)上投影,投影出来仍然是线段,计算结果是投影线段的长度。向量b是一条带箭头的线段,可以代表一个一维空间。一个n维向量a,从n维空间中,向一个n维向量b代表的一维空间投影,投影后的点,在一维坐标系下,坐标值为一个实数,即点乘结果。点乘的几何含义是初等数学中的知识,即点乘的几何含义是一个向量向另外一个向量上的投影的长度。

2023-09-03 00:56:39 386

原创 【循序渐进学习线性代数】【二、从初等数学到高等数学】理解线性

两个数相加的结果,没有任何数量损失,也没有任何数量凭空增加,这就是线性。从2kg物质中取走1kg物质,还剩1kg,因为减法本质上是加法,所以也遵循线性运算规则。线性物理规则的世界,质量是稳定的。举个反例,假定一个世界的物理规则是,两种物质混合,质量减少一半。在这种规则下,1+1=1,即为非线性运算。这种规则的世界,是不稳定的,质量会不断湮灭,直至消失。线性空间可以理解为一个只存在线性运算的数字世界,这是一个想象出来的虚拟空间。其实1+1等于2有一个前提条件,那就是必须在线性运算规则下进行。

2023-09-02 18:56:28 231

原创 【循序渐进学习线性代数】(一)线性代数应用和学习现状

记得在学习的时候,由于抽象思维能力不足,没有弄懂行列式,矩阵是什么,课程进度又比较快,导致后面课程落下很多。转眼毕业已七年之久,在七年的学习、工作经历中,深刻体会到了线性代数这种数学工具的重要性,特别是在计算机技术中无处不在:机器学习,神经网络、图像处理算法、3D图形技术,科学计算等等。这种思维和学习模式倾向于将已知的知识,通过拓展延伸,和新的知识建立联系,并将已学知识和新知识融为一体,统一理论,融会贯通。笔者认为,数学的发展,具有从简单到复杂,特殊到普遍的特征。只能算作思维过程记录,并不能算作标准教程。

2023-09-02 14:58:27 100

原创 【编译原理】七、从编码过程理解生成式

前面的文章中,我们从理论和实践的角度,围绕着代码解析做了相关工作。理论和实践密不可分,通过实践,我们可以加强对理论的理解。本篇文章我们主要总结对生成式理论的补充理解。通过实际编码,可以加深对生成式的理解。理论本身的创造过程应该是从实践中总结出来的,但是我们在学习理论的时候,往往是从理论开始的,这就造成了理论很难理解,理论本身有时候并不是很难,而是没有和实践结合起来。词法解析部分的基本原理,我们基本弄明白了。后面我们将进行语法解析的理论学习及程序设计。

2023-08-16 22:17:56 138

原创 【编译原理】六、四则运算支持括号及括号嵌套

在上一篇文章中,我们实现了简单四则运算,现在我们在此基础上,让四则运算支持括号。注意,为了降低复杂度,不支持括号嵌套。

2023-08-07 09:43:25 222

原创 【编译原理】五、简单四则运算的代码实现

前面说了那么多BNF的相关理论知识,实际上就是为了一个目的:描述语法规则描述语法规则是一切的开始。最终,还是要用代码来实现。如果对于BNF仍然是一头雾水,也没关系,因为我们的最终目的是编写解析器,从现在开始,我们的重点应该放到编码上。编写代码需要注意的问题,以及编写思路,并不是一个公式就能描述的,有非常多的细节需要处理,编码实现是理论知识的一个升级。在编写代码的过程中,我们可以加强对理论的理解,加强理论理解同时又能编写复杂的解析代码,正所谓:“理论要联系实际”。

2023-08-06 19:14:07 234

原创 【图像处理】pitch和stride

pitch和stride都表示图像一行占用的字节数,即图像行跨度,此值大于等于图像的一行像素的字节数。图像行跨度 = 图像像素宽度 + 对齐填充字节。

2023-05-18 19:39:04 361

原创 【开箱即用】VirtualBox Ubuntu20.04.6、22.04.2虚拟机下载

Ubuntu虚拟机下载

2023-04-17 14:06:33 623

原创 【Qt调试技巧】如何在Release下调试Qt程序?

实现在Release下调试Qt程序,需要对构造系统进行配置。

2023-03-05 18:57:54 3463

原创 如何在Qt中配置MSVC编译器链接器参数?

eeeee

2023-02-23 00:44:08 2913

原创 掌握Qt构造系统(二)软件部署

讲解Qt软件部署工具及流程。

2023-02-05 13:56:32 1049

原创 掌握Visual Studio项目配置【基础篇】

掌握Visual Studio项目配置

2023-01-03 00:51:32 4385

原创 【开箱即用】VirtualBox Ubuntu16.04.7、18.04.6虚拟机下载

VirtualBox Ubuntu16.04.7、18.04.6虚拟机下载

2022-11-25 12:37:25 883

原创 【Python】打包程序后运行程序出现 ModuleNotFoundError: No module named ‘PySide6‘

【Python】打包程序后运行程序出现 ModuleNotFoundError: No module named 'PySide6'

2022-11-19 22:50:37 641

原创 去哪查阅RFC文档?

查阅RFC方法

2022-11-18 11:43:31 1459

原创 【V4L2】学习资料

V4L2学习资料

2022-11-15 11:27:42 134

Qt桌面GUI软件基础测试参考手册V0.0.1.pdf

Qt桌面GUI软件基础测试参考手册V0.0.1,测试指导说明书。

2024-04-20

teraterm-4.90.zip

目前最强大的多功能串口调试软件,最新版,不好找。

2016-03-20

第九届全国大学生电子设计竞赛获奖作品选编

第九届全国大学生电子设计竞赛获奖作品选编

2015-06-01

C语言深度解剖

提高C/C++编程技巧,摆脱入门身份的好书,文字格式的pdf,清晰可复制,我在每章加上了书签。

2015-03-30

安卓开发环境配置的批处理

用批处理配置环境,java_home,classpath等,根据提示,轻松配置

2015-03-18

Intel汇编语言程序设计第五版 中文高清

完整的,看起来挺清晰的,学习汇编的第二部好书

2015-03-18

STM32模板工程配置工具

批处理配置STM32模板工具,基本嗾使文件复制的工作,让计算机来做可以省很多事

2015-01-10

编程高手箴言.pdf

经常看看各种书,脱离代码工的境界

2014-12-24

算法导论中文版

算法导论中文版

2014-12-24

计算机网络入门实用教程

外国人写的,书本读起来很流畅,初中级入门,比较结合实际

2014-12-13

批处理标准教程.pdf

批处理入门教程的书,很清晰,这本书入门完全够了

2014-11-30

汇编入门教程chm

图文简单明了,绝对推荐,有十二章,帮助你了解cpu工作原理

2014-11-26

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

TA关注的人

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