1. Spring定时任务通过线程池执行,默认coreSize值为1,所以默认是顺序执行的,因此可能会导致线程延后执行。可以通过调整默认线程数来调整线程执行的模式,将 串行 改成 并行。
参见:https://blog.csdn.net/u011116672/article/details/77132205
2. BigDecimal除法运算出现java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result的解决办法:
上网查了一下这个异常的,找到了原因所在:通过BigDecimal的divide方法进行除法时当不整除,出现无限循环小数时,就会抛异常:java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.
解决的办法就是给divide方法设置精确的小数点,如:divide(xxxxx,2)。
参见:https://blog.csdn.net/jiangeeq/article/details/70143963
3. excle 浮点数数据和科学计数法数据处理:
获取浮点型数据的时候,如果使用double可能会导致精度损失。可以考虑使用BigDecimal。
在读取excle时,如果有浮点型数据,可以先当成字符串类型,获取到,然后传入到 BigDecimal构造函数中获取:BigDecimal bigDecimal = new BigDecimal(str);
或者 统一用DecimalFormat对double进行格式化
参见:https://blog.csdn.net/SungLee_1992/article/details/53033600 https://blog.csdn.net/qq_27093465/article/details/79166410
4. MAC应用无法打开或文件损坏的处理方法,可能文件本身没问题,是电脑的安全防护。
5. Spring @Configuration 和 @Component 区别
一句话概括就是 @Configuration 中所有带 @Bean 注解的方法都会被动态代理,因此调用该方法返回的都是同一个实例。
具体参见:https://blog.csdn.net/isea533/article/details/78072133
6. 删除符合条件的记录,错误信息:You can't specify target table "recent_edits" for update in FROM clause
错误SQL:DELETE FROM recent_edits
WHERE trackid NOT IN
(SELECT DISTINCT history.trackid
FROM history JOIN recent_edits ON history.trackid=recent_edits.trackid
GROUP BY recent_edits.trackid)
正确SQL:DELETE FROM recent_edits WHERE trackid NOT IN (select * from (SELECT DISTINCT history.trackid FROM history JOIN recent_edits ON history.trackid=recent_edits.trackid GROUP BY recent_edits.trackid) as t);
参见:https://stackoverflow.com/questions/5816840/delete-i-cant-specify-target-table
7. maven之可执行jar的构建,需要指定程序入口:解决办法非常简单在pom文件中添加maven插件指定程序入口地址
参见:http://www.dajiangdahe.com/2017/03/01/maven/
8. Java图片验证码的生成与验证:https://www.jianshu.com/p/009914797af2
9. 使用jsoup进行HTML 文档清理,防止 XSS 跨站点攻击之类的。
参见:https://www.ibm.com/developerworks/cn/java/j-lo-jsouphtml/index.html
10. CONCAT_WS函数()函数, 表示concat with separator,即有分隔符的字符串连接:concat_ws的参数中有null的话,并非都返回null,例如concat_ws(',','ab',NULL)将输出ab
参见:https://www.cnblogs.com/locoy/archive/2006/10/28/542751.html https://my.oschina.net/MiniBu/blog/478342
11. Zookeeper不停打印错误日志NoClassDefFoundError原因排查:
刚开始看到NoClassDefFoundError这个错,以为又是缺包少类,或者jar包冲突。但是这个类是ZK的核心包里的类,按道理不应该会没有jar包。况且NoClassDefFoundError和NoClassException多少还是有些区别的。
总结一下: java.lang.NoClassDefFoundError: org/apache/zookeeper/proto/SetWatches的原因是由于应用程序没有正常启动,而zkClient线程在应用程序进程启动失败前已经正常启动了,所以导致zkClient没有在jvm中找到SetWatches该类。
参见:http://www.voidcn.com/article/p-nrwbtybp-dr.html
12. mysql连接字符串使用CONCAT函数:连接字符串是CONCAT函数
例:mysql> select CONCAT('My', 'S', 'QL');
13. foreach在in()中的应用:
方式一:
// 接口 List<User> listUserByIds(Long[] idArray); // xml <foreach collection="array" open="(" close=")" separator="," item="id" index="i"> #{id} </foreach>
方式二:
// 自定义collection名 // 接口指定collection名 List<User> listUserByIds(@Param(value = "idArray") Long[] idArray); // xml <foreach collection="idArray" open="(" close=")" separator="," item="id" index="i"> #{id} </foreach>
参见:https://blog.csdn.net/qq_15071263/article/details/78128019
14. 关于
MyBatis配置的时候,出现
Result Maps collection already contains value for *
这个的问题
字面意思就是某某已经存在,这样的情况下Spring已经注入过一次,
其中有一种情况就是使用mybatisGenerator生成xml的时候,可能xml的内容不会被覆盖,而是追加到后面,导致xml里面有两份甚至更多的一样的内容,导致重复注入
另外就是以前遇到的一个问题
在mapper中
insert 中的parameterType部分,之前我写的是类名,后来改为完整的包名+类名就好用了,这样导致可能是重名的类,也会被认为已经注入过一次,尽量都用完整的包名+类名
转自:https://blog.csdn.net/JavaMoo/article/details/75449037
15. linux中vi保存文件时的“Can't open file for writing”:
分析:
出现这个错误的原因可能有两个:
一是当前用户的权限不足;
二是此文件可能正被其他程序或用户使用。
第一项的解决方案是在使用vi命令打开文件时,前面加上sudo来临时提供管理员权限,即使用命令“sudo vi 文件名”打开编辑文件。
由此看来,sudo命令是很有用的,当我们执行某种操作系统提示诸如“operation not permitted”等权限不足信息时,我们很多时候都可以在命令前面加上sudo来解决权限不足问题。
转自:https://www.cnblogs.com/kongzhongqijing/p/3531506.html
16. 桌面redis客户端:Redis Desktop Manager On Mac
参见:https://blog.csdn.net/xidiancoder/article/details/71378551
17. 运行Maven项目时出现invalid LOC header (bad signature)错误,Tomcat不能正常启动:
说明Jar包出现了问题。
那么接下来就要找哪个jar包出现了问题:
方法1、可通过右击项目名 -> Run as -> Maven test ,这时控制台会报哪个jar包出错。 (也可以打开DOS命令窗口,切换至项目目录,运行mvn test命令,和Eclipse的控制台输出信息一致)
方法2、如果方法1未出现任何错误信息,那么就使用笨办法。打开项目中的pom.xml文件,在自己的Maven本地仓库去查找pom.xml文件中每一个dependency节点所对应的jar包版本。一个一个对比,看看是否都正常下载。
参见:https://blog.csdn.net/u012660464/article/details/53394549
18. TCP/IP、Http、Socket的区别,
参见:https://blog.csdn.net/Pk_zsq/article/details/6087367 https://my.oschina.net/yzbty32/blog/549305
19. curl命令:
curl命令是一个利用URL规则在命令行下工作的文件传输工具。它支持文件的上传和下载,所以是综合传输工具,但按传统,习惯称curl为下载工具。作为一款强力工具,curl支持包括HTTP、HTTPS、ftp等众多协议,还支持POST、cookies、认证、从指定偏移处下载部分文件、用户代理字符串、限速、文件大小、进度条等特征。做网页处理流程和数据检索自动化,curl可以祝一臂之力。
参见:http://man.linuxde.net/curl
20. 对象属性拷贝工具类:
- 手动拷贝(set)
- 动态代理
cglib版本:net.sf.cglib.beans.BeanCopier.copy(Object from, Object to, Converter converter)
- 反射机制
Spring版本:org.springframework.beans.BeanUtils.copyProperties(Object source, Object target)
Apache版本:org.apache.commons.beanutils.PropertyUtils.copyProperties(Object dest, Object orig)
org.apache.commons.beanutils.BeanUtils.copyProperties(Object dest, Object orig)
DozerMapper
参见:https://www.cnblogs.com/exceptioneye/p/4852962.html
21. 倒序索引,用关键字作为key
参见:http://www.cnblogs.com/zlslch/p/6440114.html
22. springboot 中在application.yml文件里自定义属性值,配合@Value注解可以在代码中直接取到相应的值。
参见:https://blog.csdn.net/yuanwanchao/article/details/79279658
23. 大于等于>=及小于等于<=处理及转义字符
方法一:使用转移字符 小于:< 大于等于: >=
方法二:使用CDATA设置SQL:<![CDATA[select * from Product where price >= #{minPrice} and price <= #{maxPrice} ]]>
参见:https://blog.csdn.net/soonfly/article/details/63369700
24. MySQL 为日期增加一个时间间隔:date_add()
now() //now函数为获取当前时间
select date_add(now(), interval 1 day); - 加1天
MySQL 为日期减去一个时间间隔:date_sub()
参见:https://blog.csdn.net/asdkwq/article/details/77881850
25. maven + eclipse + tomcat : class not found exception
参见: https://stackoverflow.com/questions/21222978/maven-eclipse-tomcat-class-not-found-exception
26. mac下nginx的安装和配置:https://www.jianshu.com/p/026d67cc6cb1
27. java 验证框架oval的使用方法:https://blog.csdn.net/neweastsun/article/details/50473717