Lexsion 发布的文章

异或的性质与应用

异或的性质与应用


 &#8195今天有朋友问我异或最重要的性质是什么,一时只记得以前有老师讲过,于是上网查了一下,并整理如下。

定义

&#8195&#8195异或是一种基于二进制的位运算,用符号XOR或者 ^ 来表示。其运算法则是对运算符两侧的数的每一位二进制位,相同结果为0,不同结果为1。它与或运算的区别在于,当运算符两侧均为1时,或运算结果为1,而异或运算结果为0。
  异或运算又称之为 半加 ,半加的概念就是不进位的加法;数学上称异或为 按位模2加 ,按位模2加就是按位进行两数相加后除以2取余的运算。

  半加运算是不考虑进位的,也就是说它的进位会被舍弃。很显然它的运算法则如下:
0+1=0 0+1=1 1+0=1 1+1=0
  模2运算是一种二进制算法,与四则运算相同。模2运算包含模2加,模2减,模2乘,模2除四种运算。比如模2加,按其定义,1与0模2加,其结果就是1+0 = 1,然后1/2为0余1, 所以1与0模2运算结果为1;再如,1与1模2加,其结果1+1 = 10=2(D),2/2结果为1余0,所以1与1模2加运算结果为0。以此类推,按位模2加的运算结果与半加运算是相同的。

性质

  1、 交换律
  2、 结合律(即(A^B)^C=A^(B^C))
  3、 对于任何数X,都有X^X = 0,X^0 = X
  4、 自反性 A^B^B = A^0 = A

  异或运算常见于多项式除法,但它最重要的性质是自反性,即A^B^B = A。即对于既定的数A,用同样的运算因子(B)与其做两次异或运算后得到的结果仍是A本身。这是一个神奇的性质,利用这个性质可以解决一些实际问题。例如:几乎所有的C语言教科书都会向初学者提出,要交换两个变量的值,必须引入一个中间变量。但我们知道异或后,我们有了一种新的办法,这种办法可以不使用中间变量。设有A,B两个变量,存储的值分别为a,b,则以下三行表达式可互换他们的值:
A = A^B // (A = a^b)
B = B^A // ( B = b^ (a^b) == a^b^b == a)
A = A^B // ( A = (a^b)^ a == b^a^a == b)
类似的,该运算还可应用于加密,数据传输,校验等许多领域。

应用举例

设1~1000放在含有1001个元素的数组中,只有唯一的一个元素值重复,其它数只出现一次;设计算法,将这个数找出来,要求每个元素只能访问一次,不能使用辅助变量。

解法一:

  显然已经有人提出了一个比较精彩的解法,将所有数加起来,减去1+2+...+1000的和。这个算法已经足够完美了,相信出题者的标准答案也就是这个算法,唯一的问题是,如果数列过大,则可能会导致溢出。

解法二:

  异或就没有这个问题,并且性能更好。
  将所有的数全部异或,得到的结果与1^2^3^...^1000的结果进行异或,最终得到的结果就是重复的数。

  这个算法虽然看起来简单,但证明起来并不是一件容易的事情。这与异或运算的几个特性有关:
  首先是异或运算满足交换律、结合律。所以,1^2^...^n^...^n^...^1000,无论这两个n出现在什么位置,都可以转换成为1^2^...^1000^(n^n)的形式。
  其次,对于任何数x,都有x^x=0,x^0=x。

所以:
  1^2^...^n^...^n^...^1000 = 1^2^...^1000^(n^n)= 1^2^...^1000^0 = 1^2^...^1000(即序列中除了n的所有数的异或)。

  设,1^2^...^1000(该序列中不包含n)的结果为T
  则,1^2^...^1000(该序列中包含n)的结果就是T^n
  T^(T^n)=n
所以,将所有元素的值全部异或,得到的结果再与1^2^3^...^1000的结果进行异或,得到的结果就是重复数。

本文部分内容参考网络

DOS指令Attrib的使用方法

DOS指令Attrib的使用方法

