<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[chenzihao36的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/chenzihao36</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; chenzihao36]]></copyright><item><title><![CDATA[Dubbo相关知识点梳理]]></title><link>https://blog.youkuaiyun.com/chenzihao36/article/details/107984964</link><guid>https://blog.youkuaiyun.com/chenzihao36/article/details/107984964</guid><author>chenzihao36</author><pubDate>Fri, 14 Aug 2020 16:16:47 +0800</pubDate><description><![CDATA[目录一、Dubbo入门二、Dubbo注册中心1.Multicast注册中心2.Zookeeper注册中心三、Dubbo多协议1.Dubbo协议2.其他协议四、Dubbo服务特性1.本地伪装2.服务降级3.本地存根4.负载均衡5.集群容错五、Dubbo其他特性1.线程模型2.并发控制3.异步执行4.异步调用5.连接控制6.日志适配7.配置加载流程8.调用拦截扩展六、Dubbo最佳实践1.服务化最佳实践2.容量规划3.优雅停机七、Dubbo服务治理1.治理行为2.路由配置八、Dubbo工作原理
一、Dubbo入]]></description><category></category></item><item><title><![CDATA[手写一个RPC框架]]></title><link>https://blog.youkuaiyun.com/chenzihao36/article/details/107924601</link><guid>https://blog.youkuaiyun.com/chenzihao36/article/details/107924601</guid><author>chenzihao36</author><pubDate>Tue, 11 Aug 2020 12:09:41 +0800</pubDate><description><![CDATA[目录一、CAP理论和BASE理论二、RPC概念三、设计实现一个RPC框架1.客户端2.服务端
一、CAP理论和BASE理论
二、RPC概念
三、设计实现一个RPC框架
1.客户端
2.服务端

]]></description><category></category></item><item><title><![CDATA[Zookeeper相关知识点梳理]]></title><link>https://blog.youkuaiyun.com/chenzihao36/article/details/107864882</link><guid>https://blog.youkuaiyun.com/chenzihao36/article/details/107864882</guid><author>chenzihao36</author><pubDate>Mon, 10 Aug 2020 02:34:04 +0800</pubDate><description><![CDATA[目录一、Zookeeper入门1.ZK的数据模型2.ZK的watch机制3.ZK的特性二、Zookeeper应用场景1.ZK实现配置中心2.ZK实现命令服务3.ZK实现Master选举4.ZK实现分布式队列5.ZK实现分布式锁三、Zookeeper集群1.ZK集群基本概念2.ZK集群ZAB协议3.ZK集群Leader选举四、分布式一致性协议
一、Zookeeper入门
1.ZK的数据模型
2.ZK的watch机制
3.ZK的特性
二、Zookeeper应用场景
1.ZK实现配置中心
2.ZK实现命令服务
3]]></description><category></category></item><item><title><![CDATA[ElasticSearch相关知识点梳理]]></title><link>https://blog.youkuaiyun.com/chenzihao36/article/details/107668781</link><guid>https://blog.youkuaiyun.com/chenzihao36/article/details/107668781</guid><author>chenzihao36</author><pubDate>Thu, 06 Aug 2020 11:07:31 +0800</pubDate><description><![CDATA[目录一、搜索引擎核心理论思想二、ElasticSearch安装三、ElasticSearch应用场景及核心概念四、ElasticSearch查询语法解析五、ElasticSearch高级查询六、ElasticSearch高性能集群七、ELK实时日志分析平台
一、搜索引擎核心理论思想
二、ElasticSearch安装
ElasticSearch安装步骤如下（docker安装）：
（1）安装ES：
docker run -d --name es --restart=always -p 9200:9200 -p]]></description><category></category></item><item><title><![CDATA[MongoDB相关知识点梳理]]></title><link>https://blog.youkuaiyun.com/chenzihao36/article/details/107639682</link><guid>https://blog.youkuaiyun.com/chenzihao36/article/details/107639682</guid><author>chenzihao36</author><pubDate>Wed, 29 Jul 2020 12:45:50 +0800</pubDate><description><![CDATA[目录一、MongoDB入门二、MongoDB基本使用1.数据增加2.数据查询3.数据更新4.数据删除三、MongoDB索引四、MongoDB聚合五、MongoDB深入操作
一、MongoDB入门
MongoDB是一种NoSQL数据库，它与关系型数据库的关系如下：




关系型数据库
MongoDB




表
集合


行
文档


列（字段）
成员


