<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[m0_57560984的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/m0_57560984</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; m0_57560984]]></copyright><item><title><![CDATA[JVM内存]]></title><link>https://blog.youkuaiyun.com/m0_57560984/article/details/120895061</link><guid>https://blog.youkuaiyun.com/m0_57560984/article/details/120895061</guid><author>m0_57560984</author><pubDate>Thu, 21 Oct 2021 21:08:53 +0800</pubDate><description><![CDATA[JVM


	jvm的位置

	
	
	
	jvm的体系结构

	
	
	
	类加载器

	

	1 虚拟机自带的类加载器

	2 启动类 根加载器 ：引导类加载器，Bootstrap ClassLoader 使用c/c++实现，用来加载java核心库

	3 扩展类加载器：Extension ClassLoader 使用java语言编写，父类为启动类加载器，从java.ext.dirs 系统属性所指定的目录中加载类库，从jdk安装目录jre/lib/ext 子目录下加载类库

	4 应用程序加载器：系统加]]></description><category></category></item><item><title><![CDATA[集合面试题]]></title><link>https://blog.youkuaiyun.com/m0_57560984/article/details/120841891</link><guid>https://blog.youkuaiyun.com/m0_57560984/article/details/120841891</guid><author>m0_57560984</author><pubDate>Tue, 19 Oct 2021 10:52:11 +0800</pubDate><description><![CDATA[Collection 与 Map的区别？

	Collection 存储单个值，该接口提供迭代器

	Map存储键值对，没有提供迭代器
	
	
	迭代器的分类？

	Iterator和ListIterator
	
	
	Iterator和ListIterator的区别？

	Iterator：Collection接口下所有的实现类都能获取的迭代器，提供了删除元素的方法

	ListIterator：List接口下所有的实现类才能获取的迭代器，提供了删除、添加、插入的方法，设置起始下标开始遍历，倒叙遍历
..]]></description><category></category></item><item><title><![CDATA[Nacos服务注册与发现和分布式配置中心]]></title><link>https://blog.youkuaiyun.com/m0_57560984/article/details/120790179</link><guid>https://blog.youkuaiyun.com/m0_57560984/article/details/120790179</guid><author>m0_57560984</author><pubDate>Sat, 16 Oct 2021 14:25:48 +0800</pubDate><description><![CDATA[Nacos

可以实现分布式服务注册与发现和分布式配置中心功能


代替Eureka做服务注册中心：服务的注册与发现

替代Config做服务配置中心：分布式配置中心，集中化配置


Nacos-discovery默认支持Ribbon负载均衡




0.服务器负责启动，加载，运行服务提供者

1.服务提供者在启动时，向注册中心注册自己提供的服务

2.服务消费者在启动时，向注册中心订阅自己所需的服务

3.注册中心返回服务提供者地址列表给消费者，如果有变更，注册中心将基于长连接推送变更数据给消费者

4.]]></description><category></category></item><item><title><![CDATA[Histrix]]></title><link>https://blog.youkuaiyun.com/m0_57560984/article/details/120798242</link><guid>https://blog.youkuaiyun.com/m0_57560984/article/details/120798242</guid><author>m0_57560984</author><pubDate>Sat, 16 Oct 2021 14:25:24 +0800</pubDate><description><![CDATA[微服务项目中，微服务得服务负载过高，导致运行性能下降，会导致其他调用他们得链条出现问题，从而所有得项目都可以出现问题，这种情况下称之为灾难性得雪崩效应。

造成雪崩得击穿：服务提供者不可用：硬件故障，程序bug，缓存击穿，并发请求量过大..

重试加大流量：用户重试，代码充实逻辑等

服务调用者不可用：同步请求阻塞造成得资源耗尽等。

雪崩效应造成得结果就是：服务链条中某一个服务不可用，导致一系列得服务不可用，最终造成服务逻辑崩溃。

如何防止？

降级

超时降级，资源不足时降级，降级后可以配合降级接..]]></description><category></category></item><item><title><![CDATA[ConCurrentHashMap高频面试题]]></title><link>https://blog.youkuaiyun.com/m0_57560984/article/details/120754223</link><guid>https://blog.youkuaiyun.com/m0_57560984/article/details/120754223</guid><author>m0_57560984</author><pubDate>Wed, 13 Oct 2021 22:51:38 +0800</pubDate><description><![CDATA[由于面试大厂被吊打，我终于下定决心来深深补一下

jdk1.7是sagment分段式锁实现的 1.8就没有了sagment

