自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(152)
  • 资源 (5)
  • 收藏
  • 关注

原创 《富爸爸穷爸爸》笔记

每个孩子都需要得到更多的、不同的教育,他们得知道真实生活中的游戏规则,各种不同的规则- 当我们作为父母建议自己的孩子“去学校,好好学习,找份好工作”时,我们常常只是出于文化习惯才这么做的,大家都认为这么做是对的- 一个人的观念对他的一生影响巨大- 我的一个爸爸总是习惯说“我可付不起”,而另一个爸爸则禁止我们说这样的话,他坚持让我这样说:“我怎样才能付得起?”- 一句让你放弃,而另一句则促使你去想办法- 知道什么时候要迅速作出决定是一项非常重要的技能- 你必须明白资产和负债的区别,并且购买资产

2024-04-04 22:16:11 443

原创 C++-三目运算符注意点与临时变量的坑

上述代码的最后一行会导致crash,原因在于,三目运算符返回的是一个左值,即可以看作是一个临时变量,我们知道变量都有且只有一个类型,由于我们getName()的返回值是一个string,所以临时变量就是string类型,此时如果三目运算符条件为假,那么就将一个0值(nullptr)赋给了一个string,而这会导致程序崩溃。这里我们的问题在于忽略了三目运算符返回的是一个左值(变量),并且让表达式在条件为真和假的时候返回的类型不兼容导致的。,然后返回的值作为三目运算符的条件。

2024-03-27 23:53:04 207

原创 C++-获取struct成员变量的偏移量

将表达式从内向外解析,首先给出0地址或者使用nullptr均可,然后强转成结构体指针类型,接着访问成员a,然后取a的地址,由于一开始给出的地址是0地址,所以a的地址便是相对于结构体起始地址的偏移量。改变struct member顺序。

2024-03-24 15:51:06 140

原创 Qt-QDialog非模态置于窗口之上且操作主窗口不隐藏dialog的方法

将当前widget提升到parent widget stack的最顶层,这使我们在操作其他窗口时,也能保持dialog显示在其他窗口的上方而不会被遮盖住。方法会重置其windowFlags,因此我们将其原始windowFlags传入作为参数以保留原始属性。不传入将导致dialog显示异常。以非模态显示dialog,是我们能操作dialog以外的其他窗口。QDialog继承自QWidget,

2024-03-21 00:07:17 350

原创 Linux-vim常用操作

本文介绍一些本人在使用vim时最常用操作:打开文件```bashvi 1.cpp```同时打开多个文件```bashvi -O 1.cpp 2.cpp```此时会分成左右两个区域分别对应两个文件。按ctrl+w两次切换当前编辑的文件命令模式操作:- `o`新起一行- `dd`剪切一行- `ndd`剪切n行- `yy`复制一行- `nyy`复制n行- `p`在当前光标所在行下一行粘贴剪贴板内容- `u`undo撤销到上一次编辑状态- `ctrl+r` redo重做编辑

2024-03-14 00:38:02 292

原创 Qt-QPainter drawText方法不同重载之间的区别

QPainter类的drawText方法有如下重载,可以分成两类,一类是提供点坐标绘制文本,一类是提供方框绘制文本。区别在于提供点坐标进行绘制的时候,点是在文本的左下角。而提供矩形的时候,矩形的点是在文本的左上角,同时也是矩形的左上角。可以看到两个函数提供的点坐标锚定的是文本的不同位置,使用时要多多注意。

2024-03-14 00:16:39 413

原创 C++-gdb调试常用功能

gdb调试常用功能如下,其中bin为要调试的程序,arg为参数### 启动gdb- 启动调试 gdb bin- 带参数启动 gdb --args bin arg1 arg2- so预加载LD_PRELOAD=/path/to/lib.so && gdb bin### 运行程序- r 开始运行程序- r arg1 arg2以参数启动程序### 设置断点

2024-01-25 22:17:14 455

原创 Qt-QFileDialog保存文件及获取带扩展名的文件名

