<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[六月Bing的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/wang9820</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; wang9820]]></copyright><item><title><![CDATA[SpringBoot整合SpringSecurity]]></title><link>https://blog.youkuaiyun.com/wang9820/article/details/122365751</link><guid>https://blog.youkuaiyun.com/wang9820/article/details/122365751</guid><author>wang9820</author><pubDate>Thu, 07 Apr 2022 05:30:50 +0800</pubDate><description><![CDATA[springboot整合springsecurity]]></description><category></category></item><item><title><![CDATA[mysql 根据父id 递归查询所有的子类]]></title><link>https://blog.youkuaiyun.com/wang9820/article/details/124004298</link><guid>https://blog.youkuaiyun.com/wang9820/article/details/124004298</guid><author>wang9820</author><pubDate>Thu, 07 Apr 2022 05:28:53 +0800</pubDate><description><![CDATA[方法一、mysql中建立递归查询的方法
-- DROP FUNCTION `getChildrenOrg` 
CREATE FUNCTION `getChildrenOrg`(uuid INT) RETURNS text CHARSET utf8
BEGIN
	DECLARE sTemp text;
	DECLARE sTempChd text;
 
	SET sTemp = '$';
	SET sTempChd =cast(uuid as CHAR);
WHILE sTempChd is not null]]></description><category></category></item><item><title><![CDATA[springBoot整合druid]]></title><link>https://blog.youkuaiyun.com/wang9820/article/details/122337652</link><guid>https://blog.youkuaiyun.com/wang9820/article/details/122337652</guid><author>wang9820</author><pubDate>Thu, 06 Jan 2022 10:16:55 +0800</pubDate><description><![CDATA[第一步：引入依赖
	&lt;dependency&gt;
        &lt;groupId&gt;mysql&lt;/groupId&gt;
        &lt;artifactId&gt;mysql-connector-java&lt;/artifactId&gt;
        &lt;scope&gt;runtime&lt;/scope&gt;
    &lt;/dependency&gt;
    &lt;dependency&gt;
        &lt;groupId&gt;com]]></description><category></category></item><item><title><![CDATA[springIOC和AOP]]></title><link>https://blog.youkuaiyun.com/wang9820/article/details/122252737</link><guid>https://blog.youkuaiyun.com/wang9820/article/details/122252737</guid><author>wang9820</author><pubDate>Fri, 31 Dec 2021 11:32:52 +0800</pubDate><description><![CDATA[概述
Spring 是最受欢迎的企业级 Java 应用程序开发框架，数以百万的来自世界各地的开发人员使用 Spring 框架来创建性能好、易于测试、可重用的代码。
Spring 框架是一个开源的 Java 平台，它最初是由 Rod Johnson 编写的，并且于 2003 年 6 月首次在 Apache 2.0 许可下发布。
Spring 是轻量级的框架，其基础版本只有 2 MB 左右的大小。
Spring 框架的核心特性是可以用于开发任何 Java 应用程序，但是在 Java EE 平台上构建 web 应]]></description><category></category></item><item><title><![CDATA[redis五大数据类型应用场景]]></title><link>https://blog.youkuaiyun.com/wang9820/article/details/122252562</link><guid>https://blog.youkuaiyun.com/wang9820/article/details/122252562</guid><author>wang9820</author><pubDate>Fri, 31 Dec 2021 11:21:58 +0800</pubDate><description><![CDATA[字符串string

set key value 实现单值缓存
setnx product:10001 true 实现分布式锁，返回1表示获取锁成功，返回0表示获取锁失败，这个值已经被设置过
incr acticle:readcount{文章id} 实现计数器，每执行一次加一
incrby orderId 1000 实现分布式系统全局序列号，一次性拿1000个序列号，在redis里面加一，批量生成序列号提升性能


因为string 类型是二进制安全的，可以用来存放图片，视频等内容，另外由于Redis的高性]]></description><category></category></item><item><title><![CDATA[vue使用Element-plus]]></title><link>https://blog.youkuaiyun.com/wang9820/article/details/122192718</link><guid>https://blog.youkuaiyun.com/wang9820/article/details/122192718</guid><author>wang9820</author><pubDate>Tue, 28 Dec 2021 15:12:10 +0800</pubDate><description><![CDATA[用法
1.下载资源文件
npm install element-plus --save

