Lombok 介绍

Lombok最初我是在公司内部的 broadcast 上面听到有 principal 介绍到它的,和 AspectJ 归在一起。看了几个例子之后觉得有点意思,就去 Lombok 的官网 上扒了一下。我们已经知道向 AspectJ、CGLib 等等都可以做到对已有 Java 代码在字节码层级的改变,无论是编译时期静态织入还是运行时期动态代理,对于我们使用 AOP 来减少那些重复性编码的劳动、增加切面性质的逻辑颇有帮助。这里有几个概念:

  • 首先是 AOP,我在这里不啰嗦,网上有的是这样的文章。
  • 其次,如果你还没有接触过 AspectJ,那么在 Lombok 之前,AspectJ 是值得推荐了解的。和 Lombok 相比,AspectJ 更强大,有它自己的

[……]阅读全文

Memcached 调优

cache项目中有一个对实时响应性比较高的服务,引入了 Memcached 以减少延迟和减少数据库压力。但是期间遇到了一些问题,这里记录一些调优细节。 

客户端选择

  • 最开始我使用的是 Memcached Java Client,但是最后放弃了,放弃原因包括:
    • 有时会出现的“No Thread For Socket”异常,我记录在 这里
    • 它不支持 NOREPLY 模式(在这种模式下,更新缓存的 set 操作可以不需要 Memcached 服务端响应,这使得 set 操作非常非常快)。
  • 现在我使用的是 XMemcached

统计信息

可以通过 nc 命令向 Memcached 服务端发送消息来获取统计信息,例如:

echo "

[……]阅读全文

Issue record: “No thread for socket” about Memcached

MemcachedWe own a service supplying not-real-time data to the downstream clients. In order to reduce the average latency and the pressure on database, Memcached was imported as the cluster center cache, and our service consumed it. I encountered an issue when Memcached was firstly deployed on production envi

[……]阅读全文

Ehcache 详细解读

ehcache Ehcache  是现在最流行的纯 Java 开源缓存框架,配置简单、结构清晰、功能强大,最初知道它,是从 Hibernate 的缓存开始的。网上中文的 EhCache 材料以简单介绍和配置方法居多,如果你有这方面的问题,请自行 google;对于 API,官网上介绍已经非常清楚,请参见官网;但是很少见到特性说明和对实现原理的分析,因此在这篇文章里面,我会详细介绍和分析 EhCache 的特性,加上一些自己的理解和思考,希望对缓存感兴趣的朋友有所收获。

 

一、特性一览 ,来自官网,简单翻译一下:

 

1、快速轻量
过去几年,诸多测试表明 Ehcache 是最快的 Java 缓存之

[……]阅读全文

OSCache 框架源码解析

OSCache 是一个受到争议的开源缓存框架,OpenSymphony 网站已经关闭(OpenSymphony 可是诞生过 Quartz、WebWork、SiteMesh 和 OGNL 等数个非常有名的框架的)了,它也已经不维护了。在 JavaEE 的缓存框架领域,似乎已经是 EhCache 等其它支持分布式的缓存框架的天下了,OSCache 垂垂老矣?但是 OSCache 的源代码依然值得一读,一度作为最常用的缓存框架,代码量却不大,绝大部分类一天的时间就可以详详细细地阅读完。

 

统观 OSCache 的代码,我最关注其中的 base、algorithm、events、persistence、clustersup

[……]阅读全文

Grails 引发的中文乱码问题

在一个 Grails 项目里面,我想写一个过滤不良信息的 Service,而将过滤的规则放置在 xml 文件之中。

以下 xml 文件放置不良信息,包含单词、词组和句法,支持正则表达式:

<filter>
    <words>
        <word>fuck</word>
        <word>kill</word>
    </words>
    <phrases>
        <phrase>asshole</phrase>
    </ph

[……]阅读全文

在 Eclipse 中配置 Grails 工程

1、环境变量:

配置 GRAILS_HOME,注意一定要配置到 build.xml 所在的文件夹:

image
2、Eclipse 装上 Groovy-Eclipse 插件,可以使用 link 方式。

3、导入 Grails 工程,并选中"Copy projects into workspace"

4、工程的属性中,选中:

 image

这样就阻止了 groovy 文件被 Eclipse 编译成 class 文件。

5、工程属性的 Java Build Path 中,选择 Libraries,选择 Add Variable,添加变量 GRAILS_HOME,并将其中的所有文件夹内的所有 jar 文件全部引入工程

[……]阅读全文

SSH 学习杂记

ssh Web 开发是一个很有意思的事情。Struts+Spring+Hibernate 作为一种当今流行的开发模式,我很荣幸地在一周左右的时间里,疯狂地边学边琢磨了一番,甚有感触。

Struts:

Web 应用程序框架统一体:PHP、ASP → Struts → JSF、Shale → Ajax

从左至右与常规桌面应用程序相似度依次提高。

clip_image002

Struts 将用户表单使用 FormBean 打包,根据 struts-config.xml 里面 mapping 的配置送入 ActionServlet,ActionServlet 决定自己处理或者分发给更单一任务的 Action 处理。

事实上 Struts 的贡献主要在表示层上,对于

[……]阅读全文

back to top