<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[2402_85679719的博客]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/2402_85679719</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; 2402_85679719]]></copyright><item><title><![CDATA[线程安全与线程池]]></title><link>https://blog.csdn.net/2402_85679719/article/details/148371314</link><guid>https://blog.csdn.net/2402_85679719/article/details/148371314</guid><author>2402_85679719</author><pubDate>Mon, 02 Jun 2025 16:21:43 +0800</pubDate><description><![CDATA[本文概述了线程安全概念及解决方案。多个线程同时访问和修改共享资源会导致线程安全问题。解决方案是线程同步，核心思想是让线程依次访问共享资源，主要通过加锁实现。介绍了两种加锁方式：同步代码块（锁定核心代码）和同步方法（锁定整个方法），并比较了两者的范围与可读性。同时还介绍了锁对象选择规范、Lock锁、线程池技术及其创建方式（ThreadPoolExecutor和Executors），以及线程池处理Runnable和Callable任务的方法。最后提及了并发与并行的概念。]]></description><category></category></item><item><title><![CDATA[多线程（ Thread）]]></title><link>https://blog.csdn.net/2402_85679719/article/details/148367646</link><guid>https://blog.csdn.net/2402_85679719/article/details/148367646</guid><author>2402_85679719</author><pubDate>Sun, 01 Jun 2025 22:18:20 +0800</pubDate><description><![CDATA[线程：是一个程序内部的一条执行流程。多线程：是指从软硬件上实现的多条执行流程的技术（多条线程由CPU负责调度执行）。]]></description><category></category></item><item><title><![CDATA[File—IO流]]></title><link>https://blog.csdn.net/2402_85679719/article/details/148304762</link><guid>https://blog.csdn.net/2402_85679719/article/details/148304762</guid><author>2402_85679719</author><pubDate>Fri, 30 May 2025 23:35:35 +0800</pubDate><description><![CDATA[本文摘要：Java中File类用于操作文件和文件夹，但不能读写文件内容（需用IO流）。File对象可代表绝对/相对路径文件/文件夹，提供创建、删除和遍历方法。字符集方面，UTF-8可变长编码（汉字3字节），需注意编码解码一致性。IO流分为输入/输出流和字节/字符流：字节流（FileInputStream/OutputStream）适合所有文件操作但处理中文需注意；字符流专用于纯文本。大文件读取需防内存溢出，字节流更适合作数据转移如文件复制。（150字）]]></description><category></category></item><item><title><![CDATA[运用集合知识做斗地主案例]]></title><link>https://blog.csdn.net/2402_85679719/article/details/148278455</link><guid>https://blog.csdn.net/2402_85679719/article/details/148278455</guid><author>2402_85679719</author><pubDate>Wed, 28 May 2025 17:39:16 +0800</pubDate><description><![CDATA[使用了 Lombok 注解简化开发，生成 getter/setter 和 toString() 方法。使用 Collections.sort() 配合 Lambda 表达式进行自定义排序。size 表示点数，color 表示花色，num 是牌的“大小值”，在排序时使用。也可以传一个数组给它。一种特殊形参，定义在方法，构造器的形参列表里，格式：数据类型...参数名称；sizes 数组按从小到大的顺序排列，便于后续排序。手动添加大小王，并赋予更高的权值 num。num 值越大，牌力越强，在排序中排在前面。]]></description><category></category></item><item><title><![CDATA[Stream流]]></title><link>https://blog.csdn.net/2402_85679719/article/details/148266832</link><guid>https://blog.csdn.net/2402_85679719/article/details/148266832</guid><author>2402_85679719</author><pubDate>Wed, 28 May 2025 09:47:08 +0800</pubDate><description><![CDATA[Stream流是jdk8开始新增的一套API，可以用于操作集合或者数组的数据Stream优势：Stream流大量的结合了Lambda的语法风格来编辑，功能强大，代码简洁，可读性好。]]></description><category></category></item><item><title><![CDATA[Map集合（双列集合） ]]></title><link>https://blog.csdn.net/2402_85679719/article/details/148263564</link><guid>https://blog.csdn.net/2402_85679719/article/details/148263564</guid><author>2402_85679719</author><pubDate>Tue, 27 May 2025 20:19:06 +0800</pubDate><description><![CDATA[摘要：Map集合是键值对结构，具有键唯一、值可重复的特性。常用实现类包括HashMap（无序）、LinkedHashMap（有序）和TreeMap（排序）。遍历方式有三种：键找值（通过keySet获取键集合）、键值对（通过entrySet获取键值对集合）以及JDK8的Lambda表达式（forEach方法）。示例代码展示了三种遍历方式的具体实现，并演示了Map的put、get等基本操作。Map作为双列集合的基础接口，其方法可被所有实现类继承使用。]]></description><category></category></item><item><title><![CDATA[Set系列集合]]></title><link>https://blog.csdn.net/2402_85679719/article/details/148239661</link><guid>https://blog.csdn.net/2402_85679719/article/details/148239661</guid><author>2402_85679719</author><pubDate>Mon, 26 May 2025 23:06:56 +0800</pubDate><description><![CDATA[摘要：Set集合具有无序、不重复、无索引的特点。HashSet底层采用哈希表实现，JDK8前由数组+链表组成，之后加入红黑树优化性能；需重写hashCode()和equals()方法实现去重。LinkedHashSet通过双链表维护元素顺序。TreeSet基于红黑树实现排序，存储对象时需指定排序规则：方式一实现Comparable接口，方式二使用Comparator构造器。当两种比较器并存时，优先采用Comparator，若其返回0则视为相等元素不再插入。]]></description><category></category></item><item><title><![CDATA[Collection集合遍历的三种方法]]></title><link>https://blog.csdn.net/2402_85679719/article/details/148213616</link><guid>https://blog.csdn.net/2402_85679719/article/details/148213616</guid><author>2402_85679719</author><pubDate>Sun, 25 May 2025 22:38:44 +0800</pubDate><description><![CDATA[原因是，当for循环中的索引i在第一个元素时，该元素不包含枸杞，i++，索引遍历至第二个元素，第二个元素包含枸杞，删除，i++，索引遍历至第三个元素，但此时红枸杞元素会因黑枸杞的删除而前移，至第二个元素，所以红枸杞未判断，没有删除。迭代器初始在集合的第一个元素，while循环判断条件为当前元素是否为空，打印时的.next（）是将索引遍历到下一个元素。注意:增强for循环/Lambda遍历均不能解决并发修改异常问题，因此增它们只适合做数据的遍历，不适合同时做增删操作，说明：结合lambda遍历集合。]]></description><category></category></item><item><title><![CDATA[匿名内部类与函数式编程]]></title><link>https://blog.csdn.net/2402_85679719/article/details/148202091</link><guid>https://blog.csdn.net/2402_85679719/article/details/148202091</guid><author>2402_85679719</author><pubDate>Sun, 25 May 2025 11:42:10 +0800</pubDate><description><![CDATA[摘要：匿名内部类是一种一次性使用的特殊内部类，适合创建仅需一次的对象，能使代码更简洁。它即时定义并实例化，常用于事件监听和线程实现。JDK8引入的Lambda表达式可替代部分匿名内部类，但仅适用于函数式接口（仅含一个抽象方法的接口，用@FunctionalInterface注解声明）。例如，Swim接口的匿名实现可用Lambda简化为()-&gt;{...}，使代码更清晰。]]></description><category></category></item><item><title><![CDATA[二叉树知识点]]></title><link>https://blog.csdn.net/2402_85679719/article/details/147617202</link><guid>https://blog.csdn.net/2402_85679719/article/details/147617202</guid><author>2402_85679719</author><pubDate>Tue, 29 Apr 2025 18:43:43 +0800</pubDate><description><![CDATA[深度为 k 的，有 n 个节点的二叉树，当且仅当其每一个节点都与深度为 k 的满二叉树中编号从 1 至 n 的节点一一对应时，称之为完全二叉树。完全二叉树从根节点到倒数第二层是满的，最后一层节点从左到右依次排列，可能不满，但节点都是从左到右依次存在。]]></description><category></category></item><item><title><![CDATA[栈和队列学习记录]]></title><link>https://blog.csdn.net/2402_85679719/article/details/147461430</link><guid>https://blog.csdn.net/2402_85679719/article/details/147461430</guid><author>2402_85679719</author><pubDate>Wed, 23 Apr 2025 20:23:56 +0800</pubDate><description><![CDATA[栈只允许在表的一端进行插入和删除操作，这一端被称为栈顶（Top），另一端则是栈底（Bottom）。这种受限的操作方式使得栈遵循后进先出（LIFO，Last In First Out）的原则，即最后进入栈的元素最先出栈.栈的插⼊操作叫做进栈/压栈/⼊栈，⼊数据在栈顶。栈的删除操作叫做出栈。出数据在栈顶。]]></description><category></category></item><item><title><![CDATA[LinkedList与链表]]></title><link>https://blog.csdn.net/2402_85679719/article/details/147276873</link><guid>https://blog.csdn.net/2402_85679719/article/details/147276873</guid><author>2402_85679719</author><pubDate>Wed, 23 Apr 2025 09:36:20 +0800</pubDate><description><![CDATA[由于顺序表ArrayList在有些操作时效率较低，如在任意位置插入或者删除一个元素，需要将该位置后面的所有元素进行前移或者后移，时间复杂度为O（n），效率比较低，所以ArrayList不适合做频繁任意位置插入的场景，此外，还有扩容机制导致的内存使用效率较低，因此，Java集合又引入了链表结构（LinkedList）。]]></description><category></category></item><item><title><![CDATA[链表面试题]]></title><link>https://blog.csdn.net/2402_85679719/article/details/147354609</link><guid>https://blog.csdn.net/2402_85679719/article/details/147354609</guid><author>2402_85679719</author><pubDate>Sat, 19 Apr 2025 20:29:25 +0800</pubDate><description><![CDATA[首先判断极端条件，两个链表其中有一个为null时，则无需合并，直接返回非空链表即可，当两个链表都不为null时，定义一个newH来存放比较过之后较小的节点，分别取两个链表的头节点进行比较大小，将较小的节点放在newH，然后移动newH的头节点tmp，将其下一个节点的地址给到被移走的链表的头节点，让其再次与较大者进行比较，直至两个链表一个为空，全部节点都放到了新链表当中，直接将另一个非空链表拼接到newH后面即可。新链表是通过拼接给定的两个链表的所有节点组成的。8. 输⼊两个链表，找出它们的第⼀个公共结点。]]></description><category></category></item><item><title><![CDATA[ArrayList与线性表中的顺序表]]></title><link>https://blog.csdn.net/2402_85679719/article/details/147251943</link><guid>https://blog.csdn.net/2402_85679719/article/details/147251943</guid><author>2402_85679719</author><pubDate>Tue, 15 Apr 2025 18:22:32 +0800</pubDate><description><![CDATA[ArrayList是Java集合框架中一个非常常用的类，它实现了List接口，是一个动态数组，即长度可以自动增长的数组。以下从多个方面对ArrayList。]]></description><category></category></item><item><title><![CDATA[常用方法集合]]></title><link>https://blog.csdn.net/2402_85679719/article/details/147234090</link><guid>https://blog.csdn.net/2402_85679719/article/details/147234090</guid><author>2402_85679719</author><pubDate>Mon, 14 Apr 2025 23:10:52 +0800</pubDate><description><![CDATA[charAt 方法是用于获取字符串或 StringBuilder 中指定位置的字符。在 String 类和 StringBuilder 类中都有这个方法，但它们在功能实现上有一些细微的上下文差异。]]></description><category></category></item><item><title><![CDATA[泛型的深度认识]]></title><link>https://blog.csdn.net/2402_85679719/article/details/147227360</link><guid>https://blog.csdn.net/2402_85679719/article/details/147227360</guid><author>2402_85679719</author><pubDate>Mon, 14 Apr 2025 17:53:23 +0800</pubDate><description><![CDATA[在编译时，Java编译器会将泛型类型信息从代码中移除，这个过程就叫做类型擦除。擦除后，泛型类型会被替换为其边界类型（通常是Object）或者指定的类型。•将泛型参数替换为其边界或Object。• 在必要的地⽅插⼊类型转换以保持类型安全。• ⽣成桥接⽅法以保持多态性。]]></description><category></category></item><item><title><![CDATA[数据结构（一）]]></title><link>https://blog.csdn.net/2402_85679719/article/details/147201340</link><guid>https://blog.csdn.net/2402_85679719/article/details/147201340</guid><author>2402_85679719</author><pubDate>Mon, 14 Apr 2025 16:41:46 +0800</pubDate><description><![CDATA[也称为时间复杂度，主要衡量的是一个算法的运行速度。时间复杂度是衡量算法运行时间随输入规模增长的变化趋势。常见的时间复杂度从低到高有 O(1)（常数时间）、 O(logn)（对数时间）、 O(n)（线性时间）、 O(nlogn)（线性对数时间）、 O(n2)（平方时间）等。也称为空间复杂度，*+-问的5芙uiokl主要衡量的是一个算法运行过程中所需要的额外空间。常见的空间复杂度有 O(1)（常数空间）、 O(n)（线性空间）等。]]></description><category></category></item><item><title><![CDATA[单例、工厂、代理模式]]></title><link>https://blog.csdn.net/2402_85679719/article/details/146950284</link><guid>https://blog.csdn.net/2402_85679719/article/details/146950284</guid><author>2402_85679719</author><pubDate>Wed, 02 Apr 2025 18:03:48 +0800</pubDate><description><![CDATA[单例模式是一种创建型设计模式，确保一个类只有一个实例，并提供一个全局访问点来访问这个实例，其可以避免资源浪费和冲突。单例模式的特征：唯一实例：类只能创建一个实例。私有构造函数：禁止外部通过new关键字创建对象。全局访问点：通过静态方法（如getInstance()）获取实例。实现单例模式的两种方式：饿汉式和懒汉式。]]></description><category></category></item><item><title><![CDATA[字符串—String]]></title><link>https://blog.csdn.net/2402_85679719/article/details/146468074</link><guid>https://blog.csdn.net/2402_85679719/article/details/146468074</guid><author>2402_85679719</author><pubDate>Mon, 24 Mar 2025 23:28:59 +0800</pubDate><description><![CDATA[对于内置类型，==比较的是变量中的值，对于引用类型==比较的是引用中的地。3.1.2equals方法：按照字典序比较（字符大小的顺序）String类重写了⽗类Object中equals⽅法，Object中equals默认按照==⽐较，String重写equals⽅法后，按照如下规则进⾏⽐较，⽐如： s1.equals(s2)3.1.3compareTo方法：按照字典序比较compare方法与euqals方法不同的是，后者返回类型是boolean类型的，而前者返回类型为int类型。]]></description><category></category></item><item><title><![CDATA[Javase接口完]]></title><link>https://blog.csdn.net/2402_85679719/article/details/146407343</link><guid>https://blog.csdn.net/2402_85679719/article/details/146407343</guid><author>2402_85679719</author><pubDate>Thu, 20 Mar 2025 23:18:58 +0800</pubDate><description><![CDATA[在Java中类和类之间的关系是单继承的，一个类可以实现多个接口，接口与接口之间可以实现多继承。即用接口可以达到多继承的目的。接口可以继承另一个接口，达到复用的效果，继承时使用extends关键字。如果一个类要实现这个接口那么需要把当前接口和其接口继承的接口中所有的方法重写。]]></description><category></category></item></channel></rss>