<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[waiter123321的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/waiter123321</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; waiter123321]]></copyright><item><title><![CDATA[LeetCode高频200题练习记录]]></title><link>https://blog.youkuaiyun.com/waiter123321/article/details/119858971</link><guid>https://blog.youkuaiyun.com/waiter123321/article/details/119858971</guid><author>waiter123321</author><pubDate>Sun, 22 Aug 2021 22:16:12 +0800</pubDate><description><![CDATA[LeetCode必刷200题练习记录
一、数据结构相关
1. 链表

1.相交链表

给你两个单链表的头节点 headA 和 headB ，请你找出并返回两个单链表相交的起始节点。
如果两个链表没有交点，返回 null 。

public class Solution {
    public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
        //处理特殊输入
        if(headA == null || ]]></description><category></category></item><item><title><![CDATA[springboot学习笔记（未完待续)]]></title><link>https://blog.youkuaiyun.com/waiter123321/article/details/118436387</link><guid>https://blog.youkuaiyun.com/waiter123321/article/details/118436387</guid><author>waiter123321</author><pubDate>Sat, 03 Jul 2021 10:05:33 +0800</pubDate><description><![CDATA[微服务阶段
javase: oop
mysql:持久化
html + css + js + jquery + 框架
javaweb
ssm
微服务：springboot springcloud
程序 = 数据结构 + 算法 ---- 程序员
程序 = 面向对象 + 框架 ----- 码农
第一个SpringBoot程序
官方：提供了一个快速配置的网站
直接使用idea创建一个springboot项目
banner.txt
                                          █]]></description><category></category></item><item><title><![CDATA[SpringMVC学习笔记]]></title><link>https://blog.youkuaiyun.com/waiter123321/article/details/117912907</link><guid>https://blog.youkuaiyun.com/waiter123321/article/details/117912907</guid><author>waiter123321</author><pubDate>Mon, 14 Jun 2021 21:11:25 +0800</pubDate><description><![CDATA[SpringMVC
ssm: mybatis spring springMVC
1.什么是MVC

MVC：模型（dao，service）、视图（jsp）、控制器（servlet）
是将业务逻辑、数据、显示分离的方法来组织代码
MCV主要作用是降低了视图与业务逻辑间的双向耦合
MVC不是一种设计模式，MVC是一种架构模式。当然不同的MVC存在差异

2. 回顾Servlet
新建一个Maven工程当做父工程，pom.xml
&lt;?xml version="1.0" encoding="UTF-8"?&g]]></description><category></category></item><item><title><![CDATA[Spring学习笔记]]></title><link>https://blog.youkuaiyun.com/waiter123321/article/details/117787142</link><guid>https://blog.youkuaiyun.com/waiter123321/article/details/117787142</guid><author>waiter123321</author><pubDate>Thu, 10 Jun 2021 17:24:11 +0800</pubDate><description><![CDATA[1. Spring
1.1 简介

Spring：给软件行业带来了春天
2002年  首次推出了Spring框架的雏形：interface框架
2004年  Spring框架以interface21为框架推出了正式的1.0版本
Spring理念：使现有的技术更加容易使用，本身是一个大杂烩，整合了现有的技术框架

&lt;!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc --&gt;
&lt;dependency&]]></description><category></category></item><item><title><![CDATA[Mybatis学习笔记]]></title><link>https://blog.youkuaiyun.com/waiter123321/article/details/117401315</link><guid>https://blog.youkuaiyun.com/waiter123321/article/details/117401315</guid><author>waiter123321</author><pubDate>Sun, 30 May 2021 17:58:22 +0800</pubDate><description><![CDATA[1.简介
1.1 什么是Mybatis
MyBatis 是一款优秀的持久层框架，它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO（Plain Old Java Objects，普通老式 Java 对象）为数据库中的记录。
如何获得Mybatis?


maven仓库


&lt;!-- https://mvnrepository.com/a]]></description><category></category></item><item><title><![CDATA[javaweb学习笔记]]></title><link>https://blog.youkuaiyun.com/waiter123321/article/details/116427014</link><guid>https://blog.youkuaiyun.com/waiter123321/article/details/116427014</guid><author>waiter123321</author><pubDate>Wed, 05 May 2021 16:43:32 +0800</pubDate><description><![CDATA[javaweb
1. 基本概念
1.1 前言
web开发：


web 网页的意思 www.bilibili.com


静态web

html css
提供给所有人看的数据 不会发生变化



动态web


每个人在不同的时间，不同的地点看到的信息各不相同


技术栈：servlet/jsp, ASP, PHP




在java中，动态web资源开发的技术统称为javaweb
1.2 web应用程序
web应用程序：可以提供浏览器访问的程序：


a.html b.html 多个web资源，这些web]]></description><category></category></item><item><title><![CDATA[图的相关算法总结]]></title><link>https://blog.youkuaiyun.com/waiter123321/article/details/116401454</link><guid>https://blog.youkuaiyun.com/waiter123321/article/details/116401454</guid><author>waiter123321</author><pubDate>Tue, 04 May 2021 16:04:38 +0800</pubDate><description><![CDATA[1.最小生成树

