存档

2013年12月 的存档

MySQL的状态[HY000]错误码[1271]

2013年12月27日 没有评论

一个in的查询语句(select * from xxtable where c_name in (?,?,?,?)),出了这个错误。
到官网上搜一了圈,得到的说明只有这些:

错误:1271 SQLSTATE: HY000 (ER_CANT_AGGREGATE_NCOLLATIONS)
消息:对于操作'%s',非法混合了校对。

Error: 1271 SQLSTATE: HY000 (ER_CANT_AGGREGATE_NCOLLATIONS)
Message: Illegal mix of collations for operation '%s'

对应的中英文地址分别为:
http://dev.mysql.com/doc/refman/5.1/zh/error-handling.html
http://dev.mysql.com/doc/refman/5.7/en/error-messages-server.html
更多内容…

分类: 工作 标签: , , , ,

Java中void类型的问题

2013年12月25日 没有评论

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

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

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

分类: 工作 标签: ,

Gson1.7.1泛型对象为子类时序列化问题

2013年12月25日 没有评论

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

TCP连接的保活定时器

2013年12月24日 没有评论

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

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

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

更多内容…

zookeeper在网络抖动下出现的诡异问题

2013年12月17日 没有评论

前几天处理了一个比较诡异的问题,一直没时间整理,今天简单总结一下。
业务实现概述:
业务在启动时连接zk并创建EPHEMERAL_SEQUENTIAL模式的结点

    /**
     * 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);

同时对其所在的目录加watcher,当watcher监听到Expired事件时,重连并检验当前结点在zk中的状态,没有则创建之。

            /** 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);

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

Spring上下文配置之classpath*问题

2013年12月17日 没有评论

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

在csdn中看到多篇文章,这么解释的:

classpath*:的出现是为了从多个jar文件中加载相同的文件.
classpath:只能加载找到的第一个文件.

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