![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
javase
文章平均质量分 53
qq_34412985
Coding make me happy.
展开
-
一篇文章带你了解Java泛型的super和extends
泛型原创 2022-07-31 19:08:06 · 604 阅读 · 2 评论 -
ArrayList c.toArray might (incorrectly) not return Object[] (see 6260652)
arraylist原创 2022-07-23 10:31:35 · 455 阅读 · 0 评论 -
java String.replaceAll(“#“,“$“)报错Illegal group reference: group index is missing
java中String.replaceAll("#","$")时报错Illegal group reference: group index is missing解决方法改为下面的就可以添加转义符replaceAll("#","\\$");原创 2022-05-07 14:32:10 · 834 阅读 · 0 评论 -
出现 Non-terminating decimal expansion; no exact representable decimal result 问题的解决方法
代码中使用了 BigDecimal 做精确计算,在做除法时,系统抛出 “ Non-terminating decimal expansion; no exact representable decimal result”。1 分析BigDecimal 是不可变的、任意精度的有符号十进制数,所以可以做精确计算。但在除法中,准确的商可能是一个无限长的十进制扩展;例如,1 除以 3 所得的商。我们在做除法时,没有指定舍入模式,并且无法表示为准确的结果,因此抛出了这个异常(java.lang.Arithmet原创 2022-05-05 14:06:10 · 8459 阅读 · 0 评论 -
java业务开发常见错误100例list笔记
使用 List.subList 进行切片操作居然会导致 OOM?private static List<List<Integer>> data = new ArrayList<>();private static void oom() { for (int i = 0; i < 1000; i++) { List<Integer> rawList = IntStream.rangeClosed(1, 100000).box.原创 2022-03-14 14:41:53 · 2334 阅读 · 0 评论 -
使用Aviator达式引擎处理表达式判断
Aviator是一个高性能、轻量级的基于java实现的表达式引擎,它动态地将String类型的表达式编译成Java ByteCode并交给JVM执行。Aviator支持所有的关系运算符和算术运算符,不支持位运算,同时支持表达式的优先级,优先级跟Java的运算符一样,并且支持通过括号来强制优先级。示例代码:Map<String, Object> env = new HashMap<String, Object>();env.put("email", "killme200原创 2021-12-08 21:26:40 · 1284 阅读 · 0 评论 -
ThreadPoolTaskExecutor同时自定义线程拒绝策略,防止线程太多造成线程池将任务丢弃
@Bean("lcAsyncServiceExecutor")public ThreadPoolTaskExecutor threadPoolTaskExecutor() { ThreadPoolTaskExecutor threadPoolTaskExecutor = new ThreadPoolTaskExecutor(); threadPoolTaskExecutor.setCorePoolSize(COUR_SIZE); threadPoolTaskExecutor.se.原创 2021-12-08 21:12:01 · 1719 阅读 · 0 评论 -
eurekaserver依赖jdk中JAXB在jdk9及以上版本从javase移到javaee中
原创 2021-11-21 14:15:35 · 335 阅读 · 0 评论 -
Java对信号的处理
本文主要包括Java如何处理信号,直接上代码。1. 实现SignalHandlerpackage com.chzhao.SignalTest;import sun.misc.*;@SuppressWarnings("restriction")public class TestSignal implements SignalHandler { public void handle(Signal arg0) { System.out.println(arg0.get原创 2021-11-06 18:50:24 · 428 阅读 · 0 评论 -
java序列化反序列化工具类SerializeUtils.java
Redis不支持直接将Java对象存储到数据库中,所以需要将java对象进行序列化得到字节数组,然后将字节数组存入到redis中,需要数据的时候就从redis数据库中取出字节数组,再经过反序列化将自己数组转换成对象使用(jdk序列化性能比谷歌公司的Protobuf序列化性能要差一些,而且序列化后的字节长度要也会长一些,所以推荐使用Protobuf.import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; ..原创 2021-10-31 19:08:18 · 325 阅读 · 0 评论 -
BigDecimal转成字符串为科学计数法踩坑
一、场景 在开发工程中,在金额方面都会定义bigdecimal类型,当然有时候也需要将金额转成字符串。我们可能会很自然的写成 金额.toString()方法如:amount.getInitTotalAmount().toString()//获取初始预算金额的字符串String amountInfo="到账"+amount+"元";当然当金额过小时,转成字符串,是没有任何问题的,但当金额数值较大时,转成的字符串时科学计数法格式,这往往不是我们想要的格式。因此amount.get...原创 2021-10-10 18:05:25 · 1462 阅读 · 0 评论 -
使用jar命令解压和更新jar包中文件
使用jar xf meta.jar \BOOT-INF\classes\config\application.properties使用jar uf meta.jar \BOOT-INF\classes\config\application.properties原创 2021-06-10 10:11:43 · 250 阅读 · 0 评论 -
字符串以逗号分隔的转换为List方法
1: 利用JDK的Arrays类Stringstr ="a,b,c";List<String> split= Arrays.asList(str.split(","));2: 利用Guava的SplitterStringstr ="a, b, c";List<String> splitToList= Splitter.on(",").trimResults().splitToList(str);3: 利用Apache Commons的StringUtils (只.原创 2021-03-11 10:50:35 · 3366 阅读 · 0 评论 -
java解决动态编译加载不到import的jar包
package com.*.utils;import java.net.URL;import java.net.URLClassLoader;import java.util.Arrays;import java.util.HashMap;import java.util.Map;import javax.tools.JavaCompiler;import javax.tools.JavaFileObject;import javax.tools.StandardJavaFileMana原创 2021-01-31 15:51:21 · 1997 阅读 · 0 评论 -
BUG记录-SpringBoot添加大数据jar包后找不到jaxb相关jar包
启动项目是成功的,但是上面报了四个错误,看的一脸懵逼,项目也没用这个jaxb的依赖包啊java.io.FileNotFoundException: D:\szw\repository\com\sun\xml\bind\jaxb-impl\2.1\jaxb-api.jar (系统找不到指定的文件。) java.io.FileNotFoundException: D:\szw\repository\com\sun\xml\bind\jaxb-impl\2.1\activation.jar (系统找不到指定原创 2020-12-10 09:04:56 · 669 阅读 · 0 评论 -
达梦数据库的jdbc连接配置
数据库访问是数据库应用系统中非常重要的组成部分。达梦数据库作为一个通用数据库管理系统,提供了多种数据库访问接口,包括ODBC、JDBC、API、OLEDB以及嵌入方式等。本文主要列出了在Java中常见的连接达梦数据库的方法。1. 建立基本的JDBC 连接 JDBC(Java Database Connectivity)是Java应用程序与数据库的接口规范,旨在让各数据库开发商为Java程序员提供标准的数据库应用程序编程接口(API)。JDBC定义了一个跨数据库、跨平台的通用SQL数据库A...原创 2020-12-08 13:48:18 · 9905 阅读 · 0 评论 -
java项目 报错 maven jdk.tools 缺失 解决方法
一、解决方法配置文件pom.xml <dependency> <groupId>jdk.tools</groupId> <artifactId>jdk.tools</artifactId> <version>1.7</version> <scope>system</scope>...原创 2020-12-04 20:59:40 · 960 阅读 · 0 评论 -
JavaFX 应用程序类必须扩展javafx.application.Application
创建了一个类HelloWorld代码部分下面是错误提示这是因为写完代码后没有保存(ctrl+c),并且eclipse启动前保存设置的是从不,下面介绍一下更改eclipse配置第一步点击Window→preferences出现以下窗口第二步,点击Run/Debug→Launching,将第一行Never改为Always配置好以后,eclipse在编译运行项目之前自动保存修改的文件,就可以不用一直Ctrl+C了...转载 2020-11-25 12:16:47 · 995 阅读 · 0 评论 -
java 新特性LocalDate、LocalDateTime与timestamp、Date的转换
1.LocalDate转Date LocalDate nowLocalDate = LocalDate.now(); Date date = Date.from(nowLocalDate.atStartOfDay(ZoneId.systemDefault()).toInstant()); 2.LocalDateTime转Date LocalDateTime localDateTime = LocalDateTime.now(); Date date =..原创 2020-11-25 12:17:06 · 735 阅读 · 0 评论 -
Linux的shell脚本中使用特定JDK
有时linux系统中装了很多应用,我们又不能覆盖系统中设置的版本,此时我们就需要在脚本文件中设置特定版本。export JAVA_HOME=export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarexport PATH=$JAVA_HOME/bin:$PATH注意:(1)其中PATH中JAVA_HOME必须在前,不然会先查找到其它版本,不生效;(2)export作用:使在子进程中该变量也生效。...原创 2020-11-08 17:46:35 · 1766 阅读 · 0 评论 -
springboot项目中@PathVariable中get请求中有|报400错误
http://localhost:9105/publishTheme/ST0821122|461后端直接改成这种也没用,除非前端也得做加码才可以@GetMapping("/{id}") public Object getPublishTheme(@PathVariable String id) { Map<String,Object> params= new HashMap<String,Object>(); String decode...原创 2020-11-01 15:17:09 · 1677 阅读 · 0 评论 -
Springmvc请求参数校验@Validated
Spring请求参数校验 SpringMVC支持的数据校验是JSR303的标准,通过在bean的属性上打上@NotNull、@Max等进行验证。JSR303提供有很多annotation接口,而SpringMVC对于这些验证是使用hibernate的实现,所以我们需要添加hibernate的一个validator包:依赖引用compile 'javax.validation:validation-api:2.0.0.Final'compile 'org.hibernate:hibernate原创 2020-09-13 12:43:55 · 767 阅读 · 0 评论 -
HTTP请求的GET,DELETE请求能有body吗?
昨天上班的时候后端有一个delete请求,要求我把参数放在url的query string上面。于是我说其实可以放在请求的实体中,但是后端说delete和get是没有请求实体的。这和我的记忆不太一样。那么到底delete和post请求能有实体吗?先看网上的资料先通过简单的搜索在stack overflow找到一个类似的问题, Is an entity body allowed for an HTTP DELETE request?。回答中说到并没有禁止和不推荐在get和delete方法中使用实体。意转载 2020-09-04 16:54:02 · 23830 阅读 · 2 评论 -
JAVA String操作split方法,以|作为分隔符切割问题
今天在写方法时需要以“|”作为分割符,这时发现把整个字符串切成了一个字符,一个字符的数组,这不是我们想要的结果。如:String[] a = "EI_INFORMATION_MAIN_LOADDET|HY3|3740".split("|");然后,经过查证直接写|,他当做正则来切割。所以我们做如下改造:String[] a = "EI_INFORMATION_MAIN_LOADDET|HY3|3740".split("\\|");达到目的,所以我们以后再解析串的时候为了不必要的麻烦转载 2020-08-29 22:19:42 · 1203 阅读 · 0 评论 -
记录一次jdk编译版本不一致导致springAop和bean找不到和springboot版本不一致导致的跨系统调用时ribbon time out
老项目编译jar包时使用的JDK7,主分支合并一些新功能和fix bug,需要将主分支合并到项目分支上后做更新,这时候刚刚接手不清楚原来使用JDK7还是JDK8编译,默认以为是JDK8编译文件,所以使用JDK8编译文件后,项目启动报classNot Found和请求接口时原来的调用没生效,metaSearchService没找到,metaSearchService接口没生效,后来使用JDK编译后恢复正常。项目中common-node引用springboot2.0.9,同时引用common-bean引用s原创 2020-08-21 08:31:21 · 226 阅读 · 0 评论 -
docker安装es镜像启动容器时在macpro上使用时报错
猜测应该是该镜像使用openJdk,启动时加参数-e javaops="-xms=512m -xmx=512m"原创 2020-08-14 10:38:40 · 240 阅读 · 0 评论 -
WebSocket之ServerEndPoint
WebSocket是JavaEE7新支持的:The javax.websocket.server package contains annotations, classes,and interfaces to create and configure server endpoints.Javax.websocket.server包含注解,类,接口用于创建和配置服务端点The javax.websocket package contains annotations, classes,...原创 2020-08-01 22:36:53 · 1783 阅读 · 0 评论 -
【枚举工具类】EnumUtils
EnumUtils 介绍一、官方API地址官网地址:EnumUtils.html二、EnumUtils 常用API1.导入POM文件这里使用的是:3.9 的版本,还是比较新的 <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> ...原创 2020-08-01 14:28:30 · 2874 阅读 · 0 评论 -
spring中使用xml作为配置文件时@Async和@Transactional不起作用的情形
首先介绍一下如何@Async注解,1xml头文件必须配置标记红色部分2配置任务和线程池 <!-- 任务及线程池 --> <task:annotation-driven executor="asyncExecutor" /> <task:executor id="asyncExecutor" pool-size="100-10000" queue-capacity="10"/> <!-- 注解扫描 -->原创 2020-07-30 19:06:56 · 1122 阅读 · 0 评论 -
poi4.0.0读取excel文件时报java.lang.NoClassDefFoundError: org/apache/commons/compress/archivers/zip/ZipFile
最近项目报表中为了支持插入图表将原来的poi3.14升级至4.0.0后:项目编译没有问题了,但是运行功能时报java.lang.NoClassDefFoundError: org/apache/commons/compress/archivers/zip/ZipFile原因是下载的poi4.0.0缺少这个底层的解压包无法对Excel文件进行解压处理,我的是因为poi引入的这个jar包1.8和docx4j引入的这个jar包版本低1.2confict后导致,排除掉低版本后就可以了大家都知道word和Ex原创 2020-07-23 00:09:26 · 523 阅读 · 0 评论 -
Mon Jul 13 11:48:10 CST 2020的cst格林威治日期时间如何转Date和java8中的LocalDateTime和时间戳转换
System.out.println(new Date("Mon Jul 13 11:48:10 CST 2020"));//错误写法,有时区的原因 以下是正确的做法 String date = "Mon Jul 13 11:48:10 CST 2020"; SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy",Locale.US); ...原创 2020-07-14 15:25:49 · 1925 阅读 · 0 评论 -
IntStream转list
int[] array = {1,2,3,4,5,6,7,8,9,10}; List<Integer> list = Arrays.stream(array).boxed().collect(Collectors.toList());原创 2020-07-13 22:54:24 · 2090 阅读 · 0 评论 -
关于在rc.local中放入Java程序无法开机自启的问题
今天公司服务器因为断电重启发现了一个问题——所有部署了springboot打的jar包的服务器在重启后没有自动将服务启动起来。但是rc.local文件是有可执行权限的,而且单独执行该文件中的条目可以正常启动服务,那么问题会在哪里呢?在jar启动脚本后面加上了重定向生成一个启动日志或者通过ps -ef|grep jar查进程看看:1/usr/local/bin/tomcat/bin/startup.sh>>/tmp/startup.log结果发现日志提示找不到环境变量JAVA_HOME,但是原创 2020-06-13 17:32:29 · 1901 阅读 · 0 评论 -
eclipse远程debug调试java代码
远程debug调试java代码日常环境和预发环境遇到问题时,可以用远程调试的方法本地打断点,在本地调试。生产环境由于网络隔离和系统稳定性考虑,不能进行远程代码调试。整体过程是通过修改远程服务JAVA_OPTS参数,然后本地通过Eclipse或IDEA等工具调试。下面简单介绍下理论。理论JPDA(Java Platform Debugger Architecture)是Java平台调试体系结构的缩写。由3个规范组成,分别是JVMTI(JVM Tool Interface),JDWP(Jav原创 2020-06-12 13:13:36 · 280 阅读 · 0 评论 -
Springboot项目使用java -jar 启动jar包参数详解
命令实例:nohup java -Xms500m -Xmx500m -Xmn250m -Xss256k -server -XX:+HeapDumpOnOutOfMemoryError -jar $JAR_PATH/test-0.0.1-SNAPSHOT.jar --spring.profiles.active=daily -verbose:class &说明:–spring.profiles.active=daily, 这个可以在spring-boot启动中指定系统变量,多环境(测试、预发、线原创 2020-06-07 18:12:33 · 584 阅读 · 0 评论 -
java基础中iterator迭代器
(5)迭代器 A:迭代器其实就是遍历集合的一种方式。是集合的一个副本。 B:迭代器的使用: 迭代器不能单独使用,它依赖于集合而存在。 C:使用步骤 a:通过集合对象调用iterator()方法得到迭代器对象。 b:通过迭代器对象的hasNext()方法判断是否有元素。 c:通过迭代器对象的next()获取元素。取出集合中元素后同时移动指针。 D:原理: 是以内部类形式存在的。(4)ListIterator(理解) A:可以逆向遍历,但是要先正向遍历,所以一般不用。 .原创 2020-05-30 00:20:37 · 133 阅读 · 0 评论 -
java-random随机数的seed
import java.util.Random;/*Random: 伪随机数类构造: public Random() 创建一个默认种子的随机数对象,而这个默认种子在世界上是独一无二的 public Random(long seed) 创建一个指定种子的随机数对象,相同的种子,随机数是固定的。普通方法: 1:public double nextDouble() [0,1) 2:public int nextInt(int n) [0,n) 通过该方法可以求原创 2020-05-29 23:09:15 · 693 阅读 · 0 评论 -
java-string练习对string中数据排序并输出
import java.util.Arrays;/*把字符串"-34 29 76 11 27"中的数据排序并输出。1:使用空格将大字符串切成若干小字符串,每个字符串是一个字符串类型的数字2:将字符串数组转成int数组:遍历字符串数组,依次获取每一个字符串类型的数字,转成int类型的数字,再放到int类型的数组中3:尝试使用Arrays对字符串数组进行排序4:查看数组内容*/public class Test {public static void main(Strin原创 2020-05-29 23:07:41 · 1770 阅读 · 0 评论 -
java常用正则表达式
1。^\d+$ //匹配非负整数(正整数 + 0)2。^[0-9]*[1-9][0-9]*$ //匹配正整数3。^((-\d+) ?(0+))$ //匹配非正整数(负整数 + 0)4。^-[0-9]*[1-9][0-9]*$ //匹配负整数5。^-?\d+$ //匹配整数6。^\d+(\.\d+)?$ //匹配非负浮点数(正浮点数 + 0)7。^(([0-9]+\.[0-9]*[1-9][0-9]*) ?([0-9]*[1-9][0-9]*\.[0-9]+) ?([0-9]*[1...原创 2020-05-29 23:03:20 · 161 阅读 · 0 评论 -
java面向对象总结
面向对象思想概述:基于面向过程. 就是你找一个对象来完成一件事,这个对象包含了完成事情的过程.类与对象类: 对事物的描述 – 虚对象: 该事物的实体,实例 – 实关系: 定义类,使用对象.类是对象的描述,对象是类实体.定义类格式:class 类名 {}成员变量: 事物的属性 --天生的 --通常叫属性构造方法: 初始化数据 new 类(); --通常叫构造成员方法: 事物的行为 --后天的 --通常叫方法面向对象的三大特征封装步骤:1.使用pr原创 2020-05-27 23:15:43 · 119 阅读 · 0 评论