Prim算法：基于顶点的一种贪心思路。从一个顶点开始，并且标记该顶点已被访问visited = 1，然后在与之有边的且未标记过的顶点中，选择权最小的那个顶底并标记，记录下该边的权。重复上面操作，（若有N个顶点）直到有N-1条边时，遍历完成。

public class Prim {
    final static int N = 10000;
    public static void main(String[] args) {
        char[] data = new ch]]></description><category></category></item><item><title><![CDATA[2021-4-28华为勇敢星实习笔试记录]]></title><link>https://blog.youkuaiyun.com/waiter123321/article/details/116333493</link><guid>https://blog.youkuaiyun.com/waiter123321/article/details/116333493</guid><author>waiter123321</author><pubDate>Sat, 01 May 2021 21:31:47 +0800</pubDate><description><![CDATA[第一题：动态规划
Scanner sc = new Scanner(System.in);
        String[] s1 = sc.nextLine().split(" ");
        int m = Integer.parseInt(s1[0]);
        int n = Integer.parseInt(s1[1]);
        int[][] arr = new int[m][n];
        while (sc.hasNextLine()) {
        ]]></description><category></category></item><item><title><![CDATA[LeetCode377. 组合总和IV]]></title><link>https://blog.youkuaiyun.com/waiter123321/article/details/116088884</link><guid>https://blog.youkuaiyun.com/waiter123321/article/details/116088884</guid><author>waiter123321</author><pubDate>Sat, 24 Apr 2021 13:36:41 +0800</pubDate><description><![CDATA[class Solution {
    private List&lt;List&lt;Integer&gt;&gt; res = new ArrayList&lt;&gt;();
    private int count = 0;
    public int combinationSum4(int[] nums, int target) {
        Arrays.sort(nums);
        int[] visited = new int[target + 1];
        ]]></description><category></category></item><item><title><![CDATA[LeetCode91.解码方法]]></title><link>https://blog.youkuaiyun.com/waiter123321/article/details/115939851</link><guid>https://blog.youkuaiyun.com/waiter123321/article/details/115939851</guid><author>waiter123321</author><pubDate>Wed, 21 Apr 2021 11:03:10 +0800</pubDate><description><![CDATA[a || b &amp;&amp; c跟a || (b &amp;&amp; c)是一样的，因为&amp;&amp;的优先级高于||
class Solution {
    private Map&lt;Integer, Integer&gt; map = new HashMap&lt;&gt;();

    public int numDecodings(String s) {
        if(s.charAt(0) == '0')
            return 0;
        r]]></description><category></category></item><item><title><![CDATA[计算机网络学习笔记]]></title><link>https://blog.youkuaiyun.com/waiter123321/article/details/115771751</link><guid>https://blog.youkuaiyun.com/waiter123321/article/details/115771751</guid><author>waiter123321</author><pubDate>Fri, 16 Apr 2021 21:01:46 +0800</pubDate><description><![CDATA[参考视频：计算机网络微课堂（有字幕无背景音乐版）
1、概述
1.1 因特网概述
internet 与 Internet的区别
internet (互联网)是一个通用名词，它泛指由多个计算机网络互连而成的网络。在这些网络之间的通信协议可以是任意的。
Internet (因特网)则是一个专用名词，它指当前全球最大的、开方的、由众多网络相互连接而成的特定计算机网络，它采用TCP/IP协议作为通信的规则，其前身是美国的ARPANET。
1.2 三种交换方式
电路交换
优点：

通信时延小
有序传输
没有冲突
适用.]]></description><category></category></item><item><title><![CDATA[LeetCode 179.最大数]]></title><link>https://blog.youkuaiyun.com/waiter123321/article/details/115617990</link><guid>https://blog.youkuaiyun.com/waiter123321/article/details/115617990</guid><author>waiter123321</author><pubDate>Mon, 12 Apr 2021 12:41:48 +0800</pubDate><description><![CDATA[排序调用CompareTo
class Solution {
    public String largestNumber(int[] nums) {
        int len = nums.length;
        String[] tmp = new String[len];
        for(int i = 0; i&lt;len; i++){
            tmp[i] = String.valueOf(nums[i]);
        }
        Array]]></description><category></category></item><item><title><![CDATA[LeetCode 88.合并两个有序数组]]></title><link>https://blog.youkuaiyun.com/waiter123321/article/details/115440011</link><guid>https://blog.youkuaiyun.com/waiter123321/article/details/115440011</guid><author>waiter123321</author><pubDate>Mon, 05 Apr 2021 11:38:46 +0800</pubDate><description><![CDATA[思路1：插入排序
