`
文章列表
之前比较懒,对ThreadLocal代码未做细细研究,而是受一些影响,而导致对其产生了一些误解,最近考略到jvm对classloader的回收问题时,我才意识到可能犯了一个错误,我把这个错误写在博文里,链接是http://redhat.iteye.com/blog/1057974,读者可以查阅该文章,关于这个章节的一点错误,如果我的书籍能够出版的话,我将在里面进行更新,或者我会给出新版本电子书籍,如果可能的话。 对于这个章节出现的问题,我深表歉意! 为了方便阅读,我把论坛的帖子放在这里。 引用                   ThreadLocal的误解 文章分类:Java编程 可能大部 ...
可能大部分人的想法和我当初的想法一样,都是以为在ThreadLocal里使用一个Map,这个Map的键为Thread,值为绑定的变量。其实如果这样做是有问题的: 1. 就是当线程回收时,该线程绑定的变量不能被自动的回收,因为变量存储在ThreadLocal里,必须显式的去回收。如果此变量存储在线程里,那么线程回收时,这个变量没有被其他引用指向的话,它便随着线程一起回收。 2. 另外不这样做还有一个好处:如果Map在ThreadLocal里,那你必须得考虑线程同步访问这个Map,但是这确实没有必要,因为线程访问自己的变量,和其他线程没有直接的关系,所以把Map放在线程里,就不需要做同步的处理,这样 ...
这里给出其中的一章供参考,想阅读书籍全部内容,请参见博客附件, 示例代码也在附件里,也可以登录http://code.google.com/p/rambling-on-design-patterns/下载代码。 目前书籍已出版,请查看一下链接: 京东网的链接:《漫谈设计模式》 当当网的链接:《漫谈设计模式》 china-pub链接:《漫谈设计模式》 amazon.cn链接:《漫谈设计模式》 这里特别补充说明一下,希望大家能够把反馈及时发到我的邮箱ramblingondesignpatterns@gmail.com,支持开源共享和原创,谢谢! 申明:关于4.2.3章节的纰漏,请参见博文[置顶 ...
Hibernate Shards 中文参考指南翻译的beta版本终于完成了,希望能够和大家一起分享,也希望藉此修改一些翻译问题。 详细请参见文档
DevOps最近成了热词,字面上理解就是,“Dev”研发团队与“Ops”运维团队之间的那点事儿。那么,到底什么是”DevOps“呢? DevOps是一种持续交付软件的企业能力,它使企业能够抓住市场商机,快速响应客户反馈,并在速度、成本、质量和风险之间实现平衡。 为了能够持续交付,我们需要很多工具来协助完成,比如Git、SVN等源码管理工具,Jeckins、Timcity等集成工具,Scrum/TDD/XP/DDD(As a Tool,我们也认为是一种工具)等敏捷方法论,还有Log分析工具... 有多年实践敏捷方法的人提问,啤酒能算是DevOps的工具吗? 我们看看,什么样的工具 ...
在遗留代码上开发(Development on legacy code) 遗留代码   笔者从开发伊始到现在,大多数系统是构建在之前的遗留系统之上的,在开始,很难把遗留系统直接丢弃,特别是一些业务逻辑非常复杂的金融电信系统。 这些代码往往 ...
今天,使用360浏览器抢票,后来页面无法刷新,谁知道,过了20多分钟,朋友来电,说给我抢好了,原来使用一个全自动的抢票工具,是人民搜suo开发的,使用服务器的企业宽带替我24*7抢票,给那些还未抢到票的游子一个新的选择。 网页链接:http://www.jike.com/qiangpiao 只是另外一种的选择,是否存在隐私泄露问题,本人概不负责,特此提醒!
  DDD与TDD比较——TDD   最近承诺要写一篇TDD和DDD区别的文章,在比较之前,我这里会先分别给出一个DDD的开发实例和TDD的开发实例。这篇文章主要讲解TDD。   最近在做一个金融的项目,很多金融项目都比较陈旧,并且使用了大量store procedure去实现一些业务逻辑,比较难以做单元测试。我所做的那个项目只有几个简单的集成测试和回归测试,没有单元测试,虽然在测试环境运行了很长一段时间,但在发布到生产环境时,仍然出现了很多问题。   很多人跟我说,做单元测试,和快速发布背道而驰,他们是静态的眼光看待问题,单元测试是快速发布的基础,这里我举一个切身最常见的例子 ...
  DDD与TDD比较之——DDD   最近承诺要写一篇TDD和DDD区别的文章,在比较之前,我这里会先分别给出一个DDD的开发实例和TDD的开发实例。这篇文章主要讲解DDD。   几年前,曾接手了别人写了一半的一个项目,新加一些功能,然而模型不是很清晰,虽然反映了外部的业务逻辑,但是为了一些新的功能或者特殊案例,我们需要加一些特殊处理。由于模型不够清晰,原本1天能做的的东西,往往需要4-7天才能做完。  
上接和Thoughtworks的一次邂逅(一)     今年的春天特别冷,特别是上海,不过今天天气格外的好,太阳出来了,怕赶不上飞机(7点30左右),订了一辆出租车。由于有点感冒,怕体能消耗的厉害,买了瓶大果粒酸奶,再拿了几颗巧克力,在出租车上就开吃了,想着飞机上再吃一顿,这样体能应该充分一点。   进入机场还顺利,飞机也没有晚点,到北京9点3刻。看了下邮件中的介绍,选择了机场快线(25,价格蛮高的,还是上海的地铁便宜哈)。更不合理的是,机场线出来,想要去二号线的D出口,要买票进入,2个铜板。否则从其他出口出来要绕个大圈子,第一次来,时间紧迫,未作尝试。感觉我们纳税人养着这帮人,不给咱 ...
  虽然最终没能去Thoughtworks,也遇到了一些不愉快,但是内心还是很尊敬Thoughtworks。其实一切都很顺利,直到谈offer之时。以下是我的个人经历:   在找工作之际,thoughtworks居然给我打来电话,说51job上看到我的简历对我感兴 ...
  Tomcat 源代码分析之ClassLoader 此系列文章皆为Tomcat 7.0代码代码分析。   1. ClassLoader基础知识 1.1. Parent-Child委托模型   我们知道Java系统中,类加载器的默认加载方式是采用Parent-Child委托方式加载类的,即就是说,先尝试使用父类加载器加载类,如果没有找到,才自己加载该类,可以看到,这是一个递归的加载过程,核心代码大致如下: protected Class<?> loadClass(String name, boolean resolve) throws ...
  Tomcat 源代码分析之Socket通讯 此系列文章皆为Tomcat 7.0代码代码分析。   1.    Socket通讯: Tomcat对于 Socket的处理方式主要分为以下几种:  
  可伸缩性架构常用技术 ——之数据切分(Data Sharding/Partition) 1. 简介 本来想写一篇可伸缩性架构方面的文章,发现东西太多了,久久未能下笔,这里首先把大家最关注的数据切分(Partition/Sharding)方面的内容先写完,给大家参考。   我们知道,为了应对不断增长的数据,我们对数据进行切分,存储在不同的数据库里,本文提到的数据库在非特定指明的情况下,均指一个逻辑数据库(是一组数据库,比如Master-Slave),而非单一各个物理数据库。   其主要有两种方式: 垂直切分(Vertical Partition/Sha ...
有奖图书试读链接:http://bbs.chinaunix.net/thread-3656860-1-1.html 读者定位: 本书不是一本面向对象和Java语言的入门书籍,阅读对象主要是从事Java语言的软件开发人员但不限于Java语言的开发人员。 内容简介: 模式引入计算机科学领域已经有20余年了,最初人们侧重于面向对象的设计,而现在已经应用于计算机领域的各个方面,它们对计算机产生了深远影响。 若想一本书涵盖所有模式,那么这本书将会非常庞大,以前的设计模式书籍专注于介绍设计模式,虽然读者了解了这些设计模式,但是仍然不知道如何合理地使用它们,往往导致读者为了使用设计模式而设计,而不是从问题出 ...
Global site tag (gtag.js) - Google Analytics