- 博客(11)
- 收藏
- 关注
原创 代码规范的那些事儿
作为一个苦逼的程序员,因为种种原因经常需要阅读别人写的代码。您是否有因代码杂乱冗余而心生厌恶,您是否有过因代码晦涩难懂而抓狂,您是因代码低级的逻辑错误而愤概,您是否因代码结构不合常规而需要到处查找,您是否因看到几百甚至上千行代码的方法而望洋兴叹,您是否因代码缺少注释而猜测以及花很多时间去理清楚前后逻辑。苦逼的我全部遇到过并且很多很多,这些代码的作者从世界500强顶级IT公司到几十人的小公司同事,从
2012-06-28 20:04:26 44341 50
原创 运用ThreadLocal工具实现线程专有变量
普通对象的变量,当有多个线程访问时,虽然每个线程都有一份拷贝,但这是由于虚拟机优化而发生的,原则上来看都是同一份。可以通过加volatitle关键字阻止虚拟机优化。本文讨论的相反,希望实现每一个线程都有自己专有的变量对象。您自己当然可以通过threadId+Map的方式实现,但Java类库已经提供了ThreadLocal,可以直接使用,本文将介绍其用法。 ThreadLocal是一
2012-06-27 00:02:34 2022
原创 REST架构之Apache Wink介绍
REST(Representational State Transfer) based Web Service是相对于传统的Web Service(SOAP+WSDL+UDDI)而提出的。传统的Web Service可以很好的解决异构系统之间的通信问题,但是需要首先定义好XML格式的合同(WSDL),client和server都必须严格遵守协议,不容易升级以及集群伸缩。REST Web Serv
2012-06-24 22:39:30 14303 3
原创 Java多线程程序非阻塞式锁定实现
Java对多线程程序的锁定已经有良好的支持,通常使用synchronized修饰一个方法或者一段代码。但是有一个问题,多个线程同时调用同一个方法的时候,所有线程都被排队处理了。该被调用的方法越耗时,线程越多的时候,等待的线程等待的时间也就越长,甚至于几分钟或者几十分钟。对于Web等对反应时间要求很高的系统来说,这是不可以接受的。本文就介绍一种自己实现的锁定方法,可以在没有拿到锁之后马上返回,告诉客
2012-06-19 14:22:59 6295
原创 Log4j之高级配置
绝大多数的Java项目记录日志都是使用Log4j,简单的配置网上有很详细的教程。当项目变得复杂,比如分很多模块,很多层次,很多通信方式时,需要把不同模块或者不同层次或者不同通信方式的日志记录到不同的文件输出。本文就介绍如何配置Log4j以满足以上需求。 Log4j日记记录过程可以拆解为日志来源以及日志的输出地之间的关系。日志的来源与日志输出完全独立,可以是多对多的关系。说得简单一点就
2012-06-17 09:11:55 8828
原创 Web网页布局多列等高之Sliding Faux Columns
当网页的布局有很多列时,由于Div的高度依赖于内容的多少,所以经常会发生多列不等高的情况。如果各列的背景色不一样会很难看。有很多方法可以实现等高效果。本文将介绍Sliding Faux Columns方法。该方法英文的介绍很多,在此主要贴本人使用的代码。 Sliding Faux Columns主要通过为父Div设置背景色来实现各列等高效果。在布局完成并确定Color Scheme之后,
2012-06-15 18:51:26 2617
原创 Swing鼠标悬停时巧用上下文菜单显示提示信息
Swing的大多数控件都已经实现了setToolTip接口,当鼠标悬停时会显示设置好的提示信息。但是当需要精确地显示复杂的提示信息时就力不从心。本文就介绍利用上下文菜单来显示复杂的提示信息。 首先需要解决在鼠标悬停时在何地显示提示信息的问题,这可以通过为控件添加MouseMotionListener来实现。通过MouseEvent的Point可以知道当前鼠标悬停的精确地点,再判断相对于
2012-06-15 18:05:01 5032
原创 Spring嵌套事务机制以及不同策略的配置实现
通常使用Spring框架的程序会统一的在Service层运用Spring AOP进行事务控制,分为声明式和编程式两种,互联网上已经有很多的资源介绍Spring事务的配置,Spring Reference也有详细介绍。但是介绍嵌套式事务的并不多。日前本人试图运用AOP记录Service的调用情况并记录到Database,但是发现当Service发生异常时无法正常记录Database log,后来通过
2012-06-13 17:01:11 10712 1
原创 JAVA反射与AOP双剑合璧详细记录操作日志
运用AOP来记录用户的操作日志在项目中比较常见,优点是只需在一个地方编写Advice,通过AOP声明(织入)然后就可以记录很多不同的操作(API)。但是也有其缺点,因为Advice服务于不同的API,而各个API的参数,返回值不同,甚至服务的对象都不一样,那么能做到的也只能是判断是否有异常,异常的具体信息等简单的内容。如果想要个性化的为每一个API都记录执行参数,返回值,甚至Target的属性时就
2012-06-06 19:33:34 14528
原创 Jasperreports以及iReport4.5报表PDF导出字体完美解决方案
在使用Jasperreports以及iReport设计报表时,导出PDF是一个常见的需求。网上解决PDF导出中文显示问题相关的文章很多,无非就是设置控件的pdf font name和pdf encoding属性,但是在4.5中都已经被弃用了(不推荐)。并且原来的解决方案还存在两个问题:(1)预览的字体通常不是STSong-Light, 这会导致预览字体与导出到PDF不一致。(2)当字符串中既有字母
2012-06-05 18:42:29 15253 6
原创 运用Command设计模式释放Server资源
Server可能与多个系统建立连接,当Shutdown的时候需要释放资源。比如数据库连接,Socket连接等等。当然也可能需要释放本地资源。本文主要展示如何运用Command设计模式来实现服务器资源的释放。得到的效果是不同的资源释放过程具有独立性,新增释放过程不会影响到原来的架构设计。 首先定义一个释放资源的统一接口Releaser,为Command模式中的Command。
2012-06-05 13:39:25 2865
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人