- 博客(17)
- 资源 (1)
- 收藏
- 关注
原创 【C++17特性 std::scope_lock】
类scope_lock是一种符合 RAII 机制的互斥锁,可以在作用域内占有一个或多个互斥锁。在创建scope_lock对象时,会尝试给所有的互斥锁以所有权,离开作用域后,scope_lock会被析构,同时释放各个互斥锁。
2024-07-07 19:49:33 458
原创 C++11:原子交换函数compare_exchange_weak和compare_exchange_strong 初探
compare_exchange_weak和compare_exchange_strong则是著名的CAS(compare and set)
2023-11-30 16:38:36 4571
原创 CRC校验原理及实现
一个完整的数据帧通常由以下部分构成:校验位是为了保证数据在传输过程中的完整性,采用一种指定的算法对原始数据进行计算,得出的一个校验值。接收方接收到数据时,采用同样的校验算法对原始数据进行计算,如果计算结果和接收到的校验值一致,说明数据校验正确,这一帧数据可以使用,如果不一致,说明传输过程中出现了差错,这一帧数据丢弃,请求重发。常用的校验算法有奇偶校验、校验和、CRC,还有LRC、BCC等不常用的校验算法。以串口通讯中的奇校验为例,如果数据中1的个数为奇数,则奇校验位0,否则为1。
2023-10-08 15:59:02 1613 2
原创 Qt 之 qInstallMessageHandler 输出详细日志并保存到文件中
一般情况下,一个大型项目会出现很多这样类似的调试信息,很不利于查找,因为我们根本不清楚输出信息所在的文件、函数、行号等信息。下面,我们来根据需要自定义消息处理程序。// 自定义消息处理程序break;break;break;break;break;// 安装消息处理程序// 打印信息这时,我们不仅可以输出调试信息,而且可以很直观、很方便的得到输出代码所在的文件、函数、行号等信息。当软件发布的时候,通常都会采用日志输出功能,方便我们后期的跟踪、查找问题。
2023-10-07 16:43:13 768 1
原创 rust更新crate.io慢并更换国内镜像源
与Linux更新库速度慢原因一致,因此建议换至国内镜像,可以大大增加下载速度,并允许使用一些特殊的命令行执行文件。下载速度顿时就增加了!
2023-05-09 23:33:29 1965
转载 __declspec用法总结(Microsoft c++)
“__declspec”是Microsoft c++中专用的关键字,它配合着一些属性可以对标准C++进行扩充。这些属性有:align、allocate、deprecated、 dllexport、dllimport、 naked、noinline、noreturn、nothrow、novtable、selectany、thread、property和uuid。
2022-11-10 13:07:37 1732
原创 C/C++ 写两个线程,一个线程输出 1 - 52,另一个线程输出 A - Z,要求输出格式为: 12A,34B,56C .....
C/C++ 写两个线程,一个线程输出 1 - 52,另一个线程输出 A - Z,要求输出格式为: 12A,34B,56C .....
2022-03-12 23:39:29 2737 1
原创 FFmpeg全教程安装指南
本文将FFmpeg分为三步进行安装,汇总了一些方法与错误。第一步:安装支持库:sudo apt-get install -y autoconf automake build-essential git libass-dev libfreetype6-dev libsdl2-dev libtheora-dev libtool libva-dev libvdpau-dev libvorbis-dev libxcb1-dev libxcb-shm0-dev libxcb-xfixes0-dev pkg-con
2021-10-23 17:03:58 2621 2
原创 Linux系统编程系列(三)
进程间通信由于进程间的地址空间相对独立。进程与进程间不能像线程间通过全局变量通信,所以进程之间要交换数据必须通过内核。在内核中开辟一块缓冲区,进程A把数据从用户空间拷到内核缓冲区,进程B再从内核缓冲区把数据读走,内核提供的这种机制称为进程间通信;1、相关概念(1)进程间通信:InterProcess Communication(2)进程间通信常用的4种方式a.管道-简单b.信号-系统开销小C.共享映射区-(有无血缘关系的进程间通信都可以)d.本地套接字-稳定2、管道pipe1.管道的概
2021-07-25 21:52:14 138
原创 Linux系统编程系列(二)
进程管理进程运行后会进入执行状态:活跃active,活着alive,运行程序running program进程IDprocess ID->pid;进程若产生一个新的进程,则它称为父进程,新的进程成为子进程。进程ID会表示为 pid_t类型问题:子进程创建成功之后,代码的执行位置?父进程执行到了哪儿,子进程就从哪开始执行父子进程的执行顺序?不一定,谁抢到cpu谁执行如何区分父子进程?通过fork函数的返回值fork创建子进程fork的返回值 >0:父进程的返回值
2021-07-25 21:43:39 181
原创 Linux系统编程系列(一)
Linux系统编程系列(一)系统软件属于系统的底层,与内核和系统核心库直接进行交互,系统编程则是进行系统软件的关键,熟悉系统编程可以重现如shell、vim、gcc等系统软件。而作为一个高级C++/C编程人员,往往需要在底层进行多次调用,学习Linux系统编程时必要的。以下为本人在学习某机构视频时候做的笔记,参考了一些其他资料,有错误请指出,会及时修改。1、基础概念1、文件与文件系统Linux一切皆文件,2、程序与进程进程process是执行中的目标码object code:正在运行的程序;每
2021-07-25 21:17:11 80
转载 C fllush的使用与介绍
fflush()的作用是用来刷新缓冲区,fflush(stdin)刷新标准输入缓冲区,把输入缓冲区里的东西丢弃; fflush(stdout)刷新标准输出缓冲区,把输出缓冲区里的东西强制打印到标准输出设备上。fflush(stdin)不太常用,在有些编译器中是错误的用法,可以用以下方法替代:while(getchar()!=’/n’);fflush(stdout)在单进程程序中作用不大,但在多进程程序中很有用。程序的输出内容一般不会立即输出,而是在程序结束后再输出。fflush(stdout)会强制每次
2021-07-13 14:29:15 499
原创 半锤木的学习日记之 生成器与装饰器
python学习日记装饰器:不修改函数的调用方式,但是还在原来的函数基础上添加功能原则:开放封闭原则开放:对拓展是开放的封闭:对修改是封闭的基础格式举例:from functools import wraps #引入别人写好的装饰器def wrapper(f): @wraps(f) #这个装饰器不会再改原来函数的名字 def inner(*args,**kw...
2019-12-02 14:10:38 131
pybas-master.zip
2020-04-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人