- 博客(16)
- 收藏
- 关注
原创 一种较高精度定时计数方式,可测代码运行时间(C++)
原理是获取 2 次的滴答差,然后换算成时间差。调试结果可以看到:这里测试了10次,结论:用这个精度应该算高一点吧。利用 cpu 的滴答频率的吧。函数还是有点误差滴。
2022-12-10 15:56:15
263
原创 C++11 decltype 的用法粗解
大概就是根据 decltype() 括号里面表达式推导出相应的类型,至于与 auto 的不同点,先不用去比较它,初认识的时候会混淆,需要用的时候查查就好了。真不知如何下手啊,这个还是简单数据类型,要是复杂一点的数据类型那不就得删库跑路了。好像解决了一点,就是代码量多了一丢丢,后面翻查资料发现,模板也能解决这个问题,而且代码量少一丢丢。这时候你可能会想到,我要是用浮点类型的咋办,这时候你会用重载的方式再写一次。那能不能让编译器自动推导呢,答案是有的,那今天我们的主角就登场了、这里举一个常用的例子。
2022-11-29 16:14:06
533
原创 Qt msleep 后 UI 界面假死相对应的解决方法
1、在 UI 交互中,如果我们使用阻塞函数,界面就会发生假死,造成无响应状态,这对用户体验是非常不友好的,除非你的用户能接受。4、最后,在实际开发中,还会有其他种方式,毕竟方法总比困难多,只能说有什么需求就使用什么解决方案吧。2、为此我们可以利用 Qt 事件循环来稍微解决这个问题。3、当然还有一种方式也能应对界面假死方式,比如以下。
2022-11-29 12:39:46
1043
原创 C++ 模板之函数模板基本范例
发现报错了,std::string 不支持 - 操作 ,但它支持 + 操作(运算符重载)修改一下所以在编写函数模板的时候要注意是否合法或支持该操作但这种错误一般都在编译期间就能检测出来了。
2022-07-14 10:26:40
341
原创 C 语言读写文件操作
***编译环境:vs2017运行之后,在源文件目录下生成一个 1.txt 文件这里记录下 fopen_s 函数细节,为什么使用 fopen_s, 因为 vs 认为 fopen 不安全,所以让你尽量使用 fopen_s 函数 发现中文是乱码。。。想要不是乱码,那就换种其他方式吧这里这个不是重点...
2022-06-16 10:57:08
829
原创 ALSA 音频开发部分基础知识
1、 先不管通道数和比特数是怎么样的,记住一帧就相当于声音设备正在播放的一个样本。2、 例如 立体声 44.1KHz 16位 的PCM流 是多少个字节呢?立体声=2通道,16位=2个字节,那么想要设备播放出来,则至少需要一个样本也就是一帧,则这一帧的大小是 2x2=4 个字节。3、周期(period)代表每个硬件中断之间的帧数,该存放周期的 buffer 是一个环形 buffer ,所以该 buffer 的大小必须要大于一个周期的大小。一般情况下设置 2 * period 大小看着比较头疼,下面用图表示4、
2022-06-13 16:39:47
2265
原创 Qt 多语言翻译的简要步骤
使用 Qt 语言家翻译的简要步骤如下 注意 language_en.qm 的路径!注意 language_en.qm 的路径!注意 language_en.qm 的路径!
2022-06-09 17:36:58
1024
原创 C++ 模板元编程之简要概述泛化,全特化,偏特化
相关概念:baidu 一下直接上干货,本次使用函数模板演示简单了解一下,心里有个概念,为以后做铺垫 就是把 T 特化成 int 特化,特化,就是做特别处理嘛 除了 全特化 以外的都是 偏特化所以,template 中的 不能为空这里改成使用类模板演示 还有一种指针类型的...
2022-06-08 12:28:35
1485
原创 C++ 通过宏定义判定当前操作系统
1、C++ 通过宏定义判定当前操作系统#include <iostream>using namespace std;// 主函数int main(int argc, char *argv[]){#ifndef _WIN32 cout << "当前系统: Window 32 位" << endl;#else cout << "当前系统: Window 64 位" << endl;#endif // !(_WIN32_)
2022-05-19 09:26:28
2185
原创 冒泡排序法(C++实现)
1、冒泡排序法概念:略...小提示:假设从小排到大的方式,一轮比较下来最大的值就会跑到末尾位置,再次进行二轮比较后最大值排在末尾倒数第二位,依次类推...所以就得出 for 的判定条件是 j < cnt - 1 - i; // 冒泡排序 for (int i = 0; i < cnt; ++i) { for (int j = 0; j < cnt - 1 - i; ++j) { if (arr[j] > arr[j + 1]) // 从小排到
2022-05-18 12:54:14
25992
4
原创 C++11 线程间数据同步的简单演示模型(std::condition_variable)
线程间同步,本次使用条件变量 std::condition_variable 来进行演示力求一个较为简单,易懂,代码量少的演示过程线程间同步的作用,就不写了,相信是经常用到的前景须知:场景:生成产品 --> 仓库 --> 销售产品***仓库最大容量假设是 1 个接下来是代码过程1、条件变量需要配合 mutex 来使用std::unique_lock进行上锁/解锁使用,所以,包含一些必要的头文件#include <co...
2022-04-26 18:43:40
1111
原创 Ubuntu 使用 nfs 挂载开发板的方法
1、如果你的 ubuntu 没有安装 nfs 则 执行一下sudo apt-get install nfs-kernel-server2、假设 ubuntu 电脑需要共享的 nfs 路径为 :/home/lrr/nfs3、修改 /etc/exports 文件sudo vi /etc/export 4、在文件最后一行添加并保存/home/lrr/nfs *(rw,nohide,insecure,no_subtree_check,async,no_root_squash)5、重
2022-04-26 13:11:42
1384
1
原创 Qt 串口写入时16进制(Hex)发送与文本(Text)发送的转换方式
一般在使用串口发送数据时,有以下 2 种发送形式本篇仅提供 Qt 的转换方式1、以 Hex方式发送 QString str = "Hello"; QByteArray data = QByteArray::fromHex(str.toLatin1()); // data 即为发送的数据2、以 Text 方式发送 QString str = "Hello"; QByteArray data = str.toLatin1(); // data 即为发送的.
2022-04-22 15:36:28
3374
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人