<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[更新学习日常，欢迎交流~]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/C0223_666</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; C0223_666]]></copyright><item><title><![CDATA[调用未start线程的join方法会发生什么？join方法的底层原理分析]]></title><link>https://blog.youkuaiyun.com/C0223_666/article/details/157215891</link><guid>https://blog.youkuaiyun.com/C0223_666/article/details/157215891</guid><author>C0223_666</author><pubDate>Wed, 21 Jan 2026 16:41:51 +0800</pubDate><description><![CDATA[本文通过实验验证了Java线程join()方法的潜在问题。当线程A尚未启动时，线程B调用A.join()方法会直接返回而不会等待，导致执行顺序与预期不符。作者通过修改测试代码，在主线程休眠2秒后启动线程A，成功复现了输出&quot;BA&quot;的异常情况。分析join()源码发现，该方法仅在目标线程处于活动状态(isAlive()返回true)时才会使当前线程等待，而新建状态的线程isAlive()返回false。因此，确保目标线程已启动后再调用join()方法才能实现预期的线程同步效果。]]></description><category></category></item><item><title><![CDATA[Java并发-创建线程的方法有哪些？]]></title><link>https://blog.youkuaiyun.com/C0223_666/article/details/156809152</link><guid>https://blog.youkuaiyun.com/C0223_666/article/details/156809152</guid><author>C0223_666</author><pubDate>Sun, 11 Jan 2026 00:28:16 +0800</pubDate><description><![CDATA[Java中创建线程主要有三种方式：1)继承Thread类并重写run方法；2)实现Runnable接口；3)实现Callable接口（可返回结果）。前两种通过Thread类启动，第三种通过FutureTask封装返回值。实现接口的方式更优，避免了单继承限制且开销更小。实际开发中推荐使用ExecutorService线程池管理线程，实现线程复用。三种方式本质相同，但接口实现方式更灵活且符合面向对象设计原则。]]></description><category></category></item><item><title><![CDATA[Java并发-为什么要有多线程，线程不安全的本质是什么？]]></title><link>https://blog.youkuaiyun.com/C0223_666/article/details/156796678</link><guid>https://blog.youkuaiyun.com/C0223_666/article/details/156796678</guid><author>C0223_666</author><pubDate>Sat, 10 Jan 2026 14:20:50 +0800</pubDate><description><![CDATA[摘要： 多线程的核心目的是提升CPU利用率和程序响应速度，解决单线程下资源闲置和阻塞问题。线程不安全指多线程并发访问共享数据时，因原子性、可见性和有序性问题导致结果异常。本质原因是： 原子性破坏：非原子操作被线程切换打断； 可见性问题：CPU缓存导致修改未及时同步； 有序性破坏：指令重排序在多线程下引发逻辑错误。例如自增操作因非原子性导致结果偏差，双重检查锁因重排序返回未初始化对象。这些特性在多线程并发时共同构成线程不安全的根源。]]></description><category></category></item><item><title><![CDATA[苍穹外卖新增菜品功能开发]]></title><link>https://blog.youkuaiyun.com/C0223_666/article/details/149803263</link><guid>https://blog.youkuaiyun.com/C0223_666/article/details/149803263</guid><author>C0223_666</author><pubDate>Thu, 31 Jul 2025 12:44:25 +0800</pubDate><description><![CDATA[本文介绍了新增菜品功能的开发过程，主要包括三个接口：分类查询、文件上传和菜品新增。开发中配置了阿里云OSS服务用于文件上传，实现了菜品信息和口味的批量保存功能。通过Controller、Service和Mapper三层架构完成代码编写，最终测试验证功能正常，数据完整保存。文章详细展示了配置文件、工具类创建、接口实现及数据库操作等关键代码片段。]]></description><category></category></item><item><title><![CDATA[公共字段自动填充]]></title><link>https://blog.youkuaiyun.com/C0223_666/article/details/149749514</link><guid>https://blog.youkuaiyun.com/C0223_666/article/details/149749514</guid><author>C0223_666</author><pubDate>Tue, 29 Jul 2025 15:59:16 +0800</pubDate><description><![CDATA[本文介绍了基于AOP和反射技术实现公共字段自动填充的开发方案。通过在Mapper层方法上添加自定义注解@AutoFill，结合切面编程对INSERT和UPDATE操作进行拦截，利用反射自动填充创建人、创建时间、更新人和更新时间等公共字段。该方案避免了在业务层重复编写字段赋值代码，提高了开发效率和代码可维护性。测试结果显示，插入和更新操作均能成功自动填充公共字段，验证了方案的可行性。该技术适用于需要统一管理公共字段的场景，可有效减少代码冗余。]]></description><category></category></item><item><title><![CDATA[苍穹外卖编辑员工功能开发]]></title><link>https://blog.youkuaiyun.com/C0223_666/article/details/149727352</link><guid>https://blog.youkuaiyun.com/C0223_666/article/details/149727352</guid><author>C0223_666</author><pubDate>Mon, 28 Jul 2025 22:45:20 +0800</pubDate><description><![CDATA[本文介绍了员工编辑功能的开发过程，主要包括：1）需求分析，实现员工查询和编辑功能；2）代码开发，包括Controller层接口定义、Service层业务逻辑实现及Mapper层数据库操作；3）功能测试，验证前后端联调效果；4）代码提交流程。重点展示了使用MyBatis进行动态SQL更新、属性拷贝及驼峰命名注意事项等关键技术实现。通过完整的开发流程，实现了员工数据的查询展示与编辑更新功能。]]></description><category></category></item><item><title><![CDATA[苍穹外卖启用禁用员工账号]]></title><link>https://blog.youkuaiyun.com/C0223_666/article/details/149699018</link><guid>https://blog.youkuaiyun.com/C0223_666/article/details/149699018</guid><author>C0223_666</author><pubDate>Mon, 28 Jul 2025 00:44:54 +0800</pubDate><description><![CDATA[本文介绍了员工账号启用/禁用功能的开发过程。通过POST请求接收状态参数和员工ID，在Controller层处理请求，Service层构建员工对象，Mapper层实现动态SQL更新功能。测试环节使用Swagger和前后端联调验证功能完整性，最后通过Git提交代码。该功能实现了员工账号状态的灵活切换，采用动态SQL确保数据更新的安全性。]]></description><category></category></item><item><title><![CDATA[苍穹外卖实现员工分页查询]]></title><link>https://blog.youkuaiyun.com/C0223_666/article/details/149698266</link><guid>https://blog.youkuaiyun.com/C0223_666/article/details/149698266</guid><author>C0223_666</author><pubDate>Sun, 27 Jul 2025 23:57:08 +0800</pubDate><description><![CDATA[本文介绍了员工分页查询功能的开发过程。首先进行需求分析，设计了DTO、Controller、Service和Mapper层，使用PageHelper实现分页查询，并通过动态SQL处理条件查询。在功能测试阶段发现两个问题：时间参数传递格式和返回时间渲染格式。针对时间格式问题提供了两种解决方案：一是在实体类字段添加@JsonFormat注解，二是在配置类中扩展消息转换器。最终实现了包含条件查询、分页显示和规范化时间格式的功能，并通过Swagger和前后端联调验证了功能完整性。]]></description><category></category></item><item><title><![CDATA[Maven个人笔记整理]]></title><link>https://blog.youkuaiyun.com/C0223_666/article/details/149159235</link><guid>https://blog.youkuaiyun.com/C0223_666/article/details/149159235</guid><author>C0223_666</author><pubDate>Sun, 06 Jul 2025 22:02:41 +0800</pubDate><description><![CDATA[Apache Maven是一个Java项目管理和构建工具，通过POM（项目对象模型）管理项目依赖、构建和配置。主要功能包括依赖管理（通过pom.xml导入jar包）、统一项目结构（跨IDE兼容）和标准化构建流程（支持多系统）。Maven使用坐标（groupId、artifactId、version）唯一标识资源，并通过本地/远程/中央仓库管理依赖。其生命周期分为clean、default（核心构建）和site（文档生成）三套，每套包含有序阶段。开发中可通过配置依赖范围（scope）和排除传递依赖来优化项目结]]></description><category></category></item><item><title><![CDATA[HashMap TreeMap LinkedHashMap三者的使用场景]]></title><link>https://blog.youkuaiyun.com/C0223_666/article/details/148621404</link><guid>https://blog.youkuaiyun.com/C0223_666/article/details/148621404</guid><author>C0223_666</author><pubDate>Fri, 13 Jun 2025 00:26:55 +0800</pubDate><description><![CDATA[在大多数情况下，HashMap是默认选择，因为它提供了最佳的性能和灵活性。只有在需要特定的排序或顺序保持功能时，才考虑使用TreeMap或LinkedHashMap。Java中的这三种Map实现虽然都用于存储键值对，但由于底层数据结构和特性不同，适用于不同的场景。]]></description><category></category></item><item><title><![CDATA[Stream流知识总结]]></title><link>https://blog.youkuaiyun.com/C0223_666/article/details/141932723</link><guid>https://blog.youkuaiyun.com/C0223_666/article/details/141932723</guid><author>C0223_666</author><pubDate>Thu, 05 Sep 2024 20:46:39 +0800</pubDate><description><![CDATA[本文讲述了Java Stream流的运用]]></description><category></category></item><item><title><![CDATA[C语言零基础入门教程——03 C语言程序的基本构成]]></title><link>https://blog.youkuaiyun.com/C0223_666/article/details/141894842</link><guid>https://blog.youkuaiyun.com/C0223_666/article/details/141894842</guid><author>C0223_666</author><pubDate>Wed, 04 Sep 2024 16:34:58 +0800</pubDate><description><![CDATA[本文讲述了C语言程序的基本构成]]></description><category></category></item><item><title><![CDATA[C语言零基础入门教程——02 C语言开发环境的配置（Dev C++超详细安装教程）]]></title><link>https://blog.youkuaiyun.com/C0223_666/article/details/141869863</link><guid>https://blog.youkuaiyun.com/C0223_666/article/details/141869863</guid><author>C0223_666</author><pubDate>Tue, 03 Sep 2024 22:54:57 +0800</pubDate><description><![CDATA[本文主要讲解如何配置C语言开发环境（Dev C++的安装）]]></description><category></category></item><item><title><![CDATA[C语言零基础入门教程—01什么是编程语言]]></title><link>https://blog.youkuaiyun.com/C0223_666/article/details/141861078</link><guid>https://blog.youkuaiyun.com/C0223_666/article/details/141861078</guid><author>C0223_666</author><pubDate>Tue, 03 Sep 2024 15:51:22 +0800</pubDate><description><![CDATA[本文主要针对新手小白，简要解释了什么是编程语言，以及C语言的一些背景知识，帮助读者更好地理解什么是编程语言、为什么从C语言开始学起等问题]]></description><category></category></item></channel></rss>