之前写过一篇关于U盘中隐藏文件病毒后处理的教程,其中提到了attrib命令,U盘中的文件被病毒设置了系统隐藏之后,使用attrib –s –h /s /d命令将U盘根目录中的文件的系统隐藏属性全部去除。本文介绍该命令的其他用法。

attrib指令用于修改文件的属性。文件的常见属性有:只读、存档、隐藏和系统。

只读属性是指文件只可以做读的操作,不能对文件进行写的操作,就是文件的写保护。存档属性是用来标记文件改动的,即在上一次备份后文件有所改动。一些备份软件在备份的时候会只去备份带有存档属性的文件。隐藏属性顾名思义即为隐藏文件。在通常情况下,在资源管理器中不显示带有隐藏属性的文件。系统属性是指标注文件为系统文件,是系统需要调用的文件,系统属性包括隐藏和只读属性,在WINDOWS GUI(图形用户界面)模式下不能更改文件的系统属性。

attrib指令的格式和常用参数为:

ATTRIB [+R | -R] [+A | -A ] [+S | -S] [+H | -H] [[drive:] [path] filename] [/S [/D]]

+ 设置属性。

– 清除属性。

R 只读文件属性。

A 存档文件属性。

S 系统文件属性。

H 隐藏文件属性。

I 无内容索引文件属性。


[drive:][path][filename]

指定要处理的文件属性。

格式为:盘符:\文件夹\下层文件夹。。。\文件名.后缀名 ,还不明白看后面例子

/S 处理当前文件夹及其子文件夹中的匹配文件。

/D 处理文件夹。

/L 处理符号链接和符号链接目标的属性。


举两个例子:

1:我要将U盘(盘符G:)根目录一个名为IMG.zip的文件添加只读、系统、隐藏属性。

image1.jpg


按windows徽标键+R 打开运行,输入CMD,确定,打开命令提示符
image2.jpg


确保输入法处于英文状态,输入attrib +R +S +H G:\IMG.zip 回车
image3.jpg


U盘中的IMG.zip已经不见了。
image4.jpg


我们看一下文件的属性,只读属性和系统 隐藏已经被添加了。
image5.jpg


2:下面的例子,将U盘(盘符G:)根目录的IMG文件夹设置系统 隐藏属性。

image6.jpg


参照上例打开命令提示符,输入attrib +S +H G:\IMG /S /D
image7.jpg


可以看见,文件不见了。
image8.jpg


如下图所示,文件夹已添加了系统 隐藏属性。
image9.jpg



相信通过以上例程,大家应该对这个命令如何使用有了一定的了解了。

在VMware Workstation虚拟机中安装Windows7

虚拟机系统安装
点击 编辑虚拟机设置>硬件>CD/DVD(SATA),选择使用ISO镜像文件,点击浏览,选定要使用的光盘镜像。点击确定关闭设置窗口。
(相关镜像可以在MSDN I tell You找到)
image1.jpg


点击开启此虚拟机,
image2.jpg



若提示此窗口,点击确定即可
image3.jpg


虚拟机开始加载windows预安装,到出现此页面,如图设置,点击下一步,
image4.jpg


点击 现在安装(I),稍后出现请阅读许可条款
image5.jpg


选择我接收许可条款,点击下一步;
image6.jpg

以下页面选择 自定义(高级)下一步;
image7.jpg


选择驱动器选项(高级)
image8.jpg


点选磁盘0未分配空间,点击新建>应用,弹出的窗口中选择确定。点击下一步开始Windows7系统的安装。
image9.jpg


等待。。该阶段结束后会自动重启
image10.jpg


image11.jpg



待出现以下页面时,设置用户名和计算机名。点击下一步;
image12.jpg


你可以在本页设置密码。本例留空。点击下一步;
image13.jpg


下一页输入激活码,此处留空。点击跳过
image14.jpg


下一页为安全设置页,自行设置即可,我选择以后询问我。
image15.jpg


下一步设置时间,直接点击继续即可。
设置网路,按需求,设置,我此处选择工作网路点击下一步,提示windows正在完成设置。
image16.jpg


