<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Vivi的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/TomCat_And_Jerry</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; TomCat_And_Jerry]]></copyright><item><title><![CDATA[Vue3优雅的使用事件总线]]></title><link>https://blog.youkuaiyun.com/TomCat_And_Jerry/article/details/119878603</link><guid>https://blog.youkuaiyun.com/TomCat_And_Jerry/article/details/119878603</guid><author>TomCat_And_Jerry</author><pubDate>Mon, 23 Aug 2021 21:58:11 +0800</pubDate><description><![CDATA[要在Vue 3 Composition API中使用事件总线，
请在main.js中使用Vue 3的新provideAPI，然后在任何组件中使用inject


安装mitt

yarn add mitt


Provide

// main.js
import { createApp } from "vue";
import App from "./App.vue";

import mitt from 'mitt';                  // Import mitt
const emit.]]></description><category></category></item><item><title><![CDATA[Shiro权限管理]]></title><link>https://blog.youkuaiyun.com/TomCat_And_Jerry/article/details/115741099</link><guid>https://blog.youkuaiyun.com/TomCat_And_Jerry/article/details/115741099</guid><author>TomCat_And_Jerry</author><pubDate>Sat, 17 Apr 2021 14:50:22 +0800</pubDate><description><![CDATA[Shiro权限管理前言Shiro中的认证Shiro 入门
前言
什么是权限管理?
基本上涉及到用户参与的系统都要进行权限管理，权限管理属于系统安全的范畴，
权限管理实现对用户访问系统的控制，按照安全规则或者安全策略控制用户可以访问
而且只能访问自己被授权的资源。权限管理包括用户身份认证和授权两部分，简称认证授权。
对于需要访问控制的资源用户首先经过身份认证，认证通过后用户具有该资源的访问权限方可访问。

什么是身份认证？
身份认证，就是判断一个用户是否为合法用户的处理过程。
最常用的简单身份认证方式是系统通]]></description><category></category></item><item><title><![CDATA[SpringDataJPA]]></title><link>https://blog.youkuaiyun.com/TomCat_And_Jerry/article/details/115609175</link><guid>https://blog.youkuaiyun.com/TomCat_And_Jerry/article/details/115609175</guid><author>TomCat_And_Jerry</author><pubDate>Wed, 14 Apr 2021 20:50:35 +0800</pubDate><description><![CDATA[SpringDataJPA

]]></description><category></category></item><item><title><![CDATA[Docker新一代容器技术]]></title><link>https://blog.youkuaiyun.com/TomCat_And_Jerry/article/details/115560832</link><guid>https://blog.youkuaiyun.com/TomCat_And_Jerry/article/details/115560832</guid><author>TomCat_And_Jerry</author><pubDate>Sat, 10 Apr 2021 19:58:02 +0800</pubDate><description><![CDATA[Docker新一代容器技术Docker的核心架构安装 Docker
Docker的定位是一个应用容器平台。

Docker和传统虚拟机的区别

Docker的核心架构


镜像：一个镜像代表一个应用环境,他是个只读的文件 ，如mysq|镜像 tomcat镜像,nginx镜像等
容器: 镜像每次运行之后就是产生一个容器，就是正在运行的镜像,特点就是可读可写
仓库: 用来存放镜像的位置,类似于maven仓库,也是镜像下载和上传的位置
dockerFile: docker生成镜像配置文件用来书写自定义镜像的一些配]]></description><category></category></item><item><title><![CDATA[初探JVM]]></title><link>https://blog.youkuaiyun.com/TomCat_And_Jerry/article/details/115272656</link><guid>https://blog.youkuaiyun.com/TomCat_And_Jerry/article/details/115272656</guid><author>TomCat_And_Jerry</author><pubDate>Wed, 31 Mar 2021 17:23:13 +0800</pubDate><description><![CDATA[JVM内存结构
什么是 JVM?
JVM (Java Virtual Machine) - Java 二进制字节码的运行环境
JVM 有什么好处？

