<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Lee_0202的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Lee_0202</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Lee_0202]]></copyright><item><title><![CDATA[基于Netty包中的Recycler实现的对象池技术详解]]></title><link>https://blog.youkuaiyun.com/Lee_0202/article/details/101245525</link><guid>https://blog.youkuaiyun.com/Lee_0202/article/details/101245525</guid><author>Lee_0202</author><pubDate>Sat, 17 Aug 2019 21:36:00 +0800</pubDate><description><![CDATA[一、业务背景
当项目中涉及到频繁的对象的创建和回收的时候，就会出现频繁GC的情况，这时就出现了池化的技术来实现对象的循环使用从而避免对象的频繁回收，Netty包下的Recycler就实现了这一功能。当创建对象的时候直接从池中获取，但使用完毕进行回收的时候，
直接将对象回收到池中，这样可以大量减少对象的创建和回收，是对JVM优化的很好的手段
二、Recycler的使用案例
首先定义...]]></description><category></category></item><item><title><![CDATA[以银行转账为例分析分布式事务的解决方案]]></title><link>https://blog.youkuaiyun.com/Lee_0202/article/details/101245526</link><guid>https://blog.youkuaiyun.com/Lee_0202/article/details/101245526</guid><author>Lee_0202</author><pubDate>Fri, 16 Aug 2019 16:51:00 +0800</pubDate><description><![CDATA[提起分布式系统，就会涉及分布式事务，本文就以金融项目的转账业务为例，分析各种业务场景下的转账业务的事物问题。

一、业务场景
以工商银行转账业务为例，那么项目的分布式架构大致如下，一个银行的一个支行部署一个节点，那么相同节点之间的业务就是本地事务、不同节点之间的就是分布式事务

转账业务包括以下三种情况
支行内转账：同为工行的相同支行内转账（本地事务）
行内转账：同为工行...]]></description><category></category></item><item><title><![CDATA[Java并发包2--ThreadLocal的使用及原理浅析]]></title><link>https://blog.youkuaiyun.com/Lee_0202/article/details/101245524</link><guid>https://blog.youkuaiyun.com/Lee_0202/article/details/101245524</guid><author>Lee_0202</author><pubDate>Tue, 30 Jul 2019 13:35:00 +0800</pubDate><description><![CDATA[ThreadLocal 是本地线程变量，是一个以ThreadLocal对象为key，任意对象为value的存储结构。
一、使用案例
1.定义线程类MyThread，代码如下：

 1 public class MyThread extends Thread{
 2 
 3     private User user;
 4 
 5     public MyThread(...]]></description><category></category></item><item><title><![CDATA[Netty框架问题记录1--多线程下批量发送消息导致消息被覆盖]]></title><link>https://blog.youkuaiyun.com/Lee_0202/article/details/101245521</link><guid>https://blog.youkuaiyun.com/Lee_0202/article/details/101245521</guid><author>Lee_0202</author><pubDate>Mon, 29 Jul 2019 18:12:00 +0800</pubDate><description><![CDATA[业务背景
项目是基于Netty实现的实时课堂项目，课堂中老师需要对试卷进行讲解，则老师向服务器发送一个打开试卷信息的请求，服务器获取试卷信息，将试卷信息发送给所有的客户端（学生和老师）。
发送给学生的时候需要在试卷信息中加上本人得分的信息。
实现方式大致如下：

1 Paper paper = getPaper(paperId); // 根据试卷ID获取试卷详细信息
2 f...]]></description><category></category></item><item><title><![CDATA[InnoDB存储引擎的高级特性大盘点]]></title><link>https://blog.youkuaiyun.com/Lee_0202/article/details/101245522</link><guid>https://blog.youkuaiyun.com/Lee_0202/article/details/101245522</guid><author>Lee_0202</author><pubDate>Sun, 28 Jul 2019 23:27:00 +0800</pubDate><description><![CDATA[InnoDB作为mysql数据库最常用的存储引擎，自然包含了其独有的很多特性。如相比于memory、MyISAM引擎，InnoDB支持行级锁、事务等都是比较重要的特性。
本文将盘点下InnoDB处理事务和行级锁之外的高级特性

