<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[xiaomo2249的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/xiaomo2249</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; xiaomo2249]]></copyright><item><title><![CDATA[javaee-网络原理4]]></title><link>https://blog.youkuaiyun.com/xiaomo2249/article/details/159931603</link><guid>https://blog.youkuaiyun.com/xiaomo2249/article/details/159931603</guid><author>xiaomo2249</author><pubDate>Tue, 14 Apr 2026 19:15:51 +0800</pubDate><description><![CDATA[路由选择 = 路由器根据目标 IP 的网络号，决定数据包下一步发给谁，让它一步步从你这里走到目标设备。你可以把路由器当成快递中转站，路由表就是中转指南，路由选择就是按指南分拣包裹。数据链路层(了解)：①①以太网以太网 = 现在最普遍的局域网技术标准说白了就是：网线 + 网卡 + 交换机 这套东西的统称。以太⽹帧格式:这里的地址是mac地址(不是ip地址)MAC 地址 = 设备出厂自带的 “物理身份证”，全世界唯一，烧在网卡里，改不了。(可以作为一个电脑的身份标识)]]></description><category></category></item><item><title><![CDATA[javaee-网络原理3]]></title><link>https://blog.youkuaiyun.com/xiaomo2249/article/details/159803016</link><guid>https://blog.youkuaiyun.com/xiaomo2249/article/details/159803016</guid><author>xiaomo2249</author><pubDate>Tue, 07 Apr 2026 22:25:14 +0800</pubDate><description><![CDATA[console.log("浏览器立即往下执行后续代码");AJAX 请求发出去之后，浏览器不会等服务器响应，直接立刻执行这一行。浏览器立即往下执行后续代码console.log("浏览器立即往下执行后续代码");AJAX 请求发出去之后，浏览器不会等服务器响应，直接立刻执行这一行。浏览器立即往下执行后续代码主要用途：登录/上传各种文件⑨即用 Java 语言里的 Socket 技术，手动拼接、发送一个 HTTP 请求数据包。]]></description><category></category></item><item><title><![CDATA[javaee-网络原理2]]></title><link>https://blog.youkuaiyun.com/xiaomo2249/article/details/159737073</link><guid>https://blog.youkuaiyun.com/xiaomo2249/article/details/159737073</guid><author>xiaomo2249</author><pubDate>Thu, 02 Apr 2026 21:15:42 +0800</pubDate><description><![CDATA[比如：浏览器怎么请求网页、APP 怎么跟服务器发数据。]]></description><category></category></item><item><title><![CDATA[javaee-网络编程(基础)]]></title><link>https://blog.youkuaiyun.com/xiaomo2249/article/details/159514658</link><guid>https://blog.youkuaiyun.com/xiaomo2249/article/details/159514658</guid><author>xiaomo2249</author><pubDate>Tue, 31 Mar 2026 20:31:27 +0800</pubDate><description><![CDATA[(2)构造方法：输入端口号(还可以写ip，一般写端口号就足够了，也是最标准、最简单的写法)]]></description><category></category></item><item><title><![CDATA[javaee-网络原理(理论)]]></title><link>https://blog.youkuaiyun.com/xiaomo2249/article/details/159477881</link><guid>https://blog.youkuaiyun.com/xiaomo2249/article/details/159477881</guid><author>xiaomo2249</author><pubDate>Thu, 26 Mar 2026 23:19:56 +0800</pubDate><description><![CDATA[①ip地址：标记一台网络设备所在位置端口号：一台主机上有多个程序同时用网，端口就是区分不同程序的网络协议：通信双方用于规定接收/发送 的数据格式的约定多个设备遵守同一协议才能通信②网络通信五元组:源ip源端口目的ip目的端口协议类型③协议分层:把网络通信的大任务，拆成好几层小任务，每层只干自己的事，互不干扰。如果我们设计一个协议，要完成网络通信中各种问题，那肯定会很复杂，很多。为了方便一点，就把整一大个协议分成多个小协议每层只做一层的事，，这就是。]]></description><category></category></item><item><title><![CDATA[javaee-文件操作/io]]></title><link>https://blog.youkuaiyun.com/xiaomo2249/article/details/159397530</link><guid>https://blog.youkuaiyun.com/xiaomo2249/article/details/159397530</guid><author>xiaomo2249</author><pubDate>Wed, 25 Mar 2026 19:09:49 +0800</pubDate><description><![CDATA[①文件(1)文件：一串长期保存在磁盘上的字节序列(2)树型结构组织和⽬录:目录（文件夹）是操作系统用「树形结构」组织文件的核心载体(3)⽂件路径:操作系统定位文件 / 文件夹的 “地址”(4)其他：即使是普通⽂件，根据其保存数据的不同，也经常被分为不同的类型，我们⼀般简单的划分为⽂本⽂件和⼆进制⽂件，分别指代保存被字符集编码的⽂本和按照标准格式保存的⾮被字符集编码过的⽂件②java中操作文件主要使用 java.io.File 这个类对文件进行操作(1)构造方法：注意要么用/要么用\\]]></description><category></category></item><item><title><![CDATA[javaee-多线程进阶]]></title><link>https://blog.youkuaiyun.com/xiaomo2249/article/details/159319853</link><guid>https://blog.youkuaiyun.com/xiaomo2249/article/details/159319853</guid><author>xiaomo2249</author><pubDate>Mon, 23 Mar 2026 23:20:33 +0800</pubDate><description><![CDATA[①常⻅的锁策略(1)乐观锁&悲观锁顾名思义乐观锁：加锁的时候，认为锁竞争不会很激烈，不需要做额外工作悲观锁：加锁的时候，认为锁竞争会很激烈，额外做一些工作(比如：加锁失败就等待 / 阻塞，直到拿到锁)(2)重量级锁&轻量级锁重量级锁：实现成本 / 开销维度大的锁，即运行更低效轻量级锁：实现成本 / 开销难度小的锁，运行更高效(3)挂起等待锁&自旋锁挂起等待锁：获取锁失败 → 线程被挂起（进入阻塞队列）→ 锁释放后被唤醒。]]></description><category></category></item><item><title><![CDATA[javaee-多线程初阶]]></title><link>https://blog.youkuaiyun.com/xiaomo2249/article/details/158853820</link><guid>https://blog.youkuaiyun.com/xiaomo2249/article/details/158853820</guid><author>xiaomo2249</author><pubDate>Wed, 18 Mar 2026 18:21:53 +0800</pubDate><description><![CDATA[一.多线程基本介绍①概念：为啥要有线程？因为如果是单线程程序。]]></description><category></category></item><item><title><![CDATA[java数据结构-map&set]]></title><link>https://blog.youkuaiyun.com/xiaomo2249/article/details/157771283</link><guid>https://blog.youkuaiyun.com/xiaomo2249/article/details/157771283</guid><author>xiaomo2249</author><pubDate>Thu, 05 Feb 2026 19:52:35 +0800</pubDate><description><![CDATA[α=散列表的长度填入表中的元素个数​。]]></description><category></category></item><item><title><![CDATA[java数据结构-排序(自用记忆)]]></title><link>https://blog.youkuaiyun.com/xiaomo2249/article/details/157690671</link><guid>https://blog.youkuaiyun.com/xiaomo2249/article/details/157690671</guid><author>xiaomo2249</author><pubDate>Tue, 03 Feb 2026 16:14:41 +0800</pubDate><description><![CDATA[然后先把下标为i的存在临时变量temp中，然后定义一个for循环中的变量j(因为后面要用，所以在外面2定义j)，然后启动j的循环，从j=i-1开始不断--，每一次--，如果j的数值>t，那就让下标j+1处的值为下标j处的值（这个部分就是把比下标i处的值小的值往前排，留出位置给临时变量temp）⑤交换排序：基本思想：所谓交换，就是根据序列中两个记录键值的比较结果来对换这两个记录在序列中的位置，交换排序的特点是：将键值较大的记录向序列的尾部移动，键值较小的记录向序列的前部移动。它是通过堆来进行选择数据。]]></description><category></category></item><item><title><![CDATA[java数据结构-堆]]></title><link>https://blog.youkuaiyun.com/xiaomo2249/article/details/157615060</link><guid>https://blog.youkuaiyun.com/xiaomo2249/article/details/157615060</guid><author>xiaomo2249</author><pubDate>Sun, 01 Feb 2026 17:08:10 +0800</pubDate><description><![CDATA[维度向上调整（siftUp）向下调整（siftDown）触发场景插入新元素构建堆、取出堆顶、堆排序调整方向从下往上（子节点 → 父节点）从上往下（父节点 → 子节点）比较对象仅与父节点比较与左右子节点比较，先选出最优子节点解决问题子节点 “过大 / 过小” 破坏堆性质父节点 “过小 / 过大” 破坏堆性质④堆的创建：首先明确一个规律：两个向上调整和向下调整的代码在大根堆和小跟堆只有比较符号的区别所以下面都以大根堆为例堆类：成员变量有用来储存的数组和已使用容量（不是数组最大容量）]]></description><category></category></item><item><title><![CDATA[java数据结构-树]]></title><link>https://blog.youkuaiyun.com/xiaomo2249/article/details/157580898</link><guid>https://blog.youkuaiyun.com/xiaomo2249/article/details/157580898</guid><author>xiaomo2249</author><pubDate>Sat, 31 Jan 2026 16:22:45 +0800</pubDate><description><![CDATA[因为每次调用都要用到一次新的preIndex索引，索引是用来提取字符串每个位置上的字符的，那么干脆把它当场全局变量用，第一个方法初始化/更新preIndex的值，然后返回第二个方法(返回值都是TreeNode)第四种情况：a，b都不是空，而且a的val=b的val，那就返回a左子树和b左子树，a右子树和b右子树的&&，只有两边均为true整体才能返回true。第四种情况，就是a，b节点进入方法后发现二者并不相同，那就分别把a的左子树和b去比，a的右子树和b去比，如果有一个那就是true 所以用||]]></description><category></category></item><item><title><![CDATA[java数据结构-栈和队列]]></title><link>https://blog.youkuaiyun.com/xiaomo2249/article/details/157545222</link><guid>https://blog.youkuaiyun.com/xiaomo2249/article/details/157545222</guid><author>xiaomo2249</author><pubDate>Fri, 30 Jan 2026 13:27:53 +0800</pubDate><description><![CDATA[首先我们思考栈的原理，是先进后出，跟队列是相反的，那一个队列100%操作不了，所以可能要两个队列，怎么实现？我们先入完队列1的元素，队列2为空，然后队列1的size()-1个元素出列移到队列2，最后把队列1剩下的也就是最后入队的元素输出，那就刚刚好符合后进先出，这就是出栈。①概念：只允许在一端进行插入数据操作，在另一端进行删除数据操作的特殊线性表，队列具有先进先出入队列：进行插入操作的一端称为队尾出队列：进行删除操作的一端称为队头。②队列使用：在Java中，Queue是个接口，底层是通过链表实现的。]]></description><category></category></item><item><title><![CDATA[java数据结构基础-链表]]></title><link>https://blog.youkuaiyun.com/xiaomo2249/article/details/157393492</link><guid>https://blog.youkuaiyun.com/xiaomo2249/article/details/157393492</guid><author>xiaomo2249</author><pubDate>Thu, 29 Jan 2026 12:06:25 +0800</pubDate><description><![CDATA[null，cur最后会停在一个null节点上，只有cur.next!如果是前后都有节点的情况插入：先让cur=head向前走index-1次，放在要插入的位置前一个，然后让newnode的next是cur.next，然后再让newnode的prev是cur，然后再让cur的下一个的上一个是newnode，然后cur的下一个是newnode。总结：先把newnode的前后接上，在改变cur的下一个的上一个(此时cur.next还是原来的，所以cur.next不是newnode)，在改变cur的下一个。]]></description><category></category></item><item><title><![CDATA[java数据结构基础-顺序表]]></title><link>https://blog.youkuaiyun.com/xiaomo2249/article/details/157391727</link><guid>https://blog.youkuaiyun.com/xiaomo2249/article/details/157391727</guid><author>xiaomo2249</author><pubDate>Mon, 26 Jan 2026 12:08:58 +0800</pubDate><description><![CDATA[一.顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构，一般情况下采用数组存储。在数组上完成数据的增删查改。二.ArrayList简介【说明】1. ArrayList是以泛型方式实现的，使用时必须要先实例化2. ArrayList实现了RandomAccess接口，表明ArrayList支持随机访问3. ArrayList实现了Cloneable接口，表明ArrayList是可以clone的。]]></description><category></category></item><item><title><![CDATA[java数据结构基础：时间和空间复杂度]]></title><link>https://blog.youkuaiyun.com/xiaomo2249/article/details/157359012</link><guid>https://blog.youkuaiyun.com/xiaomo2249/article/details/157359012</guid><author>xiaomo2249</author><pubDate>Sun, 25 Jan 2026 14:34:46 +0800</pubDate><description><![CDATA[n = 数组长度（输入规模）；k = 循环执行次数（我们需要求 k 和 n 的关系）。核心结论：这段冒泡排序的空间复杂度是O(1)；// 计算阶乘递归Factorial的空间复杂度？]]></description><category></category></item><item><title><![CDATA[java基础-图书管理系统项目(自用复盘)]]></title><link>https://blog.youkuaiyun.com/xiaomo2249/article/details/157327061</link><guid>https://blog.youkuaiyun.com/xiaomo2249/article/details/157327061</guid><author>xiaomo2249</author><pubDate>Sat, 24 Jan 2026 15:19:17 +0800</pubDate><description><![CDATA[Book:①书类，因为每一本书都有名字，作者，价格，小说类型，是否借出(默认false)等等属性所以单读建立一个类，全部用private修饰，那就建立一个类②构造方法就写一个有参构造，因为新添加的书肯定是未借出，跟boolean成员默认false一样，所以不用再构造方法里写③因为都是private修饰了，所以每个成员变量都要有set和get方法④重写toString：如果直接输出实例化的book会输出地址，但是如果重写toString，那就可以按你想要的格式输出，输出直接输出实例化的名字即可。]]></description><category></category></item><item><title><![CDATA[java基础-异常]]></title><link>https://blog.youkuaiyun.com/xiaomo2249/article/details/157256785</link><guid>https://blog.youkuaiyun.com/xiaomo2249/article/details/157256785</guid><author>xiaomo2249</author><pubDate>Thu, 22 Jan 2026 17:48:47 +0800</pubDate><description><![CDATA[在写程序时，有些特定的代码，不论程序是否发生异常，都需要执行，比如程序中打开的资源：网络连接、数据库连接、IO流等，在程序正常或者异常退出时，必须要对资源进进行回收。处在方法声明时参数列表之后，当方法中抛出编译时异常，用户不想处理该异常，此时就可以借助throws将异常抛给方法的调用者来处理。即当前方法不处理异常，提醒方法的调用者处理异常。2. 如果抛出异常类型与catch时异常类型不匹配，即异常不会被成功捕获，也就不会被处理，继续往外抛，直到JVM收到后中断程序----异常是按照类型来捕获的。]]></description><category></category></item><item><title><![CDATA[java基础-String类]]></title><link>https://blog.youkuaiyun.com/xiaomo2249/article/details/157211854</link><guid>https://blog.youkuaiyun.com/xiaomo2249/article/details/157211854</guid><author>xiaomo2249</author><pubDate>Wed, 21 Jan 2026 14:18:59 +0800</pubDate><description><![CDATA[①由于String的不可更改特性，为了方便字符串的修改，Java中又提供StringBuilder和StringBuffer类。String的内容不可修改，StringBuffer与StringBuilder的内容可以修改.也就是说String本身是一串地址，所以比较是否相同要用其自带的equal方法，不能直接用==String是一种不可变对象. 字符串中的内容是不可改变。所以所有涉及到可能修改字符串内容的操作都是创建一个新对象，改变的是新对象。常用方法(都是 实例化名字.方法名() 的格式！]]></description><category></category></item><item><title><![CDATA[java基础-抽象类+接口]]></title><link>https://blog.youkuaiyun.com/xiaomo2249/article/details/157184012</link><guid>https://blog.youkuaiyun.com/xiaomo2249/article/details/157184012</guid><author>xiaomo2249</author><pubDate>Wed, 21 Jan 2026 12:54:51 +0800</pubDate><description><![CDATA[一.抽象类①抽象类的概念：如果=一个类中没有包含足够的信息来描绘一个具体的对象，这样的类就是抽象。直接理解为抽象类里的抽象方法(可以同时有抽象方法和普通方法！)不用写内容，写外壳就行，抽象类不能实例化，只能有人继承它，而且继承后必须重写里面的所有方法(@Override)，不然会报错。可以有成员变量，跟普通类一样。②抽象类语法：//抽象方法绝对不能写{}!!// 抽象类也是类，也可以增加普通方法和属性③抽象类特性：1.不能实例化抽象类的对象2.抽象方法不能是 private 的。]]></description><category></category></item></channel></rss>