自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(50)
  • 资源 (2)
  • 收藏
  • 关注

原创 系统设计练习 - 全球实时协同文档平台

本文提出一个支持多人实时协作的文档系统设计方案。系统支持富文本、表格、嵌入组件和设计元素,具备离线编辑、评论、权限管理和API集成等功能。架构分为客户端、协调器和存储三层:客户端维护本地操作日志;协调器执行操作转换并通过Redis发布订阅;存储层定期合并操作生成快照。系统采用操作转换(OT)算法解决冲突,通过分片策略应对性能瓶颈,并以操作数据库作为唯一数据源确保一致性。权限管理采用文档级和块级ACL,评论采用懒加载策略。该设计满足高并发、低延迟和高可用性需求,支持10亿级文档规模。

2026-05-11 06:43:24 286

原创 系统设计练习 - 实时警员安全报警系统

本文对实时警员安全报警系统进行的系统设计。其中用到了gateway,redis,geoHash,FLINK, kafka stream等工具和技术。讨论了API设计,系统架构设计,并深入讨论了系统设计中的一些关键问题和可以进行的深度扩展。

2026-05-09 14:15:31 366

原创 系统设计练习 - 实时街头抓拍系统

本文提出一个实时车辆识别系统的设计方案,满足从摄像头接收视频流、AI识别车辆信息、历史记录查询和实时告警等功能需求。系统采用微服务架构,包含视频上传、AI分析、索引构建、查询服务和告警服务等组件,使用AWS云服务(S3、Lambda、SageMaker等)实现。设计重点解决了数据一致性(通过幂等API和消息队列)、系统扩展性(合理设计DynamoDB分区键和OpenSearch索引)和低延迟(考虑边缘计算和流处理优化)等非功能性需求。系统端到端延迟控制在2-5秒内,通过异步处理和缓存机制保证高性能查询。

2026-05-08 06:24:41 343

原创 怎样通过Ollama免费养殖的小龙虾(OpenClaw)

本文介绍了开源AI项目Ollama和OpenClaw的安装与使用流程。Ollama支持在本地运行开源大语言模型,而OpenClaw则是一个能通过Agent和Tools与外界交互的AI代理系统。文章详细说明了如何安装这两个工具,配置OpenClaw连接本地Ollama服务,并通过浏览器界面与AI互动。最后展示了两个应用实例:查询天气和生成图片,展示了OpenClaw的交互能力。整个过程完全基于开源模型,无需付费即可体验AI的强大功能。

2026-04-25 08:59:39 332

原创 搭建免费的Ollama AI Agent

本文介绍了如何利用Ollama和LangChain构建基础AIAgent。首先概述了AIAgent的核心组成(Policy+Memory+Tools+ExecutionLoop)及相关工具,重点说明了选择本地运行Ollama的两大优势:节省API调用费用和操作便捷性。通过具体代码示例,演示了安装qwen3.5模型、创建Python虚拟环境、定义天气查询和地点描述工具函数,以及构建能自主选择调用工具的AIAgent全过程。测试结果显示Agent能智能识别用户意图,如将"sf"解析为&quo

2026-04-13 23:42:06 408 1

原创 每日一道经典算法题 - MEX(minimal excluded) 问题

本文介绍了经典算法题——寻找数组中最小的缺失非负整数(MEX)。基础解法使用哈希集合存储数组元素,然后遍历0到N查找第一个缺失数,时间复杂度O(N)。针对数组频繁更新的场景,提出了优化方案:用集合维护缺失数,哈希表记录出现频率,更新时同步调整集合,保证查询效率为O(1)。文章提供了C++实现代码,包括基础版和动态更新版两种解法,帮助读者应对算法面试中的经典问题及其变种。

2026-04-09 11:27:16 44

原创 我怎样在30秒处理8百万个OpenSearch文档