一、自适应哈希
innodb建立索引时，只可以建立B+tree索引，是不可以建立hash索引的，而hash索引相对于B+tree索引，虽然无法实现排序、...]]></description><category></category></item><item><title><![CDATA[mysql日志体系大盘点]]></title><link>https://blog.youkuaiyun.com/Lee_0202/article/details/101245520</link><guid>https://blog.youkuaiyun.com/Lee_0202/article/details/101245520</guid><author>Lee_0202</author><pubDate>Sun, 28 Jul 2019 20:27:00 +0800</pubDate><description><![CDATA[MySql日志文件主要包含：错误日志、慢查询日志、事务日志、二进制日志等
Mysql的日志配置可以通过命令

1 show global variables like '%log%'; 

执行的结果如下

"back_log"    "80"
"binlog_cache_size"    "32768"
"binlog_checksum"    "CRC32"
"...]]></description><category></category></item><item><title><![CDATA[通俗易懂描述dubbo工作原理]]></title><link>https://blog.youkuaiyun.com/Lee_0202/article/details/101245519</link><guid>https://blog.youkuaiyun.com/Lee_0202/article/details/101245519</guid><author>Lee_0202</author><pubDate>Sat, 20 Jul 2019 23:04:00 +0800</pubDate><description><![CDATA[关于dubbo的描述就不再赘述，直接进入主题，那就是dubbo的工作原理。dubbo分为服务提供者和服务消费者，主要的工作内容有以下几点：提供者暴露服务、消费者引入服务、提供者和消费者和注册中心之间的通信、消费者消费服务、监控中心、其他扩展
一、provider暴露服务
1、首先provider可以在配置文件中配置自己可以提供那些服务，通过&lt;dubbo:service&gt;可...]]></description><category></category></item><item><title><![CDATA[Java并发编程3-抽象同步队列AQS详解]]></title><link>https://blog.youkuaiyun.com/Lee_0202/article/details/101245517</link><guid>https://blog.youkuaiyun.com/Lee_0202/article/details/101245517</guid><author>Lee_0202</author><pubDate>Sun, 14 Jul 2019 20:03:00 +0800</pubDate><description><![CDATA[AQS是AtractQueuedSynchronizer(队列同步器)的简写，是用来构建锁或其他同步组件的基础框架。主要通过一个int类型的state来表示同步状态，内部有一个FIFO的同步队列来实现。
AQS的使用方式是通过子类继承来实现，子类继承同步器并且实现抽象方法来完成同步，实现过程中涉及到同步状态的方法主要有：
getState（）：获取同步状态
setState（int...]]></description><category></category></item><item><title><![CDATA[Java集合--阻塞队列及各种实现的解析]]></title><link>https://blog.youkuaiyun.com/Lee_0202/article/details/101245514</link><guid>https://blog.youkuaiyun.com/Lee_0202/article/details/101245514</guid><author>Lee_0202</author><pubDate>Fri, 12 Jul 2019 00:58:00 +0800</pubDate><description><![CDATA[阻塞队列（Blocking Queue）
一、队列的定义
说的阻塞队列，就先了解下什么是队列，队列也是一种特殊的线性表结构，在线性表的基础上加了一条限制：那就是一端入队列，一端出队列，且需要遵循FIFO（先进先出）的原则
队列的入口一端叫做队尾（rear），出口一端叫做队头（front），最简单的比如就是排队买火车票，新加入的排队者必须在队尾插入，而下一个排队结束的永远的队伍的第一...]]></description><category></category></item><item><title><![CDATA[NIO之路1--传统BIO到NIO的演变过程]]></title><link>https://blog.youkuaiyun.com/Lee_0202/article/details/101245516</link><guid>https://blog.youkuaiyun.com/Lee_0202/article/details/101245516</guid><author>Lee_0202</author><pubDate>Wed, 12 Jun 2019 21:34:00 +0800</pubDate><description><![CDATA[一、BIO时代
BIO1.0版本
在jdk1.4之前，java网络编程都是采用的BIO模式，BIO全称是Blocking IO，也就是阻塞式IO 接下来就以拨打10086客服电话为例，介绍下BIO是如何通信的。（10086客服是服务端，移动用户是客户端，10086是端口号） BIO1.0版本 客服等待用户拨打电话10086，此时是阻塞的，因为客服不能干别的事，只能等待客户拨打电话。当...]]></description><category></category></item><item><title><![CDATA[spring源码解析-ApplicationContext解析]]></title><link>https://blog.youkuaiyun.com/Lee_0202/article/details/101245512</link><guid>https://blog.youkuaiyun.com/Lee_0202/article/details/101245512</guid><author>Lee_0202</author><pubDate>Sat, 08 Jun 2019 21:43:00 +0800</pubDate><description><![CDATA[ApplicationContext和BeanFactory一样都是bean的容器，而BeanFactory是一切Bean容器的父类，ApplicationContext继承于BeanFactory（继承之BeanFactory的子类）
ApplicationContext包含了BeanFactory的所有功能，并且扩展了其他功能。先从ApplicationContext的案例入手，代...]]></description><category></category></item><item><title><![CDATA[分布式系统的CAP理论]]></title><link>https://blog.youkuaiyun.com/Lee_0202/article/details/101245510</link><guid>https://blog.youkuaiyun.com/Lee_0202/article/details/101245510</guid><author>Lee_0202</author><pubDate>Thu, 23 May 2019 21:02:00 +0800</pubDate><description><![CDATA[CAP理论是指分布式系统架构中通常只能够满足CAP三个指标中的两个，而不能同时满足CAP三个指标
C（Consistency）：一致性 一致性指的是All nodes see the same data at the same time，也就是说所有节点在同一时间看到的数据必须是一模一样的，比如足球比赛中，当比分发生了改变，客户端A看到的比分是1:0，而客户端B看到的比分还是0:0；又...]]></description><category></category></item><item><title><![CDATA[Java常用设计模式详解1--单例模式]]></title><link>https://blog.youkuaiyun.com/Lee_0202/article/details/101245513</link><guid>https://blog.youkuaiyun.com/Lee_0202/article/details/101245513</guid><author>Lee_0202</author><pubDate>Thu, 23 May 2019 20:59:00 +0800</pubDate><description><![CDATA[单例模式：指一个类有且仅有一个实例
由于单例模式只允许有一个实例，所以单例类就不可通过new来创建，而所有对象都默认有一个无参的构造函数可以创建对象，所以单例类不仅不能提供public的构造方法，还需要重写默认的无参构造方法。由于单例类不可再new创建，所以需要有一个公用的实例需要创建好并返回，所以单例类还需要有一个返回单例对象的方法。且这个方法还必须是静态的方法，否则此方法无法在其他...]]></description><category></category></item><item><title><![CDATA[mysql全方位知识大盘点]]></title><link>https://blog.youkuaiyun.com/Lee_0202/article/details/101245511</link><guid>https://blog.youkuaiyun.com/Lee_0202/article/details/101245511</guid><author>Lee_0202</author><pubDate>Mon, 13 May 2019 00:24:00 +0800</pubDate><description><![CDATA[一、mysql都有哪些存储引擎？各自的特点是什么？



