<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[JISOOLUO的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/JISOOLUO</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; JISOOLUO]]></copyright><item><title><![CDATA[虚拟机字节码执行引擎]]></title><link>https://blog.youkuaiyun.com/JISOOLUO/article/details/115065145</link><guid>https://blog.youkuaiyun.com/JISOOLUO/article/details/115065145</guid><author>JISOOLUO</author><pubDate>Mon, 22 Mar 2021 10:13:33 +0800</pubDate><description><![CDATA[五、虚拟机字节码执行引擎
1、概述

执行引擎是Java虚拟机最核心的组成部分之一
从外观上看起来，所有的Java虚拟机的执行引擎都是一致的：输入的是字节码文件，处理过程是字节码解析的等效过程，输出的是执行结果。

2、运行是栈帧结构

栈帧是用于支持虚拟机进行方法调用和方法执行的数据结构，是虚拟机运行时数据区中的虚拟机栈的栈元素。
每一个栈帧都包括了局部变量表、操作数栈、动态链接、方法返回地址和一些额外的富家信息。
当前栈帧所关联的方法称为当前方法

2.1、局部变量表


是一组变量值存储空间，用于存放]]></description><category></category></item><item><title><![CDATA[虚拟机类加载机制]]></title><link>https://blog.youkuaiyun.com/JISOOLUO/article/details/115065100</link><guid>https://blog.youkuaiyun.com/JISOOLUO/article/details/115065100</guid><author>JISOOLUO</author><pubDate>Mon, 22 Mar 2021 10:05:16 +0800</pubDate><description><![CDATA[四、虚拟机类加载机制
1、概述

虚拟机把描述类的数据从Class文件加载到内存，并对数据进行校验、转换解析和初始化，最终形成可以被虚拟机直接使用的Java类型，这就是虚拟机的类加载

2、类加载的时机
2.1、生命周期


类从被加载到虚拟机内存中开始，到卸载出内存为止，它的整个生命周期包括了：

加载
验证
准备
解析
初始化
使用
卸载



加载、验证、准备、初始化和卸载顺序是确定的，但是解析阶段则不一定。


类的初始化（没有初始化）

有道new、getstatic、putstatic或invo]]></description><category></category></item><item><title><![CDATA[类文件结构]]></title><link>https://blog.youkuaiyun.com/JISOOLUO/article/details/115064947</link><guid>https://blog.youkuaiyun.com/JISOOLUO/article/details/115064947</guid><author>JISOOLUO</author><pubDate>Mon, 22 Mar 2021 10:04:35 +0800</pubDate><description><![CDATA[三、类文件结构
1、概述

我们编写的程序编译成二进制本地机器码已不再是唯一选择，越来越多的程序语言选择了与操作系统和机器指令无关的、平台中立的格式作为程序编译后的存储格式。

2、无关性的基石

各种不同平台的虚拟机与所有平台都统一使用的程序存储格式----字节码是构成平台无关性的基石。

3、Class类文件的结构

Class文件是以一组8位字节为基础单位的二进制流，各个数据项目严格按照顺序紧凑地排列在Class文件之中。
无符号数属于基本的数据类型，以u1、u2、u4、u8来分别代表一个字节，2个字]]></description><category></category></item><item><title><![CDATA[垃圾收集器与内存分配策略]]></title><link>https://blog.youkuaiyun.com/JISOOLUO/article/details/115003036</link><guid>https://blog.youkuaiyun.com/JISOOLUO/article/details/115003036</guid><author>JISOOLUO</author><pubDate>Fri, 19 Mar 2021 11:47:14 +0800</pubDate><description><![CDATA[二、垃圾收集器与内存分配策略
1、对象已死？
1.1、引用计数法

使用

给对象添加一个引用计数器，每当有一个地方引用它时，计数器值就加1，当引用失效时，计数器值就减一；任何时刻计数器都为0 的对象就是不可能被使用的。


缺点

很难解决对象之间的相互循环引用的问题
因为对象相互引用导致他们的引用计数都不为0，例如：objA.instance = objB 及 objB.instance = objA,于是引用计数算法无法通知GC收集器回收他们



1.2、根搜索算法


思路