主键
objectID（MongoDB自动生成，为时间戳+机器码+PID+计数器，不会重复）


相对于传统的关系型数据库，表结构一旦定义，就必须按照结]]></description><category></category></item><item><title><![CDATA[MySQL相关知识点梳理]]></title><link>https://blog.youkuaiyun.com/chenzihao36/article/details/107471589</link><guid>https://blog.youkuaiyun.com/chenzihao36/article/details/107471589</guid><author>chenzihao36</author><pubDate>Fri, 24 Jul 2020 17:30:03 +0800</pubDate><description><![CDATA[目录一、MySQL入门二、MySQL索引三、MySQL语句分析四、MySQL优化方案五、MySQL锁机制六、MySQL事务
一、MySQL入门
二、MySQL索引
三、MySQL语句分析
四、MySQL优化方案
五、MySQL锁机制
六、MySQL事务

]]></description><category></category></item><item><title><![CDATA[Mycat相关知识点梳理]]></title><link>https://blog.youkuaiyun.com/chenzihao36/article/details/107435398</link><guid>https://blog.youkuaiyun.com/chenzihao36/article/details/107435398</guid><author>chenzihao36</author><pubDate>Mon, 20 Jul 2020 17:17:23 +0800</pubDate><description><![CDATA[目录一、Mycat入门二、Mycat读写分离三、Mycat分库分表四、Mycat架构五、Mycat安装
一、Mycat入门
二、Mycat读写分离
三、Mycat分库分表
四、Mycat架构
五、Mycat安装
以下是Mycat的安装步骤：
1.环境准备:
(1)JDK使用的是jdk-8u261-linux-x64.rpm
(2)MySQL使用的是5.7.22版本
(3)MyCat使用的是Mycat-server-1.6.6.1-release-20181031195535-linux.tar
2.JDK安]]></description><category></category></item><item><title><![CDATA[Redis相关知识点梳理]]></title><link>https://blog.youkuaiyun.com/chenzihao36/article/details/107381769</link><guid>https://blog.youkuaiyun.com/chenzihao36/article/details/107381769</guid><author>chenzihao36</author><pubDate>Fri, 17 Jul 2020 11:19:01 +0800</pubDate><description><![CDATA[目录一、Redis数据结构和常用命令1、Redis简介2、Redis应用场景3、Redis数据结构与常用命令4、Redis使用案例二、Redis持久化机制三、Redis内存管理四、Redis主从复制五、Redis哨兵高可用机制六、Redis集群分片存储机制
一、Redis数据结构和常用命令
1、Redis简介
Redis是一个开源的C语言编写、支持网络、可基于内存亦可持久化的日志型，key-value数据库，并提供多种语言API。它的特点是使用简单、性能强悍以及功能应用场景丰富。（我们可以简单把它理解为一个]]></description><category></category></item><item><title><![CDATA[Ngnix负载均衡原理与配置]]></title><link>https://blog.youkuaiyun.com/chenzihao36/article/details/107338242</link><guid>https://blog.youkuaiyun.com/chenzihao36/article/details/107338242</guid><author>chenzihao36</author><pubDate>Wed, 15 Jul 2020 03:05:42 +0800</pubDate><description><![CDATA[目录一、Nginx负载均衡原理1.Nginx负载均衡简介2.Nginx进程模型3.Nginx缓存机制二、Nginx负载均衡配置
一、Nginx负载均衡原理
1.Nginx负载均衡简介
首先我们来理解以下什么是反向代理？对于一个系统来说，通常我我们说反向代理是指一个代理服务器来接受Internet上的连接请求，然后将请求转发给内部网络上的后台服务器，并将从后台服务器上得到的结果返回给Internet上请求连接的客户端的过程。反向代理有2个作用：
（1）保证内网安全：阻止网络攻击，大型网站通常将反向代理作为公网]]></description><category></category></item><item><title><![CDATA[RabbitMQ相关知识点梳理]]></title><link>https://blog.youkuaiyun.com/chenzihao36/article/details/107202378</link><guid>https://blog.youkuaiyun.com/chenzihao36/article/details/107202378</guid><author>chenzihao36</author><pubDate>Wed, 08 Jul 2020 16:41:29 +0800</pubDate><description><![CDATA[目录一、RabbitMQ入门简介二、RabbitMQ集群高可用方案三、RabbitMQ持久化机制与内存控制四、RabbitMQ消息可靠性
一、RabbitMQ入门简介
RabbitMQ是一个开源的AMQP实现，服务器端使用Erlang语言编写，支持多种客户端。它用于分布式系统中存储转发消息，在易用性、扩展性、高可用性等方面表现不俗。以下是RabbitMQ的安装过程，文档可百度云自取(当然也可以用Docker版安装): 链接: rabbitmq单机到集群完整搭建 提取码: vq38
RabbitMQ会绑定一些]]></description><category></category></item><item><title><![CDATA[JVM的类加载机制和垃圾回收介绍]]></title><link>https://blog.youkuaiyun.com/chenzihao36/article/details/107089395</link><guid>https://blog.youkuaiyun.com/chenzihao36/article/details/107089395</guid><author>chenzihao36</author><pubDate>Fri, 03 Jul 2020 11:45:51 +0800</pubDate><description><![CDATA[一、类加载机制
我们知道java代码是先被编译为.class字节码，再加载到JVM中去运行的，那么.class字节码是如何加载进JVM的呢？
首先我们了解一下类的生命周期：
（1）加载：读取二进制内容；
（2）验证：验证class文件格式是否规范，语义分析，引用验证，字节码验证；
（3）准备：分配内存，设置类static修饰的变量的初始值；
（4）解析：类、接口、字段、类方法多等解析；
（5）初始化：为静态变量赋值，执行静态代码块；
（6）使用：创建实例对象；
（7）卸载：从JVM方法区中卸载。
接着回答上]]></description><category></category></item><item><title><![CDATA[高并发编程常用容器和J.U.C包常用工具介绍]]></title><link>https://blog.youkuaiyun.com/chenzihao36/article/details/107000793</link><guid>https://blog.youkuaiyun.com/chenzihao36/article/details/107000793</guid><author>chenzihao36</author><pubDate>Mon, 29 Jun 2020 17:15:17 +0800</pubDate><description><![CDATA[J.U.C包中一些工具的简介
一、HashMap

]]></description><category></category></item><item><title><![CDATA[Lock接口读写锁原理介绍]]></title><link>https://blog.youkuaiyun.com/chenzihao36/article/details/106947043</link><guid>https://blog.youkuaiyun.com/chenzihao36/article/details/106947043</guid><author>chenzihao36</author><pubDate>Wed, 24 Jun 2020 17:55:38 +0800</pubDate><description><![CDATA[Lock接口读写锁原理介绍
一、线程间通信的方式
首先，介绍以下几种线程间的通信方式：