大概说一下putValue的流程：


	判断key是否没空 空就抛出空指针
	
	
	得到table数组
	
	
	判断table是否为空，空的话就进行扩容
	
	
	判断key的哈希值对应table下标是否为空，空的话通过cas操作创建一个node放入table中，然后直接退出。
	
	
	如果桶位为空，判断当前头节点的返回值是否为-1，如果是则需要当前线程帮助扩容，并得到扩容后]]></description><category></category></item><item><title><![CDATA[数据库索引]]></title><link>https://blog.youkuaiyun.com/m0_57560984/article/details/120714432</link><guid>https://blog.youkuaiyun.com/m0_57560984/article/details/120714432</guid><author>m0_57560984</author><pubDate>Mon, 11 Oct 2021 23:57:45 +0800</pubDate><description><![CDATA[MySQL官方定义：

索引是帮助MySQL高效获取数据的有序数据结构。在数据库之外，数据库系统还维护着满足特定查找算法的数据结构，这样的数据结构已某种方式指向数据，这样就可在这些数据结构上实现高级查找算法，这种数据结构叫做索引。

示意图：



左边是数据表，一共两列七条记录，最左边的是数据记录的物理地址。为了加快Col2查找，可以维护一个右边所示的二叉查找树，每个节点分别包含索引键值和一个指向对应数据的记录物理地址的指针，这样就可以运用二叉查找快速获取到相应的数据。

索引本身也很大，不会全部存储..]]></description><category></category></item><item><title><![CDATA[Nginx的反向代理]]></title><link>https://blog.youkuaiyun.com/m0_57560984/article/details/120661930</link><guid>https://blog.youkuaiyun.com/m0_57560984/article/details/120661930</guid><author>m0_57560984</author><pubDate>Fri, 08 Oct 2021 23:09:53 +0800</pubDate><description><![CDATA[Nginx的反向代理

为了实现效果1.117.55.17:81/vod/index.html可以直接跳转到1.117.55.17:8080





运行两个tomcat


docker run -id --name:tomcat1 -p 8080:8080 镜像id
在webapps文件夹下创建/edu/index.html 并进行修改 写入你想要的html页面
docker run -id --name:tomcat2 -p 8081:8080 镜像id
在webapps文件夹下创建/edu/ind]]></description><category></category></item><item><title><![CDATA[Nginx的负载均衡]]></title><link>https://blog.youkuaiyun.com/m0_57560984/article/details/120661910</link><guid>https://blog.youkuaiyun.com/m0_57560984/article/details/120661910</guid><author>m0_57560984</author><pubDate>Fri, 08 Oct 2021 23:08:17 +0800</pubDate><description><![CDATA[Nginx的负载均衡

负载均衡：即是将负载分配到不同的服务单元，既保证服务的可用性，又保证了响应的速度，给用户良好的体验。

负载均衡的作用

1.转发

转发是负载均衡的核心功能，它能够根据一定的算法，将客户端请求转发到不同应用服务器，缓解每台服务器的压力，提高并发量。

2.移除故障

当其中一台服务器发生故障时，会被移除轮询队列，客户端请求将会发送给其他几台正常的服务器，不会影响客户端的访问。

3.恢复添加

当故障的服务器恢复时，会自动倍加到轮询队列，继续处理客户端请求。



Nginx配置
]]></description><category></category></item><item><title><![CDATA[缓存穿透，缓存击穿，缓存雪崩]]></title><link>https://blog.youkuaiyun.com/m0_57560984/article/details/120499775</link><guid>https://blog.youkuaiyun.com/m0_57560984/article/details/120499775</guid><author>m0_57560984</author><pubDate>Mon, 27 Sep 2021 00:10:48 +0800</pubDate><description><![CDATA[缓存穿透，缓存击穿，缓存雪崩

缓存穿透

缓存和数据库中都没有的数据，用户还是可以源源不断的发起请求，导致每次请求都会到数据库，导致数据库被压垮。



查询一个不存在的东西，在redis中查询不到去数据库查询，一直到数据库查询就会造成数据库呗压垮

解决办法：


	业务层校验 用户发过来的请求，我们在代码中进行校验，不存在的不允许访问。
	
	
	不存在的数据设置短时间过期

	对于某个空的数据，我们将它空的结果放入redis中缓存，但是设置很短的过期时间，可以根据实际业务设定。但不要影响正常的业务。]]></description><category></category></item><item><title><![CDATA[Redis数据持久化策略]]></title><link>https://blog.youkuaiyun.com/m0_57560984/article/details/120495154</link><guid>https://blog.youkuaiyun.com/m0_57560984/article/details/120495154</guid><author>m0_57560984</author><pubDate>Sun, 26 Sep 2021 19:14:42 +0800</pubDate><description><![CDATA[持久化（persistence）,持久化是将程序在持久状态和瞬时状态间转换得机制

