博文

[转]几个易被误认为病毒的文件(2005-10-24 12:26:00)

摘要:随着计算机的普及和信息技术的发展,“计算机病毒”一词对每一个人来说都已经不再陌生了,现如今计算机病毒可谓层出不穷,甚至让广大计算机用户几乎到了“谈毒色变”的程度。江民公司技术工程师发现有许多用户对操作系统下的文件不是很了解了解,以至于产生种种的怀疑。   以下是用户经常怀疑是病毒的文件:   一、Thumb.db文件   Thumb.db文件被用户误认为是病毒的原因应该有三点:   1、该文件在一些操作系统中的带有图片的文件夹中都存在;   2、即使删除此文件,下次打开该文件夹时仍会生成;   3、该文件可能会不断增大。   其实,Thumb.db文件在Windows Me或更新的Windows版本中都会有,这是Windows对图片的缓存(也可以说是缓冲文件),它可以方便用户对图片进行预览,图片越多,这个文件可能就越大,这是正常的。在Windows XP系统下可以在“文件夹选项”里面选择“不缓存缩略图”,就不会产生这种文件了。   二、Mfm1992文件 或“Mfm1992.AVB.AVB.AVB.AVB(后缀是无穷AVB)”   Mfm1992文件用户误认为是病毒的主要原因应该是:此文件可能生成在任何一个文件夹中,而且删除后可能还会重新生成。   Mfm1992文件是由于智能ABC的词库出错而产生的一个文件。由于智能ABC输入法的词库容量有限,当超出这个容量的时候,就会产生这个文件。当前程序运行在哪个目录,这个文件就在该目录下产生。这个文件的大小一般为43KB。这是智能ABC4.0的一个Bug,Win2000和me中自带的智能 ABC5.0已经修正了这个错误。 如果想让计算机中不再出现这个文件,有两种办法:   1、可以把4.0的智能ABC升级至高版本。   2、可以把Windowssystem目录下的*.rem文件删除,然后重启计算机。   三、Word的临时文件   用户在打开一个Word文档时会发现在同一个目录下出现了一个与原文档名称相同但前面加了一个“~$”符号的文件,它的图标与Word文档的图标相同,但是“灰”颜色的(即具有隐藏属性)。许多用户觉得可疑,认为是病毒造成的。   其实这是一个正常的现象,这个文件是Word生成的,可以理解为是一个缓冲文件,它的作用是最大限度的保存由于意外原因(如突然死机等)造成的用户对修改或建立的Word文档在未进行保存时的......

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

[转]C/C++头文件一览(2005-10-05 23:13:00)

摘要:C/C++头文件一览 C、传统 C++ #include <assert.h>    //设定插入点#include <ctype.h>     //字符处理#include <errno.h>     //定义错误码#include <float.h>     //浮点数处理#include <fstream.h>    //文件输入/输出#include <iomanip.h>    //参数化输入/输出#include <iostream.h>   //数据流输入/输出#include <limits.h>    //定义各种数据类型最值常量#include <locale.h>    //定义本地化函数#include <math.h>     //定义数学函数#include <stdio.h>     //定义输入/输出函数#include <stdlib.h>    //定义杂项函数及内存分配函数#include <string.h>    //字符串处理#include <strstrea.h>   //基于数组的输入/输出#include <time.h>     //定义关于时间的函数#include <wchar.h>     //宽字符处理及输入/输出#include <wctype.h>    //宽字符分类 ////////////////////////////////////////////////////////////////////////// 标准 C++ (同上的不再注释) #include <algorithm>    //STL 通用算法#include <bitset>     //STL 位集容器#include <cctype>#include <cerrno>#include <clocale>#include <cmath>#include <complex>     //复数类#include <cstdio&g......

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

[转](看看黑客一般是怎样入侵你电脑的)黑客IPC$入侵浅析(2005-09-21 00:25:00)

