数据导出优化
今天很是兴冲冲的做出了要求的导出功能,但是导出规定条件下的七百多条,时间就要2分钟左右,实在是不太理想,不优雅。
优化呗。
目前,操作上是这样
- 梳理操作流程
- 分析每一步流程耗时
- 针对性解决
其实,初步分析都看得出,问题在于数据库IO操作过多。
最优解决方案自然是重新组织sql,但从业务逻辑上来讲,明显不应该是我这边做这个工作。
所以,直观上来说,应该是把数据直接写在缓存中比较好,明天重点关注这个问题。
TypeReference
我靠,这东西简直神奇、好用;
一看,又是alibaba的东西。。。
但是我看了半天乱七八糟的,没搞懂——》什么异构容器,什么ConcurrentMap啊,什么线程安全
啊,好大一个坑,回头要填一下
split
String.split(),分隔字符串
想他的时候,总是和PHP里面的explode搞混
啊,人家那么形象不是,炸开!!
你可好,老老实实的叫split...
logger.error
如何正确的打印出错误堆栈信息,一直迷糊糊的,直接引用好了
有时候logger.error不能完全地打印出网站的错误堆栈信息,只能打印这个错误是一个什么错误。
为什么?
看Logger.error源码
public void error(String msg, Throwable t);
public void error(String msg);如果只传一个参数e进去,那么e就被认为是String类型(会自动调toString()方法把Exception转成String),而不是Exception类型。
如果想打印堆栈信息,那么必须传两个或以上参数,实际上就是为了调用public void error(String msg, Throwable t);
所以我们的写法可以是:
Logger.error(“xxx出错”,e); //第二个参数是e
而不是:
Logger.error(“xxx出错:”+e) 或 logger.error(e) 或logger.error(e.getMessage);
java switch
public class TestSwitch{
public static void main(String args[]){
char c = 'a'; //char类型字符
switch(c){
default:
System.out.println("打印默认值");
break;
case 'a':
System.out.println("a");
break;
case 'b':
System.out.println('b');
break;
case 'c':
System.out.println('c');
break;
case 'd':
System.out.println("d");
break;
}
}
}
顺带着查了下switch实现机制:Switch语句的实现机制
maven打包到底打了啥
今天新分支开发东西,看当前另外分支的东西的时候,因为依赖的API不同会出现问题,由此想到maven到底打包了啥。
其实想一下是,pom文件相关的东西吧
查到的可能只有这些
关于可执行程序(需要指定一个 main 类),打 jar 包就没这么方便了,我们需要考虑以下几个问题:
- 配置文件需要打进 jar 包;
- 需要指定 main 入口类;
- 所依赖的第三方库也要打进 jar 包;
那么pom中插件些呢??也打包进去??插件是做啥用的?在哪里用的咧???
又是个小坑,短期填上呗