自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 BIO与NIO剖析

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...

2020-03-25 16:35:34 132

原创 TCP / UDP协议

OSI网络七层模型各层的主要功能传输控制协议TCP主要特点:(1)基于流的方式;(2)面向连接;(3)可靠通信方式;(4)在网络状况不佳的时候尽量降低系统由于重传带来的带宽开销;(5)通信连接维护是面向通信的两个端点的,而不考虑中间网段和节点。TCP握手机制用户数据报协议UDPUDP协议简介UDP协议与TCP协议一样用于处理数据包,在OSI模型中,两者都位于传输...

2020-03-16 22:08:20 479

原创 AQS(抽象队列同步器)详解

同步锁的本质 —— 排队同步的方式:独享锁 - 单个队列窗口,共享锁 - 多个队列窗口;抢锁的方式:插队抢(非公平锁)、先来后到抢(公平锁);没捡到锁的处理方式:快速尝试多次(CAS自旋锁)、阻塞等待;唤醒阻塞线程的方式(叫号器):全部通知、通知下一个;AQS概念资源占用流程手写抽象队列同步器import java.util.Iterator;import java.util...

2020-02-17 14:14:31 496

原创 线程安全之Lock和synchronized的运用

Java中锁的概念几种重要的锁实现方式:synchronized、ReentrantLock、ReentrantReadWriteLocksynchronized的概念

2020-02-16 22:19:12 140

原创 线程安全的问题

在上一节中主要讲了JVM内存模型和线程安全的可见性问题,本节重点讲解线程安全的原子操作;竞态条件与临界区代码示例public class IncrDemo { public int i = 0; public void incr() { i++; //临界区 }}共享资源不可变对象原子操作定义CAS机制J.U.C包内的原子操作封...

2020-02-07 20:27:37 79

原创 JVM内存模型详解

JVM运行时数据区(https://blog.csdn.net/maxleader/article/details/104098513)从内存结构到内存模型多线程中的问题所见非所得;肉眼无法检测程序准确性;不同的运行平台有不同的表现;错误很难重现;工作内存缓存指令重排序Java内存模型含义Shared Variables共享变量描述线程操作的定义程序顺序:...

2020-02-03 23:24:56 202

原创 线程池的实现原理和应用

为什么要使用线程池线程池的原理 - 概念线程池AIP - 接口定义和实现类线程池AIP - 方法定义ExecutorServiceScheduledExecutorService线程池AIP - Executors工具类线程池原理 - 任务executor过程有关线程数量代码示例import java.util.List;import java.util.co...

2020-01-31 22:00:55 146

原创 线程封闭 - ThreadLocal和栈封闭

线程封闭的概念ThreadLocalThreadLocal是Java里一种特殊的变量代码示例/** 线程封闭示例 */public class Demo7 { /** threadLocal变量,每个线程都有一个副本,互不干扰 */ public static ThreadLocal<String> value = new ThreadLocal<>();...

2020-01-29 14:49:52 92

原创 线程通信

线程通信的方式文件共享变量共享线程协作 - JDK API被弃用的suspend / resume被弃用的主要原因是:容易写出死锁代码!所以用 wait / nitify 和 park / unpark 机制对它进行替代。suspend / resume死锁示例wait / nitify机制wait / nitify正常执行与死锁park / unpark机制...

2020-01-29 14:19:10 231

原创 内存屏障和CPU缓存

CPU性能优化手段 - 缓存多级缓存缓存同步协议CPU性能优化手段 - 运行时指令重排序CPU缓存和CPU运行时指令重排序的2个问题:内存屏障

2020-01-29 11:14:09 144

原创 线程的状态与线程终止

一、线程的状态线程的6种状态线程运行状态图代码示例/** * 示例2 - 多线程运行状态切换示例 <br/> */public class Demo2 { public static Thread thread1; public static Demo2 obj; public static void main(String[] args) throws Ex...

2020-01-28 21:47:11 316

原创 Java程序运行原理分析

一、JVM原理class文件内容JVM运行时数据区方法区堆内存区虚拟机栈本地方法栈程序计数器二、程序运行分析示例代码如下/** * 示例1 - JAVA程序执行分析 */public class Demo1 { public int x; public int sum(int a, int b) { return a + b; } publi...

2020-01-28 14:03:33 197

翻译 HashMap底层原理剖析及JDK1.7和1.8的对比

基于Map的K,V数据结构在软件开发中是非常经典的,常用于在内存中存放数据。HashMap底层是基于数组 + 链表组成,不过在JDK1.7和1.8中具体实现方式不同。Base 1.7JDK1.7中的数据结构图:成员变量/** 初始容量,默认16 */static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; //...

2019-05-03 22:49:50 1034

翻译 SpringCloud订单模块架构剖析

SpringCloud全家桶包含了很多组件,本文重点解析Eureka、Feign、Ribbon、Hystrix。Zuul这5个核心组件。业务场景我们需要开发一个电商网站,要实现支付订单的功能,流程如下:创建一个订单后,如果用户立即支付,需要将订单状态改为“已支付”; 扣减相应的商品库存; 通知仓储中心进行发货; 给用户这次购物增加相应的积分;针对上述流程,我们需要有订单服务、库...

2019-04-24 23:19:07 1412

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除