分布式系统中唯一 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

Vim 的 normal 命令

normal 命令指定是 Vim 下可以通过 normal 来指定执行 Normal 模式下的命令,以便于达到快速编辑大量文本的操作。 比如说要批量注释一批代码,需要在行前插入 # 替换: :%s/^/#/g visual block: gg<Ctrl-v>I#<Esc> 注释第一行后用 dot command 重复执行每一行 . 我们可以用 normal 命令实现上述需求,步骤: 光标定位到首行,执行: I#<Esc> 选中之后的所有行 jVG 然后执行 :'<,'>n Read more ...

2017-11-03 vim , linux

Vim 中的宏命令

Vim 的设计哲学中有这样一句话:”if you write a thing once, it is okay. However if you’re writing it twice or more times, then you should find a better way to do it”. Vim 的 Macro 就是用来解决重复的问题。在 Vim 寄存器的文章里面已经对 macro 有所涉及, macro 的操作都是以文本的方式存放在寄存器中。 简单使用 录制 macro,在普通模式下使用 q + [a-z] 26 个字母中的一个: Read more ...

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

有一个全平台的Markdown编辑器--Typora

很早开始我就使用 haroopad ,同样是一款简洁,跨平台的 markdown 编辑器,而在 Linux 平台除非遇到特殊情况想要仔细预览效果,我也一般都只在 Vim 中直接以纯文本形式编辑 markdown。但是为什么要再来试用这样一个编辑器呢,一是我不止一次得看到别人推荐,二来也是好奇心作祟。 Typora 一如她官网 —- https://typora.io/ 的简洁。没有多余的元素,直接面向文本,好评。下面也不用介绍他的功能多少多少,这种一般直接看他的官方 feature 介绍,看使用帮助就行。下面就介绍几个比较让我开心的功能。 更加快捷的 Read more ...

2017-11-02 Typora , markdown , Linux , Windows

每天学习一个命令:ifconfig 查看网络配置信息

Windows 上有 ipconfig ,Linux 上有一个类似的工具,就是 ifconfig (interfaces config)。ifconfig 工具不仅可以被用来简单地获取网络接口配置信息,还可以修改这些配置。 慎重提示:下面的所有相关命令,在清除明白其含义之后再输入到终端,另外不要远程到服务器执行,下面的命令可能导致远程服务器网络配置异常 命令格式 ifconfig [device] [parameter] 命令功能: ifconfig 命令用来查看和配置网络设备。当网络环境发生改变时可通过此命令对网络进行相应的配置。 命令参 Read more ...

2017-10-31 linux , command , network , ip , arp

最近文章

  • Claude Code 第三方 API 代理配置 Headroom 最近在给自己的 AI 编程工作流加入 [[Headroom]] 上下文压缩工具时,遇到了一个需要特别注意的配置问题。相信有不少人和我一样,为了降低成本或者改善访问体验,已经在 [[Claude Code]] 或 [[Codex]] 里配置了第三方 API 代理,比如一些第三方聚合平台或者自建的转发服务。这时候想再套上一层 Headroom 做 Token 压缩,就需要特别注意配置细节,不然两层代理会打架。
  • Headroom:让 AI Agent 少花冤枉钱的上下文压缩工具 最近一段时间我在深度使用 [[Claude Code]] 做开发工作,用得越多,账单就越触目惊心。一次稍微复杂一点的任务,比如让它读取几个文件、搜索一下代码、跑一下测试,轻轻松松就能烧掉超过 100K 的 Token。更让人无奈的是,这 100K 里面有相当大一部分是重复冗余的内容——工具调用的输出、日志、搜索结果,它们被原封不动地塞进上下文,再一次次地发给模型,而模型其实只需要其中很小一部分关键信息。
  • 用 Harbor 搭建私有 Docker Registry:从安装到日常使用的完整实践 我维护过几个跑在自己服务器上的小项目,构建出来的 [[Docker]] 镜像最早都是直接推到 [[Docker Hub]] 上的。用了一段时间之后开始觉得别扭:一些只在内网跑的服务镜像,没必要也不应该传到公开的仓库;Docker Hub 对匿名拉取做了限流之后,CI 流水线偶尔会因为触发了速率限制而失败;再加上想给不同的项目、不同的同事分配不同的访问权限时,公共仓库这套体系根本满足不了。折腾到后来我意识到,是时候在自己的机器上搭一个真正能用的私有镜像仓库了。
  • 用 New API 打造个人 AI 网关:统一管理所有大语言模型接口 这段时间我同时用着好几个大语言模型服务:日常写作和代码靠 [[Claude]],轻量任务交给 [[Codex]],搜索增强用 [[Antigravity]],还有几个本地跑着 [[Ollama]] 的小模型供离线场景使用。每个平台各自的 API Key 散落在项目环境变量里,月底要去好几个后台分别对账,想横向对比两个模型的输出还得打开不同的网页或客户端来回切换,很费事。
  • Surfingkeys:比 Vimium 更强大的浏览器键盘控制扩展 最早接触 [[Vimium]] 是在学习 Vim 编辑器之后,那种能用键盘完全控制浏览器的感觉确实让人着迷。不用频繁移手到鼠标,链接跳转、页面滚动、标签切换全用键盘搞定,效率提升的体验是实实在在的。用了几年 Vimium 之后,我开始接触到 [[Surfingkeys]],起初以为不过是另一个同类扩展,但深入用下来才发现这两者的差距远比我想象的大。