0%

传说地球上本没有火种,那时人类的生活非常困苦。普罗米修斯为了给人类造福,就冒着生命危险,从太阳神阿波罗那里去偷走了一个火种,给人类带来了光明,是一位让人敬仰的神。他因此而受到宙斯的处罚,被绑在高加索山,每日忍受风吹日晒和鹫鹰啄食,后被赫拉克勒斯救出。

阅读全文 »

通过Github Action自动定时运行checkin.py脚本,每日进行GLaDOS的签到,并发送通知到自己的微信上。

1. 准备工作

1.1 github action

  • 通过Github Action自动定时运行checkin.py脚本。

  • 登录GLaDOS后获取cookies。(简单获取方法:浏览器快捷键F12,打开调试窗口,点击“network”获取)

  • 然后通过“Server酱”(http://sc.ftqq.com/3.version),自动发通知到微信上。

  • 可以发送到自己的企业微信

阅读全文 »

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

1. hash算法

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

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

img img

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

阅读全文 »

1. 分布式锁

1.1 特点

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

1.2 实现方式

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

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

1. 介绍

1.1 常用插件

  • Admonition :markdown好看标识

  • Calendar:日期插件

  • Clear Unused Images:清理未引用的图片

  • Code Editor Shortcuts:类似vscode编辑快捷键设置,例如 cmd+d复制行

  • Commander:调整命令显示位置【必备】

  • Custom Attachment Location:自定义图片位置,类似Typora设置

  • Dataview:查询统计神器

阅读全文 »

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

1. 基础操作

1.1 图片标准markdown语法

把使用WIKI链接关闭

image-20231117235245725
阅读全文 »

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

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

阅读全文 »