构造函数的第一个参数是parent第二个参数是dialog标题,第三个参数是默认打开的文件路径,如果文件路径带有文件名则文件名会自动填入文件名一栏中,第四个参数是过滤的文件类型,括号里面是扩展名,括号前面是扩展名的文件类型描述。方法,返回的文件名是不带后缀的,也无法通过设置default suffix来改变此行为,因为dialog是方法内部创建的,我们无法访问到。接口在文件名没有后缀的情况下会自动添加默认后缀名,如果有后缀名则不添加,这里的“文件名”指的是dialog中这一栏的值。路径+abc.txt。

2024-01-23 22:13:38 869

原创 Thinking-自我提升的方法论

来自抖音号“玮成同学”的观点总结。

2024-01-22 00:57:29 438

原创 Algorithm-Left Edge算法

所谓冲突图(Conflict Graph)是一种用来表示资源分配冲突的图结构。表示冲突图最少需要3种颜色使得相邻颜色不相同。

2024-01-03 23:38:54 447

原创 Qt-QTransform介绍与使用

我们知道Qt的坐标系是左上角为原点,x轴向右,y轴向下,屏幕上每个像素代表一个单位,那么,如果我们想要在屏幕上建立自己的坐标系用于绘制,就需要借助QTransform。scale函数将xy轴放大缩小,比例值为Qt像素值/自定义坐标像素值,1/2表示,1一个原单位值等于现在2个单位值,其中负数表示改变y轴为原来相反方向。可以看到Qt坐标系(红),自定义坐标系(绿)和自定义坐标系中绘制的矩形,实际为25*100的矩形,且可以发现penWidth宽度在y轴也发生了放大。

2023-12-19 00:09:08 618

原创 C++-LD_PRELOAD

LD_PRELOAD是linux上的一个环境变量,作用是在程序启动前先加载这个动态链接库(无论程序本身是否需要)。

2023-12-17 16:01:50 127

原创 Qt-Q_OBJECT宏使用与“无法解析的外部符号qt_metacall/metaObject/qt_metacast“

这里的几个函数的声明是由Q_OBJECT宏引入的,而其对应的实现是由moc实现的,如果我们更新了代码但是没有执行qmake,moc可能就无法识别到这个宏从而无法帮助我们生成moc文件,qtcreator中右键项目点击执行qmake再生成即可,或者直接点击重新构建即可。一般来说Qt强烈建议继承QObject的子类都加上Q_OBJECT宏。

2023-12-06 22:59:00 670

原创 C++-空指针调用不会引起crash

注意:在C++中对nullptr的访问是undefined behavior,虽然大多数时候实际不会造成崩溃,但我们不能依赖这种未定义的行为,因为它可能崩溃也可能不崩溃,跟编译器也有关系,还是应判断空指针,避免这种情况发生。,类方法是类的一部分,而非对象的一部分。可以看到对方法的调用跳转的位置是一样的,这证明了类方法是类的一部分而非对象的一部分,调用后走到。将ra引用绑定到对pa的取值上和调用func都可以正常执行,不会导致崩溃,这是。,汇编对应的代码将会基于0地址取对象中的n的值,此时才会造成崩溃。

2023-12-05 23:29:15 164

原创 LLM-Intro to Large Language Models

LLMwhat is?2 files。

2023-12-03 23:54:24 424

原创 Qt-QSplitter正确设置比例以及移除widget

网上说的setStetch方法对我不管用,并且会受到sizePolicy和minimum size影响,因此我并不推荐使用。splitter大小不会变化,比设置的值多的和少的空间将会按照sizes之间的比例分配。size policy保留,且widget至少有minmum size的最小值大小。

2023-11-30 22:43:22 894 1

原创 Qt-No relevant classes found. No output generated问题解决