通过一系列名为GC ]]></description><category></category></item><item><title><![CDATA[Java 内存区域与内存溢出异常]]></title><link>https://blog.youkuaiyun.com/JISOOLUO/article/details/114979837</link><guid>https://blog.youkuaiyun.com/JISOOLUO/article/details/114979837</guid><author>JISOOLUO</author><pubDate>Thu, 18 Mar 2021 15:09:24 +0800</pubDate><description><![CDATA[一、Java内存区域与内存溢出异常
1、运行是区域
1.1、程序计数器

特点

线程私有
没有规定OutOfMemoryError情况的区域
执行Native方法，计数器值为空


作用

当前线程所执行的字节码的行号指示器，通过改变计数器的值来选取下一条需要执行的字节码指令，分支、循环、跳转、异常处理、线程恢复等
帮助线程切换之后能恢复到正确的执行位置。



1.2、Java虚拟机栈

特点

线程私有，生命周期与线程相同
方法执行时产生的内存模型：即是一个创建一个栈帧，存储局部变量表、操作栈、动态链]]></description><category></category></item><item><title><![CDATA[Java 如何获取当前时间的前一段时间、以及给定一段时间的时间集合]]></title><link>https://blog.youkuaiyun.com/JISOOLUO/article/details/107543399</link><guid>https://blog.youkuaiyun.com/JISOOLUO/article/details/107543399</guid><author>JISOOLUO</author><pubDate>Thu, 23 Jul 2020 17:46:17 +0800</pubDate><description><![CDATA[1、相关日期处理
public class DateUtil {
	public static SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
	private static SimpleDateFormat sdf2=new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss");
	public static SimpleDateFormat sdf3=new SimpleDateFormat("]]></description><category></category></item><item><title><![CDATA[分布式之服务注册 -- Zookeeper]]></title><link>https://blog.youkuaiyun.com/JISOOLUO/article/details/105754390</link><guid>https://blog.youkuaiyun.com/JISOOLUO/article/details/105754390</guid><author>JISOOLUO</author><pubDate>Sun, 26 Apr 2020 00:11:48 +0800</pubDate><description><![CDATA[1、Zookeeper配置文件

tickTime：Client-Server通信时间
说明：Zookeeper服务器之间或客户端与服务器之间维持心跳的时间间隔，也就是每个tickTime时间就会发送一个心跳。tickTime以毫秒为单位、
initLimit：Leader-Follower初始通信时限
说明：集群中的follower服务器与leader服务器之间初始连接时能容忍的最多心跳数（ti...]]></description><category></category></item><item><title><![CDATA[Spring in Action -- AOP篇]]></title><link>https://blog.youkuaiyun.com/JISOOLUO/article/details/105707380</link><guid>https://blog.youkuaiyun.com/JISOOLUO/article/details/105707380</guid><author>JISOOLUO</author><pubDate>Sat, 25 Apr 2020 16:53:16 +0800</pubDate><description><![CDATA[1、什么是面向切面编程？

概念：通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术。利用AOP可以对业务逻辑的各个部分进行隔离，从而使得业务逻辑各部分之间的耦合度降低，提高程序的可重用性，同时提高了开发的效率。

2、AOP术语
2.1、通知（Advice）

在AOP术语中，切面的工作被称为通知、
Spring切面可以应用5中类型的通知

前置通知（Before）：在目标方法被调...]]></description><category></category></item><item><title><![CDATA[在SpringBoot中使用Shiro做权限以及认证(示例代码，数据库设计等)]]></title><link>https://blog.youkuaiyun.com/JISOOLUO/article/details/105633638</link><guid>https://blog.youkuaiyun.com/JISOOLUO/article/details/105633638</guid><author>JISOOLUO</author><pubDate>Mon, 20 Apr 2020 19:05:07 +0800</pubDate><description><![CDATA[1、环境

SpringBoot 2.2.4.RELEASE

		&lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
		&lt;artifactId&gt;spring-boot-starter-parent&lt;/artifactId&gt;
		&lt;version&gt;2.2.4.RELEASE&lt;/version&g...]]></description><category></category></item><item><title><![CDATA[SpringBoot 中怎么来处理前端传来参数校验异常]]></title><link>https://blog.youkuaiyun.com/JISOOLUO/article/details/105584217</link><guid>https://blog.youkuaiyun.com/JISOOLUO/article/details/105584217</guid><author>JISOOLUO</author><pubDate>Fri, 17 Apr 2020 17:44:31 +0800</pubDate><description><![CDATA[1、前提

