<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[maxleader的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/maxleader</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; maxleader]]></copyright><item><title><![CDATA[BIO与NIO剖析]]></title><link>https://blog.youkuaiyun.com/maxleader/article/details/104911038</link><guid>https://blog.youkuaiyun.com/maxleader/article/details/104911038</guid><author>maxleader</author><pubDate>Wed, 25 Mar 2020 16:35:34 +0800</pubDate><description><![CDATA[BIO - 阻塞的含义

BIO代码示例
服务端：
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.ServerSo...]]></description><category></category></item><item><title><![CDATA[TCP / UDP协议]]></title><link>https://blog.youkuaiyun.com/maxleader/article/details/104908740</link><guid>https://blog.youkuaiyun.com/maxleader/article/details/104908740</guid><author>maxleader</author><pubDate>Mon, 16 Mar 2020 22:08:20 +0800</pubDate><description><![CDATA[OSI网络七层模型

各层的主要功能

传输控制协议TCP

主要特点：
（1）基于流的方式；
（2）面向连接；
（3）可靠通信方式；
（4）在网络状况不佳的时候尽量降低系统由于重传带来的带宽开销；
（5）通信连接维护是面向通信的两个端点的，而不考虑中间网段和节点。
TCP握手机制

用户数据报协议UDP

UDP协议简介

UDP协议与TCP协议一样用于处理数据包，在OSI模型中，两者都位于传输...]]></description><category></category></item><item><title><![CDATA[AQS（抽象队列同步器）详解]]></title><link>https://blog.youkuaiyun.com/maxleader/article/details/104350587</link><guid>https://blog.youkuaiyun.com/maxleader/article/details/104350587</guid><author>maxleader</author><pubDate>Mon, 17 Feb 2020 14:14:31 +0800</pubDate><description><![CDATA[同步锁的本质 —— 排队
同步的方式：独享锁 - 单个队列窗口，共享锁 - 多个队列窗口；
抢锁的方式：插队抢（非公平锁）、先来后到抢（公平锁）；
没捡到锁的处理方式：快速尝试多次（CAS自旋锁）、阻塞等待；
唤醒阻塞线程的方式（叫号器）：全部通知、通知下一个；
AQS概念

资源占用流程

手写抽象队列同步器
import java.util.Iterator;
import java.util...]]></description><category></category></item><item><title><![CDATA[线程安全之Lock和synchronized的运用]]></title><link>https://blog.youkuaiyun.com/maxleader/article/details/104304402</link><guid>https://blog.youkuaiyun.com/maxleader/article/details/104304402</guid><author>maxleader</author><pubDate>Sun, 16 Feb 2020 22:19:12 +0800</pubDate><description><![CDATA[Java中锁的概念

几种重要的锁实现方式：synchronized、ReentrantLock、ReentrantReadWriteLock
synchronized的概念


]]></description><category></category></item><item><title><![CDATA[线程安全的问题]]></title><link>https://blog.youkuaiyun.com/maxleader/article/details/104172894</link><guid>https://blog.youkuaiyun.com/maxleader/article/details/104172894</guid><author>maxleader</author><pubDate>Fri, 07 Feb 2020 20:27:37 +0800</pubDate><description><![CDATA[在上一节中主要讲了JVM内存模型和线程安全的可见性问题，本节重点讲解线程安全的原子操作；
竞态条件与临界区

代码示例
public class IncrDemo {
    public int i = 0;
    public void incr() {
        i++;	//临界区
    }
}

共享资源

不可变对象

原子操作定义

CAS机制

J.U.C包内的原子操作封...]]></description><category></category></item><item><title><![CDATA[JVM内存模型详解]]></title><link>https://blog.youkuaiyun.com/maxleader/article/details/104154785</link><guid>https://blog.youkuaiyun.com/maxleader/article/details/104154785</guid><author>maxleader</author><pubDate>Mon, 03 Feb 2020 23:24:56 +0800</pubDate><description><![CDATA[JVM运行时数据区（https://blog.youkuaiyun.com/maxleader/article/details/104098513）

从内存结构到内存模型

多线程中的问题

所见非所得；
肉眼无法检测程序准确性；
不同的运行平台有不同的表现；
错误很难重现；

工作内存缓存

指令重排序

Java内存模型含义

Shared Variables共享变量描述

线程操作的定义

程序顺序：...]]></description><category></category></item><item><title><![CDATA[线程池的实现原理和应用]]></title><link>https://blog.youkuaiyun.com/maxleader/article/details/104109885</link><guid>https://blog.youkuaiyun.com/maxleader/article/details/104109885</guid><author>maxleader</author><pubDate>Fri, 31 Jan 2020 22:00:55 +0800</pubDate><description><![CDATA[为什么要使用线程池

线程池的原理 - 概念

线程池AIP - 接口定义和实现类

线程池AIP - 方法定义
ExecutorService

ScheduledExecutorService

线程池AIP - Executors工具类

线程池原理 - 任务executor过程

有关线程数量