qt在编译时会使用moc,即Meta-Object Compiler,对任何继承于QObject的子类我们都应在类开头写上Q_OBJECT,而moc做的一件事情便是将带有Q_OBJECT的类的cpp文件使用moc进行处理,这是因为Q_OBJECT实际上声明了一些函数,而moc负责对其进行实现,Qt信号槽的能力就依赖于moc,处理生成的文件名称为moc_xxxx.cpp,最终C++编译器是将这些moc生成的文件再拿去编译的。这其实不是一个错误或者警告,而是一个信息而已,需要根据我们的具体情况解决。

2023-11-30 22:19:56 587

原创 C++-一些关于C++、你可能忽略的知识点(更新中)

变量并指向一个字符串常量,虽然不带const,但不应改变其字符串内容,因为这是一个undefined behavior,这个字符串常量存储的位置是可执行文件的代码段,该段仅可读而不可写。如果要声明可以改变其指向内容的char。的区域,我们改变的不是字符串常量本身,而是s指向的内存区域,第一句代码执行后,字符串常量的内容已经拷贝到可读写的栈中。此时s指向的地址在栈上,因此可以改变其指向的内容,声明一个不带const修饰符的char。可以直接使用TestClass::A。:字符串常量永远存储在。

2023-11-28 22:26:11 413

原创 Linux-chrpath指令

chrpath指令用于改变程序的rpath/runpath,从而改变.so动态库搜索路径,常见用法为。第一种用法将一个指定的路径替换原程序的rpath/runpath。第二种用法中的$ORIGIN表示程序所在路径。查看程序rpath/runpath。

2023-11-27 23:38:49 326 2

原创 UVM-什么是UVM方法学

百度对UVM的解释如下:通用验证方法学(Universal Verification Methodology, UVM)是一个以的验证平台开发框架,验证工程师可以利用其构建具有的功能验证环境。

2023-10-22 12:01:50 414

原创 C++-标准库 std::pair介绍

第三个构造函数的含义是,将first_args tuple中的元素作为参数传递给first类型的构造函数,first_args tuple中的元素作为参数传递给second类型的构造函数,piecewise_construct_t是一个struct类型。std::piecewise_construct是std内部声明的一个变量,t中的1和2.22将作为Foo类的构造函数参数传入。前两个构造函数是我们常见的形式,传递一个实参给first,另一个实参给second,并支持move语义和隐式类型转换的支持。

2023-10-15 23:25:41 585

原创 C++-标准库 nullptr关键字

nullptr被自动转换为各种pointer类型,但不会被转换为任何整数类型,它拥有类型std::nullptr_t,定义于,是一个基础类型。

2023-10-07 23:20:14 89

原创 Qt-事件循环与QtConcurrent、QThread结合使用时注意的点

【代码】Qt-事件循环与QtConcurrent、QThread结合使用时注意的点。

2023-08-23 00:21:23 883

原创 Qt-QBasicTimer can only be used with threads started with QThread原因探究

QBasicTimer can only be used with threads started with QThread。在项目中检查发现确实使用了一个static的QDialog,并且ui包含combobox的时候退出时会打印warning,如果没有combobox则不会。中,提问者的现象和我一致,猜测的原因是QObject和QApplication的析构顺序造成的。查找资料后发现,报错的原因很可能是因为使用了static QObject造成的

2023-08-22 23:31:53 1061

原创 System Verilog-packed array以及unpacked array

维度在标识符前面的部分称为,在标识符后面的部分称为,一维的pakced array也称为vector。

2023-08-10 22:50:46 531

原创 System Verilog-数据类型

System Verilog数据类型分为两大类,一类是变量(variable),一类是网线(net)。这两种类型在赋值和存储值上有所区别。一般声明wire和reg的地方大部分都可用logic代替,它既可以连续赋值也可以过程赋值,但不能有多驱动。还有一些数据类型只能存储0和1,如。一些数据类型可以存储上述4种值,如。System Verilog还支持。

2023-08-10 21:37:29 198

原创 C++-使用clang-format格式化代码

