四种常用排序方法的基本思想和PHP实现源代码

Shutdown-48x48 插入排序(Insertion Sort),选择排序(Selection Sort),冒泡排序和快速排序是我们经常会用到的排序算法。下面是这几种算法的基本思想和相对应的PHP实现代码。

Continue reading “四种常用排序方法的基本思想和PHP实现源代码”

汉诺塔算法的递归与非递归的C以及C++源代码

brontosaurus-48x48 汉诺塔(又称河内塔)问题其实是印度的一个古老的传说。

开天辟地的神勃拉玛(和中国的盘古差不多的神吧)在一个庙里留下了三根金刚石的棒,第一根上面套着64个圆的金片,最大的一个在底下,其余一个比一个小,依次叠上去,庙里的众僧不倦地把它们一个个地从这根棒搬到另一根棒上,规定可利用中间的一根棒作为帮助,但每次只能搬一个,而且大的不能放在小的上面。计算结果非常恐怖(移动圆片的次数)18446744073709551615,众僧们即便是耗尽毕生精力也不可能完成金片的移动了。

Continue reading “汉诺塔算法的递归与非递归的C以及C++源代码”

DES加密标准的说明以及加密/解密函数的实现源代码

BigEyes-Creature-48x48下面是来自维基的关于DES的说明: 数据加密标准( DES )是一种加密演算法(一种加密信息的方法), 1976年被美国联邦政府的联邦信息处理标准(FIPS)所选中,随后既在国际上广泛流传开来。这个演算法因为包含一些机密设计元素,相关的短密钥长度以及被怀疑内含国家安全局(NSA)的后门而在开始是有争议的,DES因此收到强烈的学院派式的审查,并以此推动了现代的分组密码及其密码分析。这个演算法因为包含一些机密设计元素,相关的短密钥长度以及被怀疑内含国家安全局(NSA)的后门而在开始是有争议的,DES因此收到强烈的学院派式的审查,并以此推动了现代的分组密码及其密码分析。

Continue reading “DES加密标准的说明以及加密/解密函数的实现源代码”

Stein算法的简单描述以及C++/Java的三种实现源代码

blue-creature-48x48欧几里德算法的简单描述以及C++与Java的各自实现代码中介绍的欧几里德算法是计算两个数最大公约数的传统算法,无论从理论还是从实际效率上都是很好的。但是却有一个致命的缺陷,这个缺陷在素数比较小的时候一般是感觉不到的,只有在大素数时才会显现出来。
一般实际应用中的整数很少会超过64位(当然现在已经允许128位了),对于这样的整数,计算两个数之间的模是很简单的。对于字长为32位的平台,计算两个不超过32位的整数的模,只需要一个指令周期,而计算64位以下的整数模,也不过几个周期而已。但是对于更大的素数,这样的计算过程就不得不由用户来设计,为了计算两个超过 64位的整数的模,用户也许不得不采用类似于多位数除法手算过程中的试商法,这个过程不但复杂,而且消耗了很多CPU时间。对于现代密码算法,要求计算 128位以上的素数的情况比比皆是,设计这样的程序迫切希望能够抛弃除法和取模。

Continue reading “Stein算法的简单描述以及C++/Java的三种实现源代码”

欧几里德算法的简单描述以及C++与Java的各自实现(源代码)

I-Love-Autumn-48x48 欧几里德算法描述:
欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数。其计算原理依赖于下面的定理:
定理:gcd(a,b) = gcd(b,a mod b)
证明:a可以表示成a = kb + r,则r = a mod b
假设d是a,b的一个公约数,则有d|a, d|b,而r = a – kb,因此d|r ,因此d是(b,a mod b)的公约数
假设d 是(b,a mod b)的公约数,则d | b , d |r ,但是a = kb +r ,因此d也是(a,b)的公约数
因此(a,b)和(b,a mod b)的公约数是一样的,其最大公约数也必然相等,得证

Continue reading “欧几里德算法的简单描述以及C++与Java的各自实现(源代码)”

约瑟夫环问题(Josephus)的两种解法(源代码)

Urban-MSN-1-icon 算法描述: 有编号从1到N的N个人坐成一圈报数,报到M的人出局,下一位再从1开始, 如此持续,直止剩下一位为止,报告此人的编号X。输入N,M,求出X。下面给出两种解法,前面的是比较常规的解法,比较适合“名门正派”,而后面一种则非常巧妙……

Continue reading “约瑟夫环问题(Josephus)的两种解法(源代码)”

