摘要:
1.实现原理 这篇博文是基于线程池监控1-监控任务执行时间,原理是:创建一个固定时间间隔执行的线程,来记录线程池的池状态、线程数量和队列任务数量等,具体方案:使用单例类缓存所有创建的线程池对象,类创建时启动定时任务线程,定期遍历缓存中线程池,记录线程池信息。 使用单例类缓存所有创建的线程池对象,具体 阅读全文
摘要:
1.背景 线程池在执行任务过程中,往往由于个别耗时非常大的任务导致任务积压,影响性能,甚至导致系统崩溃,可以通过监控每个任务执行的耗时来提前预警,进而优化代码,使系统更稳定。 2.实现代码 实现原理:继承ThreadPoolExecutor,重写beforeExecute,在开始的时候记录开始时间, 阅读全文
摘要:
1.使用String.join() List<String> strList = new ArrayList<>(); strList.add("aaa"); strList.add("bbb"); String str = String.join(",", strList); System.out 阅读全文
摘要:
最佳方法:定制@NamedEntityGraph、定制查询和定制VO,可以做到按照需要最佳查询,需要注意的地方:定制VO的字段一定要等于或小于实际查询的字段,才不会复制的时候触发N+1查询。 1 问题复现 1.1 项目结构 1.2 entity package com.xkzhangsan.jpa. 阅读全文
摘要:
3年前因为域名和主机便宜,买了3年的,现在续费太贵已经不再使用了,域名:xkzhangsan.com. 阅读全文
摘要:
在Java中经常需要统计程序的使用时间,如果只是一个时间段统计比较好处理,可以直接使用System.currentTimeMillis()。但如果一个程序中包含多个步骤,需要统计每个步骤耗时,并且需要统计耗时分布,找出那个步骤耗时最多,好做一下优化时,就比较费力了。这个使用可以使用Spring的工具 阅读全文
摘要:
经常有这种情况,需要将逗号分割的字符串,比如:aaa, bbb ,ccc,但往往是人工输入的,难免会有多空格逗号情况,比如:aaa, bbb , ccc, ,,这种情况使用split会解析出不正常的结果。 阅读全文
摘要:
中文日期(2021年09月11日 和 二〇二一年九月十一日 )在生活中经常用到,2021年09月11日很好处理直接使用模板:yyyy年MM月dd日;二〇二一年九月十一日比较不好处理,需要每个数字进行转换判断,下面使用数组和HashMap来提高效率和简化代码。 阅读全文
摘要:
会有一个比较常见的需求,计算倒计时,比如,计算距离某时间剩余时间(27小时10分钟30秒、1天3小时10分钟30秒)或者已经进行了多长时间等。下面是2种实现代码:其中第一种超过1天会体现在小时上,比如27小时10分钟30秒。 /** * 根据毫秒值计算倒计时 * @param millis 相差毫秒 阅读全文
摘要:
从上篇 Java日期时间API系列39 中文语句中的时间语义识别(time NLP 输入一句话,能识别出话里的时间)原理分析 中得知解析的主要步骤分为三步: (1)加载正则文件 (2)解析中文语句中的所有时间词语 (3)根据基准时间,循环解析(2)中的时间词语。 下面结合代码分析一下。 1.加载正则 阅读全文