上一页 1 2 3 4 5 6 ··· 8 下一页
摘要: 对象的创建 一个对象创建的时候,到底是在堆上分配,还是在栈上分配呢?这和两个方面有关:对象的类型和在 Java 类中存在的位置。 Java 的对象可以分为基本数据类型和普通对象。 对于普通对象来说,JVM 会首先在堆上创建对象,然后在其他地方使用的其实是它的引用。比如,把这个引用保存在虚拟机栈的局部 阅读全文
posted @ 2021-11-24 23:01 xiaojiesir 阅读(198) 评论(0) 推荐(0) 编辑
摘要: Java 内存模型简称 JMM,全名 Java Memory Model 。Java 内存模型规定了 JVM 应该如何使用计算机内存(RAM)。 广义来讲, Java 内存模型分为两个部分: JVM 内存结构 JMM 与线程规范 其中,JVM 内存结构是底层实现,也是我们理解和认识 JMM 的基础。 阅读全文
posted @ 2021-11-23 23:07 xiaojiesir 阅读(363) 评论(0) 推荐(0) 编辑
摘要: 类的生命周期和加载过程 在Java中数据类型分为基本数据类型和引用数据类型。基本数据类型由虚拟机预先定义,引用数据类型则需要进行类的加载。引用类型,Java 将其细分为四种:类、接口、数组类和泛型参数。由于泛型参数会在编译过程中被擦除,因此 Java 虚拟机实际上只有前三种。在类、接口和数组类中,数 阅读全文
posted @ 2021-11-22 23:05 xiaojiesir 阅读(196) 评论(0) 推荐(0) 编辑
摘要: 单例模式 单例模式是最常见的设计模式,它可以保证全局只有一个实例,避免线程安全问题。单例模式有很多种实现方法,其中我比较推荐三种最佳实践:双重检验锁、静态内部类方式、饿汉方式和枚举方式,其中双重检验锁和静态内部类方式属于懒汉式单例,饿汉方式和枚举方式属于饿汉式单例。 双重检验锁 在多线程环境下,为了 阅读全文
posted @ 2021-11-21 23:29 xiaojiesir 阅读(682) 评论(0) 推荐(2) 编辑
摘要: 框架总结 Netty 服务端启动 Netty 提供了 ServerBootstrap 引导类作为程序启动入口,ServerBootstrap 将 Netty 核心组件像搭积木一样组装在一起,服务端启动过程我们需要完成以下三个基本步骤: 配置线程池。Netty 是采用 Reactor 模型进行开发的, 阅读全文
posted @ 2021-11-20 23:30 xiaojiesir 阅读(697) 评论(0) 推荐(0) 编辑
摘要: 服务发现与负载均衡机制的实现 注册中心选型 服务消费者在发起 RPC 调用之前,需要知道服务提供者有哪些节点是可用的,而且服务提供者节点会存在上线和下线的情况。所以服务消费者需要感知服务提供者的节点列表的动态变化,在 RPC 框架中一般采用注册中心来实现服务的注册和发现。 目前主流的注册中心有 Zo 阅读全文
posted @ 2021-11-19 23:13 xiaojiesir 阅读(367) 评论(0) 推荐(0) 编辑
摘要: 项目结构 rpc-provider,服务提供者。负责发布 RPC 服务,接收和处理 RPC 请求。 rpc-consumer,服务消费者。使用动态代理发起 RPC 远程调用,帮助使用者来屏蔽底层网络通信的细节。 rpc-registry,注册中心模块。提供服务注册、服务发现、负载均衡的基本功能。 r 阅读全文
posted @ 2021-11-18 23:12 xiaojiesir 阅读(600) 评论(0) 推荐(0) 编辑
摘要: RPC 框架架构设计 github地址:https://github.com/xiaojiesir/mini-rpc RPC 又称远程过程调用(Remote Procedure Call),用于解决分布式系统中服务之间的调用问题。通俗地讲,就是开发者能够像调用本地方法一样调用远程的服务。下面我们通过 阅读全文
posted @ 2021-11-17 23:58 xiaojiesir 阅读(747) 评论(0) 推荐(0) 编辑
摘要: JDK 原生并发队列 JDK 并发队列按照实现方式可以分为阻塞队列和非阻塞队列两种类型,阻塞队列是基于锁实现的,非阻塞队列是基于 CAS 操作实现的。JDK 中包含多种阻塞和非阻塞的队列实现,如下图所示。 队列是一种 FIFO(先进先出)的数据结构,JDK 中定义了 java.util.Queue 阅读全文
posted @ 2021-11-16 22:59 xiaojiesir 阅读(2623) 评论(0) 推荐(1) 编辑
摘要: 定时器的基础知识 定时器一般有三种表现形式:按固定周期定时执行、延迟一定时间后执行、指定某个时刻执行。 定时器的本质是设计一种数据结构,能够存储和调度任务集合,而且 deadline 越近的任务拥有更高的优先级。那么定时器如何知道一个任务是否到期了呢?定时器需要通过轮询的方式来实现,每隔一个时间片去 阅读全文
posted @ 2021-11-15 23:27 xiaojiesir 阅读(1057) 评论(1) 推荐(1) 编辑
上一页 1 2 3 4 5 6 ··· 8 下一页