本文探讨了处理大规模时序数据的优化方案。针对OpenSearch查询800万文档耗时过长的问题,提出将10小时查询缩短为30秒窗口,大幅减少初始查询量。同时将scale-up方案改为scale-out,通过SQS队列分发任务,利用多个ECS/Fargate实例并行处理。相比Lambda方案,该设计能更好控制并发性,避免冷启动问题。对于超大数据量情况,建议采用滑动窗口策略,将中间结果存储在DynamoDB等键值数据库,通过增量更新降低计算负载。整体方案通过查询优化和分布式处理,将原需40分钟的任务缩短到30秒

2026-04-03 02:57:42 355

原创 如果你对AI agent还没有概念,可以先试试这个

本文介绍如何在VSCode中快速搭建一个简单的AI代理(CodeGuardian),用于自动为Python文件添加版权声明。通过创建agent.md和技能定义文件(check_copyright.md、insert_header.md),用户可以定义代理的行为逻辑:当保存.py文件时检查是否存在版权声明,若缺失则自动插入预设的header。整个过程只需基础Python知识和VSCode操作,无需深入理解AI原理,适合初学者通过实践直观感受AI代理的工作方式

2026-03-22 16:55:00 219

原创 设计练习 - Movie Review Aggregator System

本文是一篇对于系统设计的练习文章。我们设计了一个系统以对电影的评价进行处理。我们采用了aws里的一系列服务完成了系统设计。最后我们对比原文分析了本次系统设计可以改进的地方。

2025-05-17 09:25:12 874

原创 系统设计练习 - 设计“奈飞”

本文概述了设计一个类似于奈飞的流媒体平台的系统架构。系统功能需求包括支持用户的订阅服务、视频信息的展示与播放、用户观看历史的记录与续播功能,并区分付费用户(无广告)与免费用户(含广告)。非功能需求强调了系统的高可靠性、高扩展性、支持大规模用户同时在线及低时延处理请求的能力。系统高层设计采用了AWS云服务组件,如APIGateway、Lambda、Cognito、DynamoDB和S3,来实现用户认证、视频服务、视频播放、数据存储等功能。

2025-05-12 09:02:27 768

原创 分布式系统里的事件顺序

本文介绍了在分布式系统中事件顺序的相关定义和概念,以及两种最简单的逻辑时钟:lamport和vector。同时,本文通过一个例子说明了在分布式系统中事件顺序的重要性和用法。

2025-04-10 09:13:07 1109

原创 系统设计练习 - dropbox

本文是系统设计的练习。我们在本文中设计了一个类似dropbox的系统。设计了其基本的功能。最后讨论了一些扩展问题。

2025-03-28 14:53:13 814

原创 如何在大量数据集中快速查找某条记录是否存在的思考

本文中我们简单介绍了用于处理查询某条记录在否存在的prefix tree算法和bloom filter算法。并且我们比较和分析了两种算法的优点与局限性,并得到应该如何选择的结论。

2025-02-16 08:23:43 960

原创 分布式事务处理的2PC模式和SAGA模式的介绍与思考

本文介绍了分布式事务,以及解决分布式事务的两种设计模式:2PC和Saga。最后我们对2PC和Saga进行了比较,并且介绍了作者自己对于两种模式的一些思考。

2024-11-29 05:57:47 1104

原创 实战项目:通过自我学习让AI学习五子棋 - 1 - 项目定义

本文是一个实战项目的第一篇文章。该实战项目尝试构造一个应用,该应用可以通过自我对弈训练AI学会五子棋的下法。在本文中我们介绍了该项目的想法,定义了项目需求,我们打算尝试的算法。

2024-11-09 08:36:44 1017

原创 AI自主学习:未来的智能系统

本文介绍了AI领域的自主学习的原理和应用,以及和自主学习有关的背景知识。

2024-10-24 06:16:52 2707

原创 分布式系统及其优点

分布式系统(distributed system)是现在广泛使用的系统设计和实现技术。在前面所写的一些文章中,我们讨论了一些在分布式系统中可能会遇到的某些问题,以及我们所考虑的解决方案。在本文中,我们将介绍什么是分布式系统以及分布式系统的优点和挑战。

2024-03-25 10:36:17 921

原创 使用Python进行股票分析(2)

