自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

xzh_blog

哦~ 慢慢清晰

  • 博客(325)
  • 收藏
  • 关注

原创 线程池中异常处理,解决多线程异常丢失问题

线程池的提交方式有submit和executeexecute没有返回值,并且会打印异常信息或者使用try-catchsubmit源码在底层还是调用的execute方法,只不过多一层future封装,future里面的run方法try-catch了所有的异常,通过setException(ex)方法设置到了变量outcome里面, 可以通过future.get获取到outcome。

2023-11-23 10:50:56 658 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 207

原创 Spring @Value注解读取yml配置文件中的list和map

myConfig: userList: 张三,李四 userMap: '{"张三":"10","李四":"20"}'

2023-11-06 10:22:58 1013

原创 使用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 539

原创 MybatisPlus rewriteBatchedStatements=true 批量插入失效,依然是单条插入问题解决

默认情况下,MybatisPlus的批量插入saveBatch方法实际上是for循环单条插入。如果想要实现真实的批量插入,需要在spring.datasource.url配置中加。

2023-09-26 18:24:40 2862

原创 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 1224

原创 @Async 使用自定义线程池

@Async 注解的默认的线程池的核心线程数是8 ,工作队列长度是Integer.MAX_VALUE。如果直接使用默认的线程池有内存溢出的风险。

2023-07-24 10:29:37 505

原创 idea git 将代码推送到另外一个仓库

修改 Git Remotes,然后 Push 代码到远程仓库

2023-07-18 11:48:14 1276 1

原创 cron表达式 字符含义 详细解释

cron表达式是一个字符串,由6到7个字段组成,用空格分隔。其中前6个字段是必须的,最后一个是可选的。

2023-06-19 11:17:51 431

原创 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 558

原创 idea插件 Bito – GPT-4 & ChatGPT AI写代码 分析代码 生成测试用例

Bito官网 https://bito.ai/Bito AI是一款通用的人工智能辅助工具,基于最新的ChatGPT实现,开发者可以提出任何技术问题,根据自然语言提示生成代码。Bito AI可以用于编写代码、理解语法、编写测试用例、分析解释代码、注释代码、检查安全性,甚至解释高级概念。

2023-04-26 09:50:29 2188 3

原创 MySQL InnoDB 为什么使用B+树作为索引结构

使用B+树作为索引结构可以提高查询效率和覆盖度,减少回表操作,支持高效的范围查询。

2023-04-25 14:13:47 389

原创 MySQL索引合并Index Merge 一条SQL使用多个索引情况分析,以及索引合并失效情况

MySQL在5.0版本加入了索引合并优化(Index Merge),索引合并可以同时查询多个索引的范围扫描,并将其结果合并为一个。索引合并只可以合并来自单个表的索引扫描,而不支持跨多个表的扫描。合并可以生成其基础扫描的并集(unions)、交集(intersections)或交集的并集(unions-of-intersections)。

2023-04-23 14:47:16 3420

原创 swagger文件上传接口没有选择文件按钮问题解决 使用@RequestPart注解

@RequestPart注解用在multipart/form-data表单提交请求的方法上,用于修饰MultipartFile类型的参数。当请求类型为multipart/form-data时,@RequestParam只能接收String类型的name-value值。

2023-04-18 18:07:35 1711

原创 MySQL 查询表中重复数据

SELECT user_mobile FROM `t_user` GROUP BY user_mobile HAVING COUNT( user_mobile ) > 1;

2023-03-06 10:09:40 868

原创 更新 TKK 失败,请检查网络连接。谷歌翻译 translation插件不能用解决办法 亲测有效

​修改hosts文件,将谷歌翻译网址域名指向可用IP地址。在hosts文件加入两行配置:172.217.194.90 translate.google.com172.217.194.90 translate.googleapis.com​

2023-03-02 10:21:22 1281 1

原创 系统CPU飙升 三步快速定位问题

找到最耗CPU的进程top -c找到最耗CPU的线程top -Hp 查看堆栈jstack | grep '' -C100 --color

2023-02-27 15:36:37 290

原创 数据压缩方案之高性能集合 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 470

原创 MySQL查询表的所有字段名

