<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[2301_77171721的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/2301_77171721</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; 2301_77171721]]></copyright><item><title><![CDATA[Java中的异步编程]]></title><link>https://blog.youkuaiyun.com/2301_77171721/article/details/161081558</link><guid>https://blog.youkuaiyun.com/2301_77171721/article/details/161081558</guid><author>2301_77171721</author><pubDate>Thu, 14 May 2026 14:30:28 +0800</pubDate><description><![CDATA[异步（Asynchronous）指任务发起后，无需阻塞等待其完成，主线程可立即返回处理其他逻辑，结果通过回调、轮询或通知机制获取。目的是提高系统吞吐量和响应速度。]]></description><category></category></item><item><title><![CDATA[Spring Boot 自动配置核心注解]]></title><link>https://blog.youkuaiyun.com/2301_77171721/article/details/160796217</link><guid>https://blog.youkuaiyun.com/2301_77171721/article/details/160796217</guid><author>2301_77171721</author><pubDate>Tue, 05 May 2026 16:57:19 +0800</pubDate><description><![CDATA[*Spring Boot 自动配置 =]]></description><category></category></item><item><title><![CDATA[最近在刷牛客：使用Spring AOP实现性能监控时]]></title><link>https://blog.youkuaiyun.com/2301_77171721/article/details/160792716</link><guid>https://blog.youkuaiyun.com/2301_77171721/article/details/160792716</guid><author>2301_77171721</author><pubDate>Tue, 05 May 2026 13:38:43 +0800</pubDate><description><![CDATA[题目：4.使用Spring AOP实现性能监控时，下列哪种方式无法获取方法执行时间？A在@Around增强中通过ProceedingJoinPoint.proceed()调用前后计算时间差B在@AfterReturning增强中通过JoinPoint获取方法开始时间戳C使用@Before记录开始时间并存入ThreadLocal，在@After中计算耗时D通过实现MethodInterceptor接口在invoke方法中计算执行时间。]]></description><category></category></item><item><title><![CDATA[解决mysql报错：1406, Data too long for column]]></title><link>https://blog.youkuaiyun.com/2301_77171721/article/details/160710757</link><guid>https://blog.youkuaiyun.com/2301_77171721/article/details/160710757</guid><author>2301_77171721</author><pubDate>Sat, 02 May 2026 12:21:02 +0800</pubDate><description><![CDATA[LOAD DATA是一把双刃剑。它锋利无比，能帮你快速切开海量数据；但它也很笨重，没有任何容错能力。如果你指望它能像 Excel 一样智能纠错，那你一定会失望。但如果你愿意花几分钟做一次数据清洗，它绝对是 MySQL 生态中最值得信赖的批量导入工具。解决mysql报错：1406, Data too long for column（多种方案）-优快云博客。]]></description><category></category></item><item><title><![CDATA[Nginx配置的详解]]></title><link>https://blog.youkuaiyun.com/2301_77171721/article/details/160629987</link><guid>https://blog.youkuaiyun.com/2301_77171721/article/details/160629987</guid><author>2301_77171721</author><pubDate>Wed, 29 Apr 2026 16:19:20 +0800</pubDate><description><![CDATA[【代码】Nginx配置的详解。]]></description><category></category></item><item><title><![CDATA[AQS极简版]]></title><link>https://blog.youkuaiyun.com/2301_77171721/article/details/160282421</link><guid>https://blog.youkuaiyun.com/2301_77171721/article/details/160282421</guid><author>2301_77171721</author><pubDate>Sat, 18 Apr 2026 16:38:28 +0800</pubDate><description><![CDATA[AQS = state + 队列 + CASlock()→tryAcquire抢锁成功 → 直接执行抢锁失败 → 入队 →park阻塞unlock()→tryReleasestate - 1state == 0 → 完全释放 → 唤醒队列第一个节点可重入：同一个线程多次加锁 → state 累加队列是双向链表，保证公平排队。]]></description><category></category></item><item><title><![CDATA[AQS 原理极简版 + ReentrantLock 加锁 / 解锁]]></title><link>https://blog.youkuaiyun.com/2301_77171721/article/details/160282259</link><guid>https://blog.youkuaiyun.com/2301_77171721/article/details/160282259</guid><author>2301_77171721</author><pubDate>Sat, 18 Apr 2026 16:32:06 +0800</pubDate><description><![CDATA[AQS = AbstractQueuedSynchronizer（抽象队列同步器）是 JUC 锁（ReentrantLock、Semaphore、CountDownLatch 等）的底层核心骨架。用一个state 变量表示锁状态（0 = 无锁，1 = 已加锁，>1 = 重入）用一个记录当前持有锁的线程用一个CLH 变体双向队列存放抢不到锁的线程state（状态） + 队列（等待） + CAS（抢锁） = AQSAQS 是 JUC 锁的底层框架，靠 state + 队列 + CAS 实现。]]></description><category></category></item><item><title><![CDATA[JUC 的 Lock 接口 + ReentrantLock 完整用法]]></title><link>https://blog.youkuaiyun.com/2301_77171721/article/details/160281858</link><guid>https://blog.youkuaiyun.com/2301_77171721/article/details/160281858</guid><author>2301_77171721</author><pubDate>Sat, 18 Apr 2026 16:21:23 +0800</pubDate><description><![CDATA[ReentrantLock = 可重入、功能强大的锁必须 lock () + try-finally + unlock ()核心方法：lock()一直等tryLock()尝试拿定时拿可中断Condition 可以精准唤醒线程高并发、需要灵活控制 → 用 ReentrantLock。]]></description><category></category></item><item><title><![CDATA[DLC(Double-check Locking)与volatile的详解]]></title><link>https://blog.youkuaiyun.com/2301_77171721/article/details/160276923</link><guid>https://blog.youkuaiyun.com/2301_77171721/article/details/160276923</guid><author>2301_77171721</author><pubDate>Sat, 18 Apr 2026 12:16:05 +0800</pubDate><description><![CDATA[DCL 通过“两次判空 + synchronized”实现高性能懒加载单例，而volatile的作用是防止对象创建过程中的指令重排序，确保返回的对象一定是完全初始化后的实例。我按“对象创建流程 → 重排序风险 → 多线程视角 → 实际后果”​ 给你彻底拆开讲。不是原子操作，在缺少 volatile 的情况下，JVM 可能将“对象初始化”和“引用赋值”重排序，导致线程在对象尚未初始化完成时拿到非 null 引用，而 volatile 通过内存屏障禁止这种重排序，从而保证线程安全。]]></description><category></category></item><item><title><![CDATA[wait()/ notify()详解与应用笔记]]></title><link>https://blog.youkuaiyun.com/2301_77171721/article/details/160273737</link><guid>https://blog.youkuaiyun.com/2301_77171721/article/details/160273737</guid><author>2301_77171721</author><pubDate>Sat, 18 Apr 2026 11:35:01 +0800</pubDate><description><![CDATA[核心定位：wait()和 notify()是 Java 中用于线程间通信（IPC, Inter-Thread Communication）的基础机制，它们必须配合 synchronized使用，解决“条件等待”问题。]]></description><category></category></item><item><title><![CDATA[Docker的配置出现问题：docker: Get https://registry-1.docker.io/v2/: net/http: request canceled]]></title><link>https://blog.youkuaiyun.com/2301_77171721/article/details/160261369</link><guid>https://blog.youkuaiyun.com/2301_77171721/article/details/160261369</guid><author>2301_77171721</author><pubDate>Fri, 17 Apr 2026 23:43:19 +0800</pubDate><description><![CDATA[（主要看这上面的配置，遇到拉取不到hello-world,看上面一篇，如何解决，可能现在能用的镜像源也很少吧，我试了好多，就第一篇文章里的centos镜像源能用，替换拉取环境）遇到这个问题解决了很久，重装过几次，最可靠的就是这些，记下来以免下次安装忘记。]]></description><category></category></item><item><title><![CDATA[登录生成 Token + 网关解析 Token + 微服务透传 userId ]]></title><link>https://blog.youkuaiyun.com/2301_77171721/article/details/159965992</link><guid>https://blog.youkuaiyun.com/2301_77171721/article/details/159965992</guid><author>2301_77171721</author><pubDate>Wed, 08 Apr 2026 21:07:25 +0800</pubDate><description><![CDATA[✅ 登录生成Token✅ 网关解析 Token → 拿 userId✅ 网关把userId 放入请求头✅ Feign 自动透传到所有微服务✅ 任何服务直接拿用户这就是标准企业级微服务登录鉴权体系。前端带 token → 网关 GlobalFilter 解析 token → 放入 user-info 请求头 → 传给微服务 → 微服务用 preHandle 接收 user-info → Feign 自动透传。]]></description><category></category></item><item><title><![CDATA[MyBatis-Plus 从入门到高级完整总结]]></title><link>https://blog.youkuaiyun.com/2301_77171721/article/details/159959190</link><guid>https://blog.youkuaiyun.com/2301_77171721/article/details/159959190</guid><author>2301_77171721</author><pubDate>Wed, 08 Apr 2026 15:48:07 +0800</pubDate><description><![CDATA[Service分页：配置插件 + new Page () + selectPage逻辑删除：deleted 字段 + @TableLogic自动填充。]]></description><category></category></item><item><title><![CDATA[P2P 微服务项目架构完整解析]]></title><link>https://blog.youkuaiyun.com/2301_77171721/article/details/159930899</link><guid>https://blog.youkuaiyun.com/2301_77171721/article/details/159930899</guid><author>2301_77171721</author><pubDate>Tue, 07 Apr 2026 21:50:09 +0800</pubDate><description><![CDATA[你的结构非常标准、专业、可直接用于生产按业务域拆分微服务common 统一管理公共资源职责清晰、耦合度低、易于扩展父工程：统一依赖、版本管理common：公共代码 + Feign 接口定义，所有服务依赖业务服务：独立部署、独立数据库、通过 Feign 调用调用方式：Loan → Feign → User，完全解耦。]]></description><category></category></item><item><title><![CDATA[微服务架构：多模块之间通信OpenFeign]]></title><link>https://blog.youkuaiyun.com/2301_77171721/article/details/159930520</link><guid>https://blog.youkuaiyun.com/2301_77171721/article/details/159930520</guid><author>2301_77171721</author><pubDate>Tue, 07 Apr 2026 21:21:39 +0800</pubDate><description><![CDATA[Feign 可升级 Nacos。]]></description><category></category></item><item><title><![CDATA[SpringBoot里面的测试依赖]]></title><link>https://blog.youkuaiyun.com/2301_77171721/article/details/159891923</link><guid>https://blog.youkuaiyun.com/2301_77171721/article/details/159891923</guid><author>2301_77171721</author><pubDate>Mon, 06 Apr 2026 18:39:40 +0800</pubDate><description><![CDATA[【代码】SpringBoot里面的测试依赖。]]></description><category></category></item><item><title><![CDATA[Java自定义注解创建详解]]></title><link>https://blog.youkuaiyun.com/2301_77171721/article/details/159852758</link><guid>https://blog.youkuaiyun.com/2301_77171721/article/details/159852758</guid><author>2301_77171721</author><pubDate>Sun, 05 Apr 2026 11:33:05 +0800</pubDate><description><![CDATA[注解（Annotation）​ 是一种元数据，用来为代码提供额外信息，但本身不改变代码逻辑。@Override而自定义注解​ 就是开发者自己定义的注解类型，用于：编译期检查框架配置（如 Spring、MyBatis）运行时反射处理自动生成代码public @interface 注解名 {类型 元素名() default 默认值;注解本质上是一个接口， 注解的方法称为元素（Element）value()：注解的默认属性default：默认值支持多个参数├── aop/**]]></description><category></category></item><item><title><![CDATA[Jackson的使用方法详解]]></title><link>https://blog.youkuaiyun.com/2301_77171721/article/details/159834702</link><guid>https://blog.youkuaiyun.com/2301_77171721/article/details/159834702</guid><author>2301_77171721</author><pubDate>Sat, 04 Apr 2026 22:02:41 +0800</pubDate><description><![CDATA[1.先引入Maven依赖2.Java对象3.对象、Json互转。]]></description><category></category></item><item><title><![CDATA[idea中springboot中使用junit测试报错的解决方案]]></title><link>https://blog.youkuaiyun.com/2301_77171721/article/details/159833058</link><guid>https://blog.youkuaiyun.com/2301_77171721/article/details/159833058</guid><author>2301_77171721</author><pubDate>Sat, 04 Apr 2026 18:42:34 +0800</pubDate><description><![CDATA[spring-boot-starter-test默认依赖Junit5（JUnit Platform + JUnit Jupiter + JUnit Vintage）；使用springboot启动器创建的工程的pom中默认会带测试启动器spring-boot-starter-test；需要排除Junit5相关的依赖包：排除junit-jupiter-api，然后再加入Junit4的依赖；解决方案：换junit4。出现这样的错误，原因是。1）修改pom.xml。]]></description><category></category></item><item><title><![CDATA[手写java线程池（简易版）]]></title><link>https://blog.youkuaiyun.com/2301_77171721/article/details/159475437</link><guid>https://blog.youkuaiyun.com/2301_77171721/article/details/159475437</guid><author>2301_77171721</author><pubDate>Wed, 25 Mar 2026 21:33:07 +0800</pubDate><description><![CDATA[BlockingQueue：为一个任务队列，里面存放线程池还未来得急处理的任务，采用先进先出的原则。ThreadPoolImpl：是线程池类，里面有线程数，任务队列，线程集合。手写一个简易版的java线程池有助于我们对线程池的了解。ThreadPoolTest：为一个测试类。ThreadPool：线程池接口。Worker：代表正在运行的线程。]]></description><category></category></item></channel></rss>