2013年5月6日

套接字编程简介【1】

摘要: 套接字地址结构IPV4套接字32位IPv4地址结构体1 struct in_addr{ 2 in_addr_t s_addr; //32位 IP 地址 网络字节序3 }; IPv4套接字结构体1 struct sockaddr_in{2 uint8_t sin_len;3 sa_family_t sin_family; //套接字地址结构的地址族4 in_port_t sin_port; //端口号5 struct in_addr sin_addr; ... 阅读全文

posted @ 2013-05-06 14:23 阿杜的世界 阅读(154) 评论(0) 推荐(0) 编辑

2013年5月3日

c/c++笔记本

摘要: C/C++ 基础 C/C++基本数据类型 C++选择语句 C++循环语句 C++函数 C++指针详解 C/C++ typedef用法 C++ struct,union和enum C++类和对象 C++类复制构造函数 C++继承 C++虚函数 C++运算符重载 C++ Template C++类型转换 C++异常处理 异常不可用于逻辑处理 标准库 C++STL概览 string常用操作 vector常用操作 map常用操作 STL容器迭代过程中删除元素技巧 ... 阅读全文

posted @ 2013-05-03 07:53 阿杜的世界 阅读(184) 评论(0) 推荐(0) 编辑

网络编程笔记本

摘要: 阅读全文

posted @ 2013-05-03 07:46 阿杜的世界 阅读(125) 评论(0) 推荐(0) 编辑

2013年4月24日

wait和waitpid详解

摘要: wait的函数原型是: #include <sys/types.h>#include <sys/wait.h>pid_t wait(int *status); 进程一旦调用了wait,就立即阻塞自己,由wait自动分析是否当前进程的某个子进程已经退出,如果让它找到了这样一个已经变成僵尸的子进程, wait就会收集这个子进程的信息,并把它彻底销毁后返回;如果没有找到这样一个子进程,wait就会一直阻塞在这里,直到有一个出现为止。 参数status用来保存被收集进程退出时的一些状态信息,它是一个指向int类型的指针。但如果我们对这个子进程是如何死掉的毫不在意,只想把这个僵尸 阅读全文

posted @ 2013-04-24 14:08 阿杜的世界 阅读(239) 评论(0) 推荐(0) 编辑

2013年3月22日

OOP和Linux内核的一点思考

摘要: 一个理解:面向对象的出现是为了解决大型软件项目中代码复用性和代码可维护性的两个关键问题;相对于面向过程的语言(C/basic等)将要解决的问题的模型构建于头脑中,而写出的代码是基于机器的空间,面向对象语言在分析问题时候的层次更高一层,将要解决问题的模型利用class的概念表示出来,这样我们利用UML建模工具可以帮助我们建模。类似的,在学习软件架构的过程中,目前流行的SOA、面向方面等思想的意义在于将我们分析系统或者问题的层次提高,最主要的目的就是要让我们能够构建更大规模的软件系统,能够尽可能得复用已有的代码和前人的成果。 一个问题:Linux内核从出现的时候到现在,不是纯的面向过程构建的软件. 阅读全文

posted @ 2013-03-22 20:59 阿杜的世界 阅读(176) 评论(0) 推荐(0) 编辑

2012年9月24日

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

摘要: 参考文章:http://blog.sina.com.cn/s/blog_6605f0730100zf6n.html但是经试验过后有些问题,现在总结如下:1、# service mysql stop2、# mysqld_safe --user=mysql --skip-grant-tables --skip-networking&3、# mysql -u root mysql4、mysql> UPDATE user SETPassword=PASSWORD('newpassword') where USER='root' and host=' 阅读全文

posted @ 2012-09-24 18:40 阿杜的世界 阅读(167) 评论(0) 推荐(0) 编辑

GDB的使用,无他,唯需手熟尔

摘要: 简介:GDB是GUN发布的一款功能强大的程序调试工具。GDB主要完成下面三个方面的功能:1.启动调试程序.2.让被调试的程序在指定的位置停住(即可以设置断点)。3.当成被停住时,可以检查程序的状态(如变量值等等)。如何启动GDB?启动GDB很简单,如下所示:gdb 调试程序名 例如 :gdb a或者:gdb file 可执行文件名例如:gdb file a既然我们都已经能够启动GDB了,那么我们来一起看一下GDB都有哪些命令。注意:GDB中的这些命令是有全名和缩写,在括号内的为缩写命令:help 作用:显示gdb的使用帮助信息,后可接命令名,显示命令的使用信息命令:list(l) 作用:查看. 阅读全文

posted @ 2012-09-24 10:35 阿杜的世界 阅读(227) 评论(0) 推荐(0) 编辑

2012年9月16日

一点心得,觉知此事须躬行

摘要: 1、在开始设计程序之前,你必须认真分析用户需求,确认自己知道并理解这个程序究竟是用来干什么的。2、一定要多花时间思考:如何构造程序,需要什么样的数据结构,它又应该如何在程序中使用。3、经常与自己的伙伴探讨程序的具体实现4、可以试着在纸面上执行程序的核心代码,这个过程通常被称为“空运行”。调试并不一定非用计算机不可。 阅读全文

posted @ 2012-09-16 20:41 阿杜的世界 阅读(257) 评论(0) 推荐(0) 编辑

2012年8月7日

tasklet源码注释翻译

摘要: Tasklets---类似BHS的多线程与一般的软中断的主要不同是,tasklet只能在一个CPU上同时执行与一般的BHS的主要不同是:不同的tasklet可以在不同的CPU上同时运行特性:1、如果调用tasklet_schedule(),那么在这之后tasklet肯定回在某个CPU上被执行2、如果tasklet已经被调度选中,但是异常仍然没有开始,那么它将仅仅被执行一次3、如果tasklet已经在另外一个CPU上运行(或者调度请求是它自己发出的),该tasklet将会被延期执行4、tasklet对于自身来说是严格串行化执行,但对自己和别的tasklet来说可以并行执行。如果要求保证一些内部任 阅读全文

posted @ 2012-08-07 15:46 阿杜的世界 阅读(166) 评论(0) 推荐(0) 编辑

2012年7月12日

vim+ctags+cscope阅读源代码

摘要: 下面以使用cscope阅读内核源代码为例:1、#从Linux内核官网下载内核源代码 2、#解压文件$ tar xvfj linux-2.6.38.15.tar.bz2 3、#进入源代码根目录$ cd linux-2.6.38.15 4、#递归生成标签文件$ ctags -R5、#递归生成索引信息文件$ cscope-indexer -r6、#使用cscope阅读源码$ cscope标签文件、索引信息文件只需要第一次或者代码发生变动时生成,以后使用直接运行cscope即可。这只是打开了宝库的大门,我也刚刚迈入,让我们一起领略linux的魅力吧,后续心得继续更新哈 阅读全文

posted @ 2012-07-12 20:30 阿杜的世界 阅读(214) 评论(0) 推荐(0) 编辑

导航