
编程语言
haoel
这个作者很懒,什么都没留下…
-
原创 深入浅出单实例Singleton设计模式
深入浅出单实例Singleton设计模式陈皓前序单实例Singleton设计模式可能是被讨论和使用的最广泛的一个设计模式了,这可能也是面试中问得最多的一个设计模式了。这个设计模式主要目的是想在整个系统中只能出现一个类的实例。这样做当然是有必然的,比如你的软件的全局配置信息,或者是一个Factory,或是一个主控类,等等。你希望这个类在整个系统中只能出现一个实例。当然,作为一个技术负责人2009-03-26 23:46:0057935
22
-
原创 谁说C语言很简单?
原文:http://cocre.com/?p=873 关于在回复里骂我的朋友们,无所谓哦,呵呵,大家有空可以看看我的另一篇文章《惹恼程序员的十件事》,我们可爱的程序员。如果你觉得文章有意思,你可以看看我的另一篇文章——《C语言的谜题》 前两天,Neo写了一篇《语言的歧义》其使用C语言讨论了一些语言的歧义。大家应该也顺便了解了一下C语言中的很多不可思异的东2009-05-26 17:17:0016211
115
-
原创 6个变态的C语言写的Hello World
原文:http://cocre.com/?p=914 —— 酷壳 本文仅供朋友们“消遣作乐”,能够看懂是为什么固然不错。看不懂也不必太过认真,如果你要觉得有意思的话,顶顶贴。如果你觉得没什么意思的话,一笑了之。仅供娱乐而已,不必太过认真。 下面的六个程序片段主要完成这些事情:输出Hello, World混乱C语言的源代码(加密源代码,嘿嘿)下面的2009-05-26 15:52:0026755
178
-
转载 语言的歧义
语言的歧义赵锟zhaokun.km (at)gmail.com原文:http://cocre.com/?p=830 语言是人与人相互沟通的途径,而计算机语言则是人和计算机沟通的途径。就算是任何再完美的自然语言都会有歧义,但是又是什么让人和计算计算机间产生了歧义呢?下面这篇文章来自Gowri Kumar的Puzzle C一文。我做了一些整理,挑选了其中的一些问题,并在之后配上相2009-05-18 11:09:008567
16
-
翻译 Linux设备驱动Hello World程序介绍
本文由赵锟翻译,转载于“酷壳”:http://cocre.com/?p=566 by Valerie Henson07/05/2007(译者注:本文的例子是只能在linux的2.6内核下使用的,2.6以上的内核,译者没有做过实验,2.4是要修改make文件才能运行。)本文的出处:这里自古以来,学习一门新编程语言的第一步就是写一个打印“hello world”的程序(可以看2009-04-29 00:00:0015130
4
-
转载 基于JVM的语言正在开始流行
基于JVM的语言正在开始流行赵锟总结:这是 Reuven Lerner在去年写的一篇博文,文章主要介绍了一些新兴的基于JVM的脚本语言。结合本文可以对Bruce的博文《C++和JAVA传统中积极的一面》有一个很好的理解。译者认为:语言始终都是一门工具,软件设计最重要的东西是来自于设计者的创造性,但是随着Java语言的出现,他的半动态的特性,ClassLoader,反射,动态2009-03-26 11:46:007504
0
-
翻译 C++和Java传统中积极的一面
C++和Java传统中积极的一面作者:Bruce Eckel译者:赵锟、陈皓译者注:本文翻译自Bruce Eckel(《Thinking in C++》& 《Thinking in Java》作者)的博文,该博文于2009年03月14日发表于:http://www.artima.com/weblogs/viewpost.jsp?thread=252441本文的发表引起了2009-03-22 21:31:007954
9
-
原创 Fork 系统炸弹
这个炸弹很简单,就是一个命令行,如下所示::(){ :|:& };:在此,我严重警告你,请不要在你的Unix/Linux或Cygwin的Shell下执行这个命令。否则,这个命令会不停地fork子进程,直到你的整个系统无法响应。 再次警告你,请不要执行这个命令,除非你想重启你的系统。另外,对于Shell聪明的你,相信这个命令行的实际含义我就不用多说了。如果你不知道的话,那么就2009-02-11 09:43:007915
9
-
原创 时间:1234567890
"At 11:31:30pm UTC on Feb 13, 2009, Unix time will reach 1,234,567,890. Where will you be at this momentous second?" - from Bell Labs 在下周五或周六的某一时间,计算机的时间戳(TimeStamp)为变成奇妙的1234567890,而这一天就是——格林威治时间:22009-02-08 22:13:005961
0
-
原创 Java书籍Top 10
本文同时也发表于:酷壳(http://www.cocre.com/?p=67 ) Java 书籍 Top 10 陈皓 http:// blog.csdn.net/haoel 下面是Java Inside上推荐的十本Java书籍(文章来源),我把中文版的也列了出来。 1)Java Language Specification, Thir2009-02-08 00:54:0024801
8
-
原创 C++ 对象的内存布局(上)
C++ 对象的内存布局(上) 陈皓http://blog.csdn.net/haoel 点击这里查看下篇>>>前言 07年12月,我写了一篇《C++虚函数表解析》的文章,引起了大家的兴趣。有很多朋友对我的文章留了言,有鼓励我的,有批评我的,还有很多问问题的。我在这里一并对大家的留言表示感谢。这也是我为什么再写一篇续言的原因。因为,在上一篇文章中,我用了的示例都是非2008-10-15 20:36:00150790
82
-
原创 C++ 对象的内存布局(下)
C++ 对象的内存布局(下) 陈皓http://blog.csdn.net/haoel <<<点击这里查看上篇 重复继承 下面我们再来看看,发生重复继承的情况。所谓重复继承,也就是某个基类被间接地重复继承了多次。 下图是一个继承图,我们重载了父类的f()函数。 其类继承的源代码如下所示。其中,每个类都有两个变量,一个是2008-10-15 20:59:0063667
59
-
原创 Java NIO 类库Selector机制解析(续)
Java NIO 类库Selector机制解析(续) 陈皓http://blog.csdn.net/haoel 在前些天的《Java NIO类库Selector机制解析》文章中,我们知道了下面的事情: 1)Sun的JVM在实现Selector上,在Linux和Windows平台下的细节。2)Selector类的wakeup()方法如何唤醒阻塞在select()2008-05-04 10:55:0020996
20
-
原创 如何加密/弄乱C源代码
原文:http://cocre.com/?p=933 —— 酷壳 之前发表了《6个变态的C语言Hello World程序》[酷壳链接] [CSDN链接],主要是是像大家展示了一些C语言的变态玩法。也向大家展示了一下程序是可以写得让人看不懂的,在那篇文章中,可以看到很多人的留言,很多人都觉得很好玩,是的,那本来是用来供朋友们“消遣作乐”,供娱乐娱东而已,不必太过认真。 不过,2009-05-30 15:23:0012948
33
-
原创 C语言的谜题
这几天,本站推出了几篇关于C语言的文章如下所示: 语言的歧义 [酷壳链接] [CSDN链接]谁说C语言很简单? [酷壳链接] [CSDN链接]6个变态的C语言Hello World程序 [酷壳链接] [CSDN链接]如何加密/弄乱C源代码 [酷壳链接] [CSDN链接]C语言的谜题 [酷壳链接] [CSDN链接]我们可以看到很多C语言相关的一些东西。比如《语言的歧义2009-06-01 10:05:0014517
35
-
转载 如何在Java中避免equals方法的隐藏陷阱
如何在Java中避免equals方法的隐藏陷阱译者:赵锟zhaokun.km (at)gmail.com 转自:http://cocre.com/?p=1051 酷壳译者注 :你可能会觉得Java很简单,Object的equals实现也会非常简单,但是事实并不是你想象的这样,耐心的读完本文,你会发现你对Java了解的是如此的少。如果这篇文章是一份Java程序员的入2009-06-19 11:00:0010171
20
-
原创 一些重要的算法
本文罗列了一些比较重要的算法,有的我们经常在用,有的基本不用。有的很常见,有的有点偏。不过了解一下也是好事。也欢迎你留下你觉得有意义的算法。(原文:http://coolshell.cn/?p=2583)2010-07-22 14:13:0095419
100
-
原创 “21天教你学会C++”
更多文章请访问“酷壳”:http://CoolShell.cn 原文:http://coolshell.cn/?p=2250 下面是一个《Teach Yourself C++ in 21 Days》的流程图,请各位程序员同仁认真领会。如果有必要,你可以查看这个图书以作参照:http://www.china-pub.com/27043看完上面这个图片,我在想,2010-05-14 11:36:0059598
43
-
原创 程序命名的一些提示
酷壳:http://CoolShell.cn 选择一个正确的名字是编程中最重要的事。以前酷壳向大家推荐过两篇文章《编程命名中的7+1个提示》 和《编程中的命名设计那点事》,今天再向大家推荐一篇。一个正确的命名可以让你更容易地理解代码的程序,好的命名可以消除二义性,消除误解,并且说明真实的意图,甚至可以让你有清新的气息以让你更能吸引异性。;-)方法,类和变量正确的名字可以让你2010-04-08 12:11:0037236
5
-
原创 哥是玩程序的
以下文章来自:酷壳 http://CoolShell.cn《哥是玩程序的》,《一个Windows 3.1的Web网站》,《又一个Javascript试验田 》 下面一组有趣的Web示例,这些示例使用Web的一些很“土”控件做出一些很有趣的玩意儿。原来,编程是可以用来玩的,看看这些玩程序的人搞出的这些有意思的玩意,简直是玩得太有意思了。不过,请注意,这些东西只能使用Chrome打开2010-04-01 14:13:0068144
79
-
原创 程序语言性能比拼
源文:http://coolshell.cn/?p=1788 (酷壳) 下面这个网页,你可以比较各种程序语言的性能:http://shootout.alioth.debian.org/u64/index.php这个页面,安装的是x64 Ubuntu,CPU是Intel® Q6600® 单核。这个网页支持的语言很多,什么C,C++,Java,python,PHP,Erlang,C#2009-12-15 14:48:0018995
9
-
原创 恐怖的C++语言
原文:http://coolshell.cn/?p=1724 (酷壳) Linus曾经(2007年9月)在新闻组gmane.comp.version-control.git里和一个微软的工程师(Dmitry Kakurin)争执过用C还是用C++,当时的那个微软的工程师主要是在做Git的Windows版,但他却发现Git的源码居然是C语言写的,而不是C++,于是他(Dmitry K2009-12-04 09:55:0055509
177
-
原创 ldd 的一个安全问题
源文:http://coolshell.cn/?p=1626 (酷壳) 我们知道“ldd”这个命令主要是被程序员或是管理员用来查看可执行文件所依赖的动态链接库的。是的,这就是这个命令的用处。可是,这个命令比你想像的要危险得多,也许很多黑客通过ldd的安全问题来攻击你的服务器。其实,ldd的安全问题存在很长的时间了,但居然没有被官方文档所记录来下,这听上去更加难以理解了。怎么?是不是2009-11-10 18:01:007410
3
-
翻译 使用Flex Bison 和LLVM编写自己的编译器
使用Flex Bison 和LLVM编写自己的编译器译者:赵锟原文:http://coolshell.cn/?p=1547 (酷壳) 本文由赵锟翻译,酷壳发布,转载请注明译者和出处,请勿用于商业用途原文出处:http://gnuu.org/2009/09/18/writing-your-own-toy-compiler 1、介绍我总2009-11-09 13:12:0019762
2
-
原创 到处都是Unix的胎记
原文:http://coolshell.cn/?p=1532 (酷壳)如果你想知道Unix的一些故事,你可以查看下面这些文章:《Unix40年:昨天,今天和明天》 《Unix传奇》上篇,下篇 《Unix的现状与未来》 一说起Unix编程,不必多说,最著名的系统调用就是fork,pipe,exec,kill或是socket了(fork(2), exec2009-10-15 23:38:0014903
5
-
原创 BT雷人的程序语言
原文:http://cocre.com/?p=1142 酷壳 这个世界从来都不会缺少另类的东西,人类自然世界如此,计算机世界也一样。编程语言方面,看过本站《6个变态的C语言Hello World程序》的朋友们一定对BT和另类不会陌生,但那都是些小儿科,真正的BT和另类要是从语言级上来完成。让我们来看看其中一个比较另类的语言BrainFuck。看到这个程序语言的名字,请不要以为这是一个搞笑2009-07-13 10:26:0018778
26
-
原创 编程真难啊
原文:http://coolshell.cn/?p=1391 (酷壳: CoolShell.cn)上周,在Sun的Java论坛上出现了一个这样的帖子,这个贴子的链接如下:http://forums.sun.com/thread.jspa?threadID=5404590&start=0&tstart=0LZ的贴子翻译如下:大家好,我是一个Java的新手,我有一个简单的问题:请问2009-09-04 08:26:0019061
20
-
原创 Java构造时成员初始化的陷阱
原文:http://cocre.com/?p=1106 酷壳 让我们先来看两个类:Base和Derived类。注意其中的whenAmISet成员变量,和方法preProcess()1. public class Base 2. { 3. Base() { 4. preProcess(); 5. } 6.2009-07-03 17:11:0014378
132
-
原创 Java NIO类库Selector机制解析(上)
Java NIO类库Selector机制解析(上) 赵锟 陈皓http://blog.csdn.net/haoel 一、 前言 自从J2SE 1.4版本以来,JDK发布了全新的I/O类库,简称NIO,其不但引入了全新的高效的I/O机制,同时,也引入了多路复用的异步模式。NIO的包中主要包含了这样几种抽象数据类型: Buffer:包含数据且2008-03-27 21:44:0084342
24
-
原创 Java NIO类库Selector机制解析(下)
Java NIO类库Selector机制解析(下) 赵锟 陈皓http://blog.csdn.net/haoel 点此查看本文上篇五、 迷惑不解 : 为什么要自己消耗资源? 令人不解的是为什么我们的Java的New I/O要设计成这个样子?如果说老的I/O不能多路复用,如下图所示,要开N多的线程去挨个侦听每一个Channel (文件描述符) ,2008-03-27 21:50:0047598
42
-
原创 跟我一起写 Makefile(八)
六、多行变量 还有一种设置变量值的方法是使用define关键字。使用define关键字设置变量的值可以有换行,这有利于定义一系列的命令(前面我们讲过“命令包”的技术就是利用这个关键字)。define指示符后面跟的是变量的名字,而重起一行定义变量的值,定义是以endef关键字结束。其工作方式和“=”操作符一样。变量的值可以包含函数、命令、文字,或是其它变量。因为命令需要以[Tab]键开头,所以如2004-02-25 10:15:0042798
9
-
原创 跟我一起写 Makefile(四)
书写规则————规则包含两个部分,一个是依赖关系,一个是生成目标的方法。在Makefile中,规则的顺序是很重要的,因为,Makefile中只应该有一个最终目标,其它的目标都是被这个目标所连带出来的,所以一定要让make知道你的最终目标是什么。一般来说,定义在Makefile中的目标可能会有很多,但是第一条规则中的目标将被确立为最终的目标。如果第一条规则中的目标有很多个,那么,第一个目标会2004-02-24 16:50:0057746
20
-
原创 以程序的方式操纵NTFS的文件权限(下)
// // STEP 14: 把一个 access-allowed 的ACE 加入到新的DACL中 // 前面的循环拷贝了所有的非继承且SID为其它用户的ACE,退出循环的第一件事 // 就是加入我们指定的ACE。请注意首先先动态装载了一个AddAccessAllowed2004-01-20 21:19:007421
7
-
原创 跟我一起写 Makefile(十一)
make 的运行——————一般来说,最简单的就是直接在命令行下输入make命令,make命令会找当前目录的makefile来执行,一切都是自动的。但也有时你也许只想让make重编译某些文件,而不是整个工程,而又有的时候你有几套编译规则,你想在不同的时候使用不同的编译规则,等等。本章节就是讲述如何使用make命令的。一、make的退出码make命令执行后有三个退出码: 0 —2004-02-25 10:16:0029625
3
-
原创 跟我一起写 Makefile(七)
使用变量————在Makefile中的定义的变量,就像是C/C++语言中的宏一样,他代表了一个文本字串,在Makefile中执行的时候其会自动原模原样地展开在所使用的地方。其与C/C++所不同的是,你可以在Makefile中改变其值。在Makefile中,变量可以使用在“目标”,“依赖目标”,“命令”或是Makefile的其它部分中。变量的命名字可以包含字符、数字,下划线(可以是数字开头)2004-02-25 10:15:0031479
10
-
原创 跟我一起写 Makefile(六)
书写命令————每条规则中的命令和操作系统Shell的命令行是一致的。make会一按顺序一条一条的执行命令,每条命令的开头必须以[Tab]键开头,除非,命令是紧跟在依赖规则后面的分号后的。在命令行之间中的空格或是空行会被忽略,但是如果该空格或空行是以Tab键开头的,那么make会认为其是一个空命令。我们在UNIX下可能会使用不同的Shell,但是make的命令默认是被“/bin/sh”——2004-02-24 16:51:0057797
10
-
原创 Inside i++
i++、++i、i=i+1、效率怎么样?看过一本书上说,i++比i=i+1好的地方是因为i=i+1中的那个1要占用一个寄存器,所以速度没有i++快,于是我想验证一下。另外,以前听说过Java中的“i=i++”得不到正确结论,也就是应该是“先累加再赋值”,但Java经过这种运算后,i值居然没有变化。所以在这里,想一并把这几个问题在C中验证一下。=====================测试的C源2003-04-04 09:14:008933
5
-
原创 用C写有面向对象特点的程序
比如在一个项目中,有大量的数据结构,他们都是双向链表,但又想共用一套对链表的操作算法,这怎么做到呢,C中又没有C++中的继承,不然我可以继承一父(类中只有两个指针,一个向前一个向后),而其算法可以写在你类中的虚函数中,供子类使用。如:class Links{public: Links* back; Links* forword; virtual Add(){ ... };2003-04-02 09:02:0024149
14
-
原创 以程序的方式操纵NTFS的文件权限(上)
以程序的方式操纵NTFS的文件权限陈皓 Windows NT/2K/XP版本的操作系统都支持NTFS格式的文件系统,这是一个有安全性质的文件系统,你可以通过Windows的资源管理器来设置对每个目录和文件的用户访问权限。这里我就不对NTFS的安全性进行讲述了,我默认你对NTFS的文件目录的安全设置有了一定的了解。在这里,我将向你介绍使用Windows的API函数来操纵NTFS的文件权限2004-01-25 21:17:0020178
2
-
原创 跟我一起写 Makefile(十)
四、foreach 函数 foreach函数和别的函数非常的不一样。因为这个函数是用来做循环用的,Makefile中的foreach函数几乎是仿照于Unix标准Shell(/bin/sh)中的for语句,或是C-Shell(/bin/csh)中的foreach语句而构建的。它的语法是: $(foreach ,,) 这个函数的意思是,把参数中的单词逐一取出放到参数2004-02-24 16:53:0031633
8