class Solution {
    public static void merge(int[] nums1, int m, int[] nums2, int n) {
        //插入排序 把较长的链表看做已排序的 另一个往里面插入
        for(int num : nums2){
            int i;
            for(i = m - 1;i &gt;= 0; i--){
                if(nums1[i] &g]]></description><category></category></item><item><title><![CDATA[Java并发编程第三阶段]]></title><link>https://blog.youkuaiyun.com/waiter123321/article/details/115379000</link><guid>https://blog.youkuaiyun.com/waiter123321/article/details/115379000</guid><author>waiter123321</author><pubDate>Thu, 01 Apr 2021 17:15:10 +0800</pubDate><description><![CDATA[参考视频：B站Java工程师 高并发与多线程网络编程 （完）
1、原子类型详解
1.1 AtomicInteger
1.2 AtomicBoolean
1.3 AtomicLong
以上原子类都是通过CAS算法(CompareAndSwap)来实现原子性，从而达到线程安全的目的。
同样的CAS的思路也可以用来构建一个显式锁(compareAndSet(0, 1))类似这样的。
1.4 AtomicReference
AtomicReference可以用来实现引用对象的原子更新。

public class.]]></description><category></category></item><item><title><![CDATA[LeetCode 1006.笨阶乘]]></title><link>https://blog.youkuaiyun.com/waiter123321/article/details/115367969</link><guid>https://blog.youkuaiyun.com/waiter123321/article/details/115367969</guid><author>waiter123321</author><pubDate>Thu, 01 Apr 2021 10:17:41 +0800</pubDate><description><![CDATA[思路：找规律 分组处理
class Solution {
    public int clumsy(int N) {
        if(N &lt;= 2)
            return N;
        if(N == 3)
            return 6;
        int sum = (N) * Math.max(N - 1, 1) / Math.max(N - 2, 1);
        N -= 3;
        while(N &gt; 0){
     ]]></description><category></category></item><item><title><![CDATA[LeetCode354.俄罗斯套娃信封问题]]></title><link>https://blog.youkuaiyun.com/waiter123321/article/details/115344997</link><guid>https://blog.youkuaiyun.com/waiter123321/article/details/115344997</guid><author>waiter123321</author><pubDate>Wed, 31 Mar 2021 10:44:57 +0800</pubDate><description><![CDATA[思路：最长递增子序列问题的二维化
class Solution {
    public int maxEnvelopes(int[][] envelopes) {
        Arrays.sort(envelopes, (o1, o2) -&gt; o1[0] == o2[0] ? o1[1] - o2[1] : o1[0] - o2[0]);
        int n = envelopes.length;//有多少个信封
        int[] dp = new int[n];//前i个元]]></description><category></category></item><item><title><![CDATA[LeetCode74.搜索二维矩阵]]></title><link>https://blog.youkuaiyun.com/waiter123321/article/details/115319721</link><guid>https://blog.youkuaiyun.com/waiter123321/article/details/115319721</guid><author>waiter123321</author><pubDate>Tue, 30 Mar 2021 10:41:17 +0800</pubDate><description><![CDATA[做过最简单的中等题，纪念一下
class Solution {
    public boolean searchMatrix(int[][] matrix, int target) {
        int rows = matrix.length;
        int cols = matrix[0].length;
        if(matrix[0][0] &gt; target) return false;
        for(int i = 0; i &lt; rows; i++)]]></description><category></category></item><item><title><![CDATA[LeetCode61.旋转链表]]></title><link>https://blog.youkuaiyun.com/waiter123321/article/details/115263879</link><guid>https://blog.youkuaiyun.com/waiter123321/article/details/115263879</guid><author>waiter123321</author><pubDate>Sat, 27 Mar 2021 13:42:23 +0800</pubDate><description><![CDATA[思路：把后（k%length)个节点接到头部
class Solution {
    public ListNode rotateRight(ListNode head, int k) {
        if (head == null || head.next == null || k == 0) return head;
        //辅助节点用来遍历长度
        ListNode help = head;
        int len = 1;
        while(help]]></description><category></category></item><item><title><![CDATA[LeetCode82. 删除排序链表中的重复元素 II]]></title><link>https://blog.youkuaiyun.com/waiter123321/article/details/115229452</link><guid>https://blog.youkuaiyun.com/waiter123321/article/details/115229452</guid><author>waiter123321</author><pubDate>Fri, 26 Mar 2021 10:10:57 +0800</pubDate><description><![CDATA[class Solution {
    public ListNode deleteDuplicates(ListNode head) {
        if(head == null || head.next == null)
            return head;
        ListNode next = head.next;
        if(head.val == next.val){

            while(next != null &amp;&amp; he]]></description><category></category></item><item><title><![CDATA[LeetCode 456.132模式]]></title><link>https://blog.youkuaiyun.com/waiter123321/article/details/115164699</link><guid>https://blog.youkuaiyun.com/waiter123321/article/details/115164699</guid><author>waiter123321</author><pubDate>Wed, 24 Mar 2021 10:30:40 +0800</pubDate><description><![CDATA[单调栈不熟练
class Solution {
    public boolean find132pattern(int[] nums) {
        int len = nums.length;
        int ak = Integer.MIN_VALUE;
        Deque&lt;Integer&gt; queue = new ArrayDeque&lt;&gt;();
        if(len &lt; 3) {
            return false;
   ]]></description><category></category></item></channel></rss>