<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[ln82799的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/ln82799</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; ln82799]]></copyright><item><title><![CDATA[堆和堆排序详解]]></title><link>https://blog.youkuaiyun.com/ln82799/article/details/124641399</link><guid>https://blog.youkuaiyun.com/ln82799/article/details/124641399</guid><author>ln82799</author><pubDate>Sat, 07 May 2022 23:20:37 +0800</pubDate><description><![CDATA[手写堆与堆排序
Heap堆
堆是一棵完全二叉树，因此我们可以用数组来存储堆，而不是用链表存储。

从数组的下标0开始存储元素，nums[0]存储的是这棵二叉树的root节点，nums[1]存储root节点的左子树节点，nums[2]存储root节点的右子树节点。
那么针对元素 nums[x],它的左子树是nums[2x+1],右子树是nums[2x+2]。
class Heap{
    private int size=0;
    private int max_size;
    private in]]></description><category></category></item><item><title><![CDATA[聊一聊CMS垃圾回收器]]></title><link>https://blog.youkuaiyun.com/ln82799/article/details/122524608</link><guid>https://blog.youkuaiyun.com/ln82799/article/details/122524608</guid><author>ln82799</author><pubDate>Sun, 16 Jan 2022 16:26:19 +0800</pubDate><description><![CDATA[CMS垃圾回收器的名字是（Ccrrent Mark Sweep并发标记清除），是一款采用标记清理算法回收老年代的垃圾回收器！
并发性
cms与其他回收器的不同是cms只有在根节点枚举阶段的时候会stop the world，其他阶段可以和用户线程并发执行，极大的降低了用户线程的暂停时间。特别适用于互联网网站或者B/S系统的服务端上，这类重视服务响应速度的，给用户良好的体验的情况。
清理过程
cms回收垃圾分为四个步骤：


初始标记：根节点枚举，枚举全部的GC Roots对象。此阶段会stw，但是耗时极短。]]></description><category></category></item><item><title><![CDATA[SpringBoot简单集成WebSocket]]></title><link>https://blog.youkuaiyun.com/ln82799/article/details/122332031</link><guid>https://blog.youkuaiyun.com/ln82799/article/details/122332031</guid><author>ln82799</author><pubDate>Wed, 05 Jan 2022 22:30:52 +0800</pubDate><description><![CDATA[WebSocket概述
websocket协议是一个基于TCP/IP的应用层协议，用于实现服务端和客户端的全双工通信。

WebSocket与http的不同
我们平时用的http协议，是由客户端请求服务器的数据，然后服务器收到客户端的请求后响应数据给客户端。而websocket不仅客户端可以主动向服务端发送数据，服务端也能主动向客户端发送数据。
WebSocket应用场景
一些等待轮询查询的业务，比如其他人给你点赞，在你的客户端进行点赞通知。如果是http协议，你只能不停的轮询向服务端访问有没有新的点赞，如]]></description><category></category></item><item><title><![CDATA[Springboot集成腾讯云服务器redis]]></title><link>https://blog.youkuaiyun.com/ln82799/article/details/121096133</link><guid>https://blog.youkuaiyun.com/ln82799/article/details/121096133</guid><author>ln82799</author><pubDate>Tue, 02 Nov 2021 11:30:58 +0800</pubDate><description><![CDATA[1.在云服务器放行端口
redis默认端口是6379，我们需要在云服务器上进行端口放行。

点击添加规则

点击确认。
如果你的云服务器配置了宝塔，同样需要在宝塔里进行放行。如果没有的话，可以进入下一步。
进入宝塔后台管理页面放行端口

2.修改redis配置文件
进入redis.conf 配置文件，修改两个配置
 bind 127.0.0.1     改为      #bind 127.0.0.1

protected-mode yes  改成  protected-mode no


修改后输入 :wq]]></description><category></category></item><item><title><![CDATA[MySQL的四种隔离级别及实现原理]]></title><link>https://blog.youkuaiyun.com/ln82799/article/details/121025004</link><guid>https://blog.youkuaiyun.com/ln82799/article/details/121025004</guid><author>ln82799</author><pubDate>Thu, 28 Oct 2021 23:01:20 +0800</pubDate><description><![CDATA[Read Uncommitted（未提交读）
在RU级别下，所有的事务都可以看到其他未提交事务所修改的数据，也就是说，在这个隔离级别下会产生脏读和幻读的问题。该级别性能也并不比其他隔离级别好多少，因此很少实际使用。
Read Committed(提交读)
在RC级别下，一个事务开始执行后，只能看到其他已经提交的事务造成的修改， 不能看到未提交事务对数据的修改，解决了脏读的问题。但仍然没有解决不可重复读的问题。很多DBMS默认隔离级别都是RC。（MySQL除外）

