- 博客(22)
- 收藏
- 关注
原创 MIT 6.824学习心得(5) 万字长文浅谈Raft-分布式共识算法
在庞大的分布式系统中,往往会存在多个Replica来保证整个系统的高可用,高容错。比如数据库主从复制、日志系统的多节点同步、或者区块链中的多节点账本。然而,只要出现了,副本之间的状态就可能出现不一致。这就是我们常常说的。讨论分布式一致性问题的相关理论存在于大致以下三个维度:·理论基础层:BASE理论,CAP理论·协调机制层:2PC,3PC(事务一致性协议)·共识算法层:Paxos->Multi_Paxos->Raft。
2025-11-21 13:17:14
704
1
原创 浅谈差分算法--区间变化的上佳策略(C++实现,结合lc经典习题讲解)
我们开门见山,先抛出一个问题:一开始我们的思路可能是通过for循环暴力在范围上进行修改,可是如果这样,假设左右区间分别为l,r,每次操作的时间复杂度是的线性水平,假设我们有m次操作,那么时间复杂度便是,数据量大了这是不可接受的。而接下来我们要引出的差分算法,可以把这种区间变化操作的时间复杂度降低到常数水平。这是一种“”的方式,无需遍历整个区间。在介绍差分算法之前,相信朋友们应该对这个概念并不陌生。
2025-11-10 20:03:03
756
1
原创 大话大模型应用(二)--让大模型听话:Prompt Engineering&Context Engineering
无论是提示词工程还是上下文工程,它们的核心目标都是让人工智能“更好地理解人类的意图”。前者教会模型如何被指令驱动,后者让模型在合适的语境中思考。提示词是显性的沟通方式,而上下文是隐性的语义土壤——两者相辅相成,缺一不可。随着推理模型、智能体(AI Agent)和多模态系统的发展,提示词工程正在从“编写指令的技巧”转向“语境设计的系统工程”。未来,我们作为 AI 应用开发者,不仅需要会写出精准的 Prompt,更需要有构建出丰富、有层次的 Context的能力,让模型思考的不只是词句,而是世界本身。
2025-11-05 16:26:44
862
1
原创 BFS专题,一网打尽!(C++实现,配合lc经典习题讲解)
值得注意的是,这道题的图结构不是显式的。这道题目中控制BFS过程的关键在于判断所有橘子是否全部腐化,所以我们需要先统计一下新鲜橘子的数量,之后在BFS扩散“腐化”过程中不断去减小这个数量,当新鲜橘子的数量减为0时,BFS过程结束,如果最后新鲜的橘子无法减为0,说明不可能将所有橘子腐化,返回-1即可。题目给了我们一个二维网格图,在这个网格图中,0代表未放橘子的空格,1代表新鲜的橘子,2代表腐烂的橘子,腐烂的橘子会以分钟为单位向上下左右四个方向腐化新鲜的橘子,需要我们求所有橘子全部腐烂的最小分钟数。
2025-11-01 09:33:29
1052
原创 DFS专题(二)洪水填充问题(C++实现,结合lc经典习题讲解)
hit数组代表我们打砖块的位置。假设第一发炮弹打在(3,3)位置,那么(3,3)处位置的砖块会直接碎掉,而(4,3),(4,4)处的砖块因为失去了(3,3)处砖块的黏着,会掉落,所以此时掉落的砖块数为2。我承认这篇文章有点点标题党了哈~不过在我认为,洪水填充是二维网格图DFS的一种非常特殊的情况,不需要进行回溯,所以整个的情况是要简单不少的,那我们就来看看比较一般的情况是怎么回事。普通的洪水填充问题是“没有回头路”的,也就是不带回溯操作,路径信息不撤销,但是本文我们也会介绍“带回溯操作”的搜索类问题。
2025-10-27 17:41:44
1064
2
原创 大话大模型应用(一)--用Eino框架开发简单的AI Agent
随着机器学习,深度学习算法的兴起,AI Agent开始从数据中总结概率规律。大语言模型的出现推动了AI Agent的重大变革,如GPT-3,DeepSeek等大参数模型具备了强大的自然语言处理和理解能力。大模型(LLM)是基于训练而成的,就像是一个“”,虽然具备强大的自然语言理解和生成能力,但是在面对垂直专业场景时,其精度难以适配。而一个真正能落地的AI应用,不仅是一个可以聊天的大语言模型,而是一个的系统。
2025-10-24 10:51:41
1059
1
原创 DFS专题(一)回溯?一网打尽!(C++实现,结合lc经典习题讲解)
lambda内部递归调用dfs会报未定义。正确的做法是用function进行包装,
2025-10-12 18:28:48
1080
原创 MIT 6.824学习心得(4)从主从复制到VMware FT-分布式系统的容错实践
对于大规模的分布式系统而言,开发者希望在部分节点或者组件发生故障时,系统仍能正常对外提供服务。这其实就体现了分布式系统很重要的性质--。我们往往来通过提升系统的容错性来保证系统的,今天我们就对这一重要性质进行深度探讨:分布式系统如何面临失败?如何在保证一致性的前提下实现容错?在实际场景中,假如某台计算机发生了故障,我们其实往往最担心的是它会产生不可预测的乱七八糟的结果,所以与其这样我们不如直接让它或者。这就是著名的模型,也是我们容错性设计方面的基本策略。
2025-09-24 17:15:18
802
原创 浅谈背包DP(C++实现,配合lc经典习题讲解)
很久没有更新数据结构与算法的专题文章了,也很久没有好好刷算法题了,很惭愧。之前我们介绍过由递归到记忆化搜索再到动态规划的演进过程,从本文开始我们将见识一些常见的动态规划题目模型,在互联网大厂笔试面试出现的概率极高!今天我们来介绍“背包DP”这一模型,并结合leetcode的经典题目来进行真题讲解。常见的背包DP的类型有这三种,我们会依次结合场景对其进行介绍!此处声明,我的文章是我学习左程云老师算法课程的笔记回顾。
2025-09-16 18:06:18
847
原创 MIT 6.824学习心得(3)浅谈GFS
如果简单来介绍GFS的架构,除了客户端之外,其包含一个Master节点(这里的Master节点是逻辑概念,不是物理概念,后面会提到Master节点的主从复制,和若干。每个节点通常为一个运行着用户级服务进程的Linux主机。在机器资源允许的前提下,我们可以把Chunkserver和客户端运行在同一台机器上。在存储文件时,文件会被划分成若干个拥有固定长度的Chunk(块)。Master在创建这些Chunk时,会赋予它们不可变的全局唯一的64位(块标识符)作为唯一标识,并将其移交给对应的Chunkserver。
2025-09-08 17:40:45
1165
1
原创 MIT 6.824学习心得(1) 浅谈分布式系统概论与MapReduce
在早期的实际应用中,大多数系统属于“集中式”架构。所有的存储,计算都集中在一台服务器上处理。确实,这种系统在架构层面很简单,作为开发人员只需要重点关心服务端的处理逻辑即可,但是毫无疑问,存在明显的瓶颈。首先系统性能会受限于单机资源,因为一台物理服务器它的内存,磁盘,CPU资源都是很有限的;其次单点故障会使得整个系统不可用。而且这种单机系统可扩展性很差,难以应对业务规模的爆发增长。在上世纪80~90年代,人们开始意识到了集中式架构已经很难满足互联网发展的需要了,分布式系统架构的设计思想由此应运而生。
2025-06-26 21:39:02
1312
原创 (题目向,随时更新)动态规划算法专题(2) --见识常见的尝试模型
经过上篇文章的介绍,相信朋友们已经对一道递归的题目,如何采用记忆化搜索来优化空间复杂度,又如何利用引入表结构的思想演化成严格位置依赖的动态规划,最后到一道动态规划题目如何利用滚动数组优化空间有了自己的理解和认识。上篇文章只是通过斐波那契数这样最简单的题目来揭示这个过程,别担心,跟着我,难题好题管够(doge)!从这篇文章开始,我们将大量介入题目实战,分析各种各样经典的,新颖的尝试模型。
2025-06-13 21:00:22
1073
原创 动态规划算法专题(1)--浅谈由递归算法到动态规划(dp)的演进
我们用两个变量(我的建议是这里最好不要理解成指针,这个过程并不是指针的移动,而是值的复制)pre1(初始化为F(0)),pre2(初始化为F(1))来标记这两个依赖位置,不难发现当前位置的斐波那契数值可以由pre1+pre2直接获得。的,在这里朋友们会不会发现一个特性:在调用F(4)的时候,其实它也不知道F(3)和F(2)的值到底是什么,F(3)也是一样,只有当分解到F(1),F(0)的时候,发现它们的值是被给定的,一切豁然开朗。但是我想说,做题不是主要目的,我们要从简单的题目中有所发现,要知道一道题目。
2025-06-10 17:30:54
1157
1
原创 浅谈归并排序和快速排序(C++实现)
快速排序的一个关键词是partition--划分。也许当看到这么一个晦涩的词汇有朋友会感觉到摸不清头脑,但是如果想要弄懂快速排序的原理,我们必须知道什么是partition,以及该怎么去实现它。75.颜色分类-力扣(LeetCode)根据题目所述,我们手中有一个数组,数组中的元素被涂上了三种颜色(红,蓝,白)。现在我们对它们进行原地排序(不借助额外空间),使得相同颜色的元素相邻。这种问题也习惯于称为“荷兰国旗问题”或“俄罗斯国旗问题颜色这种抽象的量不便于比较调整,我们用。
2024-11-27 17:50:42
1355
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