<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[diamond_0的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/diamond_0</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; diamond_0]]></copyright><item><title><![CDATA[代码随想录算法训练营第十三天| 239.滑动窗口最大值、347.前K个高频元素。]]></title><link>https://blog.youkuaiyun.com/diamond_0/article/details/129802027</link><guid>https://blog.youkuaiyun.com/diamond_0/article/details/129802027</guid><author>diamond_0</author><pubDate>Mon, 27 Mar 2023 19:30:52 +0800</pubDate><description><![CDATA[队列里的元素一定是要排序的，而且要最大值放在出队口(front)。其实队列没有必要维护窗口里的所有元素，只需要维护有可能成为窗口里最大值的元素就可以了，同时保证队列里的元素数值是由大到小的。对于窗口里的元素{2, 3, 5, 1 ,4}，单调队列里只维护{5, 4} 就够了，保持单调队列里单调递减，此时队列出口(front)元素就是窗口里最大元素，即5。]]></description><category></category></item><item><title><![CDATA[代码随想录算法训练营第十、十一天| 232.用栈实现队列、225.用队列实现栈、20.有效的括号、1047.删除字符串中所有相邻重复项、150.逆波兰表达式求值。]]></title><link>https://blog.youkuaiyun.com/diamond_0/article/details/129796331</link><guid>https://blog.youkuaiyun.com/diamond_0/article/details/129796331</guid><author>diamond_0</author><pubDate>Mon, 27 Mar 2023 15:25:17 +0800</pubDate><description><![CDATA[有两个方向。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mkJTAMd6-1679901797712)(https://code-thinking.cdn.bcebos.com/gifs/232.用栈实现队列版本2.gif)]只有一个方向：将元素从入栈移动到出栈。]]></description><category></category></item><item><title><![CDATA[代码随想录算法训练营第九天|双指针小结]]></title><link>https://blog.youkuaiyun.com/diamond_0/article/details/129764666</link><guid>https://blog.youkuaiyun.com/diamond_0/article/details/129764666</guid><author>diamond_0</author><pubDate>Sat, 25 Mar 2023 11:23:07 +0800</pubDate><description><![CDATA[双指针法在数组、链表、字符串中常见。]]></description><category></category></item><item><title><![CDATA[代码随想录算法训练营第八天| 344.反转字符串、541.反转字符串II、替换空格、151.翻转字符串里的单词、左旋转字符串。]]></title><link>https://blog.youkuaiyun.com/diamond_0/article/details/129764261</link><guid>https://blog.youkuaiyun.com/diamond_0/article/details/129764261</guid><author>diamond_0</author><pubDate>Sat, 25 Mar 2023 10:59:41 +0800</pubDate><description><![CDATA[借助ArrayList集合，将s中的每一个单词按序放入list集合中。再倒序遍历list集合，得到最终的结果。对于线性数据结构，填充或者删除，后序处理会高效的多。i指向新长度的末尾，j指向旧长度的末尾。先整体反转，再局部反转。剑指offer 05。剑指offer 58。]]></description><category></category></item><item><title><![CDATA[代码随想录算法训练营第七天| 454.四数相加II、383.赎金信、15.三数之和、18. 四数之和。]]></title><link>https://blog.youkuaiyun.com/diamond_0/article/details/129763793</link><guid>https://blog.youkuaiyun.com/diamond_0/article/details/129763793</guid><author>diamond_0</author><pubDate>Sat, 25 Mar 2023 10:30:05 +0800</pubDate><description><![CDATA[与四数之和进行对比。这道题不用考虑去重。ABCD四个数组中的元素都为0，要想A[i]+B[j]+C[k]+D[l]=0，其0可以取自数组的不同位置。A=[0,0] B=[0,0] C=[0,0] D=[0,0]，因此result=[0,0,0,0]/[0,0,0,1]/[0,0,1,1]等。数组 or set or map？不仅要统计是否出现某个值，还需要统计它出现的次数。]]></description><category></category></item><item><title><![CDATA[代码随想录算法训练营第六天| 242.有效的字母异位词、349.两个数组的交集、202.快乐数、1. 两数之和。]]></title><link>https://blog.youkuaiyun.com/diamond_0/article/details/129664874</link><guid>https://blog.youkuaiyun.com/diamond_0/article/details/129664874</guid><author>diamond_0</author><pubDate>Mon, 20 Mar 2023 12:27:55 +0800</pubDate><description><![CDATA[std::unordered_set底层实现为哈希表，std::set 和std::multiset 的底层实现是红黑树。红黑树是一种平衡二叉搜索树，所以key值是有序的，但key不可以修改，改动key值会导致整棵树的错乱，所以只能删除和增加。std::unordered_map 底层实现为哈希表，std::map 和std::multimap 的底层实现是红黑树。同理，std::map 和std::multimap 的key也是有序的（这个问题也经常作为面试题，考察对语言容器底层的理解）。]]></description><category></category></item><item><title><![CDATA[代码随想录算法训练营第四天| 24.两两交换链表中的节点、19.删除链表的倒数第N个节点、链表相交、142. 环形链表。]]></title><link>https://blog.youkuaiyun.com/diamond_0/article/details/129640861</link><guid>https://blog.youkuaiyun.com/diamond_0/article/details/129640861</guid><author>diamond_0</author><pubDate>Sat, 18 Mar 2023 18:40:08 +0800</pubDate><description><![CDATA[24[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-R2X3g0b3-1679135821308)(C:\Users\leodu\AppData\Roaming\Typora\typora-user-images\image-20230318104151358.png)]]]></description><category></category></item><item><title><![CDATA[代码随想录算法训练营第三天| 203. 移除链表元素、707. 设计链表、206. 反转链表]]></title><link>https://blog.youkuaiyun.com/diamond_0/article/details/129632973</link><guid>https://blog.youkuaiyun.com/diamond_0/article/details/129632973</guid><author>diamond_0</author><pubDate>Sat, 18 Mar 2023 10:34:06 +0800</pubDate><description><![CDATA[203分类讨论：处理头节点是val；处理不是头节点是val。参考题解：等有空了，去思考一下递归的做法。]]></description><category></category></item><item><title><![CDATA[代码随想录算法训练营第二天| 977. 有序数组的平方、209. 长度最小的子数组、59.螺旋矩阵]]></title><link>https://blog.youkuaiyun.com/diamond_0/article/details/129595147</link><guid>https://blog.youkuaiyun.com/diamond_0/article/details/129595147</guid><author>diamond_0</author><pubDate>Thu, 16 Mar 2023 18:41:23 +0800</pubDate><description><![CDATA[977顺便借助这道题回忆一下各种排序算法。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-55UE6BcT-1678963109988)(https://code-thinking.cdn.bcebos.com/gifs/977.有序数组的平方.gif)]双指针做法有点快排的感觉。无拓展题目。]]></description><category></category></item><item><title><![CDATA[代码随想录算法训练营第一天| 704. 二分查找、27. 移除元素]]></title><link>https://blog.youkuaiyun.com/diamond_0/article/details/129567697</link><guid>https://blog.youkuaiyun.com/diamond_0/article/details/129567697</guid><author>diamond_0</author><pubDate>Wed, 15 Mar 2023 20:34:38 +0800</pubDate><description><![CDATA[当数组中元素是唯一时。每次划分区间，每次形成两个区间和一个mid。如果mid!= target，那么target一定在左区间或者是右区间。不断的进行划分，缩小，最终找到target。体现在代码中，需要注意的点：①left/right的初始值（想清楚区间的定义）②while中的条件循环的退出条件是当搜索区间为空时，不再划分区间。③每一次划分的过程中，left和right应该如何移动值唯一可能不太能体现思想。mid已经搜索过了，再去分别搜索[left,mid-1]和[mid+1,right]。]]></description><category></category></item><item><title><![CDATA[二叉树相关算法（二）——遍历的应用]]></title><link>https://blog.youkuaiyun.com/diamond_0/article/details/114463826</link><guid>https://blog.youkuaiyun.com/diamond_0/article/details/114463826</guid><author>diamond_0</author><pubDate>Mon, 17 May 2021 15:32:23 +0800</pubDate><description><![CDATA[一、统计二叉树的最大宽度（按层遍历）
1、使用map
2、不使用map
二、序列化与反序列化
1、按层
2、先/中/后
三、打印二叉树（右中左）
四、求前驱与后继
中序
五、折纸（先序遍历“虚拟二叉树”）

