- 博客(39)
- 资源 (11)
- 问答 (1)
- 收藏
- 关注
原创 linux内核链表分析
linux内核中有很多用的很经典的数据结构,链表就算其中之一,还有队列,哈希查找,红黑树查找等等,链表的设计很经典,就连很多开发内核的黑客们都觉得内核中链表的设计是他们引以自豪的一部分。我觉得内核链表的好主要体现为两点,1是可扩展性,2是封装。可扩展性肯定是必须的,内核一直都是在发展中的,所以代码都不能写成死代码,要方便修改和追加。将链表常见的操作都进行封装
2014-10-17 19:40:47
731
原创 虚拟机网络配置笔记
1.虚拟机为桥接时,它使用的网卡是win下的网卡,也就是说虚拟机和win共用一个网卡,这个网卡可以使无线网卡,也可以是有线网卡;为nat模式时,使用的是虚拟网卡VM8;为host-only模式时,使用的是虚拟网卡VM1,所以桥接有线网卡时,跟VM1和VM8没有关系,而桥接无线网卡时,因为避免无线网卡与虚拟网卡VM1和VM8冲突,最好将VM1和VM8禁用。2.VM0的默认上网方式是桥接,
2014-09-21 17:04:00
888
转载 网络原理以及对VM中VMnet0,VMnet1,VMnet8的理解
1. 文中符号的说明: : 可以理解成A,也可以理解成B。2. 术语 调制解调器(Modem): 实现模拟信号与数字信号间的相互转换,可以忽略成一条网线。 路由器: 提供路由、DHCP、NAT等的专门设备,连接不同的网络(包括局域网与WAN之间的连接,提供互联网连接)。 网关: 网关实质上是一个网络通向其他网络的IP地
2014-09-12 09:28:11
2454
原创 uboot详解
我们知道,bootloader是系统上电后最初加载运行的代码。它提供了处理器上电复位后最开始需要执行的初始化代码。 在PC机上引导程序一般由BIOS开始执行,然后读取硬盘中位于MBR(Main Boot Record,主引导记录)中的Bootloader(例如LILO或GRUB),并进一步引导操作系统的启动。 然而在嵌入式系统中通常没有像BIOS那样的固件程序,因此整个
2014-09-06 15:07:19
636
原创 ARM寄存器简介
ARM处理器共有37个寄存器。其中包括:31个通用寄存器,包括程序计数器(PC)在内。这些寄存器都是32位寄存器。以及6个(除用户模式之外的6种模式下对CPSR备份的寄存器SPSR_XX)32位状态寄存器。但目前只使用了其中12位。ARM处理器共有7种不同的处理器模式,在每一种处理器模式中有一组相应的寄存器组,虽然一共有37个寄存器,但并不是在每个模式下这37个寄存器都是可见的;任意时刻(也就是任
2014-09-06 08:09:00
768
转载 浅谈select多路复用机制
函数作用:系统提供select函数来实现多路复用输入/输出模型。select系统调用是用来让我们的程序监视多个文件句柄的状态变化的。程序会停在select这里等待,直到被监视的文件句柄有一个或多个发生了状态改变。关于文件句柄,其实就是一个整数,我们最熟悉的句柄是0、1、2三个,0是标准输入,1是标准输出,2是标准错误输出。0、1、2是整数表示的,对应的FILE *结构的表示就是stdin、
2014-08-18 21:49:01
968
原创 Ubuntu12.04英文版安装中文输入法
如果安装Ubuntu12.04中文版,会自动安装中文输入法,如果安装Ubuntu12.04英文版,需要手工安装中文输入法,步骤如下:1、安装中文语言包,依次点击 “System Settings”-》“Language Support” ,找到并点击 “Install/Remove Languages”
2014-08-16 22:06:40
870
转载 当glibc detected *** free(): invalid next size (normal)出现
当glibc detected *** free(): invalid next size (normal)出现 是内存泄露的问题。 (1)一般是free了没有分配的内存(2)shi(2)还有就是分配了内存忘记释放也有可能会出现这样的问题。 (3)最后查出来是数组循环的时候越界了 , 写到了其他的内存里面, 然后一free那个区域就出现了这样的问题。
2014-08-14 11:23:12
3762
原创 linux 网络编程函数详解
SOCKET()我们使用系统调用socket()来获得文件描述符:#include#includeint socket(int domain,int type,int protocol);第一个参数domain设置为“AF_INET”。第二个参数是套接口的类型:SOCK_STREAM或SOCK_DGRAM。第三个参数设置为0。系统调用socket()只返回一个套
2014-08-09 16:58:34
586
转载 值—结果参数详解
值-结果参数(socket编程中一到七的struct sockaddr_in的长度参数)1.概念:当函数参数是从内核到进程时,函数被调用时参数大小是一个值,它告诉内核该参数的结构大小避免内核写操作越界,函数返回时,参数的结构大小又是一个结果,它告诉进程内核写进数据的多少,这种参数叫做值-结果参数。2.例子:八个socket编程中涉及的函数中,总是通过指针来传递指向结构的指针。同时结
2014-08-08 08:51:45
1315
原创 error while loading shared libraries: xxx.so.x"错误的原因和解决办法
一般我们在Linux下执行某些外部程序的时候可能会提示找不到共享库的错误, 比如:tmux: error while loading shared libraries: libevent-1.4.so.2: cannot open shared object file: No such file or directory原因一般有两个, 一个是操作系统里确实没有包含该共
2014-08-05 11:51:10
517
转载 strtok函数和strtok_r函数的区别
1.一个应用实例网络上一个比较经典的例子是将字符串切分,存入结构体中。如,现有结构体typedef struct person{ char name[25]; char sex[10]; char age[4]; }Person;需从字符串 char buffer[INFO_MAX_SZ]="Fred male 25,John mal
2014-07-28 19:31:52
1405
转载 C语言中fgetc函数返回值的意义
C语言fgetc()函数的返回值意义学习C语言的,文件操作,大都会用到它。它的函数原型:int fgetc( FILE* stream );这个函数的返回值,是返回读取的一个字节。如果读到文件末尾返回EOF。EOF其实就是一个宏#define EOF (-1)表示-1.既然返回的是一个字节,为什么返回值确用4字
2014-07-09 18:44:50
1206
1
转载 C语言中文件指针和文件位置指针,位置指针相关库函数
1 文件指针文件指针是指向一个文件的指针,确切的将是指向用文件这个结构体所定义的对象的起始地址,文件指针的移动是指在文件之间来移动,比如:FILE * fp;fp = fopen("/programe/test.txt","a+");fp就表示文件指针。问题:文件指针能不能在文件之间来回移动?如果能的话,需要先释放文件指针吗?如果
2014-07-06 18:25:59
2251
原创 文本文件与二进制文件
一、文本文件与二进制文件的定义 大家都知道计算机的存储在物理上是二进制的,所以文本文件与二进制文件的区别并不是物理上的,而是逻辑上的。这两者只是在编码层次上有差异。 简单来说,文本文件是基于字符编码的文件,常见的编码有ASCII编码,UNICODE编码等等。二进制文件是基于值编码的文件,你可以根据具体应用,指定某个值是什么意思(这样一个过程,可以看作是自定义编码)。
2014-07-06 11:09:44
440
转载 指针函数和函数指针的区别
在学习arm过程中发现这“指针函数”与“函数指针”容易搞错,所以今天,我自己想一次把它搞清楚,找了一些资料,首先它们之间的定义:1、指针函数是指带指针的函数,即本质是一个函数。函数返回类型是某一类型的指针 类型标识符 *函数名(参数表) int *f(x,y);首先它是一个函数,只不过这个函数的返回值是一个地址值。函数返回值必须用同类型的指
2014-06-27 12:48:57
517
1
转载 C语言面试题大汇总之华为面试题
[cpp] view plaincopyprint?1、局部变量能否和全局变量重名? 答:能,局部会屏蔽全局。要用全局变量,需要使用"::" ;局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变
2014-06-21 12:50:40
1180
原创 static的三种用法
在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条。(1)先来介绍它的第一条也是最重要的一条:隐藏。当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。为理解这句话,我举例来说明。我们要同时编译两个源文件,一个是a.c,另一个是main.c。下面是a.c的内容char a = 'A'; // global variable
2014-06-21 10:26:03
1313
原创 QVector使用经验
1. QVectorQVectorint> > c; QVector b(10);//不能写成这样 QVectorint> b=c[0]; c.append(b); b[4]=10; qDebug()4];2. QVectorint> b(10);//只有确定b的具体大小后才能直接对指定位置插入值 b[4]=10; qDebug()4
2014-06-20 11:22:14
7573
原创 QVector使用心得(2014/4/15)
标准库Vector类型使用需要的头文件:#include Vector:Vector 是一个类模板。不是一种数据类型。 Vector是一种数据类型。一、 定义和初始化Vector v1; //默认构造函数v1为空Vector v2(v1);//v2是v1的一个副本Vector v3(n,i);//v3包含n个值为i的元素Vector v4(n); //v4含有n
2014-06-20 11:19:40
3901
原创 qt中mysql数据库经验总结
1.queryMenu.prepare("insert into ordering (desknum,foodname,foodprice) values(:desknumm,:foodname,:foodprice)"); //准备执行SQL查询queryMenu.bindValue(":desknumm", nid); //在占位符上确定绑定的值queryMenu.bindValue(":fo
2014-06-20 10:53:59
727
转载 Qt探秘——谈ui文件的用法
[经验分享] Qt探秘——谈ui文件的用法相 信用过Qt Designer的朋友,对Qt Project中的.ui文件并不陌生。这个文件在Qt Designer中并不能直接修改其源代码,而只能通过Qt Designer的图形工具对其进行操作。对于这一点,我不得不要赞一下设计Qt Designer的人,因为这大大可以避免.ui文件中出现语法错误的概率,同时使得程序员能省下大量的程序界面设计时
2014-06-20 10:47:35
473
原创 QT4(C++)两个头文件相互包含(类超前引用)
1、C++中的类相互包含(QT4) 所谓超前引用是指一个类型在定义之前就被用来定义变量和声明函数。 一般情况下,C/C++要求所有的类型必须在使用前被定义,但是在一些特殊情况下,这种要求无法满足,例如,在类time_outDialog中保留了对象指针,该对象用于显示/修改一些信息。为了实现对话框"应用"按钮,把对话框做的修改立刻更新到time_outDialog界面上,为
2014-06-20 10:43:28
1811
原创 Qt【tcp server 】
参考网址:http://blog.163.com/brave_smile_heart/blog/static/187238171201231116164/
2014-06-20 10:38:51
468
原创 QT经验总结
1.一个槽可以连接多个信号,一个信号可以连接多个槽2.信号在发射之前必须连接,否则发射信号不会生效3.如果connect连接不成功,主要有两个原因:一.对象错了,或者new了多个对象;二:信号在连接之前发射信号4.设置背景图片:ui->pushButton_5->setStyleSheet("QPushButton#pushButton_5{border-i
2014-06-20 10:33:49
610
原创 启动系统,输入正确的账号和密码,点击登录,屏幕一闪,然后又跳回登录界面
启动系统,输入正确的账号和密码,点击登录,屏幕一闪,然后又跳回登录界面。 百度、谷歌了好久,各家有各家的说法,也许是症状相同,病因不同吧,按照网上的解决方案,始终解决不了,最终,经过不懈的尝试((*^__^*) 嘻嘻……),发现了解决方案,为了防止下次忘记,在此记录一下,同时,感谢作者。 原因:主目录下的.Xauthority文件拥有者变成了root,从而以用户登陆的时
2014-06-19 23:13:25
30338
原创 win7 ubuntu 双系统,win7 重装后,如何恢复ubuntu
前在安装Ubuntu 9.10的时候,听说Ubuntu 9.10 采用了新的ext4文件系统,于是就在安装时选择了,结果大部分的grub4dos版本都比较老,并不支持这个文件系统,网上也有人说最新的0.4.4版本好像是支持,但是都太过于复杂,不太适合于大多数人,弄不好还有可能使Windows 7无法引导,网上也有使用这个的方法,喜欢研究的朋友可以搞一下,写出来大家也一起分享一下。在网上也找了一些关
2014-06-19 23:12:04
577
原创 双系统重装系统后,grub命令行修复linux系统
*** Linux的安装分区就是Boot分区(大小一般为100M),我的电脑是sda7下面的我是引用网上别人的做法,不过我自己试过,方法没问题。1. 先使用ls命令,找到Ubuntu的安装在哪个分区: grub rescue>ls 会罗列所有的磁盘分区信息,比方说: (hd0,1),(hd0,5),(hd0,3),(hd0,2)2.
2014-06-19 23:09:00
876
原创 浅谈哈希表
8. 10.5 除留余敢法此方法为最常用的构造散列函数方法。对于散列裴长为m 的散列函数公式为:f ( key) = key mod p (p 运m)mod 是取模(求余数)的意思。事实上,这方法不仅可以对关键宇直接取模,也可在折叠、平方取中后再取模。很显然,本方法的关键就在于选择合适的P , P 如果选得不好,就可能会容易产生同义词。例如表8-10-4, 我们对于有1
2014-06-19 20:13:50
605
转载 setStyleSheet来设定窗口部件的样式
使用setStyleSheet来设置图形界面的外观:QT Style Sheets是一个很有利的工具,允许定制窗口的外观,此外还可以用子类QStyle来完成,他的语法很大比重来源于html的CSS,但是适用于窗口 概括:Style Sheets是文字性的设定,对于整个应用程序可以使用QApplication::setStyleSheet() 或者对应一个窗口可以使用QW
2014-06-19 09:44:43
484
转载 2010最危险的编程错误
网络无处不在的今天,安全问题日益严峻,攻击事件层出不穷,应该说,软件系统中代码存在安全漏洞是主要的祸因之一。而这实际上反映了软件开发人员在编程的安全性方面缺乏必要的培训和常识。由CWS(美国国土安全部下属的软件保证项目)与SANS(权威安全培训组织)联合编制的最危险的25个编程错误,是软件开发人员非常好的快速学习资料。日前,两个机构发布了2010年的编程错误列表。最新的25个最危险的编程错
2014-06-19 09:31:14
439
学习嵌入式ARM开发,有什么好的书籍推荐?
2013-11-09
TA创建的收藏夹 TA关注的收藏夹
TA关注的人