自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 SaTokenException: 未能获取对应StpLogic 问题解决

摘要:Sa-Token抛出"未能获取对应StpLogic,type=user"异常时,通常由三种原因导致:1)类型标识拼写错误;2)自定义StpLogic未初始化;3)未注册到全局管理器。解决方案包括:使用@PostConstruct注解初始化并注册、通过@Component自动加载工具类,或手动调用初始化方法。关键步骤是确保StpLogic实例正确创建并通过SaManager.putStpLogic()注册。验证时需检查登录功能、权限校验及日志输出,同时注意类型常量使用和组件扫描范围。

2025-07-20 22:26:39 508

原创 AspectJ 表达式中常见符号说明

AspectJ 表达式符号与用法指南 本文总结了 AspectJ 表达式中常用的符号和切入点指示符。主要内容包括: 通配符:*用于任意字符匹配,..用于包路径或参数匹配,+用于类型继承匹配 切入点指示符:详细说明execution、within、this等12种常用指示符的用法和适用场景 组合与嵌套:介绍如何使用逻辑运算符组合条件以及命名切点的定义方法 实用示例:提供常见场景下的表达式写法 注意事项:强调性能优化、Spring AOP限制和通配符优先级问题 该指南适用于需要精确控制AOP切入点的开发者,帮助

2025-07-19 20:07:29 1087

原创 Spring Boot 自动配置导入文件(org.springframework.boot.autoconfigure.AutoConfiguration.imports)

摘要: Spring Boot 2.7+ 引入 org.springframework.boot.autoconfigure.AutoConfiguration.imports 文件,用于替代传统的 spring.factories 管理自动配置类。该文件需置于 META-INF/spring/ 目录下,每行一个全限定类名,支持条件化加载(如 @Conditional 注解)。适用于模块化开发(如自定义 Starter),能简化依赖管理并提升性能。与旧方式相比,新机制更轻量且专注自动配置,但仅兼容 Spri

2025-07-19 18:50:45 1949

原创 Maven 依赖管理

摘要: Maven依赖管理通过dependencyManagement和dependencies实现多模块项目的版本控制。dependencyManagement(父POM)集中管理依赖版本,子模块通过dependencies声明依赖时自动继承版本;单模块项目直接使用dependencies声明(需指定版本)。子模块可覆盖父POM版本。最佳实践中,多模块项目推荐父POM统一版本管理,子模块仅声明依赖,避免冲突。注意dependencyManagement不引入依赖,仅提供版本约束,实际依赖需通过depend

2025-07-19 18:43:14 608

原创 熔断和降级的区别

摘要:熔断和降级是两种不同的系统保护机制。熔断针对服务故障(如超时、异常率过高),自动断开请求以阻止雪崩效应,典型工具有Hystrix;降级则在系统高负载时,通过关闭非核心功能或简化逻辑来保障核心业务,可手动或自动触发(如Sentinel)。关键区别在于:熔断是服务级的故障隔离,降级是资源优化策略。两者常协同使用,熔断后可能触发降级逻辑(如返回缓存),而降级可独立于熔断存在。实际应用中需结合配置,以提升系统稳定性。

2025-07-18 20:00:46 957

原创 附件上传、下载、预览完整代码(Vue + Spring Boot)

本文介绍了一个基于Vue 3和Spring Boot 3的文件上传下载系统。前端采用Vue 3 + Element Plus + Axios,支持文件上传(带额外参数)、下载(强制下载/预览模式)以及图片/PDF预览功能。后端使用Spring Boot 3 + Java 17,提供文件存储和访问接口。系统功能包括:文件类型/大小校验、列表展示、下载保存、窗口预览等,通过REST API实现前后端交互,并配置了文件存储路径和大小限制。

2025-07-10 16:48:29 458

原创 ThreadPoolTaskExecutor 的使用案例

ThreadPoolTaskExecutor 的使用

2025-07-08 23:34:26 1018

原创 Java 阻塞队列:7种类型全解析

