一个排序算法比较的网站
下面这个网站是一个非常丰富的排序算法的网站。
Sorting Algorithm Animationshttp://www.sorting-algorithms.com/
这是一个非常不错的排序算法的网站,当你打开这个网站的时候,请不要因为看到很多个图片的大红叉而鄙视它。你先点击网页上方的Problem Size,选择一个尺寸,20,30,40还是50,都行,于是你就可以看到下面整个大表中有图片显示出来了。如下所示:
其中,
列。是代表每一个排序算法,有“插入”“选择”“冒泡”“Shell”,“合并Merge”,“堆排序”,“快速排序”,“快速3排序”。单击每个一算法的链接,你可以看到这个算法的详细解释,其中包括,算法的伪代码,算法的复杂度,相关的讨论,重点,以及该算法的相关参考文档。
行。是不同的数据样本,第一个是“随机样本”,第二个是“几乎排好序的样本”,第三个是“最差的样本(反序)”,第四个是“有一些相同项的样本”。这些样本在不同的算法上都会有不同的表现。
单元格。每个单元格都是一个图片。简单的用鼠标单击一下每个图片,可以动画地演示算法整个过程。其中两个小红箭头表示 ...
十大史上最恶心的操作系统
Computer World上有人评出了有史以来十大臭名照著的操作系统,我们来看看倒底有那些,顺便也回顾一下操作系统的历史。下面的顺序通过时间顺序由古至今。
目录
OS/360, 1964
ITS(Incompatible Timesharing System), 60年代后期
GNU Hurd, 1983启动,至今也没有完成
Windows 1.01, 1985
MS-DOS 4.0, 1988
SCO Open Desktop, 1989
JavaOS, 1996
Windows Me (Millennium Edition千禧版), 2000
Lindows/Linux XP Desktop, 2001/2006
Windows Vista, 2006
OS/360, 1964
这里,说的不是后面新版的OS/360,这里说的是60年代未70年代初的第一版的OS/360。当时的Project Manager,Fred Brooks, 《人月神话》 The Mythical Man-Mo ...
笔记本电脑的发展史
这是一段比较有趣的历史,让我们回顾一下笔记本电脑的整个历史吧。可能叫便携式电脑比较好一点。
1970 – 1981 第一个便携式的电脑概念
上世纪70年代,Alan Kay 在 Xerox PARC开始有了便携式个人电脑的想法。到了1981年, Osborne 1问世,其由Adam Osborne创造。如下图。Osborne 1 有一个5英寸的屏幕,还有一个可选的电池,两个5 ¼” 软驱,一个 modem 接口,还有一个键盘。当时的价格是$1,800(包括一块电池)。
1981 – 1984 : Gavilan 和 IBM
没有多久Gavilan Mobile Computer公司也进入了这个行业。其第一个便携式电脑的原型和今天的笔记本电脑非常相似,而且只有4公斤重并且配备了一个可以运行9个小时的镍镉电池。无论是从性能还是设计上来说,在1983年,这已经是非常超前的。而且这是 Galvin 第一次向市场引入了“移动PC”的术语。
Osborne 1的出现后, 微软公司的Kazuhiko Nishi 开始了一个便携式电脑的原型,其采用了LCD显示屏,重量2 ...
RFC1 40岁生日
昨天(2009年4月7日)是RFC 1的40岁生日。注意,这不是KFC,而是RFC。;-)
1969年的今天,我们有一第一个RFC(http://www.faqs.org/rfcs/rfc1.html)。这成为了以后整个Internet的基础。
所谓RFC,全称为Request For Comments ,是一系列以编号排定的文件。文件收集了有关互联网相关资讯,以及UNIX和互联网社群的软件文件。目前RFC文件是由Internet Society(ISOC)所赞助发行。
RFC包含了关于Internet的几乎所有重要的文字资料。如果你想成为网络方面的专家,那么RFC无疑是最重要也是最经常需要用到的资料之一,所以RFC享有网络知识圣经之美誉。通常,当某家机构或团体开发出了一套标准或提出对某种标准的设想,想要征询外界的意见时,就会在Internet上发放一份RFC,对这一问题感兴趣的人可以阅读该RFC并提出自己的意见;绝大部分网络标准的制定都是以RFC的形式开始,经过大量的论证和修改过程,由主要的标准化组织所制定的,但在RFC中所收录的文件并不都是正在使用或为大家所公认的,也有很大一部分 ...
35个强大的UI设计教程
下面是35个非常不错的UI设计的的教程及效果图,非常不错哦。不但教你如何做一些特效,同样教你如何做UI布局和界面设计。当然,他们风格迥异,也基本上都是Web页面上的。都非常不错。希望你喜欢。(点击下面的图片可以打开相关的教程)
Old Paper Layout
Professional Modern Web Layout
Photography portfolio Design
Professional header design for your website
Glossy-Style Carbon Fibre Navigation Buttons
Photoshop Paper Texture from Scratch then Create a Grungy Web Design with it!
Volkswagen Inspired Navigation
Creating A Glossy 3D Button
Royal Interface – Design Tutorial
Design Watercolor Effect Menu
Tutzor web 2.0 st ...
Linux C 编程一站式学习
个人认为这是一个挺不错的从C语言到Linux系统开发的教程,这本是两个网上的文档。
其中 一本是《How To Think Like A Computer Scientist: Learning with C++ 》作者Allen B. Downey。原书由Green Tea Press发行,可以从http://www.greenteapress.com/下载到。
另一本是:《Programming from the Ground Up: An Introduction to Programming using Linux Assembly Language》作者Jonathan Bartlett。原书由Bartlett Publishing发行,可以从http://savannah.nongnu.org/projects/pgubook/下载到。
不过非常高兴的是有要把这两个文档都翻译成了中文。当然,翻译工作还没有完全完成,第三部分还很粗糙,错误也有不少,有待改进。第一部分和第二部分已经比较成熟,第二部分还差三章没写。不过现在可以阅读了。
下面是这个文档的网站链接:
htt ...
20本最好的Linux免费书籍
前些天Neo推荐了一个网站有《超过100本的linux免费书籍》,这里,我也向大家推荐20本最好的Linux免费书籍,当然,也是英文版的。
1. Ubuntu Pocket Guide and Reference
一本介绍关于Ubuntu 8.04和8.10的使用书。
Website
www.ubuntupocketguide.com
Author
Keir Thomas
Format
PDF
Pages
152
2. Two Bits
一本关于自由软件的历史和文化的书。不当当是软件,同样也有音乐,电影,科学和教育。
Website
twobits.net
Author
Christopher M. Kelty
Format
PDF
Pages
400
3. The Linux Starter Pack
一本完整的介绍如何使用Linux的书。可以让你从入门级提高到 ...
程序员的八个级别
在面试时,你可能会被经常问到“在未来5年,你想干什么?”,这可能是一个比较难回答的问题。在中国,答案一般可能会是Team leader,Manager,或是Architect,Specialist等,在中国,大家可能更多地觉得manager会是程序员的下一个目标,可是在国外,经理和程序员可能是两个不同的分支,Architect或Specialist 比经理来说更牛、代遇可能也更好,因为这些人的智商需要的更高。
在著名的“Coding Horror”上出现了这样一篇文章,我把其转到这里(我并没有完全一模一样的翻译,我只不过是用自己的话转述罢了),也让大家看看国外人的思考方式(当然,这篇文章只是分析程序员的级别而不是工种)。正如其作者结尾时所说,这八个级别并不是很严格的,其只不过是一种想法,希望能给大家另一种思路。
第八级 不朽的程序员
这一级别是程序员的最高级别。你的代码比你的生命活的还长,当你死后,你将会成为整个历史的一部分。其它程序员对你顶礼膜拜,或许你会获得计算机最高奖“图灵奖”,不然就是一系列极其影响力的论文,再不然,就是发明了一些可以影影响整个编程界根基的技术。你拥有的不仅 ...
惹恼程序员的十件事
程序员应该是一个比较特殊的群体,他们因为长期和电脑打交道所养成的性格和脾气也是比较相近的。当然,既然是人,当然是会有性格的,也是会有脾气的。下面,让我来看看十件能把程序惹毛了的事情。一方面我们可以看看程序员的共性,另一方面我们也可以看看程序员的缺点。无论怎么样,我都希望他们对你的日常工作都是一种帮助。
第十位 程序注释
程序注释本来是一些比较好的习惯,当程序员老手带新手的时候,总是会告诉新手,一定要写程序注释。于是,新手们当然会听从老手的吩咐。只不过,他们可能对程序注释有些误解,于是,我们经常在程序中看到一些如下的注释:
r = n/2; //r是n的一半
//循环,仅当r- n/r不大于t
while ((r-n/r) <=t){
… …
r = 0.5 * (r-n/r); // 设置r变量}
每当看到这样的注释——只注释是什么,而不注释为什么,相信你一定会被惹火,这是谁写的程序注 ...
超过100本的linux免费书籍
在上有100多本关于Linux的免费书籍,书籍涉及到多Linux编程的领域
包括
WEB开发书籍
桌面GUI开发
数据库方面的书籍
Linux安全方面
等等,还有其他众多脚本语言的开发书籍。
更多内容请查看:这里
2009年脚本语言排名
EDC(Evan Data Corporation)发布了一份脚本语言的调查报告,这个调查报告调查了500个以上的开发者和IT专家,在这份调查表中,PHP, Ruby和Python成为了前三强。这个调查总共调查了这些脚本语言:Actionscript, Flex, Javascript, Microsoft F#, Microsoft Powershell, Perl, PHP, Python, Ruby, VB Script。主要评估以下这些方面:
易用性。Ease of Use
异常处理。Exception handling
扩展性。Extensibility
可维护性和易读性。Maintainability / Readability
跨平台。Cross-platform portability
社区。Community
实用性。Availability of tools
质量。Quality of tools
性能。Performance
内存管理。Memory management
客户端脚本。Client side scripting
安全性。Security
下面是 ...
Linux的“宕机”图片
下面是几个Linux的“宕机”的图片,原文在:http://www.miguelcarrasco.net/miguelcarrasco/2006/10/linux_crash_top.html
这里,我并不想以讹传讹,因为有一些并不是真正的Crash,可能只是重启,而另一些图片根本看不清楚是否是Linux,不过,如果不是在重启,的确不应该出现这些操作系统的信息。不算怎么样,我们就姑且相信这些图片都是Linux的不是吧。Linux也会Crash这点毋庸置疑,不过,在看到这些画面的同时,同样也能让人看到Linux的应用之广泛。
下面这是一个运行着Linux的PC,看上去他死的很古怪,好像是中了病毒。
接下来的是一飞机上的Linux,我看当然可以在下面的图片中看到左上角那个很经典的小企鹅。这架飞机是空客330。
下面这个Crash的截屏可能并不是真正的Crash(似乎这个屏幕并没有完全死翘翘,只不过是收到了一个11的信号,然后整个Console就死掉了)
又是一个飞机上的linux 截屏,虽然用手机拍的照片很模糊,不过,我们还是能看到那只小企 ...
十个最好的PDF生成库
1)FPDF
http://www.fpdf.org/。这是一个纯PHP的库,它没有使用PDFlib。完全免费。没有任何license的限制。
2)iText
http://www.lowagie.com/iText/。 这是一个基于Java的库。iText#则是一个基于.NET的库。使用MPL/LGPL的license。
3)AlivePDF
http://www.alivepdf.org/。这是基于ActionScripts 3的PDF文件生成库。MIT license。
4)Prawn
http://prawn.majesticseacreature.com/。这是一个Ruby的PDF文件生成的库。
5) TCPDF
http://www.tcpdf.org/。这又是一个PHP的PDF文件生成库。LGPL license。
6)PDFSharp
http://pdfsharp.com/PDFsharp/。基于.NET。
7)libHaru
http://libharu.org/w ...
OSGi和Java企业级运算的未来方向
摘要: OSGi也是译者最近才接触到的技术,但是在OSGi的发展中,它越来越收到了来自行业的关注。作为OSGi的动态部署,译者认为此项规范对于企业应用应该是非常有帮助的。特别在银行的信息化建设中将会起到很重要的作用,因为国内大多的银行业都在强调7*24小时系统,但是其业务发展又非常迅速,常常有新需求,新变更。如果每一次上线变更都将重启系统的话,对银行的服务质量和形象将会造成较大的影响。 此文只是讲述了OSGi在Java企业运算中的新动向,并没有具体的介绍OSGi的规范。关于OSGi规范的文档可以从jcp上下载
原文出处:这里
OSGi和Java企业级运算的未来方向
by Eric Newcomer
无论JCP是否完全的迷失了它的方向,它都不同程度受到来自外部活动的影响。Spring框架和Hibernate影响了EJB3,而且JPA也是一个好的例子。另外日渐感觉到的影响来自于对OSGi规范的采用和其实现,特别是实现了OSGi的开源的Eclipse Equinox,Apache Felix和Knoplerfish框架
OSGi规范为Java定义动态模组元信息系统和在其交互模组中的面向服 ...
雷人的程序注释
使用Google code search可以搜索到一些比较有趣的代码注释,呵呵。下面的这些程序注释有搞笑的,也有粗口,看来写程序本来也不是一件很枯燥的事,关键看你的心态如何了。读到这些注释的时候,只能想到一个词,那就是“疯狂的程序员”,哈哈。Have a Fun ;-)
写个程序时不忘表达自己的感情,以免以后忘了。
呵呵,看来自己也不是很自信。
到处都是dragon啊。
又是一个愤怒的注释
嗯,我早就告诉过他们……
粗口也上了……
嗯,下面的程序与请别看了……
真是疯狂啊,难道程序员的注释也有枪手或五毛?
希望你喜欢哦。
深入浅出单实例Singleton设计模式
单实例Singleton设计模式可能是被讨论和使用的最广泛的一个设计模式了,这可能也是面试中问得最多的一个设计模式了。这个设计模式主要目的是想在整个系统中只能出现一个类的实例。这样做当然是有必然的,比如你的软件的全局配置信息,或者是一个Factory,或是一个主控类,等等。你希望这个类在整个系统中只能出现一个实例。当然,作为一个技术负责人的你,你当然有权利通过使用非技术的手段来达到你的目的。比如:你在团队内部明文规定,“XX类只能有一个全局实例,如果某人使用两次以上,那么该人将被处于2000元的罚款!”(呵呵),你当然有权这么做。但是如果你的设计的是东西是一个类库,或是一个需要提供给用户使用的API,恐怕你的这项规定将会失效。因为,你无权要求别人会那么做。所以,这就是为什么,我们希望通过使用技术的手段来达成这样一个目的的原因。
本文会带着你深入整个Singleton的世界,当然,我会放弃使用C++语言而改用Java语言,因为使用Java这个语言可能更容易让我说明一些事情。
Singleton的教学版本
这里,我将直接给出一个Singleton的简单实现,因为我相信你已经有这方面的一些 ...
基于JVM的语言正在开始流行
总结:
这是 Reuven Lerner在去年写的一篇博文,文章主要介绍了一些新兴的基于JVM的脚本语言。结合本文可以对Bruce的博文《C++和JAVA传统中积极的一面》有一个很好的理解。译者认为:语言始终都是一门工具,软件设计最重要的东西是来自于设计者的创造性,但是随着Java语言的出现,他的半动态的特性,ClassLoader,反射,动态代理,都是提高开发者创造性的前提,正是因为这些特性,才会出现新的的编程模式和范式——反转控制和依赖注入,面向方面的编程(AOP)。试想如果Java不提供ClassLoader,反射,动态代理机制的API,如何能实现依赖查找和依赖注入和动态AOP? 你能用C++来反转控制,依赖查找吗,能对容器中的组件做进行生命周期管理吗?为了说明程序员创造性和语言的这个关系,我引用Dion Hinchcliffe博文中的一张图来说明:
原文:http://ostatic.com/blog/jvm-based-languages-grow-in-popularity基于JVM的语言正在开始流行
当Sun Microsystems公司在199 ...
全球IP地址数据库
下面是一个免费的全球IP地址数据库,包括了国家,城市,地区,和经纬度,以便你可以利用Google Map在地图上标注。这个数据库的精确度可能有60%左右。
SQL format更新至 2009年3月11日
CSV format (多文件)更新至 2009年3月11日
下面是怎么使用这个数据库。
首先,所有的IP地址都是按一个整形来存放的,假设一个IP地址为A.B.C.D,那么其计算公式如下所示:
ip = (A*256+B)*256+C
也就是说,它只计算到网段为:A.B.C.0到A.B.C.255。例如:我们有一个IP地址为:74.125.45.100 (google.com),那么,
ip = (74*256+125)*256+45 = 4881709
这样,我们可以方便地使用如下的SQL语句搜索数据:
SELECT * FROM ip_group_city
WHEREip_start <= 4881709 ORDER BY ip_start DESC LIMIT 1;
结果会是如下所示:
ip_start|country_code|region_ ...
非常不错的编程技术教程
下面是一些非常不错的编程教程,当然,全是英文版的。不过因为是新手教程,所以非常容易阅读,可以在学习技术的同时加强一下自己的英语阅读能力。
如果你是一个新手,建议你把本页设为你的收藏夹。C Introduction to C Programming C Optimization Tutorial Compiling C and C++ Programs on UNIX Systems – gcc/g++ Building and Using Static and Shared C Libraries Programming in C: UNIX System Calls and Subroutines Using C C FAQ C Programming Class Notes ANSI C for Programmers on UNIX Systems Sams Teach Yourself C in 24 Hours Sams Teach Yourself C in 21 Days (4th Ed.) The Standard C Library for Linux – Part ...
C++和JAVA传统中积极的一面
译者注:
本文翻译自Bruce Eckel(《Thinking in C++》& 《Thinking in Java》作者)的博文,该博文于2009年03月14日发表于:
http://www.artima.com/weblogs/viewpost.jsp?thread=252441
本文的发表引起了互联网上热烈的讨论,关于讨论大家可以到这里围观。
下面是原文。原名《The Positive Legacy of C++ and Java》
摘要:
在最近的讨论中,有些人断定C++并不是一个设计完美的语言。在我在C++标准委员那8年里,我目睹所有关于C++的决议的诞生。我希望本文有助于帮读者理解C++和JAVA的设计选择,从而可以让大家更全面的来看待他们。
有人说,我很少再使用C++。当我使用C++时,我只是为了测试一下陈旧的代码,或者写一个和性能密切相关的程序,通常这个程序非常小,并且通过其他的语言来调用。(我喜欢的做法是,用Python快速开发一个程序,用profile辅助程序对其进行性能优化,如果需要的话,通过Python的ctypes调用C++写的程序来改善性能)。
因 ...