Skip to main content

Command Palette

Search for a command to run...

Crdt代码例子

Published
1 min readView as Markdown
// 1. 引入 Yjs 库
import * as Y from 'yjs';
import { WebsocketProvider } from 'y-websocket'; // 用于同步

// 2. 创建一个 Yjs 文档
const ydoc = new Y.Doc();
// 3. 创建一个 YMap (类似共享的 JS 对象)
const map = ydoc.getMap('my-map');

// 4. 在本地操作 (CRDT保证合并)
map.set('key1', 'value1'); // 设置值
map.set('key1', 'newValue1'); // 修改值
map.delete('key1'); // 删除 key1 (如果存在)

// 5. 创建一个 YText (用于共享文本)
const text = ydoc.getText('my-text');
text.insert(0, 'Hello'); // 在开头插入 "Hello"
text.insert(5, ' World'); // 在 'o' 后面插入 " World"

// 6. 通过 Provider 同步数据 (例如 WebSocket)
// const provider = new WebsocketProvider('ws://localhost:1234', 'my-room', ydoc);
// 当其他用户修改时, ydoc 会自动更新, 冲突自动解决

CRDT可以用于文档写作,共同编辑

More from this blog

读书《掌握api架构》

API应用程序接口 远程调用,调用服务器方法,拿到结果。一些方法本地电脑跑不起来,调用服务器方法,像是调用本地方法一样,拿到结果。 内部错误信息不要告知客户端,容易被黑客找到漏洞攻击 API网关,后端服务有很多微服务,没有网关需要记住每个微服务的地址,自己查询。有网关,有统一访问后台地址,网关帮你路由到正确地址,查询返回结果。网关还可以身份校验,流量控制。API网关反向代理请求,隐藏内部服务地址。 研究新东西,新东西有新机会 api网关处理外部流量 service mesh处理内部微服务调用。流...

Jan 12, 20261 min read

读书《服务端开发技术、方法与实用解决方案》

分布式系统中,消息中间件,事务中间件 中间件=平台+通信 基础监控工具,Zabbix 服务监控工具,SkyWalking 业务监控工具 业务指的是商业的活动流程 上班的过程中提高自己,提高自己的挣钱能力,勇于承担责任,提高能力,不要混日子 细节拆分+规划 衡量目标,反思复盘 实践中学习,动手练习 通过分层来解决问题,不合理的分层会增加复杂度 尽量避免重写父类方法,子类不能有比父类更严格的限制条件,子类不能改变父类的返回 mongodb数据库适合存储物流信息、游戏信息,社交信息 数据库表设计原则...

Dec 19, 20251 min read

进程线程协程

CPython Internals sample code 读书CPython Internals 最终编译成CPU指令 进程执行顺序取决于操作系统调度,不保证先进先出 进程不用考虑执行顺序,如果需要考虑,可能需要用线程 密集计算用进程 进程不适合处理IO,因为有锁,只有一个进程工作 python的多线程不支持并行,有GIL 有例外,丢弃GIL锁 发起http请求 与本地硬件交互 加密数据 阅读和写文件 协程 asyncio 大量并发,I/O 定时任务 在 CPython 里,线程和 async...

Jun 4, 20254 min read

somelearningnote

18 posts

some note, not worth reading.