2.引入
完整引入
如果你对打包后的文件大小不是很在乎，那么使用完整导入会更方便。
main.ts
import { createApp } from 'vue'
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
import App from './App.vue'

const app = createApp(Ap]]></description><category></category></item><item><title><![CDATA[雪花算法生成主键id]]></title><link>https://blog.youkuaiyun.com/wang9820/article/details/122184847</link><guid>https://blog.youkuaiyun.com/wang9820/article/details/122184847</guid><author>wang9820</author><pubDate>Tue, 28 Dec 2021 09:18:26 +0800</pubDate><description><![CDATA[雪花算法
SnowFlake 算法，是 Twitter（一家美国社交网络及微博客服务的公司，致力于服务公众对话） 开源的分布式 id 生成算法。其核心思想就是：使用一个 64 bit 的 long 型的数字作为全局唯一 id。在分布式系统中的应用十分广泛，且ID 引入了时间戳，基本上保持自增的。

第一个部分，是 1 个 bit：0，这个是无意义的。
第二个部分是 41 个 bit：表示的是时间戳。
第三个部分是 5 个 bit：表示的是机房 id，10001。
第四个部分是 5 个 bit：表示的是机器 ]]></description><category></category></item><item><title><![CDATA[Mybatis联表查询：多对多（注解实现）]]></title><link>https://blog.youkuaiyun.com/wang9820/article/details/122115154</link><guid>https://blog.youkuaiyun.com/wang9820/article/details/122115154</guid><author>wang9820</author><pubDate>Thu, 23 Dec 2021 19:55:44 +0800</pubDate><description><![CDATA[1、数据库表结构

2、返回结果类封装
CommentWithTag .java
@Getter
@Setter
@ToString
@Builder
@AllArgsConstructor
@NoArgsConstructor
@JsonIgnoreProperties(value = {"handler"})
public class CommentWithTag implements Serializable {
    /**
     * 编号
     */
    @ApiModelPrope]]></description><category></category></item><item><title><![CDATA[Redis缓存工具类]]></title><link>https://blog.youkuaiyun.com/wang9820/article/details/122106943</link><guid>https://blog.youkuaiyun.com/wang9820/article/details/122106943</guid><author>wang9820</author><pubDate>Thu, 23 Dec 2021 19:44:41 +0800</pubDate><description><![CDATA[添加依赖
&lt;!--redis默认使用的Lettuce客户端--&gt;
        &lt;dependency&gt;
            &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
            &lt;artifactId&gt;spring-boot-starter-data-redis&lt;/artifactId&gt;
        &lt;/dependency&gt;
        &lt;!-]]></description><category></category></item><item><title><![CDATA[数据库索引]]></title><link>https://blog.youkuaiyun.com/wang9820/article/details/122106501</link><guid>https://blog.youkuaiyun.com/wang9820/article/details/122106501</guid><author>wang9820</author><pubDate>Thu, 23 Dec 2021 14:32:14 +0800</pubDate><description><![CDATA[1、索引的概念
索引就是为了提高数据的检索速度。数据库的索引类似于书籍的索引。在书籍中，索引允许用户不必翻阅完整个书就能迅速地找到所需要的信息。在数据库中，索引也允许数据库程序迅速地找到表中的数据，而不必扫描整个数据库。
2、索引的优点

1.创建唯一性索引，保证数据库表中每一行数据的唯一性
2.大大加快数据的检索速度，这也是创建索引的最主要的原因
3.减少磁盘IO（向字典一样可以直接定位）

3、索引的缺点

1.创建索引和维护索引要耗费时间，这种时间随着数据量的增加而增加
2.索引需要占用额外的物理空间]]></description><category></category></item><item><title><![CDATA[MySQL中的触发器]]></title><link>https://blog.youkuaiyun.com/wang9820/article/details/122106102</link><guid>https://blog.youkuaiyun.com/wang9820/article/details/122106102</guid><author>wang9820</author><pubDate>Thu, 23 Dec 2021 14:23:51 +0800</pubDate><description><![CDATA[什么是触发器？

触发器是与表有关的数据库对象，在满足定义条件时触发，并执行触发器中定义的语句集合。

