Instagram 的两种ID

Instagram 的 ID 生成策略是经过精心设计过的。1 每一秒 Instagram 都会收到无数用户上传的照片,在内部使用 [[PostgreSQL]] 分片存储到不同的服务器上。 这就产生了一个问题,要设计一个唯一 ID 生成方法用来标记系统中发布的每一张图片。 系统唯一 ID 需要满足如下条件: ID 应该是时间有序的,一组照片 ID 列表不再需要外部信息就可以排序(UUID 就不合适,因为完全无序) ID 最好是 64bit ,可以节省存储空间,索引也可以更小,也方便存储到 Redis 这样的系统中 系统应该尽可能少引入外 Read more ...

2017-11-13 id , instagram , decode , reverse

每天学习一个命令:iperf 测量带宽

iperf 命令是一个网络性能测试工具。iperf 可以测试 TCP 和 UDP 带宽质量。iperf 可以测量最大 TCP 带宽,具有多种参数和 UDP 特性。iperf 可以报告带宽,延迟抖动和数据包丢失。利用 iperf 这一特性,可以用来测试一些网络设备如路由器,防火墙,交换机等的性能。 iperf 在内存中运行,不会涉及到文件系统。iperf 存在非常多的版本,Windows,Linux,Android,iOS 都有对应的版本。可以到官网下载 安装 Linux 下安装: sudo apt-get install iperf 其他系统到 Read more ...

2017-11-11 linux , iperf , network , bandwidth

md5 散列

MD5 全称为 Message-Digest Algorithm ,一般用来保证信息传输的完整一致,MD5 的结果是固定长度 128bit 。MD5 算法最开始是为密码学而设计,但是后来被发现有很大的缺陷,所以后来就用来校验文件的完整性(无意识而造成的不完整,比如下载)。MD5 在非密码学领域也有其他用途,比如在一个数据库中快速检查一个 key 是否存在。 密码学的 hash 方法一个最基本的要求是,计算机难以通过计算来找到两个不同的内容拥有同一个 hash 值,MD5 无法满足该基本条件。MD5 算法无法防止碰撞,无法用于安全性验证,对于安全性高的资 Read more ...

2017-11-10 md5 , linux , 密码,

LevelDB 使用

nodejs wrapper: https://github.com/Level/levelup 源码: https://github.com/google/leveldb LevelDB 的原理 介绍 还有 这篇 LevelDB 的 C++ 接口 使用 LevelDB 在 iOS 下的 使用 Read more ...

2017-11-08 database , keyvalue , redis , google

分布式系统中唯一 ID 的生成方法

在分布式系统存在多个 Shard 的场景中, 同时在各个 Shard 插入数据时, 怎么给这些数据生成全局的 unique ID? 在单机系统中 (例如一个 MySQL 实例), unique ID 的生成是非常简单的, 直接利用 MySQL 自带的自增 ID 功能就可以实现. 但在一个存在多个 Shards 的分布式系统 (例如多个 MySQL 实例组成一个集群, 在这个集群中插入数据), 这个问题会变得复杂, 所生成的全局的 unique ID 要满足以下需求: 唯一性,保证生成的 ID 全局唯一 今后数据在多个 Shards 之间迁移 Read more ...

2017-11-08 java , 发号器 , id , auto-increase , mysql

flower 简单使用

Flower 是一个基于 Web 的监控和管理工具,可以用在 Celery 集群的监控和管理。和 Celery 配合使用非常不错。 Flower 可以查看 Celery 队列中 task 的数量,可以用来监控 worker 的状态并进行简单的管理,比如调整 worker 的 pool size 和 autoscale 设置,可以用来查看当前处理的 tasks, 等等。 安装 使用 pip 安装 Flower pip install flower 或者安装开发版 pip install https://github.com/mher/flowe Read more ...

2017-11-07 flower , monitor , linux , celery , django

每天学习一个命令:zip and unzip 压缩及解压缩