一次编写，到处运行
自动内存管理，垃圾回收
数组下标越界检查
多态（虚方法表）

jvm jre jdk javase javaee 有什么关系

学习 jvm 有什么用？

面试
理解底层的实现原理
中高级程序员的必备技能

学习路线

内存结构
程序计数器：记住下一条 jvm 指令的执行地址
特点：

是线程私有的
不会存在内存溢出的问题

栈: 线程运行]]></description><category></category></item><item><title><![CDATA[数据结构之线性结构]]></title><link>https://blog.youkuaiyun.com/TomCat_And_Jerry/article/details/115221481</link><guid>https://blog.youkuaiyun.com/TomCat_And_Jerry/article/details/115221481</guid><author>TomCat_And_Jerry</author><pubDate>Fri, 26 Mar 2021 18:24:54 +0800</pubDate><description><![CDATA[线性结构数组
数组
import java.util.Arrays;

public class ArrayObj {

	private int[] elements;

	public ArrayObj() {
		this.elements = new int[0];
	}

	public int size() {
		return elements.length;
	}

	public void add(int element) {
		int[] arr = new int[this.size]]></description><category></category></item><item><title><![CDATA[nodejs的文件操作]]></title><link>https://blog.youkuaiyun.com/TomCat_And_Jerry/article/details/114846861</link><guid>https://blog.youkuaiyun.com/TomCat_And_Jerry/article/details/114846861</guid><author>TomCat_And_Jerry</author><pubDate>Mon, 15 Mar 2021 21:49:11 +0800</pubDate><description><![CDATA[nodejs的文件操作判断是文件还是目录创建目录创建写入文件创建追加文件读取文件读取目录下的文件或目录文件重命名删除目录或文件

判断是文件还是目录
let fs = require("fs");

// 判断是文件还是目录
fs.stat("./app.js", (_, data) =&gt; {
    console.log(`是文件：${data.isFile()}`);
    console.log(`是目录：${data.isDirectory()}`);
})

创建目录
// 创建目录
f]]></description><category></category></item><item><title><![CDATA[SpringBoot 的 war 包部署]]></title><link>https://blog.youkuaiyun.com/TomCat_And_Jerry/article/details/114214699</link><guid>https://blog.youkuaiyun.com/TomCat_And_Jerry/article/details/114214699</guid><author>TomCat_And_Jerry</author><pubDate>Sun, 28 Feb 2021 12:08:15 +0800</pubDate><description><![CDATA[SpringBoot 的 war 包部署pom.xml项目入口类打包部署等效方式部署

pom.xml

&lt;!--打包方式 war--&gt;
&lt;packaging&gt;war&lt;/packaging&gt;
&lt;!--            排除 jsp 的依赖--&gt;
&lt;dependency&gt;
	&lt;groupId&gt;org.apache.tomcat.embed&lt;/groupId&gt;
	&lt;artifactId&gt;tomcat-embed]]></description><category></category></item><item><title><![CDATA[快速搭建SpringBoot开发环境(整合mybatis)]]></title><link>https://blog.youkuaiyun.com/TomCat_And_Jerry/article/details/114167777</link><guid>https://blog.youkuaiyun.com/TomCat_And_Jerry/article/details/114167777</guid><author>TomCat_And_Jerry</author><pubDate>Sat, 27 Feb 2021 12:07:35 +0800</pubDate><description><![CDATA[快速搭建SpringBoot开发环境整合mybatis项目目录结构图pom.xmlapplication.properties入口文件domainmapperserviceuserMapper.xmlspringBoot 测试类


项目目录结构图



pom.xml