...]]></description><category></category></item><item><title><![CDATA[异常——finally与return]]></title><link>https://blog.youkuaiyun.com/diamond_0/article/details/115911313</link><guid>https://blog.youkuaiyun.com/diamond_0/article/details/115911313</guid><author>diamond_0</author><pubDate>Tue, 20 Apr 2021 16:37:20 +0800</pubDate><description><![CDATA[一、情况的分类
1、从代码结构看：
finally中进行return与不进行return
ps： 如果代码中只有一处return，只能出现在finally中或者整个try catch finally框架之外。
2、是否在finally中改变变量值
二、案例说明
自定义描述术语：
return生效：因为在try catch finally框架中，很有可能出现准备返回但未返回的情况（因为必须执行finally中的代码），不同位置上的return语句生效的情况不一样。
假设：
存在两处return，一处retur]]></description><category></category></item><item><title><![CDATA[lambda表达式]]></title><link>https://blog.youkuaiyun.com/diamond_0/article/details/115569482</link><guid>https://blog.youkuaiyun.com/diamond_0/article/details/115569482</guid><author>diamond_0</author><pubDate>Tue, 13 Apr 2021 16:58:20 +0800</pubDate><description><![CDATA[一、JDK8为什么引入lambda表达式
理论名词：函数式接口/函数式编程
在代码运行过程中，可以自行判断参数类型。
案例说明：
从一个Student集合中，取出符合要求的元素。
Student.java：
public class Student {
    private String name;
    private int age;
    private int score;