zip 是一个非常常见的压缩工具,很多平台包括 Unix, VMS, MSDOS, OS/2, Windows 9x/NT/XP, Minix, Atari, Macintosh, Amiga, and Acorn RISC OS 等都有应用。zip 结合了打包和压缩。 基本使用 参数非常多 zip options archive inpath infile zip [-aABcdDeEfFghjklLmoqrRSTuvVwXyz!@$] [--longoption ...] [-b path] [-n suffixes] [-t date] [- Read more ...

2017-11-06 linux , command , zip , tar , archive

一次 vim 的简单介绍

下面是一次 vim 的组内介绍的大纲。记录一下。 大纲 Vim 多模式编辑器 Normal mode Insert mode Visual mode Command mode 插入模式 i 进入 insert mode,在光标为之前进入插入模式 I 行首非空字符前插入 , I 等同于 `^i` s 删除光标下字符,并进入 insert mode, 等同于 `cl` S 删除光标所在一行,并进入 insert mode 行首 , 等同于 `^C` a 光标之后进入 insert mode A 光标移动到行尾并进入 insert mode , 等 Read more ...

2017-11-05 vim , linux , editor

在 Linux 下安装 Charles

Charles 是Mac上一款非常流行的抓包软件 , 但其实各大平台上 Charles 都有安装包。这篇文章主要就是讲一下在 Linux 平台上(Debian/Ubuntu) 系上安装 Charles 。 使用 APT 源安装 Charles 拥有 APT 源,首先安装 PGP 公钥,当前公开的秘钥为 1AD28806, 他的 fingerprint 为 4BA7 DB85 7B57 0089 7420 96E1 5F16 B97C 1AD2 8806: wget -q -O - https://www.charlesproxy.com/packa Read more ...

2017-11-04 linux , charles , http , mitmproxy , https , android , ios , tcp

Vim 中的寄存器

计算机中通常所说的寄存器 Register 一般指的是 CPU 中的寄存器,用来暂存 CPU 处理所需要的指令,数据等等。 Vim 中同样也有寄存器的概念,使用的方式和概念也和 CPU 是非常类似的。 Vim 的寄存器可以看成 Vim 中额外用来存储信息的区域,虽然看不见,但是如果使用 x, s, y, p 等等命令的时候都无意识的使用到了 Vim 的寄存器 (register). Vim 中每一个 register 都可以通过添加双引号的方式来访问,比如 "a 来访问 a 寄存器。 可以通过选择然后使用 y 来将内容放到寄存器中,比如 "ay 来 Read more ...

2017-11-03 vim , linux , editor , skill , vim-register

最近文章

  • HomeShare 让本地电脑文件夹成为文件分享服务器 前些天出门拍了很多照片,回来从 SD 卡导出之后就想有一个可以快速一键分享出去的方法,通过微信传,虽然可以通过笔记一次发送超过 9 张图片,但是还是需要将照片上传到微信的笔记里面,虽然我之前也有使用自己的在线图库,但依然避免不了上传等待的过程,并且如果照片比较大时,等待的时间会很长。所以这几天我一直再想能不能有一个方法可以直接将本地的文件夹共享出来,或者直接让别人将图片一次性发送到我本地。
  • Dola 你的私人智能 AI 助手轻松管理日程 我个人一直使用 Google Calendar 作为日程管理,很久以前也购买了一个叫做 Checker Plus 的 Chrome 插件,可以直接在 Chrome 的插件栏查看日程,并且还可以直接通过自然语言来创建日程,以及在日程之前弹窗提醒,实话说这款插件已经能满足我 90% 的日程安排了。
  • K3s 部署 Bitwarden 我之前一直是在一台机器上使用 Docker compose 安装了 Bitwarden,但是这样存在一个隐患,那就是如果这一台机器宕机了,或者发生任何意外,那么我可能有一段时间无法访问我的所有密码仓库,所以为了避免这样的问题,尤其是在我已经稳定运行 K3s 一段时间之后,我就想着将 Bitwarden 迁移到 K3s 上,并且我希望直接使用 Bitwarden 历史的数据,并且也直接使用原来的域名,密码等等,这样就不需要让我所有的设备重新再登录一遍。那么本文就记录一下我在 K3s 上搭建 Bitwarden ,以及将历史数据迁移到 K3s 中的过程。
  • K3s 中给节点添加标签并实现 Pod 调度控制 给 K3s 中的节点添加标签并实现 Pod 调度是一个非常常见的需求,特别是当你希望某些 Pod 只在特定地理位置的节点,比如美国,日本,上运行的时候。
  • 使用 Claw Cloud 免费部署 Gemini 反向代理教程 前两天介绍过永久免费的 Claw Cloud Run,本文将介绍一下如何使用 Claw Cloud Run 来免费部署一个 Gemini API 反向代理服务。