• Redis高阶

    假设我们只有一个Redis实例,数据是都保存在内存中的,如果此时Redis故障宕机了,这就意味着业务数据全部丢失了,这是无法接受的,如何处理呢? 这就需要Redis有持久化的能力,具体来说就是把内存中的数据持久化到磁盘,实例宕机时,我们可以从磁盘中快...
  • Mock

    背景在产品开发过程中,某个服务或前端依赖一个服务接口,该接口可能依赖多个底层服务或模块,或第三方接口,比如说服务A依赖服务B,服务B又依赖服务 C,如下图所示: 这种依赖的问题会导致原本的需求目的是要验证服务A,但由于所依赖的服务B或者服务C不稳定...
  • 幻读及MVCC间隙锁

    什么是MVCC 如果读取的行正在执行DELETE或UPDATE,这时读取操作不会因此去等待行上锁的释放,相反的innodb存储引擎会读取行的一个快照数据。 当前读和快照读 当前读:读取的是最新的数据,而不是历史数据 当前读是基于next-key lo...
  • Muti-Range Read(MRR)优化

    MySQL5.6版本开始支持MRR优化,目的是为了减少磁盘访问,并将磁盘随机访问转化为较为顺序的数据访问。这对IO-bound型的SQL查询语句可带来性能极大的提升。MRR优化可适用于range ref eq_ref类型的查询 IO bound:如果...
  • AQS原理

    公平锁和非公平锁 先到临界区的线程比后到的线程一定更快的获取锁(公平锁) 公平锁就是把竞争的线程放入一个先进先出的队列中,持有锁的线程执行完了,唤醒队列的下一个线程获取锁就好了, 非公平锁是线程尝试获取锁,如果获取到锁就直接执行,获取不到锁,放入队列...
  • Redis多线程模型

    为什么redis6.0之前不使用多线程? 使用redis时,几乎不存在cpu成为瓶颈的情况,Redis主要受限于内存和网络 在Linux系统上,Redis通过pipelining每秒可以处理100万个请求,所以如果应用程序主要使用 O(N) 或O(l...
  • 动态代理

    编译阶段不用关心代理的类,运行阶段才指定代理哪一个对象。 InvocationHandler接口是JDK提供的动态代理接口, 自定义动态代理类实现InvocationHandler接口。 invoke方法是必须实现的,它完成对真实方法的调用, 给定一...
  • 微服务架构原理深度解析

    注册中心与CAP理论Consistency一致性 Availability可用性 Partition tolerance 分区容错性 分区容错性:遇到某节点或网络分区出现故障时,仍然能够对外提供满足一致性和可用性的服务 ,例如X和Y节点出现故障,但仍...
  • JVM笔记

    Java中99%的对象放在堆中,堆是垃圾回收主要操作区域。 新生代分为eden区,survivor1和survivor2区 比例是8:1:1 新生代的对象在经过15次GC之后进入老年代,大对象直接进入老年代。 绝大多数最新被创建的对象会分配到新生代...
  • 计算机网络读书笔记

    ARP协议(网络层协议)ARP是解决同一局域网上主机或路由器ip地址和硬件地址映射问题。 知道机器的ip地址,想要找到机器的硬件地址。 我们知道网络层使用的是ip地址,但实际网络传送数据帧,使用的还是网络的硬件地址。 每一台主机上都有一个ARP高速缓...