引擎
事务
锁
主键
索引
外键
数据结构
适用场景


InnoDB
支持
行锁、表锁
必须有主键，没有设置会自动创建
主键索引和数据在一起，其他索引执行主角索引
支持
2个文件，一个是表结构，一个是索引和数据
事务、增删改频繁


MyISAM
不支持
只支持表锁
可以没有...]]></description><category></category></item><item><title><![CDATA[HashMap基本介绍]]></title><link>https://blog.youkuaiyun.com/Lee_0202/article/details/101245508</link><guid>https://blog.youkuaiyun.com/Lee_0202/article/details/101245508</guid><author>Lee_0202</author><pubDate>Thu, 09 May 2019 10:02:00 +0800</pubDate><description><![CDATA[1.HashMap简介（本文是按照JDK1.8进行解析）
HashMap位于JDK自带jar包rt.jar的java.util目录下。 HashMap是一个散列表，存储的内容是键值对&lt;key,value&gt;映射。
HashMap继承于AbstractMap，实现了Map、Cloneable、Serializable接口 HashMap是线程不安全的，其中key、value都...]]></description><category></category></item><item><title><![CDATA[spring源码解析2--容器的基本实现]]></title><link>https://blog.youkuaiyun.com/Lee_0202/article/details/101245509</link><guid>https://blog.youkuaiyun.com/Lee_0202/article/details/101245509</guid><author>Lee_0202</author><pubDate>Sat, 27 Apr 2019 21:47:00 +0800</pubDate><description><![CDATA[spring的主要特性是IOC，实现IOC的关键是bean，而更关键的是如何bean的管理容器，也就是BeanFactory，本文的目标是弄清楚BeanFactory具体是怎么样的存在。
先看下最简单的获取bean的案例，代码如下：