几种经典的Hash算法的实现(源代码)

System-Calc-48x48 哈希算法将任意长度的二进制值映射为固定长度的较小二进制值,这个小的二进制值称为哈希值。哈希值是一段数据唯一且极其紧凑的数值表示形式。如果散列一段明文而且哪怕只更改该段落的一个字母,随后的哈希都将产生不同的值。要找到散列为同一个值的两个不同的输入,在计算上是不可能的,所以数据的哈希值可以检验数据的完整性。

Continue reading “几种经典的Hash算法的实现(源代码)”

.htaccess使用方法总结

System-Game-Controllers-48x48利用.htaccess的Rewrite规则实现Discuz论坛的伪静态链接中已经提到过了.htaccess的重定向的使用,这里让我们来比较全面的了解一下.htaccess吧。.htaccess是Apache服务器的一个非常强大的分布式配置文件。正确的理解和使用.htaccess文件,可以帮助我们优化自己的服务器或者虚拟主机。比如可以利用.htaccess文件创建自定义的“404 error”页面,更改很多服务器的配置。而我们所需要做的,仅仅是在这个文本文档中添加几条简单的指令而已。

Continue reading “.htaccess使用方法总结”

系统进程lsass.exe和病毒进程LSASS.EXE

executable-48x48 由于前段时间多种木马程序光临了我的电脑,所以最近会时不时的打开任务管理器察看一下,看看是否有什么奇怪的东西“不请自来”,结果一个lsass.exe的进程引起了我的注意。

Continue reading “系统进程lsass.exe和病毒进程LSASS.EXE”

Pet Gift Baskets for Dogs and Cats, and even Owner

Gift-Box-48x48 Do you have a dog or cat as your pet? It is normally the people around you have a pet. Even most of these lovely animal is a necessary or important member of these families. So it is not rarely if give the gift to the Pets.

Continue reading “Pet Gift Baskets for Dogs and Cats, and even Owner”

IE下载Office2007文件时在下载对话框中变成ZIP文件问题的解决

Office-48x48 从IIS或者Tomcat之类的Web服务器通过二进制流下载文件时(比如通过设置Header为Content-disposition:inline),如果被下载的文件是Office2007的dotx,docx,pot等后缀的时候,下载对话框中的图标会变成ZIP的,相应的文件名也会成为zip为扩展后缀的文件。其实出现这样的情况,是由于IE中对下载文件类型的判断,假如找不到相应后缀的MIME的话,会自动根据数据流来判断文件的类型,而微软对Office2007的格式做了和以前完全不同的处理。

Continue reading “IE下载Office2007文件时在下载对话框中变成ZIP文件问题的解决”

Response的sendRedirect实现JSF内的URL重定向

folder-green-parent-48x48 JavaServer Face(JSF)内置了HttpServletResponse,所以不可以直接在JSF的Bean内使用sendRedirect之类的重定向函数。花了N多的时间查资料,发现误导性的文章比较多,为了有同样需要的人少浪费点时间在这身上,这里把测试通过的方法记录一下:

Continue reading “Response的sendRedirect实现JSF内的URL重定向”

Dwing写的471字节俄罗斯方块(teris)汇编程序源代码

System-Games-1-48x48 记得自己最早玩的一款游戏就是俄罗斯方块,那种拿在手上黑白的机器,整部机器上只有这么一个游戏。不像现在可以有成百上千个。不过当时就一直好奇,这个游戏为什么叫做“俄罗斯”方块……后来才知道俄罗斯方块的发明者,是当时还被称为”苏联”的联邦科学员阿莱克斯・帕吉托夫(Alexey Pazhitnov ),最后该游戏的代理权最终还是被任天堂获得,将它与GB搭配在一起后,产生了令人意想不到的效果,获得了巨大的成功。

到了今天俄罗斯方块的原理差不多已经到了“世人皆知”的地步了(对不起,夸张了点),不过很多计算机专业或者对此有兴趣的爱好者,都自己动手写过这个游戏,Dwing,不少用汇编的人都知道这个名字,是一个汇编牛人,他写了一个编译后仅仅471字节的俄罗斯方块,可谓经典之作。该程序发布在Dwing的主页上,不过好像嵌入了一点我觉的“不友好”的代码,所以在这里不给出这个外部链接了。有兴趣的可以自己Google一下Dwing,很容易找到的。下面是这个经典的471字节俄罗斯方块汇编程序源代码及详细注释:

Continue reading “Dwing写的471字节俄罗斯方块(teris)汇编程序源代码”