个人笔记7

来源:互联网 发布:mysql如何分库分表 编辑:程序博客网 时间:2024/05/21 11:26

2017-11-21 eclips安装lombok插件步骤

1.下载lombok.jar
2.java -jar lombok.jar 在目录中 用命令行运行jar包,启动后会出现小辣椒页面,确认完eclipse的安装路径后,点击install/update按钮,即可安装完成
3.安装完成之后,请确认eclipse安装路径下是否多了一个lombok.jar包,并且其配置文件eclipse.ini中是否 在最下面添加了如下内容:

    -javaagent:lombok.jar     -Xbootclasspath/a:lombok.jar 

4.重启eclipse或myeclipse


2017-11-27 HSSF,XSSF和SXSSF的区别

HSSF是POI工程对Excel 97(-2007)文件操作的纯Java实现

XSSF是POI工程对Excel 2007 OOXML (.xlsx)文件操作的纯Java实现

从POI 3.8版本开始,提供了一种基于XSSF的低内存占用的API—-SXSSF

SXSSF通过一个滑动窗口来限制访问Row的数量从而达到低内存占用的目录,XSSF可以访问所有行。旧的行数据不再出现在滑动窗口中并变得无法访问,与此同时写到磁盘上。
在自动刷新的模式下,可以指定窗口中访问Row的数量,从而在内存中保持一定数量的Row。当达到这一数量时,在窗口中产生新的Row数据,并将低索引的数据从窗口中移动到磁盘中。
或者,滑动窗口的行数可以设定成自动增长的。它可以根据需要周期的根据一次明确的flushRow(int keepRows)调用来进行修改。

注意:针对 SXSSF Beta 3.8下,会有临时文件产生,比如:
poi-sxssf-sheet4654655121378979321.xml
文件位置:java.io.tmpdir这个环境变量下的位置
Windows 7下是C:\Users\xxxxxAppData\Local\Temp
Linux下是 /var/tmp/
要根据实际情况,看是否删除这些临时文件

官方也提供了一些解决方式:
https://issues.apache.org/bugzilla/show_bug.cgi?id=53493

与XSSF的对比
在一个时间点上,只可以访问一定数量的数据
不再支持Sheet.clone()
不再支持公式的求值


2017-11-27 window.location.href链接如何携带表格数据?

window.location.href=basePath+”/smartbi/exportData?”+$(“#formId”).serialize();
这种方式可以请求后台进行处理数据,同时页面是异步效果。适合进行数据下载方面。

jQuery中serializeArray()与serialize()的区别?

serialize()序列化表单元素为字符串,用于 Ajax 请求。
serializeArray()序列化表单元素为JSON数据。
注意:file、image、button、submit、reset都不会被序列化
这里写图片描述


2017-11-28 MySQL数据类型-decimal详解

1.首先,对于精度比较高的东西,比如money , 精算,费率等,我会用decimal类型,不会考虑float,double,因为他们容易产生误差,numeric和decimal同义,numeric将自动转成decimal。
decimal 数据类型最多可存储 38 个数字,所有数字都能够放到小数点的右边。decimal 数据类型存储了一个准确(精确)的数字表达法;不存储值的近似值。
DECIMAL从MySQL 5.1引入,列的声明语法是DECIMAL(M,D)。

在MySQL 5.1中,参量的取值范围必须符合下面的规则:
· M
小数点左边和右边数字个数之和,不包括小数点。如 123.45,则 M=5,D=2。是指定精度或对象能够控制的数字个数。
· D
指定可放到小数点右边的小数位数或数字个数。
M 和 D 必须遵守以下规则:0 <= D <= M <= 38


2017-12-11 用maven命令打包

适合项目:maven项目
正常的项目打包方式为达成jar包或者war包。前面说过jar包的打法,这里在说一下用maven命令打war包。
首先找到你的项目所在本地目录,进入工程文件夹,比如我的项目名称为MavenTestJar,则运行命令的位置所在目录为E:\workspace\MavenTestJar,然后shift+右键调出命令行,
1.先进行文件清理:执行命令-mvn clean
这里写图片描述

这里写图片描述

2.然后执行打包命令: mvn package -DskipTests

这里写图片描述

打包成功的标志:

这里写图片描述

然后去target目录找到打好的war包。


2017-12-11 解决一次查询数据量过大导致内存溢出的方法

解决办法是截取法。我们可以先按查询条件找出数据对应id值最大的那个max(id),然后每次按照id区间为1000来进行分段截取,知道最大id结束。
0-1000,1000-2000,2000-3000,这样一批一批取出数据,但是确是一次执行。具体的逻辑如下。
//1.通过按条件查询出max(id)
int maxId=recordInfo.getUnUploadMaxId();
//2.定义一次一批上传的量为多少条数据
final int eachBatch=500;
//3.每次上传的id起始值初始值
int start =0;
//4.每次上传的id的结束值初始值
int end=eachBatch;
boolean flag=true;
do{
List list=recordInfo.getRecordsById(start,end);
//拿到list后做业务操作。。。
//此处为业务代码 {。。。}
//每次执行完毕业务代码,要进行先判断是否循环结束,没结束要实现id的自增,用来下次循环取出下一批数据。结束则改变flag的值为false.
System.out.println(“循环分段上传录音,从”+start+”开始,到”+end+”结束”);
if(end >=maxId){
flag=false;
}
if(flag){
start=end;
end=end+eachBatch;
}
}while(flag);


2017-12-12 如何去掉数据库中多余的记录而只保留其中id最大的一条

首先要知道根据那几个字段相同就代表这条数据有重复。(id为序号,主键)

delete a from recordinfo a,(select c.recordreference,c.custno,max(c.id) as id from recordinfo c group by c.recordreference,c.custno having count(*)>1)b  where b.recordreference=a.recordreference and b.custno=a.custno and a.id<b.id