我们在之前的文章《使用Python进行股票分析(1)》中,通过自动获取股票的历史数据,然后选择在一定时间内处于上涨的股票作为我们投资的标的。在本文中,我们进一步通过分析股票的短期趋势,选择处于短期上涨趋势的股票,进一步筛选我们的理想投资标的。

2024-03-25 07:50:07 1000

原创 使用Python进行股票分析(1)

Python具有非常好的数据分析和数据可视化的功能。在本文中,我们将通过使用Python获取股票的闭市价格,并且对股票价格进行分析和可视化,并且定义了一种简单的股票交易策略向我们提供买卖股票的依据。

2024-03-08 11:51:32 1292

原创 在分布式环境中使用状态机支持数据的一致性

在本文中,我们将介绍如何在分布式系统中使用transaction以及分布式系统中transaction的局限性。然后我们通过一个具体的例子,介绍了一种通过设计状态机来避免使用transaction的方法。

2024-03-08 02:53:17 1650

原创 关于在分布式环境中RVN和使用场景的介绍4

在本文中,我们介绍了在分布式环境中基于RVN可以解决的一类新的问题,也就是防止多个请求同时修改一条记录而互相覆盖的问题,并且探讨了基于该问题的扩展情况。

2024-02-22 07:24:46 1251

原创 通过写代码学习AWS DynamoDB (3)- 一致性hash

我们在本文中介绍了一致性hash的概念,并且在我们的DDB的模拟实现中实现了一个简单版本的一致性hash的partition管理者类。然后我们讨论了一些和一致性hash有关的问题。

2024-02-17 02:56:35 1337

原创 关于在分布式环境中RVN和使用场景的介绍3

我们在收到一条待处理的事件时,需要检查该事件的RVN是否已经太旧。如果该事件的RVN已经太旧,我们就不再处理该事件,并且丢弃该事件。通过这个逻辑,我们可以保障在分布式环境中正确的处理消息的乱序,丢失,和重复等问题。就这个逻辑本身而言是非常简单的。但是我们现在要考虑到分布式环境中所有的消息处理都是并行的,我们需要小心的检查这个逻辑的实现。在本文中,我们讨论一下如何在分布式环境中正确的处理这个逻辑。

2024-02-13 08:29:24 1087

原创 使用No-SQL数据库支持连接查询用例的讨论

在本文中我们介绍了什么是No-SQL数据库。并且讨论了如何使用key-value数据库来解决连接查询的问题。

2024-02-06 15:54:28 1454

原创 关于在分布式环境中RVN和使用场景的介绍2

在本文中,我们继续讨论了对于分布式系统中RVN的使用技巧,及其被用来解决一类特殊的由hot primary key消息引起的性能问题的使用方法和细节。

2024-01-30 08:40:54 766

原创 通过写代码学习AWS DynamoDB (2)

​在上一篇文章里,我们实现了DDB的基本API。在本文中,我们将进一步增强该DDB的模拟实现,给DDB加入Partition。我们简单介绍一下Shard和Parition的概念。然后我们会在DDB的实现中加上一个简单的Parition的实现。

2024-01-27 02:37:19 1154

原创 通过写代码学习AWS DynamoDB(1)

我们通过模拟一个简单的DDB的实现,可以更好的理解某些分布式系统中的设计是如何工作的。在本文中我们首先用python实现DDB的最基本的API,包括table有关的API,和table本身的API。这些实现作为后续进一步加强功能的基础。

2024-01-26 03:14:30 487

原创 关于在分布式环境中RVN和使用场景的介绍1

我们首先介绍一下分布式环境中开发会遇到的一类问题,然后介绍什么是RVN以及怎么样使用RVN来解决该类问题。最后我们会介绍一下RVN的典型使用用例。

2024-01-24 04:32:14 570

原创 基于最终收敛的分布式系统设计讨论2

本文对于分布式系统中对于数据进行更新时出现的数据不一致的问题和解决方案进行描述和讨论。同时进一步描述了更多有关的技术问题。

2024-01-22 16:21:46 466

原创 基于最终收敛的分布式系统设计讨论1