触发器的特性：
1、有begin end体，begin end;之间的语句可以写的简单或者复杂
　　2、什么条件会触发：I、D、U
　　3、什么时候触发：在增删改前或者后
　　4、触发频率：针对每一行执行
　　5、触发器定义在表上，附着在表上。
也就是由事件来触发某个操作，事件包括INSERT语句，UPDATE语句和DELETE语句；可以协助应用在数据库端确保数据的完整性。
注意：cannot assoc]]></description><category></category></item><item><title><![CDATA[MySQL 中的行级锁、表级锁和页级锁]]></title><link>https://blog.youkuaiyun.com/wang9820/article/details/122105797</link><guid>https://blog.youkuaiyun.com/wang9820/article/details/122105797</guid><author>wang9820</author><pubDate>Thu, 23 Dec 2021 14:13:35 +0800</pubDate><description><![CDATA[在计算机科学中，锁是在执行多线程时用于强行限制资源访问的同步机制，即用于在并发控制中保证对互斥要求的满足。
在数据库的锁机制中，咱们介绍过在 DBMS 中，可以按照锁的粒度把数据库锁分为行级锁（InnoDB 引擎）、表级锁（MyISAM 引擎）和页级锁（BDB 引擎）。
行级锁
行级锁是 MySQL 中锁定粒度最细的一种锁，表示只针对当前操作的行进行加锁。行级锁能大大减少数据库操作的冲突，其加锁粒度最小，但加锁的开销也最大。行级锁分为共享锁和排他锁。
特点

开销大，加锁慢；会出现死锁；锁定粒度最小，发生锁]]></description><category></category></item><item><title><![CDATA[log4j2日志漏洞解决]]></title><link>https://blog.youkuaiyun.com/wang9820/article/details/122077943</link><guid>https://blog.youkuaiyun.com/wang9820/article/details/122077943</guid><author>wang9820</author><pubDate>Wed, 22 Dec 2021 18:52:05 +0800</pubDate><description><![CDATA[日志的作用
日志记录主要用来监视代码中变量的变化情况，周期性的记录到文件中供其他应用进行统计分析工作；跟踪代码运行时轨迹，作为日后审计的依据；担当集成开发环境中的调试器的作用，向文件或控制台打印代码的调试信息。因此，对于程序员来说，日志记录非常重要。
log4j2
Apache Log4j2是一个基于Java的日志记录工具。该工具重写了Log4j框架，并且引入了大量丰富的特性。该日志框架被大量用于业务系统开发，用来记录日志信息。大多数情况下，开发者可能会将用户输入导致的错误信息写入日志中。此次漏洞的出现，正]]></description><category></category></item><item><title><![CDATA[Spring环境、注解及配置文件]]></title><link>https://blog.youkuaiyun.com/wang9820/article/details/121074048</link><guid>https://blog.youkuaiyun.com/wang9820/article/details/121074048</guid><author>wang9820</author><pubDate>Mon, 01 Nov 2021 17:37:52 +0800</pubDate><description><![CDATA[Spring------Spring Framework
两大核心

主要核心 IOC（控制反转）和 AOP（面向切面编程）
Spring是一个轻量级的控制反转(IOC)和面向切面(AOP)的容器框架。

IOC(控制反转)
控制反转：创建对象的权力从程序员的手中交给了Spring
		硬编码，耦合度相当高
		UserService----&gt;new UserDaoImpl1
		ResultService----&gt;new UserDaoImpl1
		工厂：根据需要返回不同的实例对象
		Sp]]></description><category></category></item><item><title><![CDATA[Java反射----获取属性、获取方法]]></title><link>https://blog.youkuaiyun.com/wang9820/article/details/120010219</link><guid>https://blog.youkuaiyun.com/wang9820/article/details/120010219</guid><author>wang9820</author><pubDate>Thu, 09 Sep 2021 08:53:34 +0800</pubDate><description><![CDATA[获取属性

getField(fieldName)
根据字段名获取某个public的field（包括父类）
getDeclaredField(fieldName)
根据字段名获取当前类的某个field（不包括父类）
getFields()
获取所有 public 的 field属性
getDeclaredFields()
获取当前类的所有field (不包含父类)

Field 常见的方法

