- 博客(44)
- 资源 (14)
- 收藏
- 关注
转载 gcc的内建函数__builtin_expect
1.问题引出在内核代码的条件分支中的判断中,经常可以看到如下两条语句:[cpp] view plaincopy/* ...... */ if(unlikely(!something)) /* ...... */ if(likely(something)) /* ...... */ 追述一下可以看到有如下的宏定义:[cpp] view
2015-01-17 18:55:42
713
转载 QT QString, wchar_t *, TCHAR, CString和其他字符或字符串类型的转化
[cpp] view plaincopy//QString to wchar_t *: const wchar_t * encodedName = reinterpret_castconst wchar_t *>(fileName.utf16()); //QString to char * given a file name: QByteA
2014-11-04 16:16:07
1997
转载 win732位 + QT4.8.6 + QT CRETER 环境配置的搭建
一、软件准备与安装1.编译器MinGW的下载,官网地址http://download.qt-project.org/development_releases/prebuilt/mingw_32/,在这个列表中选择下载完之后解压到D:\MinGW.2.下载安装qt-opensource-windows-x86-mingw482-4.8.6-1,官网下载地址为:http://qt-proj
2014-09-14 00:51:07
19361
4
转载 Linux网络编程必看书籍推荐
目录(?)[+] 首先要说讲述计算机网络和TCP/IP的书很多。 先要学习网络知识才谈得上编程讲述计算机网络的最经典的当属Andrew S.Tanenbaum的《计算机网络》第五版,这本书难易适中。《计算机网络(第5版)》是国内外使用最广泛、最权威的计算机网络经典教材。目前已经是第五版,本书作者80年代就开发出MINIX,是一个用于操作系统教学的类UNIX(的小型操作系
2014-08-08 22:22:57
699
转载 Linux内核学习四库全书
目录(?)[+]关于内核学习我建议不要上来就读内核而是先了解内核的构成和特性,然后通过思考发现疑问这时再去读内核源码。即先了解概貌在读局部细节。而且内核分成好多部分,不要只是按照顺序去读,应该针对某一部分比如内存管理或进程管理横向读几本书,这样可以理解很全面。Linux Kernel 四库全书1. Linux内核设计与实现 Edition 2 2. Linux设备驱动
2014-08-08 22:22:07
658
转载 QT QTableView用法小结
QTableView常用于实现数据的表格显示。下面我们如何按步骤实现学生信息表格:一 添加表头 //准备数据模型 QStandardItemModel *student_model = new QStandardItemModel(); student_model->setHorizontalHeaderItem(0, new QStandardItem(
2014-08-05 23:55:37
1081
转载 Qt自定义委托在QTableView中绘制控件、图片、文字
博客分类: QtQt自定义委托QTableViewQCheckBox进度条 自定义委托,继承于,QStyledItemDelegate类,重载Paint()函数,1、实现在QTableView中绘制 格式字符串2、实现在QTableView中绘制进度条3、实现在QTableView中绘制QCheckBox4、实现在QTableView中绘
2014-08-04 13:12:23
2556
1
转载 用Qt写软件系列三:一个简单的系统工具之界面美化
前言 在上一篇中,我们基本上完成了主要功能的实现,剩下的一些导出、进程子模块信息等功能,留到后面再来慢慢实现。这一篇来讲述如何对主界面进行个性化的定制。Qt库提供的只是最基本的组件功能,使用这些组件开发出来的软件基本上个性可言。如果开发的产品只讲究实用性,那么UI体验尚可搁置一边。如果要面向客户推广部署,那么改善一下UI视觉效果对于产品的推广也会有莫大的帮助。闲话不多说。先来对比一
2014-08-04 12:56:39
6738
1
转载 QT:在QTableView中使用各种自定义委托
QT的MVC(View/Delegate)模型十分强大,可以利用各种控件来对表格的输入进行限制,不过我以前一直没有过,这几天研究了一下,写个小例子,希望大家喜欢。如果看不懂这个例子,请先看QT的自带例子: http://qt-project.org/doc/qt-4.8/itemviews-spinboxdelegate.html思路:1:为每一列定义委托: A:第一列
2014-08-04 12:36:59
20873
2
转载 Qt Creator布局管理器的使用
首先对菜单进行完善。1.我们在上一次的基础上再加入一些常用菜单。“文件”的子菜单如下图。中间的分割线可以点击Add Separator添加。“编辑”子菜单的内容如下。“帮助”子菜单的内容如下。2.我们在动作编辑器中对各个菜单的属性进行设置。如下图。3.我们拖动“新建”菜单的图标,将其放到工具栏里。拖动“新建”菜单的图标。将其放到菜单栏下面的工
2014-08-02 21:41:32
2362
转载 详解 QT 布局管理界面 图文并茂
T 布局管理界面 图文并茂是本文介绍的内容,先来看内容。今天来实现一个温度转换器的界面。如下图:水平布局管理器可以把它所管理的部件以水平的顺序依次排开,例如上图中中间的“Centigrade”和“Fahrenheit”两段文字,就是水平排列的,这个时候就可以用水平布局管理器来实现。垂直管理器类似,它可以把它所管理的部件以垂直的顺序依次排开,例如上图中右侧的液晶数字和地下的表盘,就形成了
2014-08-02 21:30:50
26815
1
转载 Qt对中文文件的简单加密解密
中文文件加密、解密,最简单的方法即可利用 QByteArrary::toBase64(),QByteArray::fromBase64()函数进行转码和解码进行简单加密、解密 即自己写个简单程序将中文文件加密后保存于新的文件中,再通过通过fromBase64解密显示。 代码简单如下://加密[cpp] view plainc
2014-08-02 18:35:37
5461
1
转载 linux c学习笔记----UDP基础客户/服务编程(sendto,recvfrom)
sendto(经socket传送数据)相关函数send , sendmsg,recv , recvfrom , socket表头文件#include #include 定义函数int sendto ( int s , const void * msg, int len, unsigned int flags, const struct s
2014-07-28 19:43:41
896
转载 Qt中 QString 和int, char等的“相互”转换
Qt中 QString 和int, char等的“相互”转换目录(?)[+]网上找了半天,全是QString转int和char等的,就没有int转QString的,但是还是找到啦,我来整合一下哦~Qt中 int ,float ,double转换为QString有两种方法1.使用QString::numb
2014-07-28 11:10:47
578
转载 linux命令:mv命令
mv命令是move的缩写,可以用来移动文件或者将文件改名(move (rename) files),是Linux系统下常用的命令,经常用来备份文件或者目录。1.命令格式: mv [选项] 源文件或目录 目标文件或目录2.命令功能:视mv命令中第二个参数类型的不同(是目标文件还是目标目录),mv命令将文件重命名或将其移至一个新的目录中。当第二个参数类型是文件时,
2014-07-24 15:10:54
582
转载 linux下使用tar命令
解压语法:tar [主选项+辅选项] 文件或者目录使用该命令时,主选项是必须要有的,它告诉tar要做什么事情,辅选项是辅助使用的,可以选用。主选项:c 创建新的档案文件。如果用户想备份一个目录或是一些文件,就要选择这个选项。相当于打包。x 从档案文件中释放文件。相当于拆包。t 列出档案文件的内容,查看已经备份了哪些文件。特别注意,在参数的下达中, c/x
2014-07-24 15:07:48
561
转载 TCP、UDP协议详解
面向连接的TCP“面向连接”就是在正式通信前必须要与对方建立起连接。比如你给别人打电话,必须等线路接通了、对方拿起话筒才能相互通话。TCP协议能为应用程序提供可靠的通信连接,使一台计算机发出的字节流无差错地发往网络上的其他计算机,对可靠性要求高的数据通信系统往往使用TCP协议传输数据。面向非连接的UDP协议“面向非连接”就是在正式通信前不必与对方先建立连接,不管对方状态就直接发送。这
2014-07-22 17:11:00
2314
转载 exec函数
(1)exec函数说明fork函数是用于创建一个子进程,该子进程几乎是父进程的副本,而有时我们希望子进程去执行另外的程序,exec函数族就提供了一个在进程中启动另一个程序执行的方法。它可以根据指定的文件名或目录名找到可执行文件,并用它来取代原调用进程的数据段、代码段和堆栈段,在执行完之后,原调用进程的内容除了进程号外,其他全部被新程序的内容替换了。另外,这里的可执行文件既可以是二进制文件,也可
2014-07-22 10:48:08
489
转载 Linux execlp函数
execlp从PATH 环境变量中查找文件并执行定义:int execlp(const char * file,const char * arg,……);头文件:#include说明:execlp()会从PATH 环境变量所指的目录中查找符合参数file的文件名, 找到后便执行该文件, 然后将第二个以后的参数当做该文件的argv[0]、a
2014-07-22 10:44:57
779
转载 linux驱动学习之ioctl接口
这里先用例子介绍一下ioctrl接口的使用, 应用层的ioctl函数传入的cmd和arg参数会直接传入驱动层的ioctl接口,ioctl接口的命令有一定规范详细查看ioctl-number.txt文件,这里命令的定义不在规范内,先看下面测试的例子,驱动只实现ioctrl接口并使用ioctl修改和读取内核中的一个整型参数为例,使用两个不同方式读取(值传递和地址传递)。 应用程序测
2014-07-21 13:34:47
612
转载 linux__mutex互斥锁___操作
[html] view plaincopymutex是死等锁,即pthread_mutex_lock(&mutex);这条语句在执行的后,做两步,1,先判断当前是否可以锁,如别的线程在锁住,这里就一直等待直到别的线程解锁为止。1,判断完后,开始锁住,防止别的线程使用。 如果不想在这里死等,可以采用pthread_mutex_trylock(&mutex);然后
2014-07-21 13:19:02
608
转载 pthread_mutex_init() -- 互斥锁初始化|pthread_mutex_destroy()--互斥锁销毁
原型:#include int pthread_mutex_init(pthread_mutex_t *restrict mutex, const pthread_mutexattr_t *restrict attr);int pthread_mutex_destroy(pthread_mutex_t *mutex);在使用互斥锁前,需要定义互斥锁(全局变量),定义
2014-07-21 13:12:51
1294
转载 atexit函数
很多时候我们需要在程序退出的时候做一些诸如释放资源的操作,但程序退出的方式有很多种,比如main()函数运行结束、在程序的某个地方用exit() 结束程序、用户通过Ctrl+C或Ctrl+break操作来终止程序等等,因此需要有一种与程序退出方式无关的方法来进行程序退出时的必要处理。方法就 是用atexit()函数来注册程序正常终止时要被调用的函数。 atexit()函数的参数是一个
2014-07-21 13:05:00
464
转载 使用tcgetattr函数与tcsetattr函数控制终端
6.4.4 使用tcgetattr函数与tcsetattr函数控制终端为了便于通过程序来获得和修改终端参数,Linux还提供了tcgetattr函数和tcsetattr函数。tcgetattr用于获取终端的相关参数,而tcsetattr函数用于设置终端参数。这两个函数的具体信息如表6.2所示。表6.2 tcgetattr函数和tcsetattr函数头文
2014-07-21 12:58:23
437
转载 C语言system()函数
system()函数功能强大,很多人用却对它的原理知之甚少先看linux版system函数的源码:#include #include #include #include int system(const char * cmdstring){ pid_t pid; int status; if(cmdstring == NULL)
2014-07-21 12:47:43
603
转载 system函数调用
相关函数 fork,execve,waitpid,popen 表头文件 #include 定义函数 int system(const char * string); 函数说明 system()会调用fork()产生子进程,由子进程来调用/bin/sh-c string来执行参数string字符串所代表的命令,此命>令执行完后随即返回原调用的进程。在调用system()期
2014-07-21 12:45:40
661
转载 IP地址转换、主机大小端、htonl、ntohl实现
[cpp] view plaincopy#include //#include using namespace std; typedef unsigned short int uint16; typedef unsigned long int uint32; // 短整型大小端互换 #define BigLit
2014-07-21 12:24:56
1329
转载 网络字节顺序
不同的 CPU 有不同的字节序类型 这些字节序是指整数在内存中保存的顺序 这个叫做主机序 最常见的有两种 1 . Little endian :将低序字节存储在起始地址 2 . Big endian :将高序字节存储在起始地址 LE little-endian最符合人的思维的字节序 地址低位存储值的低位 地址高位存储值的高位 怎么讲是最符合人
2014-07-21 12:22:52
470
转载 htonl()函数学习
今天在网上看到一篇关于htonl()函数的解释,感觉有道理,贴过来大家一起学习!htonl就是把本机字节顺序转化为网络字节顺序h---host 本地主机to 就是to 了n ---net 网络的意思l 是 unsigned long所谓网络字节顺序(大尾顺序)就是指一个数在内存中存储的时候“高对低,低对高”(即一个数的高位字节存放于低地址单元,低位字节存放在
2014-07-21 12:15:51
780
转载 Linux 的cp命令
功能: 复制文件或目录说明: cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息参数: -a 或 --archive 此参数的效果和同时指定"-dpR"参数相同 -b 或 --backup
2014-07-21 11:34:54
492
转载 深入分析 Linux 内核链表
一、 链表数据结构简介链表是一种常用的组织有序数据的数据结构,它通过指针将一系列数据节点连接成一条数据链,是线性表的一种重要实现方式。相对于数组,链表具有更好的动态性,建立链表时无需预先知道数据总量,可以随机分配空间,可以高效地在链表中的任意位置实时插入或删除数据。链表的开销主要是访问的顺序性和组织链的空间损失。通常链表数据结构至少应包含两个域:数据域和指针域,数据域用于存储数据,
2014-07-19 14:07:18
483
转载 Linux kernel 内存屏障在RCU上的应用
内存屏障主要解决的问题是编译器的优化和CPU的乱序执行。 编译器在优化的时候,生成的汇编指令可能和c语言程序的执行顺序不一样,在需要程序严格按照c语言顺序执行时,需要显式的告诉编译不需要优化,这在linux下是通过barrier()宏完成的,它依靠volidate关键字和memory关键字,前者告诉编译barrier()周围的指令不要被优化,后者作用是告诉编译器汇编代码会使内存里面的值更改
2014-07-19 13:41:36
560
转载 关于list.h中的_list_add和_list_add_rcu的区别
static inline void __list_add_rcu(struct list_head * new, struct list_head * prev, struct list_head * next) { new->next = next; new->prev = prev; smp_wmb();next->prev = new; prev->next
2014-07-19 13:39:24
2325
转载 vi编辑器常用命令
对于VI的命令行,不需要特意的去记忆,写下来,让要用到的时候能找到就行 游标控制h游标向左移j游标向下移k游标向上移l (or spacebar)游标向右移w向前移动一个单词b向后移动一个单词e向前移动一个单词
2014-07-19 13:23:33
493
转载 vi编辑器常用命令
vi编辑器有3种模式:命令模式、输入模式、末行模式。掌握这三种模式十分重要:1.命令模式:vi启动后默认进入的是命令模式,从这个模式使用命令可以切换到另外两种模式,同时无论在任何模式下只要按一下[Esc]键都可以返回命令模式。在命令模式中输入字幕“i”就可以进入vi的输入模式编辑文件。2.输入模式:在这个模式中我们可以编辑、修改、输入等编辑工作,在编辑器最后一行显示一个“--INS
2014-07-19 13:13:00
419
转载 Linux内核部件分析之连通世界的list
在linux内核中,有一种通用的双向循环链表,构成了各种队列的基础。链表的结构定义和相关函数均在include/linux/list.h中,下面就来全面的介绍这一链表的各种API。struct list_head { struct list_head *next, *prev; }; 这是链表的元素结构。因为是循环链表,表头和表中节点都是这一结构。有prev和
2014-07-19 12:30:34
532
转载 内核中的 likely() 与 unlikely()
在 2.6 内核中,随处可以见到 likely() 和 unlikely() 的身影,那么为什么要用它们?它们之间有什么区别? 首先要明确: if(likely(value)) 等价于 if(value) if(unlikely(value)) 也等价于 if(value)也就是说 likely() 和 unlikely() 从阅读和
2014-07-19 11:17:48
427
原创 strrchr函数
函数简介函数名称: strrchr函数原型:char *strrchr(const char *str, char c);所属库: string.h函数功能:查找一个字符c在另一个字符串str中末次出现的位置(也就是从str的右侧开始查找字符c首次出现的位置),并返回从字符串中的这个位置起,一直到字符串结束的所有字符。如果未能找到指定字符,那么函数将返回NULL。
2014-07-18 15:42:14
741
转载 Linux字符设备与块设备的区别与比较
Linux中I/O设备分为两类:块设备和字符设备。两种设备本身没有严格限制,但是,基于不同的功能进行了分类。(1) 字符设备:提供连续的数据流,应用程序可以顺序读取,通常不支持随机存取。相反,此类设备支持按字节/字符来读写数据。举例来说,调制解调器是典型的字符设备。(2) 块设备:应用程序可以随机访问设备数据,程序可自行确定读取数据的位置。硬盘是典型的块设备,应用程序可以寻址磁盘上
2014-07-18 12:26:10
499
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人