RDB持久化方式(默认开启)：可以在指定得时间间隔能对数据进行快照存储。

AOF持久化方式（需要开启，优先级高）：记录每次服务器写得操作，AOF命令以redis协议追加保存每次写得操作到文件末尾，当服务器重启得时候回重新执行这些命令来恢复原始得数据，Redis还能对AOF文件进行后台重启，使得AOF文件得体积不至过大。

如果服务器开启了AOF持久化功能，服务器会优先使用AOF文件还原数据。只有关闭了AOF持久化功能，..]]></description><category></category></item><item><title><![CDATA[手写简易Spring框架]]></title><link>https://blog.youkuaiyun.com/m0_57560984/article/details/120442976</link><guid>https://blog.youkuaiyun.com/m0_57560984/article/details/120442976</guid><author>m0_57560984</author><pubDate>Thu, 23 Sep 2021 20:42:08 +0800</pubDate><description><![CDATA[我们前面分析很多的Spring源码，现在我们来手写一个简易的Spring源码

创建一个maven工程。


public class Test {
  public static void main(String[] args) {
    AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);
    UserService userSe...]]></description><category></category></item><item><title><![CDATA[Spring整合第三方框架底层原理]]></title><link>https://blog.youkuaiyun.com/m0_57560984/article/details/120442855</link><guid>https://blog.youkuaiyun.com/m0_57560984/article/details/120442855</guid><author>m0_57560984</author><pubDate>Thu, 23 Sep 2021 20:36:46 +0800</pubDate><description><![CDATA[Spring中的bean是如何生成的

Spring提供了那些扩展点可以用来整合第三方框架？

Spring是如何整合Mybatils的？





MyBatis 框架



这里的sqlsession.getMapper是jdk动态代理得到代理对象的









return mapperProxyFactory.newInstance（sqlSession）这里得到了真正的代理对象








     &lt;dependency&gt;
        ...]]></description><category></category></item><item><title><![CDATA[循环依赖的底层原理（三级缓存）]]></title><link>https://blog.youkuaiyun.com/m0_57560984/article/details/120442652</link><guid>https://blog.youkuaiyun.com/m0_57560984/article/details/120442652</guid><author>m0_57560984</author><pubDate>Thu, 23 Sep 2021 20:32:57 +0800</pubDate><description><![CDATA[@Component("bService")
public class AService {
  //aservice的生命周期 1实例化（new AService）2填充bService属性3填充其他属性4aop5放入单例池
  // 不是所有的对象都叫bean，只有经历了spring的所有步骤才能叫做bean
​
  @Autowired
  private BService bService;
​
  public void test(){
    System.ou...]]></description><category></category></item><item><title><![CDATA[单例Bean，单例模式，单例池之间的联系与底层原理]]></title><link>https://blog.youkuaiyun.com/m0_57560984/article/details/120442474</link><guid>https://blog.youkuaiyun.com/m0_57560984/article/details/120442474</guid><author>m0_57560984</author><pubDate>Thu, 23 Sep 2021 20:15:30 +0800</pubDate><description><![CDATA[单例Bean：不是指在Spring容器中只有一个userService类型的对象，可以有多个此类型的对象。Spring找到对应的对象是先 byType 再 byName。

通过@Bean标签就可以看出来Spring中的单例Bean并不是指只有一个此类型的对象。

单例模式：单例类只能有一个实例，单例类必须自己创建自己的唯一实例，单例类必须给所有类提供这一实例。

单例池：是用来是实现单例Bean的，单例池就是一个Map Bean对象的名字就是它的键，bean对象就是值。

FactoryBean的作用..]]></description><category></category></item><item><title><![CDATA[Bean的生命周期]]></title><link>https://blog.youkuaiyun.com/m0_57560984/article/details/120428143</link><guid>https://blog.youkuaiyun.com/m0_57560984/article/details/120428143</guid><author>m0_57560984</author><pubDate>Thu, 23 Sep 2021 09:26:28 +0800</pubDate><description><![CDATA[这里要先了解Bean的后置处理器（BeanProstProcessor）：

我们可以理解为大多数情况下在创建了对象之后，可以进行对对象的其他操作，再转化成Bean