我的解决方法是在https://github.com/llvm/llvm-project/releases下载LLVM-16.0.5-win64.exe。windows下,在.pro目录下创建.clang-format文件,linux下,在用户目录创建.clang-format文件。,解压后在bin下找到clang-format.exe,修改Clang Format command为exe。重启后,点击工具->选项->Beautifier->Clang Format,选择使用File定义风格。

2023-08-08 23:09:43 515

原创 C-lex yacc入门看这篇就够了

当我们面对一个具有一定语法规则的文本内容,如log文件,CMakeLists.txt,甚至某种编程语言的源文件,希望提取出其中的有用信息时,我们该如何做?最简单的方式就是使用逐字或者逐行读取的方式,根据文本的规则去编写if条件语句,判断是否已经碰到了我们希望读取的内容,如果是则提取信息,否则跳过。对于具有复杂规则的文本,这么做的效率很低,并且不够优雅。我们可以使用lex yacc来帮助我们进行这项工作。lex允许将一个名字(name)和正则表达式关联起来,称之为定义(definition)

2023-06-29 22:24:04 481

原创 Qt-XPM格式图片

X PixMap (XPM)是一种基于ASCII编码的图像格式。特点是文件格式简单,可以被任何文本编辑> 器创建和修改,另外通过#include指令可以将XPM格式的图形数据导入C语言源文件。这里定义了一个16x16的图片,使用3种颜色,每个像素用一个字符表示。这样我们就在没有任何绘图工具的情况下绘制了一个简单的图片。Qt中可以使用XPM格式的文件作为button icon。那么什么是XPM文件?

2023-05-11 22:47:16 565 1

原创 Effective C++-条款47 使用traits class表现类型信息

std::advance函数是一个工具模板函数,用于将一个迭代器移动给定距离。本条款讲述了如何利用C++和编译器特性实现std::advance,其中最核心的问题便是如何在编译器得到一个类的类型信息。

2023-01-17 23:48:41 457

原创 CMake-官方教程(5)-安装文件与添加测试用例-Installing and Testing

安装指定目标到lib文件夹中安装文件到指定目录中安装Debug版本相关文件,安装目录的前缀是/home/myuser/installdir。

2023-01-09 22:20:05 277

原创 《如何阅读一本书》笔记

如何阅读一本书 (莫提默·J.艾德勒)您在位置 #429-430的标注 | 添加于 2022年7月17日星期日 上午11:35:11如何阅读一本书 (莫提默·J.艾德勒)您在位置 #437-438的标注 | 添加于 2022年7月17日星期日 上午11:35:49如何阅读一本书 (莫提默·J.艾德勒)您在位置 #576-578的标注 | 添加于 2022年7月17日星期日 下午3:01:06如何阅读一本书 (莫提默·J.艾德勒)

2023-01-04 23:54:52 451

原创 CMake-官方教程(4)-生成器表达式-Adding Generator Expressions

cmake构建分为config和build阶段,生成器表达式的值在build阶段才得到。生成器表达式可用于根据某些条件设置某些变量和编译选项。

2023-01-04 00:13:36 610

原创 CMake-官方教程(3)-添加库使用要求-Adding Usage Requirements for a Library

在库所在目录的CMakeLists.txt中,添加target_include_directories命令使得链接该库的目标自动include相关目录。INTERFACE表示使用MathFunctions库的目标自动include相关目录,但是库自身不会include这些目录。

2023-01-03 21:54:37 104

原创 CMake-官方教程(2)-添加库-Adding a Library

list命令含义是添加MathFunctions到名字为EXTRA_LIBS的列表中,引用list的方式如下。添加子目录来构建子模块,子目录中同样编写CMakeLists.txt来管理。表示当前CMakeLists.txt所在的目录,在上层CMakeLists.txt使用。为目标添加包含目录,其中。表示cmake构建目录。

2022-12-22 22:37:14 793

原创 CMake-官方教程(1)-最简单的CMake项目-A Basic Starting Point