实现原理: MVCC多版本并发控制

在每一]]></description><category></category></item><item><title><![CDATA[斐波那契数列的五种实现方式]]></title><link>https://blog.youkuaiyun.com/ln82799/article/details/120912861</link><guid>https://blog.youkuaiyun.com/ln82799/article/details/120912861</guid><author>ln82799</author><pubDate>Fri, 22 Oct 2021 21:20:43 +0800</pubDate><description><![CDATA[斐波那契数，通常用 F(n) 表示，形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始，后面的每一项数字都是前面两项数字的和。也就是：
F(0) = 0，F(1) = 1
F(n) = F(n - 1) + F(n - 2)，其中 n &gt; 1
给你 n ，请计算 F(n) 。
暴力递推
class Solution {
    public int fib(int n) {
        if(n==0)return 0;
        else if(n==1)return 1;
   ]]></description><category></category></item><item><title><![CDATA[狂神SpringBoot静态资源文件]]></title><link>https://blog.youkuaiyun.com/ln82799/article/details/120855879</link><guid>https://blog.youkuaiyun.com/ln82799/article/details/120855879</guid><author>ln82799</author><pubDate>Tue, 19 Oct 2021 21:59:37 +0800</pubDate><description><![CDATA[链接：https://pan.baidu.com/s/1URaFmN6rt2AzDOwVogWBNQ
提取码：bruc
好兄弟们点个赞！

]]></description><category></category></item><item><title><![CDATA[使用navicat连接腾讯云mysql数据库]]></title><link>https://blog.youkuaiyun.com/ln82799/article/details/120242730</link><guid>https://blog.youkuaiyun.com/ln82799/article/details/120242730</guid><author>ln82799</author><pubDate>Sat, 11 Sep 2021 20:58:30 +0800</pubDate><description><![CDATA[第一步：配置防火墙
连接服务器的mysql数据库，我们首先需要在服务器上放行3306端口（MySQL服务对应的端口），进入服务器管理页面防火墙，点击添加规则，放行3306端口。


如果你的服务器配置了宝塔页面，那么还需要在宝塔页面对3306端口进行放行（我就是只在腾讯防火墙放行，没在宝塔放行一直连不上）

第二步：开启MySQL的远程访问权限
我们在服务器上的mysql默认只能本地访问，需要开启访问权限。
在服务器命令行输入
mysql -uroot -p

然后输入密码登录mysql，输入以下命令。查询]]></description><category></category></item><item><title><![CDATA[Java内存区域模型]]></title><link>https://blog.youkuaiyun.com/ln82799/article/details/119254771</link><guid>https://blog.youkuaiyun.com/ln82799/article/details/119254771</guid><author>ln82799</author><pubDate>Fri, 30 Jul 2021 22:20:20 +0800</pubDate><description><![CDATA[JAVA内存区域模型


JVM虚拟机在执行java字节码文件时会把他所管理的内存划分为几个不同的区域。（在JDK1.8和1.8之前有些改变）


JDK1.8之前：

JDK1.8及之后：

其中线程共享的区域有：

堆内存
方法区
元空间（JDK1.8后出现）

线程私有的区域有：

虚拟机栈（java方法栈）
本地方法栈（native修饰的方法栈）
程序计数器

虚拟机栈
虚拟机栈是线程私有的，每个线程都有它自己的虚拟机栈。它的生命周期和线程相同。
虚拟机栈就像数据结构中的栈，栈里保存的元素是一个个的]]></description><category></category></item><item><title><![CDATA[java中的finalize()方法]]></title><link>https://blog.youkuaiyun.com/ln82799/article/details/118660337</link><guid>https://blog.youkuaiyun.com/ln82799/article/details/118660337</guid><author>ln82799</author><pubDate>Sun, 11 Jul 2021 21:43:42 +0800</pubDate><description><![CDATA[在java虚拟机的垃圾回收机制中：如果一个对象在可达性分析算法中被判定为不可达，那么垃圾回收器将会回收这个对象的内存。但在回收之前会执行一次对象的finalize()方法，如果在这个方法中对象被新的变量引用，那么垃圾回收器会放过这个对象
对象逃逸的演示过程：
class Solution {
    static Solution  t=null;
    public static void main(String[] args) {
        //new 出一个对象
        t= new ]]></description><category></category></item><item><title><![CDATA[分享单例模式的几种写法]]></title><link>https://blog.youkuaiyun.com/ln82799/article/details/118526430</link><guid>https://blog.youkuaiyun.com/ln82799/article/details/118526430</guid><author>ln82799</author><pubDate>Tue, 06 Jul 2021 18:05:08 +0800</pubDate><description><![CDATA[/*
    单例模式最基本的写法：饿汉式
    缺点:在load到内存时就会加载，无论是否使用这个类都会实例化
