自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(128)
  • 收藏
  • 关注

原创 MyBatis 缓存机制深度解析

Override// 自定义存储逻辑// 实现其他接口方法...-- 使用自定义缓存 --> < cache type = " com.example.CustomRedisCache " />-- 使用自定义缓存 --> < cache type = " com.example.CustomRedisCache " />-- 使用自定义缓存 --> < cache type = " com.example.CustomRedisCache " />

2025-06-22 17:14:42 926

原创 EXPLAIN优化 SQL示例

graph TDA[捕获问题SQL] --> B[运行EXPLAIN]B --> C{关键问题点}C -->|type=ALL| D[添加缺失索引]C -->|Using filesort| E[添加排序索引]C -->|DEPENDENT SUBQUERY| F[改写为JOIN]C -->|全表扫描| G[添加覆盖索引]C -->|高rows值| H[优化查询条件]C -->|Using temporary| I[优化GROUP BY]

2025-06-22 16:18:13 976

原创 单点登录(SSO)系统

设计一个 Java 单点登录(SSO)系统需要解决跨系统认证和会话共享问题。fill:#333;访问受限资源重定向登录(携带回调地址)提交凭证(用户名/密码)验证凭证,生成JWT重定向回调地址(带Token)验证Token有效性返回用户信息创建本地会话,授予访问访问资源重定向(携带新回调地址)检测全局会话存在直接返回新Token。

2025-06-21 18:01:44 643

原创 Java Stream详解

Stream 是 Java 8 引入的流式数据处理工具,可以像流水线一样对集合数据进行高效操作(过滤、转换、统计等)。Stream 让数据处理代码更简洁高效,尤其适合大数据量或复杂操作场景 🚀。掌握这些核心操作后,可覆盖90%日常需求!

2025-06-21 16:38:25 307

原创 Nginx反向代理解决跨域问题详解

Nginx反向代理解决跨域的核心思路是,从而规避浏览器的同源策略限制。

2025-06-21 11:32:12 997

原创 Java中停止一个正在运行的线程

/ 确保可见性@Override// 模拟工作(避免长时间阻塞)// 使用示例// 安全停止关键点使用保证跨线程可见性外部通过调用stop()方法修改状态线程在检查标志位后主动退出首选中断机制:优先使用组合资源清理:在结束前执行必要的资源释放(如关闭文件、网络连接)避免强制停止:除非必要场景,否则不用stop()destroy()守护线程:非关键任务可设置为守护线程(),JVM退出时自动终止优雅停止的核心是让线程有机会清理资源后主动结束,而非强制杀死。

2025-06-21 11:19:19 345

原创 Java 中实现对象克隆的几种方法

通过 Java 序列化机制实现真正的深拷贝,适用于复杂对象图。接口的设计缺陷(如浅拷贝陷阱、强制类型转换等)。这是 Java 原生支持的克隆方式,需要类实现。通过自定义构造函数,直接复制原对象的所有字段值。通过静态工厂方法实现克隆逻辑,集中控制克隆过程。

2025-06-21 11:07:22 418

原创 Java中的Future简介

Future是Java并发包()中的一个接口,代表一个异步计算的结果。它允许您提交任务后继续执行其他操作,并在需要时获取计算结果。Future提供的方法可以检查任务是否完成、等待任务完成并获取结果,或尝试取消任务。

2025-06-20 18:12:04 436

原创 SynchronizedMap 和 ConcurrentHashMap 的区别

在 Java 5+ 环境下,是线程安全 Map 的。

2025-06-20 18:04:15 298

原创 AtomicInteger 和 volatile Integer对比

volatile 的作用只保证可见性和有序性写操作立即刷新到主存读操作总是获取最新值AtomicInteger 的优势通过volatile 变量 + CAS 自旋实现复合操作原子性内置支持数学运算、比较交换等功能封装了线程安全的无锁算法性能对比场景// 测试代码片段i<1000000;i++) {// volatile版:1000ms+// AtomicInteger版:200ms。