协作方式
死锁方式1(通过主动加把锁)
死锁方式1(先唤醒再挂起)
备注




suspend/resume
死锁
死锁
弃用


wait/notify
不死锁
死锁
只能在synchronized关键字中用,基于对象监视器


park/unPark
死锁
不死锁
用LockSupport，令牌机制


condition的await/signal
不死锁
死锁
只能在ReentrantLock中用


二]]></description><category></category></item><item><title><![CDATA[两个例子解释线程的可见性和原子性问题]]></title><link>https://blog.youkuaiyun.com/chenzihao36/article/details/106941064</link><guid>https://blog.youkuaiyun.com/chenzihao36/article/details/106941064</guid><author>chenzihao36</author><pubDate>Wed, 24 Jun 2020 11:49:53 +0800</pubDate><description><![CDATA[两个例子解释线程的可见性和原子性问题
多线程情况下，会出现两种线程安全的问题：可见性和原子性问题。具体针对这两种多线程情况下出现问题的解决方案如下：
（1）可见性：
//用volatile关键字屏蔽CPU缓存和指令重排序，保证线程可见性
public class VolatileTest {
    boolean flag = true;//用这个会导致thread1线程不能读到被修改的flag值,thread1线程的循环永远不会结束
//    volatile boolean flag = true;]]></description><category></category></item><item><title><![CDATA[线程池原理与API使用介绍]]></title><link>https://blog.youkuaiyun.com/chenzihao36/article/details/106919014</link><guid>https://blog.youkuaiyun.com/chenzihao36/article/details/106919014</guid><author>chenzihao36</author><pubDate>Tue, 23 Jun 2020 16:29:36 +0800</pubDate><description><![CDATA[线程池原理与API使用简介
一、线程池原理
首先我们要明确为什么用多线程？是不是线程越多就越好？随着现代多核CPU的发展，

]]></description><category></category></item><item><title><![CDATA[利用请求合并发挥高并发下批量处理的优势]]></title><link>https://blog.youkuaiyun.com/chenzihao36/article/details/106824306</link><guid>https://blog.youkuaiyun.com/chenzihao36/article/details/106824306</guid><author>chenzihao36</author><pubDate>Thu, 18 Jun 2020 11:28:40 +0800</pubDate><description><![CDATA[利用请求合并发挥高并发下批量处理的优势
一、需求分析：
我们经常会写一些查询接口，假设现在我们需要写一个查询用户信息的接口，要求传入用户Id，返回用户名称。那么最简化的流程就是：用户发送请求-&gt;controller层-&gt;service层-&gt;dao层-&gt;数据库。每次请求就相当于请求一条用户信息。当这个接口被用户频繁请求时，此接口就不断的在做“请求”到“返回”的操作，服务端同时会开辟许多线程帮我们执行这些操作，这么多的线程会消耗许多系统资源，服务端承受了巨大压力。
//单查询接口
@Ge]]></description><category></category></item><item><title><![CDATA[利用Spring的Aop机制、自定义注解和反射实现代码功能增强]]></title><link>https://blog.youkuaiyun.com/chenzihao36/article/details/106766994</link><guid>https://blog.youkuaiyun.com/chenzihao36/article/details/106766994</guid><author>chenzihao36</author><pubDate>Mon, 15 Jun 2020 18:06:36 +0800</pubDate><description><![CDATA[利用Spring的Aop机制、自定义注解和反射实现代码功能增强
一、预备知识的简单介绍：
（1）AOP：它是Spring为我们提供的一个十分有用的机制，AOP采用称为“横切”的技术，把一些与业务代码不是强相关的功能独立出来，从而形成一个“切面”，并且我们把这个“切面”切到业务流程的某个位置，以实现业务增强。
（2）注解：它是一种能被添加到java代码中的元数据，类、方法、变量、参数和包都可以用注解来修饰。注解对于它所修饰的代码并没有直接的影响。通俗来说，注解就是一个标签，我们可以用@interface来写一]]></description><category></category></item><item><title><![CDATA[基于Zookeeper实现分布式配置中心]]></title><link>https://blog.youkuaiyun.com/chenzihao36/article/details/106750057</link><guid>https://blog.youkuaiyun.com/chenzihao36/article/details/106750057</guid><author>chenzihao36</author><pubDate>Sun, 14 Jun 2020 19:59:05 +0800</pubDate><description><![CDATA[基于Zookeeper实现分布式配置中心
一、需求分析与实现思路：
在我们工作中，往往充斥着大量的配置文件。之前在我的工作中，都是把配置文件直接写在代码中，工程量小的时候无所谓，我们可以一个一个改；但是随着工程量越来越大，在修改配置的时候会非常麻烦，而且不便于统一管理。所以，有没有什么方法可以统一管理这些工程的配置，并且可以在配置修改的时候立即通知到各个应用呢？这里就要引入分布式配置中心的概念了。配置中心顾名思义，就是用来统一管理配置的，而分布式可以保证配置中心的可靠性。配置中心在市面上也有许多现成的开源实]]></description><category></category></item><item><title><![CDATA[springCloud组件介绍]]></title><link>https://blog.youkuaiyun.com/chenzihao36/article/details/105922398</link><guid>https://blog.youkuaiyun.com/chenzihao36/article/details/105922398</guid><author>chenzihao36</author><pubDate>Tue, 05 May 2020 01:04:56 +0800</pubDate><description><![CDATA[springCloud组件介绍
目录springCloud组件介绍一、CAP理论二、springCloud组件之Eureka三、springCloud组件之Ribbon四、springCloud组件之hystrix五、springCloud其他组件
一、CAP理论
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在介绍springCloud之前，我们...]]></description><category></category></item><item><title><![CDATA[kubernetes与docker介绍]]></title><link>https://blog.youkuaiyun.com/chenzihao36/article/details/104244198</link><guid>https://blog.youkuaiyun.com/chenzihao36/article/details/104244198</guid><author>chenzihao36</author><pubDate>Mon, 10 Feb 2020 17:26:55 +0800</pubDate><description><![CDATA[容器化技术介绍（kubernetes与docker）一、docker二、kubernetes三、kubernetes集群环境搭建
一、docker
&nbsp; &nbsp;&nbsp; &nbsp;伴随着计算机技术的飞速发展，容器化技术现在越来越火，而Docker无疑是其中的明星产品，目前Docker 在国内特别是在一线互联网公司发展的如火如荼，Docker 的使用已经是十分普遍了。
&nbsp...]]></description><category></category></item></channel></rss>