项目中碰到一个问题,简单描述一下:
根据方法定义,自动生成相应的文档(不是javadoc,是非技术可读的),支持动态对其调用(Method.invoke),根据结果返回特定的序列化的结果。

目前支持的全是有返回值的。
今天出现一个无返回值的情形(void),以前从未考虑过void对应的返回具体是个嘛东东,void对象?一个特殊的东东?或者就简单的返回空指针。

另一个问题,void.class可以得到void的class,看起来应该是可以有对应的对象的。

- 阅读剩余部分 -

Gson1.7.1处理泛型中对象为子类时序列化时,泛型中定义的为父类,序列化时子类信息丢失。
跟踪代码发现其在序列化时,使用的是初始反射method得到的父类类型,而不是运行时的子类。
原计划做一个patch,后发现gson在2.2.2版本做了比较大的结构化的调整,已经fix此问题。
留此备忘。
当时做代码跟踪时,没留日志,现在也没精力再找一遍了。本可以留下些东东的。

上次网络抖动,发现一系列的问题,其中之一就跟这个保活定时器有关。

业务描述:
提供的服务为主备模式,调用方仅会访问主服务,备服务仅在主服务挂掉的情况自动切换以提供服务,平时无访问。

问题描述:
当网络出现抖动时,一段时间主服务不可达,备服务升为主服务提供服务。但到原主服务上看时,发现所有的网络连接还都在,但在客户机上已经完全没有对这个原主服务的任何连接。

- 阅读剩余部分 -

前几天处理了一个比较诡异的问题,一直没时间整理,今天简单总结一下。
业务实现概述:
业务在启动时连接zk并创建EPHEMERAL_SEQUENTIAL模式的结点
[code]
/**
* The znode will be deleted upon the client's disconnect, and its name
* will be appended with a monotonically increasing number.
*/
EPHEMERAL_SEQUENTIAL (3, true, true);
[/code]
同时对其所在的目录加watcher,当watcher监听到Expired事件时,重连并检验当前结点在zk中的状态,没有则创建之。
[code]
/** The serving cluster has expired this session. The ZooKeeper
* client connection (the session) is no longer valid. You must
* create a new client connection (instantiate a new ZooKeeper
* instance) if you with to access the ensemble. */
Expired (-112);
[/code]

问题描述:
网络抖动后,业务连接zk正常,却未建立相应的结点。结果是:此业务等于是被下线了,出现问题。

- 阅读剩余部分 -

今天有同事碰到问题,打在jar包中的spring配置文件无法加载,后发现是上下文配置成了:classpath:spring/*.xml
改成classpath*:spring/*.xml后搞定。

在csdn中看到多篇文章,这么解释的:
[code]
classpath*:的出现是为了从多个jar文件中加载相同的文件.
classpath:只能加载找到的第一个文件.
[/code]

感觉不是太可靠,简单翻了一下源码,在PathMatchingResourcePatternResolver中可以一探究竟。

- 阅读剩余部分 -

最近在搞的一个项目,在Android 4.4(API 19)下,gzip会崩溃。
相关的调用代码如下:
[code]
ByteArrayOutputStream baos = new ByteArrayOutputStream();
GZIPOutputStream gos = null;
try {
gos = new GZIPOutputStream(baos);
gos.write(srcData);
gos.finish();
gos.flush();//这里会崩溃
} catch (IOException e) {
e.printStackTrace();
} finally {
gos.close();
}
[/code]
崩溃时的日志如下:
[code]
11-25 15:33:13.757: E/AndroidRuntime(10723): FATAL EXCEPTION
11-25 15:33:13.757: E/AndroidRuntime(10723): Process: com.xxxxx, PID: 10723
11-25 15:33:13.757: E/AndroidRuntime(10723): java.util.zip.DataFormatException: stream error
11-25 15:33:13.757: E/AndroidRuntime(10723): at java.util.zip.Deflater.deflateImpl(Native Method)
11-25 15:33:13.757: E/AndroidRuntime(10723): at java.util.zip.Deflater.deflateImpl(Deflater.java:241)
11-25 15:33:13.757: E/AndroidRuntime(10723): at java.util.zip.Deflater.deflate(Deflater.java:232)
11-25 15:33:13.757: E/AndroidRuntime(10723): at java.util.zip.DeflaterOutputStream.flush(DeflaterOutputStream.java:193)
11-25 15:33:13.757: E/AndroidRuntime(10723): at com.xxxxx.xx.Xxx.compress(Xxx.java:727)
...此处略去N行无关信息
11-25 15:33:13.757: E/AndroidRuntime(10723): at android.os.Handler.dispatchMessage(Handler.java:102)
11-25 15:33:13.757: E/AndroidRuntime(10723): at android.os.Looper.loop(Looper.java:137)
11-25 15:33:13.757: E/AndroidRuntime(10723): at android.os.HandlerThread.run(HandlerThread.java:61)
[/code]

- 阅读剩余部分 -