*/
class Bruce01{

    public static Bruce01 INSTANCE=new Bruce01();

    //私有构造器
    private Bruce01(){}
    //提供接口访问
    public static Bruce01 getInstance(){

        return INSTANCE;

    }

}
/.]]></description><category></category></item><item><title><![CDATA[雪花算法详解]]></title><link>https://blog.youkuaiyun.com/ln82799/article/details/117457393</link><guid>https://blog.youkuaiyun.com/ln82799/article/details/117457393</guid><author>ln82799</author><pubDate>Wed, 02 Jun 2021 00:00:11 +0800</pubDate><description><![CDATA[标题
使用#+空格表示标题，一个#是一级标题两个＃是二级标题，以此类推
二级标题
三级标题
四级标题
字体
粗体 使用两个*包围字会加粗
斜体  使用一个*包围字会斜体
斜体加粗 以此类推，三个*包围字是斜体加粗
废弃样式 用两个~包围字，字体会出现横线
引用

使用&gt;+空格可以引用

分割线


使用三个-或者三个*表示分割线，前者非全屏，后者全屏。
图片

使用!+[图片名]+(url)
可以使用本地路径，也可以使用网络路径
超链接
点击跳转到我的主页
使用[链接名]+(url)
可以使用本地路径]]></description><category></category></item><item><title><![CDATA[路径压缩加权并查集模板]]></title><link>https://blog.youkuaiyun.com/ln82799/article/details/117092853</link><guid>https://blog.youkuaiyun.com/ln82799/article/details/117092853</guid><author>ln82799</author><pubDate>Thu, 20 May 2021 22:12:59 +0800</pubDate><description><![CDATA[public class UF {
    private int[] id;//连通分量id
    private int[] sz;//分量权重
    private int count;//分量数量
    public UF(int n){
        id=new int[n];
        sz=new int[n];
        count=n;
        for (int i = 0; i &lt;n; i++) {
            id[i]=i;//每个分.]]></description><category></category></item><item><title><![CDATA[Mybatis学习笔记——基本配置]]></title><link>https://blog.youkuaiyun.com/ln82799/article/details/115605796</link><guid>https://blog.youkuaiyun.com/ln82799/article/details/115605796</guid><author>ln82799</author><pubDate>Sun, 11 Apr 2021 22:22:11 +0800</pubDate><description><![CDATA[什么是MyBatis
MyBatis是一款持久层框架，与JDBC相比，它省略很多获取连接设置参数和获取结果集的重复代码，提高了程序员使用数据库的效率。通过简单的XML配置便可以使用它。
什么是持久化
在我们使用计算机时，运行程序获得的数据都保存在内存中，而内存断电后数据便会消失，因此我们需要将储存在内存中的数据储存到磁盘中。这种将程序数据在持久状态和瞬时状态之间转换的机制便称为持久化
Mybatis配置过程
导入依赖文件
进入Maven官网选择对应版本的MyBatis jar包和JDBC jar包
以我自己]]></description><category></category></item><item><title><![CDATA[一秒解决java中没有out目录]]></title><link>https://blog.youkuaiyun.com/ln82799/article/details/115438022</link><guid>https://blog.youkuaiyun.com/ln82799/article/details/115438022</guid><author>ln82799</author><pubDate>Mon, 05 Apr 2021 09:30:08 +0800</pubDate><description><![CDATA[解决java中没有out目录
有时候在我们部署好的idea项目上，左侧的项目树上没有out目录。但是查看磁盘中的项目却发现有根目录。
解决方法

点击项目右上角的齿轮按钮!
选择show  Excluded Files


3.大功告成

