随笔分类 -  java

摘要:一、背景 常用的定时任务一般有:JDK Timer、Spring Task、Quartz、xxl-job、Elastic-job。 JDK Timer:JDK自带的定时任务,1.5之前不支持多线程,1.5之后加入了ScheduleThreadPool就是为了它,支持多线程; Spring Task: 阅读全文
posted @ 2020-12-15 16:36 uzxin 阅读(1735) 评论(0) 推荐(0)
摘要:背景 有一个list,实体包含多个字段,当其中两个字段值均相同时,就认为list中的这两条记录是一样的 去重 java8中有一个collectingAndThen可以根据多个字段去重 依据姓名和年龄去重,当姓名和年龄相同时,认为这两个实体相同 class FlightTicketInfo { pri 阅读全文
posted @ 2020-12-15 16:28 uzxin 阅读(3932) 评论(0) 推荐(0)
摘要:今天在工作中用到了根据集合中对象的某个属性来去重,找了很多方法,都比较麻烦,最后发现了一个巨简单的方法 public class Test { public static void main(String[] args) { List<User> list = new Lists.newArrayL 阅读全文
posted @ 2020-12-11 20:07 uzxin 阅读(3557) 评论(0) 推荐(0)
摘要:从list集合中抽取getId转为新的集合: List<NatCustomers> natCustomersList = natCustomersService.queryListByPage(0,1000); List<Integer> customerIds = natCustomersList 阅读全文
posted @ 2020-10-19 17:16 uzxin 阅读(4378) 评论(0) 推荐(0)
摘要:quartz 在java的世界里, quartz绝对是总统山级别的王者的存在. 市面上大多数的开源的调度框架也基本都是直接或间接基于这个框架来开发的. 先来看通过一个最简单的quartz的例子, 来简单地认识一下它. 使用cron表达式来让quartz每10秒钟执行一个任务: 先引入maven依赖: 阅读全文
posted @ 2020-09-16 15:26 uzxin 阅读(1231) 评论(0) 推荐(0)
摘要:timer 即jdk里面提供的java.util.Timer和java.util.TimerTask两个类. 其中TimerTask表示具体的任务,而Timer调度任务. 简单的例子如下: import java.util.Timer; import java.util.TimerTask; pub 阅读全文
posted @ 2020-09-16 15:19 uzxin 阅读(345) 评论(0) 推荐(0)
摘要:异常处理中,try、catch、finally的执行顺序,大家都知道是按顺序执行的。即,如果try中没有异常,则顺序为try→finally,如果try中有异常,则顺序为try→catch→finally。但是当try、catch、finally中加入return之后,就会有几种不同的情况出现,下面 阅读全文
posted @ 2020-08-25 15:07 uzxin 阅读(248) 评论(0) 推荐(0)
摘要:Java在处理Integer时使用了一个缓存,其中缓存了-128到127之间的数字对应的Integer对象,所以在绝大多数情况下,当我们把2个小于128的Integer对象用==比较时,Java往往是用缓存中的对象进行的比较,得到的结果也往往是true,比如这样: public class Test 阅读全文
posted @ 2020-01-17 14:32 uzxin 阅读(362) 评论(0) 推荐(0)
摘要:泛型声明 public <T> T doSomeThing(T t){ return t; } Object声明 public Object doSomeThing(Object obj){ return obj; } 泛型引用 String result = doSomeThing("参数是Str 阅读全文
posted @ 2019-12-16 08:50 uzxin 阅读(1032) 评论(1) 推荐(0)
摘要: 阅读全文
posted @ 2019-12-09 16:13 uzxin 阅读(661) 评论(0) 推荐(0)
摘要:可能的原因有以下两个 编译器处理 在编译源代码时,当一个类没有显式标明继承的父类时,编译器会为其指定一个默认的父类(一般为Object),而交给虚拟机处理这个类时,由于这个类已经有一个默认的父类了,因此,VM仍然会按照常规的方法像处理其他类一样来处理这个类。对于这种情况,从编译后的二进制角度来看,所 阅读全文
posted @ 2019-12-04 16:18 uzxin 阅读(317) 评论(0) 推荐(0)
摘要:HttpServletRequest和ServletRequest都是接口HttpServletRequest继承自ServletRequest HttpServletRequest比ServletRequest多了一些针对于Http协议的方法。 例如:getHeader(), getMethod( 阅读全文
posted @ 2019-11-18 15:06 uzxin 阅读(680) 评论(0) 推荐(0)
摘要:1.封装result,作为返回的对象public class Result<T> { private int code; private String msg; private T data; /** * 成功时候的调用 * */ public static <T> Result<T> succes 阅读全文
posted @ 2019-11-14 19:33 uzxin 阅读(593) 评论(0) 推荐(0)
摘要:1,sleep方法是Thread类的静态方法,wait()是Object超类的成员方法 2,sleep()方法导致了程序暂停执行指定的时间,让出cpu该其他线程,但是他的监控状态依然保持者,当指定的时间到了又会自动恢复运行状态。在调用sleep()方法的过程中,线程不会释放对象锁。而当调用wait( 阅读全文
posted @ 2019-11-14 16:37 uzxin 阅读(130) 评论(0) 推荐(0)
摘要:废话不多说,直接上代码public void test() throws Exception { List<String> list = new ArrayList<String>(2); list.add("aaa"); list.add("bbb"); String[] array = new 阅读全文
posted @ 2019-11-14 15:42 uzxin 阅读(197) 评论(0) 推荐(0)
摘要:我们先来做一个测试 public class HashMapTest { private HashMap<String, String> map = new HashMap<>(); @Before public void beforeAllMethodTestInClass() { for (in 阅读全文
posted @ 2019-11-14 15:05 uzxin 阅读(452) 评论(0) 推荐(0)
摘要:不要在 foreach 循环里进行元素的 remove/add 操作。remove 元素请使用 Iterator方式,如果并发操作,需要对 Iterator 对象加锁。 注意: 1.foreach遍历集合,实际上内部使用的是iterator。 2.代码先判断是否hasNext,然后再去调用next, 阅读全文
posted @ 2019-11-14 10:39 uzxin 阅读(179) 评论(0) 推荐(0)
摘要:看看自己有没有加@Test注解,如果加了,那肯定就是springTest版本和Jnuit版本不兼容,换个版本! 阅读全文
posted @ 2019-11-14 10:22 uzxin 阅读(174) 评论(0) 推荐(0)