<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[emmm1531的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/emmm1531</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; emmm1531]]></copyright><item><title><![CDATA[LLM/AI应用八股]]></title><link>https://blog.youkuaiyun.com/emmm1531/article/details/164430447</link><guid>https://blog.youkuaiyun.com/emmm1531/article/details/164430447</guid><author>emmm1531</author><pubDate>Tue, 29 Sep 2026 17:14:38 +0800</pubDate><description><![CDATA[本文系统梳理AI应用核心概念：大语言模型（LLM）通过预测Token生成文本，受Context Window和Token成本限制；RAG通过向量检索增强生成，结合Embedding、向量数据库与Prompt工程降低幻觉；优化策略包括HybridSearch、Rerank、QueryRewrite等；Agent则基于ToolCalling动态调用外部工具，实现任务闭环。最终，MCP协议统一了外部能力接入标准，推动AI应用高效集成与复用。]]></description><category></category></item><item><title><![CDATA[MySQL重点梳理（一）]]></title><link>https://blog.youkuaiyun.com/emmm1531/article/details/163570009</link><guid>https://blog.youkuaiyun.com/emmm1531/article/details/163570009</guid><author>emmm1531</author><pubDate>Sat, 29 Aug 2026 17:10:29 +0800</pubDate><description><![CDATA[Day 1：SQL基础

1. 什么是SQL？(Structured Query Language)

2. SQL语句有哪些分类？

🍉区分：

🍉为什么update/delete一定要加where？

3. 增删改查（CRUD）

🍉什么是CRUD？

4. SELECT查询执行顺序（重点）

5. Where和Having区别（面试常问）

6. GROUP BY是什么？⭐⭐⭐

7. JOIN是什么？⭐⭐⭐⭐

Day 2：MySQL索引 ⭐

1. 什么是索引？（必背）

