- 博客(328)
- 资源 (6)
- 收藏
- 关注
原创 Spring Cloud ReactorServiceInstanceLoadBalancer 自定义负载均衡
然后在启动类加上注解,多个微服务在数组继续添加@LoadBalancerClient。
2025-03-28 16:55:20
345
原创 idea设置全局maven配置 对新建项目生效
File -> New Projects Setup -> Settings for New Projects
2025-03-28 15:09:09
208
原创 正则表达式规则 常用正则表达式举例
基本字符(Basic)字符类(Character Class)量词(Quantifiers)定位符(Anchors)贪婪(Greedy)和懒惰(Lazy)旗标(Flags)分组和引用(Groups)前瞻(Lookahead)后顾(Lookbehind)
2024-07-15 10:03:41
1198
原创 线程池中异常处理,解决多线程异常丢失问题
线程池的提交方式有submit和executeexecute没有返回值,并且会打印异常信息或者使用try-catchsubmit源码在底层还是调用的execute方法,只不过多一层future封装,future里面的run方法try-catch了所有的异常,通过setException(ex)方法设置到了变量outcome里面, 可以通过future.get获取到outcome。
2023-11-23 10:50:56
1234
1
原创 Java 并发包 park/unpark原理
park(Object blocker) 和 unpark(Thread thread) 方法位于Java 并发包下的 java.util.concurrent.locks.LockSupport 类,本质上是对 Unsafe 的park/unpark 方法的简单封装,它是 Lock(AQS)的基石,给 Lock(AQS)提供了挂起/恢复当前线程的能力。
2023-11-16 13:51:47
374
原创 Spring @Value注解读取yml配置文件中的list和map
myConfig: userList: 张三,李四 userMap: '{"张三":"10","李四":"20"}'
2023-11-06 10:22:58
1887
原创 使用Hystrix实现请求合并,降低服务器并发压力
batchMethod,请求合并方法scope,请求合并方式,REQUEST:请求范围,GLOBAL:全局范围,默认com.netflix.hystrix.HystrixCollapser.Scope.GLOBALMAX_REQUESTS_IN_BATCH 最大请求合并数量,默认Integer.MAX_VALUETIMER_DELAY_IN_MILLISECONDS 请求合并间隔毫秒值,默认10ms注意,达到请求合并间隔毫秒值,没达到最大请求合并数量时,也会进行请求合并
2023-10-26 18:31:54
647
原创 MybatisPlus rewriteBatchedStatements=true 批量插入失效,依然是单条插入问题解决
默认情况下,MybatisPlus的批量插入saveBatch方法实际上是for循环单条插入。如果想要实现真实的批量插入,需要在spring.datasource.url配置中加。
2023-09-26 18:24:40
4673
1
原创 ClientAbortException: java.io.IOException: Connection reset by peer、Connection reset
如果客户端或服务器一端的 Socket 被关闭,另一端仍发送数据,发送的第一个数据包会引发异常:Connect reset by peer。还有一种情况,如果一端发送RST数据包中断了TCP连接,另外一端也会出现这个异常:Connection reset by peer。
2023-07-31 10:05:38
1717
原创 @Async 使用自定义线程池
@Async 注解的默认的线程池的核心线程数是8 ,工作队列长度是Integer.MAX_VALUE。如果直接使用默认的线程池有内存溢出的风险。
2023-07-24 10:29:37
728
原创 Java CAS和AQS的实现原理
CAS(Compare And Swap)是一种并发控制机制,用于解决多线程并发访问共享资源时的数据一致性问题。在Java中,CAS操作通常使用Atomic类来实现。例如,可以使用java.util.concurrent.atomic.AtomicInteger类来实现对整数类型的原子操作。Atomic类提供了一系列的原子操作方法,例如getAndAdd、getAndSet、compareAndSet等,可以用于实现CAS操作。/***/
2023-05-24 14:05:58
648
1
原创 idea插件 Bito – GPT-4 & ChatGPT AI写代码 分析代码 生成测试用例
Bito官网 https://bito.ai/Bito AI是一款通用的人工智能辅助工具,基于最新的ChatGPT实现,开发者可以提出任何技术问题,根据自然语言提示生成代码。Bito AI可以用于编写代码、理解语法、编写测试用例、分析解释代码、注释代码、检查安全性,甚至解释高级概念。
2023-04-26 09:50:29
2484
3
原创 MySQL索引合并Index Merge 一条SQL使用多个索引情况分析,以及索引合并失效情况
MySQL在5.0版本加入了索引合并优化(Index Merge),索引合并可以同时查询多个索引的范围扫描,并将其结果合并为一个。索引合并只可以合并来自单个表的索引扫描,而不支持跨多个表的扫描。合并可以生成其基础扫描的并集(unions)、交集(intersections)或交集的并集(unions-of-intersections)。
2023-04-23 14:47:16
3947
原创 swagger文件上传接口没有选择文件按钮问题解决 使用@RequestPart注解
@RequestPart注解用在multipart/form-data表单提交请求的方法上,用于修饰MultipartFile类型的参数。当请求类型为multipart/form-data时,@RequestParam只能接收String类型的name-value值。
2023-04-18 18:07:35
2238
原创 MySQL 查询表中重复数据
SELECT user_mobile FROM `t_user` GROUP BY user_mobile HAVING COUNT( user_mobile ) > 1;
2023-03-06 10:09:40
1269
原创 更新 TKK 失败,请检查网络连接。谷歌翻译 translation插件不能用解决办法 亲测有效
修改hosts文件,将谷歌翻译网址域名指向可用IP地址。在hosts文件加入两行配置:172.217.194.90 translate.google.com172.217.194.90 translate.googleapis.com
2023-03-02 10:21:22
1625
1
原创 系统CPU飙升 三步快速定位问题
找到最耗CPU的进程top -c找到最耗CPU的线程top -Hp 查看堆栈jstack | grep '' -C100 --color
2023-02-27 15:36:37
509
原创 数据压缩方案之高性能集合 IntObjectHashMap
IntObjectHashMap没有和JDK的HashMap一样,使用链表法来解决hash冲突,而是使用了线性探测策略的开放寻址法,由于使用开放寻址,在hash碰撞较为严重的场合,其查询性能比HashMap会更好,但是其扩缩容的代价会比HashMap更大,性能更糟。IntObjectHashMap的value就是真实的value,不像HashMap内部维护的Node,也会更节约内存。以及其他包下的集合,org.antlr.v4.runtime.misc.IntSet 也可以压缩数据。经测算,存入1万数据,
2023-02-22 13:43:40
685
原创 MySQL查询表的所有字段名
MySQL查询表的所有字段名。SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = '数据库名' AND TABLE_NAME = '表名';
2023-02-21 11:23:40
496
原创 Spring SpringBoot启动时 @ComponentScan 排除指定Bean初始化
Spring SpringBoot启动时 @ComponentScan 排除指定Bean初始化。@ComponentScan(excludeFilters = @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, classes = {OrderService.class, ProductService.class}))
2023-02-21 09:17:16
1458
原创 分布式一致性Session方案
Session一般译作会话,用户访问web应用时,服务端会给每一个用户(浏览器)创建一个Session对象。缺点:每次http请求都携带Session占外网带宽,Session存储的数据大小受Cookie限制。缺点:Session同步需要占用内网带宽,如果服务比较多性能直线下降,也无法水平扩展。方案三 服务端同步Session,使用Tomcat同步复制保存Session。缺点:服务端重启后Session丢失,服务端水平扩展需要rehash。缺点:需要修改服务端代码。
2023-02-20 13:53:42
193
原创 在桌面点击html文档跳转到指定网站
在windows桌面新建一个html文档,然后文档内容如下: location.replace("https://www.baidu.com");然后点击百度.html,就会打开浏览器并跳转到百度。
2023-02-17 11:08:43
1625
原创 update inner join set、update set where如何使用一个表中的字段更新另一个表中字段,MySQL
update inner join set 和 update set from ,如何使用一个表中的字段更新另一个表中字段,MySQL和SqlServer不一样。
2023-02-09 11:17:35
1376
原创 使用线程池时,多线程之间上下文参数传递失效解决办法
问题描述在执行业务代码时,有时候需要异步处理一些业务,在异步线程中获取当前登录的用户信息失败。因为用户信息是在过滤器或拦截器中解析出来并设置到ThreadLocal中的,子线程是无法获取到ThreadLocal中的值的。虽然可以使用InheritableThreadLocal替代ThreadLocal,但是只能在新创建的线程中使用。对于线程池也会失效,因为线程池中的线程是由线程池创建好并可重复利用,这时InheritableThreadLocal的值传递就失去意义了。解决办法自定义线程池和线程池执
2023-01-12 14:52:49
2158
原创 Thread.sleep(0) 有什么用
Thread.sleep()是native方法。一个线程在运行native方法后,返回到Java线程时,必须进行一次safepoint检查。程序只有达到safepoint才会STW,从而进行GC。Thread.sleep(0)可以让线程进入safepoint检查,从而触发GC。
2023-01-09 10:48:55
493
原创 什么是Cherry-Pick IDEA中怎么使用Cherry-Pick
Cherry-Pick可以将一个分支的某些commit,合并到另一个分支。在不需要merge整个分支的时候适合使用。
2023-01-06 11:12:06
3365
原创 Java 使用CountDownLatch实现网络同步请求,异步同时获取商品信息组装
CountDownLatch 是一个同步工具类,用来协调多个线程之间的同步,它能够使一个线程在等待另外一些线程完成各自工作之后,再继续执行。
2023-01-04 14:23:45
454
原创 fastjson 将字符串转Java对象 日期序列化异常 日期格式报错解决
com.alibaba.fastjson.JSONException: For input string: "2022-12" at com.alibaba.fastjson.parser.DefaultJSONParser.parseObject(DefaultJSONParser.java:693) at com.alibaba.fastjson.JSON.parseObject(JSON.java:395) at com.alibaba.fastjson.JSON.parseObject(JSO
2022-12-15 10:10:02
3568
原创 Java 集合多条件多规则排序 升序 降序 空值处理
List orderShopList = list.stream().sorted(Comparator // 先按数量降序(由于是降序,nullsFirst()方法会将null值放在后面) .comparing(Shop::getCount, Comparator.nullsFirst(Integer::compareTo).reversed()) // 然后按价格升序(由于是升序,
2022-12-02 09:56:43
2543
原创 基于Spring Validation自定义校验注解
自定义一个校验注解,针对字符串参数校验,校验逻辑是字符串必须是"xzh"。String message() default "必须是xzh";Class
2022-11-23 17:19:55
2172
原创 分布式场景下接口的限流、幂等、防止重复提交
@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @interface Limiter { /** * 限制时间(秒) * * @return */ long limitTime() default 2L; /** * 限制后的返回内容 * * @return */ String
2022-11-22 16:26:33
1106
原创 Java 日志中找不到自定义线程的原因,线程名显示不全
原因是日志中使用固定长度格式展示线程名,长度固定为15位字符,在[]里面。当线程名超过15位时会截取,删除最前面的字符直到线程名等于15位字符。eg:线程名为xzhThreadExecutor-0,会变为[hreadExecutor-0]当线程名不足15位时会补全,自动填充空字符直到达到15位字符。eg:线程名为xzhThread-0,会变为[ xzhThread-0]
2022-11-14 09:57:40
967
原创 Redis单线程为什么还能这么快
1.命令执行基于内存操作,一条命令在内存里操作的时间是几十纳秒。2.命令执行是单线程操作,没有线程切换开销。3.基于IO多路复用机制提升Redis的I/O利用率。4.高效的数据结构,比如:SDS的空间预分配;Hash的渐进式扩容机制;ZSet的跳跃表结构。5.合理的数据编码,比如:String存储数字采用int的编码,存储非数字采用raw编码。
2022-10-27 17:02:30
672
原创 如何解决高并发下的库存争抢问题?
原子操作单库修改,几乎无锁竞争,性能好,但性能有上限,可能数据库单点故障。拆分key可以将数据量比较大的key-value,拆分为多个key-value,分拆单次操作的压力,将操作压力平摊到多个redis实例中,降低对单个redis的IO影响。令牌队列类似于令牌限流,将对库存的竞争转换为对令牌的竞争,拿到令牌才可拿库存。自旋互斥超时锁可以对多线程进行互斥,实现同个类型的数据只有一个线程在运行。CAS乐观锁无锁竞争的原子操作,事务执行期间相关的缓存没有修改才会提交成功。Redis
2022-10-27 10:52:10
733
原创 Pulsar订阅模式类型SubscriptionType
独占模式(Exclusive)只允许有一个Consumer加入Subscription ,有其他Consumer试图订阅都会报错,如果该Consumer出现故障了就会停止消费。Pulsar默认是独占模式(Exclusive)。共享模式(Shared)允许多个Consumer加入同一个Subscription,如果Consumer连接异常,就由其他Consumer来接受消息。灾备模式(Failover)当存在多个Consumer时,按字典顺序排序,第一个Consumer被初始化为唯一接受消息的
2022-10-24 15:29:03
1283
原创 长轮询和长连接
长轮询客户端向服务端发送请求,服务器端不会直接响应,而是先将这个请求挂起,然后判断服务器端数据是否有更新。如果有更新,则响应,如果一直没有数据,则达到等待超时时间才返回。案例:消息队列、配置中心等长连接长连接即HTML5 SSE,客户端和服务端建立连接后不进行断开,后续的交互一直复用这条连接通道,连接不会主动关闭。案例:视频播放
2022-10-17 16:18:30
282
SublimeText4下载
2021-04-07
Git下载 64位 官方正式版 windows Git-2.31.1-64-bit.exe
2021-04-07
JDK11下载 64位 官方正式版 jdk-11.0.10_windows-x64_bin.exe
2021-04-07
JDK1.8下载 64位 官方正式版 jdk-8u191-windows-x64.exe
2021-04-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人