getName() : 获取属性名
getType() : 获取属性类型
getModifiers() : 返回修饰]]></description><category></category></item><item><title><![CDATA[Java网络编程----TCP和UDP]]></title><link>https://blog.youkuaiyun.com/wang9820/article/details/120142492</link><guid>https://blog.youkuaiyun.com/wang9820/article/details/120142492</guid><author>wang9820</author><pubDate>Mon, 06 Sep 2021 19:28:47 +0800</pubDate><description><![CDATA[TCP和UDP的完整区别
TCP的优点： 可靠，稳定 TCP的可靠体现在TCP在传递数据之前，会有三次握手来建立连接，而且在数据传递时，有确认、窗口、重传、拥塞控制机制，在数据传完后，还会断开连接用来节约系统资源。 TCP的缺点： 慢，效率低，占用系统资源高，易被攻击 TCP在传递数据之前，要先建连接，这会消耗时间，而且在数据传递时，确认机制、重传机制、拥塞控制机制等都会消耗大量的时间，而且要在每台设备上维护所有的传输连接，事实上，每个连接都会占用系统的CPU、内存等硬件资源。 而且，因为TCP有确认机制、]]></description><category></category></item><item><title><![CDATA[Java网络编程----邮件发送----简单邮件]]></title><link>https://blog.youkuaiyun.com/wang9820/article/details/120142201</link><guid>https://blog.youkuaiyun.com/wang9820/article/details/120142201</guid><author>wang9820</author><pubDate>Mon, 06 Sep 2021 19:07:43 +0800</pubDate><description><![CDATA[邮件发送
邮件 properties 配置

mail.smtp.host（接受邮件主机名（smtp.qq.com））
mail.smtp.port（接受邮件端口号（587））
mail.smtp.auth（是否需要用户认证（true））
mail.smtp.starttls.enable（是否启用TLS加密（true））

session 会话

Session.getDefaultInstance(props, Authentication)
创建Session 会话
session.setDebug(]]></description><category></category></item><item><title><![CDATA[Java - 网络编程----TCP]]></title><link>https://blog.youkuaiyun.com/wang9820/article/details/120132918</link><guid>https://blog.youkuaiyun.com/wang9820/article/details/120132918</guid><author>wang9820</author><pubDate>Mon, 06 Sep 2021 16:26:14 +0800</pubDate><description><![CDATA[ServerSocket服务器端

ServerSocket    ss   = new ServerSocket()
创建服务器 Socket端口
socket.bind(new InetSocketAddress(“localhost”, 8888), 50)
设置 服务器 IP 和端口， 配置监听 客户端数量
Socket  socket  =  ss.accpet()
阻塞式等待客户端的连接
给每一个客户端开启一个线程
socket.getInputStream()
获取输入流、接收客户端数据

1]]></description><category></category></item><item><title><![CDATA[Java集合框架----泛型]]></title><link>https://blog.youkuaiyun.com/wang9820/article/details/120131827</link><guid>https://blog.youkuaiyun.com/wang9820/article/details/120131827</guid><author>wang9820</author><pubDate>Mon, 06 Sep 2021 12:56:25 +0800</pubDate><description><![CDATA[泛型
泛型不允许直接 new
泛型特点：

泛型就是编写模板代码来适应任意类型
使用时不必对类型进行强制转换
通过编译器对类型进行检查
使用泛型的类型支持向上转型
泛型实现方式是擦拭法
泛型通常适用于集合中
泛型主要应用于集合中

泛型的定义

class Person&lt;T, E&gt;{}
支持类定义多个泛型
PS: 静态方法定义的泛型和类上的泛型没有任何关系

泛型的实例
public class Person&lt;T&gt;{

    public T field ;

    public]]></description><category></category></item><item><title><![CDATA[Java正则表达式----Pattern和Matcher]]></title><link>https://blog.youkuaiyun.com/wang9820/article/details/120110887</link><guid>https://blog.youkuaiyun.com/wang9820/article/details/120110887</guid><author>wang9820</author><pubDate>Sun, 05 Sep 2021 10:09:18 +0800</pubDate><description><![CDATA[Pattern

修饰符



CASE_INSENSITIVE
忽略大小写
MULTILINE
多行模式
DOTALL
dotAll 模式
UNICODE_CASE
unicode模式



compile(regex)
使用正则构建 Pattern对象
compile(regex, flags)
flags : 设置修饰符，多个修饰符用 | 分割
matcher(str)
返回Matcher对象

Matcher

matches()
返回是否匹配、适用于匹配一次的判断
find()
是否有找到匹配的元]]></description><category></category></item></channel></rss>