- 博客(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
原创 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
原创 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
原创 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
原创 java线程池的阻塞策略
AbortPolicy:这是默认阻塞策略,当线程队列和空闲线程都无法处理新任务时,新任务提交会直接抛出异常RejectedExecutionException,该异常可以由调用者捕获。CallerRunsPolicy:这个策略会尝试调节机制,既不抛弃任务也不抛出异常,而是将某些任务回退到调用者,由调用任务的线程来执行。DiscardPolicy:这个策略会抛弃新提交的任务,不进行处理。DiscardOldestPolicy:这个策略会抛弃队列中最后一个任务,然后执行新进来的任务。自定义策略:除了上面
2023-09-12 10:42:43
1621
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
原创 优化sql中not in 不走索引问题
在 Oracle 中,使用 NOT IN 通常不会使用索引优化查询。如果要优化 NOT IN 查询,可以尝试使用其他查询形式或调整查询的结构以使用索引。
2023-04-10 19:58:34
4503
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