代码示例
import java.util.List;
import java.util.co...]]></description><category></category></item><item><title><![CDATA[线程封闭 - ThreadLocal和栈封闭]]></title><link>https://blog.youkuaiyun.com/maxleader/article/details/104106672</link><guid>https://blog.youkuaiyun.com/maxleader/article/details/104106672</guid><author>maxleader</author><pubDate>Wed, 29 Jan 2020 14:49:52 +0800</pubDate><description><![CDATA[线程封闭的概念

ThreadLocal
ThreadLocal是Java里一种特殊的变量

代码示例
/** 线程封闭示例 */
public class Demo7 {
	/** threadLocal变量，每个线程都有一个副本，互不干扰 */
	public static ThreadLocal&lt;String&gt; value = new ThreadLocal&lt;&gt;();...]]></description><category></category></item><item><title><![CDATA[线程通信]]></title><link>https://blog.youkuaiyun.com/maxleader/article/details/104105262</link><guid>https://blog.youkuaiyun.com/maxleader/article/details/104105262</guid><author>maxleader</author><pubDate>Wed, 29 Jan 2020 14:19:10 +0800</pubDate><description><![CDATA[线程通信的方式

文件共享

变量共享

线程协作 - JDK API

被弃用的suspend / resume
被弃用的主要原因是：容易写出死锁代码！
所以用 wait / nitify 和 park / unpark 机制对它进行替代。
suspend / resume死锁示例

wait / nitify机制

wait / nitify正常执行与死锁

park / unpark机制

...]]></description><category></category></item><item><title><![CDATA[内存屏障和CPU缓存]]></title><link>https://blog.youkuaiyun.com/maxleader/article/details/104105085</link><guid>https://blog.youkuaiyun.com/maxleader/article/details/104105085</guid><author>maxleader</author><pubDate>Wed, 29 Jan 2020 11:14:09 +0800</pubDate><description><![CDATA[CPU性能优化手段 - 缓存

多级缓存

缓存同步协议

CPU性能优化手段 - 运行时指令重排序

CPU缓存和CPU运行时指令重排序的2个问题：

内存屏障


]]></description><category></category></item><item><title><![CDATA[线程的状态与线程终止]]></title><link>https://blog.youkuaiyun.com/maxleader/article/details/104100622</link><guid>https://blog.youkuaiyun.com/maxleader/article/details/104100622</guid><author>maxleader</author><pubDate>Tue, 28 Jan 2020 21:47:11 +0800</pubDate><description><![CDATA[一、线程的状态
线程的6种状态

线程运行状态图

代码示例
/**
 * 示例2 - 多线程运行状态切换示例 &lt;br/&gt;
 */
public class Demo2 {
	public static Thread thread1;
	public static Demo2 obj;

	public static void main(String[] args) throws Ex...]]></description><category></category></item><item><title><![CDATA[Java程序运行原理分析]]></title><link>https://blog.youkuaiyun.com/maxleader/article/details/104098513</link><guid>https://blog.youkuaiyun.com/maxleader/article/details/104098513</guid><author>maxleader</author><pubDate>Tue, 28 Jan 2020 14:03:33 +0800</pubDate><description><![CDATA[一、JVM原理
class文件内容

JVM运行时数据区

方法区

堆内存区

虚拟机栈

本地方法栈

程序计数器

二、程序运行分析示例
代码如下
/**
 * 示例1 - JAVA程序执行分析
 */
public class Demo1 {
	public int x;

	public int sum(int a, int b) {
		return a + b;
	}

	publi...]]></description><category></category></item><item><title><![CDATA[HashMap底层原理剖析及JDK1.7和1.8的对比]]></title><link>https://blog.youkuaiyun.com/maxleader/article/details/89765115</link><guid>https://blog.youkuaiyun.com/maxleader/article/details/89765115</guid><author>maxleader</author><pubDate>Fri, 03 May 2019 22:49:50 +0800</pubDate><description><![CDATA[基于Map的K,V数据结构在软件开发中是非常经典的，常用于在内存中存放数据。

HashMap底层是基于数组 + 链表组成，不过在JDK1.7和1.8中具体实现方式不同。

Base 1.7

JDK1.7中的数据结构图：



成员变量



/** 初始容量，默认16 */
static final int DEFAULT_INITIAL_CAPACITY = 1 &lt;&lt; 4; //...]]></description><category></category></item><item><title><![CDATA[SpringCloud订单模块架构剖析]]></title><link>https://blog.youkuaiyun.com/maxleader/article/details/89502732</link><guid>https://blog.youkuaiyun.com/maxleader/article/details/89502732</guid><author>maxleader</author><pubDate>Wed, 24 Apr 2019 23:19:07 +0800</pubDate><description><![CDATA[SpringCloud全家桶包含了很多组件，本文重点解析Eureka、Feign、Ribbon、Hystrix。Zuul这5个核心组件。

业务场景

我们需要开发一个电商网站，要实现支付订单的功能，流程如下：

创建一个订单后，如果用户立即支付，需要将订单状态改为“已支付”；
	扣减相应的商品库存；
	通知仓储中心进行发货；
	给用户这次购物增加相应的积分；
针对上述流程，我们需要有订单服务、库...]]></description><category></category></item></channel></rss>