问题描述:
在WEB应用的日志中,发现把HTTP的HEAD信息全当成KV参数处理了。而且这个KV的尾部还真带着个有效的参数,只是分隔符=已经被URLEncode了。

问题后果:
我们的应用中会对所有参数做hash校验,参数不对会认为报文无效,被丢弃。直接影响业务功能。
如果是对参数没校验的应用,结果是丢失HEAD信息后跟的第一个参数,有可能会影响业务功能,除非第一个参数放无用的参数。

解决办法:
识别出现,删除错误的,解析成正确的加进去。让后续逻辑正常。

问题原因:
出现的机率相对较小,大概是十万分之一吧。怀疑是用户提交的报文本身就是错的,也可能是nginx转发的时候错了,再或者是Tomcat解析的时候出错了。
目前看到的KV是以HEAD中charset=utf-8的这个=号作为分隔符的。
机率太小,就没抓报文去确认是谁的问题。有知道答案的,可以回复我~

一个问题的备忘。

测试MySQL版本:5.5.8
测试MySQL存储引擎:InnoDB

初衷:
大表SQL查询按主键正序order by后再limit,速度比较慢,需要优化。

优化过程:
后发现把order by去掉后速度会快非常多,且结果依然正确。

反例被发现:
测试中发现某些特定查询,用到的索引不是主键,默认的顺序是所用到的索引的正序,跟主键的正序不一样。

反例的两个优化推广:
1、如果用到的索引序和主键序完全一样,可以省略order by操作。
2、如果通过主键索引的查询性能优于另一个索引的先排序再limit,可以考虑强制索引:FORCE INDEX (PRIMARY)

欢迎提出推广的反例或其它意见~

一童鞋用java -jar执行时,发现指定的classpath环境变量无效,用-cp也无效。

后经确认,java -jar执行时,classpath会被jar中MANIFEST.MF的classpath取代,同样的原因-cp也无效。
只能用Bootstrap Classloader来调用
[code]
java -Xbootclasspath/a: 1.jar:2.jar: -jar xxx.jar
[/code]

如果想让-cp参数生效,只能用最原始的方式:把jar包classpath下,加Main函数所在的类全称来执行。

前一段时间,DNSPOD服务对国外连续两天晚上有近一个小时出现间歇性无法访问。跟了一下,发现其服务器全在国内。遂计划自建取代之。

服务采用Bind9,支持View。

智能分组的数据来源:http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest

备忘一下。

项目中计划在某些地方用本地缓存替代网络缓存,以提高响应速度,减少对网络缓存的压力。
在SoftReference和WeakReference中,选择了WeakReference。
二者的区别:
[code]
WeakReference:有gc时就会触发清理。
SoftReference:出现内存不足时,才会触发清理。
[/code]
项目中,这块缓存是希望YGC就可以清理掉,FGC的频率很低,需要尽量避免。所以选用WeakReference。

对WeakReference的简单测试发现,某些情况下跟预期的不太一样。

- 阅读剩余部分 -

作为一名被赶鸭子上架的DD-WRT的小白用户,写点东西备忘一下本次处理的问题。仅供自己备忘,建议读者忽略。

问题:
业务上需要访问名为某book的SNS网站,需要通过穿wall路由来实现,也就是要说的这个DD-WRT。
问题很简单,访问不了。

现象:
直接连上去,访问失败。手工在路由的client上改DNS为四个8后,正常。

过程(看起来很小白):
查看路由的resolv.conf,里面的nameserver是路由本机的ip,改成四个8,重启后被还原。
在启动脚本上强制去替换resolv.conf为四个8的。重启后正确,但依然无法出去。
通过WEB管理界面看到有DNSmasq的附加配置,发现里面指定的某book的解析,怀疑是ip失败或被wall。
清空后重启,依然无法访问。改为通过四个8解析出来的地址做泛解析,重启后正常。

- 阅读剩余部分 -