Java
文章平均质量分 54
kevin_mails
如果真的努力了,没什么好遗憾的!
展开
-
java List元素删除的正确姿势
java List元素删除的正确方式,一行代码搞定。原创 2022-05-20 23:09:04 · 6596 阅读 · 0 评论 -
基于springboot做了一个策略模式的demo(开箱即用)
使用springboot做了一个策略模式的demo下载工程GitHub - kevinmails/sprintboot-strategy-pattern-demo at masterContribute to kevinmails/sprintboot-strategy-pattern-demo development by creating an account on GitHub.https://github.com/kevinmails/sprintboot-strategy-pattern-de原创 2021-12-15 09:25:38 · 573 阅读 · 0 评论 -
我去dubbo线程池又被打爆(打满)了java.util.concurrent.RejectedExecutionException: Thread pool is EXHAUSTED
最近线上系统经常告警dubbo线程池打满报错如下:172.28.152.53/Caused by: java.util.concurrent.RejectedExecutionException: Thread pool is EXHAUSTED! Thread Name: DubboServerHandler-172.28.149.131:20880, Pool Size: 500 (active: 500, core: 500, max: 500, largest: 500), Task: 7179原创 2021-12-07 13:04:35 · 1611 阅读 · 1 评论 -
java sftp下载文件报错 Caused by: com.jcraft.jsch.JSchException: session is down
最近线上有一个下载文件的报错:Caused by: com.jcraft.jsch.JSchException: session is down业务场景是我们使用jsch连接到三方提供的一个sftp服务器,每日定时下载所需的文件。 <dependency> <groupId>com.jcraft</groupId> <artifactId>jsch</artifactId> <versi原创 2021-07-05 18:17:18 · 4758 阅读 · 0 评论 -
当kafka分区不能再增加的情况下,使用多线程提升kafka消费能力(附源码)
正常情况下,kafka的消费线程数据是分区(patition)一对一,单个patition是kafka并行操作的最小单元,kafka只允许单个partition的数据被一个consumer线程消费,例如我们做20个分区,实际上就对应着20个消费线程,当我们做一些活动的时候,就会有发生消息量猛增,而我们的消费线程有限,处理消息的能力有可能跟不上,导致大量的消息堆积处理不完。这时我们可能就需求要优化,加大处理能力,多数人可能会想到增加分区,分区是可以增加,但是不可能一直无限向上增加,我们这里参用...原创 2020-09-24 14:44:51 · 3460 阅读 · 0 评论 -
java8 ThreadLocalRandom获取一个区间内的随机数,很实用
在java里,要取一个随机数方法也有很多,例如Math类,Random类,ThreadLocalRandom类,SecureRandom类,今天借用ThreadLocalRandom类使用java8的语法,,写一个获取区间内的随机数的工具类。大家要注意ThreadLocalRandom类生成的随机数是一个“伪随机数”,是可以被破译的,这种方式仅限于一些对随机数要求不高的场景,ThreadLocalRandom多线程环境下推荐使用,更为高效,用来补充(取代Random)另外随机数生成...原创 2020-06-29 11:46:13 · 2301 阅读 · 0 评论 -
Connection is not available, request timed out after 5000ms.总算解决了
org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is java.sql.SQLTransientConnectionException: XXPool - Connection is not available, request timed out after 5000ms.原创 2020-05-16 00:20:17 · 32639 阅读 · 14 评论 -
应用频繁的发生FULLGC怎么办,如何排查?
FULLGC的发生在应用里经常会有,怎么才算的上是频繁?我个人理解如果每天发生2次以上应该就算的上是频繁,FULLGC发生也会为我们的应用带来一些问题,比如会发生gc stw(stop the world),会停止所有的工作线程,如果gc时间很长的话,有些带有心跳的应用软件,会认为应用不在存活,做出一些错误的处理等。 这里给大家分享一下,FULLGC的一个协查的思...原创 2019-12-12 10:34:38 · 5063 阅读 · 0 评论 -
一次线程java.lang.OutOfMemoryError(OOM)协查后的思考
上周一同事找我协查一个线上OOM的问题,协查的过程这里就不讲了,跟我之前协过的一个OOM过程其实差不多,之前的协查参看这篇:通过mybatis源码,分析一次由mybatis使用不当导致的OutOfMemoryError的协查今天主要讲一下结果和对结果做一下总结:这次的OOM的发生主要由于,一个不常用的查询功能,做的全表查询,因为数据量太大,导致的堆内存溢出先来看一sql(列了一个相近的...原创 2019-08-19 13:12:12 · 390 阅读 · 2 评论 -
java微基准测试JMH引入报错RuntimeException: ERROR: Unable to find the resource: /META-INF/BenchmarkList
在我引用JMH后,运行的时候报了一个如下的错误:/Library/Java/JavaVirtualMachines/jdk-11.0.2.jdk/Contents/Home/bin/java "-javaagent:/Applications/IntelliJ IDEA.app/Contents/lib/idea_rt.jar=61638:/Applications/IntelliJ IDE...原创 2019-04-01 11:16:11 · 4781 阅读 · 1 评论 -
java8中获取两个时间的时间差
工作中我们经常会想查看一个方法执行的性能,就会通过在方法入口和出口处记算一下时间差值,像下面代码这样: long start = System.currentTimeMillis(); //business code Thread.sleep(1000); long over = System.currentTimeMilli...原创 2019-02-20 14:16:14 · 30613 阅读 · 0 评论 -
使用java8的java.util.Base64报“java.lang.IllegalArgumentException: Illegal base64 character d”的问题
参考原创:https://blog.csdn.net/java_4_ever/article/details/80978089这里要再次感谢一下原创,本人也找到了解决问题的办法,只是没搞明白原因是什么,学习上面的文章才得以明白。是生产的上线后发现的问题:java.lang.IllegalArgumentException: Illegal base64 character d ...原创 2019-02-22 15:26:33 · 71160 阅读 · 10 评论 -
java.util.List中subList方法让我们栽了一个坑然后我们写了一个填坑方法
这是前段时间线上发现的一个问题,来自于一个分批处理的分页需求,需求里要对集合里的数据分批次处理,于是有了下面代码,我还原生产的demo:public class SubListTest { public static void main(String[] args) {// List<String> srcList = Arrays.asList("a...原创 2019-01-24 14:54:44 · 651 阅读 · 0 评论 -
Java8 实现计算两个日期之间的天数
这几天给项目组同事做代码评审,刚好看到一段求两个日期之间的天数,看完后觉得写的太复杂(采用获取两个日期的毫秒数,相减后再除以一天的毫秒数得到天数),刚好项目用的是java8,就想到用java8 新的Java日期/时间API 实现一个更加简洁的方法原创 2017-11-03 23:36:46 · 27351 阅读 · 1 评论 -
java jsch实现sftp文件上传,并且控制上传的速度,同时监控上传进度
工作中,有些环境带宽有限,比如说专线,通常带宽比较小,又不便宜,当业务量大的时间,如果在专线上还要传输文件的话,往往在文件传输的时间会导致带宽占慢,就有可能导致时实交易进不来,有可能影响交易,今天贴一下 jsch实现sftp文件上传,并且控制上传的速度,同时监控上传进度,供大家参考。maven 工程下先把jsch 依赖添加到pom.xml <dependency> ...原创 2018-04-01 21:54:37 · 8970 阅读 · 1 评论 -
如何理解并发(Concurrency)和并行(Parallelism)的区别
并发:一个人干多件事(并不一定能缩短做一件事的时间,比如烧水和看报纸,烧水的时间并不会因为看报纸或者做其他事情而缩短)并行:多个人干一件事(就像盖房子,码砖的人多了,就会缩短建造时间)...原创 2018-05-09 14:42:20 · 6088 阅读 · 0 评论 -
用java8实现6行代码搞定递归删除多级非空目录
在review 代码的时候,看到同事写的代码删除多级非空目录,写的很长一串,太复杂,就自己写了一个,分享给大家:package com.test.java8;import java.io.File;import java.util.Arrays;import java.util.Objects;/** * @author KEVIN */public interface ...原创 2018-08-23 18:35:36 · 3213 阅读 · 1 评论 -
javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake 痛苦解决之旅
上周另外一项目组的同事找到我说,遇到一个问题很棘手两天了还没解决掉,报错如下:javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java...原创 2018-08-28 13:17:33 · 123267 阅读 · 44 评论 -
java8 httpclient NameValuePair转换14行代码一行搞定!
工作中,我们常常会通过httpclient调用一些三方提供的api, 进行参数传递的时候会用NameValuePair[ ]于是我们同事写了一个方法封装一下 NameValuePair,将map中用 参数key ,参数值value,做一个转换如下:public static NameValuePair[] convertMap2NameValuePairs(Map<Str...原创 2018-08-24 11:33:39 · 3682 阅读 · 1 评论 -
java8生成可自定义长度的随机数
刚好工作中用到,用java8的语法写了一个获取随机数的工具分享给大家:源代码:https://github.com/kevinmails/javase/blob/master/src/main/java/com/test/java8/RandomUtil.javapackage com.test.java8;import java.util.Random;import java.u...原创 2018-09-02 15:16:28 · 9492 阅读 · 0 评论 -
java8 通过18位身份证号提取用户信息(年龄,生日,姓别)
工作中经常用到的通过身份证号(18位)提取用户信息(年龄,生日,姓别),分享给大家:先做一个javabean 存用户信息:package com;import lombok.*;import java.time.LocalDate;/** * @author kevin * Date 2018/9/5 * Time 9:34 */@Builder@Datapub...原创 2018-09-07 17:03:31 · 11474 阅读 · 0 评论 -
com.alibaba.dubbo.remoting.RemotingException: Caused by: java.nio.channels.ClosedChannelException
生产遇到的一个异常如下:com.alibaba.dubbo.remoting.RemotingException: Failed to send message Response [id=0, version=2.0.0, status=20, event=false, error=null, result=RpcResult [result=Fruit(name=null, color=o...原创 2018-10-13 23:36:54 · 8087 阅读 · 0 评论 -
java ssl调试打开ssl debug日志
添加jvm 参数-Djavax.net.debug=ssl或者-Djavax.net.debug=allall turn on all debuggingssl turn on ssl debuggingThe following can be used with ssl: record enable per-...原创 2018-11-27 09:29:33 · 11662 阅读 · 5 评论 -
java httpclinet请求https地址报java.io.IOException: Invalid keystore format 解决办法
=这又是一次生产问题协查,痛苦的协查。起因是合作方调用地址变更,变更后的地址是https协议地址,对方新增了一个.jks的证书库要加载代码写完后,一上线发https请求就报错,因为合作方封装了一个sdk的包,报错堆栈信息没有向上返回,是返回了一个“加密失败”,哎。。。。这里只能把ssl debug打开来,打开方法不太清楚的参考另一篇文章 java ssl调试打开ssl debug日志打...原创 2018-11-28 20:01:03 · 14141 阅读 · 1 评论 -
通过mybatis源码,分析一次由mybatis使用不当导致的OutOfMemoryError的协查
说是mybatis使用不当,其实也不准确,应该说是不了解mybatis的一些工作机制,下文带着大家一起分析一下mybatis源码,了解一下这次线上OOM原因. 首先了解一下是什么OOM? OOM 是Out Of Memory 的简写,中文翻译:内存溢出. 百科上的说:内存溢出(out of memory)通俗理解就是内存不够,通常在运行大型软件或游戏时,软件或游戏所需要...原创 2018-12-13 12:41:59 · 3073 阅读 · 0 评论 -
利用java8 stream api 实现List集合分页获取工具
package com.test.paging;import java.util.Arrays;import java.util.List;/** * @author kevin.chen * Date 2017/11/9 * Time 18:05 */public class ListPagingTest { public sta...原创 2017-11-12 15:04:28 · 22231 阅读 · 1 评论