Docker的基本使用

Docker概述

Docker 是一个基于 Go 语言开源的应用容器引擎。

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中。

阅读全文

Redis分布式锁(高级篇系列四)

分布式锁概述

分布式锁,是控制分布式系统之间同步访问共享资源的一种方式。

阅读全文

Redis保证原子性(高级篇系列三)

原子性应该是数据库不可避免的一个话题,在Redis中,它是怎么保证原子性的呢?本篇中我们来了解一下什么是原子性,Redis是怎么保证原子性的。

原子性

原子性是指一个操作是不可中断的,要么全部执行成功要么全部执行失败
举一个比较经典的转账例子来说:A有1000元,B有1000元,A向B转500元,那么银行系统就会先从A的账户扣五百,然后在B的账户上加五百;假设银行系统在向B账户上加钱的时候宕机了,那么A损失了五百元,且B没有收到五百元,这样就有大问题了。原子性就是说:A账户扣款和B账户加钱这两个事件是一个整体的操作,不能中断,要么全部执行成功,要么定义为全部执行失败,这样才不会发生A扣款了而B没有收到钱的问题。

阅读全文

JVM之对象的内存布局(系列五)

前言

本篇中我们会介绍对象的实例化内存布局和怎么去访问定位,这里面的细节和JVM的结构和功能也是息息相关的,下面我们一起来了解一下。

JVM内存架构

为了方便理解阅读,在每篇文章中都会放上架构图。

阅读全文

JVM之方法区(系列四)

方法区的理解

Java虚拟机规范中是这样定义方法区的: 它存储了每个类的结构信息,例如运行时常量池、字段、方法数据、构造函数和普通方法的字节码内容,还包括一些在类、实例、接口初始化时用到的特殊方法。

阅读全文

JVM之堆(系列三)

堆的核心概述

一个JVM实例只存在一个堆内存,堆也是Java内存管理的核心区域。
Java堆区在JVM启动的时候即被创建,其空间大小也就确定了。是JVM管理的最大一块内存空间。
堆内存的大小是可以通过启动参数调节的。

阅读全文