My Blogs

JVM 内存模型(JMM) 三大特性

Tags: JVM , JMM , Java , 内存模型

Published 2021年10月19日 21:59 by james

特性

原子性

原子性:指一个操作是不可中断的,即使是多个线程一起执行的时候,一个操作一旦开始,就不会被其他线程干扰

比如,对于一个静态全局变量int i,两个线程同时对它赋值,线程A 给他赋值 1,线程 B 给它赋值为 -1,。那么不管这两个线程以何种方式,何种步调工作,i的值要么是1,要么是-1,线程A和线程B之间是没有干扰的。这就是原子性的一个特点,不可被中断。

原子性表示一步操作执行过程中不允许其他操作的出现,直到该操作的完成。

在多线程环境下,原子性表现在,当前线程执行字节码的过程中不允许切换到其他线程,去执行其他的字节码。

在JMM抽象模型中定义了8中原子操作。

一致性相关概念

Tags: 一致性 , 分布式一致性 , 分布式系统

Published 2021年10月05日 18:00 by james

TL;DR

一致性模型分类1

由于异常的存在,分布式存储系统设计时往往会将数据冗余存储多份,每一份称为一个副本(replica/copy)。这样,当某一个节点出现故障时,可以从其他副本上读到数据。可以这么认为,副本是分布式存储系统容错技术的唯一手段。由于多个副本的存在,如何保证副本之间的一致性是整个分布式系统的理论核心。

场景说明

我们以具体实例来说明各种一致性的具体含义。首先,定义以下场景及术语。

这个场景包含三个组成部分: - 存储系统: 存储系统可以理解为一个黑盒子,它为我们提供了可用性和持久性的保证。 - 客户端A: …

OAuth相关概念

Tags: Authorization , OAuth

Published 2021年01月26日 03:41 by james

OAuth2.0 授权方式

OAuth2.0 的授权简单理解其实就是获取令牌(token)的过程,OAuth 协议定义了四种获得令牌的授权方式(authorization grant )如下:

但值得注意的是,不管我们使用哪一种授权方式,在三方应用申请令牌之前,都必须在系统中去申请身份唯一标识:客户端 ID(client ID)和 客户端密钥(client secret)。这样做可以保证 token 不被恶意使用。

下面我们会分析每种授权方式的原理,在进入正题前,先了解 OAuth2.0 授权过程中几个重要的参数:

企业级数据库设计十个原则

Tags: 原则 , 数据库

Published 2020年10月15日 10:00 by james

3个基础原则

4个扩展性原则

影响系统的性能和容量

3个完备性原则

数学分析笔记

Tags: 数学 , LaTeX , 算法

Published 2017年11月01日 23:00 by james

$\ln x$ 导数的推导

$$ \frac{d}{dx}\ln x = \lim_{h \to 0} \frac{\ln(x + h) - \ln(x)}{h} = \lim_{h \to 0} \frac{\ln\left(\frac{x + h}{x}\right)}{h} = \lim_{h \to 0} \frac{\ln\left(1 + \frac{h}{x}\right)}{h} $$ …