上一页 1 ··· 3 4 5 6 7 8 下一页
摘要: 近日按照《Linux内核的设计与实现》尝试编译内核,遇到很多问题,也学到不少经验。1. 由于需要使用一个较老版本的内核,而后从别人处拷贝的tag.bz2是损坏的。原先并没有在http://www.kernel.org/看到所需要的内核,通过搜索知道较旧的内核可以从类似于http://www.kernel.org/pub/linux/kernel/v2.6/命名规则的页面下载。2. 如果已经安装Win7且磁盘系统转换为NTFS,用EasyBCD硬盘安装Win7+Ubuntu双系统不可行3. 2.6.13内核需要2.95.3版本的gcc4. 练习内核编译时,可以使用比系统自带内核稍微新一些... 阅读全文
posted @ 2012-05-07 09:35 五岳 阅读(1136) 评论(1) 推荐(0)
摘要: 原文链接:http://blog.csdn.net/ljx0305/article/details/4065058epoll - I/O event notification facility在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时越多。并且,在linux/posix_types.h头文件有这样的声明:#define __FD_SETSI 阅读全文
posted @ 2012-05-02 13:03 五岳 阅读(170) 评论(0) 推荐(0)
摘要: select提供的轮询会随着fd数目的增长降低效率,并且其上限是系统定义过的。UNP上select的例子需要编程者自己维护一个fd使用情况的结构,很抽象繁琐。后面的poll的例子和本文提到的epoll使用方法差不多,这是因为高级polling技术没有标准,各个操纵系统的实现不一样,而epoll是由Linux提供的,是对poll的改进。个人感觉区别在于epoll对缓冲池的维护(事件的加入和维护)更简单。 通过对一篇文章(http://blog.csdn.net/ljx0305/article/details/4065058,已转载至“文章”一栏)的学习,笔者试着修改了并调试通过了C语言版的... 阅读全文
posted @ 2012-05-02 11:38 五岳 阅读(3674) 评论(0) 推荐(1)
摘要: 原文:http://www.sandihouse.com/2011-11-17/linux-interupt作者SandiHouse 软件中断:从字面上理解就是由软件、即指令触发的中断,也就是上面提到的由CPU的内部逻辑,比如特定的中断指令、除数为0的除法指令等产生的中断。在x86体系结构规范中,将这样在某一条指令执行完毕后才会产生的中断定义为“同步中断”,也可称之为“异常”。 软中断:原始表述为“softirq",是Linux中断处理机制的一个组成部分。简单地说就是中断产生后(包括硬件中断与软件中断),CPU会执行一段固定的逻辑,这段逻辑的结果就是准备好一些参数并最终跳转到操作系统 阅读全文
posted @ 2012-04-20 09:29 五岳 阅读(1358) 评论(0) 推荐(0)
摘要: 原文:http://blog.csdn.net/wd4084/article/details/6452574最近在学习Unix网络编程(UNP),书中steven在处理网络编程时只用了一个#include “unp.h” 相当有个性并且也很便捷于是我把第三版的源代码编译实现了这个过程,算是一种个性化的开发环境的搭建吧,顺便把过程记录下来,以便自己以后查阅。首先去网上找到源代码包unpv.13e.tar.gz 一找一大堆解压缩到你的某个目录,unpv13e里面大致有这些目录├── aclocal.m4├── advio├── bcast├── config.guess├── config.h├─ 阅读全文
posted @ 2012-04-18 20:36 五岳 阅读(1777) 评论(1) 推荐(0)
摘要: 笔者编码经验比较少,union只知概念,几乎没用过。昨日看到在UNP上一个示例程序如下判断系统使用大端还是小端1 #include "stdio.h" 2 int 3 main(int argc, char **argv) 4 { 5 union { 6 short s; 7 char c[sizeof(short)]; 8 } un; 9 un.s = 0x0102;10 printf("%s: ", CPU_VENDOR_OS);11 if (sizeof(short) == 2) {12 ... 阅读全文
posted @ 2012-04-13 09:41 五岳 阅读(325) 评论(0) 推荐(0)
摘要: 以前在课堂上学习过《Unix初级教程(第四版)》,对于Unix有了一点了解。由于以后使用的需要,要对它进行比较深入的学习,为此需要阅读不少的书籍,这本《Unix环境高级编程》便在此列。希望能通过这本书了解Linux的API,并在这个过程中了解Linux系统的机制。书中内容丰富,有以前了解的,更多的是不了解的。作为第一次阅读,目的不在于事无巨细,过目不忘,而是有个大体了解,从点到面地熟悉这个系统。为了构建整体的印象,对已知的和刚刚了解的都有所涉及。同时作为笔记,不希望成为对目录的简单复制,而是能成为对学习的程度和体会的记录。第一章 基础知识 这一章本身就是概括,略。 旧知: 体系结构、... 阅读全文
posted @ 2012-04-11 20:50 五岳 阅读(2915) 评论(0) 推荐(0)
摘要: (这篇文章网络上转载来转载去,我也搞不清原作者是谁。只贴了一部分)本函数影响由fd参数引用的一个打开的文件。#include<unistd.h>int ioctl( int fd, int request, .../* void *arg */ );返回0:成功 -1:出错第三个参数总是一个指针,但指针的类型依赖于request参数。我们可以把和网络相关的请求划分为6类:套接口操作文件操作接口操作ARP高速缓存操作路由表操作流系统下表列出了网络相关ioctl请求的request参数以及arg地址必须指向的数据类型:类别Request说明数据类型套接口SIOCATMARKSIOCSP 阅读全文
posted @ 2012-04-10 11:40 五岳 阅读(688) 评论(0) 推荐(0)
摘要: 有了之前的基础,此文只是把一些以前没有注意到的和值得学习的知识做一个记录。第一章 作者认为使用#if 0 .... #endif比用/*和*/好,因为后者不能嵌套。但是对于//并没有说明。第二章 三字母词,用两个问号加一个符号表示另一个符号,比较类似于转义字符。查阅了一些资料,它的使用与编译器有关,了解即可,防止字符串常量被错误的解释。??( ==> [ ??< ==> { ??= ==> #??) ==> ] ??> ==> } ??/ ==> \??! ==> | ??' ==> ^ ??- ==> ~ 对于嵌套较深 阅读全文
posted @ 2012-01-11 21:21 五岳 阅读(624) 评论(4) 推荐(0)
摘要: 说明:本文中代码段主要参考自《QTP自动化测试实践》。一、软件安装 按照提示,勾选"安装Microsoft Script Debugger",完全安装即可。二、软件启动 选择测试对象所需要加载的相应插件,在欢迎窗口选择“Blank Test”。三、自带资源 F1可以获得丰富的帮助文档,菜单Help—>Product Feature Movies中包含了几段示例视频,同时在开始菜单的QTP程序目录中可以看到练习示例程序flight。四、进行测试 QTP使用的是VBScript作为测试脚本语言,因此需要对它有一定的了解,比如数据类型、循环结构等,此处不再赘述。 菜单Aut 阅读全文
posted @ 2012-01-10 22:34 五岳 阅读(2826) 评论(0) 推荐(0)
摘要: 由于项目需要进行猴子测试,最近在看《QTP自动化测试实践》。与书上介绍的WinXP的性能计数器相比,Win7的性能日志使用方法有些不同,而且网上现成的很少,在此整理一下使用方法,以备后用。 启动方法:[Win]+[R]——>“运行”输入perfmon启动性能监视器,当然也可以右击“计算机”——>管理——>性能。 数据收集器集——>用户定义,在右边右击,选择新建——>数据收集器,打开向导窗口。设定监视间隔时间。“添加”时要保证监视的程序正在运行,“计数器”是表示需要监视的内容,比如Working Set是内存占用;“选定的对象实例”是需要监视的对象。下一步就完成了。 阅读全文
posted @ 2012-01-09 21:00 五岳 阅读(495) 评论(0) 推荐(0)
摘要: 原文链接:http://www.51testing.com/batch.viewlink.php?itemid=247813原作者:819longjiayan1.SystemUtil.Run "","",""这个可以直接打开ie,也可以根据输入的url,打开相应的website。而且这个语句使用在进行web自动化测试时,即使程序更换了ip或域名,我们也可以不用修改脚本,只需要将SystemUtil.Run 后面的Url改为程序配置文件中的URL就OK了。这样又给我们解决了许多的麻烦。如下面一段重用的登录脚本:myPrepareSyst 阅读全文
posted @ 2012-01-09 11:29 五岳 阅读(316) 评论(0) 推荐(0)
摘要: 在最近的项目中,自己对部分文件进行了一些小修改,又不便于直接提交版本,需要将新版本和自己修改的老版本进行比较。Beyond Compare功能比较强大好用,应用面比较广,甚至可以作为一些编译器的插件。本文简单记录了一下它的基本使用过程,留档后用。 打开软件,选择文件夹比较。 在两边路径里输入需要比较的文件夹。 选中所有文件,选择“比较内容”。 开始比较。 有不等号并用红色高良的文件表示不同的文件。打开进行查看。 使用Ctrl+N快速定位至每一个不同之处,点击箭头可以选择用右边替换左边(或用左边替换右边)。关闭这个窗口可以进行保存,误操作可以使用Ctrl+Z撤消。 另外,如果两... 阅读全文
posted @ 2011-12-26 15:48 五岳 阅读(2135) 评论(0) 推荐(0)
摘要: 近期课程的作业需要用到RPC编程,除了课堂上学到的知识,还得亲自动手。打算先写个简单的HelloWorld练习一下,顺便复习一下学到的知识。 RPC意为远程过程调用协议(Remote Procedure Call Protocol)。编制好单机应用程序,然后划分为两个或多个程序片,加入通信协议使得每片可以在单独的计算机上运行。从一个程序片调用另一个程序片的过程称为远程过程调用,即RPC。它是一个C/S模型,调用程序称为rpc client,被调用程序片称为rpc server。 对于RPC的编程过程可以简化如下:1.构建解决问题的常规应用程序;2.选择一组过程形成远程程序,以便将远程程... 阅读全文
posted @ 2011-11-26 02:13 五岳 阅读(4760) 评论(0) 推荐(1)
摘要: 11月18日第四章 连接 连接器并不理解C语言,然而它能理解机器语言和内存布局。作者强调连接器并不能处理连接时和C语言相关的一些错误,如果C语言提供了lint,要善加利用。 每个外部对象都必须在程序某个地方进行定义。这就意味着如果一个程序中包括了语句extern int a;就应该在别的某个地方包括语句int a;。同时为了免两次定义同一个外部对象(无论有无初值)可能引起的错误,唯一的解决办法是每个外部变量只定义一次。 static可以把变量和函数的作用域限制在一个源文件中,避免命名冲突。 函数必须在调用它之前进行定义或声明,否则它的返回类型就默认为整型,这样当它与函数连接时就会得到... 阅读全文
posted @ 2011-11-18 22:32 五岳 阅读(576) 评论(0) 推荐(0)
摘要: 自从上大学起,接触C也很久了,但是一直不怎么深入,也疏于练习。课程学习之余,专门的C只看过《C程序设计语言》、《C primer plus》,现在终于有了点时间看看更多的书了。本文主要记录阅读和学习《C陷阱与缺陷》的一些心得体会。11月15日前言和导读 “得心应手的工具在初学时的困难程度往往超过那些容易上手的工具。”比较认同这句话。我至今觉得自己其实还是个刚入了门的初学者。第一章 “词法”陷阱 由于之前学过编译原理,对编译器词法分析(主要是符号识别过程)比较了解,理解起来不困难。 在讲到"="和"=="、"|"和"||&qu 阅读全文
posted @ 2011-11-16 21:27 五岳 阅读(1574) 评论(14) 推荐(1)
摘要: 来源:http://www.systhinker.com/html/89/n-17889.html 运算符重载就是赋予已有的运算符多重含义。C++中通过重新定义运算符,使它能够用于特定类的对象执行特定的功能,这便增强了C++语言的扩充能力。 运算符重载的几个问题 1. 运算符重载的作用是什么? 它允许你为类的用户提供一个直觉的接口。 运算符重载允许C/C++的运算符在用户定义类型(类)上拥有一个用户定义的意义。重载的运算符是函数调用的语法修饰: class Fred { public: // ... }; #if 0 // 没有算符重载: Fred add(Fred, F... 阅读全文
posted @ 2011-11-02 16:29 五岳 阅读(205) 评论(0) 推荐(0)
摘要: 原文链接:http://www.cppblog.com/Lee7/archive/2008/04/14/47036.aspx#include<iostream>#include<list>#include<numeric>#include<algorithm>usingnamespacestd;//创建一个list容器的实例LISTINTtypedeflist<int>LISTINT;//创建一个list容器的实例LISTCHARtypedeflist<int>LISTCHAR;voidmain(void){//----- 阅读全文
posted @ 2011-10-17 15:18 五岳 阅读(195) 评论(0) 推荐(0)
摘要: 一、三层(网络层)发现算法来源:王娟娟.基于SNMP的网络拓扑发现算法研究.武汉科技大学硕士学位论文,2008数据结构:待检路由设备网关链表:存放指定深度内待检路由设备的网关信息,处理后删除。拓扑信息链表:存放从已检测路由设备的网关信息。子网信息链表:存放网关信息对应的子网信息。基本思想: 类似于广度优先,在指定深度内运行算法,最后根据拓扑信息链表获得所有路由及其互联关系,根据子网信息链表各路由设备连接的子网及子网内所有活动主机的信息。需要获得的信息: 路由信息如下图所示。点击可查看补充说明。路由表中的每个条目都包含ipRouteDest、ipRouteIfIndex、ipRouteNex.. 阅读全文
posted @ 2011-09-30 11:23 五岳 阅读(6533) 评论(0) 推荐(1)
摘要: (本文绝大部分内容来自于Gary.Wrighth和W.Richard Stevens的《TCP/IP详解,卷1:协议》,从中节选这些内容主要是为了方便查阅)一、协议 基于TCP/IP的网络管理包含两个部分:网络管理站(也叫管理进程,manager)和被管的网络单元(也叫被管设备) 。被管设备种类繁多,例如:路由器、X终端、终端服务器和打印机等。这些被管设备的共同点就是都运行TCP/IP协议。被管设备端和管理相关的软件叫做代理程序(agent)或代理进程。管理进程和代理进程之间的通信协议,叫做简单网络管理协议SNMP(Simple NetworkManagement Protocol) 。在R. 阅读全文
posted @ 2011-09-19 18:46 五岳 阅读(1131) 评论(0) 推荐(0)
摘要: 放假归来,半个月没看书了,稍微有些生疏。被安排了新的工作,老的自学任务还需继续完成。 这一章内容比较多,按小节整理了一下。一、编码整数1.整数型的大小 由通信过程双方交换信息的协议标准引申出了编码的整数,进而探讨了各个整数类型的大小(char、int、long、int8_t、uint8_t等)、获取它们的长度的方法——sizeof()、并且有一个简单的程序示例TestSizes.c来展示。2.传输顺序 多个字节编码的整数,是从最高有效位(大端、左端)还是从最低有效位(小端、右端)发送,也是传输双方需要协调的。大多数协议使用大端顺序,因此它也被称为网络字节顺序。3.符号扩展 利用... 阅读全文
posted @ 2011-09-08 21:37 五岳 阅读(679) 评论(0) 推荐(0)
摘要: UDP的过程通信看上去比TCP简单一些,但也有许多细节需要注意。比如,UDP套接字使用前不必连接,TCP类似于电话通信,UDP类似于邮件通信,UDP套接字就像一个邮箱,可以把许多不同来源的信件或包裹放入其中。因此,在示例UDPEchoClient.c中,是需要用SockAddrsEqual()来检测回送的数据包是否是之前所送往的服务器回送的,尽管在示例中不太可能出现这种情况。 程序使用的地址结构、套接字的创建还是与TCP相差无几。由于没有建立连接的步骤,不需要调用listen(),一旦套接字具有地址就准备好接受消息。同时UDP也不需要使用accept()为每个客户获取一个新的套接字,而是... 阅读全文
posted @ 2011-08-05 22:25 五岳 阅读(901) 评论(0) 推荐(0)
摘要: 这一章的核心内容是getaddrinfo()函数。 int getaddrinfo(constchar*hostStr, constchar* serviceStr, conststruct addrinfo *hints,struct addrinfo **results)//需要配合下面函数进行使用void freeaddrinfo(struct addrinfo *addrList) //释放创建的结果链表const char *gai_strerror(int errorCode) //如果getaddrinfo返回非0值,可以描述出错的是什么 含义: hostStr 主... 阅读全文
posted @ 2011-08-04 21:29 五岳 阅读(684) 评论(0) 推荐(0)
摘要: 前段时间刚开始学习《TCP/IP Sockets编程(C语言实现) (第2版)》一书,又被告知建议先去看一下《UNIX网络编程(第一卷)》的部分内容会对理解其理论知识有所帮助,于是稍微停滞了一下。几天前所练习的实例已经有所生疏,因此为了复习这部分内容(前面所提起的第一本书第2章),此文便作为复习笔记(书本关键内容摘录),而以后各章节的学习也希望能做到及时总结和复习。 本章示例的工作方式:客户连接服务器并发送它的数据;服务器简单地把它接收到的任何内容发送回客户并断开连接。1.典型的TCP客户的通信步骤⑴使用socket()创建TCP套接字 参数涉及地址族、使用的协议,正确创建返回一个句柄... 阅读全文
posted @ 2011-08-03 21:08 五岳 阅读(2655) 评论(0) 推荐(0)
摘要: 关于IPv6地址的结构(P23)struct in_addr { uint32_t s_addr[16];}; IPv6地址是128位的,因此对此生疑。经过对netinet/in.h查证,发现确实有误。以下是在in.h中的定义:struct in6_addr { union { uint8_t __u6_addr8[16];#if defined __USE_MISC || defined __USE_GNU uint16_t __u6_addr16[8]; uint32_t __u6_addr32[4];#endif } __in6_u... 阅读全文
posted @ 2011-07-30 11:25 五岳 阅读(868) 评论(0) 推荐(0)
上一页 1 ··· 3 4 5 6 7 8 下一页
回到顶部