2. 为什么需要索]]></description><category></category></item><item><title><![CDATA[优选算法---滑动窗口]]></title><link>https://blog.youkuaiyun.com/emmm1531/article/details/161490355</link><guid>https://blog.youkuaiyun.com/emmm1531/article/details/161490355</guid><author>emmm1531</author><pubDate>Wed, 26 Aug 2026 16:29:46 +0800</pubDate><description><![CDATA[LCR 008. 长度最小的子数组 - 力扣（LeetCode）LCR 016. 无重复字符的最长子串 - 力扣（LeetCode）485. 最大连续 1 的个数 - 力扣（LeetCode）1004. 最大连续1的个数 III - 力扣（LeetCode）1658. 将 x 减到 0 的最小操作数904. 水果成篮LCR 015. 找到字符串中所有字母异位词30. 串联所有单词的子串LCR 017. 最小覆盖子串]]></description><category></category></item><item><title><![CDATA[JAVAEE进阶---Spring]]></title><link>https://blog.youkuaiyun.com/emmm1531/article/details/160308492</link><guid>https://blog.youkuaiyun.com/emmm1531/article/details/160308492</guid><author>emmm1531</author><pubDate>Sun, 19 Jul 2026 16:49:08 +0800</pubDate><description><![CDATA[本文摘要： 本文系统介绍了SpringBoot开发中的核心知识点，包括参数传递、Cookie/Session机制、IOC/AOP原理、框架对比及SQL注入防护。主要内容：1）控制器参数注解使用技巧，涵盖@RequestParam、@RequestBody、@PathVariable等场景；2）会话管理三种实现方式及Cookie/Session区别；3）Spring核心思想IOC（五大注解与@Bean）和AOP（切面编程原理）；4）Spring全家桶关系剖析；5）#{}与${}的SQL安全选择策略。特别强调实]]></description><category></category></item><item><title><![CDATA[04、JAVAEE---多线程进阶、文件I/O、网络初识]]></title><link>https://blog.youkuaiyun.com/emmm1531/article/details/161519189</link><guid>https://blog.youkuaiyun.com/emmm1531/article/details/161519189</guid><author>emmm1531</author><pubDate>Wed, 10 Jun 2026 10:17:47 +0800</pubDate><description><![CDATA[本文系统梳理了Java多线程核心知识点：1. 锁策略：包括乐观/悲观锁、重量/轻量级锁、公平/非公平锁等6种策略，重点解析synchronized特性。2. JVM优化：锁升级（无锁→偏向锁→轻量级锁→重量级锁）、锁消除和锁粗化机制。3. 并发工具：对比Runnable/Callable、synchronized/ReentrantLock、Semaphore信号量及CountDownLatch同步器。4. 线程安全容器：分析Hashtable与ConcurrentHashMap的演进，后者通过分段锁、CA]]></description><category></category></item><item><title><![CDATA[03、JAVAEE---多线程(三)]]></title><link>https://blog.youkuaiyun.com/emmm1531/article/details/158500577</link><guid>https://blog.youkuaiyun.com/emmm1531/article/details/158500577</guid><author>emmm1531</author><pubDate>Tue, 09 Jun 2026 12:27:58 +0800</pubDate><description><![CDATA[本文介绍了Java多线程编程中的三个核心组件：阻塞队列、线程池和定时器。针对阻塞队列，详细讲解了使用size变量和预留空间的两种实现方式，重点分析了生产者消费者模型的优缺点。在线程池部分，解析了ThreadPoolExecutor的七大核心参数和四种拒绝策略，并提供了手动实现的简易线程池示例。定时器章节则通过标准库使用和手动实现两个维度，展示了延迟执行和周期执行的区别。全文强调多线程编程中的线程安全、阻塞控制和资源管理，为开发者提供了从原理到实践的完整指导，最后指出生产环境中应避免使用Executors的预]]></description><category></category></item><item><title><![CDATA[08、数据结构与算法---HashSet&&HashMap与试卷]]></title><link>https://blog.youkuaiyun.com/emmm1531/article/details/160991924</link><guid>https://blog.youkuaiyun.com/emmm1531/article/details/160991924</guid><author>emmm1531</author><pubDate>Tue, 19 May 2026 18:23:40 +0800</pubDate><description><![CDATA[本文主要讲解了HashMap的实现原理和哈希集合的应用。首先分析了HashMap的put方法源码，包括哈希计算、取下标优化、负载因子设置和链表转红黑树的机制。然后通过三道LeetCode题目（136、138、771）展示了HashSet和HashMap的实际应用，包括数字查找、链表复制和字符统计。最后提到两道待完善的二叉树遍历题目。全文重点阐述了哈希表的核心优化思想和实际编程中的类型处理细节。]]></description><category></category></item><item><title><![CDATA[07、数据结构与算法---优先级队列(堆)与排序]]></title><link>https://blog.youkuaiyun.com/emmm1531/article/details/160601074</link><guid>https://blog.youkuaiyun.com/emmm1531/article/details/160601074</guid><author>emmm1531</author><pubDate>Mon, 18 May 2026 22:09:31 +0800</pubDate><description><![CDATA[本文介绍了非比较排序算法（计数排序、基数排序、桶排序）和基于比较的排序算法实现。重点讲解了堆排序的实现，包括建堆、插入元素、删除堆顶等核心操作，提供了完整的Java代码示例。同时详细解析了插入排序、希尔排序、冒泡排序、选择排序、快速排序（Hoare法和挖坑法）以及归并排序的递归和非递归实现，通过代码示例和分步图解展示了各排序算法的核心思想与执行过程。这些排序算法涵盖了从简单到复杂的多种排序策略，为理解排序算法提供了全面参考。]]></description><category></category></item><item><title><![CDATA[优选算法---双指针]]></title><link>https://blog.youkuaiyun.com/emmm1531/article/details/160797346</link><guid>https://blog.youkuaiyun.com/emmm1531/article/details/160797346</guid><author>emmm1531</author><pubDate>Sat, 16 May 2026 11:40:13 +0800</pubDate><description><![CDATA[这篇算法笔记总结了力扣(LCR/剑指Offer)系列中的双指针经典题型，包含7个核心题目解法精要：283移动零（非零元素前移）、1089复写零（双指针定位）、202快乐数（快慢指针判环）、11盛水容器（宽度高度平衡）、611有效三角形（排序+双指针）、LCR179两数之和（有序数组解法）、LCR007三数之和（去重处理）和18四数之和（双层循环+双指针）。所有解法均通过Java代码实现，着重分析了双指针的移动策略、边界处理及去重技巧，时间复杂度普遍优化至O(n)或O(n²)。]]></description><category></category></item><item><title><![CDATA[06、数据结构与算法---二叉树]]></title><link>https://blog.youkuaiyun.com/emmm1531/article/details/160124490</link><guid>https://blog.youkuaiyun.com/emmm1531/article/details/160124490</guid><author>emmm1531</author><pubDate>Sat, 25 Apr 2026 22:19:22 +0800</pubDate><description><![CDATA[本文介绍了二叉树的基本概念和递归操作实现。主要内容包括：1. 树结构的理解，二叉树作为基本树结构；2. 手动实现树的各种操作（前中后序遍历、节点计数、高度计算等）；3. 典型树练习题（判断相同树、子树、反转二叉树、平衡二叉树、对称二叉树等）；4. 层序遍历的两种实现方式。文章强调递归的核心思想是关注当前节点而非模拟整个过程，并提供了详细的代码示例和测试案例。]]></description><category></category></item><item><title><![CDATA[04、数据结构与算法---双向链表]]></title><link>https://blog.youkuaiyun.com/emmm1531/article/details/159769102</link><guid>https://blog.youkuaiyun.com/emmm1531/article/details/159769102</guid><author>emmm1531</author><pubDate>Tue, 14 Apr 2026 00:01:07 +0800</pubDate><description><![CDATA[本文介绍了双向链表的实现方法及其与单向链表的差异。双向链表通过prev和next指针实现双向遍历，在头插、尾插、指定位置插入和删除操作时需处理前后指针关系。相比单向链表，双向链表删除节点时无需寻找前驱节点，但需考虑头尾节点的特殊情况。文章还总结了单链表的常见习题解法，包括合并有序链表、判断回文链表、链表相交和环形链表检测等算法，这些算法多采用快慢指针、傀儡节点等技巧实现。通过对比双向和单向链表的实现差异，帮助理解不同链表结构的特性和适用场景。]]></description><category></category></item><item><title><![CDATA[05、数据结构与算法---栈与队列]]></title><link>https://blog.youkuaiyun.com/emmm1531/article/details/159860323</link><guid>https://blog.youkuaiyun.com/emmm1531/article/details/159860323</guid><author>emmm1531</author><pubDate>Sun, 12 Apr 2026 21:03:09 +0800</pubDate><description><![CDATA[栈与队列的对比
顺序：栈是LIFO，队列是FIFO。
操作位置：栈仅在栈顶操作，队列在队尾插入、队首删除。
实现方式：两者均可通过数组或链表实现，但需注意边界条件（如栈溢出、队列空/满）]]></description><category></category></item><item><title><![CDATA[03、数据结构与算法--单向链表]]></title><link>https://blog.youkuaiyun.com/emmm1531/article/details/159159914</link><guid>https://blog.youkuaiyun.com/emmm1531/article/details/159159914</guid><author>emmm1531</author><pubDate>Tue, 31 Mar 2026 22:17:24 +0800</pubDate><description><![CDATA[本文介绍了链表的基本结构和实现方法。与顺序表不同，链表通过节点连接实现非连续存储，需要遍历访问元素。详细讲解了链表的头插法、尾插法、指定位置插入等基本操作，并重点分析了删除节点（单个和全部）的关键逻辑。文章还包含链表常见面试题的解析，如反转链表、分割链表、查找中间节点和倒数第k个节点等，通过代码示例和逻辑图解说明实现方法。最后展示了如何通过测试用例验证这些方法的正确性。]]></description><category></category></item><item><title><![CDATA[02、数据结构与算法--顺序表]]></title><link>https://blog.youkuaiyun.com/emmm1531/article/details/158621893</link><guid>https://blog.youkuaiyun.com/emmm1531/article/details/158621893</guid><author>emmm1531</author><pubDate>Fri, 06 Mar 2026 18:13:17 +0800</pubDate><description><![CDATA[本文介绍了顺序表（Sequential List）的基本概念和实现方法。顺序表是一种线性表，通过连续内存空间存储数据元素，类似于电影院座位排列。文章重点讲解了顺序表的插入(add)和删除(remove)操作的正确实现方式：插入时应从后往前移动元素以避免数据覆盖，删除时应从前往后移动元素。作者通过Java代码示例展示了顺序表的具体实现，包括扩容机制、边界检查等关键细节。最后以杨辉三角为例，演示了顺序表在实际问题中的应用。正确理解元素移动方向对顺序表操作至关重要。]]></description><category></category></item><item><title><![CDATA[02、JAVAEE--多线程(二)]]></title><link>https://blog.youkuaiyun.com/emmm1531/article/details/157612567</link><guid>https://blog.youkuaiyun.com/emmm1531/article/details/157612567</guid><author>emmm1531</author><pubDate>Sat, 28 Feb 2026 12:11:05 +0800</pubDate><description><![CDATA[本文摘要：探讨Java多线程中的线程安全问题和单例模式实现。线程安全问题主要由五大原因引起，重点介绍了synchronized的互斥性和可重入性特性，以及死锁的四大必要条件。通过代码示例演示了wait()/notify()的使用和内存可见性问题，提出使用volatile解决。在单例模式部分，对比了饿汉模式和懒汉模式，重点讲解了线程安全的DCL（双重检查锁）实现方式，强调volatile在防止指令重排序中的关键作用。最后总结指出synchronized、双重if判断和volatile三者协同工作，共同确保DC]]></description><category></category></item><item><title><![CDATA[01、JAVAEE--多线程(一)]]></title><link>https://blog.youkuaiyun.com/emmm1531/article/details/154873648</link><guid>https://blog.youkuaiyun.com/emmm1531/article/details/154873648</guid><author>emmm1531</author><pubDate>Sat, 31 Jan 2026 21:21:58 +0800</pubDate><description><![CDATA[本文介绍了JavaEE中并发编程的基础知识，重点讲解了进程与线程的区别及线程的使用方法。进程是资源分配的基本单位，线程是CPU调度的基本单位，多线程能提高效率但过多线程会导致调度开销。文章详细说明了5种创建线程的方式：继承Thread类、实现Runnable接口以及它们的匿名内部类和lambda表达式实现。此外还介绍了线程的重要方法如setDaemon()、isAlive()，以及线程控制技术包括休眠、中断和等待。通过代码示例展示了如何正确使用这些技术来实现并发编程。]]></description><category></category></item><item><title><![CDATA[01、数据结构与算法--泛型与通配符]]></title><link>https://blog.youkuaiyun.com/emmm1531/article/details/150144669</link><guid>https://blog.youkuaiyun.com/emmm1531/article/details/150144669</guid><author>emmm1531</author><pubDate>Sat, 23 Aug 2025 17:38:45 +0800</pubDate><description><![CDATA[本文主要介绍了Java泛型和顺序表的基础知识。在泛型部分，通过对比Object数组和泛型数组的实现，说明了泛型在类型安全和避免强制类型转换方面的优势，并详细讲解了泛型类、泛型方法、通配符上下界等核心概念。在顺序表部分，通过电影院座位的比喻形象解释了顺序表的连续存储特性，并给出了一个完整的顺序表实现代码，包含增删改查等基本操作，以及扩容机制和异常处理等细节。全文通过具体代码示例帮助理解泛型和顺序表的核心概念与应用场景。]]></description><category></category></item><item><title><![CDATA[04、抽象类与接口]]></title><link>https://blog.youkuaiyun.com/emmm1531/article/details/149500828</link><guid>https://blog.youkuaiyun.com/emmm1531/article/details/149500828</guid><author>emmm1531</author><pubDate>Mon, 21 Jul 2025 11:14:16 +0800</pubDate><description><![CDATA[实例化int a = 10;class outclass{ //外部类public static class innerclass{ //内部类System.out.println("内部类方法");x.test();]]></description><category></category></item><item><title><![CDATA[03、继承与多态]]></title><link>https://blog.youkuaiyun.com/emmm1531/article/details/148539165</link><guid>https://blog.youkuaiyun.com/emmm1531/article/details/148539165</guid><author>emmm1531</author><pubDate>Sat, 14 Jun 2025 19:30:26 +0800</pubDate><description><![CDATA[System.out.println(this.name+"正在吃饭");System.out.println(this.name+"正在吃狗粮");System.out.println(this.name+"正在汪汪叫");//表示父类的引用指向了子类的对象Animal animal = new Dog2(18,"旺财");//向上转型。]]></description><category></category></item><item><title><![CDATA[02、类与对象]]></title><link>https://blog.youkuaiyun.com/emmm1531/article/details/148350320</link><guid>https://blog.youkuaiyun.com/emmm1531/article/details/148350320</guid><author>emmm1531</author><pubDate>Fri, 06 Jun 2025 11:35:24 +0800</pubDate><description><![CDATA[1、如何实例化int a = 10;、如何访问对象中的成员//成员变量//成员方法System.out.println(name + "在汪汪汪");System.out.println(name + "在睡觉");int a = 10;dog1.name = "旺财";dog1.type = "金毛";//调用成员方法//成员变量//成员方法dog1.setDog(10, "金毛", "旺财");主要目的。]]></description><category></category></item></channel></rss>