`
ajoo
  • 浏览: 449553 次
社区版块
存档分类
最新评论
文章列表
随着时间的推移. 当初吵翻了天的依赖注入再也不是什么新鲜玩意儿. 在日复一日给资本家拉磨的平淡中, Spring和自己写的小玩具也都被扔在记忆的垃圾堆里不必提起. 对Guice的激情也逐渐磨灭到麻木和冷淡了. 日常一些邮件列表 ...
为人父母, 一个比较纠结的事情, 就是到底怎么保护那个啥也不懂的小家伙. 如果护着她太紧了, 会不会让她失去和外部接触, 学习的机会, 变得孤僻, 依赖性强? 如果保护不利, 被人欺负了, 或者甚至被拐跑了, 后悔药没地方买呀. 到底要不要告诉她外面有很多坏人呐? 唉. 不自寻烦恼了. 埋头写代码! 不过, 嗯, 这个好像我写代码怎么也在想着类似的东西? "要不要检查这个参数是不是null?", "要不要判断当前状态对不对?" 一个好编程习惯是尽量不要用null, 除非特殊情况, 参数都不允许是null. 而那些特殊的需要null的场合, 用@Nul ...
有时候我们不可避免地要实现Comparator, 好做排序之类的事情. 要比较两个整数的时候, 我一度曾经这么写: return a - b; 多简单啊! 如果a比b大, 无疑这个东西返回正数了. 可惜啊, 现实永远比理想残酷. java的整数不是数学中的整数, 它可能溢出地! int a = -2000000000; int b = 2000000000; System.out.println(a - b); // prints "294967296" 正确的写法是: if (a > b) { return 1; } else i ...
用瓜娃以前, 每当遇到把一串东西用逗号分割打印出来的需求, 俺都有点烦. 这算是挺简单无聊的活, 但是每次写起来那代码总是觉得象56k猫拨号上网那么让人磨牙: StringBuilder builder = new StringBuilder(); int first = true; for (String s : str ...
另外一对我经常需要用到的, 是Resources和Files. 一般来说, 如果我有一大块的文本, 或者properties文件, xml, 我会选择把它们存到一个文本文件里, 放到jar里. 然后在运行时, 把这个文件当作资源读出. 这样做比直接存到文件系统里面的好处, 在于它对部署方式不敏感, 不管我的代码如何部署, 我只需要从ClassLoader找到我要的文件就好了. 我可以直接用ClassLoader来寻找我的资源, 象这样: URL url = getClass().getClassLoader().getResource("mypackage/myfile.txt ...
其实guava可以看成是支持java5的apache commons之类的项目. 第一第二回讲的主要是集合类的一些最常用的工具. 其实com.google.common.collect里还有很多非常有用的工具, 比如Ordering, ComparisonChain, Iterables, Multiset, Multimap等等. 这里有些我们后面还会涉及. 小兄弟正在做socket客户服务器通信相关的课程设计, 所以我有点迫不及待先讲讲common.io这个包了. 这里面最有用的, 在我看来, 就是CharStreams和ByteStreams这两个工具. 大家知道, Java里读外设主 ...
古人云 (无图无真相, 有美女走光图为证): 引用Pat-a-map, Pat-a-map, maker's man, Make me a map as fast as you can... 这集要讲的工具叫MapMaker. 顾名思义, MapMaker就是帮你做Map滴, 而且是as fast as it can! 实在是居家旅行, 制作Map的必备工具啊! 可是啊, 这计算机一思考, 你就笑了: "小样儿, 做Map还用你做啊? 当我文盲?" 不就是: new HashMap<姓名, 奖金>()嘛. 如果用上回书提到的Maps就是: Maps.ne ...
序 花开花落,花落花开。少年子弟江湖老,红颜少女的儿子都会打酱油反三俗了. 蓦然回首, 那个仿佛刚刚还在上幼儿园, 拉着我的手让我带着到麦当劳买鸡块冰激凌吃的小屁孩儿; 上了小学, 抱着我给买的盗版commando苦苦钻研攻略的小表弟, 开始写java程序了! 暑假去小表弟学校宿舍晃了一下. 书桌上随手堆着的可乐矿泉水瓶; 书桌下凌乱的鞋子, 鼠标; 寝室门上的个性标语; 隔壁在炎夏里半裸着看片子(木有看清是女主是否半裸)的猥琐男生, 都让俺情不自禁地小资起来: 唉, 世界是你们的了! 唯一地遗憾是没有重温一下女生寝室的风光 --- 上了年纪了, jailbreak门口大妈的身手不再了呀 ...
很久不搞sql了。整天就是java, java,也挺无聊的。 其实想想,sql还是挺好玩的,尤其是把别人吭哧吭哧几百行的stored procedure改写成一个简洁的query,或者一个本来要跑十分钟的stored proc改成几秒钟,感觉还是满爽的。 闲来无事,把一些小技巧回忆下来,省得以后考人的时候想不起来了。 1。一个基金performance表,记录着每个基金的每个月相比于前一个月的增长百分率,比如: 一月: 2.1(%) 二月: -0.5 (%) 三月: ... 十二月:15 (%) 基金用基金ticker来标识。 请列出每个基金从去年五月到今年五月的总共增长。 2。每 ...
code review过程中,看到这样的代码: Pair<String, String> getFooAndBar() { ... } 恶魔说,弄个Pair来表达FooAndBar不太容易理解,要不干脆弄个类把foo和bar封装起来,返回出来吧。 天使:“同意”。 下一版代码: class FooAndBar { private final String foo; private final String bar; FooAndBar(String foo, String bar) {...} public String ge ...
今天同事和我讨论他遇到的一个问题。具体要求是这样的,在运行时,我们会从模块G得到一个Map,这个Map里面都是一些字符串对,你可以理解成一个字典,有字符串的key和字符串的value。简短节说,就是 Map<String, String> 非常非常复杂深奥。 好,现在我们事先知道要从这个map里读取一些数据点,比如:id, name, sex等等。 对id,我们知道读出来的是int;对name,是string;对sex,应该对应一个叫Gender的enum类型。 这就涉及一个自动类型转换的问题。我们希望不用对每个数据点做手工类型转换。 另外一个需求,一些数据点是有缺省值的。比 ...
工作中,和同事对测试异常的最佳方法产生了分歧。 我是比较欣赏JUnit4的@Test(expected=FooException.class)的啦,觉得这样多清爽啊,多declarative啊,再不用写那么一大坨try-fail-catch了。 不过同事(以下简称S)不这么认为。他觉得try-fa ...
我对计算机界的八卦一向都不太敏感,也对很多所谓的“名人”不感兴趣。你说那章子仪,Britney好歹还能拿脸蛋,衣服,和衣服里面的东西来娱乐大众,一帮不知道哪来的猥琐男就写了点谁都能写的程序,又不是证明了歌德拔河 ...
最近发现《Practical Ruby Projects》用rparsec来讲解怎么在Ruby里构建lisp。于是假公济私地用公司的账户订购了一本,也算给自己捧场。 书拿到,打开一看,好么,被批评了 引用Caution: For such an excellent library, rparsec plays very fast and loose with namespaces. Its parser classes are installed directly into root namespace. As a library author, try not to do this. ...
在1.4上,我最喜欢玩的是dynamic proxy。以前的那个Sum的“奇技淫巧”就人人喊打来着。自打不用担心对1.3, 1.4的兼容问题后,我发现我越来越爱拿着annotation的锤子到处乱砸了,而且是用reflection而不是apt。 给Guice加了一个@Provide的外壳: class MyModule extends AbstractModule { @Provide @Singleton public Foo foo(FooImpl impl) { return impl; } @Provide @LittleStrong p ...
Global site tag (gtag.js) - Google Analytics