摘要: 黑客IPC$入侵浅析   [2005-09-12]       在黑客众多的入侵手段中,通过IPC$入侵已成为目前比较常见的一种方式,其攻击步骤甚至可以说已经成为经典的入侵模式,许多朋友非常想搞清楚这是怎么回事。知己知彼,方能百战不殆,基于这种考虑,我们来介绍一下这种入侵方式的基础知识。    IPC是Internet Process Connection的缩写,也就是远程网络连接。它是Windows NT/2000/XP特有的一项功能,就是在两个计算机进程之间建立通信连接。打个比方,IPC连接就像是挖好的地道,程序可通过地道访问远程主机。默认情况下,IPC是共享的,也就是说微软已经为我们挖好了这个地道(IPC),因此,这种基于IPC的入侵也常常被简称为IPC入侵。    IPC后面的$是共享的意思,不过是隐藏的共享,微软系统中用“$”表示隐藏的共享,比如C$就是隐藏的共享C盘。也就是说C盘是共享的,但是C盘没有那个“托手”标志。IPC$是共享“命名管道”的资源,它是为了让进程间通信而开放的命名管道,可以通过验证用户名和密码获得相应的权限,在远程管理计算机和查看计算机的共享资源时使用。利用IPC$,连接者甚至可以与目标主机建立一个空的连接而无需用户名与密码!当然对方机器必须打开IPC$共享,否则你是连接不上的。而利用这个空的连接,连接者还可以得到目标主机上的用户列表。    问:建立IPC连接需要什么条件?    答:建立IPC连接要求双方都是基于NT架构的系统。Windows Me/98/95都不可以。    问:怎么才能建立IPC连接呢?需要什么黑客工具呢?    答:建立IPC连接不需要任何黑客工具,在Windows里敲命令行就行了,但需要知道远程主机的用户名和密码。打开CMD后用如下命令:net use\\ip\ipc$ "password" /user:"username"进行连接。注意,如果远程......

阅读全文(11085) | 评论:3

[转]编程秘籍篇:C语言高效编程的四大绝招(2005-09-19 13:20:00)

摘要:编写高效简洁的C语言代码,是许多软件工程师追求的目标。本文就是针对编程工作中的一些体会和经验做相关的阐述。第一招:以空间换时间计算机程序中最大的矛盾是空间和时间的矛盾,那么,从这个角度出发逆向思维来考虑程序的效率问题,我们就有了解决问题的第1招--以空间换时间。比如说字符串的赋值:方法A:通常的办法 #define LEN 32 char string1 [LEN]; memset (string1,0,LEN); strcpy (string1,"This is a example!!");方法B: const char string2[LEN] ="This is a example!"; char * cp; cp = string2 ;使用的时候可以直接用指针来操作。 从上面的例子可以看出,A和B的效率是不能比的。在同样的存储空间下,B直接使用指针就可以操作了,而A需要调用两个字符函数才能完成。B的缺点在于灵活性没有A好。在需要频繁更改一个字符串内容的时候,A具有更好的灵活性;如果采用方法B,则需要预存许多字符串,虽然占用了大量的内存,但是获得了程序执行的高效率。 如果系统的实时性要求很高,内存还有一些,那我推荐你使用该招数。该招数的变招--使用宏函数而不是函数。举例如下: 方法C: #define bwMCDR2_ADDRESS 4 #define bsMCDR2_ADDRESS 17 int BIT_MASK(int __bf) {  return ((1U << (bw ## __bf)) - 1) << (bs ## __bf); } void SET_BITS(int __dst, int __bf, int __val) {  __dst = ((__dst) & ~(BIT_MASK(__bf))) | \  (((__val) << (bs ## __bf)) & (BIT_MASK(__bf)))) } SET_BITS(MCDR2, MCDR2_ADDRESS, RegisterNumber);方法D: #define bwMCDR2_ADDRESS 4 #......

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

[转]人工智能缩略语大全(2005-09-13 13:51:00)

摘要:发信人: chinamaker (狂一点), 信区: AI标  题: 人工智能缩略语大全发信站: BBS 水木清华站 (Tue Sep  6 22:37:14 2005), 站内来自科研中国:http://www.sciei.com/bbs/dispbbs.asp?boardID=43&ID=228&page=1 ACO Ant Colony Optimization 蚁群算法 AI Artificial Intelligence 人工智能 ANN Artifical Neural Network 人工神经网络 ART Adaptive Resonance Theory 自适应谐振理论 ARMA Autoregressive Moving Average 自回归移动取平均 BSP Blind Signal Processing 盲信号处理 BSS Blind Signal Separation 盲信号分离 BAM Bidirectional Associative Memory 双向联想记忆 BSE Blind Signal Extraction 盲信号抽取 BP Back Propagation 反向传播 CI Computational Intelligence 计算智能 CN Control Network 控制网络 CIMS Computer Intergrated Manufacturing&n......

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

[转]什么技术正走红?十大热点勾画网络蓝图(2005-09-06 21:24:00)

