- 博客(20)
- 资源 (1)
- 问答 (2)
- 收藏
- 关注
原创 VUE 请求代理地址localhost报错[HPM] Error occurred while trying to proxy request
vue报错,[HPM] Error occurred while trying to proxy request xxx from xxx to http://localhost:8080/api/ (ETIMEDOUT)问题解决
2026-02-03 14:13:29
602
原创 【源码解析系列】JAVA AQS队列源码解析第二章
之前我们讲了【源码解析系列】JAVA AQS队列源码解析第一章,相信你通过这篇文已经对AQS队列有了比较深刻的理解。上一章我们重点讲了关于AQS队列部分线程进入队列和出队列的过程,以及线程获取锁(不超时不中断)的和释放锁的流程。今天我们一起开始探究AQS队列第二章内容,也就是线程支持超时获取锁和可中断获取锁部分的源码解析。
2026-02-01 19:36:45
545
原创 【源码解析系列】JAVA AQS队列源码解析第一章
今天我们要讲的是AQS队列含义,以及AQS队列源码的解析,希望通过阅读本文可以帮助你更好的理解java锁的实现原理,更好的在实际开发中运用java显示锁,本文为AQS队列解析系列第一章(不含全部源码解读),后续会逐步更新,敬请期待!
2026-01-26 17:37:12
657
原创 【技术实战系列】@Valid注解实战
本文介绍了JavaBean Validation规范中的@Valid注解在Spring项目中的实际应用。主要内容包括:1)依赖引入方式,区分SpringBoot和非SpringBoot项目;2)常用校验注解示例,涵盖空值、长度、数值、格式、时间等校验;3)自定义参数校验的实现方法,包括字段级和类级校验;4)@Valid注解的常见使用位置及异常信息优化处理;5)@Valid与Spring提供的@Validated注解的区别对比。文章通过代码示例详细展示了各种校验场景的实现方式,为开发者提供了实用的参数验证解决
2026-01-22 16:32:35
719
原创 【看完不会我吃系列】一文读懂ReentrantLock
前面我们学习了synchronized,那么在JDK1.5之前都是通过 synchronized关键字实现并发同步机制的,而JDK1.5以后Doug Lea大师开发了current 包的实现,通过AQS+CAS代码显示实现了隐式锁 synchronized 的机制。通过阅读文本,将会让你对开发中常用的ReentrantLock有更深的理解,从而打开current 包神奇的大门。
2026-01-20 09:30:18
540
原创 【看完不会我吃系列】一文读懂工厂模式
工厂模式将对象创建与使用分离,分为简单工厂、工厂方法和抽象工厂三种。简单工厂通过统一工厂类创建对象,但违反开闭原则;工厂方法通过子类决定实例化,符合开闭原则;抽象工厂创建产品族,保证兼容性但扩展性较差。工厂模式解决了直接new对象的紧耦合问题,提高了代码复用性和扩展性,在MyBatis、Spring等框架中广泛应用。三种模式各有利弊,应根据产品类型和扩展需求选择合适方案。
2026-01-18 17:49:48
678
原创 【看完不会我吃系列】一文读懂synchronized
又到了一文读懂的系列了,之前我们初步认识了java线程锁的概念以及原理,那么在日常的工作中,我们如何使用java线程锁进行实际业务开发。这篇文章介绍了synchronized内置锁的使用,概念,以及原理简述。
2026-01-17 18:34:59
925
原创 【看完不会我吃系列】utf8mb4_general_ci和utf8mb4_bin的区别
MySQL中utf8mb4_general_ci和utf8mb4_bin两种排序规则的主要区别在于:前者不区分大小写和重音(基于Unicode权重比较),后者区分大小写和重音(直接比较二进制编码)。在查询、索引、排序和分组时表现不同,选择时应根据应用场景需求决定,需要语言友好性时选前者,需要精确匹配时选后者。
2026-01-15 11:47:47
927
原创 【看完不会我吃系列】一文读懂java线程锁
本文介绍了Java线程锁的基本概念及其解决的三大问题:原子性、可见性和有序性。原子性问题源于多线程对共享变量的非原子操作,锁通过独占访问保证临界区代码的原子执行。可见性问题由CPU缓存导致,锁利用MESI协议和内存屏障确保修改对其他线程立即可见。有序性问题由指令重排序引起,锁通过插入内存屏障防止重排序。文章还对比了乐观锁和悲观锁的特性及适用场景,乐观锁适合读多写少场景,悲观锁则适用于高冲突环境。最后指出后续将深入探讨具体锁实现和AQS源码解析。
2026-01-14 13:40:48
840
原创 【包教包会系列】springboot将依赖jar打到指定位置
Spring Boot Fat Jar是一种自包含的可执行JAR文件,它将应用代码、所有依赖和内嵌服务器打包在一起,具有部署简单、环境一致和快速启动等优势,特别适合微服务架构。但缺点是增量更新依赖JAR时较为麻烦,可能因签名校验导致失败。相比之下,普通JAR通过maven-dependency-plugin或maven-assembly-plugin插件管理依赖,更适合需要频繁增量更新的场景,虽然部署复杂度较高。两种打包方式各有适用场景,开发者可根据项目需求选择。
2026-01-13 11:54:32
641
原创 【看完不会我吃系列】一文读懂ThreadLocal
ThreadLocal通过为每个线程维护独立的ThreadLocalMap实现线程安全,其中ThreadLocal对象作为key,变量副本作为value。其核心原理是利用线程内部的ThreadLocalMap存储数据,采用弱引用包装key以避免内存泄漏。当ThreadLocal引用失效时,GC会回收弱引用的key,后续操作会自动清理value。但若ThreadLocal是全局静态变量或线程来自线程池,仍可能导致内存泄漏。解决方案包括使用remove()方法主动清理或确保ThreadLocal引用及时失效。合
2026-01-10 23:11:11
954
原创 【看完不会我吃系列】一文读懂单例模式
单例模式是一种确保类只有一个实例并提供全局访问点的设计模式。主要特点包括:私有构造方法、内部创建实例、提供静态访问方法。实现方式有:懒汉式(延迟加载但线程不安全)、饿汉式(立即加载线程安全)、双重检查锁(兼顾性能与安全)、静态内部类(利用类加载机制保证线程安全)、枚举方式(天然防反射和序列化攻击)。单例模式可减少资源消耗并提供全局访问点,但需注意防止反射和序列化破坏单例性。不同实现方式在懒加载、线程安全性和防御能力上各有特点,应根据具体场景选择合适方案。
2026-01-09 23:33:33
1112
原创 java.io.UncheckedIOException: java.nio.charset.MalformedInputException: Input length = 1 异常解决
摘要:前端传输生僻字导致服务端报错(MalformedInputException),初步判断是编码问题。Wireshark抓包时中文默认显示为点符号,需配置UTF-8才能正确显示。但前端发现即使选择UTF-8,生僻字仍无法正确传输。问题可能与生僻字的特殊编码处理有关,需进一步排查前后端编码配置是否一致。(99字)
2026-01-08 17:32:35
393
原创 【技术实战系列】mybatis拦截器ResultSetHandler实战
本文介绍了MyBatis的ResultSetHandler拦截器,主要用于处理查询结果集。该拦截器可以在结果集从数据库返回到Java对象的转换过程中进行干预,实现敏感数据脱敏等功能。文章详细说明了拦截器的执行时机、可拦截方法及核心功能,并提供了两个实战代码示例:一个通过SQL解析表名进行结果处理,另一个通过判断返回对象类型进行处理。ResultSetHandler拦截器是MyBatis四大组件拦截器之一,可用于结果集脱敏、数据转换、结果缓存等场景。
2026-01-08 12:51:20
543
原创 mybatis拦截器Executor详解
本文介绍了MyBatis中Executor拦截器的使用,相比ParameterHandler拦截器能获取更多上下文信息。文章详细说明了如何通过Executor拦截器实现对特定表(如subscriber表)的insert/update操作进行拦截处理,包括SQL类型判断、表名解析、参数处理等核心逻辑。提供了完整的代码示例,展示如何对敏感信息进行加密处理,并给出了表名解析的正则表达式实现方法。该拦截器可灵活控制拦截流程,只处理指定表和操作类型,其他情况直接放行。
2026-01-07 12:48:51
429
原创 mybatis拦截器ParameterHandler详解
摘要:本文介绍了使用MyBatis拦截器实现敏感数据加密的方案。通过ParameterHandler拦截器在执行SQL前对用户信息中的敏感字段(如用户名)进行SM2国密加密处理。详细说明了拦截器的实现方式,包括@Intercepts和@Signature注解的使用、参数处理逻辑以及加密方法实现。同时提供了在Spring和SpringBoot项目中配置拦截器的方法,并阐述了拦截器在MyBatis执行流程中的位置和作用时机。该方案能有效保障用户敏感信息在数据库存储时的安全性。
2026-01-06 20:47:23
534
原创 【包教包会系列】springboot打war包时将外部配置文件打入到war包内
本文介绍了如何使用maven-assembly-plugin插件将外部配置文件打包到war包中。首先在pom.xml中配置插件,指定执行阶段和描述文件路径。然后创建assembly描述文件(xxx.xml),定义文件打包规则:1)将classes目录内容放入WEB-INF/classes;2)将config目录下的文件(排除application.properties)放入WEB-INF/classes/config;3)将特定配置文件放入指定位置;4)处理运行时依赖,将jar包放入WEB-INF/lib并
2026-01-06 10:48:50
174
原创 sourceTree回滚提交和重置当前分支到此次提交的区别
摘要:本文介绍了使用SourceTree进行Git代码回滚和重置的几种方法。当本地提交出错时,可通过"回滚提交"撤销操作;若已推送远端,则需使用"重置当前分支到此次提交",提供软合并(保留本地改动)和强行合并(丢弃改动)两种模式。文章还分享了强制推送和更简单的替代方案:先删除远端分支再重新推送。最后提醒操作前注意备份,避免代码丢失风险。(149字)
2019-12-18 17:59:53
22919
2
原创 【看完不会我吃系列】一文读懂byte一个字节的数据大小范围为什么是-128~127
摘要:计算机通过补码机制实现负数和减法运算。基于同模原理,8位二进制将最高位作为符号位(0正1负),正数补码即本身,负数补码为对应正数取反加1。这种设计将-128到127映射到00000000~11111111,避免了±0的冗余,充分利用256种组合。补码既符合计算机的纯二进制运算逻辑,又满足人类对负数的数学认知需求,是连接硬件底层与高级编程的关键桥梁。
2019-02-25 11:39:07
20430
11
空空如也
bootstarp fileinput 插件上传即使出现问题,也会显示上传成功!
2019-10-11
jq无法获取select下拉选框默认选中的val
2018-10-26
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