编辑
2021-09-17
编程
00

1. 基础概念

1.1 并发问题的来源

三个基本原则:可见性、原子性、有序性

1.1.1 缓存导致的可见性问题

为了对齐cpu速度与内存速度的差异化,在cpu与内存之间增加了缓存架构,由于预加载cpu处理数据,以此来充分利用 cpu。在单核 cpu 的时候,只有一份缓存,用起来并没有问题,而当多核cpu协同处理问题时,就会出现缓存与实际数据不一致的情况。于是cpu引入了,一致性的协议MESI

在编程中,一个线程对共享变量的修改,另外一个线程能够立刻看到,我们称为可见性。

编辑
2021-08-23
编程
00

1. 分布式事务协议

Two/Three Phase Commit

编辑
2021-07-09
其他
00

人间忽晚,山河已秋。暮然回首,悠悠已三年。

面试我们公司的时候,本来是觉得进不了,除了基础回答得还行,所有分布式框架,原理我都不懂。尤其面试官都在和我说,“你下次简历可以写上你平时自己做的东西,不一定是你上家公司的项目”,我基本就确定不过了。感觉挺可惜的,因为面试官问的东西我在上家公司基本没接触过。但是结果显而易见,我还是进了。挺惊喜,也挺感谢的。

编辑
2021-04-22
编程
00

1. 锁的分类

1.1 大纲

  • 是否锁同步资源:
    • 锁住:悲观锁
    • 不锁住:乐观锁
  • 锁同步资源失败,是否阻塞
    • 不阻塞:自旋锁,适应性自旋锁
  • 同步资源竞争区别:
    • 不锁资源,一个线程修改资源,其他线程重试:无锁
    • 同一个线程执行同步资源时自动获取资源:偏向锁
    • 多个线程竞争同步资源时,没有获取资源的线程自旋等待锁释放:轻量级锁
    • 多个线程竞争同步资源时,没有获取资源的线程阻塞等待唤醒:重量级锁
  • 多线程竞争锁时是否要排队:
    • 排队:公平锁
    • 不排队:非公平锁
  • 一个线程中多个流程能不能获取同一把锁
    • 能:可重入锁
    • 不能:非可重入锁
  • 多个线程能不能共享一把锁:
    • 能:共享锁
    • 不能:排它锁
编辑
2021-04-15
编程
00

base elasticsearch

1.概述

1.1 基本概念

  • documents : 可以建立索引的基本单位

  • index:具有相似特征的 documents 集合

  • type:曾经是 index 的逻辑类别或分区,准许在 index 中创建不同类型的 documents, 但是 type在6.0以后被弃用了

  • mapping: 处理数据的方式和规则

  • Near Realtime (NRT):轻微的延迟(通常是 1 秒以内)