- 博客(37)
- 资源 (42)
- 收藏
- 关注
原创 解决Ubuntu系统启动网络连接超时的问题
1、确保/etc/network/interfaces文件中只有本地环回的内容:auto lo iface lo inet loopback 2、打开/etc/init.d/rc.local文件,在文件最后添加:/sbin/ethtool -s eth0 autoneg off speed 100 duplex full 保存,重新启动电脑后,
2015-04-06 22:11:13
2784
原创 ubuntu 14.04 64位如何安装32位支持
cd /etc/apt/sources.list.d/sudo vim ia32-libs-raring.list加入以下四行内容:deb http://old-releases.ubuntu.com/ubuntu raring main universe multiverse restricteddeb http://old-releases.ubuntu.com/u
2015-03-05 17:35:42
544
原创 Wireshark没有一个可以抓包的接口
windows 7上安装wireshark时,会遇到NPF驱动无法启动的情况,一般如果采用管理员的方式就可以正常启动,或者是将NPF安装为service的方式,这样问题就OK了以管理员的方式进行启动NPF驱动方法步骤为开始->附件->cmd(右键点击,浏览到以管理员方式启动) ->命令net start npf
2015-01-20 12:40:33
7112
原创 单链表的反转
单向链表的反转是一个经常被问到的一个面试题,也是一个非常基础的问题。比如一个链表是这样的: 1->2->3->4->5 通过反转后成为5->4->3->2->1。最容易想到的方法遍历一遍链表,利用一个辅助指针,存储遍历过程中当前指针指向的下一个元素,然后将当前节点元素的指针反转后,利用已经存储的指针往后面继续遍历。源代码如下:struct Node { int data;
2014-12-03 23:55:59
290
原创 判断链表是否存在环
设置两个指针(fast, slow),初始值都指向头,slow每次前进一步,fast每次前进二步,如果链表存在环,则fast必定先进入环,而slow后进入环,两个指针必定相遇。(当然,fast先行头到尾部为NULL,则为无环链表)程序如下:struct Node{ int data; Node* next;};bool IsExitsLoop(Node *head)
2014-12-03 22:02:56
451
原创 C语言实现strcmp
int strcmp(const char *str1, const char *str2) { assert(str1 && str2); while (*str1 && *str2 && (*str1 == *str2)) { str1++, str2++; } if (*str1 && *str2) retur
2014-12-03 21:42:41
367
原创 C语言实现字符串反转
void strRev(char *s) { char temp, *end = s + strlen(s) - 1; while( end > s) { temp = *s; *s = *end; *end = temp; end--; s++; } }
2014-12-03 18:55:22
590
原创 C语言实现strcat
char *strcat(char *dst, const char *src){ assert((dst != NULL) && (src != NULL)); char *p = dst; while(*p) p++; while( (*p++ = *src++) != '\0' ) ; return dst;}
2014-12-03 16:42:47
495
原创 C语言中的strlen与sizeof的区别
strlen是计算字符串的长度,字符串必须以字符串终止符'/0'结尾,切计算的长度值不包含终止字符'\0';sizeof是一个C语言中的一个单目运算符,计算数据类型所占空间的大小;静态数组举例:char str[20]="0123456789";int a=strlen(str); //a=10; >>>> strlen 计算字符串的长度,以结束符‘\0’为字符串结束
2014-12-03 15:30:12
296
原创 C语言实现strcpy和memcpy
char* strcpy(char* pDest, const char* pSrc){ assert((pDest != NULL) && (pSrc != NULL)); char *pTmp = pDest; while ((*pDest++ = *pSrc++) != '\0'); return pTmp;}void* memcpy(vo
2014-12-03 14:30:41
417
原创 Linux内核各模块启动时间分析
1. 首先修改kernel的bootargs,在bootargs中添加以下内容:printk.time=y initcall_debug(=1)这样kernel在启动时,将会打印出每个模块的启动耗时:printk.time=y 代表内核打印信息含有时间戳,如何您的内核没有配置: Kernel hacking --->Sho
2014-11-27 18:04:35
2265
原创 u-boot如何传递参数给kernel
u-boot环境变量bootargs就是要传递给kernel的参数,如:bootargs=console=ttymxc0 init=/init androidboot.console=ttymxc0 video=mxcdi0fb:RGB24,CPT-WVGA di0_primary video=mxcdi1fb:RGB666,AUO ldb=single,di=1,ch1_map=JEIDA
2014-11-27 15:05:47
1364
4
原创 原子操作
weGNU C中x++是原子操作吗?答案:不是。x++由3条指令完成。x++在单CPU下不是原子操作。对应3条汇编指令movl x, %eaxaddl $1, %eaxmovl %eax, x
2014-11-23 23:18:45
1510
原创 回调函数
回调函数回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。回调函数是一个程序员不能显式调用的函数;通过将回调函数的地址传给被调用者从而实现调用。回调函数实现的机制是:(
2014-11-19 18:27:45
373
1
原创 写时拷贝
Linux的fork()使用写时拷贝 (copy- on-write)页实现。写时拷贝是一种可以推迟甚至避免拷贝数据的技术。内核此时并不复制整个进程的地址空间,而是让父子进程共享同一个地址空间。只用在需要写入的时候才会复制地址空间,从而使各个进程拥有各自的地址空间。也就是说,资源的复制是在需要写入的时候才会进行,在此之前,只有以只读方式共享。这种技术使地址空间上的页的拷贝被推迟到实际发生写入的时候
2014-11-19 18:06:49
363
原创 堆和栈的区别
一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)― 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈; 2、堆区(heap) ― 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收; 3、全局区(静态区)(static)― 全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域
2014-11-19 17:51:57
294
原创 线程和进程的区别
线程是进程的一部分,进程是程序的一部分。1、调度:进程作为资源拥有的基本单位,线程是进程内的基本调度单位。在同一进程中,线程的切换不会引起进程的切换。2、并发性:在引入线程的操作系统中,不仅进程之间可以并发执行,而且在一个进程中的多个线程之间,亦可并发执行,因而使操作系统具有更好的并发性,从而能更有效地使用系统资源和提高系统吞吐量。3、拥有资源:每个进程都有自己独立的地
2014-11-19 17:14:19
298
原创 const的用法
C++中为什么会引入const?1.大家知道,C++有一个类型严格的编译系统,这使得C++程序的错误在编译阶段即可发现许多,从而使得出错率大为减少,因此,也成为了C++与C相比,有着突出优点的一个方面。2. C中很常见的预处理指令 #defineVariableName VariableValue可以很方便地进行值替代,这种值替代至少在三个方面优点突出:1)一是避免了意义模糊的数字
2014-11-19 16:51:57
260
原创 inline的用法
inline的核心思想是通过替换消除函数调用的开销。所谓替换是指,用函数本体替换每一处对此函数的调用。函数调用的开销是指,每一次函数调用,程序都需要保存当前函数的现场,例如保存所有寄存器的值,每次函数返回都需要恢复现场,这个现场的保存和恢复属于函数调用的开销。 如果一个函数被inline化,意味着此函数不会被调用,那么此函数在编译时将不会出现在符号表中,这样意味着此函数没有地
2014-11-19 13:59:56
471
原创 static的用法
static关键字是C, C++中都存在的关键字, 它主要有三种使用方式:(1)局部静态变量;(2)外部静态变量/函数;(3)静态数据成员/成员函数
2014-11-18 17:20:19
290
原创 AndroidManifest.xml文件解析
一些规则:元素:在所有的元素中只有和是必需的,且只能出现一次。如果一个元素包含有其他子元素,必须通过子元素的属性来设置其值。处于同一层次的元素,这些元素的说明是没有顺序的。属性:按照常理,所有的属性都是可选的,但是有些属性是必须设置的。那些真正可选的属性,即使不存在,其也有默认的数值项说明。除了根元素的属性,所有其他元素属性的名字都是以android:前缀的;定义类名:所有的元素名都对
2014-10-05 13:34:18
316
原创 Windows下使用adb连接时提示:adb server is out of date. killing...
执行adb.exe devices,下面错误提示:adb server is out of date. killing...ADB server didn't ACK* failed to start daemon *error: unknown host service
2014-08-25 11:59:28
543
原创 在Linux内核中打印日志时间戳
在编译Linux内核,配置时:make menuconfig ---> Kernel hacking --> show timing information on printks
2014-08-24 22:58:50
502
原创 Android编译常见错误
1. /usr/include/features.h:324:26: fatal error: bits/predefs.h: No such file or directory解决方法:
2014-08-23 02:22:43
348
原创 ubuntu 12.04下手动安装jdk6
JDK6的下载地址:http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase6-419409.html把jdk-6u45-linux-x64.bin复制到/
2014-08-23 00:24:58
384
原创 Android源码下载(最新可用)
1、下载repo工具curl "http://php.webtutor.pl/en/wp-content/uploads/2011/09/repo" > ./repocp repo /bin/repochmod a+x /bin/repo2、下载Android源码1)repo init -u git://android.git.linaro.org/platform
2014-08-21 00:03:08
369
深入理解Linux内核中文第三版——第13章 IO体系结构和设备驱动程序
2011-01-15
嵌入式Linux应用开发完全手册.part8.rar
2011-01-09
嵌入式Linux应用开发完全手册.part7.rar
2011-01-09
嵌入式Linux应用开发完全手册.part6.rar
2011-01-09
嵌入式Linux应用开发完全手册.part5.rar
2011-01-09
嵌入式Linux应用开发完全手册.part4
2011-01-09
嵌入式Linux应用开发完全手册.part3
2011-01-09
嵌入式Linux应用开发完全手册.part2
2011-01-09
嵌入式Linux应用开发完全手册.part1.rar
2011-01-09
深入理解Linux内核中文第三版——第8章 内存管理
2009-11-29
深入理解Linux内核中文第三版——第5章 内核同步
2009-09-22
深入理解Linux内核中文第三版——第4章 中断和异常
2009-09-22
深入理解linux内核中文第三版——第3章 进程
2009-09-22
深入理解Linux内核中文第三版——第2章 进程
2009-09-22
深入理解Linux内核中文第三版——第1章
2009-09-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人