Java中的阻塞队列(BlockingQueue)是线程安全的队列结构,支持生产者-消费者模式。其核心特性包括线程安全、队列满/空时自动阻塞线程、可选超时控制和公平策略。Java提供了7种实现:ArrayBlockingQueue(有界数组队列)、LinkedBlockingQueue(链表队列)、PriorityBlockingQueue(优先级队列)、DelayQueue(延迟队列)、SynchronousQueue(无缓冲队列)、LinkedTransferQueue(高效传输队列)和LinkedBl

2025-07-08 23:16:43 1168

原创 Java 中 CPU 飙高排查方案与思路

Java CPU飙高排查指南 本文介绍了Java程序CPU飙高的排查方法:首先使用top命令定位高CPU进程,再用ps查看线程占用情况,将线程ID转为十六进制后,通过jstack分析线程堆栈,最终定位到问题代码位置(如示例中的MainTest.java:5行)。这套流程可帮助开发者快速诊断Java程序性能问题。

2025-07-06 15:52:37 534

原创 JVM调优参数设置

JVM 调优参数设置及典型配置 JVM 调优参数可在不同项目中设置: Tomcat(修改 catalina.sh/bat 的 JAVA_OPTS)或 Spring Boot(启动命令或脚本)。 常用参数包括: 堆内存(-Xms、-Xmx) GC 选择(G1、CMS) 元空间设置(-XX:MetaspaceSize) 日志与监控(`-XX:+HeapDumpOnOutO... 典型配置示例: nohup java -jar -Xms256m -Xmx512m -XX:+UseG1GC myapp.jar >

2025-07-04 21:33:15 966

原创 Java 中,强引用(Strong Reference)、软引用(Soft Reference)、弱引用(Weak Reference)和虚引用(Phantom Reference)

Java引用类型包括强引用、软引用、弱引用和虚引用四种,它们决定对象生命周期和垃圾回收行为。强引用(如普通对象)不会被回收;软引用(如缓存)在内存不足时回收;弱引用(如临时数据)每次GC时回收;虚引用仅用于跟踪回收状态。合理使用这些引用类型可优化内存管理,避免内存泄漏,如软引用适合缓存,弱引用用于WeakHashMap,虚引用用于资源清理。

2025-07-04 21:14:40 883

原创 Java日期格式化

摘要:本文介绍了Java中处理日期格式yyyyMMddHHmmss的两种方法。对于Java 8及以上版本,推荐使用线程安全的java.time包,提供了LocalDateTime格式化与解析的示例代码。Java 7及以下版本可使用SimpleDateFormat,但需注意线程安全问题。文章还对比了两种方式的差异,列出了日期格式符号说明,并指出了常见错误及解决方法。最后展示了如何利用该格式生成唯一标识符(如订单号)。建议优先使用Java 8的DateTimeFormatter以获得更好的性能和线程安全性。

2025-06-12 16:07:08 2427

原创 ThreadLocal、InheritableThreadLocal、TransmittableThreadLocal 详解与使用场景

ThreadLocal、InheritableThreadLocal 和 TransmittableThreadLocal 是 Java 中用于线程间数据隔离和传递的工具。ThreadLocal 提供线程隔离的变量存储,适用于线程内状态管理,但不支持跨线程传递。InheritableThreadLocal 是 ThreadLocal 的子类,支持子线程继承父线程的值,但无法处理线程池复用问题。TransmittableThreadLocal(TTL)是阿里巴巴开源的工具,解决了前两者在线程池和异步任务中的局

2025-05-15 14:59:27 1113

原创 java中的Optional

Java 8 引入的 Optional 类用于处理可能为 null 的值,旨在减少空指针异常并提升代码可读性。其核心用法包括创建 Optional 对象(如 of、ofNullable、empty)、访问值(如 isPresent、ifPresent、orElse)、转换与过滤值(如 map、flatMap、filter),以及链式操作。最佳实践包括用 Optional 替代 null 返回值、使用链式操作简化代码、提供默认值,同时避免滥用 Optional 作为字段或过度使用。

2025-05-13 18:32:38 1558

原创 Java Stream API 全面指南(完整版)

java Stream

2025-03-19 15:52:58 2153

原创 java反射

反射

2025-03-18 11:20:10 450

原创 OncePerRequestFilter 和 GenericFilterBean 的区别

OncePerRequestFilter 和 GenericFilterBean 的区别

2025-03-17 16:29:38 1194

原创 CommandLineRunner、ApplicationRunner 与 @PostConstruct

CommandLineRunner、ApplicationRunner 与 @PostConstruct

2025-03-17 15:58:01 748

原创 Vue-Ace-Editor - 代码编辑器

Vue-Ace-Editor 是一个基于 Ace Editor 的 Vue 组件,它允许开发者在 Vue.js 应用中集成功能强大的代码编辑器。Ace Editor 本身是一个独立的、高性能的代码编辑器,支持超过100种语言模式和50多个主题,非常适合用于需要在线代码编辑的应用场景。维度框架适配性能优化依赖全量加载braceTree-shaking + Proxy 响应式功能扩展基础补全、主题切换Teleport、Suspense、多根节点支持开发体验手动管理依赖,配置复杂。

2025-02-26 15:13:38 6243

原创 Spring Boot @Async 注解深度指南

Spring Boot @Async 注解深度指南

2025-02-24 11:01:01 1382

原创 java ThreadPoolExecutor 与 ThreadPoolTaskExecutor 的区别及ThreadPoolTaskExecutor使用

java ThreadPoolExecutor 与 ThreadPoolTaskExecutor 的区别及ThreadPoolTaskExecutor使用

2025-02-13 11:09:58 1385

原创 java多线程中的 CountDownLatch、CyclicBarrier和Thread.join()

java多线程中的 CountDownLatch、CyclicBarrier和Thread.join()

2025-02-10 09:41:40 439

原创 JSONPath的使用

JSONPath 是一种强大的工具,适用于从 JSON 文档中提取和查询数据。通过掌握其基本语法和使用方法,可以高效地处理复杂的 JSON 数据结构。在 Java 中,结合 Jayway JsonPath 库,可以轻松实现 JSON 数据的查询和操作。

2025-02-08 14:26:29 939

原创 java中 HashMap底层原理

HashMap是基于哈希表实现的键值对存储结构。通过哈希函数和链表/红黑树解决哈希冲突。扩容机制保证了高效的存储和查找性能。非线程安全,多线程环境下需使用或同步包装类。

2025-02-08 11:26:37 1017

原创 Java虚拟机(JVM)的组成

JVM├─ 类加载子系统(加载、链接、初始化)├─ 运行时数据区│ ├─ 堆(对象实例)│ ├─ 方法区/元空间(类元数据)│ ├─ 虚拟机栈(方法调用)│ ├─ 本地方法栈(Native方法)│ └─ 程序计数器(执行位置)├─ 执行引擎(解释器、JIT、GC)├─ 本地方法接口(JNI)└─ 本地方法库(操作系统接口)

2025-02-08 08:54:37 528

原创 jvm的gc垃圾回收机制

JVM 的垃圾回收机制通过分代、多算法和多种收集器的组合,实现了高效的内存管理。三色标记法作为并发标记的核心技术,显著减少了 STW 时间,提升了系统性能。调优时需结合具体场景,通过监控工具分析瓶颈,合理配置参数,以达到最佳的性能和稳定性。

2025-02-06 09:52:49 835

原创 CompletableFuture实现异步线程池的执行与结果处理、异常处理

CompletableFuture实现异步线程池的执行与结果处理、异常处理

2025-02-06 09:06:18 518

原创 java锁升级(Lock inflation)的过程

锁升级是一个动态的过程,它试图在锁的性能与安全性之间找到平衡点。通过偏向锁、轻量级锁和重量级锁的不同组合,JVM能够根据实际情况灵活调整锁的策略,从而提高多线程程序的运行效率。同时,开发者也可以通过JVM参数来微调这些行为,以更好地适配特定的应用场景。

2025-01-23 10:59:03 675

原创 Vue 2 中自定义子父组件实现双向绑定

如果你在子组件中使用并且在父组件中用,这是基于.sync修饰符的双向绑定。如果你在子组件中使用并且在父组件中用,这是基于v-model的双向绑定,不过你需要确保子组件接受的是valueprop而不是inputprop。这两种方式最终都能达到相似的效果,即让父组件中的newValue与子组件的状态保持同步。选择哪种方式取决于你的具体需求和个人偏好。如果希望代码更加直观,v-model可能更符合预期;而如果需要多个属性的双向绑定,.sync会更适合。

2025-01-20 10:49:02 756

原创 Propagation 中的属性都是什么作用?

Propagation 枚举提供了多种事务传播行为选项,每种选项都有其特定的作用。选择合适的传播行为可以确保事务管理符合业务需求。

2024-11-04 11:01:34 860 2

原创 css3中的选择器

CSS中的选择器是用来指定你想要样式化的HTML元素的规则。能够精确地控制页面上元素的外观。如pdivh1等,直接选择页面中对应类型的元素。以开头,如.example,选择具有指定类名的元素。以开头,如#uniqueID,选择具有特定ID属性的元素。每个ID在一个文档中应该是唯一的。用于选择带有特定属性或属性值的元素,如选择所有type属性为"text"的input元素。用于选择元素的特定状态,如:hover:active等。使用空格分隔,如,选择所有.container内的

2024-07-08 16:06:00 1040

原创 为什么不推荐直接使用JDK自带的默认线程池?

为什么不推荐直接使用JDK自带的默认线程池?

2024-06-05 16:38:13 694

原创 Vue2中常用的事件与修饰符

Vue.js 中的常用事件与修饰符。

2024-06-05 10:13:09 1275

原创 java线程池的阻塞策略

AbortPolicy:这是默认阻塞策略,当线程队列和空闲线程都无法处理新任务时,新任务提交会直接抛出异常RejectedExecutionException,该异常可以由调用者捕获。CallerRunsPolicy:这个策略会尝试调节机制,既不抛弃任务也不抛出异常,而是将某些任务回退到调用者,由调用任务的线程来执行。DiscardPolicy:这个策略会抛弃新提交的任务,不进行处理。DiscardOldestPolicy:这个策略会抛弃队列中最后一个任务,然后执行新进来的任务。自定义策略:除了上面

2023-09-12 10:42:43 1621 1

原创 Java中ThreadPoolExecutor的使用

Java中ThreadPoolExecutor的参数以及使用、预热

2023-09-12 10:25:55 1079 1

原创 java中自带的线程工厂

ThreadFactory 接口:这是一个基本的线程工厂接口,用于创建新的线程。通常会使用线程工厂的默认实现Executors.defaultThreadFactory()。 Executors.DefaultThreadFactory 类:这是ThreadFactory接口的默认实现。该工厂创建的线程都是普通优先级、非守护线程。 Executors.SameThreadExecutor 类:这个线程工厂创建的线程都在同一个线程中执行任务。即,所有的任务都在主线程中顺序执行,不会有

2023-09-12 10:05:40 879 1

原创 java线程池中shutdown()和shutdownNow()、submit ()和 execute()的区别的区别

java线程池中shutdown()和shutdownNow()、submit ()和 execute()的区别的区别

2023-09-11 14:49:29 1065

原创 java中Callable和Runnable接口的区别

接口都是用于定义在多线程环境中执行的任务,但在一些方面有所不同。提交任务给线程池执行,但无法获取任务的执行结果。方法中捕获并处理这个异常。对象获取任务的执行结果。提交任务,则可以通过。

2023-09-11 14:40:06 166

原创 oracle实现分页

oracle使用sql实现分页

2023-04-10 20:06:00 2670 1

原创 优化sql中not in 不走索引问题

在 Oracle 中,使用 NOT IN 通常不会使用索引优化查询。如果要优化 NOT IN 查询,可以尝试使用其他查询形式或调整查询的结构以使用索引。

2023-04-10 19:58:34 4503 1

空空如也

空空如也

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

TA关注的人

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