求阙厅

春有百花秋有月,夏有凉风冬有雪。若无闲事挂心头,便是人间好时节。

Java基础 系列 反射

相关概念 反射主要是指程序可以访问、检测和修改它本身状态或行为的一种能力,通过反射可以调用私有方法和私有属性,大部分框架也都是运用反射原理的 Java 反射机制是在运行状态中: 对于任意一个类,都能够知道这个类的所有属性和方法 对于任意一个对象,都能够调用它的任意一个方法和属性 这种动态获取信息以及动态调用对象方法的功能称为Java语言的反射机制。 反射 就是把 J...

分布式 系列 一致性模型

分布式存储系统通常会通过维护多个副本来进行容错,以提高系统的可用性。这就引出了分布式存储系统的核心问题一如何保证多个副本的一致性? 对于一致性,可以分别从客户端和服务端两个不同的视角来理解。从客户端来看,一致性主要是指多并发访问时如何获取更新过的数据的问题。从服务端来看,则是更新如何复制分布到整个系统,以保证数据最终的一致性。因此,可以从两个角度来查看一致性模型:以数据为中心的一致性模型和...

分布式 系列 Redis 高并发、高可用解决方案

分布式 缓存中 如何进行 分库?存储节点 的变化如何处理? Redis 如何保证 高可用? Redis 主从架构 单机 的 redis,能够承载的 QPS 大概就在上万到几万不等。对于缓存来说,一般都是用来支撑读高并发的。因此架构做成主从(master-slave)架构,一主多从,主负责写,并且将数据复制到其它的 slave 节点,从节点负责读。所有的读请求全部走从节点。这样也...

分布式 系列 分布式事务

分布式事务是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。例如在大型电商系统中,下单接口通常会扣减库存、减去优惠、生成订单 id, 而订单服务与库存、优惠、订单 id 都是不同的服务,下单接口的成功与否,不仅取决于本地的 db 操作,而且依赖第三方系统的结果,这时候分布式事务就保证这些操作要么全部成功,要么全部失败。本质上来说,分布式事务就...

技术书籍汇总

JVM 深入理解java虚拟机-JVM高级特性与最佳实战 Redis Redis 设计与实现 并发 并发编程的艺术 Mysql Innodb引擎

存储 系列 索引

...

索引 为了高效地查找数据库中特定键的值,需要新的数据结构: 索引。 索引背后的基本想法都是保留一些额外的元数据,这些元数据作为路标,帮助定位想要的数据。 如果希望用几种不同的方式搜索相同的数据,在数据的不同部分,我们可能定义多种不同的索引。 索引是基于原始数据派生而来的额外数据结构。很多数据库允许单独添加和删除索引,而不影响数据库的内容,它只会影响查询性能。 维护额外的结构势必会引入开销...

存储 系列 存储结构

...

大多数存储系统,为了能做到快速查找,都会采用树或者哈希表这样的存储结构,数据在写入的时候,必须写入到特定的位置上。比如说,我们在往 B+ 树中写入一条数据,必须按照 B+ 树的排序方式,写入到某个固定的节点下面。哈希表也是类似,必须要写入到特定的哈希槽中去。 在关系型数据库中,通常使用 B+ 树作为索引。B+ 树的数据都存储在叶子节点中,而叶子节点一般都存储在磁盘中。对 B-Tree 类型...

存储 系列 存储引擎

...

存储引擎主要有两个存储引擎家族,即日志结构的存储引擎和面向页的存储引擎,比如B-tree。分别用于大家比较熟悉的两种数据库,即传统的关系数据库和大多数所谓的 NoSQL 数据库。 存储引擎 存储引擎一般包含如下三大类的选择: MySQL 等 SQL 数据库。 LevelDB 和 RocksDB:基于排序字符串表(SSTable)算法。 LMDB fn BoltDB 其...

Java 基础 HashMap

深究Java基础

要点: 数组初始长度为16 当链表长度太长(默认超过8)时,链表就转换为红黑树 HashMap 允许有一条记录的 key 为 null,但是对值是否为 null 不做要求。 基础问题 数据底层具体存储的是什么?这样的存储方式有什么优点呢? HashMap 使用哈希表来存储。哈希表为解决冲突,可以采用开放地址法和链地址法等来解决问题,HashMap采用了链地址法。链地址法...

Java 基础 String

深究Java基础

hashcode 引用自 hashcode 的计算公式: s[0]31^(n-1) + s[1]31^(n-2) + … + s[n-1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 // 每个string 的哈希值只计算一次 public int hashCode() { int h = hash; if (h ==...