2025-06-20 17:56:01 387

原创 ThreadLocal

ThreadLocal 为每个线程创建变量的独立副本,实现线程隔离,避免多线程共享冲突。场景作用多线程共享变量冲突✅ 为每个线程创建独立副本,互不干扰跨层级传递参数(如用户ID)✅ 代替方法参数,直接从当前线程获取数据工具类线程安全(如日期格式)✅ 避免每次创建新对象,提高性能简单记:ThreadLocal = 线程专属的保险箱(存数据) + 自动派发员(按线程分配)!

2025-06-20 17:38:23 239

原创 Java同步机制四大工具对比

volatile是使用最广泛的同步工具,适用于90%的简单状态控制场景在等待场景中使用频率次高,API简单直观在框架层面日益重要,成为Java并发模型的核心基础逐渐被取代,仅在某些遗留系统中保留演进趋势高层抽象(如CompletableFuture、Reactive Streams)取代基础同步原语Project Loom的虚拟线程将简化并发模型更细粒度的内存控制(如VarHandle取代volatile部分场景)基于结构化并发的协作模式(JDK 21+)简单状态 → volatile。

2025-06-19 21:46:43 981

原创 Java 公平锁与非公平锁详解

对比维度公平锁非公平锁排队机制严格遵守FIFO允许插队吞吐量较低较高响应时间可预测不确定实现难度较复杂较简单避免饥饿能不能核心结论公平锁保障绝对的请求顺序非公平锁提供更高的吞吐量Java中锁的默认行为是非公平的(符合大多数场景)在需要严格顺序的业务中才使用公平锁。

2025-06-19 19:23:17 633

原创 Java中的volatile关键字