    public Student() {
    }

    public Student(String nam]]></description><category></category></item><item><title><![CDATA[网络编程-TCP案例]]></title><link>https://blog.youkuaiyun.com/diamond_0/article/details/115551197</link><guid>https://blog.youkuaiyun.com/diamond_0/article/details/115551197</guid><author>diamond_0</author><pubDate>Sat, 10 Apr 2021 03:04:18 +0800</pubDate><description><![CDATA[一、实现客户端向服务端发送一条消息
server.java:
public class Server {
    public static void main(String[] args) throws IOException {
        //开放本地端口，等待客户端的连接
        ServerSocket serverSocket = new ServerSocket(8888);
        //需要接受客户端传输过来的数据，所以需要Socket对象
        Socket ]]></description><category></category></item><item><title><![CDATA[二叉树相关算法（一）——二叉树的遍历]]></title><link>https://blog.youkuaiyun.com/diamond_0/article/details/114459507</link><guid>https://blog.youkuaiyun.com/diamond_0/article/details/114459507</guid><author>diamond_0</author><pubDate>Sat, 06 Mar 2021 23:42:21 +0800</pubDate><description><![CDATA[一、先/中/后序遍历（递归）
递归方式会导致每个节点会经过三次，先序是在第一次经过节点时访问，中序是第二次经过节点时访问，后序是第三次经过节点时访问。
其中较为特殊的是叶子节点，左孩子和右孩子都为空，访问空树时什么都不做就返回。
public static void p(Node h) {
		if(h == null) return;
		else {
			System.out.print(h.val);
			//遍历左子树
			p(h.left);
			//遍历右子树
			p(h.right.]]></description><category></category></item><item><title><![CDATA[二叉树相关算法（三）——二叉树的递归套路]]></title><link>https://blog.youkuaiyun.com/diamond_0/article/details/114455601</link><guid>https://blog.youkuaiyun.com/diamond_0/article/details/114455601</guid><author>diamond_0</author><pubDate>Sat, 06 Mar 2021 21:57:30 +0800</pubDate><description><![CDATA[一、重要说明
1、递归是一种思想，将这种思想落实到二叉树这种数据结果的相关运用上，使我更加了解递归的作用。
2、以下所举的算法例子主要都是基于后续遍历的基础上实现的，即先遍历左子树，再遍历右子树，最后访问根节点，对于每一棵树都是如此。可以认为，递归方式可以从左/右子树上收集信息，从而在根节点处进行汇总。
3、递归分为在递去的过程中解决问题以及在归来的过程中解决问题。因为我想要的信息是从底层往上给（可以是叶子节点，也可以是空节点-》结束/返回条件），所以是在归来的过程中解决问题。
4、方法论：（可以指导对问.]]></description><category></category></item><item><title><![CDATA[Java后端所要掌握的前端知识——HTML篇]]></title><link>https://blog.youkuaiyun.com/diamond_0/article/details/107775744</link><guid>https://blog.youkuaiyun.com/diamond_0/article/details/107775744</guid><author>diamond_0</author><pubDate>Wed, 05 Aug 2020 10:57:17 +0800</pubDate><description><![CDATA[一、前端总体概述
1、Web三要素
浏览器（前端所学）、服务器（servlet）、HTTP协议。
HTTP和HTTPS协议： HTTPS加密传输（网址中不会携带一些私密信息）。
2、需要学的内容
（1）HTML
XML：可扩展的标记语言，传输的一种数据格式（解析极其麻烦，故而改用json格式进行数据的传输）
HTML：超文本标记语言
二、HTML概述
关注点： 常用的标签，属性，常用的样式（style）
1、元素 = 标签 + 内容（后期会需要获取指定的元素）
2、

