- 博客(573)
- 资源 (1)
- 收藏
- 关注
原创 MySQL 修改某一个表字段是否大小写敏感,以及COLLATE 关键字说明
MySQL实现字段大小写敏感查询的两种方法:1)修改字段排序规则为utf8mb4_bin或utf8mb4_0900_as_cs;2)使用COLLATE关键字指定二进制比较规则。其中utf8mb4_bin通过二进制比较严格区分大小写,而utf8mb4_0900_as_cs是MySQL 8.0新增的区分大小写和重音的规则。修改后可通过简单查询验证效果,建议优先使用兼容性更好的utf8mb4_bin方案。该方法仅修改特定字段,不影响整个数据库配置。
2025-11-27 16:35:58
394
原创 Java 代码判断某个字符串或字符为中文的方法总结 [\u4e00-\u9fa5] 和 [\u4E00-\u9FFF] 的汉字范围由什么区别?
本文介绍了Java中判断中文字符/字符串的4种方法:1) 通过Unicode范围检查字符所属区块;2) 使用正则表达式匹配中文字符范围;3) 利用Character类的isIdeographic方法;4) 综合应用示例。推荐使用Unicode区块判断或综合方法,能更准确识别各种中文及扩展字符。所有方法均提供完整代码示例,包含全中文检测和中文包含检测功能。
2025-11-21 14:17:12
299
原创 请求路径匹配 AntPathMatcher 请求路径匹配的优势,不能用普通字符串或集合判断的场景
AntPathMatcher与普通字符串contains方法的区别在于前者支持通配符路径匹配(如/*/api/**),能处理路径参数和RESTful风格请求,而后者仅能精确匹配。使用contains会导致模式匹配失效,可能引发安全漏洞和功能缺失。AntPathMatcher支持*、**等通配符及路径变量,是Spring生态的标准路径匹配方案。
2025-11-21 13:50:44
222
原创 Mybatis-plus 临时关闭多租户过滤 @InterceptorIgnore(tenantLine = “on“) 详解以及多租户配置等示例
@InterceptorIgnore 是 MyBatis-Plus 提供的一个注解,用于忽略特定的拦截器处理。其中表示忽略多租户行级过滤拦截器。@Bean// 自定义配置是最直接、最明确的方式来临时忽略多租户行级过滤通过配置忽略表是更通用的方式,适用于固定不变的共享表两种方式可以根据具体业务场景灵活选择使用
2025-11-19 16:57:45
390
原创 MyBatis Plus 中 CRUD 注解的使用方法 @Insert、@Update、@Delete 和 @Select 以及注解中使用 script
本文介绍MyBatis Plus中CRUD注解使用方式,涵盖@Insert、@Update、@Delete和@Select四个核心注解。主要内容包括:1)基本增删改查操作示例;2)参数传递的多种方式(简单参数、对象、Map);3)Wrapper动态条件查询的使用方法;4)复杂多表查询实现方案。特别说明注解中如何模拟XML格式SQL,并强调${ew.customSqlSegment}对Wrapper动态查询的支持。这些注解简化了数据库操作,适用于各种业务场景。
2025-11-19 16:35:10
488
原创 URL路径编码(百分号编码或Percent-encoding)以及常见特殊字符编码对照表 总结介绍
URL路径编码是RFC 3986规定的标准机制,用于安全传输特殊字符。需对保留字符(如{}[]空格)和非ASCII字符(如中文)进行百分号编码,格式为%加两位十六进制数。实际应用包括API路径参数编码、中文URL处理和RESTful API调用等场景。在Java中,可通过URLEncoder进行编码,建议统一使用UTF-8字符集。特别注意路径分隔符/通常不需编码,不同URL组件的编码规则略有差异。编码可确保特殊字符和中文在传输时不被错误解析,是构建HTTP请求、处理用户输入等场景的必要步骤。
2025-11-17 11:17:32
614
原创 MySql 中 FIND_IN_SET函数的使用总结及案例 过滤某个字符串列表中是否包含某个字符
MySQL的FIND_IN_SET函数用于在逗号分隔的字符串中查找指定字符串的位置。语法为FIND_IN_SET(str,strlist),返回位置(从1开始),未找到返回0。使用时需注意:参数不能有空格,区分大小写,不识别含逗号的字符串。常见用途包括在WHERE条件中筛选数据、获取字符串位置等。该函数性能不如规范化表结构,大数据量时建议改用关联表或JSON函数。示例展示了基本查找、条件筛选、位置获取及边界情况处理。
2025-11-07 10:58:47
190
原创 MySQL GROUP BY 和 GROUP_CONCAT 使用方法总结,group by后将其他的字段整合到一个字段中 并通过逗号链接或指定其他链接符号
本文总结了MySQL中GROUP BY和GROUP_CONCAT的基本用法及特性。GROUP BY用于按列分组数据,SELECT中的非聚合列必须包含在GROUP BY中。GROUP_CONCAT可将分组值连接成字符串,支持DISTINCT去重、ORDER BY排序和自定义分隔符。文中提供了4个实用示例,包括分组统计、连接字符串、高级排序以及设置最大长度限制。GROUP_CONCAT默认受group_concat_max_len限制(1024字符),可以通过参数调整。
2025-11-07 10:08:38
336
原创 spring 中 OncePerRequestFilter 的作用以及使用场景,每个请求只触发一次
OncePerRequestFilter是Spring提供的过滤器基类,确保每个请求只执行一次过滤逻辑,防止重复处理。适用于跨域配置、权限验证、日志记录和请求包装等场景。通过继承该类并重写doFilterInternal()方法,可实现请求耗时统计、访问日志记录等功能。示例中的LoggingFilter演示了如何记录请求开始/结束时间,并保证日志只输出一次。该过滤器有效解决了异步请求或转发请求中可能出现的重复处理问题。
2025-10-23 09:00:46
367
原创 Java Spring MVC 中 WebMvcConfigurer 和 HandlerInterceptor之间的关系和用法案例
Spring MVC中,WebMvcConfigurer和HandlerInterceptor分别承担不同功能:WebMvcConfigurer是配置接口,用于自定义MVC功能(拦截器注册、资源处理等);HandlerInterceptor是请求拦截器接口,提供preHandle(请求前)、postHandle(处理后)和afterCompletion(完成后)三个拦截点。两者通过WebMvcConfigurer的addInterceptors方法建立关联,实现配置与业务逻辑分离。典型应用包括注册自定义拦截
2025-10-23 08:38:21
389
原创 Java Hutool工具包中 StopWatch 性能监控工具介绍和使用案例
Hutool的StopWatch是一个便捷的性能监控工具,用于测量代码执行时间。它支持多任务监控,提供任务管理、耗时统计和格式化输出等功能,通过start()/stop()方法记录任务时间,并能获取总耗时和任务详情。适用于性能调优、方法监控、代码优化等场景,帮助开发者快速定位程序瓶颈。示例展示了如何监控数据库查询、数据处理等任务,并输出详细的统计信息。
2025-10-22 09:08:23
569
原创 MySQL COALESCE函数用法和示例
SQL中的COALESCE函数用法简介:该函数返回参数列表中第一个非NULL值,语法为COALESCE(value1, value2, ...)。从左到右检查参数,返回第一个非NULL值,若全为NULL则返回NULL。常见用途包括:为NULL值设置默认值、多级默认值处理,以及确保聚合函数结果非NULL。示例展示了如何用COALESCE(column_name,0)返回0替代NULL值,以及多级优先级的应用场景。
2025-10-14 17:00:23
290
原创 Java Deque 和 ArrayDeque(栈的推荐使用) 基本介绍以及使用
ArrayDeque是Java集合框架中Deque接口的高效实现,支持双端操作、动态扩容和非线程安全。它提供了栈(LIFO)和队列(FIFO)操作的方法,如push/pop和offer/poll等,比Stack和LinkedList性能更优。典型应用场景包括实现栈/队列结构、滑动窗口问题和回文检查。相比传统Stack,ArrayDeque性能更好且不抛出异常;相比LinkedList,它在大多数操作上更快且内存使用更紧凑。使用时需注意不支持null元素且非线程安全。
2025-09-30 16:03:01
409
原创 Java Stack(栈)基本使用以及使用场景,常用方法
本文介绍了Java中的Stack类及其应用。Stack是继承自Vector的集合类,实现了后进先出(LIFO)的栈结构,提供push、pop、peek等基本操作,以及继承自Vector的size、contains等方法。文章包含使用示例和常见应用场景,如表达式求值、函数调用模拟等,并指出Stack已被标记为遗留类,推荐使用ArrayDeque替代,同时提醒注意线程安全和性能问题。
2025-09-30 15:44:32
367
1
原创 Java中 通过 Queue 队列操作避免递归操作的基本思路和简单案例
使用Queue模拟递归通过手动管理状态替代系统调用栈,避免栈溢出风险。其FIFO特性适合广度优先遍历,基本实现步骤为:初始化队列→循环处理任务→加入子任务。在血缘关系查询等场景中,该方法能安全处理复杂依赖网络,具有可控性强、内存使用优化等优势,适用于树形/图结构的遍历需求。
2025-09-30 14:08:41
1072
原创 Java基础 Queue 队列的基本使用介绍和案例
Java中的Queue接口实现了先进先出(FIFO)原则,提供插入(add/offer)、移除(remove/poll)和检查(element/peek)三类核心操作。常见实现包括LinkedList、ArrayDeque、PriorityQueue等,适用于BFS算法、生产者-消费者模型等场景。有界队列(如ArrayBlockingQueue)通过固定容量限制资源使用,满队列时不同方法表现各异。在并发环境下应选用线程安全实现,使用时需根据需求选择合适方法避免异常。队列在任务调度、缓存系统等领域有广泛应用。
2025-09-30 13:59:05
1015
原创 JWT token 简要介绍以及使用场景和案例
JWT是一种基于JSON的安全令牌标准,由Header、Payload和Signature三部分组成,用于身份认证和信息交换。其工作原理是服务器生成令牌后由客户端存储并随请求发送,服务器验证后处理请求。JWT适用于身份认证、API授权等场景,具有无状态、跨域支持等优势,但需注意密钥保管和过期设置。
2025-09-29 15:28:50
467
原创 XML中的 CDATA mybaitis xml中的 <![CDATA[ xxxx ]]>
CDATA是XML中用于处理特殊字符的重要标记,主要用于避免转义特殊符号(如<>&)和嵌入代码片段(JS/CSS/SQL)。典型应用包括:1)存储包含比较运算符的SQL查询;2)配置文件中的原始代码;3)Web服务返回的HTML/XML片段。其核心优势是简化XML编写、提高可读性并保持原始数据格式,特别适合需要保留特殊字符和代码结构的场景。
2025-09-26 13:25:12
377
原创 TransmittableThreadLocal 与 ThreadLocal 的区别
ThreadLocal与TransmittableThreadLocal(TTL)主要区别在于线程池场景下的表现。ThreadLocal会导致线程复用时的数据污染,而TTL能自动传递和隔离上下文。ThreadLocal不支持异步执行,TTL则天然支持跨线程传递。TTL解决了ThreadLocal在线程池中的数据残留问题,避免了手动清理的需求,更适合异步编程环境。两者的选择取决于是否需要跨线程传递上下文的需求。
2025-09-19 11:06:33
279
原创 Spring Cloud中配置多个 Kafka 实例的示例
在Spring Cloud中配置多个Kafka实例,可以通过YAML文件定义不同实例的配置参数,如bootstrap-servers、消费者组ID和序列化器等。然后创建配置类分别初始化每个Kafka实例的ProducerFactory、ConsumerFactory和KafkaTemplate。使用时通过@Qualifier注解注入特定的KafkaTemplate进行操作,同时为不同Kafka实例配置独立的监听器容器工厂。这种方式支持在单个应用中同时连接多个Kafka集群,每个集群可独立配置和使用。
2025-09-18 14:42:02
485
原创 Spring中 @Value注解设置默认值
Spring中@Value注解设置默认值的方法摘要:1)使用冒号语法${key:default}设置基本类型和字符串默认值;2)支持空字符串或null默认值;3)可设置数组和含特殊字符的复杂默认值;4)结合SpEL表达式实现动态默认值。需注意数据类型兼容性,空字符串不会触发默认值,建议必要配置不设默认值以暴露问题。这种方式能有效避免配置缺失导致的异常。
2025-09-12 14:53:39
560
原创 Got error produce response with correlation id Xx on topic-partition XX, retry Error: CORRUPT_MESSAG
在使用阿里云Kafka时,发送带key的消息到指定topic后出现持续CORRUPT_MESSAGE报错。排查发现是由于阿里云Kafka不支持幂等生产者(enable.idempotence)特性导致。虽然已在配置文件中设置enable.idempotence=false,但由于KafkaProperties类未包含该属性而失效。最终通过在构建生产者时手动将该属性加入properties中解决问题。对于直接使用Properties类的情况,可直接put该配置项即可解决。
2025-09-10 15:19:16
438
原创 Spring Cloud @RefreshScope 作用是什么?
摘要:@RefreshScope是Spring Cloud的核心注解,支持配置动态刷新而无需重启应用。它通过特殊作用域机制,在配置变更时重建Bean实例以加载新值,适用于@Value和@ConfigurationProperties标注的属性。需配合配置中心使用,注意其重建特性对性能的影响,常用于数据库连接等需热更新的场景。
2025-09-10 13:22:05
402
原创 Spring Bean 生命周期中的 @PostConstruct 注解生效时机
摘要:@PostConstruct是Spring框架中用于Bean初始化的JSR-250注解,在依赖注入完成后执行特定方法。它确保所有依赖资源就绪后才执行初始化逻辑,具有只执行一次、无参数无返回值等特点。该注解方法在Bean生命周期中位于实例化和依赖注入之后,Bean可用之前。使用时需注意方法签名限制和异常处理,适用于单例等作用域Bean,是实现可靠初始化的有效工具。
2025-09-01 17:57:55
463
原创 mysql中的常见的索引类型及其特点
MySQL索引类型包括B-Tree、哈希、全文和空间索引等。B-Tree适合范围查询和排序,哈希适用于等值查找但限制较多,全文索引支持文本搜索,空间索引用于地理数据。每种索引有不同适用场景,合理选择能显著提升数据库性能。
2025-08-12 20:57:28
481
原创 B树索引和B+树索引有什么区别?
B树和B+树索引是数据库常用的树形结构,主要区别在于:B树所有节点存储数据,而B+树仅叶子节点存储数据,内部节点只作索引;B+树叶子节点通过链表连接,支持高效范围查询。示例中,B树内部节点包含数据,而B+树将所有数据集中在叶子层并链式连接,使B+树在范围查询和顺序访问时性能更优,因此被MySQL等数据库广泛采用。
2025-08-12 20:49:52
551
原创 【设计模式】建造者模式
/ 电脑产品类// 私有构造函数,只能由 Builder 创建@Override'}';// 静态内部类 Builder// 必填参数// 可选参数(默认值)private String gpu = "集成显卡";// 构造函数:必填参数// 设置可选参数的方法(链式调用)// 构建最终对象。
2025-08-08 20:30:00
1129
原创 【设计模式】工厂方法模式 (虚拟构造器模式,多态工厂模式)
/ 数据库连接接口(产品)// 抽象工厂类(创建者)// 工厂方法:由子类实现,决定创建哪种连接// 其他通用逻辑(可选)
2025-08-08 15:20:24
934
原创 【设计模式】模板方法模式
/ 饮品制作模板(抽象类)// 模板方法:定义制作饮品的通用流程(不可被重写)// 煮水brew();// 冲泡// 倒入杯中// 添加调料// 公共方法(所有饮品都一样)System.out.println("✅ 正在煮水...");System.out.println("✅ 正在倒入杯中...");// 抽象方法:由子类实现// 冲泡方式不同// 添加的调料不同。
2025-08-07 21:15:00
888
原创 JVM中年轻代、老年代、永久代(或元空间)、Eden区和Survivor区概念介绍
在Java虚拟机(JVM)中,内存管理是自动化的,这主要通过垃圾回收机制实现。JVM将堆内存划分为不同的区域,以便更高效地管理和回收对象。以下是关于年轻代、老年代、永久代(或元空间)、Eden区和Survivor区等概念的详细介绍。
2025-08-02 11:46:24
728
原创 JVM中的垃圾回收暂停是什么,为什么会出现暂停,不同的垃圾回收机制暂停对比
JVM中的垃圾回收暂停(GC Pause)是执行垃圾回收时应用程序线程的暂停,主要为了保证数据一致性。不同垃圾收集器表现出不同的暂停特性:Serial GC完全串行执行导致长时间停顿;Parallel GC通过多线程缩短停顿;CMS和G1通过并发标记减少停顿,但仍需短暂STW;ZGC和Shenandoah实现了毫秒级极低停顿。优化手段包括选择合适的收集器(如低延迟的ZGC)、调整堆大小和分代比例。完全消除停顿不可行,但现代收集器已大幅降低停顿影响,需根据应用需求(吞吐量或延迟)选择合适的GC策略。
2025-08-02 11:36:59
1337
原创 MySQL中索引失效的常见场景
MySQL索引失效常见场景及解决方法:1.对索引列使用函数或计算会导致失效,应避免在条件中使用函数;2.数据类型不匹配会禁用索引,需确保查询与列类型一致;3.LIKE以通配符开头无法使用索引,建议将通配符放在末尾;4.OR条件中若有一边无索引会导致整体失效,可改用UNION ALL;5.隐式转换会破坏索引使用;6.不等于操作符可能导致失效;7.对索引列进行NULL判断可能失效;8.复合索引未包含查询列需回表查询。使用EXPLAIN分析执行计划可验证索引使用情况。
2025-08-02 11:06:48
449
原创 常见的JVM虚拟机的参数详解
JVM参数用于配置Java应用程序运行时的内存、垃圾回收等行为,主要分为标准参数(如-version)、非标准X参数(如-Xmx设置堆大小)和高级XX参数(如-XX:+UseG1GC选择垃圾收集器)。通过合理配置这些参数可以优化性能,但需注意不同JVM版本的差异。调试工具(如VisualVM)可帮助监控参数效果。
2025-07-28 19:13:55
488
原创 Java类加载机制详解
本文详细介绍了Java类加载机制,包括类加载的基本概念、时机、过程(加载、连接、初始化)及类加载器体系(启动类、扩展类、应用类和自定义类加载器)。重点解析了双亲委派模型的工作原理、优势及实现代码,同时探讨了打破该模型的特殊场景。文章还列举了类加载中的常见问题及解决方案,并提供了自定义类加载器的实践示例。最后提到了JDK模块化系统对类加载机制的影响。这些知识对Java开发中的类冲突解决、性能优化和系统设计具有重要意义。
2025-07-28 19:10:35
743
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