- 博客(51)
- 资源 (50)
- 收藏
- 关注
转载 分析虚函数
其实虚函数在编译器中的实现是非常简单的,直接翻vc2005编译出来的汇编便可以知道。 比如下个程序: C/C++ code <!--Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->#include iostream
2008-07-31 09:48:00 648
转载 Linux程式设计入门 - fork, pthread, and signals
在UNIX程式设计中,学会fork及signal的运用,算是相当基本的功夫。 fork()及signal经常运用在daemon守护神这一类常驻程式,另外像 a4c.tty/yact/chdrv这些中文终端机程式也有用到,一般如 Mozilla/Apache/Squid等大程式几乎都一定会用到。 虽然在UNIX下的程式写作,对thread的功能需求并非很大,但thread在现代的 作业系统中,几乎
2008-07-30 16:47:00 655
转载 如何在Linux中添加新的系统调用
系统调用是应用程序和操作系统内核之间的功能接口。其主要目的是使得用户可以使用操作系统提供的有关设备管理、输入/输入系统、文件系统和进程控制、通信以及存储管理等方面的功能,而不必了解系统程序的内部结构和有关硬件细节,从而起到减轻用户负担和保护系统以及提高资源利用率的作用。 Linux操作系统作为自由软件的代表,它优良的性能使得它的应用日益广泛,不仅得到专业人士的肯定,而且商业化的应用也是如火如荼。
2008-07-30 16:46:00 986
转载 Linux下的时间概念
这一章我们学习Linux的时间表示和计算函数 时间的表示 时间的测量 计时器的使用 1.时间表示 在程序当中,我们经常要输出系统当前的时间,比如我们使用date命令的输出结果。这个时候我们可以使用下面两个函数 #include time_t time(time_t *tloc); char *ctime(const time_t *clock); time函数返回从1970年1月1日0点以来的秒
2008-07-30 16:13:00 546 1
转载 Linux程式设计入门 - crypt
crypt是个密码加密函数,它是基於Data Encryption Standard(DES)演算法。 crypt基本上是One way encryption,因此它只适用於密码的使用,不适合於资料加密。 char *crypt(const char *key, const char *salt); key是使用者的密码。salt是两个字,每个字可从[a-zA-Z0-9./]中选出来,因 此同一
2008-07-30 16:05:00 608
转载 Linux环境下的Socket编程
什么是Socket Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。要学Internet上的TCP/IP网络编程,必须理解Socket接口。 Socket接口设计者最先是将接口放在Unix操作系统里面的。如果了解Unix系统的输入和输出的话,就很容易了解Socket了。网络的Socket数据传输是一种特
2008-07-30 15:51:00 679
原创 完成端口使用总结
前言 本文不是全面介绍完成端口的,只是简单介绍了一下完成端口和几个常用概念。本文主要关注完成端口关闭时资源释放问题。基础介绍 完成端口——可能是Win32下最复杂的一种I/O模型,Win32下最复杂的内核对象。它通过指定数量的线程对重叠I/O请求进行管理,以便为已经完成的I/O请求提供服务,相对其它I/O模型,它管理任意数目I/O套接字。假若一个应用程序同时需要管理为数众
2008-07-30 13:39:00 900
原创 #pragma comment(lib,"ws2_32.lib")来告诉编译器在链接时要搜索的库文件
#pragma comment(lib,"ws2_32.lib")#pragma comment(lib,"Ws2_32.lib")表示链接Ws2_32.lib这个库。 和在工程设置里写上链入Ws2_32.lib的效果一样,不过这种方法写的 程序别人在使用你的代码的时候就不用再设置工程settings了。 告诉连接器连接的时候要找ws2_32.lib,这样你就不用
2008-07-30 11:57:00 3581
转载 网络字节序和主机字节顺
NBO与HBO 网络字节顺序NBO(Network Byte Order):按从高到低的顺序存储,在网络上使用统一的网络字节顺序,可以避免兼容性问题。主机字节顺序(HBO,Host Byte Order):不同的机器HBO不相同,与CPU设计有关计算机数据存储有两种字节优先顺序:高位字节优先和低位字节优先。Internet上数据以高位字节优先顺序在网络上传输,所以对于在内部是以低位字节优先方
2008-07-30 11:51:00 1193
转载 得到进程和对应的端口
这是两个未公开的API:最简单的枚举当前所开放的端口信息是调用iphlpapi.dll中的AllocateAndGetTcpTableFromStack和AllocateAndGetUdpTableFromStack函数,或者AllocateAndGetTcpExTableFromStack和AllocateAndGetUdpExTableFromStack函数。用AllocateA
2008-07-30 11:48:00 869
转载 _stdcall _cdecl _fastcall 详细说明
(1) _stdcall调用 _stdcall是Pascal程序的缺省调用方式,参数采用从右到左的压栈方式,被调函数自身在返回前清空堆栈。 WIN32 Api都采用_stdcall调用方式,这样的宏定义说明了问题: #define WINAPI _stdcall 按C编译方式,_stdcall调用约定在输出函数名前面加下划线,后面加“@”符号和参数的字节数,形如_function
2008-07-30 11:32:00 653
转载 setsockopt 设置socket
1.closesocket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket:BOOL bReuseaddr=TRUE;setsockopt(s,SOL_SOCKET ,SO_REUSEADDR,(const char*)&bReuseaddr,sizeof(BOOL));2. 如果要已经处于连接状态的soket在调用closesocket后强制关闭,不经历TI
2008-07-30 11:17:00 724
转载 volatile--编写多线程程序的好帮手
并不是我故意想弄糟你的心情,但是在这期专栏里,我们将讨论多线程编程这一话题。正如上一期Generic里所说的,编写异常安全(exception-safe)的程序是非常困难的,但是和编写多线程程序比起来,那简直就是儿戏。多线程的程序是出了名的难编写、难验证、难调试、难维护,这通常是件苦差事。不正确的多线程程序可能可以运行很多年也不出一点错,直到满足某些临界的条件时,才出现意想不到的奇怪错误。不
2008-07-30 10:13:00 741
转载 volatile的作用
volatile的作用一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子: 1). 并行设备的硬件寄存器(如:状态寄存器) 2). 一个中断服务子程序中会访问到的非自动变量(Non-a
2008-07-30 09:58:00 661
原创 最大公约数,最小公倍数(C语言实现)
/* 程序:求最大公约数,和最小公倍数 时间:2007年10月8日 名称:maxandmin.c 方法: 1.先求出最大公约数,用辗转相除法 2.再通过最大公约数来求最小公倍数 3.min = (m/max)*(n/max)*max=(m*n)/max (说明:max为所求得的最大公约数,min为所求得的最小公倍数*/#include stdio.h>int main(vo
2008-07-29 23:25:00 2343 2
原创 UNION结构的一些看法
#include "stdio.h" typedef union { char a[2]; int i; }abc; void main() { abc in; int x1,x2; char alx,ahx;/*alx是al寄存器的值,ahx是ah寄存器的值*/ in.i=0x128;
2008-07-29 19:48:00 1157
原创 C++箴言:理解new-handler的行为
当 operator new 不能满足一个内存分配请求时,它抛出一个 exception(异常)。很久以前,他返回一个 null pointer(空指针),而一些比较老的编译器还在这样做。你依然能达到以前的目的(在一定程度上),但是我要到本文的最后再讨论它。 在 operator new 因回应一个无法满足的内存请求而抛出一个 exception 之前,它先调用一个可以由客户指定的被称为 ne
2008-07-27 22:45:00 669
转载 如何重写 operator new
满足规则:1、处理 0 大小的内存分配请求2、具有一个无穷循环,用 while(true)3、正确申请到内存,返回void*指针4、不能申请到内存,调用 new_handler 处理,使用new_handler set_new_handler(void (*)())可以改变5、如果new_handler==NULL,throw std::bad_alloc全局的operator new vo
2008-07-27 22:44:00 1475
转载 硬盘基础知识
一、硬盘基础知识 先讲讲硬盘的几个参数。 1、磁头数(Heads),就是硬盘总共有几个磁头咯,也就是有几面盘片*2,最大值为 256。 2、柱面数(Cylinders),硬盘每一面盘片上有几条磁道(同心圆)呀, 由于以前硬盘大多数是多个盘片的层叠在 一起的,(我拆的这个是单片装的呢)多个盘片的同一个磁道就形成了一个圆柱了,因此称为柱面。最值大为 102
2008-07-27 22:20:00 810
转载 一篇对硬盘讲解很透彻的文章
硬盘是现在计算机上最常用的存储器。我们都知道,计算机之所以神奇,是因为它具有高速分析处理数据的能力。而这些数据都被以文件的形式存储在硬盘里。不过,计算机可不像人那么聪明。在读取相应的文件时,你必须要给出它相应的规则。这就是分区概念的形成。 分区从实质上说就是对硬盘的一种格式化。当我们创建分区时,就已经设置好了硬盘的各项物理参数,指定了硬盘主引导记录(即MasterBootRecord
2008-07-27 22:12:00 827
转载 谈winhex使用
数据恢复分类:硬恢复和软恢复。所谓硬恢复就是硬盘出现物理性损伤,比如有盘体坏道、电路板芯片烧毁、盘体异响,等故障,由此所导致的普通用户不容易取出里面数据,那么我们将它修好,同时又保留里面的数据或后来恢复里面的数据,这些都叫数据恢复,只不过这些故障有容易的和困难的之分;所谓软恢复,就是硬盘本身没有物理损伤,而是由于人为或者病毒破坏所造成的数据丢失(比如误格式化,误分区),那么这样的数据恢复就叫软恢
2008-07-27 22:10:00 1551
原创 了解硬盘分区
了解硬盘分区 你新买来的硬盘是不能直接使用的,必须对它进行分区并进行格式化的才能储存数据。 硬盘分区是操作系统安装过程中经常谈到的话题。对于一些简单的应用,硬盘分区并不成为一种障碍,但对于一些复杂的应用,就不能不深入理解硬盘分区机制的某些细节。 硬盘的崩溃经常会遇见,特别是病毒肆虐的时代,关于引导分区的恢复与备份的技巧,你一定要掌握。 在使用电脑时,你往往会使用几个操
2008-07-27 22:00:00 658
原创 判断一个变量是无符号的还是有符号
首先将0赋给要判断的变量(a)然后判断 变量(a)是否小于变量(a)-1,如果条件为真,则变量(a)为无符号数,否则变量(a)为有符号数。代码: unsigned int a = 0; if(a printf("/nunsiged"); }else{ printf("/nsigned"); }分析:如果变量(a)为无符号数,小于号左边为无符号数,右边为-
2008-07-27 18:51:00 899
转载 什么是SDK
SDK是 Software Development Kit 的缩写,即“软件开发工具包”。 SDK是一个覆盖面相当广泛的名词,可以这么说:辅助开发某一类软件的相关文档、范例和工具的集合都可以叫做“SDK”。具体到Windows程序开发,我们下面只讨论广义 SDK 的一个子集——即开发Windows 平台下的应用程序所使用的SDK。 为了解释什么是 SDK 我们不得不引
2008-07-27 18:48:00 929
转载 strcpy实现
题目: 已知strcpy函数的原型是: char * strcpy(char * strDest,const char * strSrc); 1.不调用库函数,实现strcpy函数。 2.解释为什么要返回char *。 解说: 1.strcpy的实现代码 char * strcpy(char * s
2008-07-27 18:44:00 739 1
原创 gdb参数详解
名称 gdb - GNU 调试器提要 gdb [-help] [-nx] [-q] [-batch] [-cd=dir] [-f] [-b bps] [-tty=dev] [-s symfile] [-e prog] [-se prog] [-c core] [-x cmds] [-d dir] [prog[
2008-07-27 18:38:00 844
转载 重载new 和 delete
一、重载规则I.可以重载的操作符+- */ %^& |~ !=>*=/= %=^=&=|=>>>===!=>= ||++-- ->*,->[]() operator new operator new[]operator delete operator delete []II.不能重载的操作符:: . .* ?:sizeof typeid new deletestatic_ca
2008-07-27 18:27:00 1556 1
转载 解读NTFS 一
NTFS是一个比FAT复杂的多的文件系统,我们一起努力来把它完整的解读出来 NTFS的引导扇区也是完成引导和定义分区参数,和FAT分区不同,FAT分区的BOOT记录正常,就显示分区没有错误,即使文件不正确,而NTFS分区的BOOT不是分区的充分条件,它要求必须MFT中的系统记录如$MFT等正常该分区才能正常访问。其BPB参数如下表所示。字节偏移 长度 常用值 意义0x0B 字 0x0
2008-07-24 17:09:00 893
转载 解读NTFS 三
MFT文件记录结构分析 主文件表MFT的文件记录由记录头和属性列表组成,由“FF FF FF FF”结束,一般大小为1K,或一个簇大小(这样一般就更大),记录头包括以下一些域:偏移 长度(字节) 属性0X00 4 标志,一定是“FILE”0X04 2 更新序列US的偏移0X06 2 更新序列号USN的大小与数组,包括第一个字节0X08 8 日志文件序列号LSN0X10 2 序列号(S
2008-07-24 17:09:00 940
转载 解读NTFS 二
NTFS文件系统结构分析在NTFS文件系统中,文件存取是按簇进行分配,一个簇必需是物理扇区的整数倍,而且总是2的整数次方。NTFS文件系统并不去关心什么是扇区,也不会去关心扇区到底有多大(如是不是512字节),而簇大小在使用格式化程序时则会由格式化程序根据卷大小自动的进行分配。文件通过主文件表(MFT)来确定其在磁盘上的存储位置。主文件表是一个对应的数据库,由一系列的文件记录组成--
2008-07-24 17:05:00 1260
原创 宽带开机自动拨号一法
1,新建一个宽带拨号连接,假设命名为ADSL。2,设置刻连接的属性,选项中去掉“提示名称、密码、证书等”前的勾选。勾上断线重拨。3,也是最重要一步。在注册表的HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Run中增加一个字符串值,值名任取,值内容为c:/windows/system32/rasphone.exe -
2008-07-24 17:03:00 653
转载 捕捉到socket相关函数的错误
如果想捕捉到socket相关函数的错误,可以用下面的语句:fprintf(stderr,"Sendmsg failed. errno : %s/n",strerror(errno)); 错误信息就会显示出来了。
2008-07-23 11:31:00 809
转载 socketpair的使用
socketpair函数概要如下:#include #include int socketpair(int domain, int type, int protocol, int sv[2]);sys/types.h文件需要用来定义一些C宏常量。sys/socket.h文件必须包含进来定义socketpair函数原型。socketpair函数需要四个参数。他们是:套接口的域套接口类型使用的协议指
2008-07-23 10:57:00 1776
转载 SERV-U:FTP鲜为人知的技巧
SERV-U:FTP鲜为人知的技巧 现在很多的朋友都用SERV-U做个人FTP的服务器,有关如何使用SERV-U架设服务器的文章很多了,这儿我就不多说了。不过大家不知道注意到了没有,当你登陆很多FTP的时候,会显示一些欢迎信息,比如说显示你的IP,告诉你目前有多少人在使用FTP,带宽是多少等等。。。看起来就比较的专业样子。其实你自己也是可以做的,SERV-U这个软件本身就有这个功能。下
2008-07-20 21:52:00 858
转载 如何理解c和c ++的复杂类型声明
曾经碰到过让你迷惑不解、类似于int * (* (*fp1) (int) ) [10];这样的变量声明吗?本文将由易到难,一步一步教会你如何理解这种复杂的C/C++声明。 我们将从每天都能碰到的较简单的声明入手,然后逐步加入const修饰符和typedef,还有函数指针,最后介绍一个能够让你准确地理解任何C/C++声明的“右左法则”。 需要强调一下的是,复杂的C/C++声明并不是好的编程风格
2008-07-17 23:02:00 528
原创 GCC参数详解
GCC参数详解 [版本] -0.13 [声明] 这篇文档是我的关于gcc参数的笔记,我很怀念dos年代我用小本子,纪录所有的dos 命令的参数.哈哈,下面的东西可能也不是很全面,我参考了很多的书,和gcc的帮助. 不全的原因是,有可能我还没有看到这个参数,另一种原因是,我可能还不会用它 不过,我会慢慢的补齐的.哈哈 如果你要转在本文章请保留我的email(pianopan@bee
2008-07-17 22:41:00 536
转载 gcc and g++ 编译器和gdb调试器
gcc and g++分别是gnu的c & c++编译器gcc/g++在执行编译工作的时候,总共需要4步1.预处理,生成.i的文件[预处理器cpp]2.将预处理后的文件不转换成汇编语言,生成文件.s[编译器egcs]3.有汇编变为目标代码(机器代码)生成.o的文件[汇编器as]4.连接目标代码,生成可执行程序[链接器ld][参数详解]-x language filenam
2008-07-17 14:42:00 696
原创 位屏蔽
位屏蔽的含义是从包含多个位集的一个或一组字节中选出指定的一(些)位。为了检查一个字节中的某些位,可以让这个字节和屏蔽字(bit mask)进行按位与操作(C的按位与运算符为&)——屏蔽字中与要检查的位对应的位全部为1,而其余的位(被屏蔽的位)全部为0。例如,为了检查变量 flags的最低位,你可以让flags和最低位的屏蔽字进行按位与操作:flags&1;为了置位所需的位,可以让数据和屏蔽字
2008-07-17 14:22:00 2281 1
原创 文件掩码 umask
语法格式::: umask 预设掩码数值使用说明:::建立文件和文件夹的时候预设的掩码权限(你将要去掉的权限数值表达)主要参数:::-S 以文字的方式来表示权限掩码应用实例:::(1)设要生成的文件以rw- r-- r--这样的权限字出现 umask 133 (相当于777-644=133)(2)设要生成的目录权限以rwxr-xr-x这样的权限字出现 u
2008-07-17 14:18:00 1584
原创 make指南
译者按: 本文是一篇介绍 GNU Make 的文章,读完后读者应该基本掌握了 make 的用法。而 make 是所有想在 Unix (当然也包括 Linux )系统上编程的用户必须掌握的工具。如果你写的程序中没有用到 make ,则说明你写的程序只是个人的练习程序,不具有任何实用的价值。也许这么说有点 儿偏激,但 make 实在是应该用在任何稍具规模的程序中的。希望本文可以为中国的 Unix 编
2008-07-17 14:12:00 540
UFS Explorer Professional Recovery 5.23 Crack.zip
2019-09-27
ProIEC101ClientVer1.5基于IEC101的主站端仿真测试软件
2018-10-12
plsql 12.0.7 x86 x64 简体中文 注册版
2018-01-17
支持VS2017的vax插件VA_X_Setup2210
2017-03-17
PLSQL Developer(X64) v11.0.6.1796 主程序+ v11中文包+
2016-05-31
Visual Assist X下载V10.9.2062.0 官方原版_带破解补丁
2015-05-28
IEC 61850 标准 中文 完整版
2012-02-01
VA_X_Setup1822(含破解)
2010-05-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人