跳至主要內容
对象是如何创建出来的
本文内容

前言

在编写 Java 程序时,经常需要 new 对象,你知道 new 关键字背后的秘密吗?JVM 是如何执行 new 指令的呢?本文就带你一探究竟。

0. 概览

首先从全局的角度来看看 new 一个对象的整体过程,会经历如下几个主要步骤:

  1. 类加载检查
  2. 内存分配
  3. 初始化零值
  4. 填充对象头信息
  5. 执行构造函数<init>() 方法)。

AruNi_Lu大约 6 分钟JavaJVM
运行时数据区域
本文内容

前言

JVM 的 自动内存管理机制 帮助了我们很友好的使用内存,写 Java 代码时,不用为 new 出来的对象进行释放,JVM 会在合适的时机帮我们进行 垃圾回收

但我们还是有必要去了解一下 Java 的内存区域是怎样的,JVM 是怎样使用内存的,这样在出现内存相关的问题时,比如内存泄漏、内存溢出,才有能力去排查。

本章先来了解 Java 的 运行时数据区域 是如何划分的,每个区域分别有什么作用,保存什么数据?


AruNi_Lu大约 7 分钟JavaJVM
逃逸分析
本文内容

前言

在 Java 中,几乎所有的对象都分配在堆上,“几乎” 说明了还是有个别可以不分配到堆上的,那么到底是哪些个别对象呢?这就要涉及到本篇文章要讲的 逃逸分析 了。

1. 什么是逃逸分析?


AruNi_Lu大约 4 分钟JavaJVM
阻塞非阻塞同步异步 IO
本文内容

1. IO 是什么?

IO 全称是 Input/Output,即输入输出,常见的 IO 有磁盘 IO,网路 IO 等。

当我们需要将内存中的数据持久化时,就需要向磁盘写数据,这个过程就是一次输出(从内存角度来说,将内存中的数据输出到磁盘,从磁盘角度来说则是输入了);反之,我们需要把数据从磁盘中取出时,就是一个输入的过程。这时磁盘就是一个 IO 设备,负责将数据具体的写入和读出。

当我们需要跨主机进行通信时,一个常用的方法就是使用网络通信,而网络通信过程中需要借助网络 IO 设备,比如网卡、路由器、交换机等,它们负责数据流的输入和输出。


AruNi_Lu大约 5 分钟计算机基础操作系统
行锁的加锁规则
本文内容

前言

上一篇文章 中,介绍了 MySQL 中的锁类型,其中行级锁分为 Record Lock、Gap Lock 和 Next-Key Lock,那一条 SQL 语句要加行级锁时,应该加那个锁?具体是怎么加的呢?本文就来讲讲 MySQL 行级锁的加锁规则是怎样的。


AruNi_Lu大约 11 分钟数据库MySQL
模板模式(下):模板模式与 Callback
本文内容

前言

上一章 中,讲解了模板模式的原理和应用,其主要功能就是 提高代码的复用性、基于扩展点可以在不改变源码的情况下方便的扩展功能

而我们常用的 Callback 回调技术,也能起到模板模式的两大作用,那他们有什么区别呢?


AruNi_Lu大约 6 分钟设计模式设计模式与范式
模板模式(上):理解模板模式
本文内容

前言

本章来讲解另一个比较常用的行为型设计模式 — 模板模式,该模式主要用来解决 复用和扩展 两个问题。

1. 模板模式原理与实现

1.1 原理

模板模式,全称是模板方法模式(Template Method Design Pattern),GoF 是如下定义的:


AruNi_Lu大约 7 分钟设计模式设计模式与范式
熔断 - 如何防止抖动
本文内容

前言

在微服务架构中,系统的 可用性 是非常重要的,为了避免高并发下服务的崩溃,通常会使用 熔断、限流、降级 等措施。本文就先来讲解服务熔断是什么,它是如何提高系统的可用性的,服务出现抖动了怎么办?

1. 什么是服务熔断?


AruNi_Lu大约 7 分钟微服务架构服务熔断限流与降级
常见负载均衡算法
本文内容

前言

当通过注册中心获取到了某个服务的可用节点列表后,就可以对节点发起请求了。

但是,这个列表中一般都 包含了多个节点,那客户端应该选择哪一个呢?这就需要引入 负载均衡 了。

1. 负载均衡有什么用?


AruNi_Lu大约 12 分钟微服务架构负载均衡
2
3
4
5
...
10