直接看代码 输出结果 读线程无法感知 INIT_VALUE的变化 原因是因为JVM内存模型 CPU会将内存中的数据存入Cache中,写线程只对“自己”的Cache做修改操作,而读线程无法感知 现代操作系统对这种问题的解决方案大致可以分为以下两种: 1.数据总线加锁 缺点就是多核CPU串行化运行,效率 ...
分类:
其他好文 时间:
2019-10-26 23:26:44
阅读次数:
166
区块链系统是一个分布式系统,而分布式系统的首要问题是一致性的保障。 一致性 定义:一致性(consistency),早期也叫agreement,是指对于分布式系统中的多个服务节点,给定一系列操作,在约定协议的保障下,试图使得他们对处理结果达成“某种程度”的认同。 将可能引发不一致的并行操作进行串行化 ...
分类:
其他好文 时间:
2019-10-22 18:03:48
阅读次数:
146
一般来说,如果允许缓存可以稍微的跟数据库偶尔有不一致的情况,也就是说如果你的系统不是严格要求 “缓存+数据库” 必须保持一致性的话,最好不要做这个方案,即:读请求和写请求串行化,串到一个内存队列里去。 串行化可以保证一定不会出现不一致的情况,但是它也会导致系统的吞吐量大幅度降低,用比正常情况下多几倍 ...
分类:
数据库 时间:
2019-10-16 11:29:37
阅读次数:
94
如果不是严格要求“缓存和数据库”必须保证一致性的话,最好不要做这个方案:即 读请求和写请求串行化,串到一个内存队列里面去。串行化可以保证一定不会出现不一致的情况,但会导致系统吞吐量大幅度降低。 解决这个问题的最经典的模式,就是Cache Aside Pattern。 Cache Aside Patt ...
分类:
数据库 时间:
2019-10-15 13:29:50
阅读次数:
86
事务的四大特性 1.原子性 2.一致性 3.隔离性 4.持久性 四种事务隔离级别 1.未提交读 2.已提交读 3.可重复读 4.可串行化 事务隔离要解决三个问题 1.脏读,读取到了未提交事务的数据,比如未提交读就会产生这种数据 2.不可重复读,在同一个事务里两次读取的数据不一样,因为在两次读取的过程 ...
分类:
数据库 时间:
2019-10-13 21:01:53
阅读次数:
133
http://www.ruanyifeng.com/blog/2016/07/yaml.html 1.简介 YAML 语言(发音 /?jæm?l/ )的设计目标,就是方便人类读写。它实质上是一种通用的数据串行化格式。 它的基本语法规则如下。 大小写敏感 使用缩进表示层级关系 缩进时不允许使用Tab键 ...
分类:
其他好文 时间:
2019-10-12 14:42:03
阅读次数:
109
reids事务 概念 可以一次执行多个命令,本质是一组命令的集合。一个事务中的所有命令都会序列化,按顺序地串行化执行而不会被其它命令插入,不许加塞 作用 一个队列中,一次性、顺序性、排他性的执行一系列命令 常用命令 正常操作事务: 放弃事务: 其实redis对于事务是部分支持: 例如incr k1虽 ...
分类:
其他好文 时间:
2019-09-26 00:24:07
阅读次数:
87
Google Protocol Buffer( 简称 Protobuf) 是 Google 公司内部的混合语言数据标准,目前已经正在使用的有超过 48,162 种报文格式定义和超过 12,183 个 .proto 文件。他们用于 RPC 系统和持续数据存储系统。 Protocol Buffers 是 ...
分类:
其他好文 时间:
2019-09-11 18:27:27
阅读次数:
106
mysql数据库有四种隔离级别,分别是读未提交、读已提交,可重复读,串行化,mysql默认的隔离级别是可重复读。 读未提交会出现脏读,不可重复读和幻读的问题,读已提交会出现不可重复读和幻读的问题,可重复读会出现幻读的 问题,可串行化可不会出现以上三种问题。虽然随着隔离级别的提高,出现的问题会变得很少 ...
分类:
数据库 时间:
2019-09-07 13:05:17
阅读次数:
128
Redis入门(六)——Redis事务 目录: redis事务简介 redis事务的使用 小结 1.redis事务简介 事务指的是可以一次执行多个命令,本质是一组命令集合,一个事务中的所有命令都会序列化,按顺序的串行化执行而不会被其他命令插入。银行转账就是最经典的事务场景之一。 redis事务用于一 ...
分类:
其他好文 时间:
2019-08-31 19:50:47
阅读次数:
83