本文就分布式系统设计中有关于一致性问题的某一种用例可能出现的问题和可能的解决方案进行了分析和讨论。

2024-01-21 17:50:12 516 2

原创 《算法导论》部分习题和思考题解答: 10.4-5 非递归有限空间遍历二叉树

《算法导论》部分习题和思考题解答: 10.4-5 非递归有限空间遍历二叉树

2022-11-26 07:49:55 281

原创 《算法导论》部分习题和思考题解答 - 10.2-8 单域处理前向和后向双指针

《算法导论》部分习题和思考题解答 - 10.2-8 单域处理前向和后向双指针

2022-11-26 06:03:12 299

原创 《算法导论》部分习题和思考题解答: 2-4 逆序对

算法导论》部分习题和思考题解答: 2-4 逆序对

2022-09-26 08:24:38 386

原创 《算法导论》部分习题和思考题解答 - 2.3-7

算法导论习题和思考题解答

2022-09-26 07:39:18 314

原创 使用BIT(Binary Indexed Tree)求数组里的逆序对

使用BIT(Binary Indexed Tree)求数组里的逆序对

2022-01-27 07:53:58 348

原创 Eclipse安装GSON,使用GSON转换Java Object到JSON

标题在eclipse里安装GSON创建一个对象并转换成JSON在eclipse里安装GSON从这里选择合适的GSON版本,下载GSON的jar文件:https://repo1.maven.org/maven2/com/google/code/gson/gson/保存jar文件到本地目录选中project点击鼠标右键,选择"Build Path" -> “Configure Build Path”选择"Java Build Path", 打开"Libraries",把jar文

2020-12-25 03:29:10 2010

原创 学习python有关统计基础部分课程总结

花了整整两天的时间学习一门关于python用来做统计的基础课程。现在总结一下。基本的原则是列出一些代码的实例,表明学到的pythong包括numpy和pandas的基本功能。如果可以用一个函数表示的就用一个函数,不用多个函数,这样容易跟踪。不过刚刚学完,思想上很觉得疲劳。这个总结可能要慢慢做起来。做完了再分享出去。函数def add_numbers(x, y, z=None, flag=False): if flag: print('flag is true') i

2020-11-30 07:30:37 1011 1

原创 怎样grep出匹配组的信息并得到唯一输出

需求类似于regex匹配时可以指定匹配里某局部匹配为一个组(group),并得到该匹配组的输出。举例,文件里存在如下行:for asnId: 14807053913 and asnUniqueContainerId: 53b659349265a4554246a6b94ad00752-1@2 but container not found我要以”but container not found“得到所有匹配行,并且得到这些匹配行中的”asnId: "后面的ID值,并且保证输出唯一。那么如果你的gr

2020-11-28 02:44:53 2871

原创 锤子,剪刀,布游戏的研究

题目来自于kaggle。用AI模拟锤子,剪刀,布的游戏。下面是我的一些解法和尝试。1. 随机数最直观的解法。用随机数产生。代码如下:import numpy as npdef random_agent (observation, configuration): return np.random.randint(1, 10000) % 3这个解法得到了742.2分。2. 基于对手会使用平均的策略这个想法基于对手会比较平均的出锤子,剪刀,布,那样我就永远猜测对手下一次会出

2020-11-23 07:46:57 581

原创 Python技巧1: 使用python分析wav文件

对于声音类的文件分析起来除了听最好是先可以把声音转换成图形,这样对于声音文件之间的不同有一个视觉上的认知,对于后续分析可以是一个很有用的补充。python可以利用SCIPY库装载wav文件,并使用matplotlib绘制图形。首先我从这个网站上下载了1M和2M的wav文件作为wav样例文件:https://file-examples.com/index.php/sample-audio-files/sample-wav-download/然后使用下面的代码装在并绘制wav文件的音调图形:fro

2020-09-07 07:57:44 1223

素数判定与大数分解

数学科普读物有助于增强数学思维能力,进一步可以提高算法和AI的思维能力。

2018-05-31

斐波那契数列

数学科普类丛书,有益于锻炼数学思维,增加数学知识。

2018-05-28

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除