稍后系统设置完毕,进入桌面。
image17.jpg


接下来点击虚拟机>安装VMware Tools
image18.jpg


在虚拟机里打开资源管理器,你会看到一个图标为VM的移动存储设备
双击开始安装,弹出用户账户控制窗口选择是,开始安装。安装过程一路点击下一步即可。最后完成安装。
image19.jpg


然后提示需要重新启动,点击是重新启动虚拟机。
image20.jpg


重启完成后点击查看>立即适应客户机。系统就会正常全屏显示。
image21.jpg


已经正常显示。
image22.PNG

VMware Workstation虚拟机文件的创建

打开VMware Workstation,选择文件>新建虚拟机;
image1 (1).jpg



选择自定义(高级),点击下一步,
image1 (2).jpg


硬件兼容性默认即可,点击下一步;
image1 (3).jpg


选择稍后安装操作系统,点击下一步;
image1 (4).jpg


在该页选择你要安装的操作系统,本例我们选择Microsoft Windows7(X64),点击下一步;
image1 (5).jpg


接下来我们需要选择要创建的虚拟机的名称,按照自己的想法设置,应该通俗易懂。点击下一步;
image1 (6).jpg


下面的页面我们设置引导方式,有BIOS和UEFI两种模式,一般Windows7及以前版本的系统选择BIOS,Windows8及以后的系统选择UEFI。在此选择BIOS,点击下一步;
image1 (7).jpg


接下来的页面中我们设置虚拟机的处理器信息,根据自己的需要设置即可,在此我设置为一个处理器,每个处理器四个核心。点击下一步;
image1 (8).jpg



接下来设置虚拟内存,需要参考自己的需求与自己计算机的实际内存设置最好不要超过自己实际物理内存的一半。在此我设置为我物理内存的一半。点击下一步;
image1 (9).jpg



下面设置网络模式,根据自己的需求设置,在此我设置为NAT。点击下一步;
image1 (10).jpg

接下来的I/O控制器和虚拟磁盘类型选择默认即可。



接下来是选择磁盘,选择创建新虚拟磁盘。点击下一步;
image1 (11).jpg



接下来设置磁盘的大小,一般我们按照需求设置硬盘的大小,不选择立即分配所有磁盘空间,将磁盘空间存储为单个文件。
image1 (12).jpg



下面我们设置虚拟磁盘的名称。我保持默认。下一步;
image1 (13).jpg



点击自定义硬件,打开硬件设置窗口;点击USB控制器项,取消勾选与虚拟机共享蓝牙设备,因为部分机器共享蓝牙设备可能会导致蓝牙不可用。完成设置后点击关闭;
image1 (14).jpg



点击完成,完成虚拟机的创建。
image1 (15).jpg

杀毒教程:去掉文件的隐藏属性

今天晚上我有一位同学的U盘插入电脑后杀毒软件报毒,打开U盘目录查看,发现所有文件属性都被设置为系统隐藏,并且多了一些快捷方式,这些快捷方式与U盘原有的文件夹、文件同名,快捷方式指向一个个病毒文件,他们分别存在于各个文件夹里。

截至发布,断定该U盘中毒,病毒为我校内部一个蠕虫病毒,现在已经确定,我校弧形楼三楼电子教室的部分电脑,阶梯教室1的多媒体讲台,皆有感染此病毒。

感染本病毒后如果你使用的电脑杀毒软件较差,且电脑的资源管理器设置为系统默认设置。这时你无法发现自己感染病毒。快捷方式会伪装成原来的文件。

这时你需要打开资源管理器,点击查看标签;
image1.jpg


点击选项上面那一块图标(就是更改文件夹和搜索选项);
image2.jpg


在打开的页面中选择查看选项卡,去掉 隐藏受保护的操作系统文件 选项的勾选,此时会出现一个警告,选择是即可。
image3.jpg


选择 显示隐藏的文件、文件夹和驱动器选项,去掉隐藏已知文件的扩展名选项。
image4.jpg

最终如上图所示,点击确定保存设置。

