“ 中国梦” 是不久前热炒的词,中华民族伟大复兴神马的,尤其在最近那件云南的事情发生以后,微博上满是讨论。很显然,从小就被灌输的正能量,也是和崇尚“ 集体”、“ 共同”、“ 国家”、“ 民族” 的价值观匹配的;事实上,这也是和“ 美国梦” 的重要区别,美国梦强调天赋人权,每个人都有同样的生存、自由和追求幸福的权利。
但是事实总是和书本上不一样。优米网上有一篇揭示中国现今十大问题的文章,从食品安全、房价、物价到恶性事故,可谓针针见血。看着
[……]阅读全文
一个纯正程序员的啰嗦

不久前写过一篇 《给我一把榔头,满世界都是钉子》,从算法和数据结构的角度谈了谈对于问题和问题解决的工具这两方面我的看法;而最近看到了这样的代码,一个表格,单数行和双数行的样式不同,于是有程序员这样写道:
var trs = $("#spreadSheet tr");
for(var i=0; i<trs.size(); i++){
if(i%2)
$(trs.get(i)).children("td").css("color", "RED");
else
$(trs.get(i)).children("td").css("color", "
[……]阅读全文

做 Web 开发经常需要面对跨域问题,跨域问题的根源是浏览器安全中的同源策略,比如说,对于 http://www.a.com/1.html 来说:
在浏览器中,<script>、<img>、<iframe> 和<link> 这几个标签是
[……]阅读全文

最近体验了一下 GWT(Google Web Toolkit),其实这个技术老早就有了,写 Java 代码,代码很像 AWT 或者 Swing,但是最后编译成一个 war 包,也就是说,没有啰嗦的 JavaScript、HTML 和模板语言,Java 从前到后通吃,常用的模块都被封装成组件了。虽说写起来代码还挺啰嗦的(写法上面居然不支持链式调用,这确实让我看不懂),而且也没有传统 Web 开发方式来得直观,但也算一种很有意思的开发方式,值得体验一下。网上有足够多的教程,要系统地学习,官方文档是最好的材料,非常详尽。而我的方式,则更具个人风格一点,比较+吐槽,这可不是教程。
工程结构
我是用 Eclipse+Goo
[……]阅读全文
我记得和同事吃饭的时候大家在一起讨论,什么样的人可以称之为牛人,有人当即就提出来,对于我们这样做工程的人来说,谈何牛人呢?真正牛的人应该都是那些搞研究的大拿们。还有人说,这样说也不甚准确,只是牛人的比例和程度不同:

搞工程的取得成就的人的比例,要高过搞研究的(左图);但是搞研究的,取得的成就要大过搞工程的(右图)。
在推动生产力前进上,为什么 Page Rank 的发明人是工程师,而不是数学家?因为工程师最擅于把那些尚在理论上的东西转化为实际的东西。再比如像 Jeff Dean 这样的,工程师关心和解决的问题往往是最实际的问题。
但是说到严谨性,做工程和搞研究是同一的。二者都很容易被经验和那些显而
[……]阅读全文

在 Wikipedia 上数据绑定的定义是:
Data binding is the process that establishes a connection between the application UI (User Interface) and business logic. If the settings and notifications are correctly set, the data reflects changes when made. It can also mean that when the UI is changed, the underlying data
[……]阅读全文
先看一段代码:
setTimeout(function(){
alert("a");
}, 0);
while(1);
alert("b");
希望在马山可以弹出一个警告提示框 “a” 来,但是始终没有来;而且,在 FireFox 中跑还得到了这样的提示,并提示你是否要终止这段脚本的执行,遇事我选择终止以后,“a” 倒是弹出来了,但是 “b” 却弹不出来了:
Warning: Unresponsive Script
A script on this page may be busy, or it may have stopped responding. You can stop the script n
[……]阅读全文

大概在两年前,我写过一篇文章,《我为什么坚持写博客》,随着阅历增长,想法是在不断变化的。我想在这里补充一些内容。
一个坚持更新的博客站点就是最好的名片
很多有个人独立博客的人都有这个观点,对于工程师来说尤其如此。我记得以前看过一幅漫画,工程师和 HR 阅读简历的价值杠杆大不相同,GitHub 上丰富的记录、一个高分的 stackoverflow 账号,还有一个独立域名博客,这些都是具有相当加分项的部分。向别人介绍自己的时候,你甚至都不需要自己拿出名片来,不需要自己在简历里面啰啰嗦嗦还生怕遗漏了什么,很简单,拿出你的博客站点来,一切尽在其中。你没有办法作弊,也没有办法撒谎,因为其中的文章全部都是按
[……]阅读全文
ICDM(国际数据挖掘大会)2006 年从 18 种提名的数据挖掘算法中投票选出了十大算法。这 18 中提名数据挖掘算法分属 10 大数据挖掘主题,蓝色部分即为最终选出的十大算法:
[……]阅读全文

Java 中的泛型带来了什么好处?规约。就像接口定义一样,可以帮助对于泛型类型和对象的使用上,保证类型的正确性。如果没有泛型的约束,程序员大概需要在代码里面使用大量的类型强制转换语句,而且需要非常清楚没有标注的对象实际类型,这是容易出错的、恼人的。但是话说回来,泛型可不只有规约,还有很多有趣的用法,容我一一道来。
泛型擦除
Java 的泛型在编译阶段实际上就已经被擦除了(这也是它和 C#泛型最本质的区别),也就是说,对于使用泛型的定义,对于编译执行的过程,并没有任何的帮助(有谁能告诉我为什么按着泛型擦除来设计?)。所以,单纯利用泛型的不同来设计接口,会遇到预期之外的问题,比如
[……]阅读全文

java.util.concurrent 包的类都来自于 JSR-166:Concurrent Utilities,官方的描述叫做“The JSR proposes a set of medium-level utilities that provide functionality commonly needed in concurrent programs. ”。作者是大名鼎鼎的 Doug Lea,这个包的前身可以在这里找到,它最好的文档就是系统的 API 手册。
当然,这里参考的 concurrent 包来自 JDK7,比最初 JDK1.5 的版本有了不少改进。我曾经在 《Java
[……]阅读全文

对于 DCL(Double Check Lock)情况下的对象安全发布,一直理解得不足够清楚;在通过和同事,以及和互联网上一些朋友的讨论之后,我觉得已经把问题搞清楚了。我把我对这个问题的理解简要记录在这里。
现在有代码 A:
class T {
private static volatile T instance;
public M m; // 这里没有 final 修饰
public static T getInstance() {
if (null == instance) {
synchronized (T.class) {
if (null ==
[……]阅读全文
上半部分请参见 《排序算法一览(上):交换类、选择类和插入类排序》。
归并类排序
归并排序(Merge Sort)
归并排序是一种分治法,它反复将两个已经排序的序列合并成一个序列(平均时间复杂度 O(nlogn),最好时间复杂度 O(n)):
public class Sort {
public s
[……]阅读全文

[……]阅读全文

关于足球
我从 98 年世界杯就开始看球了,从最早国内的申花球迷,到后来长期看英超诸强的足球、西甲双雄的足球,我也算是一介有一点儿球龄的老球迷。一直以来我很想说一说关于足球青训的话题,今年在莫耶斯带领下的曼联,球踢得无比难看,比赛输得体无完肤,我觉得我找到了一个契机。比赛看得多了,也就不那么容易激动,看球更加理性。和许许多多竞技运动一样,你无法准确预测一场比赛的结果,但是长此以往的比赛分析下来,能看得到许多问题,孰强孰弱一目了然。虽说曼联的比赛我几乎一场不落,但是看看国内论坛上的帖子,骂战是从来都不可避免的,但是对弗格森的盲目的个人崇拜和神化已经到了一个简直无可救药的地步了。我相信很多曼联球
[……]阅读全文

Trie 树,又叫做前缀树或者是字典树,是一种有序的树。从空字符串的根开始,往下遍历到某个节点,确定了对应的字符串,也就是说,任意一个节点的所有子孙都具备相同的前缀。每一棵 Trie 树都可以被看做是一个简单版的确定有限状态的自动机(DFA,deterministic finite automaton),也就是说,对于一个任意给定的属于该自动机的状态 (①) 和一个属于该自动机字母表的字符 (②),都可以根据给定的转移函数 (③) 转到下一个状态去。其中:
[……]阅读全文
一篇文章存成一个巨大的文件,总共大约有一亿个单词,要找出里面重复次数最多的。怎么做?
Hadoop 是一把威力巨大的榔头,在使用过 Hadoop 之后,看着任何东西都想把它给 map reduce 了。有一个关于 Jeff Dean 的小笑话,说在睡不着觉的时候,一般人是数羊,Jeff Dean 是 map reduce 他的羊群。所以,我的办法是,把这个文件拆分成若干个小文件,在 map 过程用 hash 算法保证相同的单词落入一个文件(这点很重要),计算单词出现次数,在 reduce 过程取得重复次数最多的单词来。
但是,真有必要这样啰嗦吗?
只有一亿个单词,简单估算一下,一个字母占据两个字节,假设单词平均长度 5,即便
[……]阅读全文