精华内容
下载资源
问答
  • 多态的四种不同形式

    千次阅读 热门讨论 2015-11-03 08:26:02
    虚函数是引入了派生概念后用来表现基类和派生类的成员函数之间的一关系。   过载多态:同一个名字在不同的上下文中所代表的含义不同。典型的例子是运算符重载和函数重载,属于静态多态。   ...
            在收到消息时,对象要予以响应。不同的对象收到同一消息可以产生完全不同的结果,这一现象称为多态。在使用多态的时候,用户可以发送一个通用的消息,而实现的细节由接收对象自行决定。这样,同一消息就可以调用不同的方法。多态的实现受到继承的支持,利用类继承的层次关系,把具有通用功能的消息存放在高层次,而不同的实现这一功能的行为放在较低层次,在这些低层次的对象能够给通用消息以不同的响应。

           多态总体上分为:编译时的多态(静态多态)和运行时的多态(动态多态)。 Cardelli 和Wegner 把多态细分为 4 类:



            参数多态:采用参数化模板,通过给出不同的类型参数,使得一个结构有多种类型。如 C++语言中的函数模板和类模板属于参数多态。参数多态又叫静态多态,它的执行速度快,异常少,调用在编译时已经确定。参数多态是应用比较广泛的一种多态,被称为最纯的多态。


            包含多态:在许多语言中都存在,最常见的例子就是子类型化,即一个类型是另外一个类型的子类型。一般需要进行运行时的类型检查,属于动态多态。包含多态的基础是虚函数。虚函数是引入了派生概念后用来表现基类和派生类的成员函数之间的一种关系。


            过载多态:同一个名字在不同的上下文中所代表的含义不同。典型的例子是运算符重载和函数重载,属于静态多态。


            强制多态:编译程序通过语义操作,把操作对象的类型强行加以变换,以符合函数或操作符的要求。程序设计语言中基本类型的大多数操作符,在发生不同类型的数据进行混合运算时,编译程序一般都会进行强制多态。程序员也可以显示地进行强制多态的操作。如 int+double,编译系统一般会把 int 转换为 double,然后执行 double+double 运算,这个int->double 的转换,就实现了强制多态,即可是隐式的,也可显式转换。强制多态属于静态多态。

             多态性不仅增加了面向对象软件系统的灵活性,进一步减少了信息冗余,而且显著提高了软件的可重用性和可扩充性。
    展开全文
  • 以上仅列出一些比较常见的病毒表现形式,肯定还会遇到一些其他的特殊现象,这就需要由用户自己判断了。 【病毒预防】 首先,在思想上重视,加强管理,止病毒的入侵。凡是从外来的软盘往机器中拷信息,都应该先对...
     计算机病毒是一个程序,一段可执行码 ,对计算机的正常使用进行破坏,使得电脑无法正常使用甚至整个操作系统或者电脑硬盘损坏。就像生物病毒一样,计算机病毒有独特的复制能力。计算机病毒可以很快地蔓延,又常常难以根除。它们能把自身附着在各种类型的文件上。当文件被复制或从一个用户传送到另一个用户时,它们就随同文件一起蔓延开来。这种程序不是独立存在的,它隐蔽在其他可执行的程序之中,既有破坏性,又有传染性和潜伏性。轻则影响机器运行速度,使机器不能正常运行;重则使机器处于瘫痪,会给用户带来不可估量的损失。通常就把这种具有破坏作用的程序称为计算机病毒。 

    除复制能力外,某些计算机病毒还有其它一些共同特性:一个被污染的程序能够传送病毒载体。当你看到病毒载体似乎仅仅表现在文字和图像上时,它们可能也已毁坏了文件、再格式化了你的硬盘驱动或引发了其它类型的灾害。若是病毒并不寄生于一个污染程序,它仍然能通过占据存贮空间给你带来麻烦,并降低你的计算机的全部性能。

    【病毒特点】

    计算机病毒具有以下几个特点:

    (1) 寄生性

    计算机病毒寄生在其他程序之中,当执行这个程序时,病毒就起破坏作用,而在未启动这个程序之前,它是不易被人发觉的。

    (2) 传染性

    计算机病毒不但本身具有破坏性,更有害的是具有传染性,一旦病毒被复制或产生变种,其速度之快令人难以预防。

    (3) 潜伏性

    有些病毒像定时炸弹一样,让它什么时间发作是预先设计好的。比如黑色星期五病毒,不到预定时间一点都觉察不出来,等到条件具备的时候一下子就爆炸开来,对系统进行破坏。

    (4) 隐蔽性

    计算机病毒具有很强的隐蔽性,有的可以通过病毒软件检查出来,有的根本就查不出来,有的时隐时现、变化无常,这类病毒处理起来通常很困难。

    【表现症状】

    计算机受到病毒感染后,会表现出不同的症状,下边把一些经常碰到的现象列出来,供用户参考。

    (1) 机器不能正常启动

    加电后机器根本不能启动,或者可以启动,但所需要的时间比原来的启动时间变长了。有时会突然出现黑屏现象。

    (2) 运行速度降低

    如果发现在运行某个程序时,读取数据的时间比原来长,存文件或调文件的时间都增加了,那就可能是由于病毒造成的。

    (3) 磁盘空间迅速变小

    由于病毒程序要进驻内存,而且又能繁殖,因此使内存空间变小甚至变为“0”,用户什么信息也进不去。

    (4) 文件内容和长度有所改变

    一个文件存入磁盘后,本来它的长度和其内容都不会改变,可是由于病毒的干扰,文件长度可能改变,文件内容也可能出现乱码。有时文件内容无法显示或显示后又消失了。

    (5) 经常出现“死机”现象

    正常的操作是不会造成死机现象的,即使是初学者,命令输入不对也不会死机。如果机器经常死机,那可能是由于系统被病毒感染了。

    (6) 外部设备工作异常

    因为外部设备受系统的控制,如果机器中有病毒,外部设备在工作时可能会出现一些异常情况,出现一些用理论或经验说不清道不明的现象。

    以上仅列出一些比较常见的病毒表现形式,肯定还会遇到一些其他的特殊现象,这就需要由用户自己判断了。

    【病毒预防】

    首先,在思想上重视,加强管理,止病毒的入侵。凡是从外来的软盘往机器中拷信息,都应该先对软盘进行查毒,若有病毒必须清除,这样可以保证计算机不被新的病毒传染。此外,由于病毒具有潜伏性,可能机器中还隐蔽着某些旧病毒,一旦时机成熟还将发作,所以,要经常对磁盘进行检查,若发现病毒就及时杀除。思想重视是基础,采取有效的查毒与消毒方法是技术保证。检查病毒与消除病毒目前通常有两种手段,一种是在计算机中加一块防病毒卡,另一种是使用防病毒软件工作原理基本一样,一般用防病毒软件的用户更多一些。切记要注意一点,预防与消除病毒是一项长期的工作任务,不是一劳永逸的,应坚持不懈。

    计算机病毒是在什么情况下出现的?

    计算机病毒的产生是计算机技术和以计算机为核心的社会信息化进程发展到一定阶段的必然产物。它产生的背景是:

    (1)计算机病毒是计算机犯罪的一种新的衍化形式

    计算机病毒是高技术犯罪, 具有瞬时性、动态性和随机性。不易取证, 风险小破坏大, 从而刺激了犯罪意识和犯罪活动。是某些人恶作剧和报复心态在计算机应用领域的表现。

    (2)计算机软硬件产品的危弱性是根本的技术原因

    计算机是电子产品。数据从输入、存储、处理、输出等环节, 易误入、篡改、丢失、作假和破坏;程序易被删除、改写;计算机软件设计的手工方式, 效率低下且生产周期长;人们至今没有办法事先了解一个程序有没有错误, 只能在运行中发现、修改错误, 并不知道还有多少错误和缺陷隐藏在其中。这些脆弱性就为病毒的侵入提供了方便。

    (3)微机的普及应用是计算机病毒产生的必要环境

    1983年11月3日美国计算机专家首次提出了计算机病毒的概念并进行了验证。几年前计算机病毒就迅速蔓延, 到我国才是近年来的事。而这几年正是我国微型计算机普及应用热潮。微机的广泛普及, 操作系统简单明了, 软、硬件透明度高, 基本上没有什么安全措施, 能够透彻了解它内部结构的用户日益增多, 对其存在的缺点和易攻击处也了解的越来越清楚, 不同的目的可以做出截然不同的选择。目前, 在IBM PC系统及其兼容机上广泛流行着各种病毒就很说明这个问题。

    计算机病毒是如何分类的?

    计算机病毒可以从不同的角度分类。若按其表现性质可分为良性的和恶性的。良性的危害性小, 不破坏系统和数据, 但大量占用系统开销, 将使机器无法正常工作,陷于瘫痪。如国内出现的圆点病毒就是良性的。恶性病毒可能会毁坏数据文件, 也可能使计算机停止工作。若按激活的时间可分为定时的和随机的。定时病毒仅在某一特定时间才发作, 而随机病毒一般不是由时钟来激活的。若按其入侵方式可分操作系统型病毒( 圆点病毒和大麻病毒是典型的操作系统病毒), 这种病毒具有很强的破坏力(用它自己的程序意图加入或取代部分操作系统进行工作), 可以导致整个系统的瘫痪;原码病毒, 在程序被编译之前插入到FORTRAN、C、或PASCAL等语言编制的源程序里, 完成这一工作的病毒程序一般是在语言处理程序或连接程序中;外壳病毒, 常附在主程序的首尾, 对源程序不作更改, 这种病毒较常见, 易于编写, 也易于发现, 一般测试可执行文件的大小即可知;入侵病毒, 侵入到主程序之中, 并替代主程序中部分不常用到的功能模块或堆栈区, 这种病毒一般是针对某些特定程序而编写的。若按其是否有传染性又可分为不可传染性和可传染性病毒。不可传染性病毒有可能比可传染性病毒更具有危险性和难以预防。若按传染方式可分磁盘引导区传染的计算机病毒、操作系统传染的计算机病毒和一般应用程序传染的计算机病毒。若按其病毒攻击的机种分类, 攻击微型计算机的, 攻击小型机的, 攻击工作站的, 其中以攻击微型计算机的病毒为多, 世界上出现的病毒几乎90%是攻击IBM PC机及其兼容机。

    计算机病毒的定义

    一 计算机病毒的定义计算机病毒(Computer Virus)在《中华人民共和国计算机信息系统安全保护条例》中被明确定义,病毒“指编制或者在计算机程序中插入的破坏计算机功能或者破坏数据,影响计算机使用并且能够自我复制的一组计算机指令或者程序代码”。

    二 计算机病毒的特点计算机病毒是人为的特制程序,具有自我复制能力,很强的感染性,一定的潜伏性,特定的触发性和很大的破坏性。

    三 病毒存在的必然性计算机的信息需要存取、复制、传送,病毒作为信息的一种形式可以随之繁殖、感染、破坏,而当病毒取得控制权之后,他们会主动寻找感染目标,使自身广为流传。

    四 计算机病毒的长期性病毒往往会利用计算机操作系统的弱点进行传播,提高系统的安全性是防病毒的一个重要方面,但完美的系统是不存在的,过于强调提高系统的安全性将使系统多数时间用于病毒检查,系统失去了可用性、实用性和易用性,另一方面,信息保密的要求让人们在泄密和抓住病毒之间无法选择。病毒与反病毒将作为一种技术对抗长期存在,两种技术都将随计算机技术的发展而得到长期的发展。

    五 计算机病毒的产生病毒不是来源于突发或偶然的原因.一次突发的停电和偶然的错误,会在计算机的磁盘和内存中产生一些乱码和随机指令,但这些代码是无序和混乱的,病毒则是一种比较完美的,精巧严谨的代码,按照严格的秩序组织起来,与所在的系统网络环境相适应和配合起来,病毒不会通过偶然形成,并且需要有一定的长度,这个基本的长度从概率上来讲是不可能通过随机代码产生的。病毒是人为的特制程序现在流行的病毒是由人为故意编写的,多数病毒可以找到作者信息和产地信息,通过大量的资料分析统计来看,病毒作者主要情况和目的是:一些天才的程序员为了表现自己和证明自己的能力,处于对上司的不满,为了好奇,为了报复,为了祝贺和求爱,为了得到控制口令,为了软件拿不到报酬预留的陷阱等.当然也有因政治,军事,宗教,民族.专利等方面的需求而专门编写的,其中也包括一些病毒研究机构和黑客的测试病毒.

    六 计算机病毒分类根据多年对计算机病毒的研究,按照科学的、系统的、严密的方法,计算机病毒可分类如下:按照计算机病毒属性的方法进行分类,计算机病毒可以根据下面的属性进行分类:

    其他计算机病毒介绍

    按照计算机病毒存在的媒体进行分类根据病毒存在的媒体,病毒可以划分为网络病毒,文件病毒,引导型病毒。网络病毒通过计算机网络传播感染网络中的可执行文件,文件病毒感染计算机中的文件(如:COM,EXE,DOC等),引导型病毒感染启动扇区(Boot)和硬盘的系统引导扇区(MBR),还有这三种情况的混合型,例如:多型病毒(文件和引导型)感染文件和引导扇区两种目标,这样的病毒通常都具有复杂的算法,它们使用非常规的办法侵入系统,同时使用了加密和变形算法。 按照计算机病毒传染的方法进行分类根据病毒传染的方法可分为驻留型病毒和非驻留型病毒,驻留型病毒感染计算机后,把自身的内存驻留部分放在内存(RAM)中,这一部分程序挂接系统调用并合并到操作系统中去,他处于激活状态,一直到关机或重新启动.非驻留型病毒在得到机会激活时并不感染计算机内存,一些病毒在内存中留有小部分,但是并不通过这一部分进行传染,这类病毒也被划分为非驻留型病毒。 按照计算机病毒破坏的能力进行分类根据病毒破坏的能力可划分为以下几种:无害型除了传染时减少磁盘的可用空间外,对系统没有其它影响。无危险型这类病毒仅仅是减少内存、显示图像、发出声音及同类音响。危险型这类病毒在计算机系统操作中造成严重的错误。非常危险型这类病毒删除程序、破坏数据、清除系统内存区和操作系统中重要的信息。这些病毒对系统造成的危害,并不是本身的算法中存在危险的调用,而是当它们传染时会引起无法预料的和灾难性的破坏。由病毒引起其它的程序产生的错误也会破坏文件和扇区,这些病毒也按照他们引起的破坏能力划分。一些现在的无害型病毒也可能会对新版的DOS、Windows和其它操作系统造成破坏。例如:在早期的病毒中,有一个“Denzuk”病毒在360K磁盘上很好的工作,不会造成任何破坏,但是在后来的高密度软盘上却能引起大量的数据丢失。 按照计算机病毒特有的算法进行分类根据病毒特有的算法,病毒可以划分为:伴随型病毒这一类病毒并不改变文件本身,它们根据算法产生EXE文件的伴随体,具有同样的名字和不同的扩展名(COM),例如:XCOPY.EXE的伴随体是XCOPY.COM。病毒把自身写入COM文件并不改变EXE文件,当DOS加载文件时,伴随体优先被执行到,再由伴随体加载执行原来的EXE文件。“蠕虫”型病毒通过计算机网络传播,不改变文件和资料信息,利用网络从一台机器的内存传播到其它机器的内存,计算网络地址,将自身的病毒通过网络发送。有时它们在系统存在,一般除了内存不占用其它资源。寄生型病毒除了伴随和“蠕虫”型,其它病毒均可称为寄生型病毒,它们依附在系统的引导扇区或文件中,通过系统的功能进行传播,按其算法不同可分为:练习型病毒病毒自身包含错误,不能进行很好的传播,例如一些病毒在调试阶段。诡秘型病毒它们一般不直接修改DOS中断和扇区数据,而是通过设备技术和文件缓冲区等DOS内部修改,不易看到资源,使用比较高级的技术。利用DOS空闲的数据区进行工作。变型病毒(又称幽灵病毒)这一类病毒使用一个复杂的算法,使自己每传播一份都具有不同的内容和长度。它们一般的作法是一段混有无关指令的解码算法和被变化过的病毒体组成。

    七、计算机病毒的发展在病毒的发展史上,病毒的出现是有规律的,一般情况下一种新的病毒技术出现后,病毒迅速发展,接着反病毒技术的发展会抑制其流传。操作系统升级后,病毒也会调整为新的方式,产生新的病毒技术。它可划分为:

    DOS引导阶段

    1987年,计算机病毒主要是引导型病毒,具有代表性的是“小球”和“石头”病毒。当时的计算机硬件较少,功能简单,一般需要通过软盘启动后使用.引导型病毒利用软盘的启动原理工作,它们修改系统启动扇区,在计算机启动时首先取得控制权,减少系统内存,修改磁盘读写中断,影响系统工作效率,在系统存取磁盘时进行传播.1989年,引导型病毒发展为可以感染硬盘,典型的代表有“石头2”。 DOS可执行阶段1989年,可执行文件型病毒出现,它们利用DOS系统加载执行文件的机制工作,代表为“耶路撒冷”,“星期天”病毒,病毒代码在系统执行文件时取得控制权,修改DOS中断,在系统调用时进行传染,并将自己附加在可执行文件中,使文件长度增加。1990年,发展为复合型病毒,可感染COM和EXE文件。 伴随,批次型阶段1992年,伴随型病毒出现,它们利用DOS加载文件的优先顺序进行工作,具有代表性的是“金蝉”病毒,它感染EXE文件时生成一个和EXE同名但扩展名为COM的伴随体;它感染文件时,改原来的COM文件为同名的EXE文件,再产生一个原名的伴随体,文件扩展名为COM,这样,在DOS加载文件时,病毒就取得控制权.这类病毒的特点是不改变原来的文件内容,日期及属性,解除病毒时只要将其伴随体删除即可。在非DOS操作系统中,一些伴随型病毒利用操作系统的描述语言进行工作,具有典型代表的是“海盗旗”病毒,它在得到执行时,询问用户名称和口令,然后返回一个出错信息,将自身删除。批次型病毒是工作在DOS下的和“海盗旗”病毒类似的一类病毒。 幽灵,多形阶段1994年,随着汇编语言的发展,实现同一功能可以用不同的方式进行完成,这些方式的组合使一段看似随机的代码产生相同的运算结果。幽灵病毒就是利用这个特点,每感染一次就产生不同的代码。例如“一半”病毒就是产生一段有上亿种可能的解码运算程序,病毒体被隐藏在解码前的数据中,查解这类病毒就必须能对这段数据进行解码,加大了查毒的难度。多形型病毒是一种综合性病毒,它既能感染引导区又能感染程序区,多数具有解码算法,一种病毒往往要两段以上的子程序方能解除。 生成器,变体机阶段1995年,在汇编语言中,一些数据的运算放在不同的通用寄存器中,可运算出同样的结果,随机的插入一些空操作和无关指令,也不影响运算的结果,这样,一段解码算法就可以由生成器生成,当生成器的生成结果为病毒时,就产生了这种复杂的“病毒生成器” ,而变体机就是增加解码复杂程度的指令生成机制。这一阶段的典型代表是“病毒制造机” VCL,它可以在瞬间制造出成千上万种不同的病毒,查解时就不能使用传统的特征识别法,需要在宏观上分析指令,解码后查解病毒。 网络,蠕虫阶段1995年,随着网络的普及,病毒开始利用网络进行传播,它们只是以上几代病毒的改进.在非DOS操作系统中,“蠕虫”是典型的代表,它不占用除内存以外的任何资源,不修改磁盘文件,利用网络功能搜索网络地址,将自身向下一地址进行传播,有时也在网络服务器和启动文件中存在。 视窗阶段1996年,随着Windows和Windows95的日益普及,利用Windows进行工作的病毒开始发展,它们修改(NE,PE)文件,典型的代表是DS.3873,这类病毒的机制更为复杂,它们利用保护模式和API调用接口工作,解除方法也比较复杂。 宏病毒阶段1996年,随着Windows Word功能的增强,使用Word宏语言也可以编制病毒,这种病毒使用类Basic语言,编写容易,感染Word文档等文件,在Excel和AmiPro出现的相同工作机制的病毒也归为此类,由于Word文档格式没有公开,这类病毒查解比较困难 互连网阶段1997年,随着因特网的发展,各种病毒也开始利用因特网进行传播,一些携带病毒的数据包和邮件越来越多,如果不小心打开了这些邮件,机器就有可能中毒. 爪哇(Java),邮件炸弹阶段1997年,随着万维网(Wold Wide Web)上Java的普及,利用Java语言进行传播和资料获取的病毒开始出现,典型的代表是JavaSnake病毒,还有一些利用邮件服务器进行传播和破坏的病毒,例如Mail-Bomb病毒,它会严重影响因特网的效率。

    八 他的破坏行为计算机病毒的破坏行为体现了病毒的杀伤能力。病毒破坏行为的激烈程度取决于病毒作者的主观愿望和他所具有的技术能量。数以万计不断发展扩张的病毒,其破坏行为千奇百怪,不可能穷举其破坏行为,而且难以做全面的描述,根据现有的病毒资料可以把病毒的破坏目标和攻击部位归纳如下:

    攻击系统数据区,攻击部位包括:硬盘主引寻扇区、Boot扇区、FAT表、文件目录等。一般来说,攻击系统数据区的病毒是恶性病毒,受损的数据不易恢复。 攻击文件病毒对文件的攻击方式很多,可列举如下:删除、改名、替换内容、丢失部分程序代码、内容颠倒、写入时间空白、变碎片、假冒文件、丢失文件簇、丢失数据文件等。 攻击内存内存是计算机的重要资源,也是病毒攻击的主要目标之一,病毒额外地占用和消耗系统的内存资源,可以导致一些较的大程序难以运行。病毒攻击内存的方式如下:占用大量内存、改变内存总量、禁止分配内存、蚕食内存等。 干扰系统运行病毒会干扰系统的正常运行,以此做为自己的破坏行为,此类行为也是花样繁多,可以列举下述诸方式:不执行命令、干扰内部命令的执行、虚假报警、使文件打不开、使内部栈溢出、占用特殊数据区、时钟倒转、重启动、死机、强制游戏、扰乱串行口、并行口等。 速度下降病毒激活时,其内部的时间延迟程序启动,在时钟中纳入了时间的循环计数,迫使计算机空转,计算机速度明显下降。 攻击磁盘攻击磁盘数据、不写盘、写操作变读操作、写盘时丢字节等。 扰乱屏幕显示病毒扰乱屏幕显示的方式很多,可列举如下:字符跌落、环绕、倒置、显示前一屏、光标下跌、滚屏、抖动、乱写、吃字符等。 键盘病毒干扰键盘操作,已发现有下述方式:响铃、封锁键盘、换字、抹掉缓存区字符、重复、输入紊乱等。 喇叭许多病毒运行时,会使计算机的喇叭发出响声。有的病毒作者通过喇叭发出种种声音,有的病毒作者让病毒演奏旋律优美的世界名曲,在高雅的曲调中去杀戮人们的信息财富,已发现的喇叭发声有以下方式:演奏曲子、警笛声、炸弹噪声、鸣叫、咔咔声、嘀嗒声等。 攻击CMOS 在机器的CMOS区中,保存着系统的重要数据,例如系统时钟、磁盘类型、内存容量等,并具有校验和。有的病毒激活时,能够对CMOS区进行写入动作,破坏系统CMOS中的数据。 干扰打印机典型现象为:假报警、间断性打印、更换字符等。

    九、计算机病毒的危害性计算机资源的损失和破坏,不但会造成资源和财富的巨大浪费,而且有可能造成社会性的灾难,随着信息化社会的发展,计算机病毒的威胁日益严重,反病毒的任务也更加艰巨了。1988年11月2日下午5时1分59秒,美国康奈尔大学的计算机科学系研究生,23岁的莫里斯(Morris)将其编写的蠕虫程序输入计算机网络,致使这个拥有数万台计算机的网络被堵塞。这件事就像是计算机界的一次大地震,引起了巨大反响,震惊全世界,引起了人们对计算机病毒的恐慌,也使更多的计算机专家重视和致力于计算机病毒研究。1988年下半年,我国在统计局系统首次发现了“小球”病毒,它对统计系统影响极大,此后由计算机病毒发作而引起的“病毒事件”接连不断,前一段时间发现的CIH、美丽杀等病毒更是给社会造成了很大损失。

    3.计算机病毒是一个程序,一段可执行码。就像生物病毒一样,计算机病毒有独特的复制能力。计算机病毒可以很快地蔓延,又常常难以根除。它们能把自身附着在各种类型的文件上。当文件被复制或从一个用户传送到另一个用户时,它们就随同文件一起蔓延开来。

    除复制能力外,某些计算机病毒还有其它一些共同特性:一个被污染的程序能够传送病毒载体。当你看到病毒载体似乎仅仅表现在文字和图象上时,它们可能也已毁坏了文件、再格式化了你的硬盘驱动或引发了其它类型的灾害。若是病毒并不寄生于一个污染程序,它仍然能通过占据存贮空间给你带来麻烦,并降低你的计算机的全部性能。

    可以从不同角度给出计算机病毒的定义。一种定义是通过磁盘、磁带和网络等作为媒介传播扩散,能“传染” 其他程序的程序。另一种是能够实现自身复制且借助一定的载体存在的具有潜伏性、传染性和破坏性的程序。还有的定义是一种人为制造的程序,它通过不同的途径潜伏或寄生在存储媒体(如磁盘、内存)或程序里。当某种条件或时机成熟时,它会自生复制并传播,使计算机的资源受到不同程序的破坏等等。这些说法在某种意义上借用了生物学病毒的概念,计算机病毒同生物病毒所相似之处是能够侵入计算机系统和网络,危害正常工作的“病原体”。它能够对计算机系统进行各种破坏,同时能够自我复制, 具有传染性。所以, 计算机病毒就是能够通过某种途径潜伏在计算机存储介质(或程序)里, 当达到某种条件时即被激活的具有对计算机资源进行破坏作用的一组程序或指令集合。

    计算机病毒寄生方式有哪几种?

    (1)寄生在磁盘引导扇区中:任何操作系统都有个自举过程, 例如DOS在启动时, 首先由系统读入引导扇区记录并执行它, 将DOS读入内存。病毒程序就是利用了这一点, 自身占据了引导扇区而将原来的引导扇区内容及其病毒的其他部分放到磁盘的其他空间, 并给这些扇区标志为坏簇。这样, 系统的一次初始化, 病毒就被激活了。它首先将自身拷贝到内存的高端并占据该范围, 然后置触发条件如INT 13H中断(磁盘读写中断)向量的修改, 置内部时钟的某一值为条件等, 最后引入正常的操作系统。以后一旦触发条件成熟, 如一个磁盘读或写的请求, 病毒就被触发。如果磁盘没有被感染(通过识别标志)则进行传染。

    (2)寄生在可执行程序中:这种病毒寄生在正常的可执行程序中, 一旦程序执行病毒就被激活, 于是病毒程序首先被执行, 它将自身常驻内存, 然后置触发条件, 也可能立即进行传染, 但一般不作表现。做完这些工作后, 开始执行正常的程序, 病毒程序也可能在执行正常程序之后再置触发条件等工作。病毒可以寄生在源程序的首部也可以寄生在尾部, 但都要修改源程序的长度和一些控制信息, 以保证病毒成为源程序的一部分, 并在执行时首先执行它。这种病毒传染性比较强。

    (3)寄生在硬盘的主引导扇区中:例如大麻病毒感染硬盘的主引导扇区, 该扇区与DOS无关。

    计算机病毒的工作过程应包括哪些环节?

    计算机病毒的完整工作过程应包括以下几个环节:

    (1)传染源:病毒总是依附于某些存储介质, 例如软盘、 硬盘等构成传染源。

    (2)传染媒介:病毒传染的媒介由工作的环境来定, 可能是计算机网, 也可能是可移动的存储介质, 例如软磁盘等。

    (3)病毒激活:是指将病毒装入内存, 并设置触发条件, 一旦触发条件成熟, 病毒就开始作用--自我复制到传染对象中, 进行各种破坏活动等。

    (4)病毒触发:计算机病毒一旦被激活, 立刻就发生作用, 触发的条件是多样化的, 可以是内部时钟, 系统的日期, 用户标识符,也可能是系统一次通信等等。

    (5)病毒表现:表现是病毒的主要目的之一, 有时在屏幕显示出来, 有时则表现为破坏系统数据。可以这样说, 凡是软件技术能够触发到的地方, 都在其表现范围内。

    (6)传染:病毒的传染是病毒性能的一个重要标志。在传染环节中, 病毒复制一个自身副本到传染对象中去。

    不同种类的计算机病毒的传染方法有何不同?

    从病毒的传染方式上来讲, 所有病毒到目前为止可以归结于三类:感染用户程序的计算机病毒;感染操作系统文件的计算机病毒;感染磁盘引导扇区的计算机病毒。这三类病毒的传染方式均不相同。

    感染用户应用程序的计算机病毒的传染方式是病毒以链接的方式对应用程序进行传染。这种病毒在一个受传染的应用程序执行时获得控制权, 同时扫描计算机系统在硬盘或软盘上的另外的应用程序, 若发现这些程序时, 就链接在应用程序中, 完成传染, 返回正常的应用程序并继续执行。

    感染操作系统文件的计算机病毒的传染方式是通过与操作系统中所有的模块或程序链接来进行传染。
    展开全文
  • 解析xml的四种方式

    万次阅读 多人点赞 2017-03-26 00:10:58
    解析xml的四种方式

    XML是一种通用的数据交换格式,它的平台无关性、语言无关性、系统无关性、给数据集成与交互带来了极大的方便。XML在不同的语言环境中解析方式都是一样的,只不过实现的语法不同而已。

      XML的解析方式分为四种:1、DOM解析;2、SAX解析;3、JDOM解析;4、DOM4J解析。其中前两种属于基础方法,是官方提供的平台无关的解析方式;后两种属于扩展方法,它们是在基础的方法上扩展出来的,只适用于java平台。

      针对以下XML文件,会对四种方式进行详细描述:

    复制代码
    <?xml version="1.0" encoding="UTF-8"?>
    <bookstore>
        <book id="1">
            <name>冰与火之歌</name>
            <author>乔治马丁</author>
            <year>2014</year>
            <price>89</price>
        </book>
        <book id="2">
            <name>安徒生童话</name>
            <year>2004</year>
            <price>77</price>
            <language>English</language>
        </book>    
    </bookstore>
    复制代码

    一、DOM解析

      DOM的全称是Document Object Model,也即文档对象模型。在应用程序中,基于DOM的XML分析器将一个XML文档转换成一个对象模型的集合(通常称DOM树),应用程序正是通过对这个对象模型的操作,来实现对XML文档数据的操作。通过DOM接口,应用程序可以在任何时候访问XML文档中的任何一部分数据,因此,这种利用DOM接口的机制也被称作随机访问机制。

      DOM接口提供了一种通过分层对象模型来访问XML文档信息的方式,这些分层对象模型依据XML的文档结构形成了一棵节点树。无论XML文档中所描述的是什么类型的信息,即便是制表数据、项目列表或一个文档,利用DOM所生成的模型都是节点树的形式。也就是说,DOM强制使用树模型来访问XML文档中的信息。由于XML本质上就是一种分层结构,所以这种描述方法是相当有效的。

      DOM树所提供的随机访问方式给应用程序的开发带来了很大的灵活性,它可以任意地控制整个XML文档中的内容。然而,由于DOM分析器把整个XML文档转化成DOM树放在了内存中,因此,当文档比较大或者结构比较复杂时,对内存的需求就比较高。而且,对于结构复杂的树的遍历也是一项耗时的操作。所以,DOM分析器对机器性能的要求比较高,实现效率不十分理想。不过,由于DOM分析器所采用的树结构的思想与XML文档的结构相吻合,同时鉴于随机访问所带来的方便,因此,DOM分析器还是有很广泛的使用价值的。

        优点:

          1、形成了树结构,有助于更好的理解、掌握,且代码容易编写。

          2、解析过程中,树结构保存在内存中,方便修改。

        缺点:

          1、由于文件是一次性读取,所以对内存的耗费比较大。

          2、如果XML文件比较大,容易影响解析性能且可能会造成内存溢出。

      以下是解析代码:

    复制代码
    public class DOMTest {
        public static void main(String[] args) {
            //创建一个DocumentBuilderFactory的对象
            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
            //创建一个DocumentBuilder的对象
            try {
                //创建DocumentBuilder对象
                DocumentBuilder db = dbf.newDocumentBuilder();
                //通过DocumentBuilder对象的parser方法加载books.xml文件到当前项目下
                Document document = db.parse("books.xml");
                //获取所有book节点的集合
                NodeList bookList = document.getElementsByTagName("book");
                //通过nodelist的getLength()方法可以获取bookList的长度
                System.out.println("一共有" + bookList.getLength() + "本书");
                //遍历每一个book节点
                for (int i = 0; i < bookList.getLength(); i++) {
                    System.out.println("=================下面开始遍历第" + (i + 1) + "本书的内容=================");
                    //通过 item(i)方法 获取一个book节点,nodelist的索引值从0开始
                    Node book = bookList.item(i);
                    //获取book节点的所有属性集合
                    NamedNodeMap attrs = book.getAttributes();
                    System.out.println("第 " + (i + 1) + "本书共有" + attrs.getLength() + "个属性");
                    //遍历book的属性
                    for (int j = 0; j < attrs.getLength(); j++) {
                        //通过item(index)方法获取book节点的某一个属性
                        Node attr = attrs.item(j);
                        //获取属性名
                        System.out.print("属性名:" + attr.getNodeName());
                        //获取属性值
                        System.out.println("--属性值" + attr.getNodeValue());
                    }
                    //解析book节点的子节点
                    NodeList childNodes = book.getChildNodes();
                    //遍历childNodes获取每个节点的节点名和节点值
                    System.out.println("第" + (i+1) + "本书共有" + 
                    childNodes.getLength() + "个子节点");
                    for (int k = 0; k < childNodes.getLength(); k++) {
                        //区分出text类型的node以及element类型的node
                        if (childNodes.item(k).getNodeType() == Node.ELEMENT_NODE) {
                            //获取了element类型节点的节点名
                            System.out.print("第" + (k + 1) + "个节点的节点名:" 
                            + childNodes.item(k).getNodeName());
                            //获取了element类型节点的节点值
                            System.out.println("--节点值是:" + childNodes.item(k).getFirstChild().getNodeValue());
                            //System.out.println("--节点值是:" + childNodes.item(k).getTextContent());
                        }
                    }
                    System.out.println("======================结束遍历第" + (i + 1) + "本书的内容=================");
                }
            } catch (ParserConfigurationException e) {
                e.printStackTrace();
            } catch (SAXException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }        
        }
    }
    复制代码

    二、SAX解析

      SAX的全称是Simple APIs for XML,也即XML简单应用程序接口。与DOM不同,SAX提供的访问模式是一种顺序模式,这是一种快速读写XML数据的方式。当使用SAX分析器对XML文档进行分析时,会触发一系列事件,并激活相应的事件处理函数,应用程序通过这些事件处理函数实现对XML文档的访问,因而SAX接口也被称作事件驱动接口。

        优点:

          1、采用事件驱动模式,对内存耗费比较小。

          2、适用于只处理XML文件中的数据时。

        缺点:

          1、编码比较麻烦。

          2、很难同时访问XML文件中的多处不同数据。

      以下是解析代码:

    复制代码
    public class SAXTest {
        /**
         * @param args
         */
        public static void main(String[] args) {
            //锟斤拷取一锟斤拷SAXParserFactory锟斤拷实锟斤拷
            SAXParserFactory factory = SAXParserFactory.newInstance();
            //通锟斤拷factory锟斤拷取SAXParser实锟斤拷
            try {
                SAXParser parser = factory.newSAXParser();
                //锟斤拷锟斤拷SAXParserHandler锟斤拷锟斤拷
                SAXParserHandler handler = new SAXParserHandler();
                parser.parse("books.xml", handler);
                System.out.println("~!~!~!共有" + handler.getBookList().size()
                        + "本书");
                for (Book book : handler.getBookList()) {
                    System.out.println(book.getId());
                    System.out.println(book.getName());
                    System.out.println(book.getAuthor());
                    System.out.println(book.getYear());
                    System.out.println(book.getPrice());
                    System.out.println(book.getLanguage());
                    System.out.println("----finish----");
                }
            } catch (ParserConfigurationException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (SAXException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
    
    public class SAXParserHandler extends DefaultHandler {
        String value = null;
        Book book = null;
        private ArrayList<Book> bookList = new ArrayList<Book>();
        public ArrayList<Book> getBookList() {
            return bookList;
        }
    
        int bookIndex = 0;
        /**
         * 用来标识解析开始
         */
        @Override
        public void startDocument() throws SAXException {
            // TODO Auto-generated method stub
            super.startDocument();
            System.out.println("SAX解析开始");
        }
        
        /**
         * 用来标识解析结束
         */
        @Override
        public void endDocument() throws SAXException {
            // TODO Auto-generated method stub
            super.endDocument();
            System.out.println("SAX解析结束");
        }
        
        /**
         * 解析xml元素
         */
        @Override
        public void startElement(String uri, String localName, String qName,
                Attributes attributes) throws SAXException {
            //调用DefaultHandler类的startElement方法
            super.startElement(uri, localName, qName, attributes);
            if (qName.equals("book")) {
                bookIndex++;
                //创建一个book对象
                book = new Book();
                //开始解析book元素的属性
                System.out.println("======================开始遍历某一本书的内容=================");
                //不知道book元素下属性的名称以及个数,如何获取属性名以及属性值
                int num = attributes.getLength();
                for(int i = 0; i < num; i++){
                    System.out.print("book元素的第" + (i + 1) +  "个属性名是:"
                            + attributes.getQName(i));
                    System.out.println("---属性值是:" + attributes.getValue(i));
                    if (attributes.getQName(i).equals("id")) {
                        book.setId(attributes.getValue(i));
                    }
                }
            }
            else if (!qName.equals("name") && !qName.equals("bookstore")) {
                System.out.print("节点名是:" + qName + "---");
            }
        }
        
        @Override
        public void endElement(String uri, String localName, String qName)
                throws SAXException {
            //调用DefaultHandler类的endElement方法
            super.endElement(uri, localName, qName);
            //判断是否针对一本书已经遍历结束
            if (qName.equals("book")) {
                bookList.add(book);
                book = null;
                System.out.println("======================结束遍历某一本书的内容=================");
            }
            else if (qName.equals("name")) {
                book.setName(value);
            }
            else if (qName.equals("author")) {
                book.setAuthor(value);
            }
            else if (qName.equals("year")) {
                book.setYear(value);
            }
            else if (qName.equals("price")) {
                book.setPrice(value);
            }
            else if (qName.equals("language")) {
                book.setLanguage(value);
            }
        }
        
        @Override
        public void characters(char[] ch, int start, int length)
                throws SAXException {
            // TODO Auto-generated method stub
            super.characters(ch, start, length);
            value = new String(ch, start, length);
            if (!value.trim().equals("")) {
                System.out.println("节点值是:" + value);
            }
        }
    }
    复制代码

     三、JDOM解析

        特征:

          1、仅使用具体类,而不使用接口。

          2、API大量使用了Collections类。

      以下是解析代码:

    复制代码
    public class JDOMTest {
        private static ArrayList<Book> booksList = new ArrayList<Book>();
        /**
         * @param args
         */
        public static void main(String[] args) {
            // 进行对books.xml文件的JDOM解析
            // 准备工作
            // 1.创建一个SAXBuilder的对象
            SAXBuilder saxBuilder = new SAXBuilder();
            InputStream in;
            try {
                // 2.创建一个输入流,将xml文件加载到输入流中
                in = new FileInputStream("src/res/books.xml");
                InputStreamReader isr = new InputStreamReader(in, "UTF-8");
                // 3.通过saxBuilder的build方法,将输入流加载到saxBuilder中
                Document document = saxBuilder.build(isr);
                // 4.通过document对象获取xml文件的根节点
                Element rootElement = document.getRootElement();
                // 5.获取根节点下的子节点的List集合
                List<Element> bookList = rootElement.getChildren();
                // 继续进行解析
                for (Element book : bookList) {
                    Book bookEntity = new Book();
                    System.out.println("======开始解析第" + (bookList.indexOf(book) + 1)
                            + "书======");
                    // 解析book的属性集合
                    List<Attribute> attrList = book.getAttributes();
                    // //知道节点下属性名称时,获取节点值
                    // book.getAttributeValue("id");
                    // 遍历attrList(针对不清楚book节点下属性的名字及数量)
                    for (Attribute attr : attrList) {
                        // 获取属性名
                        String attrName = attr.getName();
                        // 获取属性值
                        String attrValue = attr.getValue();
                        System.out.println("属性名:" + attrName + "----属性值:"
                                + attrValue);
                        if (attrName.equals("id")) {
                            bookEntity.setId(attrValue);
                        }
                    }
                    // 对book节点的子节点的节点名以及节点值的遍历
                    List<Element> bookChilds = book.getChildren();
                    for (Element child : bookChilds) {
                        System.out.println("节点名:" + child.getName() + "----节点值:"
                                + child.getValue());
                        if (child.getName().equals("name")) {
                            bookEntity.setName(child.getValue());
                        }
                        else if (child.getName().equals("author")) {
                            bookEntity.setAuthor(child.getValue());
                        }
                        else if (child.getName().equals("year")) {
                            bookEntity.setYear(child.getValue());
                        }
                        else if (child.getName().equals("price")) {
                            bookEntity.setPrice(child.getValue());
                        }
                        else if (child.getName().equals("language")) {
                            bookEntity.setLanguage(child.getValue());
                        }
                    }
                    System.out.println("======结束解析第" + (bookList.indexOf(book) + 1)
                            + "书======");
                    booksList.add(bookEntity);
                    bookEntity = null;
                    System.out.println(booksList.size());
                    System.out.println(booksList.get(0).getId());
                    System.out.println(booksList.get(0).getName());
                    
                }
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (JDOMException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    复制代码

    4、DOM4J解析

         特征:

          1、JDOM的一种智能分支,它合并了许多超出基本XML文档表示的功能。

          2、它使用接口和抽象基本类方法。

          3、具有性能优异、灵活性好、功能强大和极端易用的特点。

          4、是一个开放源码的文件

      以下是解析代码:

    复制代码
    public class DOM4JTest {
        private static ArrayList<Book> bookList = new ArrayList<Book>();
        /**
         * @param args
         */
        public static void main(String[] args) {
            // 解析books.xml文件
            // 创建SAXReader的对象reader
            SAXReader reader = new SAXReader();
            try {
                // 通过reader对象的read方法加载books.xml文件,获取docuemnt对象。
                Document document = reader.read(new File("src/res/books.xml"));
                // 通过document对象获取根节点bookstore
                Element bookStore = document.getRootElement();
                // 通过element对象的elementIterator方法获取迭代器
                Iterator it = bookStore.elementIterator();
                // 遍历迭代器,获取根节点中的信息(书籍)
                while (it.hasNext()) {
                    System.out.println("=====开始遍历某一本书=====");
                    Element book = (Element) it.next();
                    // 获取book的属性名以及 属性值
                    List<Attribute> bookAttrs = book.attributes();
                    for (Attribute attr : bookAttrs) {
                        System.out.println("属性名:" + attr.getName() + "--属性值:"
                                + attr.getValue());
                    }
                    Iterator itt = book.elementIterator();
                    while (itt.hasNext()) {
                        Element bookChild = (Element) itt.next();
                        System.out.println("节点名:" + bookChild.getName() + "--节点值:" + bookChild.getStringValue());
                    }
                    System.out.println("=====结束遍历某一本书=====");
                }
            } catch (DocumentException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
    复制代码

    Final:比较总结

      DOM4J性能最好,连Sun的JAXM也在用DOM4J。目前许多开源项目中大量采用DOM4J,例如大名鼎鼎的Hibernate也用DOM4J来读取XML配置文件。如果不考虑可移植性,那就采用DOM4J。
          JDOM和DOM在性能测试时表现不佳,在测试10M文档时内存溢出。在小文档情况下还值得考虑使用DOM和JDOM。虽然JDOM的开发者已经说明他们期望在正式发行版前专注性能问题,但是从性能观点来看,它确实没有值得推荐之处。另外,DOM仍是一个非常好的选择。DOM实现广泛应用于多种编程语言。它还是许多其它与XML相关的标准的基础,因为它正式获得W3C推荐(与基于非标准的Java模型相对),所以在某些类型的项目中可能也需要它(如在JavaScript中使用DOM)。
          SAX表现较好,这要依赖于它特定的解析方式-事件驱动。一个SAX检测即将到来的XML流,但并没有载入到内存(当然当XML流被读入时,会有部分文档暂时隐藏在内存中)。


    展开全文
  • 复数的几表示形式

    千次阅读 2018-04-03 09:00:54
    具体信息在此处首先,复数基本单位是 i=√-1,有了这个单位,复数空间中的每个数都可以表示为 a+bi的形式。其中,a 被称为“实部(real part)”,b 被称为“虚部(imaginary part)”。复数可以在复平面(complex ...

    具体信息在此处
    首先,复数基本单位是 i=√-1,有了这个单位,复数空间中的每个数都可以表示为 a+bi的形式。其中,a 被称为“实部(real part)”,b 被称为“虚部(imaginary part)”。复数可以在复平面(complex plane)上表示,复平面横纵坐标分别为实部和虚部,下图就是复数 2+3i,在复平面上的表示。

    转载于:https://blog.51cto.com/spencergra/2094051

    展开全文
  • 在某些情况下,有更多神经元的更稀疏的连接层表现更好,特别是当有大量的信息需要存储,但不需要交换时(有点类似于卷积连接层的效力,但却是随机的)。就像 ELM、ESN 和 LSM 中看到的,非常稀疏的连接系统(1% 或 2...
  • IP 地址的三表示形式

    千次阅读 2014-04-28 23:17:43
    使用TCP/IP协议进行网络应用开发的朋友首先要面对的就是对IP地址信息的处理。IP地址其实有三不同的表示格式:  1)Ascii(网络点分字符串)-  2) 网络地址(32位无符号整形,网络字节序,大头)  3)主机地址 ...
  • 四种NoSQL数据库类型

    千次阅读 2018-02-25 16:24:49
    一网打尽当下NoSQL类型、适用场景及使用公司 ...如果我们将数据以图的形式表现,那么将会非常有益于推荐的制定 不适用场景 不适合的数据模型。图数据库的适用范围很小,因为很少有操作涉及到整个图。
  • Spring MVC中的四种提交方式

    千次阅读 2017-12-21 11:06:58
    Spring MVC 支持REST风格的请求方法,GET、POST、PUT和DELETE四种请求方法分别对应了数据库中的select、insert、update、delete。
  • 一文看懂四种基本的神经网络架构

    千次阅读 2018-07-24 16:10:04
    刚刚入门神经网络,往往会对众多的神经网络架构感到困惑,神经网络看起来复杂多样,但是这么多架构无非也就是三类,前馈神经网络,循环网络,对称连接网络,本文将介绍四种常见的神经网络,分别是CNN,RNN,DBN,GAN...
  • XML解析——Java中XML的四种解析方式

    万次阅读 多人点赞 2016-12-22 13:53:49
     XML的解析方式分为四种:1、DOM解析;2、SAX解析;3、JDOM解析;4、DOM4J解析。其中前两属于基础方法,是官方提供的平台无关的解析方式;后两属于扩展方法,它们是在基础的方法上扩展出来的,只适用于java平台...
  • NoSQL的四种类型

    万次阅读 2014-08-01 18:04:42
    一网打尽当下NoSQL类型、适用场景及使用公司...如果我们将数据以图的形式表现,那么将会非常有益于推荐的制定 不适用场景 不适合的数据模型。图数据库的适用范围很小,因为很少有操作涉及到整个图。
  • WAV为微软公司(Microsoft)开发的一声音文件格式,它符合RIFF(Resource Interchange File Format)文件规范,用于保存Windows平台的音频信息资源,被Windows平台及其应用程序所广泛支持,该格式也支持MSADPCM,CCITT...
  • 通过这一直观形式,能够让普通大众快速接受企业所想表达的深层含义,同时也便于对数据进行深度的挖掘和分析结果的表达呈现,空间表达较图表、文字等其它表达方式除了直观,易于理解外,也能够将海量数据的效果进行...
  • 因为三颜色都有256个亮度水平级,所以三色彩叠加就形成1670万颜色了。也就是真彩色,通过它们足以在现绚丽的世界。在RGB模式中,由红、绿、蓝相叠加可以产生其它颜色,因此该模式也叫加色模式。所有显示器、...
  • NoSql的四种数据类型和各自的优缺点

    千次阅读 2018-09-19 21:24:10
    基本上只关注过key-value,其他的看过,没过脑子,所以今天特意找到四种不同的数据类型的优缺点和使用场景。 -----------------------------------废话不多说,来吧---------------------------------...
  • 机器数与编码 文章目录机器数与编码计算机&...计算机内数据和指令都是由晶体管和门电路等元件完成的,对于这些元件来说,开或者关是其唯一的状态,这种状态的表现就是二进制的理念。就像黑客帝国世界中
  • 转载:... XMPP(Extensible Messageing and Presence Protocol:可扩展消息与存在协议)是目前主流的四种IM(IM:instant messaging,即时消息)协议之一,其他三分别为:即时信息和空间
  • UML中类图的四种关系及其代码实现

    千次阅读 热门讨论 2014-09-29 17:35:40
    在uml的学习中最重要的就是类之间的关系,以及如何实现,在本文将详细的为你介绍这几关系,并说明他们是如何代码中实现的。看完不问以后你就会队UML中的类图的组合有进一步的了解,在你学习设计模式,或者看别人给...
  • OpenGL光照模型--四种光照效果

    千次阅读 2016-04-16 20:37:01
    OpenGL 光照模型中最终的光照效果可以分为个组成部分:Emitted(光源), ambient(环境光),diffuse(漫射光)和specular(镜面反射光),最终结果由这四种光叠加而成。 Emitted : 一般只发光物体或者光源,...
  • 1、数据清洗的方法 1、缺失值处理:对存在缺失的数据进行插补 2、异常值处理:对数据集中存在的不合理值进行处理 3、数据转换:将数据从一种表现形式转换成另一种表现形式 2、数据清洗的工具 1、Mapreduce(Hadoop)...
  • 弹窗分为模态弹窗和非模态弹窗两,两者的区别在于需不需要用户对其进行回应。模态弹窗会打断用户的正常操作,要求用户必须对其进行回应,否则不能继续其它操作行为;非模态弹窗则不会影响用户的操作,用户可以不对...
  • 看完这一本书之后,在设计方面感觉收获很多,对于网页前端也有一定的帮助,这一本书关系到响应式的设计,特别对于大屏幕设计有很多技巧,这一...第二部:分块,根据物体内部的形态对网页的信息内容进行规划布局。 第
  • [转]信息安全相关理论题()

    万次阅读 2019-02-18 15:53:33
    20、DoD(美国国防部)使用的层分级制和权限空间不包含哪一项? A、 绝密级 B、 隐私级 C、 秘密级 D、 机密级 您的答案: 标准答案: B 21、BLP模型中的“不上读,不下写”保证了数据的什么特性? A...
  • 数据湖听起来很简单:把数据或信息汇集到一个结合处理速度和存储空间的大数据系统――Hadoop集群或内存解决方案,那样业务部门就能访问数据,获取新的洞察力。不过,与IT行业的许多技术一样,现实比梦想困难得多。 ...
  • 信息系统分析与设计课程心得

    万次阅读 2017-02-28 13:41:39
    信息系统分析与设计课程心得此博客为信息系统分析与设计课程的学习心得记录。一、绪论1概念1.1信息要了解信息系统,首先要了解信息的概念。信息是我们理解世界的重要概念,我对它的定义是:信息是对客观事物及其相互...
  • opencv读取通道图像

    千次阅读 2020-08-10 17:30:02
    用opencv读取图像,默认情况下是读取BGR三通道,...用cv2.imshow()的方法进行显示的时候,通道图像有两种表现形式: ①、r,g,b是图像的亮度信息,alpha通道是掩膜信息 ②、r,g,b亮度全为0或者某一固定的亮度值,alp
  • java提高篇()-----抽象类与接口

    万次阅读 多人点赞 2013-10-18 21:04:13
    接口和内部类为我们提供了一将接口与实现分离的更加结构化的方法。  抽象类与接口是java语言中对抽象概念进行定义的两机制,正是由于他们的存在才赋予java强大的面向对象的能力。他们两者之间对抽象概念的支持...
  • 不知为不知--信息论和最大熵原则

    万次阅读 多人点赞 2018-01-01 08:44:04
      大学通信课学的那些排队论,信息论这些,在很多人看来也是索然无味,却再也没有人去为之付出了,为什么?因为大多数公司的面试题中都不会把这些包含在考查范围内。  2018年第一天,写一篇随笔吧,就想写一个...
  • 一般来说,信息法由信息资源管理法、政府信息公开法、信息保密法、大众传播法、知识产权法、网络信息法等组成,涉及宪法、法律、行政法规、部门规章、地方行政和规章在内的所有关于信息活动和信息工作的法律法规。...
  • 沟通管理作为项目管理核心知识领域之一...沟通管理涉及的范围很广,本文从沟通的重要性和模型出发,主要从信息传递(维度、模式、媒介、干系人、场景分析)和信息维护(工具平台、实践)这两个方面对沟通管理进行阐述。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 159,234
精华内容 63,693
关键字:

信息的四种表现形式