这时打开U盘,如果能看到以前的文件和文件夹以半透明显示,如果你电脑杀软没有杀掉病毒,还能看到与文件夹同名的实际只是快捷方式。即证明文件是被病毒隐藏了。可以用以下办法恢复文件。

首先手动把快捷方式文件删除,然后按windows徽标键+R 打开运行,输入CMD,确定,打开命令提示符;
image5.jpg


确保输入法处于英文状态,输入你的盘符,(例如你的U盘盘符为G,就输入“G:”)然后回车
image6.jpg


在U盘盘符下输入“attrib –s –h /s /d”,注意空格,然后回车等待再次出现G:>时即表示操作已经完成。
image7.jpg


关闭命令提示符回到U盘根目录下,发现原来文件的半透明图标已经变成了不透明的。这时U盘中文件恢复完成。然后不要忘了把病毒快捷方式删除。


Lexsion原创文章,转载请注明出处:
Qzone:https://user.qzone.qq.com/168243371/

世界三大杀软测试机构:取消奇虎360所有认证

今日,世界上三大最著名权威杀毒软件测试机构AV-Comparatives,AV-TEST,和 Virus Bulletin联合公开谴责了中国安全厂商奇虎360,原因是360送给机构的测试产品和实际发放用户使用的产品表现出了显著不同的行为。三家测试机构宣布将撤销奇虎360产品今年以来获得的所有认证和评级,且会在今后的测试中坚持公开公平地对待参测厂商,保证用户收到的是最准确的信息。

三大评测机构的调查结果标明,奇虎在送测的所有产品中都默认开启了Bitdefender引擎,但奇虎自家的QVM引擎却从来没还有被开启,而该版本的软件发布在了其官网上一个看似公开的页面上。相反,在奇虎360的主要市场区域里,默认的设置都是Bitdefender关闭而QVM引擎开启,经过测试后,这样会显著降低防护级别,并显著增加误报率,在产品中有选项可以调整这些设置,但大多数普通用户不会在意。测试机构在测试时反复强调要是用产品的默认设置,这样才能客观反映真实使用情况。

在测试公司调查奇虎360的时候,该公司反过来指责另外两家中国安全厂商,百度和腾讯。通过对这两家公司的产品进行分析表明,其中含有一些特殊的标记,包括几家测试机构的名字,可能暗示了这些产品会根据环境的不同而表现出不同的产品行为。——但奇虎的产品中同样有类似的标记。然而,没有证据表明这给予这两家产品任何不正当的显著优势,有时候甚至会让它们处于劣势。两家公司都可以提供在产品中包含这些标记的正当理由。

在要求奇虎360提供对他们行为的解释时,该厂商承认了参测产品的某些设置经过人为修改,包括开启对注册机和破解软件的检测,以及将云查询重定向到距离测试机构较近的服务器。在反复要求其提供第三方引擎的具体信息后,他们最终承认了参测的引擎设置和用户使用的引擎设置是不同的。

奇虎从2015年以来拿到的所有奖项和认证因此将被三家测评机构取消,并且今后将对参测厂商作出更严格的要求,以防今后再有厂商作弊的行为发生。

Virus Bulletin 首席运营官 John Hawes 说。“这种事情对谁都没有好处。独立测试同时为用户和厂商服务,展现哪些产品表现最好,哪些方面厂商还需努力。如果送测产品和真实世界使用的产品不一样,那就不能提供任何有用的信息了。”

AV-Comparatives 首席执行官 Andreas Clementi 说:“独立的反病毒软件测试在提高用户设备的防护水平方面很重要,也能将整个互联网的安全性提高,受益的是所有人。如果纯粹把测试成绩用于市场宣传,最终就会导致恶意软件更加容易传播,用户更加不安全。”

AV-TEST 首席执行官 Maik Morgenstern 说:“有比较的测试和认证对反病毒行业的用户和厂商都很重要。用户依赖独立测试结果理性选择防护软件。如果厂商在测试中作弊,这会伤害到所有人。”


声明原文点此查看