- 博客(107)
- 资源 (10)
- 收藏
- 关注
原创 使用httpClient连接https时使用服务端证书(self-signed certificate)的方法
外出旅行、冬季保暖得常备户外袜、速干袜、加厚袜子哦。猛戳乐途驿站http://zhoupa1188.taobao.com抢购品牌男女式加厚户外袜子,coolmax、全棉、保暖、吸汗、速干、登山、徒步袜子。满10包邮 使用httpClient连接https时一般要在客户端引入证书。引入方法有三种:1、在jdk中导入证书;2、将证书路径设置到环境变量中:
2013-03-25 14:10:31
15721
原创 coherence学习1——CacheFactory
外出旅行、冬季保暖得常备户外袜、速干袜、加厚袜子哦。 猛戳乐途驿站http://zhoupa1188.taobao.com抢购品牌男女式加厚户外袜子,coolmax、全棉、保暖、吸汗、速干、登山、徒步袜子。满10包邮 CacheFactory.getCache("xxname"); 同一classLoader多次调用引用相同 CacheFactory.shutdown(); 关闭本
2013-03-25 14:10:29
1241
原创 分布式网格缓存Coherence简介
外出旅行、冬季保暖得常备户外袜、速干袜、加厚袜子哦。 猛戳乐途驿站http://zhoupa1188.taobao.com抢购品牌男女式加厚户外袜子,coolmax、全棉、保暖、吸汗、速干、登山、徒步袜子。满10包邮 摘要:Oracle Coherence是一个企业级的分布式集群缓存框架。具有自管理,自恢复,高可用性,高扩展性等优良特点,在电信BOSS等项目中有很大的应用价值。本文对它的特点
2013-03-25 14:10:26
1499
原创 ehCache配置介绍
外出旅行、冬季保暖得常备户外袜、速干袜、加厚袜子哦。 猛戳乐途驿站http://zhoupa1188.taobao.com抢购品牌男女式加厚户外袜子,coolmax、全棉、保暖、吸汗、速干、登山、徒步袜子。满10包邮 ehcache 的配置可以通过在 XML文件中声明,或者通过构造函数中指定参数进行程序控制。 两种方法都能很好的支持。不过将缓存的配置和实际代码分离开来更好一些,这有以下几个好处
2013-03-25 14:10:24
4503
1
Groovy元编程MOP(ExpandoMetaClass:EMC)的应用场景
使用ExpandoMetaClass和Category可以实现元编程。ExpandoMetaClass可以动态添加和修改类的构造器,方法和属性。Category只能动态添加和修改类的方法。当使用EMC动态添加或修改方法时,闭包Closure作为方法体被传入,它的delegate指向调用此方法的实例。具体使用可参考:http://www.groovyq.net/node/75 ...
2012-09-20 16:49:53
141
原创 Groovy元编程MOP(ExpandoMetaClass:EMC)的应用场景
使用ExpandoMetaClass和Category可以实现元编程。ExpandoMetaClass可以动态添加和修改类的构造器,方法和属性。Category只能动态添加和修改类的方法。当使用EMC动态添加或修改方法时,闭包Closure作为方法体被传入,它的delegate指向调用此方法的实例。具体使用可参考:http://www.groovyq.net/node/751、为类
2012-09-20 16:46:13
2053
用Groovy源编程(MOP)动态拦截(AOP)方法(比如记录String的concat和toUpperCase方法的耗费时间)...
实现AOP的方式有很多种,像Spring的AOP,它只能拦截Spring托管的bean;Groovy AST Transformations、ASM等在编译阶段通过修改字节码也可以做AOP;JAVA HOOK也可以做,但比较麻烦。Groovy MOP提供了一种很简单的方法实现AOP。 下面通过例子试用一下:如果想动态拦截某个方法,不想改源代码(或者不能改源码,比如Stri...
2012-09-10 17:36:10
186
原创 用Groovy源编程(MOP)动态拦截(AOP)方法(比如记录String的concat和toUpperCase方法的耗费时间)
实现AOP的方式有很多种,像Spring的AOP,它只能拦截Spring托管的bean;Groovy AST Transformations、ASM等在编译阶段通过修改字节码也可以做AOP;JAVA HOOK也可以做,但比较麻烦。Groovy MOP提供了一种很简单的方法实现AOP。下面通过例子试用一下:如果想动态拦截某个方法,不想改源代码(或者不能改源码,比如String已经是f
2012-09-10 17:32:32
1824
序列化:Serializable和Externalizable
Externalizable是深度定制序列化。如果同时实现了这两个接口,则只会执行Externalizable。 Serializable可以仅仅标记可序列化,使用JDK默认的序列化方法,也可以定制。实现方法: private void writeObject(ObjectOutputStream oos) {// oos.defaultWriteOb...
2012-08-29 15:25:42
110
原创 序列化:Serializable和Externalizable
Externalizable是深度定制序列化。如果同时实现了这两个接口,则只会执行Externalizable。 Serializable可以仅仅标记可序列化,使用JDK默认的序列化方法,也可以定制。实现方法: private void writeObject(ObjectOutputStream oos) {// oos.defaultWriteOb
2012-08-29 15:20:57
2166
自定义数据类型的数据库映射方案
基础数据类型,如String、Integer、Date、Boolean等它们可以很方便的映射到数据库:import grails.persistence.Entity@Entityclass MyEntity { String code String name static constraints = { code(uniq...
2012-08-29 14:24:57
195
原创 自定义数据类型的数据库映射方案
基础数据类型,如String、Integer、Date、Boolean等它们可以很方便的映射到数据库:import grails.persistence.Entity@Entityclass MyEntity { String code String name static constraints = { code(unique: true,
2012-08-29 12:12:26
4325
Akka2使用探索7——“云计算”示例(Actor、Future、Remoting、Router、Deploy、异步、并发使用Demo)...
假设有一个很耗时的运算,单台机器已经没法满足需求,这时你可以想到由多台计算机协作完成。具体怎么做呢。举个很简单的例子,假设这个耗时的运算是从1加到100000,你现在有两台服务器,可以让这两台服务器分别完成从1加到50000,和从50001加到100000,然后本机完成这两个结果之和。 两台服务器分别启动两个akka Server,同时还有一个CalcActor。这个计算acto...
2012-08-22 15:39:12
174
原创 Akka2使用探索7——“云计算”示例(Actor、Future、Remoting、Router、Deploy、异步、并发使用Demo)
假设有一个很耗时的运算,单台机器已经没法满足需求,这时你可以想到由多台计算机协作完成。具体怎么做呢。举个很简单的例子,假设这个耗时的运算是从1加到100000,你现在有两台服务器,可以让这两台服务器分别完成从1加到50000,和从50001加到100000,然后本机完成这两个结果之和。两台服务器分别启动两个akka Server,同时还有一个CalcActor。这个计算actor接收两
2012-08-22 15:35:56
3864
Akka2使用探索6(Futures)——实现并发和异步
Future用来获取某个并发操作的结果,这个结果可以同步(阻塞)或异步(非阻塞)的方式访问。 执行上下文Future 需要一个ExecutionContext, 它与java.util.concurrent.Executor 很相像. 如果你在作用域内有一个 ActorSystem , 它可以用system.dispatcher()作 ExecutionContext...
2012-08-14 18:01:17
192
原创 Akka2使用探索6(Futures)——实现并发和异步
Future用来获取某个并发操作的结果,这个结果可以同步(阻塞)或异步(非阻塞)的方式访问。执行上下文Future 需要一个ExecutionContext, 它与java.util.concurrent.Executor 很相像. 如果你在作用域内有一个ActorSystem , 它可以用system.dispatcher()作 ExecutionContext。你也可以用Exe
2012-08-14 17:57:44
3319
Akka2使用探索5(Typed Actors)
Akka 中的有类型 Actor 是 Active Objects 模式的一种实现. Smalltalk诞生之时,就已经缺省地将方法调用从同步操作发为异步派发。 有类型 Actor 由两 “部分” 组成, 一个public接口和一个实现, 如果你有 “企业级” Java的开发经验, 这对你应该非常熟悉。 对普通actor来说,你拥有一个外部API (public接口的实例) ...
2012-08-10 11:16:18
310
原创 Akka2使用探索5(Typed Actors)
Akka 中的有类型 Actor 是 Active Objects 模式的一种实现. Smalltalk诞生之时,就已经缺省地将方法调用从同步操作发为异步派发。有类型 Actor 由两 “部分” 组成, 一个public接口和一个实现, 如果你有 “企业级” Java的开发经验, 这对你应该非常熟悉。 对普通actor来说,你拥有一个外部API (public接口的实例) 来将方法调用异步
2012-08-10 11:12:34
3755
Akka2使用探索3(Duration 和 Deadline)
akka提供了两个关于时长的数据类型:Duration 和 Deadline,比如5秒钟这种含义。Duration.Inf表示无限,Duration.MinusInf表示负无限Deadline, 表示一个绝对的时间点,意义是最终期限,并且支持通过计算当前时间到deadline之间的差距来生成Duration下面是使用方法: import akka.util.Duratio...
2012-08-09 17:51:59
207
原创 Akka2使用探索3(Duration 和 Deadline)
akka提供了两个关于时长的数据类型:Duration 和 Deadline,比如5秒钟这种含义。Duration.Inf表示无限,Duration.MinusInf表示负无限Deadline, 表示一个绝对的时间点,意义是最终期限,并且支持通过计算当前时间到deadline之间的差距来生成Duration下面是使用方法: import akka.util.
2012-08-09 17:47:24
1803
Akka2使用探索4(Actors)
Actor模型为编写并发和分布式系统提供了一种更高的抽象级别。它将开发人员从显式地处理锁和线程管理的工作中解脱出来,使编写并发和并行式系统更加容易。Akka Actor的API与Scala Actor类似,并且从Erlang中借用了一些语法。 Actor类的定义定义一个Actor类需要继承UntypedActor,并实现onReceive方法。 PropsProp...
2012-08-09 09:25:30
156
Akka2使用探索2(Configuration)
akka2使用Typesafe Config库,可以使用ConfigFactory.load()加载配置文件,默认加载classpath下的application.conf, application.json and application.properties文件。ActorSystem将会把这些配置和reference.conf合并(merge)起来。?如果要写akk...
2012-08-09 09:21:49
153
原创 Akka2使用探索4(Actors)
Actor模型为编写并发和分布式系统提供了一种更高的抽象级别。它将开发人员从显式地处理锁和线程管理的工作中解脱出来,使编写并发和并行式系统更加容易。Akka Actor的API与Scala Actor类似,并且从Erlang中借用了一些语法。Actor类的定义定义一个Actor类需要继承UntypedActor,并实现onReceive方法。PropsProps是一个用
2012-08-09 09:20:22
6668
Akka2使用探索1(Remoting)
akka从1.2升级到现在的2.0.2后有了很大的改变。现在摸索一下如何使用。 Remoting可以方便地用于服务器之间通信。akka1.2可以使用clientActor.sendRequestReply将消息发送到服务器端,并且同步获取服务器端的返回消息。但是akka2已经不能这么用了,akka2使用tell方法给另一个Actor发消息。tell有两个重载方法:/** * ...
2012-08-09 09:20:16
134
原创 Akka2使用探索2(Configuration)
akka2使用Typesafe Config库,可以使用ConfigFactory.load()加载配置文件,默认加载classpath下的application.conf, application.json and application.properties文件。ActorSystem将会把这些配置和reference.conf合并(merge)起来。?如果要写akka应用,将配置写在
2012-08-09 09:17:58
1981
原创 Akka2使用探索1(Remoting)
akka从1.2升级到现在的2.0.2后有了很大的改变。现在摸索一下如何使用。Remoting可以方便地用于服务器之间通信。akka1.2可以使用clientActor.sendRequestReply将消息发送到服务器端,并且同步获取服务器端的返回消息。但是akka2已经不能这么用了,akka2使用tell方法给另一个Actor发消息。tell有两个重载方法:/** * Se
2012-08-09 09:14:46
2048
原创 使用Akka的Actor和Future简单地实现并发处理
应用场景:服务端要处理大量的客户端的请求,并且处理请求耗费较长的时间。这时就需要使用并发处理。多线程是一种方法,这里使用Akka框架处理并发。(以下代码在Groovy1.7.5、akka-actors-1.2下运行成功) 这里有三个角色:Client、Master、WorkerClient傻乎乎地发同步请求给Master,一直等到结果返回客户端才离开。Master接收客户端发...
2011-10-06 22:32:39
521
原创 年龄Age的计算(可以精确到1岁3个月10天)
import java.text.SimpleDateFormat/** * 年龄对象(3岁、3个月、30天) */class Age { Integer age AgeUnit unit Integer year Integer month Integer day Age() { }
2011-06-28 21:43:00
2484
原创 使用Groovy脚本引擎 根据表达式求值 或 反向解析构造对象
假设有这么一个需求:外部传入一个Map形式的字符串,如"[1:A,2:B]",现在要把这个字符串转换成map对象。 如果自己去解析并构造出map对象,显然很麻烦。 Groovy可以执行脚本,将一个脚本字符串传给GroovyShell,它再去sh.evaluate(expression). 所有我们也可以利用它来帮我们解析出map对象。 Map map = new Groo
2011-06-12 10:34:00
3317
原创 实战 Groovy: 使用闭包、ExpandoMetaClass 和类别进行元编程
实战 Groovy: 使用闭包、ExpandoMetaClass 和类别进行元编程 转载自:http://www.ibm.com/developerworks/cn/java/j-pg06239.html 随心所欲添加方法 Scott Davis, 创始人, ThirstyHead.com 简介: 进入到 Groovy 风格的元编程世界。在运行时向类动态添加方法的能力 — 甚至 Java™ 类以及 final Java 类 — 强大到令人难以置信。不管是用于生产代码、单元测试或介于两者之间的任
2011-06-01 10:16:00
1197
原创 Groovy将字符串类型转换为自定义类型的方法
将一个字符串转换为自定义类型: 例如Quantity是自定义的一个class,现在想这么调用 Quantity quantity = "100个" as Quantity 或 def quantity = "100个".asType(Quantity) 需要重载String的asType方法(String.metaClass.asType)。具体实现如下(注意static方法块): package com.cninsure.datatype /**
2011-05-30 21:00:00
4100
原创 jira插件在idea 10.5下面可以使用的方法
在XXX/.IntelliJIdea10/config/plugins目录下面找到atlassian-idea-plugin.jar,用winrar打开,删除 org/apache/commons/logging目录就行了
2011-05-18 19:49:00
1665
原创 用maven编译groovy项目
maven编译groovy项目需要用到gmaven插件,pom.xml配置如下 添加库: groovy http://repository.codehaus.org/org/codehaus/groovy/ 添加依赖: org.codehaus.groovy groovy 1.7.9 添加插件: org.codehaus.gmaven gmaven-plugin
2011-05-10 11:15:00
5656
原创 Groovy的展开操作符(Spread Operator)*.和*
Groovy的spread-dot操作符 "*."操作符称之为:spread-dot操作,即“展开(点)”操作。比如 list*.member 跟 list.collect{ item -> item?.member } 是等效的。此处member可以是属性,也可以是get/set方法,甚至是一般的方法。如下例 class SpreadDotDemo { def count } def list = [new SpreadDotDemo(cou
2011-05-04 09:45:00
1294
原创 用ASM实现AOP
AOP的关键在于拦截,如果在代码中直接写入要插入的代码则是最直接的AOP。这当然不是指在source中生写代码,而是希望在程序员不知觉的情况下修改了代码。 asm是个开源包,可以很方便地读写class的bytecode。网站是http://asm.ow2.org/。为了方便修改类建议下载Eclipse插件。 使用方法挺简单。首先实现一个ClassAdapter导出类,找到要修改的函数: public class SOClassAdapter extends ClassAdapter { public
2010-08-07 17:28:00
933
用ASM实现AOP
AOP的关键在于拦截,如果在代码中直接写入要插入的代码则是最直接的AOP。这当然不是指在source中生写代码,而是希望在程序员不知觉的情况下修改了代码。 asm是个开源包,可以很方便地读写class的bytecode。网站是http://asm.ow2.org/。为了方便修改类建议下载Eclipse插件。 使用方法挺简单。首先实现一个ClassAdapter导出类,找到要修改的函数: publi...
2010-08-07 09:29:34
223
原创 继承类的@Transactional:org.hibernate.HibernateException: No Hibernate Session bound to thread, and configuration does not allow crea
假设有以下类: @Transactionalpublic class SubClass extends SuperClass { public void loadDb(){//数据库操作 }}public class SuperClass { public void savedb() {//数据库操作 }}savedb是父类的方法,loadDb是子类的方法。如果有以下调用: @Test public vo
2010-07-27 13:43:00
1823
1
原创 Red5在Remoting时如果添加了@Transactional就找不到方法的原因
如果一个Remoting的service实现了某接口,并且有@Transactional的标注,那么客户端在调用服务器方法的时候很可能报找不到方法的错误。这是因为@Transactional默认使用jdk的动态代理,red5寻找方法的时候去找接口声明的方法。如果该方法没在接口中声明,自然就找不到。 要解决这个问题比较直接的方法是在接口中声明。这样做会比较繁琐。所有Remoting方法都得在接口中声明。 另一种方法是强制使用CGLib代理,这只需要简单配置即可,不必修改代码。配置方法是在Spring配置文
2010-07-27 13:25:00
714
Red5在Remoting时如果添加了@Transactional就找不到方法的原因
如果一个Remoting的service实现了某接口,并且有@Transactional的标注,那么客户端在调用服务器方法的时候很可能报找不到方法的错误。这是因为@Transactional默认使用jdk的动态代理,red5寻找方法的时候去找接口声明的方法。如果该方法没在接口中声明,自然就找不到。 要解决这个问题比较直接的方法是在接口中声明。这样做会比较繁琐。所有Remoting方法都得在接口中声...
2010-07-27 05:26:20
99
原创 在父类获取子类属性
在父类中能获取子类的属性吗?一般情况下是不行的,因为孩子尚未出世哪里来的属性。但有时需要在父类处理该类(包含子类)的所有属性,该怎么做呢,有种方法能解决——在父类中将子类的实例引用进来。假设BaseClass是基类,有个getAll方法用以获取该类的所有属性。SubClass继承子BaseClass,SSClass继承自SubClass,SSClass的实例调用getAll方法时获取SSClass及其父类的所有属性。具体做法如下: import java.lang.reflect.Field;
2010-06-29 11:55:00
17607
2
时间日期处理框架Joda-time
2014-12-15
《快学Scala》中文全本
2014-12-15
AKKA指南(并发、异步、远程调用)
2011-11-22
(中文版)3D数学基础图形与游戏开发
2009-09-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人