呜呜呜,C语言白学了.jpg

今天看C4P(C++ Primer Plus)才发现两个东西:

  1. define不是全文替换,而是单词替换;

假设有如下代码段:

#include ...
#define test "sss"
...
    char s[] = test;
    float tested = 1;
    printf("%s test\n", s);
...

输出是sss test而不是sss "sss"。(C++支持连续字符串自动拼接) (如果要验证define会不会替换变量名的话,得要至少两个文件才行)

  1. C语言的字符常量是按照int大小(通常是4Bytes)存储的。C++早期也是,后来才改成了和char一致的大小(按int存储的话会导致cout以数字形式输出字符常量的ASCII码)。

因为最近要用到YCSB,需要了解其中的工作原理,因而被迫RTFSC

虽然YCSB使用Java实现,我之前也用Java写过简单的SpringBoot,但当时也只是简单的处理依赖关系,骚操作没有YCSB这么多,因而这也算是第一次正式地使用Maven了。

POM,Project Object Model,顾名思义,可以理解为对当前项目的“建模”,实现上采用了XML文件的形式来描述项目的结构,包括项目名、版本、以及其他和C/C++项目类似的文件结构的定义(源码、库、资源文件等)。

简要介绍一下常用,但网上解释不是很清晰的的XML块(补充性质):

  • profiles profiles中可以有多个profile,每个profile由一个id和一组properties组成,若当前profile和id对应的时候,当前的properties就被激活。属性在properties中以<key>value</key>的XML格式声明,使用时用类shell的${}操作符包裹key以获取属性值。(平时XML用得少,不是很习惯这种写法)

  • assembly 一开始以为是汇编,存放的是什么低级字节码一类的,后来发现是打包,= = 在此可以声明自定义规则,format(s)块用于声明打包文件类型,fileSet(s)声明主要文件映射,dependencySet(s)声明依赖文件映射。这里的映射是指源文件目录结构到压缩文件目录结构之间的,动作是将指定文件添加入压缩文件。directoryoutputDirectoryinclude(s)依次声明一个fileSet所指向的目录、所要包含的文件和目标路径。

又到了每年闲下来,嚷嚷着要开坑新项目的季节了。然而仔细一想,去年挖坑说是要填的CHIP8还没有动手呢。

你怎么回事,小老弟.jpg

然而不得不承认的是,打开Visual Studio,创建好一个名为CHIP8的项目,可以说是人类历史上的一大壮举了。俗话说的好,良好的开端是成功的一半嘛。(大雾)

经历了今年整个冬春COVID的闭门不出,一个夏天的人心惶惶,一个秋天的摸爬滚打,让人感慨万千。又到了冬天,而一切又总算是回到了正轨。好在功夫不负有心人,过去几年的努力没有白费,未来几年总算不愁没饭吃了。

回到正题,Qt的部署方式和常规的应用开发是有区别的。普通应用的开发,只要把依赖库按照编译时的需求配置好,环境变量配置好,就可以带着到处跑。

但是Qt不行,如果按照传统思维的缺啥补啥的思路的话,Qt反而会报错,提示类似Qt安装损坏的信息。

后来到网上搜索后发现,Qt是有一套平台部署工具的(https://doc.qt.io/qt-5/windows-deployment.html),按照里面的说明,执行`windeployqt.exe`,即可自动完成应用部署。部署完成后,目标目录下会出现一大堆依赖文件,跟随应用一起打包即可

让Visual Studio在每次编译完成后自动部署Qt应用的方法是,右键项目->生成事件->生成后事件,在此可以利用Visual Studio的内置变量辅助完成自动部署指令的编写。可以理解为,在这里执行的命令行是通过cmd.exe执行的,因而需要使用CMD语法。

Release配置文件下的命令可以写成如下形式:

"$(QMake_QT_HOST_BINS_)/windeployqt.exe" --release "$(TargetPath)"

需要注意一下的是,如果不使用--dir选项指定为文件夹形式(让windeployqt.exe自行搜索Qt可执行文件)的话,$(TargetPath)位置需要填写项目的Qt可执行文件位置。

之前因为要用到某些IPv6的网站,就把网线从不支持IPv6的路由器上拔下来,直接插到光猫上,拨号上网。

结果问题就来了。最近在收集3A大作,每次挂上bt大约一个小时左右,系统就会直接卡死。没错,不是自动重启,也没有蓝屏,整块屏幕就保持卡死前最后一刻的状态,硬盘灯也不闪。这导致,上百G的文件好不容易花上快半个小时校验完,还没下个多少,又得重新校验。这个问题连着出了四五次,使我提高了对这个问题的重视程度。

后来左思右想,想不出哪里出了问题,打算做出硬件出现了暗伤的结论。偶然想到唯一做出的硬件变更就是换了网络连接方式,打算死马当活马医,把网线插回路由器试试(这样电脑就没了IPv6,同时也不需要自己拨号了)。

结果。。

很快啊,啪的一下就好了,bt连着用了近10小时都没出再出现这个问题。

于是得出结论:Windows 8 + P8B75-V + bt + 拨号 = 大概率卡死。

至于为什么是这样,我也不知道

===============================
后记

尝试了一下,如果把下载速度限制在一个合适的范围,好像就不会翻车,用60M的宽带,限制在5000K下载就没问题。