![](https://img-blog.csdnimg.cn/direct/3702e40395724ca68b1bdfda5df73892.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java技术栈笔记
文章平均质量分 96
Java笔记学习
牵着猫散步的鼠鼠
A Java programmer,
github repository:https://github.com/1321928757,
Welcome to Star,
VX(lsj1321928757)
展开
-
Java 21中的虚拟线程:优势、应用及优化
虚拟线程在 Java 21 正式发布,这是一项重量级的更新。在引入虚拟线程之前,java.lang.Thread 包已经支持所谓的平台线程(Platform Thread),也就是没有虚拟线程之前,我们一直使用的线程。JVM 调度程序通过平台线程(载体线程)来管理虚拟线程,一个平台线程可以在不同的时间执行不同的虚拟线程(多个虚拟线程挂载在一个平台线程上),当虚拟线程被阻塞或等待时,平台线程可以切换到执行另一个虚拟线程。原创 2024-06-04 21:24:15 · 9336 阅读 · 0 评论 -
解决 XXL-Job 端口额外占用问题 小结
最近博主在Spring整合XXL-JOB到项目时发现了个问题,注册执行器需要额外占用端口,也就是我们每启动一个程序,除了程序本身的API端口外,还需要额外开放一个执行器端口。这样看起来没啥,但是如果放到Docker容器中,用户不显示指定执行器端口的话,默认占用9999端口,假如我想启动两个实例,那么必定会发生端口冲突,也就是我必须为每个实例指定执行器端口,假如我有10个实例,那也太麻烦了的吧,然后去xxl-job github查看,发现issue都已经1.2k个了,这个问题也老早就有人提了Issue,可原创 2024-05-13 13:49:50 · 2768 阅读 · 3 评论 -
Mybatis逆向工程笔记小结
我们在开发传统的Maven项目或者SpringBoot项目过程中,最终处理的就是对于数据的读与存,这时就免不了写对象关系映射代码,实体类、mapper、mapper.xml等代码,若存在大量的增删改查功能的话,我们开发时就会不断重复相同的操作,大大降低了工作效率。本文简单介绍了Mybatis逆向工程的两种实现方案,方案一实现复杂,但可以满足基本的增删改查的实现,博主还是更偏向于第二种哈哈,可视化操作起来比较简单,大家可以根据自己的日常开发场景,进行合理选择。原创 2024-05-06 20:27:00 · 6542 阅读 · 76 评论 -
Gradle 构建自动化工具入门
最近博主的许多朋友都陆陆续续入职了,发现他们公司有使用到Gradle作为系统的构建工具的,那既然公司需要,所以我们就要学习。故今天我们就来了解学习下Gradle这个构建工具的使用。本文简单的介绍了Gradle的安装和下载,以及如何使用Gradle创建项目。原创 2024-04-16 10:46:00 · 16697 阅读 · 140 评论 -
Redis实现延迟任务的几种方案
延迟任务(Delayed Task)是指在未来的某个时间点,执行相应的任务。也就是说,延迟任务是一种计划任务,它被安排在特定的时间后执行,而不是立即执行。Redis 本身并没有直接提供延迟任务的功能,但可以通过一些策略和手段,在 Redis 中手动实现延迟任务。原创 2024-04-15 19:27:25 · 19692 阅读 · 46 评论 -
SpringBoo利用 MDC 机制过滤出单次请求相关的日志
SLF4J MDC(Mapped Diagnostic Context)是一个用于日志记录的实用工具,它提供了线程级别的日志上下文信息管理功能。SLF4J(Simple Logging Facade for Java)本身是一个抽象层,允许我们在使用不同的日志框架(如log4j, logback等),而MDC是SLF4J的一部分,主要在logback和log4j中使用。原创 2024-04-13 16:11:34 · 15727 阅读 · 132 评论 -
Springboot 大事务问题的常用优化方案
大事务是指运行时间比较长,操作的数据比较多的事务123。例如,执行超过5秒、10秒、1分钟等。大事务的产生原因包括操作的数据比较多、大量的锁竞争、事务中有其他非数据库的耗时操作等。在实际项目开发中,我们应该尽量避免大事务的情况。原创 2024-04-11 19:54:23 · 16046 阅读 · 176 评论 -
Java中利用BitMap位图实现海量级数据去重
有许多方法可以用来去重,比如使用列表、集合等等,但这些方法通常只适用于一般情况。然而,当涉及到大量数据去重时,常见的 Java Set、List,甚至是 当涉及到大量数据去重时,常见的 Java Set、List,甚至是 Java 8 的新特性 Stream 流等方式就显得不太合适了。在处理大量数据的需求场景下,我们不得不提及 BitMap。原创 2024-04-07 10:30:42 · 15662 阅读 · 76 评论 -
深入理解Java内存模型及其作用
当问到 Java 内存模型的时候,一定要注意,Java 内存模型(Java Memory Model,JMM)它和 JVM 内存布局(JVM 运行时数据区域)是不一样的,它们是两个完全不同的概念。Java 内存模型(Java Memory Model,简称 JMM)是一种规范,它定义了 Java 虚拟机(JVM)在计算机内存(RAM)中的工作方式,即规范了 Java 虚拟机与计算机内存之间是如何协同工作的。原创 2024-04-03 10:19:06 · 15938 阅读 · 99 评论 -
Springboot解决跨域问题方案总结(包括Nginx,Gateway网关等)
跨域问题是浏览器为了保护用户的信息安全,实施了同源策略(Same-Origin Policy),即只允许页面请求同源(相同协议、域名和端口)的资源,当 JavaScript 发起的请求跨越了同源策略,即请求的目标与当前页面的域名、端口、协议不一致时,浏览器会阻止请求的发送或接收。原创 2024-03-23 10:19:44 · 163015 阅读 · 195 评论 -
Java多线程实战-CompletableFuture异步编程优化查询接口响应速度
CompletableFuture为Java提供了强大的异步编程能力,可以极大地提高应用的并发能力和响应速度。通过并行执行多个查询任务,我们可以大幅减少接口的响应时间,优化用户体验。同时,CompletableFuture的代码风格函数式、简洁、优雅,也使得代码更加易读易维护。但是,异步编程也不是万能的,它需要开发者转变思维模式,还需要权衡利弊。在实际项目中,我们可以结合其他优化手段,选择合适的方案,以达到最佳的性能效果。原创 2024-03-20 13:56:32 · 162169 阅读 · 98 评论 -
Spring Boot 实现程序的优雅退出
在服务器环境中,确保应用程序能够平滑关闭并处理完所有现有请求是一个重要的需求。Spring Boot 为我们提供了优雅退出的功能,使应用程序能够在关闭时正常处理完所有当前请求,避免请求被中断导致数据丢失或不一致等问题。本文将全面介绍如何在 Spring Boot 应用程序中实现优雅退出。原创 2024-03-18 20:21:09 · 165677 阅读 · 203 评论 -
Java多线程实战-CountDownLatch模拟压测实现
当多个线程需要协调和同步执行任务时,Java 中的 CountDownLatch(倒计时器)是一个常用的工具类。它可以帮助开发者实现线程之间的同步,确保某些线程在其他线程完成任务后再继续执行。牵着猫散步的鼠鼠。本文将介绍 CountDownLatch 的基本原理、用法以及示例代码,最后会使用CountDownLatch完成一个简单的压测实现。原创 2024-03-17 21:20:55 · 163961 阅读 · 69 评论 -
Java多线程实战-异步操作日志记录解决方案(AOP+注解+多线程)
异步日志记录是一种提升系统性能和可维护性的有效手段。牵着猫散步的鼠鼠。通过将日志记录操作异步化,不仅可以减少对业务处理流程的影响,还可以提高日志处理的灵活性和扩展性。然而,实现异步日志记录机制也伴随着一定的挑战,如日志的实时性、顺序性和丢失风险等问题。原创 2024-03-16 09:00:00 · 166478 阅读 · 162 评论 -
Spring Boot整合canal实现数据一致性解决方案解析-部署+实战
译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费。其诞生的背景是早期阿里巴巴因为杭州和美国双机房部署,存在跨机房同步的业务需求,实现方式主要是基于业务 trigger 获取增量变更。从 2010 年开始,业务逐步尝试数据库日志解析获取增量变更进行同步,由此衍生出了大量的数据库增量订阅和消费业务。数据实时备份异构数据源(elasticsearch、Hbase)与数据库数据增量同步业务缓存cache 刷新,保证缓存一致性。原创 2024-03-14 08:00:00 · 165809 阅读 · 130 评论 -
Java多线程实战-实现多线程文件下载,支持断点续传、日志记录等功能
本文将介绍如何通过Java来实现一个多线程下载器。作者:牵着猫散步的鼠鼠原创 2024-03-10 23:38:03 · 166254 阅读 · 153 评论 -
Java8 CompletableFuture异步编程-进阶篇
本篇文章我们继续学习CompletableFuture相关的进阶知识。作者:牵着猫散步的鼠鼠原创 2024-03-09 22:57:48 · 165688 阅读 · 59 评论 -
Java8 CompletableFuture异步编程-入门篇
CompletableFuture是Java8中提供的强大的异步编程类。作者:牵着猫散步的鼠鼠原创 2024-03-07 08:39:31 · 165848 阅读 · 51 评论 -
Java中常见延时队列的实现方案总结
什么是延时队列?顾名思义:首先它要具有队列的特性,再给它附加一个延迟消费队列消息的功能。作者:牵着猫散步的鼠鼠原创 2024-03-03 12:25:14 · 29354 阅读 · 48 评论 -
Java8 - LocalDateTime时间日期类使用详解
掌握 LocalDateTime 类的使用可以大大提高日期时间处理效率和质量。作者:牵着猫散步的鼠鼠原创 2024-03-01 16:29:58 · 27815 阅读 · 138 评论 -
Springboot 多级缓存设计与实现
多级缓存是提升高并发系统性能的关键策略之一。作者:鼠鼠我捏,要死了捏原创 2024-02-27 12:08:11 · 28556 阅读 · 153 评论 -
Java8 Stream API 详解:流式编程进行数据处理
Stream API 提供了一种高效且易于使用的处理数据的方式。作者:牵着猫散步的鼠鼠原创 2024-02-25 14:02:30 · 27168 阅读 · 164 评论 -
SpringBoot实现缓存预热的几种常用方案
缓存预热是指在项目启动时,预先将数据加载到缓存中的一种机制。作者,牵着猫散步的鼠鼠原创 2024-02-24 01:04:25 · 24681 阅读 · 149 评论 -
Springboot 中使用 Redisson+AOP+自定义注解 实现访问限流与黑名单拦截
通过Redission+自定义注解+AOP+反射实现了对不同标识符的限流和黑名单拦截。作者:牵着猫散步的鼠鼠原创 2024-02-21 00:29:29 · 20952 阅读 · 139 评论 -
微服务学习 | Springboot整合Dubbo+Nacos实现RPC调用
Dubbo是一个基于Java的高性能RPC (远程过程调用)框架。作者:牵着猫散步的鼠鼠原创 2024-02-18 13:23:19 · 21177 阅读 · 108 评论 -
微服务学习 | Spring Cloud 中使用 Sentinel 实现服务限流
本篇文章主要介绍了Sentinel的两种实现限流的方式。作者:鼠鼠我捏,要死了捏原创 2024-02-10 16:15:51 · 247801 阅读 · 110 评论 -
Springboot中使用redisson + 自定义注解优雅的实现消息的发布订阅
在一些小型场景下,使用mq中间件可能会为原有项目增加不少维护成本,使用redisson实现消息的收发是个不错的选择。作者:鼠鼠我捏,要死了捏原创 2024-01-18 11:25:15 · 433228 阅读 · 13 评论 -
实现注册登录时数据的加密传输(含前后端具体代码)
http/https协议提交在被抓包时请求内容是明文的, 直接传输账号密码的风险非常大,故这里我们要对数据加密处理,并生成校验码,防止数据篡改。作者:鼠鼠我捏,要死了捏原创 2024-01-17 21:04:16 · 306752 阅读 · 19 评论