C/C++
张飞online
未来属于我们当中那些仍然愿意弄脏双手的少数分子!
展开
-
可执行程序dll的依赖分析,dll文件32/64区分,dll的搜索路径
1.dll文件的依赖分析可以通过使用64位的depends.exe查看你exe依赖的dll2.32位dll和64位dll的查看3.dll文件的搜索路径作者:朱金灿来源:http://blog.csdn.net/clever101/ DLL的动态链接有两种方法。一种是加载时动态链接(Load_tim...原创 2017-07-13 11:03:34 · 1786 阅读 · 0 评论 -
优雅的解决qt线程关闭问题!QThread: Destroyed while thread is still running
参考博客 https://blog.csdn.net/liang19890820/article/details/52186626:写的不错!,我还不知道qt5已经封装出了这样的接口,一般我还是自己封装出方法,通过标志位实现关闭!void QThread::requestInterruption(){ Q_D(QThread); QMutexLocker locker(&...原创 2018-05-22 14:50:03 · 19031 阅读 · 2 评论 -
Linux线程安全函数和可重入
这俩个概念就不讲了,你需要明确的是可重入一定是线程安全的,因为多线程访问本质就是一种线程重入的体现。还是说下吧。所以当你在linux下编程想一些函数能不能多线程这么用的时候其实就是在考虑线程安全问题!比如你考虑我多个线程使用消息队列,会不会出问题,当然不会,因为消息队列是线程安全的。内部实现了锁机制。当然下面这篇说理也够透彻!转载 https://www.ibm.com/developerwo...原创 2018-05-28 13:56:47 · 4488 阅读 · 0 评论 -
Qt视频框架qtav构建编译使用
1.首先说下:如果你的环境是下面网站中有的环境,你就可以直接使用,没必要重新编译构建。直接下载作者编译好的,执行里面的脚本2.我的环境是vs2013+qt5.7 环境恰恰和作者提供的环境不一样GG。我试者直接使用发现了很多编译链接问题,没办法重新编译qtav。qtav的编译过程其实很简单:下载 http://sourceforge.net/projects/qtav/files/depends/...原创 2018-07-05 12:34:15 · 4842 阅读 · 0 评论 -
数据结构与算法之栈
数据结构与算法之栈首先感叹下,csdn的排版终于人性化了。以前写个东西费劲的要死。谈到数据结构的栈,其实觉得原创 2018-10-09 23:34:18 · 182 阅读 · 0 评论 -
设计模式之模板方法
1.设计模式的模板方法其实是大部分人都用过,可能没有意识到,给人封装过接口更应该了解。一般而言,我们封装出来的接口如果仅仅是系统流程里面的一个环节,那么我们就做基础的接口封装,不需要关心具体的业务。使用者爱怎么调用就怎么调用。注意:这个时候是使用者调用我们。而如果我们就是系统设计者,角度就变了,也就出现了我们今天的主题,模拟方法。 ...原创 2018-11-24 17:12:09 · 188 阅读 · 0 评论 -
反汇编分析之:继承,多重继承,多层继承,父子类指针本质
谈面向对象语言不能不谈继承,这也是面向对象语言天生的优势,大大提高了代码的复用,在c语言中我们也可以通过结构体嵌套的方式,来实现继承,倘若看本c++的书,一个继承都能来来回回讲个几十回合。我们通过反汇编来看看继承的本质究竟是什么?一:继承 1、不继承...原创 2017-09-10 16:56:51 · 812 阅读 · 1 评论 -
linux中断
linux中断原创 2019-02-28 13:32:00 · 181 阅读 · 0 评论 -
关于c/c++中的volatile、内存屏障以及无锁数据结构
一:先说 volatile,静态乱序 C/C++语言中的volatile关键字作用? 1.易变性:volatile告诉编译器,某个变量是易变的,当编译器遇到这个变量的时候,只能从变量的内存地址中读取这个变量,不可以从缓存、寄存器、或者其它任何地方读取。 2.顺序性:两个包含volatile变量的指令,编译后不可以乱序。注意是编译后不乱序,但是在执行的过程中...原创 2019-04-01 17:39:14 · 1199 阅读 · 0 评论 -
Windwos驱动 PCIE开发第一步
环境搭建,目前做板卡驱动主要是windriver,但是就目前而言,大部分公司使用的是破解版的windriver,没有正当的版权,对于win10系统也不支持。windows原生驱动是wdf,开发难度其实也没有那么大,当然你要了解底层。代开发 :https://blog.csdn.net/u013372900/article/details/97004166好了我们正式说开发环...原创 2019-05-30 16:06:13 · 2328 阅读 · 2 评论 -
正确的QTTCP QTcpSocket与多线程的交互方式应该是这样的!!!
1.首先说不正确的姿势是什么?跨线程乱搞,重新写了qthread,实现了run,然后man里面创建了QTcpSocket,然后传入到run里面。这种基本运行的时候都会提示你跨线程调用了,对了还有人搞不懂为什么跨线程了,这个可以看看我的博客,有非常明确的说明https://blog.csdn.net/u013372900/article/details/81676483还有人强行调用...原创 2019-08-27 17:21:29 · 6302 阅读 · 5 评论 -
多线程设计模式
https://www.cnblogs.com/feng9exe/p/8352113.html原创 2019-09-12 13:39:57 · 412 阅读 · 0 评论 -
QT其他线程和UI主线程通信方式
1:为什么会有这个问题: 其实当我们真正开发一个有实体业务需求的界面软件的时候,就躲不开上面提到的问题——QT其他线程和UI主线程通信。原因是什么,耗时的操作不能再界面ui线程中操作执行,这样会让界面卡死,当然这不仅仅是QT有这个问题,MFC、安卓都是这样的。但现实是你躲不开业务的耗时操作,比如你点击一下按钮,可能按钮对应的底层业务逻辑需要执行一大堆东西,没办法不耗时。当然从另外一个角度...原创 2018-05-13 00:20:31 · 7665 阅读 · 3 评论 -
Object::connect: No such slot
信号槽出现这样的问题一定要注意以下几点: ThreadFromQThread work_download ; QObject::connect(this, SIGNAL(send_down_sig(int)),\ &work_download, SLOT(recv_down_info(int)));注意槽函数仅仅是填写函数名称,而不是真实地址,qt自己...原创 2018-05-10 11:19:56 · 799 阅读 · 1 评论 -
qt中的线程套路
qt的线程还是非常优雅的,当然我们可以使用系统自带的函数接口创建线程,但是跨平台移植似乎就是问题。qt的线程是可以支持跨平台的移植的。qt的线程非常简单,就是继承QThread然后重写run方法,run函数就是我们的线程主体,对于重写其实本质就是一个回调接口了。好了注意重点:在主函数实例化然后调用start方法就开始运行线程了,千万不要调用函数调用的急眼了,把run函数也调用了。原创 2017-10-16 22:39:40 · 507 阅读 · 0 评论 -
魔数和魔字串
很多类型的文件,其起始的几个字节的内容是固定的(或是有意填充,或是本就如此)。根据这几个字节的内容就可以确定文件类型,因此这几个字节的内容被称为魔数 (magic number)。此外在一些程序代码中,程序员常常将在代码中出现但没有解释的数字常量或字符串称为魔数 (magic number)或魔字符串。 所谓魔数和魔字串就是指在代码中出现但没有解释的数字量或字符串。如果在某个程序中使用了魔数,原创 2016-05-03 09:50:58 · 829 阅读 · 0 评论 -
模块问题
今天我们要调试python1:首先我们还是要导入一些包:sudo apt-get install swig3.0 python-pyaudio python3-pyaudio soxsudo apt-get install libatlas-base-dev2:还有个特别重要的事情没有做,那就是我们没有修改声卡:我们多一天用arecord录音用插件方式指定了录音声卡是1:0,现在我们用pyaudi原创 2017-01-11 20:50:52 · 926 阅读 · 0 评论 -
sizeof是如何实现的,和内核里面宏如出一辙
0x00 很多东西用多了就缺乏了,洞察力,觉得就该如此。这也许就是中国那句老话:当局者迷。今天看到c群里面的一个学生问求一个数组的大小如何写,当然不由自主的敲了sizeof 0x04sizeof是一个运算符不是函数,但是我突然觉得,他是如何实现的那?如果是一个字符串还可以判断末尾的 '\0' 那对一块内存如何去判断他的结束那? 0x08注意sizeof原创 2017-08-19 00:39:52 · 10019 阅读 · 0 评论 -
win32编程之进程
1.进程的引入进程在是一个程序运行时的状态,这些老生常谈的问题我们暂且打住,当然进程的深层次理解是建立在操作系统上的,我更喜欢说的一句话是: “进程4GB,线程EIP”。在windows 下进程空间的划分是按2:2的比例划分。在x86 32位windows系统中地址空间的安排是这样的。当然这只是个空头支票。 进程的原创 2017-08-13 18:42:07 · 372 阅读 · 0 评论 -
win32 线程的互斥和同步
1.首先说的是什么是互斥,什么是同步。以前我觉的互斥和同步是一个感念,最起码在哲学上这俩个东西的目的是一致的,但是其实互斥和同步还是不一样的。具体来说我们以资源来举例子。 互斥:是对于同一资源,每一时刻只能其中一个线程操作,至于是A线程还是B线程,这个无所谓,反正就是AB不能同时来操作临界资源。 同步:同步的核心是有序一致,要有先后顺序,比如我们就要让 A先操作,然后B才能原创 2017-08-13 22:10:12 · 328 阅读 · 0 评论 -
内核中的同步_临界区与竞争状态、内核同步措施、并发实例
先占坑原创 2017-08-25 23:41:14 · 443 阅读 · 0 评论 -
引用和指针有什么区别,汇编分析(最真实)
可能,原创 2017-08-30 21:44:25 · 578 阅读 · 0 评论 -
VS2013 + QT5.7.0静态编译 错误 .NMAKE:fatal error U1077. return code 0x2,使用 类 模板 需要 模板 参数列表
NMAKE:fatal error U1077. return code 0x2 qt静态编译qt 支持xp原创 2017-09-21 17:52:32 · 8697 阅读 · 0 评论 -
预编译那些事#define后面只跟一个“参数”
一般情况下,源程序中所有的行都参加编译。但是有时希望对其中一部分内容只在满足一定条件才进行编译,也就是对一部分内容指定编译的条件,这就是“条件编译”。有时,希望当满足某条件时对一组语句进行编译,而当条件不满足时则编译另一组语句。今天看到了#define后面只跟一个“参数”定义宏,并在预处理过程中将其替换为空字符串(即删除)。这样做主要是为了标记某些内容,使程序阅读者能够清楚标记表明的意原创 2016-05-03 09:51:11 · 2537 阅读 · 0 评论