Java
文章平均质量分 62
jdk、jvm等
rivercoder
技术改变生活
展开
-
java.sql.SQLException:Unknown system variable ‘tx_isolation‘问题解决
MySQL 服务器使用的是8.x版本,但是客户端的连接 mysql-connector-java 却是 5.1.10。保持版本一致,升级 mysql-connector-java版本为 8.X。原创 2023-10-19 21:23:09 · 897 阅读 · 0 评论 -
java.sql.SQLFeatureNotSupportedException解决方法
可以看出,create_time映射到LocalDateTime时抛出异常,时间类型映射不支持LocalDateTime,原创 2023-10-15 15:33:30 · 3441 阅读 · 2 评论 -
Jacoco代码覆盖率测试
JaCoCo(Java Code Coverage)是一个开源的覆盖率工具,它针对的开发语言是java,其使用方法很灵活,可以嵌入到Ant、Maven中。很多第三方的工具提供了对JaCoCo的集成,如sonar、Jenkins。原创 2023-06-24 20:59:12 · 1191 阅读 · 0 评论 -
高性能Java对象转换工具MapStruct
MapStruct是一个生成类型安全、高性能且无依赖的JavaBean映射代码的注解处理器。原创 2022-11-13 16:21:27 · 1060 阅读 · 0 评论 -
Math.abs一定大于等于0吗?
最近在做单元测试时用到了Java(JDK8)的Math.abs方法,取给定整数的绝对值,再做其他处理,没想到运行测试用例时出现了异常,原因就是Math.abs返回了负数,所以很奇葩,Math.abs有可能小于0。原创 2022-07-20 21:01:20 · 436 阅读 · 0 评论 -
java常用设计模式之模板方法模式
模板方法模式属于行为型模式,它定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。原创 2022-06-23 17:23:08 · 210 阅读 · 0 评论 -
简洁、快速、节约内存的Excel处理工具EasyExcel
EasyExcel是一个基于Java的、快速、简洁、解决大文件内存溢出的Excel处理工具。他能让你在不用考虑性能、内存的等因素的情况下,快速完成Excel的读、写等功能。EasyExcel基于POI进行封装优化,降低内存使用,再大的excel也不会出现内存溢出,让使用更加简单方便。......原创 2022-06-23 17:15:32 · 12595 阅读 · 0 评论 -
Spring中Junit单元测试的2种姿势
平时开发过程中,完成一个功能,都需要单元测试,接口的话,可以通过浏览器或者postman进行接口测试, 有时开发job类功能或者只调整部分代码,junit单元测试就很方便了,接下来简单介绍下。1、引入基础依赖<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId&.原创 2020-10-29 22:05:46 · 966 阅读 · 0 评论 -
Spring框架中常用的技巧及扩展点
Spring是现在非常流行的轻量级Java开发框架,简化Java开发,提供了丰富的功能,工作中基本都会使用到它,如框架整合;总结下Spring中常用的使用技巧及扩展点。原创 2022-05-02 19:37:11 · 1331 阅读 · 0 评论 -
Lombok类上加@Builder注解报错:实际参数列表和形式参数列表长度不同
在IDEA中使用Lombok插件后,可以极大方便我们的开发。在类上加@Builder注解后,类就可以使用建造者模式,比如:@Builder@Datapublic class ResultDTO { private String code; private String message; private Object result; public static void main(String[] args) { System.out.print原创 2022-03-30 00:00:00 · 2889 阅读 · 0 评论 -
jdk1.8.0_151 java.security.InvalidKeyException: Illegal key size
欢迎光临我的博客查看最新文章:https://river106.cn调用第三方接口,对数据进行AES加密时,报错如下:java.security.InvalidKeyException: Illegal key size1、为什么会出现这个报错?JDK中包含有JRE(Java Runtime Environment,即:Java运行环境),JRE中包括Java虚拟机(Java Virtual Machine)、Java核心类库和支持文件,而我们今天要说的主角就在Java的核心类库...原创 2022-03-19 10:52:44 · 2161 阅读 · 0 评论 -
SpringCloud Feign实现文件上传
Feign中不支持文件上传,需要引用外部依赖进行相应的配置才能实现。原创 2022-03-13 00:15:33 · 1146 阅读 · 0 评论 -
SpringBoot项目中使用jasypt加密数据库账号
SpringBoot使用jasypt加密数据库账号原创 2022-03-03 21:40:48 · 889 阅读 · 0 评论 -
常用加密算法及Java实现
MD5RSADESAES原创 2021-12-12 21:06:56 · 902 阅读 · 0 评论 -
基于LinkedHashMap实现LRU缓存
LRU,Least Recently Used,即最近最少使用,LRU缓存是经常使用的缓存淘汰策略之一。我们可以使用LinkedHashMap的特性很容易实现LRU缓存。1、访问排序LinkedHashMap的构造方法中,有个accessorder参数,传true时,在调用get方法获取值时会对获取的值进行排序:afterNodeAccess方法会将节点移至链表尾部:afterNodeAccess方法实际是HashMap提供的扩展点,子类可以去重写来实现节点插入、访问和...原创 2021-10-31 12:54:55 · 692 阅读 · 0 评论 -
开源OCR识别框架Tess4j简单使用
1、简介Tesseract的OCR引擎最先由HP实验室于1985年开始研发,至1995年时已经成为OCR业内最准确的三款识别引擎之一。Tesseract目前已作为开源顶目发布在GoogleProject,它与Leptonica图片处理库结合,可以读取各种格式的图像并将它们转化成超过60种语言的文本,我们还可以不断训 练自己的库,使图像转换文本的能力不断增强,如果团队深度需要,还可以以它为模板,开发出等合自身需求的OCR引擎。Tess4J 是Java (JNA) 对 Tesseract OCR API原创 2021-08-31 23:08:32 · 7906 阅读 · 0 评论 -
使用Nginx代理https到Tomcat,后端request.getRequestURL()获取不到https开头的链接
在网站改为https后,后台tomcat实际访问的地址为http,在某些场景下会有问题。解决方法如下:1.nginx的location块中增加配置内容如下:proxy_set_headerX-Forwarded-Proto$scheme;2. 修改Tomcat server.xml配置在Tomcat server.xml 的 Engine 模块下配置一个 Valve:<ValveclassName="org.apache.catalina.va...原创 2021-05-28 22:45:59 · 3550 阅读 · 0 评论 -
统计java代码执行耗时的N种姿势
平时的开发中,偶尔会遇到统计代码执行耗时的情况,一般代码如下:long start = System.currentTimeMillis();// .....代码段 System.out.println("cost time: " + (System.currentTimeMillis() - start) + " ms");如果为了防止异常,可以这么写:long start = System.currentTimeMillis();try { // ..原创 2021-02-18 22:54:14 · 7726 阅读 · 4 评论 -
SpringBoot文件批量zip打包下载
平时开发中文件的上传下载经常会遇到,如excel的上传下载等,Excel的处理可以使用阿里的EasyExcel,一款快速、简单避免OOM的java处理Excel工具,github:https://github.com/alibaba/easyexcel, 有兴趣的可以自己去尝试下;此处介绍文件的批量下载, 如果一次性下载多个文件的话, 建议生成文件后将文件打成ZIP包,再下载,Java代码如下:import org.slf4j.Logger;import org.slf4j.LoggerFact原创 2020-12-15 22:10:57 · 5993 阅读 · 2 评论 -
Calendar根据日期获取年份和周、当前周的所有日期
Calendar根据日期获取年份和周,直接上代码:import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Calendar;import java.util.Date;import java.util.List;public class CalendarTest { public static void main(S原创 2020-12-09 22:35:29 · 4038 阅读 · 5 评论 -
Java开发人员20种常用类库和API
本文总结了日志、JSON解析、单测、XML解析、字节码处理、数据库连接池、集合类、邮件、加密、嵌入式SQL数据库、JDBC故障诊断以及序列化等20个方面的常用类库,都是日常开发经常可能要用到的。...原创 2020-10-01 20:27:12 · 412 阅读 · 0 评论 -
查看JVM相关信息
1、查看堆内存信息$ jps #拿到pid$ jmap -heap pid #查看堆内存信息使用jps拿到进程ID获取进程ID,使用jmap获取堆内存信息C:\Users\ASUS>jmap -heap 17044Attaching to process ID 17044, please wait...Debugger attached successfully.Server compiler detected.JVM version is 25.51-b03us原创 2020-07-12 13:05:51 · 259 阅读 · 0 评论 -
Java8新特性Lambda表达式的一些常见用法
一、Lamda简单介绍Lambda表达式是JAVA8中提供的一种新的特性,它支持Java也能进行简单的“函数式编程”。它是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstraction),是一个匿名函数,即没有函数名的函数。要理解函数式编程的产生目的,就要先理解匿名内部类。先来简单看下匿名内部类调用方式。interface Animal { void run();}public class Main {原创 2020-05-14 22:54:14 · 656 阅读 · 0 评论 -
Java探针-Java Agent技术入门实例
一、简介java agent是java命令的一个参数。参数 javaagent 可以用于指定一个 jar 包,并且对该 java 包有2个要求:这个 jar 包的MANIFEST.MF 文件必须指定 Premain-Class 项。 Premain-Class 指定的那个类必须实现 premain()方法。重点就在 premain 方法,从字面上理解,就是运行在 main 函数之前的的...原创 2021-02-16 11:15:32 · 2579 阅读 · 3 评论 -
idea常用设置、调整idea运行时内存
刚从eclipse转idea,使用过程中常用的设置记录下。一、idea默认设置设置路径:File-> Other Settings -> Default Settings(刚开始通过File->Settings设置,有些设置只对当前项目有效,重新打开另一项目时又要重新设置,所以需要设置默认)1、maven构建工具设置2、设置自动编译3...原创 2019-11-28 21:40:10 · 8598 阅读 · 0 评论 -
Java程序员常用软件
目录1、IDE2、应用服务器3、分布式版本控制4、项目管理5、数据库管理工具6、Web服务器7、接口测试工具8、SSH工具9、抓包工具10、其他一些软件工欲善其事必先利其器,作为有多年开发经验的Java程序员,应该都会有一些常用的软件来辅助自己的工作,下面分享从业几年来一直在用的一些软件。1、IDEEclipseEclipse 是一...原创 2019-11-03 20:03:42 · 35888 阅读 · 3 评论 -
基于Java内存模型:synchronized和volatile的比较
1.Java内存模型 1) Java虚拟机规范试图定义一种Java内存模型,来屏蔽掉各种硬件和操作系统的内存访问差异,以实现让Java程序在各种平台下都能达到一致的内存访问效果。 2)Java内存模型的主要目标是定义程序中各个变量的访问规则,即在虚拟机中将变量存储到内存中和从内存中取出变量这样得底层细节。 3)Java内存模型规定了所有的变量都存储在主内存中 4)每条...原创 2019-10-20 15:06:24 · 156 阅读 · 0 评论 -
Java程序员必备流程图
目录前言1.spring的生命周期2.TCP三次握手,四次挥手3.线程池执行流程图4.JVM内存结构5.Java内存模型6.springMVC执行流程图7.JDBC执行流程8.spring cloud组件架构9.dubbo 调用前言整理了一些Java基础流程图/架构图,做一下笔记,大家一起学习。1.spring的生命周期Spring作为...转载 2019-10-20 10:29:01 · 672 阅读 · 0 评论 -
由Eclipse转向Idea
由于Eclipse的卡顿及吃内存等问题,开始尝试使用Idea。使用过程中出现的问题,记录下。1、安装使用idea是收费的,网上有各种激活码和破解方法,可自行搜索或购买正版。2、快捷键使用如果习惯了使用Eclipse的快捷键,还可以设置兼容Eclipse的快捷键,设置方法:File->Settings,搜索keymap,右侧下拉选项选择Eclipse即可...原创 2019-10-18 21:12:27 · 254 阅读 · 0 评论 -
java常用设计模式之原型模式及深浅拷贝
原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。Prototype类需要具备以下两个条件:1、实现Cloneable接口。在java语言有一个Cloneable接口,它的作用只有一个,就是在运行时通知虚拟机可以安全地在实现了此接口的类上使用clone方法。在java虚拟机中,只...原创 2018-09-16 16:22:09 · 650 阅读 · 0 评论 -
java中数组转为列表的几种方法,推荐第三种
java中数组转为集合List,是很基础常见的,日常开发中也经常会用到,今天整理了下,有5种方法,先列出,再慢慢道来。1、 List list = Arrays.asList(array);2、new ArrayList(Arrays.asList(array));3、Collections.addAll(arraylist, array);4、for(Element e :...原创 2018-09-15 10:29:57 · 5587 阅读 · 2 评论 -
闭锁CountDownLatch、栅栏CyclicBarrier、信号量Semaphore
Java 5 是Java 历史上非常重要的一个版本,它提供了泛型、for-each、自动装箱和拆箱、枚举、可变参数、静态导入、注解以及java.util.concurrent并发工具包,接下来简单介绍下并发工具包下的闭锁ConutDownLatch、栅栏CyclicBarrier、信号量Semaphore。1、闭锁ConutDownLatchjava.util.concurrent.Cou...原创 2018-09-15 10:20:46 · 679 阅读 · 0 评论 -
Spring如何处理线程并发:ThreadLocal
SpringMVC是单例的,高并发情况下,如何保证性能的? 按照传统经验,如果某个对象是非线程安全的,在多线程环境下,对对象的访问必须采用synchronized进行线程同步。但Spring的DAO模板类并未采用线程同步机制,因为线程同步限制了并发访问,会带来很大的性能损失。此外,通过代码同步解决性能安全问题挑战性很大,可能会增强好几倍的实现难度。那模板类究竟仰丈何种魔法神功,可...转载 2018-09-15 10:04:48 · 3220 阅读 · 0 评论 -
HashMap,LinkedHashMap,TreeMap的区别
Map主要用于存储健值对,根据键得到值,因此不允许键重复(重复了覆盖了),但允许值重复。 HashMap HashMap 是一个最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度。遍历时,取得数据的顺序是完全随机的。 HashMap最多只允许一条记录的键为Null;允许多条记录的值为 Null。 HashMap不支持线程的同步...转载 2018-09-15 10:01:43 · 88 阅读 · 0 评论 -
深入理解Java内存模型
网上有很多关于Java内存模型的文章,在《深入理解Java虚拟机》和《Java并发编程的艺术》等书中也都有关于这个知识点的介绍。但是,很多人读完之后还是搞不清楚,甚至有的人说自己更懵了。本文,就来整体的介绍一下Java内存模型,目的很简单,让你读完本文以后,就知道到底Java内存模型是什么,为什么要有Java内存模型,Java内存模型解决了什么问题等。本文中,有很多定义和说法,都是笔者自己理解...转载 2018-09-15 08:02:17 · 135 阅读 · 0 评论 -
分布式系统唯一ID生成方案汇总
前言 系统唯一ID是我们在设计一个系统的时候常常会遇见的问题,也常常为这个问题而纠结。生成ID的方法有很多,适应不同的场景、需求以及性能要求。所以有些比较复杂的系统会有多个ID生成的策略。下面就介绍一些常见的ID生成策略。 一、数据库自增长序列或字段 最常见的方式。利用数据库,全数据库唯一。优点: 简单,代码方便,性能可以接受。 数字ID天然排序,对分页...转载 2018-09-13 22:54:12 · 2438 阅读 · 0 评论 -
JDK导入证书
一:导入证书1.打开doc窗口,打开cmd,执行命令:keytool -import -file f:\ca.crt -keystore "%JAVA_HOME%\jre\lib\security\cacerts" -alias server-file 指定证书文件的位置-alias 指定证书的别名2.输入密钥库口令:changeit3.是否信任此证书? [否]...转载 2018-09-13 22:51:36 · 3102 阅读 · 0 评论 -
java中单例模式的4种实现方式
单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。第一种:饿汉式public class Singleton { ...原创 2018-09-16 16:22:26 · 1883 阅读 · 0 评论 -
java常用设计模式之策略模式
java中常用的设计模式如单例模式、原型模式,在这之前的2篇文章中已经说明,还有代理模式,外观模式、装饰模式、模板模式等。今天再说一个java中常用的设计模式-策略模式。说的有出入的,请大家指正,互相学习,共同进步!策略模式属于对象的行为模式。其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发...原创 2018-09-16 16:22:42 · 143 阅读 · 0 评论 -
JDK中使用的设计模式
经典的23种设计模式在JDK中都有应用,下面列举一些常见的使用到设计模式的类及方法。一、结构型模式1、适配器模式用来把一个接口转化成另一个接口。java.util.Arrays#asList()java.io.InputStreamReader(InputStream)java.io.OutputStreamWriter(OutputStream)javax.xml.bi...原创 2019-10-09 22:11:54 · 253 阅读 · 0 评论