...]]></description><category></category></item><item><title><![CDATA[蓝桥杯真题：合根植物（并查集）JAVA实现]]></title><link>https://blog.youkuaiyun.com/ln82799/article/details/115147148</link><guid>https://blog.youkuaiyun.com/ln82799/article/details/115147148</guid><author>ln82799</author><pubDate>Tue, 23 Mar 2021 22:25:51 +0800</pubDate><description><![CDATA[题目描述
ww 星球的一个种植园，被分成 m \times nm×n 个小格子（东西方向 mm 行，南北方向 nn 列）。每个格子里种了一株合根植物。
这种植物有个特点，它的根可能会沿着南北或东西方向伸展，从而与另一个格子的植物合成为一体。
如果我们告诉你哪些小格子间出现了连根现象，你能说出这个园中一共有多少株合根植物吗？
输入描述
第一行，两个整数 m,nm,n，用空格分开，表示格子的行数、列数（1 \leq m,n \leq 10001≤m,n≤1000）。
接下来一行，一个整数 kk (0 \leq ]]></description><category></category></item><item><title><![CDATA[在“D:/mydat“目录下有一个学生名单文件(文本)“student2018.txt“，里面记载了若干学生信息， 每个学生信息单独一行，每行信息共有五列，每列之间用逗号分开， 其每列含义按顺序是：学]]></title><link>https://blog.youkuaiyun.com/ln82799/article/details/110530613</link><guid>https://blog.youkuaiyun.com/ln82799/article/details/110530613</guid><author>ln82799</author><pubDate>Thu, 03 Dec 2020 14:26:35 +0800</pubDate><description><![CDATA[在"D:/mydat"目录下有一个学生名单文件(文本)“student2018.txt”，里面记载了若干学生信息，
每个学生信息单独一行，每行信息共有五列，每列之间用逗号分开，
其每列含义按顺序是：学号 姓名 出生日期 性别 专业，要求：将所有专业为"MATH"的学生专业改为"APMA",
并重新保存为"student2018-1.txt"文件。
（1）	201807012,张华,1999.07.23,M,CS
（2）	201807016,王海,1999.08.11,M,MATH
（3）	201807078]]></description><category></category></item><item><title><![CDATA[Java中Stream流基本用法]]></title><link>https://blog.youkuaiyun.com/ln82799/article/details/109789599</link><guid>https://blog.youkuaiyun.com/ln82799/article/details/109789599</guid><author>ln82799</author><pubDate>Thu, 19 Nov 2020 00:05:23 +0800</pubDate><description><![CDATA[JAVA8中，得益于Lambda表达式所带来的函数式编程，引入了一个新的Stream流概念，用于高效简洁的处理集合类库的对象。
获取Stream流
要想使用stream流，首先我们要获取Stream流对象
集合类获取Stream流
Collection接口中实现了stream()方法，用来获取集合类对象的stream流对象，因此我们在各种集合框架中可以使用stream()方法获取流对象 。
		List&lt;String&gt; list=new ArrayList&lt;&gt;();
        ]]></description><category></category></item><item><title><![CDATA[图解HTTP知识总结(思维导图)]]></title><link>https://blog.youkuaiyun.com/ln82799/article/details/109634160</link><guid>https://blog.youkuaiyun.com/ln82799/article/details/109634160</guid><author>ln82799</author><pubDate>Wed, 11 Nov 2020 23:57:35 +0800</pubDate><description><![CDATA[今天更新到第二章了!

]]></description><category></category></item><item><title><![CDATA[Java实现插入排序]]></title><link>https://blog.youkuaiyun.com/ln82799/article/details/109521899</link><guid>https://blog.youkuaiyun.com/ln82799/article/details/109521899</guid><author>ln82799</author><pubDate>Thu, 05 Nov 2020 22:34:05 +0800</pubDate><description><![CDATA[插入排序是一种非常直观的排序方法
插入排序的排序方法就像我们玩扑克牌一样，游戏开始，每人摸一张牌，之后继续摸牌，并将摸到的牌插入到对应的位置，直至摸牌结束。
排序原理
1.把整个数组分成两个部分，前面部分是已经排序好的，后面部分是还没有排序的。
2.找到未排序部分的第一张牌，插入到已经排序的部分牌中。
3.倒叙遍历已经排序的部分的牌，依次和待插入的牌进行比较。直至找到一张比插入的牌小的牌，然后将待插入牌插入此位置，其他牌向后移一位
4.重复n-1次，排序完成
代码
public class Insertio]]></description><category></category></item></channel></rss>