随笔分类 - Java
摘要:目录1. 简介2. Channel Pipeline的逻辑架构2.1. 通信调度层 Reactor2.2. 职责链 ChannelPipeline2.3. 业务逻辑编排层 ServiceChannelHandler3. ChannelPipeline3.1. ChannelPipeline的类继承关
阅读全文
摘要:目录1. Netty线程模型概述1.1 为什么需要特殊的线程模型?2. EventLoop核心机制2.1 EventLoop基本概念2.1.1. EventLoop执行引擎原理2.1.2. 核心执行逻辑实现2.2. Netty的线程模型实现2.2.1. 主从EventLoopGroup设计2.2.2
阅读全文
摘要:Netty 框架 1. Netty 的核心组件与工作原理 Netty的核心组件的工作原理如下: 1.1. Channel & ChannelFuture Channel: 是Netty对网络连接(如Socket)的抽象。它代表了到一个实体(如一个硬件设备、一个文件、一个网络套接字)的开放连接。所有的
阅读全文
摘要:1. 构建第一个Netty应用:Echo服务器与客户端 1.1. 简单的 Echo 服务器 这里,我们直接使用Netty作为独立的进程启动 1.1.1. Netty 依赖 maven依赖如下: <dependency> <groupId>io.netty</groupId> <artifactId>
阅读全文
摘要:目录1. Netty 简介2. 为什么需要 Netty2.1. 为什么要使用 NIO 进行编程呢2.2. 为什么不直接基于 JDK 的 NIO 类库编程呢3. Netty 的核心特性与优势3.1. 高性能3.2. 高可扩展性3.3. 易于使用3.4. 健壮性与安全性3.5.社区活跃,生态成熟4. N
阅读全文
摘要:目录SqlSession是什么SqlSession分类SqlSession的创建为什么和 Spring 整合后的 SqlSession 一级缓存偶尔会失效一级缓存和二级缓存总结 SqlSession是什么 SqlSession是Mybatis 中定义的,用来表示与关系数据库的一次会话,会话定义了各种
阅读全文
摘要:目录题目方案一:synchronized方法二:ReentrantLock方法三:ReentrantLock + Condition(非公平锁)方法四:ReentrantLock + Condition(公平锁)方法五:Semaphore 题目 使用三个线程 T1、T2、T3,如何让他们按顺序交替打
阅读全文
摘要:目录1. 前言1.1. 什么是循环依赖?1.2. Spring 创建 Bean 主要流程1.2.1. 实例化 Bean1.2.2. 填充 Bean 属性1.2.3. 调用 Bean 初始化方法1.3. BeanPostProcessor 接口拓展点2. Spring 解决循环依赖的流程分析2.1.
阅读全文
摘要:目录1. IoC 容器1.1. IoC 的容器接口设计图1.1.1. BeanFactory1.1.2. ApplicationContext1.2. BeanFactory 容器设计原理1.2.1. 编程式使用IOC容器1.3. ApplicationContext1.3.1. 设计原理2. Io
阅读全文
摘要:目录单例模式简介双重检查锁优缺点延迟加载模式(Initialization-on-demand holder idiom)优缺点饿汉模式优缺点枚举方式优缺点 单例模式简介 单例模式是一种创建型设计模式, 让你能够保证一个类只有一个实例, 并提供一个访问该实例的全局节点。 单例模式保证了系统内存中该类
阅读全文
摘要:目录Java 对象内存结构Java 对象在内存中的布局Java 对象头MonitorJava 中的锁状态无锁状态偏向锁轻量级锁(自旋锁)重量级锁锁的优缺点对比锁升级场景场景1: 经常只有某一个线程来加锁。场景2: 有线程来参与锁的竞争,但是获取锁的冲突时间很短场景3: 有大量的线程参与锁的竞争,冲突
阅读全文
摘要:目录同步器Semaphore原理示例Exchanger总结CountDownLatchCyclicBarrier原理应用场景示例Phaser示例 同步器 JUC 包下的工具类除了 locks,还包含其他的工具类,如:Semaphore、CountDownLatch、CyclicBarrier、Exc
阅读全文
摘要:目录线程同步条件对象synchronized 关键字监视器volatile 线程同步 条件对象 通常线程进入临界区,却发现需要满足某一个条件后,才能继续执行,这时,就需要使用一个条件对象,来管理那些已经获得了一个锁,但是,却不做有用工作的线程。这些条件对象经常被称为条件变量(Conditional
阅读全文
摘要:目录IOJava IO IO IO 即 Input/Output,输入和输出。数据输入到计算机内存的过程即输入,反之输出到外部存储(比如数据库,文件,远程主机)的过程即输出。 数据传输过程类似于水流,因此称为 I/O 流。 Java IO IO 流在 Java 中分为输入流和输出流,而根据数据的处理
阅读全文
摘要:目录简介语法区别 简介 Lambda 表达式是 JDK 8 的一个新特性,可以取代大部分的匿名内部类,写出更优雅的Java代码,尤其在集合的遍历和其他集合操作中,可以极大地优化代码结构。但 Lambda 表达式并不能取代所有的匿名内部类,只能用来取代函数接口(Functional Interface
阅读全文
摘要:目录引言I/O 简介为什么要使用 NIO流与块的比较多路复用 IO传统 IO 模型Reactor 事件驱动模型单线程 Reactor 事件驱动模型基于线程池的 Reactor 事件驱动模型基于主从的 Reactor 事件驱动模型Java 对多路复用 IO 的支持Buffer缓冲区的存储方式非直接缓冲
阅读全文
摘要:目录Dubbo 介绍Dubbo 与 gRPC、Spring Cloud、Istio 的关系Dubbo 与 Spring CloudDubbo 与 gRPCDubbo 与 IstioDubbo 微服务生态基于扩展点的微服务生态协议通信层流量管控层FilterRouterLoad Balance服务治理
阅读全文
摘要:目录前言堆内存结构传统的 GC 收集器G1 收集器概念初始堆占用情况标记Remember Set原理Card TableCollect Set停顿预测模型G1的垃圾回收过程对象分配线程本地分配缓冲区Eden 区中分配Humongous 区分配G1 垃圾收集周期Young GCYoung GC 总结M
阅读全文
摘要:目录垃圾回收的基础知识堆空间的基本结构内存分配和回收原则对象优先在 Eden 区分配大对象直接进入老年代长期存活的对象将进入老年代GC 分类对象是否可被回收引用计数算法可达性分析算法引用类型强引用(StrongReference)软引用(SoftReference)弱引用(WeakReference
阅读全文
摘要:目录对象的创建类加载分配内存内存分配的两种方式内存分配并发问题初始化零值设置对象头执行 init 方法对象的内存布局对象的访问定位句柄直接指针 HotSpot 虚拟机在 Java 堆中对象分配、布局和访问的全过程。 对象的创建 类加载 虚拟机遇到一条 new 指令时,首先将去检查这个指令的参数,是否
阅读全文

浙公网安备 33010602011771号