在最简单的项目中,只有一个源文件,并且最终生成一个可执行文件,使用CMake管理只需要3条CMake指令。命令将拷贝输入文件并转化为输出文件,并将其中的特殊变量转换为CMakeLists.txt的的。可以进入CMakeLists.txt所在目录,创建构建目录存放构建出的文件。CMake包含一些以CMAKE_开头的特殊变量,如。告诉CMake使用指定的源文件创建一个可执行文件。这能够保证CMake使用兼容版本的函数。这种方式可以很好的管理软件版本。配置项目并生成本地构建系统。

2022-12-18 23:43:31 286

原创 Git-Pro Git前三章笔记+日常使用命令

本文记录一些学习《Pro Git》book的一些笔记和工作中常用到的一些git指令。

2022-09-07 22:19:12 254

原创 Linux-常用Linux命令(持续更新)

export命令用于设置或显示环境变量。在shell中执行程序时,shell会提供一组环境变量。export可新增,修改或删除环境变量,供后续执行的程序使用。在当前bash环境下读取并执行FileName中的命令。通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录。‘source’通常用’.'代替,即。-n删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中。-p列出所有的shell赋予程序的环境变量。-f代表[变量名称]中为函数名称。...

2022-07-19 22:41:24 219

原创 Linux-命令提示符显示当前完整路径

u当前用户名\h当前主机名pwd当前完整路径$$符号。

2022-07-19 22:24:17 952

原创 Qt-LineEdit限制输入-正则与validator

编写Validator子类主要继承不同Validator类并重写validate方法。例如:QValidator::Intermediate表示输入中间状态,需要根据后续输入判断是否变为QValidator::Acceptable或者QValidator::Invalid

2022-07-12 16:10:24 946

C++-Nuget打包-上传工具

## 使用说明 为了实现方便起见,使用软件前有部分约定需要遵守,否则无法正确使用该工具: - 应配置好环境变量,使得能在命令行中直接调用nuget和devenv.com - 项目生成dll或者lib - 项目目录下应包含一个include文件夹,包含所有dll或lib对外提供的头文件,目录结构可嵌套 - 版本号由数字+'.'组合,通常应为x.x.x或者x.x.x.x 正常的使用流程为: 1. 选择解决方案文件 2. 项目名称、ID、版本号会自动填写 3. 手动填写描述和作者信息 4. 选择源地址,即Nuget包要上传的地址 5. 点击”生成Nuget包“ 6. 生成成功后,点击“上传Nuget包”,将上传nuget包到指定源服务器上 第一次使用时,请先点击设置菜单中的“nuget源设置”,点击“添加”配置源名称和地址(仅支持http源),单击某行后点击“删除”以删除相应配置项,点击打叉按钮保存。 补充说明: - 软件会记忆上次关闭时使用的源 - 错误信息会使用红字打印在下方输出窗口中 - 如果原项目有依赖其他nuget包,将自动添加依赖关系 - 工具会修改项目vcxp

2022-05-26

life_game.7z

生命游戏,可自定义和交互。操作: start or stop:space button speed up:UP arrow speed down:DOWN arrow change life:click life

2020-06-05

TodoList任务清单

根据http://axuebin.com/react-todolist/做的TodolList。css未使用AntUI,因此checkbox和输入框看起来比较糟糕,不过功能一样的,最终有用的文件其实就两个,一个是webpack打包出来的bundle.js,一个是index.html,其他内容只是开发过程中需要的。

2019-03-18

TicTacToe井字游戏

根据react官网教程所作,并且完善了最后的提升难度部分

2019-03-18

python基础教程思维导图

Magnus Lie Hetlan的《python基础教程》的基础知识部分,覆盖了前十章的内容,涉及python基本的数据类型,语法知识,语法糖等内容,本书之后的内容主要是对各个常见模块的使用,与基础知识部分不太相关,自行选区需要的模块练习即可。注释写了一些函数或者方法的常见用法,注意点,概念的介绍和个人的理解,方便以后查阅

2019-03-03

空空如也

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

TA关注的人

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