- 博客(522)
- 资源 (11)
- 收藏
- 关注
原创 《DTGBrepGen: A Novel B-rep Generative Model through Decoupling Topology and Geometry》论文阅读笔记
这篇论文提出了一种解耦拓扑与几何生成的CAD模型生成框架DTGBrepGen,通过将B-rep模型生成分解为独立的拓扑生成和几何生成两阶段,显著提升了模型的有效性和几何精度。拓扑生成采用两级Transformer和指针网络确保结构合法性,几何生成通过四段扩散模型在拓扑约束下精确控制几何细节。实验表明,该方法在多个数据集上显著提高了生成模型的有效率和质量,同时支持B样条几何的原生表示。创新点包括拓扑-几何解耦策略、在线拓扑验证机制和拓扑感知的注意力机制。未来工作可进一步优化几何可行性预测和支持复杂装配体生成。
2025-08-05 23:55:42
642
原创 《BrepGen: A B-rep Generative Diffusion Model with Structured Latent Geometry》论文阅读笔记
BrepGen 是一种创新生成模型,可直接生成工业设计中广泛使用的**边界表示(B-rep)格式CAD模型。它提出结构化潜在几何(SLG)**表示方法,将复杂的B-rep数据转换为神经网络易于处理的层级树结构,并利用扩散模型生成。该方法通过三层树结构(面、边、顶点)编码几何与拓扑信息,其中几何信息由全局位置和局部形状潜码组成,拓扑则通过节点复制机制隐式编码。生成过程采用四级条件扩散,自顶向下逐级生成面位置、面形状、边位置及边-顶点联合形状。相比现有方法,BrepGen能处理自由曲面和复杂拓扑结构,并通过几何
2025-08-02 13:29:57
840
原创 CUPED (Controlled-experiment using Pre-Experiment Data) 论文学习笔记
CUPED是一种用于提升A/B测试灵敏度的方差缩减技术。它通过利用实验前用户行为数据(协变量X)构建调整后的指标Y_cuped=Y-θ(X-E[X]),其中θ=Cov(Y,X)/Var(X)。这种方法能在保持处理效应估计无偏的前提下,将方差降低1-ρ²倍(ρ为前后指标相关性)。CUPED的核心优势在于:不改变平均处理效应的估计,但能显著提升统计功效,使得实验更容易检测到微小但真实的效应,同时减少所需样本量或实验周期。该技术特别适用于用户异质性大、指标方差高的场景。
2025-07-18 17:04:05
799
原创 微服务必看!分布式锁选型的 “三板斧”:Redis/ZK/ 数据库怎么选?
分布式锁是微服务架构下解决并发资源竞争的关键机制,本质上是一种基于共识服务达成的临时独占契约而非传统锁。合格分布式锁必须满足互斥性、锁超时、容错性和可重入性四大条件。主流实现方案包括基于Redis的SETNX+LUA脚本(高性能但需处理复杂细节)、Zookeeper的临时有序节点(强一致性但性能较低)以及数据库乐观锁/悲观锁(简单但性能最差)。实际应用中还需解决锁续期、公平性、集群容错等挑战,需根据业务场景权衡选择合适方案。随着云原生发展,分布式锁技术仍在持续演进中。
2025-06-01 11:15:56
1224
1
原创 从 CAS 到 AQS:Java 并发编程的锁机制演进全解析,一文搞懂底层原理!
Java并发编程的核心技术演进:从CAS到锁优化本文探讨了Java并发编程中的关键技术演进路径。首先介绍了CAS(比较并交换)这一硬件级原子操作原理,它通过比较预期值和实际值实现无锁编程。Java通过Unsafe类实现CAS,但存在ABA问题和自旋开销。基于CAS开发了自旋锁,采用忙等待策略减少上下文切换,并通过自适应机制优化自旋次数。进一步分析了Java并发框架从CAS到synchronized锁升级,再到AQS框架的技术演进,展现了如何在保证线程安全的同时提升性能。这些底层机制共同构成了Java高效
2025-06-01 11:10:43
563
原创 《Overlapping Experiment Infrastructure: More, Better, Faster》论文阅读笔记
这样确保了测试的一致性(同一用户/Cookie 会持续进入同一类型实验),但也会导致例如 1% 的随机流量实验实际上接收的请求远少于 1% 的 Cookie 实验。每层都有自己的实验组和控制组,且流量分配各不相同:UI层的实验A占25%,算法层的实验B占30%,特性层的实验C占20%。与传统的单实验(每请求仅一个实验)不同,每个请求可同时参加多个实验,但每个实验只能修改其对应层的参数。在 Launch 层中,实验指定的是参数的新默认值:如果在其他层没有覆盖这些参数,实验中的默认值生效;
2025-05-07 20:48:30
1493
2
原创 CS144 Lab 6 实战记录:构建 IP 路由器
维护路由表:存储一系列路由规则,每条规则包含网络前缀、前缀长度、下一跳信息和出站接口编号转发数据报:根据路由表中的规则,将每个接收到的数据报转发到正确的出站接口和下一跳地址fill:#333;color:#333;color:#333;fill:none;路由表查询(最长前缀匹配)Internet数据报路由器转发决策网络接口1网络接口2网络接口n下一跳1下一跳2下一跳n。
2025-04-24 21:47:11
1256
1
原创 CS144 Lab5 实战记录:网络接口实现 ARP
网络接口需要定期处理超时事件,包括清理过期的ARP缓存条目和丢弃超时未响应的ARP请求。网络接口的运行流程基于 ARP 协议,通过 ARP 请求/响应 来查询 IP-网卡 MAC 地址是否可达,并记录在本地缓存中。网络接口的实现核心在于ARP(地址解析协议)的管理,它将逻辑IP地址映射到物理MAC地址。,它能将 IP 数据报包装裱成 Ethernet 带有地址的链路层帧,并转发到 TAP 设备。实现时确保两者同步清理。它是 TCP/IP 网络堆栈的最下层部分,也是后续 Lab6 实现路由器功能的重要基础。
2025-04-24 16:59:14
946
原创 CS144 Lab3 实战记录:TCP 发送器实现
它的主要职责是将应用层的字节流分割为 TCP 段,通过不可靠的网络传输,并确保数据被可靠接收。在 Stanford CS144 Lab3 中,我们需要基于 Lab0 实现的字节流(ByteStream)、Lab1 的字节流重组()、 Lab2 实现的接收器(TCPReceiver),完成 TCP 发送器的实现。:下一个待发送的字节序列号,初始为 0,每次发送段后递增段的总长度(包括 SYN/FIN 标志占用):接收端已确认的最高字节序列号,通过 ACK 解析得到,用于标记已可靠传输的边界。
2025-04-24 00:02:20
852
原创 CS144 Lab2实战记录:TCP接收器的实现
receive:处理接收到的TCP报文send:生成反馈信息其中成员变量存储初始序列号,使用optional表示可能尚未设置(也可以通过标记来判断)。public:// 使用给定的Reassembler构造// 接收TCP发送方消息// 发送TCP接收方消息// 访问输出private:// 初始序列号。
2025-04-23 12:17:55
1083
原创 CS144 Lab1实战记录:实现TCP重组器
在网络传输的过程中,TCP协议必须解决一个关键挑战:如何将不可靠的网络上传输的、可能乱序、丢失、重复或重叠的数据包片段重新组装成连续的字节流?重组器处于网络层和应用层之间,负责将网络传输的不可靠、乱序的数据片段转换为应用层可以使用的可靠、有序的字节流。接下来,检查子串是否已经完全处理过,如果子串的结束位置不超过当前已处理的位置,则整个子串都已被处理,可以直接返回。最后,检查是否需要关闭输出流:当所有预期的数据都已处理完毕,且已收到标记为最后的子串时,关闭输出流。这是最简单的情况,不需要任何临时存储。
2025-04-17 23:57:38
1285
1
原创 CS144 Lab0实战记录:搭建网络编程基础
Stanford大学的CS144课程是计算机网络领域最著名的课程之一,其实验设计巧妙地引导学生从零开始实现一个TCP/IP协议栈。字节流(ByteStream)抽象:模拟可靠传输信道的基础抽象WebGet应用:使用系统提供的TCP实现来获取网页内容本文将详细记录Lab0的实现过程。Github仓库地址ByteStream是什么?有限容量:缓冲区容量固定,不能无限增长双向接口:Writer端写入,Reader端读取流结束控制:Writer可以关闭流,Reader可以检测流是否结束。
2025-04-17 23:54:13
956
原创 微服务架构下的数据一致性:分布式事务解决方案详解
分布式事务是指事务的参与者、支持事务的服务器、资源管理器以及事务管理器分别位于不同的分布式系统节点上。简单来说,就是一次操作由多个分布在不同服务或系统的子事务组成,这些子事务要么全部成功提交,要么全部失败回滚。跨多个服务或数据源:分布式事务涉及多个独立的服务或数据库,数据分散在不同的物理节点上。执行周期长:相比本地事务,分布式事务通常持续时间更长,因为涉及网络通信和多个系统的协调。复杂的故障处理:需要处理各种分布式场景下的故障,如网络分区、节点崩溃等。数据一致性与可用性的权衡。
2025-04-16 15:26:15
1609
原创 Go Context深度剖析
/ 创建一个新的通道// 等待父Context的Done通道关闭<-done// 记录操作耗时// 关闭我们的通道close(ch)}()return ch这个自定义Context可以在操作取消或完成时自动记录指标,而不需要修改现有代码。
2025-03-12 21:04:14
1053
原创 深入解析Go语言Channel:源码剖析与并发读写机制
在Go语言的并发编程模型中,Channel是一个核心概念,它优雅地实现了CSP(Communicating Sequential Processes,通信顺序进程)理念中"通过通信来共享内存,而不是通过共享内存来通信"的思想。本文将从源码层面深入剖析Go Channel的实现机制,特别关注有缓冲Channel的并发读写原理。
2025-03-12 11:30:09
1334
原创 Zookeeper启动报错:Starting zookeeper ... FAILED TO START 解决方案
如果 Zookeeper 的 clientPort(通常是 2181)或其他通信端口被其他进程占用,Zookeeper 将无法正常启动。**解决方案:**确保 Java 已正确安装并配置环境变量 JAVA_HOME 和 PATH。如果端口被其他进程占用,可以在 zoo.cfg 中更改 clientPort 为其他未使用的端口,或停止占用该端口的进程。:启动运行的 Zookeeper 包是错误的。如果 Java 环境没有正确配置或 Zookeeper 启动脚本找不到 Java 路径,启动时会失败。
2024-11-04 20:02:57
2999
1
原创 【论文阅读笔记】SECAD-Net: Self-Supervised CAD Reconstruction by Learning Sketch-Extrude Operations
SECAD-Net提出了一种自监督学习方法,通过学习2D草图和3D拉伸参数生成可编辑的CAD模型。代码开源Github。模型结构如图所示。与传统基元方法不同,SECAD-Net并未依赖简单基元组合,而是借鉴了现代CAD软件中的建模方式,即草图绘制和拉伸操作的序列化过程。拉伸框预测:首先,SECAD-Net使用3D卷积神经网络编码器将输入的3D体素网格数据编码为特征嵌入,并通过解码器预测一系列草图框(extrusion box)的参数。每个草图框包含位置、尺寸和旋转信息,代表模型中的一个局部区域。
2024-11-01 15:26:19
1072
2
原创 配置和排查 Lombok 在 IDEA 中使用的详细步骤
Lombok 是一个 Java 库,可以通过注解的方式,自动生成这些常见的代码,从而让代码更加简洁、清晰。完成后,IDEA 就可以正常识别 Lombok 的注解了。添加依赖后,IDEA 将会自动下载 Lombok 库。如果依赖没有自动下载,可以执行下一步来手动刷新项目。在 IDEA 中,点击右侧的 Maven 面板,找到你的项目,点击。下面是配置和排查 Lombok 在 IDEA 中使用的详细步骤。在日常开发中,Java 代码常常需要大量的样板代码,比如。在 Maven 项目中,需要在。
2024-10-26 10:55:18
1390
1
原创 本地事务:在单一数据源场景下的 ACID 保障者
本地事务(Local Transaction)是指仅操作单一事务资源的、不需要全局事务管理器进行协调的事务。原子性:将组成事务的多个操作视作一个不可分割的整体,要么全部成功,要么全部失败,不能仅部分生效。一致性:事务执行前后,数据库只能从一个一致状态转变为另一个一致状态,即事务执行对整体数据产生的变化是一致的。隔离性:多事务并发执行时,各事务之间不能被其他事务干扰,就如同每个事务都在独立的沙箱中执行。持久性:一旦事务生效,无论发生何种状况(如故障、宕机等),该事务对数据的变更都会永久保存。
2024-10-24 09:43:39
873
原创 MIT 6.5840(6.824) Lab 5:Sharded Key/Value Service 设计实现
本实验要求构建一个键 / 值存储系统,该系统能够将键 “分片” 或分区到一组副本组上。分片是键 / 值对的子集,例如所有以“a”开头的键可能是一个分片等,通过分片可提高系统性能,因为每个副本组仅处理几个分片的放置和获取,并且这些组并行操作。系统有两个主要组件:一组副本组和分片控制器。每个副本组使用 Raft 复制负责部分分片的操作,分片控制器决定每个分片应由哪个副本组服务,其配置会随时间变化。客户端和副本组都需咨询分片控制器来找到对应关系。系统必须能在副本组间转移分片,以平衡负载或应对副本组的加入和离开。
2024-10-20 13:18:56
1631
3
原创 分布式系统理论详解:CAP、BASE、PACELC
它考虑的是这样一个问题:系统在大部分时间下,分区都是平稳运行的,并不会出错,在这种情况下,系统设计要均衡的其实就是延迟与数据一致性的问题,为了保证数据一致性,写入与读取的延迟就会增高。CAP理论是分布式系统领域中被广泛讨论的一个理论,由 Eric Brewer 在 2000 年提出,一般系统架构师会把其作为衡量系统设计的准则,其中CAP是一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)的缩写。CAP的一致性,关注的是数据一致性;
2024-10-14 23:29:35
1702
2
原创 【论文阅读笔记】Bigtable: A Distributed Storage System for Structured Data
Bigtable 是 Google 设计的用于管理结构化数据的分布式存储系统,可扩展到数千台服务器存储 PB 级数据。它不是关系数据库,而是一种稀疏、分布式、持久性多维排序映射(K/V)。Bigtable被 60 多个 Google 产品使用,涵盖不同数据规模和延迟要求的应用,这得益于 BigTable 提供的简单数据模型可以使客户端动态控制数据的布局和格式。
2024-10-13 23:16:43
1172
原创 【论文阅读笔记】The Chubby lock service for loosely-coupled distributed systems
Chubby是一个面向松耦合分布式系统的锁服务,被广泛应用于Google内部的多个关键系统中,如GFS(Google文件系统)和Bigtable。在GFS中,Chubby用于指定主服务器;而在Bigtable中,它不仅支持主服务器选举、帮助主服务器发现其所管理的子服务器以及协助客户端定位主服务器,还充当了少量元数据存储的角色。Chubby允许客户端同步活动并就环境基本信息达成一致。主要目标包括可靠性、对大量客户端的可用性以及易于理解的语义,吞吐量和存储容量是次要考虑因素。
2024-10-13 23:15:21
1230
原创 Prometheus使用Pushgateway推送数据
Prometheus 的 Pushgateway 是一个简单的 HTTP 服务器,它允许数据被推送到该服务器,而不是通过拉取的方式获取。它的存在是为了让临时和批处理作业能够将其指标暴露给 Prometheus。由于这类作业可能存在的时长不足以被主动抓取,因此它们可以将指标推送到 Pushgateway。随后,Pushgateway 会将这些指标暴露给 Prometheus。Pushgateway 作为中间件,保存推送的数据直到 Prometheus 抓取。它支持从多个来源推送指标,每个来源都通过唯一的。
2024-09-20 10:02:04
1287
原创 Prometheus架构详解
Prometheus 是一个开源的系统监控报警工具套件,它最初由SoundCloud开发,并于2016年成为CNCF(云原生计算基金会)托管的第二个项目(第一个是kubernetes)。Prometheus 以其简单高效的方式收集指标而闻名,能更好地与容器平台、云平台配合,这使得它在现代云原生环境中非常受欢迎。应用性能监控:监控应用程序的健康状态和性能指标。基础设施监控:监控服务器、存储设备、网络设备等基础设施的状态。业务监控:监控业务层面的关键性能指标(KPIs)。独立性。
2024-09-20 09:52:47
1043
原创 MIT 6.5840(6.824) Lab 4:Fault-tolerant Key/Value Service 设计实现
例如,在下面这张图中:x初始值为0,client1发送put请求(x,1),client2发送put请求(x,2),并在put请求前后发送get请求,此时如果put请求因为超时不断重发,如果在client2的put请求之后才被应用,则导致最后client2读到的是1,RaftKV的结果也是1,这就违背了线性一致性。为单一服务器提供线性化相对容易,但如果服务是复制的,则较为困难,因为所有服务器必须为并发请求选择相同的执行顺序,避免使用过时的状态回复客户端,并在故障恢复时以保留所有确认的客户端更新为前提。
2024-08-30 21:25:41
2391
1
原创 【论文阅读笔记】Grove: a Separation-Logic Library for Verifying Distributed Systems (Extended Version)
大型应用在分布式系统中遭遇多重挑战,如并发控制、故障恢复、网络不稳定及服务器时钟异步等。形式化验证则是一种严格确立系统正确性的方法,帮助处理边缘情况。租约是分布式系统中的关键技术,用于保证系统某方面在一定时间内不变,GFS、Chubby和DynamoDB都具有类似的机制。例如租约允许领导者高效执行只读查询,无需频繁验证自身领导权,然而,这一机制的有效性验证却是一项艰巨任务。
2024-08-30 21:19:55
1641
1
原创 【论文阅读笔记】ZooKeeper: Wait-free coordination for Internet-scale systems
这篇论文介绍了ZooKeeper,一个用于协调分布式应用进程的服务。ZooKeeper旨在提供一个简单且高性能的内核,用于构建更复杂的客户端协调原语。它整合了组消息传递、共享寄存器和分布式锁服务的元素,形成了一个复制的、集中式的服务。Zookeeper提供了一个接口,具有共享寄存器的无等待特性和类似分布式文件系统缓存失效的事件驱动机制,以提供简单而强大的协调服务。ZooKeeper还保证了每个客户端请求的FIFO执行和所有更改ZooKeeper状态的请求的线性化。分布式系统中的基本协调机制配置。
2024-08-11 22:07:57
943
原创 MIT 6.5840(6.824) Lab3:Raft 设计实现
此Raft结构体基于论文图2,基本上都是其中介绍的字段以及lab自带的字段,其中其他属性论文中也间接简述和支持,以确保Raft节点能够高效、稳定地运作。这些定时器对于触发关键的系统行为至关重要——选举定时器确保在必要时发起选举过程,而心跳定时器则维持着领导者与跟随者之间的连接,防止不必要的选举。然而,对于一个长期运行的服务来说,永远记录完整的 Raft 日志是不切实际的。论文的图 2 提到了哪种状态应该是持久的,即。这两个核心函数,前者负责保存Raft的状态,后者则是在Raft启动时恢复之前保存的数据。
2024-08-11 17:55:31
2312
3
原创 【MIT 6.5840(6.824)学习笔记】Raft
Raft协议作为库(Library)存在于服务中,每个Raft副本包含应用程序代码和Raft库。应用程序代码处理RPC或其他客户端请求,Raft库负责同步多副本之间的操作。操作流程客户端请求:客户端发送请求(如Put或Get)到Raft集群的Leader节点。请求处理Raft层:Leader节点将请求操作传递给Raft层,要求将操作写入日志。Raft节点之间的交互确保操作被过半节点复制。当Leader节点确认过半副本都有操作的拷贝后,通知应用程序层执行操作。应用程序层。
2024-07-29 21:33:23
1093
原创 【论文阅读笔记】DeepCAD: A Deep Generative Network for Computer-Aided Design Models
作者提出了DeepCAD,第一个一个用于CAD设计的深度生成模型。几乎所有以前的3D生成模型都产生离散的3D形状,如体素、点云和网格。为此,作者还引入了一个大型CAD模型数据集,每个模型都表示为一个CAD命令序列。曲线命令类型有限:目前,作者仅考虑了三种最常用的曲线命令类型(直线、弧线和圆)。然而,其他曲线命令也可以轻松添加,例如可以通过三个控制点以及起点来指定的三次贝塞尔曲线,其参数结构可以按照3.1中描述的方式进行。操作命令的局限性。
2024-07-29 21:24:54
2908
4
原创 【论文阅读笔记】In Search of an Understandable Consensus Algorithm (Extended Version)
分布式一致性共识算法指的是在分布式系统中,使得所有节点对同一份数据的认知能够达成共识的算法。且算法允许所有节点像一个整体一样工作,即使其中一些节点出现故障也能够继续工作。之前的大部分一致性算法实现都是基于Paxos,但Paxos难以理解和实现,为此作者开始寻找一种新的易于理解的一致性算法,Raft则是作者工作的产出。算法分解:Raft将核心功能模块化,分离出领导人选举、日志复制和安全性三个关键部分,使每个部分的逻辑更加清晰。状态空间缩减。
2024-07-19 21:36:24
1417
原创 【论文阅读笔记】Hierarchical Neural Coding for Controllable CAD Model Generation
作者提出了一种CAD的创新生成模型,该模型将CAD模型的高级设计概念表示为从全局部件排列到局部曲线几何的三层神经代码的层级树,并且通过指定目标设计的代码树来控制CAD模型的生成或完成。具体而言,一种带有“掩码跳过连接”的向量量化变分自编码器(VAE)的新变体在三个层次上提取设计变化作为神经码本。两阶段的级联自回归Transformer学习从不完整的CAD模型生成代码树,然后根据预期设计完成CAD模型。广泛的实验表明,在无条件生成等传统任务上表现出优越性能,同时在条件生成任务中实现了新颖的交互能力。
2024-07-19 21:26:53
1931
1
原创 【论文阅读笔记】SkexGen: Autoregressive Generation of CAD Construction Sequences with Disentangled Codebooks
SkexGen是一种新颖的自回归生成模型,用于创建CAD构造序列,其中包含草图和拉伸建模操作。这个模型利用不同的Transformer架构将构造序列中的拓扑、几何和拉伸变化编码到解耦的码本中。自回归Transformer解码器根据码本向量生成具有特定属性的CAD构造序列。广泛的实验表明,我们的解耦码本表示可以生成多样且高质量的CAD模型,增强了用户的控制能力,并能够有效探索设计空间。【code】SkexGen是一种新颖的自回归生成模型,专为CAD构造序列设计。
2024-07-17 19:34:01
1450
1
原创 【论文阅读笔记】Attention Is All You Need
Transformer的成功不仅在于其高效的信息传递路径,还在于其能够在更大范围内捕捉和利用序列中的关联信息,从而提升了序列建模任务的性能和效果。在Transformer中的位置编码使用了sin函数和cos函数,这种方法不同于传统的学习得到的位置嵌入,而是采用固定的函数形式,即。是序列处理模型中的基本思想。注意力机制就是对一系列的query和一系列的key-value对,我们需要确定对于每个query而言不同 value 的重要程度,而这个权重是根据 query 和key 的相关度计算得到的。
2024-07-17 19:31:08
1194
1
原创 【MIT 6.5840(6.824)学习笔记】GFS
根据GFS论文的描述,客户端会选择一个在网络上最近的服务器(在Google的数据中心中,通过IP地址的差异可以判断网络位置的远近),然后将读请求发送到这个服务器。然后,如果它读取的记录与之前的记录具有相同的 ID,它就知道它们是彼此的重复项。如果服务器1(S1)先处理C1的请求,那么在它的表单里面,X先是1,之后S1看到了来自C2的请求,会将自己表单中的X覆盖成2。但是,如果S2恰好以不同的顺序收到客户端请求,那么S2会先执行C2的请求,将X设置为2,之后收到C1的请求,将X设置为1。
2024-05-28 16:21:34
1402
原创 【论文阅读笔记】The Google File System
Google File System (GFS) 是一个可扩展的分布式文件系统,专为快速增长的Google数据处理需求而设计。这篇论文发表于2003年,此前已在Google内部大规模应用。GFS不仅追求性能、可伸缩性、可靠性和可用性等传统分布式文件系统的设计目标,还基于对自身应用负载情况和技术环境的深入观察,提出了独特的设计思路,与早期文件系统的假设明显不同。GFS 在设计的时候有一些假想,即预期要实现的目标。系统由许多廉价的普通组件组成,因此组件失效是一种常态。
2024-05-28 16:19:20
1814
翻译 【MIT 6.5840(6.824)学习笔记】测试分布式系统的线性一致性
类似的,我们可以画出 client 1,2 和 4 的,那么 client 2 的操作一定会在 4 的操作开始的后面,但这样我们就不能处理 client 3,它只可能合法的返回。但不幸的是,在测试一些分布式 key-value store 的时候,Knossos 并不能很好的工作,它可能只能适用于一些少的并发 clients,以及只有几百的事件的历史。上面的代码比较简单,但包含了足够的信息,包括初始状态是怎样的,内部状态是如何被操作的结果改变的,从 key-value存储里面操作返回的结果是怎样的。
2024-05-22 09:31:46
239
原创 MIT 6.5840(6.824) Lab2:Key/Value Server 设计实现
对于并发的请求来说,返回的结果和最终状态都必须和这些操作顺序执行的结果一致。例如,如果一个客户端发起一个更新请求并从服务器获取了响应,随后从其他客户端发起的读操作可以保证能看到改更新的结果。如果存在,则表明该请求已经处理过,服务器可以跳过重复的处理,直接返回之前处理过的值。在本次 Lab 中,你将在单机上构建一个键/值服务器,以确保即使网络出现故障,每个操作也只能执行一次,并且操作是可线性化的。当然,还需要考虑一个问题,就是服务器会不断积压处理过的请求ID信息,所以我们需要快速释放服务器内存。
2024-05-15 13:04:48
1877
5
原创 【MIT 6.5840(6.824)学习笔记】使用Go进行线程和RPC编程
远程过程调用(RPC)是分布式系统中的关键技术之一,它使得客户端和服务器之间的通信变得简单而直观。在分布式系统中,不同的节点可能分布在不同的物理机器上,RPC允许这些节点之间进行远程通信,就像调用本地函数一样,无需了解底层的网络协议细节。RPC的目标是实现易于编程的客户端/服务器通信,它隐藏了底层网络通信的复杂性,为开发人员提供了简单的接口。通过RPC,开发人员可以专注于业务逻辑的实现,而无需担心网络通信的细节。
2024-05-15 10:01:52
1133
DP26题精解思路——ACM刷题常用.docx
2020-06-10
牛客网数据库SQL实战题目汇总
2024-05-20
XCPC-Algorithms
2024-05-20
王爽《汇编语言》第三版课后实验及检测点答案
2024-05-20
graduate-English-Resource
2024-05-17
研究生数学课程-面试资料
2024-05-17
LanQiaoCode-Python
2024-05-17
蓝桥杯Python代码实现
2024-05-17
Python-web-scraping
2024-05-17
【吴恩达 深度学习】-最全面的深度学习笔记
2024-05-17
点燃我温暖你-李峋同款爱心代码
2024-05-17
微信小程序-番茄时钟工具
2024-05-16
NJU操作系统设计实现学习笔记
2024-05-16
C语言实现的成绩管理系统
2024-05-16
Python实现矩阵论代码
2024-05-16
基于Vue和Echarts实现的天气查询和家居设备控制app
2024-05-16
基于Thrift实现的游戏匹配项目
2022-04-05
基于CocosCreator制作的水果忍者游戏
2021-07-31
常用函数模板——ACMer者的精选.doc
2020-06-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人