&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="]]></description><category></category></item><item><title><![CDATA[SpringBoot 文件上传与下载]]></title><link>https://blog.youkuaiyun.com/TomCat_And_Jerry/article/details/114142098</link><guid>https://blog.youkuaiyun.com/TomCat_And_Jerry/article/details/114142098</guid><author>TomCat_And_Jerry</author><pubDate>Fri, 26 Feb 2021 20:55:07 +0800</pubDate><description><![CDATA[SpringBoot 文件上传与下载


]]></description><category></category></item><item><title><![CDATA[jwt 的工具类]]></title><link>https://blog.youkuaiyun.com/TomCat_And_Jerry/article/details/114128322</link><guid>https://blog.youkuaiyun.com/TomCat_And_Jerry/article/details/114128322</guid><author>TomCat_And_Jerry</author><pubDate>Fri, 26 Feb 2021 14:25:20 +0800</pubDate><description><![CDATA[jwt 的工具类mavenJWTUtils使用

maven

&lt;dependency&gt;
    &lt;groupId&gt;com.auth0&lt;/groupId&gt;
    &lt;artifactId&gt;java-jwt&lt;/artifactId&gt;
    &lt;version&gt;3.10.3&lt;/version&gt;
&lt;/dependency&gt;


JWTUtils

import java.util.Calendar;
import ja]]></description><category></category></item><item><title><![CDATA[Vue的一些事]]></title><link>https://blog.youkuaiyun.com/TomCat_And_Jerry/article/details/113406011</link><guid>https://blog.youkuaiyun.com/TomCat_And_Jerry/article/details/113406011</guid><author>TomCat_And_Jerry</author><pubDate>Fri, 19 Feb 2021 17:12:53 +0800</pubDate><description><![CDATA[Vue的一些事vue 的生命周期函数

# vue 组件中的 data 为什么是一个函数？ 而不是一个简单对象？


// 是这个
data() {
	return {name: "zs"}
}

// 而不是下面的这个？
data: {name: "zs"}


# 因为 vue 中的组件是可以复用的、如果 data 是一个简单对象、那么**所有的组件**都会操作同一个
# 简单对象、会引起数据更新的错乱

# 如果 data 返回的是一个函数、函数每次调用都会返回一个新的对象实例、这样、每个组件都更新各]]></description><category></category></item><item><title><![CDATA[Git 的一些事]]></title><link>https://blog.youkuaiyun.com/TomCat_And_Jerry/article/details/113860083</link><guid>https://blog.youkuaiyun.com/TomCat_And_Jerry/article/details/113860083</guid><author>TomCat_And_Jerry</author><pubDate>Fri, 19 Feb 2021 17:06:15 +0800</pubDate><description><![CDATA[Git 的一些事git 的工作流程git 的常用命令将文件添加到忽略列表git 远程仓库的操作git 分支的操作git 标签的操作在 idea 中使用 Git

git 的工作流程

- 远程仓库 -&gt; pull -&gt; 工作区  /（远程仓库 -&gt; clone -&gt; 本地仓库）
- 工作区 -&gt; add -&gt; 缓存区 -&gt; commit -&gt; 本地仓库 -&gt; push -&gt; 远程仓库

- 版本库（本地仓库）：.git 文件夹 版本库中存储了配置信]]></description><category></category></item><item><title><![CDATA[Java 的 Stream 流]]></title><link>https://blog.youkuaiyun.com/TomCat_And_Jerry/article/details/113786312</link><guid>https://blog.youkuaiyun.com/TomCat_And_Jerry/article/details/113786312</guid><author>TomCat_And_Jerry</author><pubDate>Sun, 14 Feb 2021 11:30:02 +0800</pubDate><description><![CDATA[Java 的 Stream 流引出 Stream 流传统方式操作集合数据Stream 流操作集合数据Stream 流的常用 API获取 Stream 流的两种方式Stream 流的注意事项forEach()count()filter()limit()skip()

引出 Stream 流

传统方式操作集合数据

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class Hel]]></description><category></category></item><item><title><![CDATA[Java常用的函数式接口和方法引用]]></title><link>https://blog.youkuaiyun.com/TomCat_And_Jerry/article/details/113785007</link><guid>https://blog.youkuaiyun.com/TomCat_And_Jerry/article/details/113785007</guid><author>TomCat_And_Jerry</author><pubDate>Wed, 10 Feb 2021 21:46:12 +0800</pubDate><description><![CDATA[Java 的 Stream 流常用的函数式接口ConsumerSupplierFunction
常用的函数式接口