...]]></description><category></category></item><item><title><![CDATA[Java中的线程（中）——同步与异步、锁机制、死锁]]></title><link>https://blog.youkuaiyun.com/diamond_0/article/details/106902724</link><guid>https://blog.youkuaiyun.com/diamond_0/article/details/106902724</guid><author>diamond_0</author><pubDate>Wed, 24 Jun 2020 16:46:57 +0800</pubDate><description><![CDATA[一、线程的同步、异步和手动锁
1、概念：
单线程与多线程
（1）单线程：one 每次只能做一件事情，要一件接着一件事情去做。
（2）多线程（并发）：&gt;=two 会发生多个线程抢占资源的现象，只有当抢占到资源之后，才会去执行。
在多线程的前提下，为了防止资源的冲突问题，提出了同步与异步的概念。
同步与异步
（1）同步：就像是一群人排队上公交车，一次只能上一个人，前面人上了之后后面的人才能接着上去（一件事情做完了之后才能去做另外一件事情）
（2）异步：就像是一群人上卡车，可以从卡车的周围同时上去（很多事情]]></description><category></category></item><item><title><![CDATA[Java中关于XML的创建与解析]]></title><link>https://blog.youkuaiyun.com/diamond_0/article/details/106912426</link><guid>https://blog.youkuaiyun.com/diamond_0/article/details/106912426</guid><author>diamond_0</author><pubDate>Tue, 23 Jun 2020 00:42:44 +0800</pubDate><description><![CDATA[一、什么是XML？
定义：
可扩展的标记语言，是独立于硬件和软件的一种信息传输工具，一般用于web应用程序中。
使用场景：
框架的配置文件（*.xml）
以前，前端与后端之间的数据交互使用的就是XML，由于其的不便利性，如今已改为使用JSON（传输工具）。
二、XML文件中的内容说明

注意：
1、第一行是XML的指令。
2、元素的名字可以自定义，根元素只能有一个，根元素中可以有多个子元素。
三、解析XML文件
目的：为了获取具体的name、job内容。
此时需要用到第三方jar包（dom4j.jar）：
]]></description><category></category></item><item><title><![CDATA[Java中的线程（上）——概述、实现、生命周期、常用的方法、优先级]]></title><link>https://blog.youkuaiyun.com/diamond_0/article/details/106862887</link><guid>https://blog.youkuaiyun.com/diamond_0/article/details/106862887</guid><author>diamond_0</author><pubDate>Mon, 22 Jun 2020 14:58:42 +0800</pubDate><description><![CDATA[一、线程概述
在现实生活中，万物可以同时进行多项活动，比如说，人，可以一边学习，一边听音乐，一边呼吸，一边进行血液循环。
在Java世界中，可以把每一项活动理解为一个线程，而在一个时间段内，同时进行多项活动的行为就可以理解为线程并发。Java语言提供了并发机制，程序员可以在程序中执行多个线程，每一个线程完成一个功能，并与其它线程并发执行，这种机制被称为多线程。
Java中的多线程在不同操作系统中的运行方式存在差异，在此说明多线程在Windows操作系统下的运行模式。
1、程序
指令+数据的byte序列，比如]]></description><category></category></item></channel></rss>