MySQL查询表的所有字段名。SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = '数据库名' AND TABLE_NAME = '表名';

2023-02-21 11:23:40 414

原创 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 1160

原创 分布式一致性Session方案

Session一般译作会话,用户访问web应用时,服务端会给每一个用户(浏览器)创建一个Session对象。缺点:每次http请求都携带Session占外网带宽,Session存储的数据大小受Cookie限制。缺点:Session同步需要占用内网带宽,如果服务比较多性能直线下降,也无法水平扩展。方案三 服务端同步Session,使用Tomcat同步复制保存Session。缺点:服务端重启后Session丢失,服务端水平扩展需要rehash。缺点:需要修改服务端代码。

2023-02-20 13:53:42 134

原创 在桌面点击html文档跳转到指定网站

在windows桌面新建一个html文档,然后文档内容如下: location.replace("https://www.baidu.com");然后点击百度.html,就会打开浏览器并跳转到百度。

2023-02-17 11:08:43 1343

原创 update inner join set、update set where如何使用一个表中的字段更新另一个表中字段,MySQL

update inner join set 和 update set from ,如何使用一个表中的字段更新另一个表中字段,MySQL和SqlServer不一样。

2023-02-09 11:17:35 1158

原创 使用线程池时,多线程之间上下文参数传递失效解决办法

问题描述在执行业务代码时,有时候需要异步处理一些业务,在异步线程中获取当前登录的用户信息失败。因为用户信息是在过滤器或拦截器中解析出来并设置到ThreadLocal中的,子线程是无法获取到ThreadLocal中的值的。虽然可以使用InheritableThreadLocal替代ThreadLocal,但是只能在新创建的线程中使用。对于线程池也会失效,因为线程池中的线程是由线程池创建好并可重复利用,这时InheritableThreadLocal的值传递就失去意义了。解决办法自定义线程池和线程池执

2023-01-12 14:52:49 1707

原创 Thread.sleep(0) 有什么用

Thread.sleep()是native方法。一个线程在运行native方法后,返回到Java线程时,必须进行一次safepoint检查。程序只有达到safepoint才会STW,从而进行GC。Thread.sleep(0)可以让线程进入safepoint检查,从而触发GC。

2023-01-09 10:48:55 418

原创 什么是Cherry-Pick IDEA中怎么使用Cherry-Pick

Cherry-Pick可以将一个分支的某些commit,合并到另一个分支。在不需要merge整个分支的时候适合使用。

2023-01-06 11:12:06 2527

原创 Java 使用CountDownLatch实现网络同步请求,异步同时获取商品信息组装

CountDownLatch 是一个同步工具类,用来协调多个线程之间的同步,它能够使一个线程在等待另外一些线程完成各自工作之后,再继续执行。

2023-01-04 14:23:45 356

原创 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 3133

原创 Java 集合多条件多规则排序 升序 降序 空值处理

