得益于Qt反射机制,我们可以获取类对象的成员信息,这其中就包含了属性信息,属性其实就是类中的一种数据成员,不同在于属性需要通过宏定义Q_PROPERTY进行注册,它的使用也必须满足反射机制的条件——类须直接或间接继承QObject且包含Q_OBJECT宏,这样就可以通过元对象的属性类(QMetaProperty)来获取属性相关信息,下面是
关于线程,最大的误区就是容易与进程混淆,因此首先要能区分两者的概念。再者就是关于线程的一些基本概念,当我们清楚了这些概念之后,对于我们代码的编写更加有利。比如:进程、线程、多线程、同步与互斥、互斥锁、信号量、条件变量、临界资源等。这些是我们学习线程必须知道和掌握的一些知识。进程与线程的区别:首先程序
希尔排序是一种特殊的插入排序,是对直接插入排序的升级改进。所以在学习希尔排序之前,一定要先弄清楚直接插入排序算法。基本思路:设一个序列里有n个待排序的元素,将间隔相同距离的元素分为一组进行比较,这里的间隔称之为增量,增量(gap)通常为n/2(奇数偶数都可以),随着算法的进行增量慢慢缩小,直到相邻的元素比较
关于进程调度需要先了解什么是进程,进程可以简单理解为正在运行的程序。而进程调度的两个关键性指标则是:响应时间与周转时间。响应时间:进程未运行到下次被选中运行的时间间隔。如:创建进程到第一次调度到进程的时间。再比如:进程切换后到下一次调度到该进程的时间间隔。响应时间体现了交互感,如:敲下键盘到屏幕上出
分块查找又称索引顺序查找,是顺序查找和二分查找的一种改进方法。分块查找要求把一个数据分成若干块,每一块里面的元素可以是无序的,但对于一个递增的数组来说,第i块的最大元素一定要小于第i+1块的所有元素,分块查找还需要一个索引表,用来限定每一块的范围,在增加、删除、查找元素时都需要用到。分块1分块2分块3首先
dlsym函数的功能就是可以从共享库(动态库)中获取符号(全局变量与函数符号)地址,通常用于获取函数符号地址,这样可用于对共享库中函数的包装;下面是函数原型及需要包含的头文件。#include <dlfcn.h>void *dlsym(void *handle, const char *symbol);其中handle可以是dlopen函数返回的handle值,也可以是RTLD_DEF
在前面我们了解了二分查找,就是把一个集合的元素一分为二,用中间值和目标查找值相比较,直到要查找的值和中间值相等,则表示查找成功,反之表示不成功。为什么这里会再次提到二分查找呢?事实上,插值查找是二分查找的升级版。用一个很简单的例子就可以把插值查找解释的很清楚。在字典里面找”boy”这个单词时,我们肯定
网络配置管理是指初始化网络并配置网络,以使其提供网络服务,配置管理是一组对辨别、定义、控制和监视组成一个通信网络的对象所必要的相关功能,目的是为了实现某个特定功能或使网络性能达到最优。在Linux中设置网络的相关配置均需要管理员权限,所以在设置网络配置时,需先把用户切换到root用户。输入su –l root并输入ro
函数指针:存放函数首地址的变量函数与数组类似,函数名代表函数首地址,且存放函数地址的指针为函数指针。如下:void prin(){ printf(“hello ”);}int main(){ void (*fp)() = prin;//fp为变量名,其余为数据类型 fp();//调用自定义函数prin,输出一次hello}上述
函数是一段可以重复使用的代码,用来独立的完成某个功能。它可以根据用户传递的数据实现相应的功能,就像超市里面的自动收银机器,当顾客的商品条码被录入时,自动收银机器就会根据顾客购买的商品数量和单价计算出总价格,但是当没有商品信息录入时,它就不会去计算商品总价。当然函数也可以不去接收客户传输的数据,但接收