- 博客(120)
- 资源 (17)
- 收藏
- 关注
原创 我看UNIX与Windows的本质区别
文化,我首先想到的是文化。Unix和Windows从诞生之初的文化差异本质上划分了两者的界限。直观看来,一个装逼文化,一个傻逼文化。
2010-10-13 22:38:00 40117 165
翻译 多重继承和虚继承的内存布局
多重继承和虚继承的内存布局刺猬@http://blog.csdn.net/littlehedgehog 这篇文章主要讲解虚继承的C++对象内存分布问题,从中也引出了dynamic_cast和static_cast本质区别、虚函数表的格式等一些大部分C++程序员都似是而非的概念。原文见这里(By Edsko de Vries, January 2006)
2010-04-01 17:55:00 27717 10
原创 孤儿进程组
为什么有"孤儿进程组"刺猬@http://blog.csdn.net/littlehedgehog 学习最忌讳的是等把所有内容都自以为学到手后,才突然慌神地反问自己“学这个是干什么的?”“这个究竟有什么用”。如果学一门学问到最后都不知道有什么用那最好别忙学,先看看它究竟在实际中运用到那些地方。中国教育大部分时间都是在教学生如何解题,所以当高数学了一学年最后吭哧吭哧考了个优后,竟然
2009-04-23 20:55:00 8148
原创 异步信号安全和线程安全
异步信号安全和线程安全 刺猬@http://blog.csdn.net/littlehedgehog 问题源自于apue中stevens老先生有关线程安全函数的介绍,stevens有曰:如果一个函数对于多线程来说是重入的,则说这个函数是线程安全的,但这并不能说明对信号处理程序来说也是重入的。也就是说信号安全重入函数要求要比线程安全更加严格。但是,我想知道为什么,为什么线
2009-04-23 18:40:00 10793 4
原创 拥塞控制策略
拥塞控制策略 刺猬@http://blog.csdn.net/littlehedgehog 《TCP/IP v1》中TCP的超时和重传这章讲得实在凌乱无比,再加之我们亲爱的译者同志翻译的时候也按部就班地不幸地凑齐了字数,里面很多概念看起来特别的晦涩难懂。这里我参考了《TCP/IP簇》关于TCP的相关章节,稍稍总结了下,方便我后面回头看了。 讲拥塞控制前,我们起码
2009-04-02 11:28:00 7806 2
原创 给UDP增加可靠性
给UDP增加可靠性刺猬@http://blog.csdn.net/littlehedgehog UNP里面的例子程序,把计算rtt的算法改了下,参考的TCP/IP详解里面介绍的一个稍微简单的算法,另外,不喜欢setjmp这种编程模式,感觉程序代码可读性较差,最后还是改成使用pselect+signal,这样代码会清晰些。 下面是主函数 #in
2009-02-17 10:58:00 9474
原创 IP_RECVDSTADDR undefined
IP_RECVDSTADDR undefined刺猬@http://blog.csdn.net/littlehedgehog今天写一个unp上面的例子程序,被IP_RECVDSTADDR undefined难倒了,gcc老是报错说该宏未定义,最后还是在老外的一个“开源苹果”网站查到原来linux修改了相关的函数定义,包括cmsghdr及setsockopt都采用了lin
2009-02-15 19:06:00 10612 1
原创 Linux 网卡设备驱动
Linux 网卡驱动刺猬@http://blog.csdn.net/littlehedgehog网上一位前辈写的,时至今日,代码很多编译通不过(主要是Linux 内核变化实在太快),我把代码移植到我的ubuntu 8.10下测试成功,里面也加上了我的注解。不过还有不少东西没有搞懂,手头上也没有相关的硬件资料,就一份Realtek 的datasheet。 TNND,后面要备考备荒,手头的事情只能
2008-12-24 21:45:00 10203
原创 Linux 文件隐藏 V0.2
Linux 看Adult Video 必备工具 V0.2刺猬@http://blog.csdn.net/littlehedgehog这么快推出升级版,并不是上个版本bug太多,主要是上次拦截sys_call 实在太过于原始了,这次下放到了VFS层,隐蔽性肯定更强了。源码下载地址 http://download.csdn.net/source/849855[新版本主要修改了拦截函数,采用了VFS
2008-12-07 22:07:00 5563 1
原创 FileSystem 操作系统课程设计
FileSystem 刺猬@http://blog.csdn.net/littlehedgehog本来不应该发布出来,发布出来害人啊。这个文件系统还是当初大二写HDU kernel时候遗留下来的,这次改了改,作为一个课程设计交了。注: 程序只能在linux环境下编译,要当作业交的哥们自己改下,哈哈,逼着大家去读代码下载地址:http://littlehedgehog.download.cs
2008-12-01 11:21:00 6122
转载 我对读计算机软件专业硕士的几点看法
我对读计算机软件专业硕士的几点看法特此声明: 此文系转载, 下面有些评论的朋友实在高看我了,抱歉就我自己的理解,谈谈我对读研和软件学院的看法,不妥之处一笑了之即可。 如果你有实际开发工作经验,感觉自己的水平和实力进入了一个高原期,迫切需要从理论上提高,那么计算机学院是唯一选择。因为计算机学院才能让你在理论上更上一层楼。软件学院从教学计划上就没有把你往这方面带。当然能不能更上一层楼最终还是
2008-10-24 18:06:00 10961 13
原创 Clamav杀毒软件源码分析笔记[十]
Clamav杀毒软件源码分析笔记[十]刺猬@http://blog.csdn.net/littlehedgehog[客户端处理]服务端已经把主要的工作都已经处理的差不多了,剩下来也就是服务端等待客户端提出请求,然后根据客户端的请求做相应的工作. 所以客户端所做的事情就只是提交数据,然后坐享其成.服务端是在垂帘听政呢,还是做幕后英雄?话不多说了,下面进入正题.客户端(clamdscan)的主函数
2008-10-13 21:13:00 8461 1
原创 Clamav杀毒软件源码分析笔记[九]
Clamav杀毒软件源码分析笔记[九]刺猬@http://blog.csdn.net/littlehedgehog[数据流病毒扫描]数据流病毒扫描,听上去貌似很牛逼的称呼,其实就是一个传送数据流,接收数据流,扫描病毒而已. 貌似扫描病毒代码亦是很牛逼的代码,其实也不然,不过调用扫描病毒的引擎API函数尔. 调API调久了,自然想去看看这个API究竟怎么回事,于是乎就去看kernel代码了,想刚
2008-10-08 20:02:00 9598
原创 Clamav杀毒软件源码分析笔记[八]
Clamav杀毒软件源码分析笔记[八]刺猬@http://blog.csdn.net/littlehedgehog[command]上回说到主循环(accept_th),这是一个死循环,因为我们Clamd在没有什么特殊的情况下是一直阻塞地苦苦等待在等待有客户端发出请求,然后安排好线程派发(dispatch)工作,接着我们的注意力便专注于线程的运作,这里的command是我们的重点研究对象.说来
2008-10-08 18:57:00 9585
原创 Clamav杀毒软件源码分析笔记[七]
Clamav杀毒软件源码分析笔记[七]刺猬@http://blog.csdn.net/littlehedgehog[accept循环处理]上次本来可以在文章五把Clamd的主要函数说完的,不过线程未了,火候未到. 这次火候到了,Clamd的尽头也就走到底了. if ((thr_pool=thrmgr_new(max_threads, idletimeout, scanner_threa
2008-10-07 22:16:00 8895
原创 Clamav杀毒软件源码分析笔记[六]
Clamav杀毒软件源码分析笔记[六]刺猬@http://blog.csdn.net/littlehedgehog[线程处理]我曾经说过Clamd强大的动力并不是来自于某些催情药的功用,而是内部提供的线程池功能功不可没.所谓线程池,我理解是暂时收容工作完成的线程,派发工作给无所事事的线程,这样可以让线程有暂时的不死之身,一直存在于内存之中.这样避免了频繁地创建线程,销毁线程.先来看看所谓线
2008-10-07 20:56:00 10004 1
原创 Clamav杀毒软件源码分析笔记[五]
Clamav杀毒软件源码分析笔记[五]刺猬@http://blog.csdn.net/littlehedgehog[Socket通信]套间字socket常用于服务/客户模型的应用程序之间的通信和数据连接,需要重点关注的是这个所谓的服务端/客户端完全可以是一台计算机的两个应用程序。前面我们已经提到了,Clamd就是这个服务端,也就是说它是整个程序的顶梁柱,所有的关键逻辑处理都是它一人为之,不
2008-10-07 20:27:00 10202
原创 Clamav杀毒软件源码分析笔记[四]
Clamav杀毒软件源码分析笔记[四]刺猬@http://blog.csdn.net/littlehedgehog[进程后台化]话说Clamd前期准备工作安排好以后,遂转入幕后运作,争取垂帘听政. 关于进程的后台化,《linux安全体系分析与编程》貌似说的条条是理,不过我这里还得重复一遍,当年辛辛苦苦找的资料可不能浪费了。 /* fork into background 如果配置文件中
2008-10-07 20:11:00 9247
原创 Clamav杀毒软件源码分析笔记[三]
Clamav杀毒软件源码分析笔记[三]刺猬@http://blog.csdn.net/littlehedgehog[获取配置文件信息]说来比较打击积极性的是我们还得做一番比较麻烦的但是却又没多少挑战性的事业,因为如果clamd这个服务端全部都用命令行来指定信息的话,Clamav估计会没有市场,因为打字就会累死管理员。我们要设置比如像多久升级一次啊,升级服务器在哪里下载这些东西这些乱七八糟的
2008-10-07 19:28:00 8585
原创 Clamav杀毒软件源码分析笔记[二]
Clamav杀毒软件源码分析笔记[二]刺猬@http://blog.csdn.net/littlehedgehog[读取命令行参数]开始正儿八经地分析源码了. 从哪里入手呢,当然还是按照书上的来,我们先来看看Clamd的程序如何从生到死,Clamd是杀毒软件的服务端,我们在客户端提交要查杀的信息,然后Clamd服务端进行按照我们指令办事,然后把结果返回给我们。这个貌似是unix程序的一个经
2008-10-07 18:38:00 5612
原创 clamav杀毒软件源码分析笔记[一]
clamav杀毒软件源码分析笔记[一]刺猬@http://blog.csdn.net/littlehedgehog注: 《clamav杀毒软件源码分析笔记》只是我在阅读《linux安全体系分析与编程》中“clamav杀毒应用程序”有关章节的读书笔记而已。还望各位看官高抬贵手,不要当做学习资料来作为入门读物,这就贻笑大方了, Clamav我是选用的0.85版. 另外,限于我不是从事专门研究杀毒
2008-10-07 18:12:00 8584 2
原创 linux多线程扫描器
linux多线程扫描器刺猬@http://blog.csdn.net/littlehedgehog那个深入浅出驱动程序系列文章后面作者似乎有些心不在焉,文章草草了事,还是自己来看看相关的书吧。再来说说这个scanner,速度还是过得去的,在我测试的环境中,跟nmap速度不相上下,不过郁闷的是扫描主机比较慢。说来其实没多大实用价值,仅供学习参观之用。代码就在下面,有兴趣自己可以改改用。#incl
2008-09-27 15:01:00 1513
原创 深入浅出Linux设备驱动之阻塞与非阻塞
深入浅出Linux设备驱动之阻塞与非阻塞刺猬@http://blog.csdn.net/littlehedgehog注:该系列文章转载自arm+linuxchinaunix博客圈圈主之博客——http://blog.chinaunix.net/u/22630/article_54997.html 为了适合我的编译环境,源代码有改动,但是相信我更改后的代码更加适合现在大多数读者的p
2008-09-20 21:25:00 1381
原创 深入浅出Linux设备驱动之并发控制
深入浅出Linux设备驱动之并发控制刺猬@http://blog.csdn.net/littlehedgehog注:该系列文章转载自arm+linuxchinaunix博客圈圈主之博客——http://blog.chinaunix.net/u/22630/article_54997.html 为了适合我的编译环境,源代码有改动,但是相信我更改后的代码更加适合现在大多数读者的pc环境
2008-09-20 20:43:00 1274
原创 深入浅出Linux设备驱动之字符设备驱动程序
深入浅出Linux设备驱动之字符设备驱动程序刺猬@http://blog.csdn.net/littlehedgehog注: 该系列文章转载自arm+linux chinaunix博客圈圈主之博客——http://blog.chinaunix.net/u/22630/article_54997.html 为了适合我的编译环境,源代码有改动,但是相信更加适合现在大多数读者的环境。Linux下
2008-09-20 19:15:00 1195
原创 深入浅出Linux设备驱动编程之内核模块
深入浅出Linux设备驱动编程之内核模块刺猬@http://blog.csdn.net/littlehedgehog 注: 该系列文章转载自arm+linux chinaunix博客圈圈主之博客——http://blog.chinaunix.net/u/22630/article_54997.htmlLinux设备驱动属于内核的一部分,Linux内核的一个模块可以以两种方式被编译和加载:(1)
2008-09-19 21:37:00 1914
原创 自己动手写basic解释器(七)
自己动手写basic解释器刺猬@http://blog.csdn.net/littlehedgehog 注: 文章basic解释源码摘自梁肇新先生的《编程高手箴言》(据他所说这个代码也是网上摘录的),源码解读参考《java编程艺术》。《java编程艺术》里面自然是java版了(可能旭哥更加适合点儿),我这里还是解读的C版basic解释器代码。终于把这个basic解释器主干源码解述完了。其实说
2008-09-15 13:16:00 7469 6
原创 自己动手写basic解释器(六)
自己动手写basic解释器刺猬@http://blog.csdn.net/littlehedgehog 注: 文章basic解释源码摘自梁肇新先生的《编程高手箴言》(据他所说这个代码也是网上摘录的),源码解读参考《java编程艺术》。《java编程艺术》里面自然是java版了(可能旭哥更加适合点儿),我这里还是解读的C版basic解释器代码。4、for接着看for,for循环这里借助了栈来实
2008-09-14 22:25:00 3211
原创 自己动手写basic解释器(五)
自己动手写basic解释器刺猬@http://blog.csdn.net/littlehedgehog 注: 文章basic解释源码摘自梁肇新先生的《编程高手箴言》(据他所说这个代码也是网上摘录的),源码解读参考《java编程艺术》。《java编程艺术》里面自然是java版了(可能旭哥更加适合点儿),我这里还是解读的C版basic解释器代码。是所谓先来后到,我们还是按照主函数出现的顺序
2008-09-14 21:58:00 3393 2
原创 自己动手写basic解释器(四)
自己动手写basic解释器刺猬@http://blog.csdn.net/littlehedgehog 注: 文章basic解释源码摘自梁肇新先生的《编程高手箴言》(据他所说这个代码也是网上摘录的),源码解读参考《java编程艺术》。《java编程艺术》里面自然是java版了(可能旭哥更加适合点儿),我这里还是解读的C版basic解释器代码。表达式已求,下面可以进入程序逻辑处理了,这里的代码量
2008-09-14 20:38:00 3521
原创 自己动手写basic解释器(三)
自己动手写basic解释器刺猬@http://blog.csdn.net/littlehedgehog 注: 文章basic解释源码摘自梁肇新先生的《编程高手箴言》(据他所说这个代码也是网上摘录的),源码解读参考《java编程艺术》。《java编程艺术》里面自然是java版了(可能旭哥更加适合点儿),我这里还是解读的C版basic解释器代码。经过get_token,我们可以获取一个标识符,按理
2008-09-14 19:44:00 3888
原创 自己动手写basic解释器(二)
自己动手写basic解释器刺猬@http://blog.csdn.net/littlehedgehog 注: 文章basic解释源码摘自梁肇新先生的《编程高手箴言》(据他所说这个代码也是网上摘录的),源码解读参考《java编程艺术》。《java编程艺术》里面自然是java版了(可能旭哥更加适合点儿),我这里还是解读的C版basic解释器代码。上次我们把程序装载入内存,这里我们开始做词法分析了。
2008-09-14 17:12:00 5613 4
原创 自己动手写basic解释器(一)
自己动手写basic解释器刺猬@http://blog.csdn.net/littlehedgehog注: 文章basic解释源码摘自梁肇新先生的《编程高手箴言》(据他所说这个代码也是网上摘录的),源码解读参考《java编程艺术》。《java编程艺术》里面自然是java版了(可能旭哥更加适合点儿),我这里还是解读的C版basic解释器代码。那些客套话咱就不扯
2008-09-14 16:14:00 15274 1
原创 编写shell(二)
编写shell刺猬@http://blog.csdn.net/littlehedgehog接着来写shell,今天来加上我们的条件判断语句if。为了处理if的逻辑判断,我们这里把代码区域做个划分。如下举例所示:who ls -al if diff file1 file2 ---------------以上是中立区 netralthen ---------------want_the
2008-09-13 19:16:00 1740
原创 编写简单多线程web服务器
编写简单多线程web服务器 刺猬@http://blog.csdn.net/littlehedgehog下面的原理解释参照《一个多线程web服务器实例(C,Linux,详细的web服务器原理)》 一文:原理:在浏览器中输入一个网址,回车之后,浏览器会向相应主机的相应端口发送一段报文,如果是http协议的(如平常看到的网页的传输协议),就会发送HTTP请求报文。下面是一个报文的例子:GET /i
2008-09-12 15:05:00 2816
原创 hdu 内核0.01版
hdu kernel 0.01 version 刺猬@http://blog.csdn.net/littlehedgehog这个内核就当是我读完了linux0.11版的一个小作业吧,不过这个小作业也让我够忙活的了... 下面直接从学校论坛上粘贴过来的:我先介绍下我的想法:当初在研读Linux0.11版内核时,我就有了打算自己动手实现操作系统的想法,人家Linus大二一个学生就能写出一个基本的操
2008-09-11 14:57:00 1444
原创 sscanf 用法示例
sscanf刺猬@http://blog.csdn.net/littlehedgehog开始一直不理解sscanf的用法,在教室里看书,没有网可上,就一直来猜这个函数作用,不过也猜得八九不离十了。回头来网上看看,没想到sscanf的作用这么强大。而且它的兄弟sprintf 我一直在用,呵呵,咋就没想到他还有个弟弟呢?sscanf与scanf类似,都是用于输入的,只是后者以屏幕(stdin)为输
2008-09-09 19:04:00 1093
原创 编写shell (一)
编写shell刺猬@http://blog.csdn.net/littlehedgehog 编写shell的第一步: 让shell可以执行程序 只有两个要点需要注意,第一,unix/linux提供相应的执行函数exec,我们只需要将我们输入的命令行分解成字符串数组即可。比如: ls -al 那么我们只需要将这个字符串拆成argv[0]="ls",arg
2008-09-07 20:49:00 1768
原创 编写 find
编写find刺猬@http://blog.csdn.net/littlehedgehog去年做的一个小搜索是win32的,这次回头看看windows SDK的代码,不得不承认windows 在API的设计上封装的很复杂,unix上逻辑上很清晰的代码在windows上看得有些让人摸不着头脑。#include #include #include #include #include int chec
2008-09-06 17:38:00 908
linux 文件隐藏
2008-12-08
linux h-tool
2008-11-29
struts 入门
2007-11-05
More Effective C++(中文)
2007-08-25
ASP.NET应用教程
2007-07-20
编程高手箴言
2007-06-10
windows program
2007-06-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人