Java
文章平均质量分 67
Java
Roc.Chang
努力保护头发并持续卷的 Full Stack !! - Roc
展开
-
Java 解决 ArrayList 的并发问题
`ArrayList`是`java.util`包中的一个类,它不是线程安全的。如果多个线程同时对同一个`ArrayList`进行操作,可能会导致并发问题,如**数据不一致**或`ConcurrentModificationException`异常。`CopyOnWriteArrayList`是一种并发集合,它通过在写操作时创建一个新的副本来解决并发问题。这意味着读操作不会受到写操作的影响,而且不会抛出`ConcurrentModificationException`异常。原创 2024-03-15 14:36:27 · 1264 阅读 · 0 评论 -
BPMN 2.0 相关定义概要描述
BPMN 2.0 (BPMN,业务流程模型和标记,Business Process Model And Notation) 是一种业务流程建模和执行的标准,它使用 XML 格式来描述业务流程。以下是 BPMN 2.0 XML 文件中一些主要标签的定义。原创 2024-01-16 15:39:23 · 1091 阅读 · 0 评论 -
Java 8 新特性 Stream 的使用场景(不定期更新)
方便在写代码的过程中直接使用,好记性不如好文章,直接 CV 改了直接用。提高 办(摸)公(鱼)效(时)率(间), 不然就直接问 GPT 也不是说不行。原创 2023-11-04 17:29:12 · 807 阅读 · 0 评论 -
Java 快速判断一个 IP 是否在给定的网段内
要在Java中判断一个IP地址是否在给定的网段内,可以使用子网掩码将IP地址和子网掩码进行与操作来提取网络地址,并将其与给定的子网地址进行比较。原创 2023-02-14 22:30:09 · 7549 阅读 · 1 评论 -
Error:(6, 32) java: package com.sun.jndi.toolkit.dir does not exist
项目环境:Maven、JDK11 (其他版本的 也类似), ( 下 配置界面可能会不同) 导入一个已经存在的项目(替换为 项目),被告知项目用的是 。导入成功后,点击 ,并将下面修改为 。搞定,,,运行代码(如此简单,脸上开始浮现笑容,内心美滋滋)。然后就:脸上的笑容逐渐消失,内心开始骂骂咧咧。点击报错,跳转后一看,代码里面用到了 这个类:可是 这个包在 JDK 11 中是存在的呀,为什么会找不到呢??看到这直觉告诉我,肯定又是使用 JDK 的问题。。。因为之前已经写过一篇关于...原创 2022-06-01 14:00:53 · 785 阅读 · 1 评论 -
Java 最好用的反编译神器 - IntelliJ IDEA
反编译工具的话在实际工作中还是经常使用的:比如查看一个开源框架的源码,查看线上部署的 jar 包和 war 包是否包含某些代码等等。之前一直使用的是 JD-GUI ,但是有的使用该工具无法反编译某些类,这就很尴尬了。使用 IDEA 的时候当 Debug 某部分依赖的源码时。那么如果将某个依赖的 jar包 或者是 war 包当做本地依赖处理,IDEA 是不是也能查看其源码?说干就干。1. 随便建立一个 Maven 项目,然后将本地的依赖包添加入项目中。2. 在 pom.xml 文件中引入本地需要反编译原创 2022-01-05 11:11:03 · 4950 阅读 · 0 评论 -
微信退款 No appropriate protocol (protocol is disabled or cipher suites are inappropriate)
目录1. 直接更改微信支付提供的代码(推荐)2. 查找匹配的 JDK/jre 环境3. 直接修改 jre 中 java.security 的默认限制提供给正在弄微信支付踩坑的你,赶快弄完去干其他重要的事情!!!测微信支付然后退款,出现这种问题是不是觉着很神奇,代码也没动,啥也没改为啥就出现问题了。线上也好好的,本地一测试就报出了下面的错误:[ERROR][11:42:56] WechatRefundHelper:161 No appropriate protocol (protocol is disa原创 2021-11-27 16:28:14 · 1314 阅读 · 0 评论 -
Spring Boot 使用 Dubbo 3 报错: org/apache/curator/framework/CuratorFrameworkFactory
场景:Spring Boot 集成 Dubbo 3 并使用 Zookeeper 作为注册中心集成,启动的时候直接报错:java.lang.NoClassDefFoundError: org/apache/curator/framework/CuratorFrameworkFactory at org.apache.dubbo.remoting.zookeeper.curator.CuratorZookeeperClient.<init>(CuratorZookeeperClient.java原创 2021-08-10 16:40:07 · 7086 阅读 · 0 评论 -
K8S(Docker)优雅的关闭 SpringBoot 微服务
最近在折腾 `K8S`,当删掉一个 `Pod` 之后(一个 `Pod` 上部署了一个微服务实例),`Eureka Server` 竟然没有将该服务实例标记成 `DOWN`,正常来说,当一个 `Eureka Client` 关闭的时候会发送一个请求给 `Eureka Server`,`Eureka Server` 会马上的将服务标记为 `DOWN` 状态,具体可以看本地开发日志。```javao.s.s.concurrent.ThreadPoolTaskExecutor : Shutting down原创 2021-06-17 14:30:47 · 1232 阅读 · 0 评论 -
Could not target platform: ‘Java SE 11‘ using tool chain: ‘JDK 8 (1.8)‘
本地 JDK 默认环境: JDK 1.8新项目需要环境:JDK 11、Gradle报错信息:Execution failed for task ':democloud:registry:compileJava'.> Could not target platform: 'Java SE 11' using tool chain: 'JDK 8 (1.8)'.【注】如果其他版本的 JDK 估计也类似。新项目使用 Gradle + JDK 11 开发,以前做安卓的时候 Gradle 肯定是原创 2021-05-26 11:07:44 · 6880 阅读 · 1 评论 -
在 MyBatis 中使用 <、<= 等特殊符号
目录1. 直接Java 处理(不推荐)2. 特殊符号转义3. 硬核方法:<![CDATA[ ]]>在实际的开发中,经常会遇到一些场景,比如查询小于某个时间,或者是查询小于某个年龄等。这个时候就需要在 MyBatis 的 XML 文件中使用一些 <、<= 等符号,但是如果直接使用的话文件会报错:Tag name expected,这个时候处理的话一般有以下三种方式:1. 直接Java 处理(不推荐)这种方法其实就是通过 #{param} 或者是 ${param} 直接在 Java 代码中手动原创 2021-05-17 17:27:16 · 45065 阅读 · 1 评论 -
Error:(16, 42) java: package com.sun.org.apache.regexp.internal does not exist
刚接手公司的一个老项目,用的是比较老的框架(SSM),这怎么可能会慌,毕竟大学期间就是用的 SSM,然后通过 IDEA 添加完 Tomcat,然后开始跑,结果就尴尬了。。。 直接报错:Error:(16, 42) java: package com.sun.org.apache.regexp.internal does not exist凭借敏锐的眼光发现,这肯定是 JDK 版本的问题,毕竟是 com.sun 的包。然后问了问同事 JDK 的版本,他的是 jdk1.8.0_212,这个他的目录里面竟原创 2021-04-30 16:21:36 · 8081 阅读 · 3 评论 -
Druid 集成 ShardingSphere 出现 xxMapper.xml 报错的原因与解决方案
项目环境:druid: 1.1.21 sharding-jdbc:4.1.0一般是不会报错的,之所以出现这样的原因是依赖出现了冲突,导致找不到 xxMapper.xml 文件。出现报错时引入的依赖为:<dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>原创 2021-02-19 11:14:29 · 923 阅读 · 1 评论 -
Java 从头再来(一):大话 Java 类加载过程以及类加载器的双亲委派机制
目录一:Java 的类加载过程二:Java 类加载器1. 引导类加载器(BootStrap ClassLoader)2. 扩展类加载器(Ext ClassLoader)3. 应用程序类加载器(App ClassLoader)4. 自定义类加载器(Custom ClassLoader)5. 类加载器初始化过程三:类加载器加载机制 – 双亲委派机制四:常见面试题1. 为什么要使用双亲委派机制一:Java 的类加载过程在说类加载器之前,先说一下 Java 的类加载过程,既然是做 Java 的牛逼程序员,总不能原创 2020-11-23 17:34:35 · 233 阅读 · 1 评论 -
Java 如何判断一个数字是否为 NaN
NaN:Not a Number ; 不是一个数字。它与任何值都不相等,甚至不等于它自己;任何数与 NaN 一起计算那么结果也为 NaN。Float 与 Double 两个类各有一个 isNaN() 的方法,可以帮助判断当前数字是否是 NaN。float a = Float.NaN;double b = Double.NaN * 2;System.out.println(Double.isNaN(a));System.out.println(Double.isNaN(b));System.ou原创 2020-11-14 14:53:50 · 5207 阅读 · 0 评论 -
Java 快速获取 URL 地址是 http 还是 https
比如一段百度的 URL: https://www.baidu.com/想要获取前面的 https 协议,有很多种方法:通过 String 的截取字符串方法、通过 String 的 startsWith 判断开始字符串方法,等等。接下来推荐一个更加骚操作的写法,借助于 Java 提供的 URI 类实现:String address = "https://www.baidu.com/";URL url = new URL(address);URI uri = url.toURI();System.ou原创 2020-11-14 09:27:25 · 3859 阅读 · 0 评论 -
Java 读取 Nginx 日志记录并解析 [04/Nov/2020:18:54:11 +0800] 字段为正常时间信息
Nginx 日志记录:111.30.33.149 - - [04/Nov/2020:18:54:11 +0800] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36"获取到 04/Nov/2020:18:54:11 +0800 的话比较简单,直接通过截取就可以实现原创 2020-11-09 16:42:10 · 2149 阅读 · 3 评论 -
新版 IDEA 设置启动多个Spring Boot工程实例
如果是 IDEA 2018.3 以前请参考:https://blog.csdn.net/forezp/article/details/76408139如果是 IDEA 2018.3 之后的版本,请使用下方式:1. 点击Edit Configuration2. 找到要多次启动的项目,并勾选Allow parallel run(允许并行运行).3. 通过修改application.yml文件中的server.port,然后启动即可。多个实例需要修改多个端口进行启动。...原创 2020-06-12 17:53:37 · 1563 阅读 · 0 评论 -
JDK 8 如何通过 LocalDate 计算两个日期相差的天数
JDK 8 如何通过 LocalDate 计算两个日期相差的天数1. 获取总的日期间隔2. 获取年月日单独的日期间隔3. 注意事项JDK 8 提供了新的日期类 LocalDate ,通过 LocalDate 可以轻松的对日期进行操作,在实际的开发过程中也会经常需要计算两个日期相差的天数。1. 获取总的日期间隔// 指定转换格式DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd");LocalDate startDate原创 2020-06-02 14:16:32 · 14039 阅读 · 2 评论 -
SpringBoot 修改项目包名,启动项目提示:Error: Could not find or load main class xxx.xxx.xxxApplication
近期要写一个架构相同的项目,所以为了省事就将原有项目直接改了项目名以及项目的包名直接又是一套系统,心里简直美滋滋。当一切就绪的时候,开始运行项目,然后控制台却报了一个错:Error: Could not find or load main class xxx.xxx.xxxApplication- 试过的方法: 因为项目是多模块的,重构项目后提示找不到其他模块;然后又使用Maven进行了clean,然后点击运行还是一样的错误,百思不得其解,最后在Stack Overflow上找到了解决办法:1原创 2020-05-17 16:23:08 · 7927 阅读 · 6 评论 -
优雅解决后台返回 Long 类型,前台精度丢失导致数据不一致的问题
环境:SpringBoot 2.x问题所在:JavaScript 不支持后台返回的 Long 类型,JavaScript 的 number 类型的数值范围是2的53次方减1,而雪花ID生成的数值过大,导致 JavaScript 不能正常存储导致。【注】建议雪花ID在数据库中使用 bigint 来存储,而不是使用 varchar;这样可以提高这样数据库的速度,使用索引的时候少一步字符串转换成...原创 2020-03-02 14:14:02 · 2555 阅读 · 0 评论 -
优雅解决 SpringBoot 在 JDK8 中 LocalDateTime (反)序列化问题
在做项目的时候很容易遇到这种问题:org.springframework.http.converter.HttpMessageNotReadableException:JSON parse error: Cannot deserialize value of type java.time.LocalDateTime from String \"2020-02-15 22:13:15\":...转载 2020-02-15 23:00:32 · 15529 阅读 · 8 评论 -
关于 ehcache 配置中 timeToLiveSeconds 和 timeToIdleSeconds 的区别
在使用 ehcache 作为缓存时,timeToLiveSeconds 和 timeToIdleSeconds 这两个属性容易混淆,所以在这里深入的研究并记录一下防止遗忘。【注】只有在 eternal 为 false 时,这2个属性才有效;否则超时设置将被忽略,对象从不过期。timeToLiveSeconds:当对象自从被存放到缓存中后,如果处于缓存中的时间超过了 timeToLiveSe...转载 2020-01-30 23:22:07 · 2384 阅读 · 0 评论 -
小知识 - Anonymous new Runnable() can be replaced with lambda more…
来友链呀: Roc's Blog一直在做 Java 后端开发,很少手动的去写线程了,今天在复习 ThreadPool 的时候,发现了一个提示:Anonymous new Runnable() can be replaced with lambda.匿名的创建 Runnable 可以被 Lambda 替换。那肯定要紧追 Lambda 的步伐呀。【注】在Java 1.7或更早的jv...原创 2020-01-18 09:24:05 · 6433 阅读 · 0 评论