
linux学习
文章平均质量分 79
colin719
这个作者很懒,什么都没留下…
展开
-
linux下配置NAT服务
网络地址转换(NAT)是用于将一个地址域(如:专用Intranet)映射到另一个地址域(如:Internet)的标准方法。NAT允许一个机构专用Intranet中的主机透明地连接到公共域中的主机,无需内部主机拥有注册的(以及越来越缺乏的)Internet地址。Internet工程任务组意识到目前地址空间(即所谓的IPv4)即将会耗尽已经有近十年时间了。尽管即将出现的IPv6被视作为原创 2005-08-09 20:08:00 · 14042 阅读 · 0 评论 -
阅读源码时有很多的条件编译语句,看起来不爽,怎么办?
有些C程序,在编写的时候,为了应对多种情况(比如说支持多平台,选择某些特性等) ,就在源码当中使用了很多的宏来控制。当某些宏打开的时候某些代码才生效。如果代码当中,这些宏比较少,那还没什么,但是当代码当中有极多的宏的时候,阅读起来就很头疼了。如果有朋友看过QEMU的源码,会深有同感的。它的源码当中定义了很多的宏,有些函数针对某个平台的代码并不长,但是为了支持多平台,它就要定义不同的宏来控制原创 2006-08-19 01:42:00 · 2548 阅读 · 2 评论 -
C语言单元测试
C语言单元测试 对于敏捷开发来说,单元测试必不可少,对于Java开发来说,JUnit非常好,对于C++开发,也有CPPUnit可供使用,而对于传统的C语言开发,就没有很好的工具可供使用,可以找到的有这么几个工具: CuTest -- CuTest(Cute Test)是一个非常简单的C语言单元测试工具。在使用它的时候,只需要包含两个文件“CuTest.c CuTest.h”,然原创 2006-11-29 18:53:00 · 44285 阅读 · 14 评论 -
c语言函数指针使用注意事项
使用函数指针,可以在C当中实现类似于C++的多态功能,但是如果使用不当会引入难以调试的bug:函数指针类型和函数类型不匹配。在现象上表现如下:一个参数在进入函数之前,其值是正确的,但是进入函数之后,它的值就变化了,而这时候根本没有对它进行任何操作!那么问题只能出现在参数传递上!如果你使用了函数指针来调用某个函数,那么问题极有可能是二者类型不匹配,这里给出一个实例:#include #inclu原创 2006-07-04 22:14:00 · 3259 阅读 · 3 评论 -
使用apache的rewrite功能实现内部重定向
场景:实验室有一台机器(称为nat_server吧)拥有外网地址,在另外一台内部服务器上提供web服务(称之为web_server),我们想让外网的用户能够通过nat_server能够访问web_server。 实现方案 使用iptables的snat,dnat功能 使用ipfilter的map功能 使用原创 2006-06-06 23:37:00 · 5544 阅读 · 0 评论 -
C++开发常用工具“群英会”
C++开发常用工具“群英会”,zt开发环境 ---->Turbo c DOS时代c语言开发的经典工具,目前适合两类人使用:c语言beginner(尤其是学生一族),具有怀旧情节的专业人士:) ---->Visual C++ 6.0/7.0 稳定而强大的IDE开发环境,具有丰富的调试功能,定制宏的功能也是其一大特色。Microsoft的经典之作,功能强大自不必言说。附转载 2006-10-17 13:52:00 · 2067 阅读 · 0 评论 -
使用gprof和oprofile查找性能瓶颈
有些时候,我们特别关注程序的性能,特别是底层软件,比如驱动程序,OS等。为了更好的优化程序性能,我们必须找到性能瓶颈点,“好钢用在刀刃上”才能取得好的效果,否则可能白做工作。为了找到关键路径,我们可以使用profilng技术,在linux平台上,我们可以使用gprof和oprofile工具。 gprof是GNU工具之一,它在编译的时候在每个函数的出入口加入了profiling原创 2006-10-10 17:16:00 · 4320 阅读 · 0 评论 -
Pthread API list
POSIX pthreadsNote: It is assumed that you have a good understanding of the C programming language. If you do not or need to brush up, please review basic C (including pointers and dynamic memory转载 2006-10-08 18:42:00 · 2970 阅读 · 0 评论 -
交叉编译器制作流程
由于项目的需要,我们需要一个能在x86平台上运行,生成mips应用程序的交叉编译器,最近几天一直在搞这个,看了很多的文章也试了不少的方法,最后终于成功了,还不错,有些新的和大家交流一下。 什么是交叉编译器? 为什么叫“交叉编译器”(cross compiler),就是因为它跨平台来编译程序!原创 2006-05-27 23:54:00 · 13403 阅读 · 1 评论 -
定制linux下环境变量
.S0 { font-family: Verdana; color: #808080; background: #FFFFFF; font-size: 10pt;}.S4 { font-weight: bold; color: #00007F; background: #FFFFFF;}.S5 { font-family:原创 2006-09-25 11:03:00 · 1699 阅读 · 0 评论 -
使用分治法解决棋盘覆盖问题
棋盘覆盖问题的解法,使用C语言写成,放在这里是为了以后忘记了可以拿过来看看。/**//* * ============================================================================ * * Filename: chess_board.c * * Description: the solution原创 2006-09-16 23:09:00 · 3622 阅读 · 1 评论 -
计算机科学领域会议排名列表
CiteSeer有完整的国际会议和期刊的综合排名因子。 http://citeseer.ist.psu.edu/impact.html 影响因子前十名中大多数为著名的会议。 多个Internet上著名的会议排名 Ohio state university http://nowlab.cis.ohio-state.edu/NOW/ranking.txt 新加坡国立大学 http://www.ntu.转载 2006-09-12 15:50:00 · 4239 阅读 · 0 评论 -
根据成员变量的地址推算出结构体变量的地址
我们在书写C程序的时候,有时候需要根据结构体成员变量的地址,得到结构体的地址,特别是我们想用C来实现C++的继承特性的时候。我们对问题的分析如下: 输入:一个结构体定义type,这个结构体中某个成员变量的名字member以及它的地址ptr 输出:包含此成员变量的结构体的地址 为了便于分析,我们给出一个实例来说明原创 2006-09-06 13:10:00 · 4658 阅读 · 1 评论 -
c语言中的类型转换
首先引出一个问题,这是我在编写模拟器程序的时候遇到的,我们有如下的类型转换: int16_t v16s; uint16_t v16u; int32_t v32s; uint32_t v32u; v16s = 0xf08b; v16u = (uint16_t)v16s; //请问此时v16s和v16u原创 2006-04-05 00:17:00 · 30995 阅读 · 2 评论 -
如何调试包含共享库代码的程序
相信有不少的同志调试过包含共享库代码的程序,这个时候最为头疼的就是不能进行单步跟踪(当然是在你不知道如何解决的情况下^_^),本文根据一个实例来讲述如何来解决这个问题。首先来看我们的程序,包含两个文件:dyn.c, main.c,其中dyn.c被编译成一个共享库libdyn.so,在链接的时候要用到它。有一点必须声明,就是你的共享库代码必须是带有调试信息的(比如使用 -g选项)。 $cat原创 2006-03-06 15:26:00 · 5092 阅读 · 1 评论 -
位段结构
位段以位为单位定义结构体(或共用体)中成员所占存储空间的长度。 含有位段的结构体类型称为位段结构。位段结构也是一种结构体类型,只不过其中含有以位为单位定义存储长度的整数类型位段成员。采用位段结构既节省存储空间,又可方便操作。位段结构中位段的定义格式为: unsigned :例如:struct bytedata{unsigned a:2; /*位段a,占2位*/ unsi转载 2007-01-13 20:54:00 · 2541 阅读 · 1 评论