存档

‘工作’ 分类的存档

MySQL类型长度误区

2014年1月14日 没有评论

今天又碰到这种疑问,老调重弹,记录一下:
1、数值类型中指定的长度仅用于展示,不是值域限制。值域限制仅与类型及是否带符号有关,具体如下:
类型 字节 最小值 最大值
(带符号的/无符号的) (带符号的/无符号的)
TINYINT 1 -128 127
0 255
SMALLINT 2 -32768 32767
0 65535
MEDIUMINT 3 -8388608 8388607
0 16777215
INT 4 -2147483648 2147483647
0 4294967295
BIGINT 8 -9223372036854775808 9223372036854775807
0 18446744073709551615

2、字符串类型中(char和varchar),指定的长度为字符数,不是字节数,与列的字符集有关。
比如:MySQL必须为一个CHAR(10) CHARACTER SET utf8列预备30个字节,因为这是可能的最大长度。而VARCHAR(10)是动态的,只占1+3*实际字符数。

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

Android的https请求有机率连接失败

2014年1月7日 没有评论

很久之前的问题,印象中写过blog存档,今天翻了一下,发现没了,只能按记忆写一下,当初抓的包和分析的几种case也丢了。

问题:Android客户端访问https服务的时候,机率性连接失败,然后忽然在某个时候成功(大概是卡了十分钟以后)。iPhone客户端正常。
想当然的会认为是Android客户端层面的问题,因为iPhone正常。

分析过程:抓包发现Android的tcp报文带了TS(timestamp),而iPhone没带。
处理结果:把第一层反向代理上的timestamp关掉,以解决此问题。
更多内容…

分类: 工作 标签: , , ,

JavaApplication进程不自动结束

2014年1月6日 没有评论

今天发现线上一台服务器上一个用crontab周期性执行的Java Application同时存在多个进程。
细查了一下,发现相应的任务执行完成后,进程未终止。
因为代码中有大量线程的使用,怀疑是有用户线程(非守护线程)在运行。
遍历了一下,把所有的new Thread后都加上或改成置为守护线程:

                Thread thread = new Thread(r);
                thread.setDaemon(true);

关于thread.setDaemon的说明如下,大意是当前所有的线程都是守护线程时,进程结束。

void java.lang.Thread.setDaemon(boolean on)

Marks this thread as either a daemon thread or a user thread. The Java Virtual Machine exits when the only threads running are all daemon threads. 

This method must be called before the thread is started. 

This method first calls the checkAccess method of this thread with no arguments. This may result in throwing a SecurityException (in the current thread). 

Parameters:
on if true, marks this thread as a daemon thread.
Throws:
IllegalThreadStateException - if this thread is active.
SecurityException - if the current thread cannot modify this thread.
See Also:
isDaemon()
checkAccess

改完后测试,问题依旧。
更多内容…

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此问题。
留此备忘。
当时做代码跟踪时,没留日志,现在也没精力再找一遍了。本可以留下些东东的。