
操作系统
HappyTree
计算机软件行业,爱好乒乓球
展开
-
一个统计线程占用CPU时间的类
在windows下编程,为了统计某个算法的执行效率,一般都要统计该算法完成一定操作所需的时间。通常的做法是,在算法执行之初调用GetTickCount()获得当前的时间,然后在算法执行之后再调用一次,两者相减即得到算法的执行时间。但这种做法忽略了一个重要事实,那就是windows事实上是一个多任务系统,算法执行的时间事实上只占用了所得时间的一部分,因此获得的结果是不精确的,因此不能作为严格的原创 2006-12-30 21:38:00 · 3009 阅读 · 0 评论 -
COM是什么?
什么是COM组件 用户需要什么样的软件产品?这是一个多选题,但高效,健壮是肯定会被选种的。作为一名软件开发人员如何做才能满足用户的需要呢?必须要保证升级应用时不破坏与以前版本的向后兼容性。必须做到扩展系统服务时不依赖特定的操作系统。面向对象的程序设计显然是一次革命性的改变。采用面向对象的设计方法我们可以很容易的把要解决的问题事物抽象成各种类,并将内部动作封装隐藏起来,只提供一些接口。但这并没有转载 2007-01-06 08:54:00 · 5465 阅读 · 0 评论 -
堆和栈的区别
堆和栈的区别 一、预备知识程序的内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack) 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据 结构中的栈。 2、堆区(heap) 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据 结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 3、全局区(静态区)(sta转载 2007-01-06 09:00:00 · 964 阅读 · 0 评论 -
线程与进程的区别
简单的说,你每启动一个程序,就启动了一个进程。在Windows 3.x下,进程是最小运行单位。在Windows 95/NT下,每个进程还可以启动几个线程,比如每下载一个文件可以单独开一个线程。在Windows 95/NT下,线程是最小单位。WINDOWS的多任务特性使得线程之间独立运行,但是它们彼此共享虚拟空间,也就是共用变量,线程有可能会同时操作一片内存。 线程与进程的区别多线程共存于应用程序转载 2007-01-06 09:19:00 · 1370 阅读 · 0 评论 -
一个后台运行程序的简单设计
很多时候,我们都会遇到编写后台运行程序的问题。编写后台运行程序的主要工作并不在接口上,而是在其作为服务器程序所完成的实际工作上。由于编写过不少后台工作程序,最初总是为程序的后台工作接口而苦恼不已。在这里,我贴出相关的代码,相信根据此设计,读者可以轻易地把它应用到自己的后台程序中去。假设程序名称为startup,那么程序启动的接口为:Startup: 启动该程序 Startup -v原创 2007-01-02 09:06:00 · 1664 阅读 · 0 评论 -
PE文件格式
【翻译】“PE文件格式”1.9版 完整译文(附注释)=========================================================原著:Bernd. Luevelsmeyer 翻译:ah007[注意:本译文的所有大小标题序号都是译者添加,以方便大家阅读。圆圈内的数字是注释的编号,其中注释②译自微软的转载 2007-01-06 08:07:00 · 1515 阅读 · 0 评论 -
HP-UX11.23上的一个BUG
最近发现HP-UX11.23上的一个BUG,是关于finite(x)宏的。在HP-UX11.23的命令手册中, 相对应的宏是isfinite(x),但调用后编译器提示根本没有这个宏。后来发现,原来需要使用_Isfinite(x)这个更不标准的宏。原创 2007-05-03 07:44:00 · 1098 阅读 · 0 评论 -
CoLinux,不错
很早就听同事说过,有一种方法运行Linux很好:把Linux作为Windows的一个服务来运行,很方便,占用的资源也不多。我当时使用的是VMWare,觉得也不错,因此没有深究。直到今年1月份,参加公司的Unix Shell培训,发现UWin不太好用,VMWare太占资源,于是决定查查同事早已介绍过的那种方法。在网络上查了一下,原来是CoLinux,而且在好几年前就有人使用了。看来不错,赶紧原创 2008-02-15 09:55:00 · 1743 阅读 · 0 评论 -
LFS在coLinux上成功运行
经过一段时间的忙碌,终于完成了LFS。由于有详尽的资料,因此没有什么可说的,倒是涉及到如何在coLinux上运行LFS,碰到了一些困难,因此在这里说上几句。首先,需要在/lib/udev/devices/上创建cobd,如下:for i in 0 1 2 3 4 5 6; do mknod /lib/udev/devices/cobd$i b 117 $i; done然后,需要在/li原创 2008-03-18 21:19:00 · 1197 阅读 · 0 评论