查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

为着理想勇敢前进

 
 
 
 
 
 

为什么模块“耦合性”概念该要摒弃

2015-7-10 19:00:02 阅读1074 评论1 102015/07 July10

以前,我写代码时,我考虑模块(本文中的模块就是指单个源文件)的单向依赖关系,考虑接口的正交性和紧凑性。
我觉得我在做低耦合的好设计。

然而,我发现其他程序员写的代码依赖关系混乱,接口臃肿,但他们仍然觉得自己写的代码耦合很低,设计很好。
我这才发现,我理解的耦合和他们理解的不一样。
他们理解的低耦合就是把代码提出来,让代码不要“乱”。
然而,对于什么是“耦合”、什么是“乱”,他们并不知道有什么客观标准可以度量。

作者  | 2015-7-10 19:00:02 | 阅读(1074) |评论(1) | 阅读全文>>

今天去工商局办事,别人送我的桌游

2012-8-10 21:54:52 阅读598 评论2 102012/08 Aug10

这两天办公司注册,跑工商局好累。最后他们奖给我一副连连看的桌面游戏:
连连看的桌面游戏! - 杨博 - 为着理想勇敢前进

动画版:
连连看的桌面游戏! - 杨博 - 为着理想勇敢前进

好玩极了

作者  | 2012-8-10 21:54:52 | 阅读(598) |评论(2) | 阅读全文>>

只要能修好我的硬盘,我甘愿成为一名好人

2012-8-4 1:50:34 阅读507 评论2 42012/08 Aug4

老外有个软件叫ISO to USB,号称可以把光盘映像放到U盘或移动硬盘上启动。

我把移动硬盘分了两个区,我打算把一张启动盘做到其中一个新分区上。于是我就高兴的打开了ISO to USB,然后选择了新的那个分区。然后……

我的移动硬盘两个区上的所有东西就都没了……

在这万念俱灰的时刻,我想起了一句古老的咒语:

只要能修好我的硬盘,我甘愿成为一名好人 - 杨博 - 为着理想勇敢前进
好人修电脑,坏人床上搞

只要能修好我的硬盘,恢复我的数据,我甘愿成为一名好人。我在好人卡前宣誓:

作者  | 2012-8-4 1:50:34 | 阅读(507) |评论(2) | 阅读全文>>

怎样玩《跑跑龟》才能欺负人

2012-5-13 12:34:03 阅读635 评论0 132012/05 May13

怎样玩《跑跑龟》才能欺负人 - 杨博 - 为着理想勇敢前进

《跑跑龟》是个很简单的桌游。基本上接触过桌游的人都玩过吧。看上去《跑跑龟》没啥策略性,输赢也就看运气而已。这么想你就错了,跑跑龟其实是个浅度策略游戏,如果你按以下方式玩,胜率可以达到80%。(注:本文是按“同时到终点时上面的乌龟赢”的规则来写的)

  • 中前期没用的牌可以随便出,但有用的牌要留着。所有的牌按有用程度排序如下:
    1. 任意颜色乌龟前进两格
    2. 自己颜色乌龟前进两格
    3. 任意颜色乌龟前进一格
    4. 自己颜色乌龟前进一格
    5. 任意颜色乌龟后退一格
    6. 特定颜色乌龟后退一格
    7. 最后一名乌龟前进两格
    8. 其他颜色乌龟前进两格
    9. 最后一名乌龟前进一格
    10. 其他颜色乌龟前进一格

作者  | 2012-5-13 12:34:03 | 阅读(635) |评论(0) | 阅读全文>>

简单还是复杂?

2012-4-25 20:16:54 阅读2106 评论0 252012/04 Apr25

作者:Martin Odersky

译者:杨博

原文:Simple or Complicated ? 