@Component
public class FactoryBeanProstProcessor implements BeanPostProcessor {
​
  
  public Object postProcessBeforeInitialization(Object bean, String beanNa...]]></description><category></category></item><item><title><![CDATA[获得Bean得几种种方法 BeanFactory]]></title><link>https://blog.youkuaiyun.com/m0_57560984/article/details/120428001</link><guid>https://blog.youkuaiyun.com/m0_57560984/article/details/120428001</guid><author>m0_57560984</author><pubDate>Thu, 23 Sep 2021 09:20:52 +0800</pubDate><description><![CDATA[配置文件


&lt;bean id="user" class="com.work.pojo.User"/&gt;
​
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("springMvc.xml");
User user1 = context.getBean("user", User.class);//bean

声明类


@ComponentScan
public class Config {
..]]></description><category></category></item><item><title><![CDATA[BeanDefinition BeanFactory AOP]]></title><link>https://blog.youkuaiyun.com/m0_57560984/article/details/120427729</link><guid>https://blog.youkuaiyun.com/m0_57560984/article/details/120427729</guid><author>m0_57560984</author><pubDate>Thu, 23 Sep 2021 09:05:36 +0800</pubDate><description><![CDATA[BeanDefinition

1 表示Bean定义，SPring根据BeanDefinition来创建Bean对象

beanClass：表示bean的类型，创建Bean的过程中会根据属性来实例的得到对象

scope：表示一个bean的作用域，scope等于singleton，该Bnean就是一个单例Bean

isLazy：表示一个bean是不是需要懒加载，原型bean的isLazy属性不起作用，懒加载的单例Bean，会在第一次getBean的时候生成该bean，非懒加载的单例bean，则会在SPri]]></description><category></category></item><item><title><![CDATA[redis常用命令]]></title><link>https://blog.youkuaiyun.com/m0_57560984/article/details/120422496</link><guid>https://blog.youkuaiyun.com/m0_57560984/article/details/120422496</guid><author>m0_57560984</author><pubDate>Wed, 22 Sep 2021 20:34:36 +0800</pubDate><description><![CDATA[查看是否运行正常


# ping 返回 PONG

统计server


# info server
# info

查看当前数据库得key数量


# dbsize

切换库命令


# select index

获得 redis 的配置值


# config get parameter

查询数据库得个数 一般为16 个


# config get databases

获取端口号


# config get port

获取所有参数配置


# config get *

删除所有库得数..]]></description><category></category></item><item><title><![CDATA[redis的安装]]></title><link>https://blog.youkuaiyun.com/m0_57560984/article/details/120413878</link><guid>https://blog.youkuaiyun.com/m0_57560984/article/details/120413878</guid><author>m0_57560984</author><pubDate>Wed, 22 Sep 2021 14:09:22 +0800</pubDate><description><![CDATA[Redis

他是一个非关系型数据库，时以K—V存储的 nosql数据库。

redis在线帮助手册：redisdoc.com

常见五种数据类型: 字符串 哈希表 列表 集合 有序集合

优点：

Redis支持数据的持久化，可以将内存中的数据保持在磁盘中，重启的时候可以再次加载进行使用

Redis不仅仅支持K-V类型的数据，同时还提供list，set，zste，hash等数据结构存储

Redis支持数据的备份，即master-slave模式的数据备份

下面我们就来学习如何安装：

官网进行下载，进]]></description><category></category></item><item><title><![CDATA[MYQL！！]]></title><link>https://blog.youkuaiyun.com/m0_57560984/article/details/120340600</link><guid>https://blog.youkuaiyun.com/m0_57560984/article/details/120340600</guid><author>m0_57560984</author><pubDate>Fri, 17 Sep 2021 00:44:21 +0800</pubDate><description><![CDATA[MYSQL之面试篇

三大范式

第一范式（1NF）:字段不可分

第二范式（2NF）：有主键，非主键字段依赖于主键

第三范式（3NF）：非主键字段不能相互依赖

1NF:原子性,字段不可再分，否则就是非关系型数据库。

2NF:唯一性，一个表只能说明一个事务。

3NF:不存在传递依赖，没列都与主键有直接关系。

存储过程是像编程语言中的函数一样，封装了我们的代码（PLSQL,T-SQL）

数据库索引（B+树）

在数据结构中，最常见的搜索结构就是二叉搜索树和AVL（高度平衡二叉树），但是在搜索量较大]]></description><category></category></item></channel></rss>