代码改变世界

阅读排行榜

慎用ThreadLocal

2011-12-14 17:05 by 康杜, 812 阅读, 收藏,
摘要: ThreadLocal的作用1)保存在当前线程计算的中间结果2)保存上下文信息,比如用户的身份等等ThreadLocal的副作用1) 信息泄露。 在服务器环境下(比如WebLogic), 线程往往被保存在线程池中。由于每个用户的请求(Request)都是通过一个线程来处理的,当线程处理完一个用户的请求之后,服务器应用程序会将该线程存放在线程池中。当下一个用户请求时,这个线程又被调度来处理请求。这种情况下,上一个用户的上下文信息(比如身份信息)将被得到。2)内存泄露。解决方法当每个用户的请求处理完成之后,调用ThreaLocal.remove()方法将数据清除参考:http://dave.sre 阅读全文

自动化数据库更新

2012-03-13 13:23 by 康杜, 780 阅读, 收藏,
摘要: 简介 在我们的开发和运维过程中,通常会维护不同的数据库。由于在某个时间点,各个数据库的结构和状态是不一样的,所以我们开发人员需要在不同的数据库中运行相同的数据库脚本(SQL),比如我们修改了某个字段的长度并编写了一段SQL语句,我们需要在开发数据库、测试数据库、客户测试数据库、生产数据库中运行这段相同的SQL脚本。重复的工作不仅增加我们的工作量同时还增加我们出错的机会。 为了让我们的工作更加轻... 阅读全文

Groovy死锁例子

2011-12-14 08:32 by 康杜, 731 阅读, 收藏,
摘要: Groovy死锁例子import java.util.concurrent.atomic.AtomicIntegerclass DeadLock{static AtomicInteger lock = new AtomicInteger()static AtomicInteger lock2 = new AtomicInteger()static message1(){//If no thread obtains the lock, then executesynchronized(lock){println "I am" + Thread.currentThread(). 阅读全文

Polyglot Programming(多语言编程)

2012-01-06 13:49 by 康杜, 579 阅读, 收藏,
摘要: 来自Thoughtworks的Neal Ford http://www.nealford.com/bio 在2006年的时候提出一个概念Polyglot Programming, 他认为一个理想的系统应该运用多种语言编写,利用各种语言的优势以解决不同的问题。 在我们的日常工作中一个明显的例子是JavaScript做页面展示,Java(.Net)平台处理业务逻辑,或者还可以加上PL/SQL等... 阅读全文

用Groovy方式实现接口便于单元测试和协作开发

2012-01-05 14:00 by 康杜, 553 阅读, 收藏,
摘要: 在现代的软件开发中,应用系统往往被划分为多个模块以降低系统的复杂度,同时也便利于开发人员开发和测试。本文着重说明采用Groovy方式如何便于协作开发。 OrderBook 团队在开发订单管理模块,编写了一个接口 package art.groovy.order; public interface Order { int place(); } Billing团队... 阅读全文
上一页 1 2 3 4 5 6 7 8 ··· 10 下一页