最近我们在激烈讨论,有人说Scala对正常程序员来说很复杂,有人说Scala其实是一门编码很简单的语言。有两个帖子在讨论(http://michid.wordpress.com/http://warpedjavaguy.wordpress.com/2010/08/02/the-scala-is-t

作者  | 2012-4-25 20:16:54 | 阅读(2106) |评论(0) | 阅读全文>>

尼玛Java真是太灵活了

2012-3-3 23:54:16 阅读783 评论2 32012/03 Mar3

我想知道Java程序打日志有多少种方式配置,于是画了一个图:

尼玛Java真是太灵活了 - 杨博

尼玛Java真是太灵活了!!!!!!!

作者  | 2012-3-3 23:54:16 | 阅读(783) |评论(2) | 阅读全文>>

大量new临时对象可以是一种优化手段

2012-2-29 8:24:23 阅读1314 评论5 292012/02 Feb29

有C++经验的人往往知道,频繁在堆上分配对象对性能伤害很大。比如这样的代码就不是好代码:

void foo(int[] a) {
WrappedArray* wrappedArray = new WrappedArray(a);
wrappedArray->bar();
delete wrappedArray;
}

然而在JVM(指HotSpot虚拟机)上完全不是这样的。尽管JVM不提供显式在栈上创建对象的功能,但JVM会自动通过逃逸分析找出生命周期在函数范围内的临时对象,然后运行时优化这个函数,把对象创建放到栈上。逃逸分析在JRE7里面已经默认开启了,对临时对象多的代码效果很大。

作者  | 2012-2-29 8:24:23 | 阅读(1314) |评论(5) | 阅读全文>>

印第安人质疑中国小学课文

2012-2-5 13:35:56 阅读832 评论2 52012/02 Feb5

印第安人质疑中国小学课文 - 杨博 - 为着理想勇敢前进

我小学时有一篇课文说讲了个故事,大意是

  1. 人的头盖骨很坚硬
  2. 生命生长的力量更大,只要把种子塞到头盖骨里面让种子发芽,头盖骨就被撑开了

我觉得这是胡扯嘛,同样是生命生长的力量,女人裹小脚时怎么没听说过撑破裹脚布的?

再说,按课文的意思,头盖骨如此坚硬,生命生长的力量如此大,那么可以推论,头盖骨生长的力量应该是世界上最大的力量了吧。于是印第安人就用自己的头做实验,用木板夹一夹,看看世界上最大的力量能否顶穿木板。

后来他们发现了真相:顶不穿的……

为了纪念他们为科学献身的精神,他们被称为

作者  | 2012-2-5 13:35:56 | 阅读(832) |评论(2) | 阅读全文>>

狮身人面像的逆袭,圆周率=5.1961524227...

2012-1-30 22:39:42 阅读950 评论2 302012/01 Jan30

最近有反华势力在造谣说π=4。笑死人了,圆周率怎么可能是整数?圆周率分明是“三倍根号三”好不好?
真相:圆周率=5.1961524227... - 杨博 - 为着理想勇敢前进
我是圆周率
只有掌握了正确的圆周率5.1961524227,才能建造出宏伟的狮身人面像和金字塔。

作者  | 2012-1-30 22:39:42 | 阅读(950) |评论(2) | 阅读全文>>

只有资深网页设计师才能看懂的笑话

2012-1-27 22:06:38 阅读774 评论0 272012/01 Jan27

刚看了第五季第14集生活大爆炸,上面提到海地和列支敦斯登参加1936年奥运会的时候,发现两国国旗相同。

于是,为了避免冲突,他们回国以后就开始着手把各自的国徽加到国旗上。

列支敦斯登人画了一个网页,在CSS中设置background-image为原来的国旗,然后找了个PNG格式的列支敦斯登国徽素材,做了个<img>标签把国徽放了进去。最后用谷歌浏览器打开这个网页,按Ctrl+P把网页打印出来,就去参加下一届奥运会了。

海地人也画了一个网页,在CSS中设置background-image为原来的国旗,然后也找了个PNG格式的海地国徽素材,做了个<img>标签把国徽放了进去。最后用Internet Explorer 6打开这个网页,按

作者  | 2012-1-27 22:06:38 | 阅读(774) |评论(0) | 阅读全文>>

网络论战和囚徒困境

2012-1-21 1:18:48 阅读444 评论0 212012/01 Jan21

今天看了看韩寒和方舟子的论战,这不就是囚徒困境吗?

想象一下可能发生的各种情况:

  韩寒沉默韩寒开骂
方舟子沉默
方舟子平安无事声望 +0
韩寒平安无事声望 +0

作者  | 2012-1-21 1:18:48 | 阅读(444) |评论(0) | 阅读全文>>

傻子才搞游行示威

2011-12-24 1:42:50 阅读621 评论0 242011/12 Dec24

近来发生了一件悲剧。某村村民因为一些合法诉求搞了两次游行示威,游行过程中难免有点暴力行为。官府事后算账,拘留了几个村民,其中一个村民被拘留死了。

如果理解游行示威的意义,这样的悲剧就不会发生了。 游行示威的意义并非向外界展示力量。若要向外界展示力量的话,集体签字或拍集体照就够了。 游行示威的意义在于让参与者产生激情,给参与者洗脑,提高参与者的凝聚力。

然而,游行示威并非洗脑的最佳做法。如果有合法的集体诉求,最佳手段是办法律讲座。法律讲座要

作者  | 2011-12-24 1:42:50 | 阅读(621) |评论(0) | 阅读全文>>

我曾经也用Google Code,直到我的膝盖中了一箭……

2011-12-12 8:23:05 阅读1440 评论0 122011/12 Dec12

github有Fork功能,Google Code一样有Clone功能。但是github上的项目比Google Code上的项目社区更活跃,Google Code上大家普遍懒得自己Clone、Hack并贡献补丁。为什么?

这是因为二者的界面设计不同。

github一个项目的首页内容主要就三样:仓库地址、源代码目录、README(内容通常是编译指南),你要是不去点右边大大的Fork按钮你都觉得不好意思。

再比较一下导航条:

  • github: Code | Network | Pull Requests | Issues | Wiki | Stats & Graphs 
  • Google Code: Project Home | Downloads | Wiki | Issues | Source

作者  | 2011-12-12 8:23:05 | 阅读(1440) |评论(0) | 阅读全文>>

如果我来设计Maven

2011-12-7 21:35:34 阅读1982 评论6 72011/12 Dec7

Maven有三大死穴
  1. 不灵活。尽管Maven本身已经包罗万象拥有了很多功能,但想要增加点自定义的编译时干的事情,就很麻烦。你必须另外建立一个Maven插件项目,然后用Java写一坨插件代码,最后再到另一个项目中去引用那个插件项目,把插件的执行注入到构建的某个步骤中。哪怕你想干的事情只是简单的一句 echo yyy=$XXX > xxx.ini,你都得写个插件。
  2. 依赖的库难以修改。尽管Maven提供了开源的仓库,但你使用他们的方式却是下载二进制包,这实在太不给力,如果你发现别人的东西有bug要修复,那你改了之后那个依赖的库就有两个版本,一个是官方版本,一个是你的修改版本,你就得hack你本地的Maven库缓存让他用你的修改版本,一旦官方版本更新,你就又要蛋疼了。

作者  | 2011-12-7 21:35:34 | 阅读(1982) |评论(6) | 阅读全文>>

打一句log时间不到一纳秒!完爆log4j、logback、slf4j……

2011-11-23 4:14:42 阅读3643 评论4 232011/11 Nov23

用Java打log时,最不爽的一点就是即使你把log禁用了,只要打log的那行代码还在,每次执行到那一行还是有开销!尼玛Java没有宏啊,不能像C++那样做个编译选项不输出log时就直接跳过嘛。况且就算Java有宏,搞Java那帮道貌暗忍的人渣们也不会用的,他们只用XML和Annotation 来配置,感受不到编译选项带来的爱。Scala就有个-Xelide-below的编译选项可以排除掉不需要的函数调用,直接被搞Lift的混蛋们无视了,照样用着天杀的slf4j.

那么用slf4j打log到底有多大开销呢?这取决于slf4j的后端,不管用什么后端,真正输出log是需要IO的,一般都要几十上百微妙,也就是几万或者几十万纳秒,这部分开销是省不了的。我刚才抱怨的是那些被过滤掉的log,这些log的开销根据参数的复杂程度,要消耗从几个纳秒到上百个纳秒不等。

纳秒什么的

作者  | 2011-11-23 4:14:42 | 阅读(3643) |评论(4) | 阅读全文>>

查看所有日志>>

 
 
 
 
 

License

 
 
模块内容加载中...
 
 
 
 
 
 
 
 

广东省 深圳市 双鱼座

 发消息  写留言

 
博客等级加载中...
今日访问加载中...
总访问量加载中...
最后登录加载中...
 
 
 
 
 
 
 
日志评论
评论列表加载中...
 
 
 
 
 
 我要留言
 
 
 
留言列表加载中...
 
 
 
 
 

八方来客

 
 
模块内容加载中...
 
 
 
 
 
 
 
模块内容加载中...
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018

注册 登录  
 加关注