- 博客(229)
- 资源 (11)
- 问答 (2)
- 收藏
- 关注
原创 【Qt】总体把握文本编码问题
对世界上所有符号、文字进行编号,产生一张字符表,这个表叫做“字符集”。这样一来,我们可以使用数字编号来表示字符,每个编号占用相同的字节数。因为世界上的字符很多,一般使用32位的无符号整型存储编号,总计大约可以表示42亿种字符。目前通用的字符集是Unicode字符集。字符集中,因为有的字符使用频繁,有的字符使用不频繁,使用相同长度的编号有点浪费存储空间。改进的存储方案类似于哈夫曼编码:将使用频繁的字符用更少的字节数表示,使用不频繁的字符,用较长的字节数表示。经过优化的存储方式,叫做“文本编码”。
2023-09-05 01:35:49 829
原创 【理解线性代数】(四)从向量组点乘到矩阵相乘
矩阵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 1680
原创 【理解线性代数】(三)理解向量点乘
投影比较好理解,和现实生活中光的投影类似,投影最终的结果,和投影物体的形状,被投影物体的形状,以及投影角度有关。因为这里是一个向量(带箭头的线段)向另外一个向量(也是带箭头的线段)上投影,投影出来仍然是线段,计算结果是投影线段的长度。向量b是一条带箭头的线段,可以代表一个一维空间。一个n维向量a,从n维空间中,向一个n维向量b代表的一维空间投影,投影后的点,在一维坐标系下,坐标值为一个实数,即点乘结果。点乘的几何含义是初等数学中的知识,即点乘的几何含义是一个向量向另外一个向量上的投影的长度。
2023-09-03 00:56:39 489
原创 【循序渐进学习线性代数】【二、从初等数学到高等数学】理解线性
两个数相加的结果,没有任何数量损失,也没有任何数量凭空增加,这就是线性。从2kg物质中取走1kg物质,还剩1kg,因为减法本质上是加法,所以也遵循线性运算规则。线性物理规则的世界,质量是稳定的。举个反例,假定一个世界的物理规则是,两种物质混合,质量减少一半。在这种规则下,1+1=1,即为非线性运算。这种规则的世界,是不稳定的,质量会不断湮灭,直至消失。线性空间可以理解为一个只存在线性运算的数字世界,这是一个想象出来的虚拟空间。其实1+1等于2有一个前提条件,那就是必须在线性运算规则下进行。
2023-09-02 18:56:28 291
原创 【循序渐进学习线性代数】(一)线性代数应用和学习现状
记得在学习的时候,由于抽象思维能力不足,没有弄懂行列式,矩阵是什么,课程进度又比较快,导致后面课程落下很多。转眼毕业已七年之久,在七年的学习、工作经历中,深刻体会到了线性代数这种数学工具的重要性,特别是在计算机技术中无处不在:机器学习,神经网络、图像处理算法、3D图形技术,科学计算等等。这种思维和学习模式倾向于将已知的知识,通过拓展延伸,和新的知识建立联系,并将已学知识和新知识融为一体,统一理论,融会贯通。笔者认为,数学的发展,具有从简单到复杂,特殊到普遍的特征。只能算作思维过程记录,并不能算作标准教程。
2023-09-02 14:58:27 134
原创 【编译原理】七、从编码过程理解生成式
前面的文章中,我们从理论和实践的角度,围绕着代码解析做了相关工作。理论和实践密不可分,通过实践,我们可以加强对理论的理解。本篇文章我们主要总结对生成式理论的补充理解。通过实际编码,可以加深对生成式的理解。理论本身的创造过程应该是从实践中总结出来的,但是我们在学习理论的时候,往往是从理论开始的,这就造成了理论很难理解,理论本身有时候并不是很难,而是没有和实践结合起来。词法解析部分的基本原理,我们基本弄明白了。后面我们将进行语法解析的理论学习及程序设计。
2023-08-16 22:17:56 196
原创 【编译原理】六、四则运算支持括号及括号嵌套
在上一篇文章中,我们实现了简单四则运算,现在我们在此基础上,让四则运算支持括号。注意,为了降低复杂度,不支持括号嵌套。
2023-08-07 09:43:25 295
原创 【编译原理】五、简单四则运算的代码实现
前面说了那么多BNF的相关理论知识,实际上就是为了一个目的:描述语法规则描述语法规则是一切的开始。最终,还是要用代码来实现。如果对于BNF仍然是一头雾水,也没关系,因为我们的最终目的是编写解析器,从现在开始,我们的重点应该放到编码上。编写代码需要注意的问题,以及编写思路,并不是一个公式就能描述的,有非常多的细节需要处理,编码实现是理论知识的一个升级。在编写代码的过程中,我们可以加强对理论的理解,加强理论理解同时又能编写复杂的解析代码,正所谓:“理论要联系实际”。
2023-08-06 19:14:07 290
原创 【图像处理】pitch和stride
pitch和stride都表示图像一行占用的字节数,即图像行跨度,此值大于等于图像的一行像素的字节数。图像行跨度 = 图像像素宽度 + 对齐填充字节。
2023-05-18 19:39:04 502
原创 【开箱即用】VirtualBox Ubuntu16.04.7、18.04.6虚拟机下载
VirtualBox Ubuntu16.04.7、18.04.6虚拟机下载
2022-11-25 12:37:25 922
原创 【Python】打包程序后运行程序出现 ModuleNotFoundError: No module named ‘PySide6‘
【Python】打包程序后运行程序出现 ModuleNotFoundError: No module named 'PySide6'
2022-11-19 22:50:37 909
原创 纠正一个可能的错误翻译—交叉编译
交叉编译是在一个平台上生成另一个平台上的可执行代码。因此,以Linux为主机操作系统,搭配一个交叉编译系统,为嵌入式设备生成可执行程序已成为日益流行的编译嵌入式软件的解决方案。程序编译运行过程,传统方式下在一个平台,即一台电脑即可完成,但由于嵌入式环境的特殊性,必须横跨两个平台(一个是开发机,一个是部署机)才能完成,所以叫跨平台编译。好了,说到这大家都应该明白了,交叉编译和交叉没有一点关系。相对于“交叉编译”,使用“跨平台编译”,更加专业,准确。在A平台编译可在B平台运行的可执行程序。
2022-10-24 11:25:41 152
原创 音频帧AVFrame::linesize大于实际值的问题记录
通过打印AVFrame::data[0],确定了只有4096字节的数据是有效数据,所以应该以 AVFrame::nb_samples * av_get_bytes_per_sample(AVFrame::format)大小来判断有效数据长度。但是AVFrame::nb_samples为1024,AVFrame::format类型为AV_SAMPLE_FMT_FLTP,即每个采样是4字节。那么此音频帧中的数据应该为4096,和AVFrame::linesize[0]不相等。
2022-10-18 18:02:43 665
原创 【已解决】解决Win7安装VS2013/VS2015结束时报错“无法建立到信任根颁发机构的证书链”的问题
本文提供了两种解决安装VS2013/VS2015过程中出现证书问题的解决方案。
2022-08-18 23:39:51 1739
原创 【OSG】OSG运行模型
关于运行模型OSG中的类很多,只看OSG代码,很难把各个类串联起来。我们知道面向对象程序的运行模型是:对象+对象间协作。单纯看代码,多数情形下,只能了解程序中有哪些对象,而不知道它们是如何协作的,这是目前IT行业中,源码阅读最大的痛点。说直白一点,就是拿到源码也看不懂,或者说很难看懂。开发者在开发程序时,首先要设计程序的运行模型,然后根据运行模型编写代码。所以,阅读源码和编写代码是一个相反的过程。至此,看不懂源码的原因就比较明显了:源码是静态的,而运行时的程序是动态的,想通过静态的代码信息掌握
2022-05-17 16:39:32 712 1
原创 OpenGL基本运行模型
OpenGL是一种三维技术规范。我们知道三维渲染场景需要实时计算大量数据。这里我根据自己的经验总结出一句话:计算机中,对性能要求高的功能模块,其运行原理必然是简单易行的!有理由断言:OpenGL没那么难。OpenGL工作原理示意图如下图(不断改进中)简要概括OpenGL工作原理OpenGL绘制某个场景:第一步:程序放数据进缓存,数据必须是可快速独立访问的;第二步:配置数据结构,解释内存,比如VAO,VBO;第三步:并行计算(并行执行着色器shader);第四步:输出前处理(深
2022-05-16 23:10:05 302
原创 关于typedef的正确理解
我对typedef的理解一直都是认为它和#define一样,分成三个部分,比如:#define A B但是遇到以下这种函数类型定义typedef void (*funcName)(int);按照上面的理解,难道是要把void定义成(*funcName)(int)?显然不对。这个问题困扰了我很久。typedef并不是以空格为分隔符,把一句定义分隔成几个固定的部分来处理的。typedef这个预处理关键字的意思是:定义一个类型常量。也就是说,定义内容里面除了类型部分,就是常量部分,至于它们的位置,
2022-05-13 16:59:23 268
原创 【OSG】Examples
1. Examples osgbillboard这个项目很简单,就几个函数,而且很有意思。osg::Billboard类是一个控制器,不管你怎么旋转漫游场景,它始终都会朝向摄像机。看里面代码时,就会接触到osg的核心类了,比如- osg::Geometry- osg::Vec3Array- osg::StateSet- osg::Group- osgViewer::Viewer- 等等这里面的类又会引用到其他类,慢慢展开,但是大体上都是属于 OSG Core/osg 项目中的内容,也就
2022-05-12 18:57:51 4034
原创 【OSG学习】学习方法
1. 环境准备运行调试环境的准备参考我的另外一篇博客:【OSG学习】准备开发调试环境运行调试环境准备比较麻烦,但是不复杂,需要耐心。但是可能很多人会被卡在这一步,后面我会专门提供直接可以使用的完整项目,方便大家学习使用。2. 学习过程2.1 看书这里推荐一些书:《最长的一帧.pdf》《OpenSceneGraph快速入门指南.pdf》,原版 《OpenSceneGraph Quick Start Guide.pdf》《OpenSceneGraph程序设计.pdf》《OpenSceneGr
2022-05-12 16:46:01 1120
原创 【开源库学习】OpenThreads
项目地址Github:https://github.com/tibogens/OpenThreads码云:https://gitee.com/lukeson/OpenThreads参考资料网上已经有很多比较好的文章了,这里汇总一下,便于查阅。OpenThreads库介绍——ConditionOpenThreads库介绍——BarrierOpenThreads库介绍——BlockOpenThreads库介绍——ReadWriteMutexOpenThreads库介绍——Mutex..
2022-05-11 11:01:02 350
原创 【iOS开发】崩溃问题汇总
EXC_BAD_ACCESS崩溃位置:在UIApplicationMain函数内崩溃,相关函数:objc_release,场景:在界面多次切换时崩溃,可以稳定复现,环境:启用了ARC。原因可能有很多种,我的是因为:在结构体中存储了OC对象,如下struct CellData{NSString *display_text;UIColor *text_color;NSString *image_name;}然后使用了NSValue保存了结构体,把NSValue存入NSMutableArrr
2022-03-08 23:41:19 2378 1
原创 【微软官方文档】Windows终端(Windows Terminal)
https://docs.microsoft.com/zh-cn/windows/terminal/
2022-03-07 00:07:03 722
原创 Windows上快速在指定目录打开cmd.exe命令行的方法
普通方式运行->输入cmd.exe,点击确定,打开cmd.exe。在cmd.exe中输入命令cd /d 目标文件夹路径即可进入到目标文件夹路径中。快速方式1(Win7及以下版本操作系统)在资源管理器中打开目标文件夹,按住 Shift,在资源管理器文件夹中右键,弹出上下文菜单中,有在此处打开命令行的选项,直接选择即可打开。快速方式2(Win10及以上系统)同样,在资源管理器中打开目标文件夹,在地址栏中输入cmd.exe,回车即可直接打开命令行并进入到当前文件夹。如下图所示:
2022-03-06 23:29:09 5377
原创 【微软官方文档】应用程序错误处理
https://docs.microsoft.com/zh-cn/windows/win32/debugging-and-error-handling
2022-03-06 22:59:14 232
原创 windeployqt.exe的使用与避坑(windows平台)
介绍windeployqt.exe是Qt自带的工具,用于创建应用程序发布包。简单来说,这个工具可以自动地将某程序依赖的库、资源拷贝到其所在目录,防止程序在其他电脑上运行报找不到库的错误。这里贴上官方文档:https://doc.qt.io/qt-5/windows-deployment.html原理windeployqt.exe的工作原理很简单,它会到当前的环境变量PATH配置的搜索路径中,查找应用程序所需要的库。使用正确的用法:1、先从开始菜单中打开对应版本的Qt命令行界面,如下图:2
2022-03-01 22:12:46 20218 9
原创 【iOS开发】添加评分功能
问题openURL无法跳转到App store报错 :Failed to open URL itms://itunes.apple.com/us/app/apple-store/idxxxxx使用canOpenURL时,打印出了错误原因:error: “This app is not allowed to query for scheme itms”,显然是配置问题。各种问题,搞了一下午了。参考下面文章:为您的App添加应用内评分功能SKStoreProductViewController中的
2022-02-27 01:27:51 1912
谁能来打消我的忧虑??
2014-10-18
在别的地方弹出的系统菜单点击菜单项没有反应?
2014-09-06
TA创建的收藏夹 TA关注的收藏夹
TA关注的人