sql慢查询
经过优化,sql慢查询已经由最多的5000条/日下降到100条/日,解决了99%的慢查询。_
java.lang.NoClassDefFoundError ClassNotFoundException区别?
ClassNotFoundException:当程序试图根据字符串名称加载一个类但没有找到对应类触发。
Class.forName("xxx");
this.getClass().getClassLoader().findSystemClass("xxx");
this.getClass().getClassLoader().loadClass("xxx");
NoClassDefFoundError:当JVM虚拟机或ClassLoader试图加载类定义时(import引入的类),但无法找到类。
NoClassDefFoundError发生在项目成功编译,但是在运行时无法找到对应jar包,引发问题的原因是对应jar包没有被加载;ClassNotFoundException发生在项目运行时反射调用某个类,但该类实际并不存在导致的。
NoClassDefFoundError是一个Error(JVM虚拟机无法发现本来应该发现的类),JVM无法启动程序;ClassNotFoundException是一个Exception,因为反射没有编译期检测,所以完全有可能出现各种问题,出现问题后程序是可以继续运行的。
Java封装对象比较 equals VS ==
Java中的基本类型,int/long/float...引用及值,所以可以直接使用"=="比较;其他包装对象请一定一定一定要使用equals方法。
看一个包装类型引发的bug:
lowAuditor属性是Long类型,语句首先判断该值不为空,然后比较是否相等;
private static class LongCache {
private LongCache(){}
static final Long cache[] = new Long[-(-128) + 127 + 1];
static {
for(int i = 0; i < cache.length; i++)
cache[i] = new Long(i - 128);
}
}
在Long处于-128~127之间时,由于Long缓存机制, == 是成立的;但是一旦lowAuditor大于127,那么即使两个Long对象值相等,== 也是不成立的;所以为了避免出现这种缓存问题,请在比较包装类是务必调用equals方法而不是==。
高效使用公司工具
上上周看了阿里的<尽在双11>,发现阿里有很多工具,比如鹰眼(监控日志),报警平台...其实我们58也是有很多通用工具,比如DB平台,可以监控DB访问量,查看慢查询等;监控平台可以查看应用访问情况;数据分析平台可以对数据进行多维度的分析。
仔细想想,工作中遇到的问题,大概率已经被别人遇到并且解决;与其自己思考如何解决,不如看看其他人事如何解决的;找找看公司是不是有现成的解决方案,这样才能更好、更快的解决问题,避免重复造轮子。
Worktile
部门一直在用worktile来做需求管理,但一直没有深入了解worktile,今天抽了个空,好好看了下worktile都有什么隐藏功能。
- 话题:worktile可以就某个问题进行讨论。
- 文件版本:上传文件可能会多次修改,在我修改文件时会记录文件历史记录方便对比不同版本文件区别。
- 文档:支持MarkDown语法,但是还可以使用石墨文档这个大杀器。
石墨
⽯墨⽂档,可多⼈实时协作的⽂档和表格;还可以讨论、查看历史记录。