摘要:  网络已经悄然融入我们的日常生活,几乎每个人都在享受着网络的进步给生活带来的革命性变化。当然,这种变化不会轻言停息。那么,又有哪些新技术涌现出来继续支撑起新的变化呢?带着这样的问题,记者参加了日前于上海召开的NetEvents 2005亚太媒体高峰论坛,并与参会的厂商、数十名亚太区的记者及研究咨询机构的专家一起,共同探讨了网络发展的新趋势。   十大热点勾画网络蓝图   会上,来自Infonetics Research的Michael Howard从安全、企业IP通信、WLAN、宽带发展以及运营商网络等方面,将网络领域的发展趋势归结为以下十大热点。   1 、网络访问控制 (NAC)   准确地鉴别网上的用户及设备,这就是要关注网络访问控制的原因所在,现在已经有很多相关的产品了,Michael将其称为网络安全的最后游戏,并认为随后会有更多产品诞生。   2 、Web及应用安全   目前一个值得关注的安全问题是黑客常常会把攻击嵌入到特定的应用程序中,目前已有了Web应用防火墙,还有专为SQL应用、Oracle应用及SAP应用而设计的安全设备。   3、 IP PBXs   专业分析师表示,下一个新技术热点就是企业IP电话,IP PBXs也正在不断变化着。新的IP PBX有两种:一种是混合型PBX,在同一个PBX中既能处理传统的电话也能处理IP电话;第二种就是单纯的IP PBX,它只能处理IP电话。   4、 运营商迁移到MPLS   随着IP流量的增长,运营商们正把目光转向IP、MPLS网络,全世界的运营商们都在提供IP VPNs。当然,安全也随之被考虑了进来,一些新的安全设备已经安装于运营商网络,这些都表明了IP路由器今后将持续发展。   5 、下一代语音——新语音/新视频服务   在下一代语音服务中,将会出现许多新的语音、视频功能。例如:视频电话、手机视频铃声、按键对话、按键视频、现场会议、即时消息、手机视频游戏等。   6、 无线局域网的迅猛发展   2005年第一季度,全球无线局域网设备增长了20%,其中一半是家用,一半是企业用。另外,无线局域网电话(通过无线局域网接入互联网的IP电话)也已成为一个热点,其首要市场目标是企业用户。其实早在2004年全球就已有12.2万部Wi-Fi手机的销量,预计2008年将达到3600万部。  7、 WiMAX(802.16......

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

[转帖]C语言中数组和指针的互操作(2005-08-23 16:58:00)

摘要:C语言中数组和指针的互操作    曾听好多朋友说,C是一种怀旧的语言,因为它的历史很久远,然而自从各种面向对象的编程语言的相续出现让它的影响力日减。当然了,这是无可非议的,但是C的高效性其他语言无妨比拟的,所以我们有必要把握其中的精华与奥妙,也就有必要知道其中的基本的数据结构的比如数组,稍微有点深度的堆栈、列表、结构体等的操作和实现。指针也是C语言中的一个很优秀灵活的结构,对它的了解也是必不可少的。    我们一般都认为数组是一维的数据存储结构,因为二位数组或者说矩阵都可以看作是多个一维数组的组合结构,定义在其上的数据存储访问方式是一样的。所以一维数组是其中最基础的最重要的部分,只有理解了此类数据结构的本质才能触类旁通了。    数组(array)是若干同类变量的聚合,允许通过统一的名字饮用其中的变量。所以数组也就是一个同一类型的数据的有限集合。可以通过下表来访问数组中的某一/些数组元素。在C语言中数组都由连续的内存区域构成(有时候,不一定是这样),最低地址对应首元素,数组的下标是从0开始的,所以首元素也就是数组下标为0的元素,最高的地址对应最末的元素,即第N-1个元素(如果我们定义的数组为N元)。数组的定义方式:    在C语言中允许在声明数组的时候同时对其进行初始化,也可以把声明和定义放在不同的位置,初始化的一般的类似于如下的表达式:type_specifier array_name[size1]...[sizeN] = {value_list};其中vlaue_list是由逗号(,)分隔的常量表,常量表必须和type_specifier兼容。最后由分号与下一个语句分隔。由此可见一维数组的定义方式为:type_specifier array_name[size] = {value_list};如下:char hello[12] = {'H','e','l','l','o',',',' ','w','o','r','l','d','\0'};     注意:字符数组是一"'\0'"收尾的,这是C标准的一部分。因为在操作字符数组的时候是以'\0'作为结束判断的标志。当然......

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

[转载]宏的妙用(2005-07-03 13:26:00)

摘要:作者 阿荣1、概述 C++中出了const关键字以后,宏定义常量的功能已经不在被推荐使用。这使得宏似乎没有了用武之地。实际上,宏还可以做很多事情,笔者也难以全部列举。这里,仅仅列举几个典型的用法,希望大家能够从中获益。 2、实现多环境兼容 常见的情况是,我们实现了一个函数,希望它只在某种编译条件满足是被编译和使用。例如,我希望在源码中插入调试语句,以便以Debug方式运行时能够通过调试信息观察程序运行情况。但是,在产品发售给用户时,我又希望这些调试信息不要输出,以降低代码尺寸,提高运行性能。 这一问题的解决方法就是使用宏。根据条件编译指令,对于不同的编译条件,提供不同的实现。例如:我们希望在特定的位置向日志中写入当前行号和文件名,以判断对应代码是否被执行到,可以使用下面的宏:         #ifdef _DEBUG        #define TRACE_FILE_LINE_INFO() do{\            CString str;\            str.Format(_T("file=%s,line=%u\r\n",__FILE__,__LINE__);\            CFile file("logfile.txt");\            file.Write(str,str.GetLength());\       }while(0)       #el......

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

[转载]编写优秀技术文档的技巧(2005-06-29 17:59:00)

摘要:编写优秀技术文档的技巧 ---------------------------------------------------------------------来自:天极论坛 作者:ganyun [2004/12/27]   拥有准确的技术文档不仅对于公司是非常有益处的,而且也能够让客户从中受益。由于产品如何使用在某种程度上是要依赖技术文档来进行说明的,因此技术文档必须十分的准确可靠。使用不准确的和已经过时的技术文档对于公司的发展也会产生一定的阻碍,同样的,它也会对公司的客户们产生消极的影响。一旦客户发现在他们使用产品的时候遇到了问题,却不能通过求助于伴随产品的技术文档的手段进行解决的时候,客户们就会对这种产品产生怀疑乃至于失去信心,那么,公司的信誉和利益自然而然的就会受到损害。这就是不准确的和过时的技术文档给我们带来的危害。   缺乏准确性以及内容晦涩难懂都会让开发新手以及其他的一些技术工作者们对这些技术文档敬而远之,从而不利于他们的学习和掌握。在本篇文章中,我们要讨论的就是如何在你的开发小组中编写出准确而且易于掌握的技术文档。  技巧一:制定出一个技术评价核对表  许多的程序开发设计者以及管理者都缺乏从技术上评价一个文档的经验。这里有一些方法可以提高这些技术文档的准确性:   把注意力集中于技术事实上,这样能够核实这些技术是作为技术文档而被编写出来的。技术评论的工作并不等同于一般的编辑工作。  一定要从技术上核实,在技术文档里编写的程序与步骤的准确性。  一定要从技术上核实,在技术文档中使用的图片捕捉的准确性。  技巧二:一定要在技术文档编写的过程中明确责任  技术文档编写不好的一个原因常常是由于对它不够重视。这是由于在编写技术文档的时候,没有十分的明确各种责任。因此,一定要在技术文档编写的过程中明确责任,这些方法包括:   在技术文档中加入作者以及相关人员的姓名。一些公司可能有规定,禁止出现员工的姓名,但是在技术文档中包含作者以及相关人士姓名的做法能够促进这些内部员工之间的交流。对于外部的文档使用者,比如为商业现货软件编写的用户指南,可以加入作者以及相关人员的姓名,用以明确和承认他们对开发所做的工作和贡献。  把文档的技术评论作为提供给开发设计人员的年度评论的一部分。  在项目计划中指派专人负责技术评论的工作。   技巧三:增加技术文档编写者的准确性   由......

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

[转帖]揭开C/C++中数组形参的迷雾(2005-06-22 14:46:00)

摘要:揭开C/C++中数组形参的迷雾作者:乾坤一笑楔子  去年,周星星大哥曾经在VCKBASE/C++论坛发表过一篇文章“数组引用"以避免"数组降阶”,当时我不能深入理解这种用法的含义;时隔一年,我的知识有几经锤炼,终于对此文章渐有所悟,所以把吾所知作想详细道来,竟也成了一篇文章。希望本文能对新手有所启迪,同时也希望大家发现本文中的疏漏之处后不吝留言指教。  故事起源于周星星大哥给出的两个Demo,为了节省地方,我把两个Demo合二为一,也能说明同样的问题: #include using namespace std;void Foo1(int arr[100]){cout << "pass by pointer:   " << sizeof(arr) << endl;}void Foo2(int (&arr)[100]){cout << "pass by reference: " << sizeof(arr) << endl;}void main(){int a[100];cout << "In main function : " << sizeof(a) << endl;Foo1(a);Foo2(a); }其运行结果如下: In main function : 400pass by pointer: 4pass by reference: 400  这段代码说明了,如果数组形参是数组名形式(或者指针形式,下文讨论)时,使用sizeof运算符,将得不到原来数组的长度;如果用传递原数组引用的方法,则没有问题。  这段代码的确很难理解,因为这短短的十几行涉及到了形参与实参的关系、数组名和指针的关系、引用的意义、声名和表达式的关系这4大类问题,只要有1条理解不透、或者理解不正确,就理解不透上面的这段代码。本文也就从这4个问题入手,把这4个问题首先解决掉,然后再探讨上面的这段代码。虽然这样看来很是繁复,但是我认为从根上入手来理解、学习,是条似远实近的道路。一、函数形参和实参的关系 void Foo(int a);Foo(10);  这里的a叫做形式参数(parameter),简称形参;这里的10叫做实际参数(argument),简称实参......

阅读全文(6484) | 评论:2