用余弦相似度找出 Obsidian 笔记中的相近内容
我的 Obsidian 仓库里有不少零散笔记。写一篇新笔记时,经常会怀疑:这个主题以前是否已经写过?两篇笔记是否只是在用不同的词描述同一件事? 这类需求不需要先搭建 RAG…
共16篇文章
我的 Obsidian 仓库里有不少零散笔记。写一篇新笔记时,经常会怀疑:这个主题以前是否已经写过?两篇笔记是否只是在用不同的词描述同一件事? 这类需求不需要先搭建 RAG…
本文范围 实时协同编辑让多个站点维护同一共享文档的副本,并允许用户在本地副本上产生编辑。本文将插入、删除等编辑请求称为用户操作,将字符、段落等被操作的文档内容称为文档元素;在内部数据结构中被标识和排序的文档元素统称为操作对象。网络异步传播时,不同站点可能基于不同文档状态产生并发操作。 操作转换(OT…
Yjs 中的 Y.Text 是一种 CRDT(Conflict-free replicated data types),用于处理分布式环境中的实时协作文本编辑。Y.Text 允许多个用户同时在文本任意位置插入和删除,无需处理冲突或数据不一致。 Y.Text 的实现涉及两个概念: 操作的唯一标识符: 在 Yjs…
在 Yjs 中,操作日志(Operation Log)记录对数据的修改,包括插入字符和删除字符。每个操作包含操作类型(插入或删除)、位置、内容和唯一标识符(用户 ID 与时间戳)。操作日志可生成差异(delta),并发送给其他副本以更新其状态。 收到新操作后,Yjs…
向量时钟(Vector Clock)是分布式系统中记录和比较事件发生顺序的数据结构。每个节点维护一个向量时钟,其中每个元素对应一个系统节点的逻辑时钟值。逻辑时钟值是非负整数,表示节点已发生的事件数量。 在 Yjs 中,每个用户或客户端可以视为一个节点。向量时钟用于追踪各节点的操作顺序。每个 Yjs…
Yjs 是开源 JavaScript 库,实现基于 CRDT(Conflict-free Replicated Data Type)的共享数据类型。多个用户可以在没有中心协调者的条件下并发编辑共享数据。 Yjs 的基本原理可概括为: 数据结构:Yjs 提供多种 CRDT 数据结构,如用于协作文本编辑的 Y.Text…
CRDT(Conflict-free Replicated Data Types)通过合并策略和操作转换,使多个端的协作状态最终保持一致。以下用一个简化的文本编辑器示例说明并发插入的处理方式。 假设端 A 和端 B 同时编辑同一段文本,执行以下操作: 端 A 在光标位置插入字符 ‘X’,生成一个插入操作。 同时,端 B…
题目 给定 m 个数组,每个数组都已经按照升序排好序了。现在你需要从两个不同的数组中选择两个整数(每个数组选一个)并且计算它们的距离。两个整数 a 和 b 之间的距离定义为它们差的绝对值 |a-b| 。你的任务就是去找到最大距离 代码
回溯算法(Backtracking)通过递归枚举选择;当前选择无法满足约束时,撤销最后一次状态修改并尝试其他选择。 最近练习 LeetCode 的组合求和(39)、组合(77)、N 皇后(51)和数独(3…