利用POI进行EXCEL报表导出。
可以参考该博客 地址,我们在服务器端做好模板,然后读取模板,根据所需内容进行插入。对应模板存放的路径,放到conf目录下。
我之前读取模板所在路径的方法为:
private URL url = this.getClass().getClassLoader().getResource("com/srx/zservice/excel/"); private String fileToBeRead=url.getPath()+"memberCount.xls";部署到linux服务器上,报空指针异常。原因分析如下:
Windows下可以用‘/’,linux下不识别。换为‘//’形式,结果仍为空指针异常。
改变方法为:
InputStream is = ExportPersonExcel.class.getResourceAsStream("/person.xls"); // 创建对Excel工作簿文件的引用 HSSFWorkbook workbook = new HSSFWorkbook(is);问题解决。
根据action_log进行数据统计,并进行数据优化
测试库中,每天需要进行处理的数据达5万,分别需要进行近20万次查询和3万次插入。5000个用户,单个用户35次查询,和4次插入。
ALTER TABLE zpersonal_count ADD INDEX index_userid(userid)5,统计代码存在优化空间,可利用group by查询,将同意业务逻辑利用group by 查询,group by userid,将查询结果存储到List<Map(key,value)>中,可大幅度检查查询次数。
"SELECT count(*) FROM action_log WHERE targetType=10 AND optionType=10 "+ "AND userId= "+ userid+ " AND groupId= "+ groupid+ " AND ctime between "+ startDateTime+ " AND " + endDateTime);
采用上述方式,存在SQL注入问题,应该使用预编译形式:
SELECT COUNT(*) FROM zpersonal_count WHERE groupid=?"+ " AND ctime between " + startDateTime + " AND " + endDateTime;
prep = conn.prepareStatement(sql); prep.setLong(1, groupId); rst = prep.executeQuery();2,另外写代码要进行规范化,注意逻辑清晰,考虑代码的可维护性,可扩展性。
3,对于有问题的模块,要养成加日志的好习惯。方便可以对日志进行分析。,
4,出现异常要进行捕捉,不能抛出异常。