java
卡卡的喵
这个作者很懒,什么都没留下…
展开
-
java.lang.IllegalArgumentException: Comparison method violates its general contract
排序遇到一个异常2021-11-24 10:42:01.185 ERROR 39804 --- [pool-9-thread-8] c.s.guns.modular.api.EnterpriseApi : --- java.lang.IllegalArgumentException: Comparison method violates its general contract! at java.util.TimSort.mergeHi(TimSort.java:899) ...原创 2021-11-24 10:50:16 · 448 阅读 · 0 评论 -
封装StringBuffer连接多个字符,并去掉最后一个分隔符
/** * 连接多个字符串,并用split字符分割,返回结果去掉字符最后面的split字符 * @param split * @param values * @return */ public static String joinString(String split, String... values) { StringBuffer result = new StringBuffer(); for (String value : values) { result.a..原创 2021-08-29 11:59:12 · 532 阅读 · 0 评论 -
JTA transaction unexpectedly rolled back (maybe due to a timeout)
造成这个异常的原因是在方法上加了事务标签@Transactional,这个标签,默认的超时时间是5秒钟,如果这个方法执行的时间超过了5秒,就会报这个异常。 org.springframework.transaction.UnexpectedRollbackException: JTA transaction unexpectedly rolled back (maybe due to a timeout); nested exception is javax.transaction.RollbackE原创 2021-08-02 20:07:35 · 6307 阅读 · 0 评论 -
阿里云对象储存oss报Unable to build cipher: Illegal key size
今天在使用阿里的oss上传加密文件一直报Unable to build cipher: Illegal key size这个异常,网上也找不到完全一样的情况,后来看到一篇《微信 AES 解密报错 Illegal key size 三种解决办法》,和我遇到的问题有点类似,大致原因就是在jdk1.8.0_161-b12这个版本之前,默认使用的是限制的加密算法,只支持 128位,所以要么改成不限制加密算法,要么升级jdk。解决过程挺简单的,一看就懂,这里只是记录一下。把unlimited目录下的2个包覆盖到l原创 2021-07-20 14:49:44 · 328 阅读 · 0 评论 -
字符串类型的list转字符串
/** * 字符串类型的list转成字符 * @param list * @return */ public String list2String(List<String> list) { StringBuffer sb = new StringBuffer(); if (list != null && list.size() > 0) { list.forEach(o -> sb.append(o)); } return ..原创 2021-07-16 15:04:06 · 248 阅读 · 0 评论 -
Sftp下载在页面上显示进度
业务需求是这样的,从一个服务器下载文件到本地,但有时候文件很大,需要查看下载的进度。这里只提供一下思路,有问题的可以留言交流。1.项目用的是ssm架构(springboot+spring+mybatis)2.sftp用到的是jsch这个包3.下载的时候用ajax来请求,因为ajax的success回调函数只有在请求结束的时候才能调用,所以无法实时监控下载的情况。4.想到通过ajax的beforeSend这个回调函数来增加一个监控线程,设定一个setInterval,每隔1秒请求后台来.原创 2020-10-20 18:39:10 · 1400 阅读 · 2 评论 -
java连接sftp遇到的坑
java连接sftp用到的jar包,一般都是选jsch,最近有个项目需要用到这个,于是把之前有相同功能的模块移植过来,但在连接sftp的时候一直报以下异常com.jcraft.jsch.JSchException:Session.connect:java.io.IOException:End of IO Stream Read百度了一个下午,要么说是java版本问题,要么就是jsch,来回折腾了很久,问题还是在,总之就是在以下2个异常之间徘徊com.jcraft.jsch.JSch..原创 2020-10-15 11:08:25 · 5268 阅读 · 1 评论 -
后台管理框架Guns在eclipse里的使用
1.下载Guns2.导入maven项目3.选择Guns-master4.修改一下application.yml5.修改application-local.yml,配置mysql6.运行一下sql脚本,在数据库中建立基本表7.启动项目8.浏览器访问...原创 2020-07-21 10:47:55 · 401 阅读 · 0 评论 -
代码混淆ProGuard,研究了2天终于成功,记录一下
1.业务需求公司有块核心代码不希望给别人抄袭,但系统是用java开发的,无法避免被反编译的情况,于是想到了用代码混淆的方式来解决。2.调查调查了一下主流的第三方混淆工具,发现只有ProGuard用的最多,而且版本一直在更新维护,功能也比较多,所以打算用这个来混淆。3.下载了proguard6.2.2这个版本,解压缩后执行proguard6.2.2\bin\proguardgui.bat这个文件就可以打开软件,标红框的地方是需要特别设置的,其他地方都可以默认4.设置Input.原创 2020-06-24 11:10:20 · 14981 阅读 · 12 评论 -
list通过stream的lambda表达式转map的时候的坑
1.User对象public class User { private String name; private Integer age;}2.test方法 public static void main(String[] args) throws InterruptedException { List<User> list = new ...原创 2020-01-02 13:36:46 · 2184 阅读 · 0 评论 -
通过反射来写一个批量插入的工具类
背景:项目中会有很多地方用到批量插入,如果数据量大的话需要通过分批的形式来批量插入,但师不同的表会调用不同的dao的方法,而分批插入的代码又是相似的,每次都要写一边这个相似的代码,势必会造成代码的冗余,所以需要把分批插入的部分封装成一个共同的方法来调用,我想到的是通过反射机制,代码如下。1.interfacepublic interface CommonService { /**...原创 2019-12-27 13:27:07 · 385 阅读 · 0 评论 -
list string互转
package com.test;import java.util.ArrayList;import java.util.Arrays;import java.util.List;public class Test { public static void main(String[] args) { //list转string List lst = new ArrayLis原创 2015-10-14 23:11:17 · 1284 阅读 · 0 评论 -
List调用toString()方法后,去除两头的中括号
import org.apache.commons.lang.StringUtils;public class Test { public static void main(String[] args) { List list = new ArrayList(); list.add("1"); list.add("2"); list.add("3"); Sys原创 2016-01-09 11:17:30 · 51888 阅读 · 9 评论 -
每天00:00:01循环执行定时任务
package net.spring.utils;import java.text.ParseException;import java.util.Calendar;import java.util.Date;import java.util.Timer;import java.util.TimerTask;public class Test2 { /** * @param原创 2015-11-09 16:03:03 · 3001 阅读 · 0 评论 -
Calendar计算时间
SimpleDateFormat df = new SimpleDateFormat("yyyyMMddhhmmss"); //显示日期 Calendar calender = Calendar.getInstance(); //当前时间 String timeStart = df.format(calender.getTime()); System.out.println(原创 2015-12-03 15:36:10 · 545 阅读 · 0 评论 -
字符串类型的list,根据字符串长度来排序
import java.util.Comparator;public class SortByLengthComparator implements Comparator<String> { @Override public int compare(String var1, String var2) { if (var1.length() > var2.lengt...原创 2018-10-11 14:27:21 · 10394 阅读 · 2 评论 -
多线程调用单例模式的类的同一个方法,是不是需要排队调用?
最近在研究多线程,突然想到一个问题,“多线程调用单例模式的类的同一个方法,是不是需要排队调用?”,比如有10个线程同时调用一个单例模式类的同一个方法,他们是第一个调完再轮到第二个调,还是10个线程同时可以调用这个方法?想出这种问题肯定是对java的基础知识掌握的不好,在网上找了很多帖子,但看下来都很懵懂,也发现有很多人和我有一样的问题,所以我自己写了代码,模拟这种情况,代码如下。1.单例模式的类p...原创 2018-06-21 19:36:22 · 12591 阅读 · 6 评论 -
通过url获取视频的时长
最近项目中遇到一个问题,需要保存上传视频的时长,但以前上传的时候数据库都没有保存这个数据,所以现在要更新这个字段。一开始想通过java代码来实现这个功能,但百度了很久,只有一种方法,那就是先要下载到本地,然后再一个一个的遍历查询。觉得这种方法如果是小视频还行,大视频的话就太花时间了。于是想到了通过html5的video标签来实现这个功能。下面就先说一下基本思路:1.后台先把需要查询原创 2018-01-15 13:27:59 · 17980 阅读 · 3 评论 -
java反射机制demo
1.package com.test.jms;public class InflectBean { public void p(String msg) { System.out.println(msg); } public void p2(String msg1, String msg2) { System.out.println(msg1 + ":" + msg2); }原创 2016-03-22 17:02:43 · 650 阅读 · 0 评论 -
list转数组,数组转list
import java.util.ArrayList;import java.util.Arrays;import java.util.List;public class Test { public static void main(String[] args) { List list = new ArrayList(); list.add("a"); list.add原创 2016-01-09 10:23:39 · 1466 阅读 · 0 评论 -
把项目变为web项目
有时候把一个web项目导入到eclipse后,发现项目原创 2014-10-12 10:36:14 · 630 阅读 · 0 评论 -
压缩后再解压缩,byte转string出现乱码问题
用utf-8的格式来把解压好的byte型原创 2014-07-25 13:31:44 · 1092 阅读 · 0 评论 -
加了锁的单例模式取对象
package com.test;public class ClassA {public static void main(String[] arg) {new Thread(new Runnable() {@Overridepublic void run() {while (true) {ClassB a = ClassB.getInstanc原创 2014-07-22 16:46:41 · 957 阅读 · 0 评论 -
Timer的使用
package net.spring.utils;import java.util.Timer;import java.util.TimerTask;public class Test2 { /** * @param args */ public static void main(String[] args) { Timer timer = new Timer();原创 2015-11-06 10:24:23 · 603 阅读 · 0 评论 -
java 小数转换成百分比显示
package com.test;import java.text.DecimalFormat;public class Test { /** * @param args */ public static void main(String[] args) { DecimalFormat df = new DecimalFormat("0.00%"); System原创 2015-09-26 06:21:12 · 26386 阅读 · 1 评论 -
通过一个map替换字符串中指定的字符变量
项目中需要生成一个合约,存放在mysql对应的text类型的属性里,合约的内容对于每个用户来说大致都一样,但有几个地方需要替换成对应的信息,比如,甲方,乙方的名字,合约的日期,合约的金额。本来想找个第三方的jar包来实现这个功能,但找了很久都没有合适的,于是自己写了个简单的方法。package com.test;import java.util.HashMap;import j原创 2015-01-04 14:15:40 · 5268 阅读 · 3 评论 -
BigDecimal除法,并保留小数后两位
public static void main(String[] args) {BigDecimal a;BigDecimal b;a = new BigDecimal(3);b = new BigDecimal(81);System.out.print(a.divide(b, 2, RoundingMode.HALF_UP));}原创 2014-11-07 09:43:10 · 120944 阅读 · 1 评论