Levon's Blog

微信: L6241425

当系统容量增多时,就会将数据水平切分到不同的节点来存储,也就是将数据分布到了不同的节点。

1. hash算法

哈希算法最简单的做法就是进行取模运算,比如分布式系统中有 3 个节点,基于 hash(key) % 3 公式对数据进行了映射。

但是有一个很致命的问题,如果节点数量发生了变化,也就是在对系统做扩容或者缩容时,必须迁移改变了映射关系的数据,否则会出现查询不到数据的问题。

img img

假设总数据条数为 M,哈希算法在面对节点数量变化时,最坏情况下所有数据都需要迁移,所以它的数据迁移规模是 O(M),这样数据的迁移成本太高了。

阅读全文 »

1. 分布式锁

1.1 特点

  • 互斥性: 同一时刻只能有一个线程持有锁
  • 可重入性: 同一节点上的同一个线程如果获取了锁之后能够再次获取锁
  • 锁超时:和J.U.C中的锁一样支持锁超时,防止死锁
  • 高性能和高可用: 加锁和解锁需要高效,同时也需要保证高可用,防止分布式锁失效
  • 具备阻塞和非阻塞性:能够及时从阻塞状态中被唤醒

1.2 实现方式

我们一般实现分布式锁有以下几种方式:

  • 基于数据库
  • 基于Redis
  • 基于zookeeper
阅读全文 »

Obsidian是基于 Markdown文件的本地强大知识管理软件,就让Obsidian作为你的第二大脑吧。

1. 基础操作

1.1 图片标准markdown语法

把使用WIKI链接关闭

image-20231117235245725
阅读全文 »

1. 介绍

1.1 常用插件

  • Admonition :markdown 好看标识
  • Calendar:日期插件
  • Clear Unused Images:清理未引用的图片
  • Code Editor Shortcuts:类似 vscode 编辑快捷键设置,例如 cmd+d 复制行
  • Commander:调整命令显示位置【必备】
  • Custom Attachment Location:自定义图片位置,类似 Typora 设置
  • Dataview:查询统计神器
阅读全文 »

如果我们要 navicat 连接线上的数据库,一般不允许在本地直接连线上的数据库地址。一般配置 navicat 的 ssh 隧道实现先登上跳板机,再链接数据库。

可以 navicat 的 ssh 隧道只支持一级,如果是两层怎么办呢?这时候我们可以使用 ssh 端口转发。

阅读全文 »

用FastWQ,一直都是在线请求字段,速度很慢,并且容易被Ban IP。后来了解了本地mdx词典,发现效果更好,速度更快,更有各位大神制作的精美词典。

制作教程:

阅读全文 »

Anki,一个学习辅助记忆工具中封神的存在。

1. 使用

1.1 安装

mac免费,ios168,淘宝可以1元购买。

阅读全文 »
0%