1 public static void main(String[] args){
2         BeanFactory factory =...]]></description><category></category></item><item><title><![CDATA[JDK8到JDK12各个版本的重要特性整理]]></title><link>https://blog.youkuaiyun.com/Lee_0202/article/details/101245507</link><guid>https://blog.youkuaiyun.com/Lee_0202/article/details/101245507</guid><author>Lee_0202</author><pubDate>Fri, 26 Apr 2019 00:30:00 +0800</pubDate><description><![CDATA[JDK8新特性
1、Lambda表达式
2、函数式编程
3、接口可以添加默认方法和静态方法，也就是定义不需要实现类实现的方法
4、方法引用
5、重复注解，同一个注解可以使用多次
6、引入Optional来避免空指针
7、引入Streams相关的API
8、引入新的Date/Time相关的API
9、新增jdeps命令行，来分析类、目录、jar包的类依赖层级关系
10、...]]></description><category></category></item><item><title><![CDATA[Javaagent技术及Instrumentation接口详解]]></title><link>https://blog.youkuaiyun.com/Lee_0202/article/details/101245505</link><guid>https://blog.youkuaiyun.com/Lee_0202/article/details/101245505</guid><author>Lee_0202</author><pubDate>Thu, 25 Apr 2019 23:24:00 +0800</pubDate><description><![CDATA[一、Javaagent
Javaagent相当于一个插件，在JVM启动的时候可以添加 javaagent配置指定启动之前需要启动的agent jar包这个agent包中需要有MANIFEST.MF文件必须指定Premain-Class配置，且Premain-Class配置指定的Class必须实现premain()方法
在JVM启动的时候，会从agent包中找到MAINIFEST.MF...]]></description><category></category></item><item><title><![CDATA[spring源码解析1--spring整体架构]]></title><link>https://blog.youkuaiyun.com/Lee_0202/article/details/101245504</link><guid>https://blog.youkuaiyun.com/Lee_0202/article/details/101245504</guid><author>Lee_0202</author><pubDate>Wed, 24 Apr 2019 23:49:00 +0800</pubDate><description><![CDATA[一、Spring整体架构图
关于Spring的基本介绍就不再赘述了，先展示Spring框架的整体架构图如下示：

二、Spring结构介绍
Spring主要分为Core Container、Test、Data Access、Web、AOP、Aspects等几个大模块，而Spring最核心的模块就是Core Container之后的Beans、Core、Context三个模块
...]]></description><category></category></item><item><title><![CDATA[Java并发包1--线程的状态及常用方法]]></title><link>https://blog.youkuaiyun.com/Lee_0202/article/details/101245502</link><guid>https://blog.youkuaiyun.com/Lee_0202/article/details/101245502</guid><author>Lee_0202</author><pubDate>Wed, 24 Apr 2019 22:56:00 +0800</pubDate><description><![CDATA[一、线程主要有以下几种状态：
new（新建）：线程刚刚被创建
runnable（就绪）：新建的线程执行start方法进入就绪状态等待系统调度分配CPU，被分配了之后就进入运行中状态
blocked（阻塞）：当线程执行被锁的代码块或方法时，等待其他线程释放锁而处于阻塞状态
waiting（等待）：线程进入等待状态，需要等待其他线程做出一些特点动作（通知或中断）
time_wait...]]></description><category></category></item></channel></rss>