随笔分类 - Java
摘要:VOLATILE关键字在JAVA中用于确保多线程环境下的变量可见性和一定程度的有序性,其具体实现机制基于JAVA内存模型(JAVA MEMORY MODEL, JMM): 可见性: 当一个线程修改了标记为 volatile 的共享变量时,它会强制将这个变量值从当前线程的工作内存刷新回主内存。 同时,
阅读全文
摘要:Arrays.asList返回的List是Arrays类的内部类。 平时经常使用的ArrayList是位于java.util包下的: 它也继承了AbstractList类,重写了很多方法,比如我们上面使用的contains方法,但是却没有重写add方法,所以我们在调用add方法时才会抛出java.l
阅读全文
摘要:开发环境 开发依赖 版本 openJDK 17、21 SpringBoot 3.2.1 以下是SpringBoot3.x版本依赖 坐标发生变化的常用框架 一、整合MybatisPlus SpringBoot2.x版本引入的依赖是: <mybatis.plus.version>3.4.2</mybat
阅读全文
摘要:使用openjdk17 openjdk各版本下载地址 openjdk下载地址 下载jre 下载下来压缩包解压,没有jre 进入jdk安装目录执行 bin\jlink.exe --module-path jmods --add-modules java.desktop --output jre Spr
阅读全文
摘要:父子任务共用同一线程池,系统”饥饿”死锁 当他们都被同一个线程池执行时,一定条件下会出现以下场景: 1、父任务获取到线程池线程执行,而子任务则被暂存到队列中 2、当父任务占满了线程池所有的线程,等待子任务返回结果后,结束父任务 3、此时子任务由于在队列中,一直不能等到线程来处理,导致不能从队列中释放
阅读全文
摘要:动态给注解内容参数赋值 @WebServiceClient(name = "IXxxService", targetNamespace = "http://xxx.xxx.xxx.com", wsdlLocation = "${WSDL_URL}") public class IXxxService
阅读全文
摘要:官方jdk8下载地址 jdk8下载地址 jdk8 api文档 api文档 spring中文网 spring中文网 jdk17新特性 升级jdk17 openjdk17下载地址 openjdk17下载
阅读全文
摘要:在业务中常常有这样的需求,需要遍历集合,分别处理,相互之前单独处理,互不影响。 为了充分利用服务器资源,可以使用多线程来执行。 parallelStream创建一个并行流, 使用ConcurrentHashMap使多线程情况下线程安全 CompletableFuture.allOf是所有线程全部执行
阅读全文
摘要:### 传递文件 服务端 ```java @RestController public class DemoController { @PostMapping("/upload") @ApiOperation("上传文件") public void upload(@RequestParam("fil
阅读全文
摘要:### 配置yml ```java # 异步线程配置 自定义使用参数 spring: task: execution: pool: core-size: 5 max-size: 10 queue-capacity: 20 keep-alive: 60 thread-name-prefix: defa
阅读全文
摘要:stripTrailingZeros():去除小数部分末尾的零 @Test public void TestCompare() { // JAVA中Float类型的小数超过4位(前面都是0,例如0.0001)会转成科学计数法存储 float f = 0.0001F; // 转BigDecimal的时
阅读全文
摘要:相同字符串视为相同字符,去除相同字符串 public List<String> removeSameStr() { List<String> list = new ArrayList<>(); List<String> result = new ArrayList<>(); list.add("12
阅读全文
摘要:for (int i = 0; i < 10; i++) { CompletableFuture<Void> cf1 = CompletableFuture.supplyAsync(() -> { System.out.println("A"); return null; }); Completab
阅读全文
摘要:WrapperedRequest import javax.servlet.ReadListener; import javax.servlet.ServletInputStream; import javax.servlet.http.HttpServletRequest; import java
阅读全文
摘要:1.过滤器? 过滤器的英文名称为 Filter, 是 Servlet 技术中最实用的技术。 如同它的名字一样,过滤器是处于客户端和服务器资源文件之间的一道过滤网,帮助我们过滤掉一些不符合要求的请求,通常用作 Session 校验,判断用户权限,如果不符合设定条件,则会被拦截到特殊的地址或者基于特殊的
阅读全文
摘要:redis 默认的最大的内存设置为maxmemory0,相当于基于物理机的最大值 八种策略 volatile-lru,针对设置了过期时间的key,使用lru算法进行淘汰。 allkeys-lru,针对所有key使用lru算法进行淘汰。 volatile-lfu,针对设置了过期时间的key,使用lfu
阅读全文
摘要:造成这个问题的原因 首先这两个操作不是原子性的,在多线程环境下,当线程A从数据库中读到的数据是1,在往缓存里面更新缓存之前,线程B操作了这条数据更新成为2。并发带来的原子性问题就是出现这个问题的根本原因。 解决方案 强一致性 延时双删:删除数据、更新redis的时候,等待其他线程把缓存更新好。可能出
阅读全文
摘要:Druid+Mysql默认使用的是ping的方式去判断连接是否有效。我们给druid配置的validationQuery根本就不会执行。 调试源码,发现usePingMethod变量为true 那么问题来了,如何将usePingMethod变为false呢? 解决方法: 在进程的启动参数中(jvm参
阅读全文
摘要:网关简单理解 排他网关(ExclusiveGateway):解析条件,条件都不满足->报错。都满足,走id小的那一条线路。 并行网关(ParallelGateway):不解析条件,不报错,都走 包含网关(InclusiveGateway):包含网关可以看做是排他网关和并行网关的结合体。和排他网关一样
阅读全文