一.前言 1.编译器优化介绍: 由于内存訪问速度远不及CPU处理速度,为提高机器总体性能,在硬件上引入硬件快速缓存Cache,加速对内存的訪问。另外在现代CPU中指令的运行并不一定严格依照顺序运行,没有相关性的指令能够乱序运行,以充分利用CPU的指令流水线,提高运行速度。以上是硬件级别的优化。再看软 ...
分类:
编程语言 时间:
2020-07-16 12:10:40
阅读次数:
64
概览 说这个问题之前得看下几种缓存模式,可以先看下缓存模式(Caching Aside、Read Through、Write Through、Write Behind)这篇文章。 先更新缓存,再更新数据库 考虑两个并发操作:线程A写,线程B读 1、线程A发起一个写操作,第一步delete cache ...
分类:
数据库 时间:
2020-06-26 21:50:54
阅读次数:
143
浅析数据库与缓存的双写一致性问题 缓存由于其高并发和高性能的特性,在项目中被广泛使用。读缓存流程如下图: 读取缓存流程 双写一致性有以下三个要求: 缓存不能读到脏数据 缓存可能会读到过期数据,但要在可容忍时间内实现最终一致 这个可容忍时间尽可能的小 要想同时满足上面三条,可以采用读请求和写请求串行化 ...
分类:
数据库 时间:
2020-06-26 12:27:14
阅读次数:
58
DWD(Data Warehouse Detail):数据明细层,结构和粒度与原始表保持一致,对ODS层数据进行清洗(取出空值、脏数据、超过极限范围的数据)。 DWD层的数据来源于ODS原始数据层,在原始数据层的Hive表里,只有一个字段,存储了原始的一条条日志信息,下面以事件(如商品点击事件,展示 ...
分类:
其他好文 时间:
2020-06-26 01:33:52
阅读次数:
262
本人写此随笔时,是在做进销存库存业务时出现了前后数量不等的情况才做一下记录和分享,之前我们很多的开发人员再存储过程中喜欢select......into form 表 将需要的字段数据放入到变量,然后再在随后的业务中后对变量进行修改后,再update回表中,而这时就会导致脏数据的出现; 对此,我认为 ...
分类:
数据库 时间:
2020-06-23 15:54:09
阅读次数:
71
Spring 的核心特性是什么?Spring 优点? Spring 的核心是控制反转(IoC)和面向切面(AOP) Spring 优点: 程序员必须掌握的Java 框架,学会之后50k不是问题 (1)方便解耦,简化开发 (高内聚低耦合) Spring 就是一个大工厂(容器),可以将所有对象创建和依赖 ...
分类:
编程语言 时间:
2020-06-20 22:13:13
阅读次数:
55
1 事务的隔离级别 1.1 数据库事务并发问题 假设现在有两个事务:Transaction01和Transaction02并发执行。 ①脏读 [1]Transaction01将某条记录的AGE值从20修改为30。 [2]Transaction02读取了Transaction01更新后的值:30。 [ ...
分类:
编程语言 时间:
2020-06-09 23:55:14
阅读次数:
114
前言 本节内容计划是讲解TLB与高速缓存的关系,但是在涉及高速缓的前提是我们必须要了解操作系统缓存原理,所以提前先详细了解下缓存原理,我们依然是采取循序渐进的方式来解答缓存原理,若有叙述不当之处,还请批评指正。 缓存原理 高速缓存被划分为多个块,其大小可能不同,缓存中的块数通常为2的幂。如下为一个具 ...
分类:
系统相关 时间:
2020-06-07 21:20:25
阅读次数:
93
Redis是一个支持持久化的内存数据库,也就是说redis需要经常将内存中的数据同步到磁盘来保证持久化。redis支持四种持久化方式,一是 Snapshotting(快照)也是默认方式;二是Append-only file(缩写aof)的方式;三是虚拟内存方式;四是diskstore方式。下面分别介 ...
分类:
其他好文 时间:
2020-05-28 21:47:49
阅读次数:
82
Linux系统下的多线程遵循POSIX线程接口,称为 pthread。编写Linux下的多线程程序,需要使用头文件pthread.h,连接时需要使用库libpthread.a。顺便说一下,Linux 下pthread的实现是通过系统调用clone()来实现的。clone()是 Linux所特有的系统 ...
分类:
编程语言 时间:
2020-05-13 14:13:40
阅读次数:
85