Consumer

@FunctionalInterface
public interface Consumer&lt;T&gt; {

    void accept(T t);
    
    default Consumer&lt;T&gt; andThen(Consumer&lt;? super T&gt; after) {
        Objects.requireNonNul]]></description><category></category></item><item><title><![CDATA[JS 面向对象]]></title><link>https://blog.youkuaiyun.com/TomCat_And_Jerry/article/details/113738895</link><guid>https://blog.youkuaiyun.com/TomCat_And_Jerry/article/details/113738895</guid><author>TomCat_And_Jerry</author><pubDate>Wed, 10 Feb 2021 17:37:02 +0800</pubDate><description><![CDATA[JS 面向对象ES5 创建对象的方式构造函数和原型原型对象的应用ES5的继承（模拟继承）ES5 中新增的方法

ES5 创建对象的方式

// 构造函数创建对象
function User(name, age) {
    this.name = name;
    this.age = age;
    this.say = function() {
        return "name: " + this.name + "age: " + this.age;
    }
}

function sa]]></description><category></category></item><item><title><![CDATA[vim 的一些事]]></title><link>https://blog.youkuaiyun.com/TomCat_And_Jerry/article/details/113781430</link><guid>https://blog.youkuaiyun.com/TomCat_And_Jerry/article/details/113781430</guid><author>TomCat_And_Jerry</author><pubDate>Wed, 10 Feb 2021 17:29:56 +0800</pubDate><description><![CDATA[vim 的一些事末行模式下的一些命令命令模式下的一些命令行数移动屏幕移动段落移动括号切换标记命令选中命令删除和撤销复制和粘贴替换命令缩排和重复执行查找命令全局替换可视区域替换插入命令


# vim 1.py +16
- 打开文件光标定位到第16行

# vim 1.py +
- 打开文件光标定位到最后

# vim 的三种工作模式
- 命令模式：vim 打开文件进入的模式就是命令模式 i 进入编辑模式 ：进入末行模式
- 末行模式：执行保存退出的操作 wq（x）  esc 从末行模式回到命令模式
- 编辑]]></description><category></category></item><item><title><![CDATA[Linux 的 一些事]]></title><link>https://blog.youkuaiyun.com/TomCat_And_Jerry/article/details/113772890</link><guid>https://blog.youkuaiyun.com/TomCat_And_Jerry/article/details/113772890</guid><author>TomCat_And_Jerry</author><pubDate>Wed, 10 Feb 2021 12:21:19 +0800</pubDate><description><![CDATA[Linux 的 一些事



]]></description><category></category></item><item><title><![CDATA[Centos 7 固定 IP 地址]]></title><link>https://blog.youkuaiyun.com/TomCat_And_Jerry/article/details/113776229</link><guid>https://blog.youkuaiyun.com/TomCat_And_Jerry/article/details/113776229</guid><author>TomCat_And_Jerry</author><pubDate>Tue, 09 Feb 2021 21:54:14 +0800</pubDate><description><![CDATA[Centos 7 固定 IP 地址

原文链接

]]></description><category></category></item><item><title><![CDATA[Java中的反射和注解]]></title><link>https://blog.youkuaiyun.com/TomCat_And_Jerry/article/details/113663621</link><guid>https://blog.youkuaiyun.com/TomCat_And_Jerry/article/details/113663621</guid><author>TomCat_And_Jerry</author><pubDate>Thu, 04 Feb 2021 21:55:33 +0800</pubDate><description><![CDATA[Java中的反射和注解获取一个类 Class 对象的三种方式反射类的构造器反射类的字段反射类的方法反射类上的注解反射方法上的注解反射机制操作数组注解Java中的三种内置注解

获取一个类 Class 对象的三种方式

class User {
	private Integer id;
	private String username;
	private String password;
}

public static void main(String[] args) throws ClassNotFoun]]></description><category></category></item></channel></rss>