![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 67
YouluBank
WMS/WCS/MES开发工程师,持续关注软件,物流,自动化行业的最新技术和资讯
展开
-
经常用Redis,这些坑你知道吗?
经常用Redis,这些坑你知道吗?原创 2023-02-24 22:18:17 · 390 阅读 · 1 评论 -
单核CPU, 1G内存,也能做JVM调优吗?
单核CPU, 1G内存,也能做JVM调优吗?原创 2023-02-24 22:14:05 · 1765 阅读 · 0 评论 -
一次线上JVM Young GC调优,搞懂了这么多东西!
一次线上JVM Young GC调优,搞懂了这么多东西!原创 2023-02-24 22:07:29 · 749 阅读 · 0 评论 -
JVM GC G1垃圾回收器配置
JVM GC G1垃圾回收器配置原创 2023-02-23 22:52:39 · 2988 阅读 · 0 评论 -
JVM优化常用命令
JVM优化常用命令原创 2023-02-22 16:42:24 · 521 阅读 · 0 评论 -
jvm mat分析dump文件
jvm mat分析dump文件原创 2023-02-10 18:23:09 · 1529 阅读 · 0 评论 -
Linux查看JVM FULL GC频率
Linux查看JVM FULL GC频率原创 2023-02-10 16:23:36 · 4215 阅读 · 0 评论 -
Java8使用stream分组和排序的实现
Java8使用stream分组和排序的实现原创 2022-08-30 10:32:42 · 2043 阅读 · 0 评论 -
Jackson2JsonRedisSerializer和GenericJackson2JsonRedisSerializer
Jackson2JsonRedisSerializer和GenericJackson2JsonRedisSerializer原创 2022-06-15 17:35:13 · 2025 阅读 · 1 评论 -
CompletableFuture最佳实践
本文安利一个 Java8 的工具 CompletableFuture,这是 Java8 带来的一个非常好用的用于异步编程的类。还没使用过的小伙伴,赶紧用起来吧。本文不介绍它的实现源码,仅介绍它的接口使用,本文也不做它和 RxJava 等其他异步编程框架的对比。实例化首先,不管我们要做什么,我们第一步是需要构造出 CompletableFuture 实例。最简单的,我们可以通过构造函数来进行实例化:CompletableFuture<String> cf = new Comp原创 2022-05-25 11:48:12 · 1343 阅读 · 0 评论 -
SpringCloud组件的停更和替换说明
SpringCloud的Hoxton版本,和之前的版本相比,用新的组件替换掉了原来大部分的组件,老的组件现在处于停更不停用的状况。详情见下图(×的表示之前的组件,现在停更了的;√的表示新的替换后的组件):描述:服务注册中心:Eureka:官方停止更新,并且已经有更好的替代产品了,可以使用,但是官方已经不建议使用了(重度患者)。Zookeeper:某些老系统,以前是用的Zookeeper + Dubbo,后来做技术升级,结果发现SpringCloud的Eureka停更了,然后就...转载 2022-05-07 15:51:15 · 2433 阅读 · 0 评论 -
Retrofit、Volley、HttpClient比较
Retrofit作为现在大家用的最多HTTP请求框架,非常流行,Github上star 3w+。它为什么能超越Volley、HTTPClient能够一枝独秀呢?那先看看其他两个HTTP栈的实现。HTTPClientJava界老牌HTTP栈实现,由Apache维护,它支持HTTP1.0/1.1、极其丰富的API来支持各种子协议,代码庞大臃肿也变成了它的缺点,虽然它的创建一开始是为了弥补Java SDK中java.net包HTTP请求的简单实现,Android在6.0以后彻底弃用了它,转而推荐使用HTT转载 2022-04-22 15:16:26 · 436 阅读 · 0 评论 -
优质博客文章地址收藏
Spring4.x 手动事务,监听处理未关闭事务的几点思路,文末彩蛋 - 简书乐观锁加重试,并发更新数据库一条记录导致:Lock wait timeout exceeded_earthhour的博客-CSDN博客数据库连接池配置(案例及排查指南)debug记录:连接池和事务引发的bug - 六道漫步的博客 | Liudaomanbu BlogDruid数据库连接池支持闲时检测吗? - 张恒的网络日志DruidDataSource配置属性列表 · alibaba/druid Wiki ·...原创 2022-04-14 20:20:31 · 1085 阅读 · 0 评论 -
@Transaction注解及失效详解
@Transaction注解回滚失效详解原创 2022-04-14 09:33:27 · 7309 阅读 · 0 评论 -
Cause: java.sql.SQLException: connection closed
近期系统频繁报java.sql.SQLException: connection closed原创 2022-04-14 00:40:48 · 9941 阅读 · 0 评论 -
Java 8新特性及常见用法
现在越来越多的项目使用Java 8 的新用法和类库,函数式编程的思想操作对象和集合类时,使代码简洁易读,本篇将介绍Lambda表达式,流Stream,类库,高级集合类和收集器,数据并行,测试和重构,设计和架构,并发等新特性。...原创 2022-03-11 00:23:24 · 386 阅读 · 0 评论 -
ForkJoinPool处理集合
ForkJoinPool 为了并行计算使用(也就是新增加的并行流),也适合IO密集型的场景比如大规模的并行查询,下面介绍并行处理List的用法:List<xxx> list = xxx;ForkJoinPool forkJoinPool = new ForkJoinPool(核心线程数量);try { forkJoinPool.submit(() -> list.parallelStream().forEach(t-> { xxx逻辑; }))原创 2022-02-24 00:00:27 · 760 阅读 · 0 评论 -
jstack输出进程中的堆栈信息到文件
Jstack -l PID >> a.logPID可以用命令TOP获取这里一般有两个运行参数,用来拍取内存快照,他们的含义如下:-l long listings,会打印出额外的锁信息,在发生死锁时可以用jstack -l pid来观察锁持有情况-m mixed mode,不仅会输出Java堆栈信息,还会输出C/C++堆栈信息(比如Native方法)注意:输出的dump文件一般在Linux的当前文件夹下面...原创 2021-12-21 17:14:17 · 3977 阅读 · 0 评论 -
Json转对象或List集合的类库对比
Java处理JSON数据有三个比较流行的类库FastJson、Jackson和Gson。Fastjson是阿里做的开源工具包,Jackson是Spring框架默认使用的工具包,我们经常用到的是FastJson和Jackson。Jackson//对象转JsonObjectMapper objectMapper = new ObjectMapper(); Person person = new Person(); person.setName("Tom"); person.setAge(4原创 2021-12-01 09:50:27 · 730 阅读 · 0 评论 -
分布式定时任务框架选型
1. 前言我们先思考下面几个业务场景的解决方案: 支付系统每天凌晨1点跑批,进行一天清算,每月1号进行上个月清算 电商整点抢购,商品价格8点整开始优惠 12306购票系统,超过30分钟没有成功支付订单的,进行回收处理 商品成功发货后,需要向客户发送短信提醒 很多业务场景需要我们某一特定的时刻去做某件任务,定时任务解决的就是这种业务场景。一般来说,系统可以使用消息传递代替部分定时任务,两者有很多相似之处,可以相互替换场景。如,上面发货成功发短信通知客户的业原创 2021-11-19 09:23:17 · 160 阅读 · 0 评论 -
Eureka-server启动:Cannot execute request on any known server
eureka-server启动时报com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known server,端口是8080,而不是我设置的8761配置文件如下:eureka: instance: prefer-ip-address: ${PREFER_IP_ADDRESS:true} hostname: ${EUREKA_INSTANCE_HOS..原创 2021-10-12 14:42:51 · 642 阅读 · 0 评论 -
SpringCloud与Dubbo的区别
1.SpringCloud与Dubbo的区别两者都是现在主流的微服务框架,但却存在不少差异: 初始定位不同:SpringCloud定位为微服务架构下的一站式解决方案;Dubbo 是 SOA 时代的产物,它的关注点主要在于服务的调用和治理 生态环境不同:SpringCloud依托于Spring平台,具备更加完善的生态体系;而Dubbo一开始只是做RPC远程调用,生态相对匮乏,现在逐渐丰富起来。 调用方式:SpringCloud是采用Http协议做远程调用,接口一般是Rest...原创 2021-09-27 11:46:24 · 3840 阅读 · 0 评论 -
Java 性能优化的 50 个细节(珍藏版)
在JAVA程序中,性能问题的大部分原因并不在于JAVA语言,而是程序本身。养成良好的编码习惯非常重要,能够显著地提升程序性能。1. 尽量在合适的场合使用单例使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所有地方都适用于单例简单来说,单例主要适用于以下三个方面: 控制资源的使用,通过线程同步来控制资源的并发访问; 控制实例的产生,以达到节约资源的目的; 控制数据共享,在不建立直接关联的条件下,让多个不相关的进程或线程之间实现通信。 2原创 2021-09-23 18:16:21 · 184 阅读 · 0 评论 -
Could not commit JPA transaction; nested exception is javax.persistence.RollbackException
使用JPA保存数据库出现无法提交的错误modelRepository.save(model);对比了实体类和数据库字段,都是匹配的后来发现是:@Version的字段数据库为null导致无法报错@Version@Column(name = "rec_ver")private Integer recVer;数据库这样就导致了无法提交,需要把数据库的的这个字段更新为0才OK...原创 2021-08-16 18:53:28 · 2101 阅读 · 0 评论 -
Java集合List去除重复数据的五种方式
以下介绍五种-不同的方法去除 Java 中ArrayList中的重复数据1、使用LinkedHashSet删除arraylist中的重复数据LinkedHashSet是在一个ArrayList删除重复数据的最佳方法。LinkedHashSet在内部完成两件事: 删除重复数据 保持添加到其中的数据的顺序 Java示例使用LinkedHashSet删除arraylist中的重复项。在给定的示例中,numbersList是包含整数的arraylist,其中一些是重复的数字。例如1.原创 2021-05-10 11:20:18 · 4306 阅读 · 0 评论 -
Java多线程常见问题详解
1) 什么是线程?线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。程序员可以通过它进行多处理器编程,你可以使用多线程对 运算密集型任务提速。比如,如果一个线程完成一个任务要100毫秒,那么用十个线程完成改任务只需10毫秒。Java在语言层面对多线程提供了卓越的支 持,它也是一个很好的卖点。2) 线程和进程有什么区别?线程是进程的子集,一个进程可以有很多线程,每条线程并行执行不同的任务。不同的进程使用不同的内存空间,而所有的线程共享一片相同的内存空间。别把它和原创 2021-05-08 16:30:39 · 651 阅读 · 0 评论 -
Java集合面试常见问题详解
集合的特点对象封装数据,对象多了也需要存储。集合用于存储对象。 对象的个数确定可以使用数组,对象的个数不确定的可以用集合。因为集合是可变长度的。集合和数组的区别数组是固定长度的;集合可变长度的。 数组可以存储基本数据类型,也可以存储引用数据类型;集合只能存储引用数据类型。 数组存储的元素必须是同一个数据类型;集合存储的对象可以是不同数据类型。集合框架的优点容量自增长; 提供了高性能的数据结构和算法,使编码更轻松,提高了程序速度和质量; 允许不同 API 之间的互操作,API之间可以原创 2021-05-04 00:18:07 · 341 阅读 · 0 评论 -
Java基本数据类和引用数据类型
Java中的数据类型分为引用数据类型(也有称为对象类型)和基本数据类型原创 2021-05-03 23:30:33 · 80 阅读 · 0 评论 -
Java 中初始化 List 集合的 7 种方式
1、常规方式List<String> languages = new ArrayList<>();languages.add("Java");languages.add("PHP");languages.add("Python");System.out.println(languages);2、Arrays 工具类List<String> jdks = Arrays.asList("JDK6", "JDK8", "JDK10");System.o原创 2021-04-19 17:59:23 · 368 阅读 · 0 评论 -
Linux查看jvm的GC情况
jstat命令可以查看堆内存各部分的使用量,以及加载类的数量。命令的格式如下:jstat [-命令选项] [vmid] [间隔时间/毫秒] [查询次数]类加载统计: Loaded:加载class的数量 Bytes:所占用空间大小 Unloaded:未加载数量 Bytes:未加载占用空间 Time:时间 编译统计 Compiled:编译数量。 Failed:失败数量 Invalid:不可用数量 Time:时间 FailedType:失败类型 FailedMet...原创 2021-03-12 14:49:25 · 1327 阅读 · 0 评论 -
排名前 16 的 Java 工具类
在Java中,实用程序类是定义一组执行通用功能的方法的类。这篇文章展示了最常用的Java实用工具类及其最常用的方法。类列表及其方法列表均按受欢迎程度排序。数据基于从GitHub随机选择的50,000个开源Java项目。希望您可以通过浏览列表来了解已经提供和流行的功能的一些想法,以使您知道不需要自己实现。这些方法的名称通常指示它们的作用。如果方法名称不够直观,您还可以查看其他开发人员如何在其开源项目中使用它们。 org.apache.commons.io.IOUtils closeQuie原创 2021-03-12 11:56:14 · 127 阅读 · 0 评论 -
Java Object、Set、List、Map快捷转换方法
Object转Map快捷方法Map mapItem = new HashMap();Object tempObj = someObj;if(!StringUtils.isEmpty(tempObj.toString())){ //先转成json字符,再转回json对象,JSON实际上是实现Map接口的子类,所以可以直接赋值给Map对象 mapItem = JSON.parseObject(JSON.toJSONString(tempObj)); }mapItem.pu原创 2020-09-23 12:00:44 · 2542 阅读 · 0 评论 -
JAVA线上故障排查全套路
线上故障主要会包括cpu、磁盘、内存以及网络问题,而大多数故障可能会包含不止一个层面的问题,所以进行排查时候尽量四个方面依次排查一遍。同时例如jstack、jmap等工具也是不囿于一个方面的问题的,基本上出问题就是df、free、top 三连,然后依次jstack、jmap伺候,具体问题具体分析即可。CPU一般来讲我们首先会排查cpu方面的问题。cpu异常往往还是比较好定位的。原因包括业务逻辑问题(死循环)、频繁gc以及上下文切换过多。而最常见的往往是业务逻辑(或者框架逻辑)导致的,可以使用jsta原创 2020-09-23 10:30:30 · 282 阅读 · 0 评论 -
超详细的Spring Cloud全面总结2W字
什么是Spring cloud构建分布式系统不需要复杂和容易出错。Spring Cloud 为最常见的分布式系统模式提供了一种简单且易于接受的编程模型,帮助开发人员构建有弹性的、可靠的、协调的应用程序。Spring Cloud 构建于 Spring Boot 之上,使得开发者很容易入手并快速应用于生产中。官方果然官方,介绍都这么有板有眼的。我所理解的 Spring Cloud 就是微服务系统架构的一站式解决方案,在平时我们构建微服务的过程中需要做如 服务发现注册 、配置中心 、消息总线 ..转载 2020-09-23 09:51:03 · 226 阅读 · 0 评论 -
Java统计代码的执行时间的6种方法
在日常开发中经常需要测试一些代码的执行时间,但又不想使用向 JMH(Java Microbenchmark Harness,Java 微基准测试套件)这么重的测试框架,所以本文就汇总了一些 Java 中比较常用的执行时间统计方法,总共包含以下 6 种,如下图所示:方法一:System.currentTimeMillis此方法为 Java 内置的方法,使用System#currentTimeMillis来统计执行的时间(统计单位:毫秒),示例代码如下:publicclassTimeI...原创 2020-09-23 09:40:53 · 40407 阅读 · 2 评论 -
JDK8 的 Lambda、Stream 和日期的使用详解
前言本篇主要讲述是Java中JDK1.8的一些新语法特性使用,主要是Lambda、Stream和LocalDate日期的一些使用讲解。LambdaLambda介绍“Lambda 表达式(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstraction),是一个匿名函数,即没有函数名的函数。Lambda表达式的结构 一个 Lambda 表达式可以有零个或多个参数 参数的类原创 2020-08-27 09:55:29 · 1736 阅读 · 0 评论 -
6种@Transactional注解的失效场景
引言@Transactional 注解相信大家并不陌生,平时开发中很常用的一个注解,它能保证方法内多个数据库操作要么同时成功、要么同时失败。使用@Transactional注解时需要注意许多的细节,不然你会发现@Transactional总是莫名其妙的就失效了。一、事务事务管理在系统开发中是不可缺少的一部分,Spring提供了很好事务管理机制,主要分为编程式事务和声明式事务两种。编程式事务:是指在代码中手动的管理事务的提交、回滚等操作,代码侵入性比较强,如下示例:try { /转载 2020-08-25 15:51:17 · 1109 阅读 · 0 评论 -
Spring中的@Transactional(rollbackFor = Exception.class)详解
@Override@Transactional(rollbackFor = Exception.class)经常看到:@Transactional(rollbackFor = Exception.class) 的注解,这个注解的用法;@Transactional注解的全部属性详解 属性 类型 描述 value String 可选的限定描述符,指定使用的事务管理器 propagation enum: Propagation 可选的事务传播行为设...原创 2020-08-25 15:32:31 · 3342 阅读 · 0 评论 -
java.math.BigDecimal cannot be cast to java.lang.Integer
Java类型转换报错:org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.ClassCastException: java.math.BigDecimal cannot be cast to java.lang.Integer源码如下:Map<String, Object> map = mapList.get(0);i原创 2020-07-28 14:41:45 · 847 阅读 · 0 评论 -
Unchecked assignment:‘java.util.HashMap to xxx‘
IDEA类型强制转换需要声明类型,new HashMap()改为new HashMap <>()即可Map<String, Object> condition = new HashMap<>();或增加@SuppressWarnings("unchecked"),也是可以的原创 2020-07-16 12:00:11 · 5368 阅读 · 0 评论