List orderShopList = list.stream().sorted(Comparator // 先按数量降序(由于是降序,nullsFirst()方法会将null值放在后面) .comparing(Shop::getCount, Comparator.nullsFirst(Integer::compareTo).reversed()) // 然后按价格升序(由于是升序,

2022-12-02 09:56:43 2278

原创 一张技术架构图

技术架构图

2022-11-24 15:18:51 322

原创 基于Spring Validation自定义校验注解

自定义一个校验注解,针对字符串参数校验,校验逻辑是字符串必须是"xzh"。String message() default "必须是xzh";Class

2022-11-23 17:19:55 1996

原创 分布式场景下接口的限流、幂等、防止重复提交

@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @interface Limiter { /** * 限制时间(秒) * * @return */ long limitTime() default 2L; /** * 限制后的返回内容 * * @return */ String

2022-11-22 16:26:33 928

原创 Java 日志中找不到自定义线程的原因,线程名显示不全

原因是日志中使用固定长度格式展示线程名,长度固定为15位字符,在[]里面。当线程名超过15位时会截取,删除最前面的字符直到线程名等于15位字符。eg:线程名为xzhThreadExecutor-0,会变为[hreadExecutor-0]当线程名不足15位时会补全,自动填充空字符直到达到15位字符。eg:线程名为xzhThread-0,会变为[ xzhThread-0]

2022-11-14 09:57:40 713

原创 Redis单线程为什么还能这么快

1.命令执行基于内存操作,一条命令在内存里操作的时间是几十纳秒。2.命令执行是单线程操作,没有线程切换开销。3.基于IO多路复用机制提升Redis的I/O利用率。4.高效的数据结构,比如:SDS的空间预分配;Hash的渐进式扩容机制;ZSet的跳跃表结构。5.合理的数据编码,比如:String存储数字采用int的编码,存储非数字采用raw编码。

2022-10-27 17:02:30 630

原创 如何解决高并发下的库存争抢问题?

原子操作单库修改,几乎无锁竞争,性能好,但性能有上限,可能数据库单点故障。拆分key可以将数据量比较大的key-value,拆分为多个key-value,分拆单次操作的压力,将操作压力平摊到多个redis实例中,降低对单个redis的IO影响。令牌队列类似于令牌限流,将对库存的竞争转换为对令牌的竞争,拿到令牌才可拿库存。自旋互斥超时锁可以对多线程进行互斥,实现同个类型的数据只有一个线程在运行。CAS乐观锁无锁竞争的原子操作,事务执行期间相关的缓存没有修改才会提交成功。Redis

2022-10-27 10:52:10 632

原创 Pulsar订阅模式类型SubscriptionType

独占模式(Exclusive)只允许有一个Consumer加入Subscription ,有其他Consumer试图订阅都会报错,如果该Consumer出现故障了就会停止消费。Pulsar默认是独占模式(Exclusive)。共享模式(Shared)允许多个Consumer加入同一个Subscription,如果Consumer连接异常,就由其他Consumer来接受消息。灾备模式(Failover)当存在多个Consumer时,按字典顺序排序,第一个Consumer被初始化为唯一接受消息的

2022-10-24 15:29:03 1070

原创 长轮询和长连接

长轮询客户端向服务端发送请求,服务器端不会直接响应,而是先将这个请求挂起,然后判断服务器端数据是否有更新。如果有更新,则响应,如果一直没有数据,则达到等待超时时间才返回。案例:消息队列、配置中心等长连接长连接即HTML5 SSE,客户端和服务端建立连接后不进行断开,后续的交互一直复用这条连接通道,连接不会主动关闭。案例:视频播放

2022-10-17 16:18:30 233

原创 Spring Boot整合Pulsar生产和消费消息 简单示例代码

@PostConstruct public void initPulsarProducer() throws PulsarClientException { // 构造Pulsar client PulsarClient client = PulsarClient.builder() .serviceUrl(url) .build(); // 创建生产者producer

2022-10-11 15:18:43 1653 1

原创 Java List Map 遍历通过条件删除元素

Java List Map 遍历通过条件删除元素

2022-09-28 18:49:40 1001

原创 Java获取HTTP请求参数 包括form表单、json格式、xml格式

Java获取HTTP请求参数 包括form表单、json格式、xml格式,并将参数转为map或json等格式

2022-08-23 11:15:21 2730

SublimeText4下载

Sublime Text – 性感的代码编辑器、程序员之必备神器!Sublime Text 是个功能强大的代码编辑器,也是HTML和散文先进的文本编辑器。

2021-04-07

MySQL5.7下载 64位 mysql-5.7.20-winx64 免安装

MySQL数据库服务是一种完全托管的数据库服务,用于部署云原生应用程序

2021-04-07

Git下载 64位 官方正式版 windows Git-2.31.1-64-bit.exe

Git是一个免费的开源分布式版本控制系统,旨在快速高效地处理从小型到大型项目的所有内容。

2021-04-07

JDK11下载 64位 官方正式版 jdk-11.0.10_windows-x64_bin.exe

感谢您下载此版本的Java™平台标准版开发套件(JDK™)。 JDK是用于使用Java编程语言构建应用程序和组件的开发环境。

2021-04-07

JDK1.8下载 64位 官方正式版 jdk-8u191-windows-x64.exe

感谢您下载此版本的Java™平台标准版开发套件(JDK™)。 JDK是用于使用Java编程语言构建应用程序和组件的开发环境。

2021-04-07

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除