在CPU层面,通过缓存一致性协议(如MESI)监听总线,强制更新其他核心的缓存行。是一个重要的关键字,用于修饰变量。它主要解决了多线程环境下的。问题,但不保证原子性。无法保证复合操作的原子性(如。),必须使用锁或原子类。当新值依赖于旧值时(如。

2025-06-19 19:16:48 450

原创 Java 中的 synchronized

graph TDA[需要同步共享资源吗?] --> B{竞争强度}B -->|低竞争| C[优先用 synchronized]B -->|高竞争| D{需高级功能?D -->|需条件变量/公平性| E[用 ReentrantLock]D -->|需读写分离| F[用 ReadWriteLock]C --> G[选择锁对象]G -->|普通资源| H[用实例锁]G -->|类级别资源| I[用类锁]G -->|细粒度控制| J[用专用锁对象]graph TDA[需要同步共享资源吗?

2025-06-19 19:04:33 837

原创 Java中的守护线程与非守护线程

graph TDA[需要线程吗?] --> B{任务特性}B --> |核心业务逻辑<br>必须完成的任务| C[使用非守护线程]B --> |后台服务<br>可中断的任务| D[使用守护线程]C --> E[无需特殊设置]D --> F[显式设置setDaemon(true)]E --> G[确保finally和资源清理]F --> H[避免关键资源操作<br>提供结束机制]基本原则:默认使用非守护线程:保证任务执行完整性和资源安全守护线程用于真正不重要的服务。

2025-06-19 18:42:25 884

原创 Java线程池使用示例:自定义线程池(ThreadPoolExecutor)

下面我将展示如何使用自定义线程池()来执行任务,包括提交Runnable任务、Callable任务,处理拒绝策略以及关闭线程池。

2025-06-19 18:41:01 376

原创 Java自定义线程池(ThreadPoolExecutor)

下面将展示如何使用自定义线程池()来执行任务,包括提交Runnable任务、Callable任务,处理拒绝策略以及关闭线程池。

2025-06-19 15:44:13 358

原创 java线程池

ThreadPoolExecutor自定义参数。在Java并发编程中,线程池是管理线程资源的。自定义参数,避免资源耗尽风险。以下是几种常见线程池(通过。:在复杂生产系统中,

2025-06-19 12:56:01 802

原创 Java中创建线程的几种方式

【代码】Java中创建线程的几种方式。

2025-06-19 12:47:30 350

原创 MyBatis-Plus简介

运行后自动生成 Entity、Mapper、Service、Controller 层代码。:避免过度依赖自动生成 SQL,复杂关联查询建议手写 XML 以保证可读性。

2025-06-18 10:41:15 542

原创 MyBatis简介

特性说明参数传递#{param}防止SQL注入,${param}直接拼接结果映射自动将结果集字段 → 对象属性(支持别名)动态 SQL<if><foreach><choose>实现条件判断事务控制通过 SqlSession 的 commit()/rollback() 管理连接池内置 POOLED 连接池提升性能缓存机制一级缓存(会话级)/二级缓存(Mapper 级)

2025-06-18 10:28:17 372

原创 Hibernate简介

Hibernate 是一个开源的对象关系映射(ORM)框架,用于将 Java 对象映射到关系型数据库,简化数据库操作。它避免了直接编写 SQL 的繁琐,通过面向对象的方式操作数据。

2025-06-18 10:17:27 412

原创 Eureka 和 Feign(二)

Eureka 和 Feign 是 Spring Cloud 微服务架构中。

2025-06-17 15:51:06 1014

原创 Resilience4J 使用详解

Resilience4J 是一个轻量级、易用且功能强大的容错库,替代了 Netflix Hystrix。它提供了断路器(Circuit Breaker)、重试(Retry)、限流(Rate Limiter)、隔板(Bulkhead)和缓存等多种容错模式。== Spring Cloud 2020.x或更高版本,不能再使用Hystrix,需迁移到Resilience4J ==2. 基本断路器配置3. 使用示例断路器 + 降级方法重试机制组合使用4. 高级配置多组件配置自定义线程池(B

2025-06-17 15:50:35 562

原创 Eureka 与 Feign(一)

服务注册:Provider 启动时向 Eureka 注册信息服务发现:Consumer 通过服务名发现 Provider负载均衡:Feign 自动实现多实例轮询声明式调用:定义接口即完成远程调用熔断机制:快速失败 + 服务降级注:当前 Spring Cloud 版本默认使用 LoadBalancer 替代 Ribbon,最新版 OpenFeign 已内置负载均衡能力。通过这个完整示例,可以清晰看到Eureka实现服务治理、Feign简化服务调用的协作过程,是构建微服务架构的基础设施。

2025-06-17 14:13:03 340

原创 RabbitMQ核心函数的参数意义和使用场景

持久化三位一体exchangeDeclare(..., true, ...) // 交换机持久化queueDeclare(..., true, ...) // 队列持久化basicPublish(..., props.setDeliveryMode(2), ...) // 消息持久化消费端防护措施basicConsume(..., false, ...) // 禁用autoAckbasicQos(prefetchCount) // 设置预取数量错误处理策略// 网络重连// 业务重试。

2025-06-14 21:06:41 914 1

原创 RabbitMQ的交换机和队列概念

概念现实比喻核心作用开发者注意事项交换机外卖调度中心决定消息去哪(不存消息)必须选择正确的交换机类型队列小区快递柜临时存消息要配置持久化/长度限制/消费者数量绑定外卖柜安装位置对应表建立交换机和队列映射关系路由键是消息分类的关键标签⚠️易错点提醒很多初学者直接发消息到队列(不经过交换机),相当于饭店把外卖直接塞进某个快递柜 ——可以运行但失去灵活性!正规做法是通过交换机路由,后续拓展才方便。// 创建队列(相当于安装一个快递柜)

2025-06-14 21:04:18 763

原创 RabbitMQ 知识详解(Java版)

提示:生产环境推荐使用Spring AMQP简化开发,它提供了RabbitTemplate和@RabbitListener等便捷工具。,实现了高级消息队列协议(AMQP)。它用于在分布式系统中实现应用解耦、异步通信和流量削峰。RabbitMQ 是一个开源的。

2025-06-14 20:08:38 807 2

原创 Vue 3 前端和 Spring Boot 后端生成 Docker 镜像的标准做法

fill:#333;color:#333;color:#333;fill:none;本地开发调试完成创建Dockerfile创建.dockerignore构建镜像 docker build测试运行 docker run推送镜像 docker push告知运维镜像地址+配置运维在生产环境部署通过以上步骤,你就能将 Vue 3 前端和 Spring Boot 后端打包成符合生产环境要求的 Docker 镜像。使用多阶段构建减小镜像体积使用Alpine 基础镜像优化大小配置合理的。

2025-06-12 14:39:27 873

原创 Vue3的setup中无法直接访问this问题

Vue 2 (thisVue 3 (setup) 替代方案参数this.$emitthis.$refsref()+ 同名模板引用(Vuex)useStore()组合式函数useRoute()组合式函数生命周期钩子等独立 API最佳实践:避免使用,优先使用 Composition API 提供的参数和函数式替代方案!

2025-06-12 09:00:32 483

原创 Vuex 中Mutation 和Action介绍

state: {count: 0},// 基本 mutation(无参数)},// 带参数的 mutation});actions: {// 基本 action(无参数)}, 1000);},// 带参数且返回 Promise// 提交 mutation 修改状态resolve();// 通知调用方操作完成})});

2025-06-11 15:05:01 514

原创 Spring MVC执行流程简介

通过这一流程,Spring MVC 实现了灵活的请求处理机制,开发者只需关注业务逻辑,无需处理底层通信细节。Spring MVC 是一个基于 Java 的 Web 框架,其核心执行流程围绕。(前端控制器)展开。

2025-06-09 11:00:14 595

原创 Java 反射机制详解及示例

反射(Reflection)是 Java 在运行时动态获取类信息并操作类属性和方法的能力。获取任意类的完整信息(类名、包名、父类、接口等)创建对象(即使类名在编译时未知)访问和修改字段(包括私有字段)调用方法(包括私有方法)动态处理数组。

2025-06-07 18:24:34 452

原创 Spring Boot + MyBatis 集成微信支付实现

下面我将详细介绍使用 Spring Boot + MyBatis 实现微信支付(JSAPI支付)的完整流程和代码示例。

2025-06-05 20:53:50 603

原创 Spring Boot + MyBatis 集成支付宝支付流程

【代码】Spring Boot + MyBatis 集成支付宝支付流程。

2025-06-05 20:51:55 619

原创 Spring Boot中保存前端上传的图片

根据实际需求选择本地存储或云存储方案,并注意做好文件类型校验和安全防护措施。

2025-06-02 12:22:44 1287 1

原创 Spring Boot 自动参数校验

String message() default "手机号格式错误";Class<?Class<?@Overridegraph TDA[添加依赖] --> B[DTO添加校验注解]B --> C[Controller添加@Valid]C --> D[全局异常处理器]D --> E[返回错误信息]通过以上步骤,Spring Boot 会自动完成参数校验,无需手动编写校验逻辑,大幅提升开发效率。

2025-05-31 12:04:58 982

原创 在Spring Boot中集成Redis进行缓存

通过以上步骤,即可在Spring Boot中高效集成Redis实现缓存功能,显著提升应用性能。

2025-05-31 11:12:00 733

原创 Filter、Interceptor(拦截器)、AOP(面向切面编程)的区别与联系

【代码】Filter、Interceptor(拦截器)、AOP(面向切面编程)的区别与联系。

2025-05-29 11:45:14 572

mysql-connector-java-8.0.16.jar和mysql-connector-java-8.0.19.jar

mysql-connector-java-8.0.16.jar和mysql-connector-java-8.0.19.jar

2025-03-06

javaweb文件上传:@MultipartConfig注解与Apache Commons FileUpload对比

commons-fileupload-1.4.jar与commons-io-2.6.jar

2025-02-27

空空如也

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

TA关注的人

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