导入依赖

	 &lt;dependency&gt;
            &lt;groupId&gt;javax.validation&lt;/groupId&gt;
            &lt;artifactId&gt;validation-api&lt;/artifactId&gt;
            &lt;version&gt;2.0.1.Final&lt;/...]]></description><category></category></item><item><title><![CDATA[怎么让mybatis plus 帮我们设置分页，以及抽取注解]]></title><link>https://blog.youkuaiyun.com/JISOOLUO/article/details/105578210</link><guid>https://blog.youkuaiyun.com/JISOOLUO/article/details/105578210</guid><author>JISOOLUO</author><pubDate>Fri, 17 Apr 2020 13:09:21 +0800</pubDate><description><![CDATA[1、编写一个配置类

@Configuration标明是配置类，spring会扫描加载
@EnableTransactionManagement在这里表明开启事务注解
@MapperScan("")需要扫描的mapper也在这里表明
这样的话在主启动类里面就不用表明这些注解了

@Configuration
@EnableTransactionManagement // 开启事务注解
@Mappe...]]></description><category></category></item><item><title><![CDATA[SpringCloud分布式中怎么使用open-feign来相互调用微服务(前提是服务都要注册到注册中心【zookeeper,或者nocas】)]]></title><link>https://blog.youkuaiyun.com/JISOOLUO/article/details/105577790</link><guid>https://blog.youkuaiyun.com/JISOOLUO/article/details/105577790</guid><author>JISOOLUO</author><pubDate>Fri, 17 Apr 2020 12:48:37 +0800</pubDate><description><![CDATA[1、引入open-feign
        &lt;dependency&gt;
            &lt;groupId&gt;org.springframework.cloud&lt;/groupId&gt;
            &lt;artifactId&gt;spring-cloud-starter-openfeign&lt;/artifactId&gt;
        &...]]></description><category></category></item><item><title><![CDATA[在项目中使用Enum封装静态变量]]></title><link>https://blog.youkuaiyun.com/JISOOLUO/article/details/105577345</link><guid>https://blog.youkuaiyun.com/JISOOLUO/article/details/105577345</guid><author>JISOOLUO</author><pubDate>Fri, 17 Apr 2020 12:00:56 +0800</pubDate><description><![CDATA[抛弃传统的public static final定义静态变量
使用enum会让代码更加简洁，并且可以定义信息

public class Constant {

    public enum XX{
    // 变量
        XTYPE_BAST(1,"XXX"),XTYPE_SALE(0,"XXX");
        private int code;
        priva...]]></description><category></category></item><item><title><![CDATA[项目中给前端页面返回数据的封装方法（状态码，错误信息等）]]></title><link>https://blog.youkuaiyun.com/JISOOLUO/article/details/105576125</link><guid>https://blog.youkuaiyun.com/JISOOLUO/article/details/105576125</guid><author>JISOOLUO</author><pubDate>Fri, 17 Apr 2020 11:50:11 +0800</pubDate><description><![CDATA[1、以Map的形式封装

这里以k,v键值对的方式封装了一个返回给页面的数据
分别封装了error,ok等两个方法，并且每个方法有单个构造方法可以使用，并且返回自身，方便后面拼装数据
put方法就是用来放要返回给页面的数据
示例:正确返回return R.ok().put("data",返回对象)；

public class R extends HashMap&lt;String, Object...]]></description><category></category></item><item><title><![CDATA[SpringBoot中如何自定义基于JSR303简单的校验注解]]></title><link>https://blog.youkuaiyun.com/JISOOLUO/article/details/105444344</link><guid>https://blog.youkuaiyun.com/JISOOLUO/article/details/105444344</guid><author>JISOOLUO</author><pubDate>Sat, 11 Apr 2020 00:08:15 +0800</pubDate><description><![CDATA[1、环境

SpringBoot 2.2.2.RELEASE
依赖validation-api(这里只是引入该功能的依赖)

 	 &lt;dependency&gt;
            &lt;groupId&gt;javax.validation&lt;/groupId&gt;
            &lt;artifactId&gt;validation-api&lt;/artifa...]]></description><category></category></item><item><title><![CDATA[CentOS 7安装kibana详解]]></title><link>https://blog.youkuaiyun.com/JISOOLUO/article/details/105045800</link><guid>https://blog.youkuaiyun.com/JISOOLUO/article/details/105045800</guid><author>JISOOLUO</author><pubDate>Mon, 23 Mar 2020 13:08:09 +0800</pubDate><description><![CDATA[第一步

下载地址 https://www.elastic.co/cn/downloads/kibana
将安装包上传到CentOS上面

第二步

解压

tar -zxvf kibana-6.5.1-linux-x86_64.tar.gz -C /usr/local/kibana/


修改配置文件

# Kibana is served by a back end server. This ...]]></description><category></category></item><item><title><![CDATA[CentOS 7---单机部署多个Elasticsearch实例]]></title><link>https://blog.youkuaiyun.com/JISOOLUO/article/details/105044003</link><guid>https://blog.youkuaiyun.com/JISOOLUO/article/details/105044003</guid><author>JISOOLUO</author><pubDate>Mon, 23 Mar 2020 11:22:56 +0800</pubDate><description><![CDATA[第一步

安装
详情请看我另一篇文章 安装Elasticsearch

第二步

在你的解压目录中复制多一份elasticsearch
赋予权限给你创建的用户(我的是els)



若相关目录或者文件没有权限，启动时会报错，到时候你给它付全贤即可

chown -R 你创建的用户 要赋权限的目录/文件

第三步

因为是单机，所以要配置DNS，让两个请求的ip都是你的本机

vim /etc/ho...]]></description><category></category></item><item><title><![CDATA[CentOS7安装FastDFS详解]]></title><link>https://blog.youkuaiyun.com/JISOOLUO/article/details/105033394</link><guid>https://blog.youkuaiyun.com/JISOOLUO/article/details/105033394</guid><author>JISOOLUO</author><pubDate>Sun, 22 Mar 2020 22:42:43 +0800</pubDate><description><![CDATA[第一步

安装gcc环境（若以安装可以忽略）

yum install -y gcc gcc-c++

第二步

安装libevent（运行时需求）

yum -y install libevent

第三步

安装libfastcommon
下载地址：https://github.com/happyfish100/libfastcommon
将下载的安装包上传到CentOS，解压（我是解压到/u...]]></description><category></category></item><item><title><![CDATA[Centos7下安装tomcat(8.5.53)详解]]></title><link>https://blog.youkuaiyun.com/JISOOLUO/article/details/105029433</link><guid>https://blog.youkuaiyun.com/JISOOLUO/article/details/105029433</guid><author>JISOOLUO</author><pubDate>Sun, 22 Mar 2020 16:21:44 +0800</pubDate><description><![CDATA[第一步

Tomcat是需要jdk才能运行 ， 如果没有安装jdk请看我的另一篇有关安装jdk的文章。
CentOS安装jdk

第二步

下载tomcat安装包（我的下载目录为/usr/local/tomcat）

wget https://mirrors.cnnic.cn/apache/tomcat/tomcat-8/v8.5.53/bin/apache-tomcat-8.5.53.tar.g...]]></description><category></category></item><item><title><![CDATA[CentOS 7 yum 安装与配置 JDK详解]]></title><link>https://blog.youkuaiyun.com/JISOOLUO/article/details/105029020</link><guid>https://blog.youkuaiyun.com/JISOOLUO/article/details/105029020</guid><author>JISOOLUO</author><pubDate>Sun, 22 Mar 2020 15:52:18 +0800</pubDate><description><![CDATA[第一步

检查你的机器是否有安装jdk

java -version
yum list installed | grep [java][jdk]



如果有请先卸载（如上图）
卸载

yum -y remove java-1.8.0-openjdk*  //表时卸载所有openjdk相关文件输入
yum -y remove tzdata-java.noarch   //卸载tzdata-java...]]></description><category></category></item></channel></rss>