- 博客(509)
- 资源 (11)
- 收藏
- 关注
原创 Go Context深度剖析
/ 创建一个新的通道// 等待父Context的Done通道关闭<-done// 记录操作耗时// 关闭我们的通道close(ch)}()return ch这个自定义Context可以在操作取消或完成时自动记录指标,而不需要修改现有代码。
2025-03-12 21:04:14
903
原创 深入解析Go语言Channel:源码剖析与并发读写机制
在Go语言的并发编程模型中,Channel是一个核心概念,它优雅地实现了CSP(Communicating Sequential Processes,通信顺序进程)理念中"通过通信来共享内存,而不是通过共享内存来通信"的思想。本文将从源码层面深入剖析Go Channel的实现机制,特别关注有缓冲Channel的并发读写原理。
2025-03-12 11:30:09
1209
原创 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
2209
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
880
2
原创 配置和排查 Lombok 在 IDEA 中使用的详细步骤
Lombok 是一个 Java 库,可以通过注解的方式,自动生成这些常见的代码,从而让代码更加简洁、清晰。完成后,IDEA 就可以正常识别 Lombok 的注解了。添加依赖后,IDEA 将会自动下载 Lombok 库。如果依赖没有自动下载,可以执行下一步来手动刷新项目。在 IDEA 中,点击右侧的 Maven 面板,找到你的项目,点击。下面是配置和排查 Lombok 在 IDEA 中使用的详细步骤。在日常开发中,Java 代码常常需要大量的样板代码,比如。在 Maven 项目中,需要在。
2024-10-26 10:55:18
1160
1
原创 本地事务:在单一数据源场景下的 ACID 保障者
本地事务(Local Transaction)是指仅操作单一事务资源的、不需要全局事务管理器进行协调的事务。原子性:将组成事务的多个操作视作一个不可分割的整体,要么全部成功,要么全部失败,不能仅部分生效。一致性:事务执行前后,数据库只能从一个一致状态转变为另一个一致状态,即事务执行对整体数据产生的变化是一致的。隔离性:多事务并发执行时,各事务之间不能被其他事务干扰,就如同每个事务都在独立的沙箱中执行。持久性:一旦事务生效,无论发生何种状况(如故障、宕机等),该事务对数据的变更都会永久保存。
2024-10-24 09:43:39
814
原创 MIT 6.5840(6.824) Lab 5:Sharded Key/Value Service 设计实现
本实验要求构建一个键 / 值存储系统,该系统能够将键 “分片” 或分区到一组副本组上。分片是键 / 值对的子集,例如所有以“a”开头的键可能是一个分片等,通过分片可提高系统性能,因为每个副本组仅处理几个分片的放置和获取,并且这些组并行操作。系统有两个主要组件:一组副本组和分片控制器。每个副本组使用 Raft 复制负责部分分片的操作,分片控制器决定每个分片应由哪个副本组服务,其配置会随时间变化。客户端和副本组都需咨询分片控制器来找到对应关系。系统必须能在副本组间转移分片,以平衡负载或应对副本组的加入和离开。
2024-10-20 13:18:56
1396
3
原创 分布式系统理论详解:CAP、BASE、PACELC
它考虑的是这样一个问题:系统在大部分时间下,分区都是平稳运行的,并不会出错,在这种情况下,系统设计要均衡的其实就是延迟与数据一致性的问题,为了保证数据一致性,写入与读取的延迟就会增高。CAP理论是分布式系统领域中被广泛讨论的一个理论,由 Eric Brewer 在 2000 年提出,一般系统架构师会把其作为衡量系统设计的准则,其中CAP是一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)的缩写。CAP的一致性,关注的是数据一致性;
2024-10-14 23:29:35
1424
2
原创 【论文阅读笔记】Bigtable: A Distributed Storage System for Structured Data
Bigtable 是 Google 设计的用于管理结构化数据的分布式存储系统,可扩展到数千台服务器存储 PB 级数据。它不是关系数据库,而是一种稀疏、分布式、持久性多维排序映射(K/V)。Bigtable被 60 多个 Google 产品使用,涵盖不同数据规模和延迟要求的应用,这得益于 BigTable 提供的简单数据模型可以使客户端动态控制数据的布局和格式。
2024-10-13 23:16:43
1029
原创 【论文阅读笔记】The Chubby lock service for loosely-coupled distributed systems
Chubby是一个面向松耦合分布式系统的锁服务,被广泛应用于Google内部的多个关键系统中,如GFS(Google文件系统)和Bigtable。在GFS中,Chubby用于指定主服务器;而在Bigtable中,它不仅支持主服务器选举、帮助主服务器发现其所管理的子服务器以及协助客户端定位主服务器,还充当了少量元数据存储的角色。Chubby允许客户端同步活动并就环境基本信息达成一致。主要目标包括可靠性、对大量客户端的可用性以及易于理解的语义,吞吐量和存储容量是次要考虑因素。
2024-10-13 23:15:21
1121
原创 Prometheus使用Pushgateway推送数据
Prometheus 的 Pushgateway 是一个简单的 HTTP 服务器,它允许数据被推送到该服务器,而不是通过拉取的方式获取。它的存在是为了让临时和批处理作业能够将其指标暴露给 Prometheus。由于这类作业可能存在的时长不足以被主动抓取,因此它们可以将指标推送到 Pushgateway。随后,Pushgateway 会将这些指标暴露给 Prometheus。Pushgateway 作为中间件,保存推送的数据直到 Prometheus 抓取。它支持从多个来源推送指标,每个来源都通过唯一的。
2024-09-20 10:02:04
1070
原创 Prometheus架构详解
Prometheus 是一个开源的系统监控报警工具套件,它最初由SoundCloud开发,并于2016年成为CNCF(云原生计算基金会)托管的第二个项目(第一个是kubernetes)。Prometheus 以其简单高效的方式收集指标而闻名,能更好地与容器平台、云平台配合,这使得它在现代云原生环境中非常受欢迎。应用性能监控:监控应用程序的健康状态和性能指标。基础设施监控:监控服务器、存储设备、网络设备等基础设施的状态。业务监控:监控业务层面的关键性能指标(KPIs)。独立性。
2024-09-20 09:52:47
983
原创 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
2216
1
原创 【论文阅读笔记】Grove: a Separation-Logic Library for Verifying Distributed Systems (Extended Version)
大型应用在分布式系统中遭遇多重挑战,如并发控制、故障恢复、网络不稳定及服务器时钟异步等。形式化验证则是一种严格确立系统正确性的方法,帮助处理边缘情况。租约是分布式系统中的关键技术,用于保证系统某方面在一定时间内不变,GFS、Chubby和DynamoDB都具有类似的机制。例如租约允许领导者高效执行只读查询,无需频繁验证自身领导权,然而,这一机制的有效性验证却是一项艰巨任务。
2024-08-30 21:19:55
1597
1
原创 【论文阅读笔记】ZooKeeper: Wait-free coordination for Internet-scale systems
这篇论文介绍了ZooKeeper,一个用于协调分布式应用进程的服务。ZooKeeper旨在提供一个简单且高性能的内核,用于构建更复杂的客户端协调原语。它整合了组消息传递、共享寄存器和分布式锁服务的元素,形成了一个复制的、集中式的服务。Zookeeper提供了一个接口,具有共享寄存器的无等待特性和类似分布式文件系统缓存失效的事件驱动机制,以提供简单而强大的协调服务。ZooKeeper还保证了每个客户端请求的FIFO执行和所有更改ZooKeeper状态的请求的线性化。分布式系统中的基本协调机制配置。
2024-08-11 22:07:57
849
原创 MIT 6.5840(6.824) Lab3:Raft 设计实现
此Raft结构体基于论文图2,基本上都是其中介绍的字段以及lab自带的字段,其中其他属性论文中也间接简述和支持,以确保Raft节点能够高效、稳定地运作。这些定时器对于触发关键的系统行为至关重要——选举定时器确保在必要时发起选举过程,而心跳定时器则维持着领导者与跟随者之间的连接,防止不必要的选举。然而,对于一个长期运行的服务来说,永远记录完整的 Raft 日志是不切实际的。论文的图 2 提到了哪种状态应该是持久的,即。这两个核心函数,前者负责保存Raft的状态,后者则是在Raft启动时恢复之前保存的数据。
2024-08-11 17:55:31
1882
2
原创 【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
977
原创 【论文阅读笔记】DeepCAD: A Deep Generative Network for Computer-Aided Design Models
作者提出了DeepCAD,第一个一个用于CAD设计的深度生成模型。几乎所有以前的3D生成模型都产生离散的3D形状,如体素、点云和网格。为此,作者还引入了一个大型CAD模型数据集,每个模型都表示为一个CAD命令序列。曲线命令类型有限:目前,作者仅考虑了三种最常用的曲线命令类型(直线、弧线和圆)。然而,其他曲线命令也可以轻松添加,例如可以通过三个控制点以及起点来指定的三次贝塞尔曲线,其参数结构可以按照3.1中描述的方式进行。操作命令的局限性。
2024-07-29 21:24:54
1964
4
原创 【论文阅读笔记】In Search of an Understandable Consensus Algorithm (Extended Version)
分布式一致性共识算法指的是在分布式系统中,使得所有节点对同一份数据的认知能够达成共识的算法。且算法允许所有节点像一个整体一样工作,即使其中一些节点出现故障也能够继续工作。之前的大部分一致性算法实现都是基于Paxos,但Paxos难以理解和实现,为此作者开始寻找一种新的易于理解的一致性算法,Raft则是作者工作的产出。算法分解:Raft将核心功能模块化,分离出领导人选举、日志复制和安全性三个关键部分,使每个部分的逻辑更加清晰。状态空间缩减。
2024-07-19 21:36:24
1312
原创 【论文阅读笔记】Hierarchical Neural Coding for Controllable CAD Model Generation
作者提出了一种CAD的创新生成模型,该模型将CAD模型的高级设计概念表示为从全局部件排列到局部曲线几何的三层神经代码的层级树,并且通过指定目标设计的代码树来控制CAD模型的生成或完成。具体而言,一种带有“掩码跳过连接”的向量量化变分自编码器(VAE)的新变体在三个层次上提取设计变化作为神经码本。两阶段的级联自回归Transformer学习从不完整的CAD模型生成代码树,然后根据预期设计完成CAD模型。广泛的实验表明,在无条件生成等传统任务上表现出优越性能,同时在条件生成任务中实现了新颖的交互能力。
2024-07-19 21:26:53
1752
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
1352
1
原创 【论文阅读笔记】Attention Is All You Need
Transformer的成功不仅在于其高效的信息传递路径,还在于其能够在更大范围内捕捉和利用序列中的关联信息,从而提升了序列建模任务的性能和效果。在Transformer中的位置编码使用了sin函数和cos函数,这种方法不同于传统的学习得到的位置嵌入,而是采用固定的函数形式,即。是序列处理模型中的基本思想。注意力机制就是对一系列的query和一系列的key-value对,我们需要确定对于每个query而言不同 value 的重要程度,而这个权重是根据 query 和key 的相关度计算得到的。
2024-07-17 19:31:08
1132
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
1327
原创 【论文阅读笔记】The Google File System
Google File System (GFS) 是一个可扩展的分布式文件系统,专为快速增长的Google数据处理需求而设计。这篇论文发表于2003年,此前已在Google内部大规模应用。GFS不仅追求性能、可伸缩性、可靠性和可用性等传统分布式文件系统的设计目标,还基于对自身应用负载情况和技术环境的深入观察,提出了独特的设计思路,与早期文件系统的假设明显不同。GFS 在设计的时候有一些假想,即预期要实现的目标。系统由许多廉价的普通组件组成,因此组件失效是一种常态。
2024-05-28 16:19:20
1665
翻译 【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
184
原创 MIT 6.5840(6.824) Lab2:Key/Value Server 设计实现
对于并发的请求来说,返回的结果和最终状态都必须和这些操作顺序执行的结果一致。例如,如果一个客户端发起一个更新请求并从服务器获取了响应,随后从其他客户端发起的读操作可以保证能看到改更新的结果。如果存在,则表明该请求已经处理过,服务器可以跳过重复的处理,直接返回之前处理过的值。在本次 Lab 中,你将在单机上构建一个键/值服务器,以确保即使网络出现故障,每个操作也只能执行一次,并且操作是可线性化的。当然,还需要考虑一个问题,就是服务器会不断积压处理过的请求ID信息,所以我们需要快速释放服务器内存。
2024-05-15 13:04:48
1505
4
原创 【MIT 6.5840(6.824)学习笔记】使用Go进行线程和RPC编程
远程过程调用(RPC)是分布式系统中的关键技术之一,它使得客户端和服务器之间的通信变得简单而直观。在分布式系统中,不同的节点可能分布在不同的物理机器上,RPC允许这些节点之间进行远程通信,就像调用本地函数一样,无需了解底层的网络协议细节。RPC的目标是实现易于编程的客户端/服务器通信,它隐藏了底层网络通信的复杂性,为开发人员提供了简单的接口。通过RPC,开发人员可以专注于业务逻辑的实现,而无需担心网络通信的细节。
2024-05-15 10:01:52
1056
原创 MIT 6.5840(6.824) Lab1:MapReduce 设计实现
本次实验是实现一个简易版本的MapReduce,你需要实现一个工作程序(worker process)和一个调度程序(coordinator process)。工作程序用来调用Map和Reduce函数,并处理文件的读取和写入。调度程序用来协调工作任务并处理失败的任务。你将构建出跟MapReduce论文里描述的类似的东西。(注意:本实验中用"coordinator"替代里论文中的"master"。阅读MapReduce论文阅读lab文档理解MapReduce框架理解原框架代码,理清所需完成任务。
2024-05-14 19:56:00
1386
原创 【MIT 6.5840(6.824)学习笔记】分布式系统介绍
举例来说,如果一台计算机能够解决一定量的问题,那么增加第二台计算机后,系统能够以更快的速度解决相同数量的问题,或者在相同时间内处理更多的问题。这样,不同的用户可以访问不同的Web服务器,但它们需要访问相同的数据,因此所有的Web服务器都需要与后端数据库通信。因此,为了尽可能减少通信,特别是当副本相距很远时,人们会构建弱一致性系统,只需要更新最近的数据副本,并且只需要从最近的副本获取数据,并允许读取旧数据。然而,重构一个单一的数据库是困难的,尽管可以将数据库拆分为多个来提高性能,但这需要大量的工作。
2024-05-14 14:15:27
1147
原创 【论文阅读笔记】MapReduce: Simplified Data Processing on Large Clusters
当在一个足够大的 cluster 集群上运行大型 MapReduce 操作的时候,大部分的输入数据都能从本地机器读取,因此消耗非常少的网络带宽。用户可以控制操作的执行,并且可以将其限制在特定的。操作是输入确定性函数(即相同的输入产生相同的输出)时,MapReduce保证任何情况下的输出都和所有程序没有出现任何错误、顺序的执行产生的输出是一样的。MapReduce 模型的核心思想是将大规模的数据集分解成多个小的数据块,然后分配给集群中的多个计算节点进行并行处理,最终将结果合并成最终的输出。
2024-05-12 22:32:33
1568
1
翻译 AI时代下的GPU生存工具包:每个开发人员必须了解的最基本知识
在即将到来的AI时代,GPU是一个不容忽视的东西,我们应该更加了解它的能力。GPU 的并行处理能力在处理人工智能和机器学习任务固有的海量数据集和复杂的神经网络架构方面特别有优势。此外,GPU 的作用超出了传统的机器学习领域,在科学研究、模拟和数据密集型任务中找到了应用。与 CPU 不同,GPU 拥有更多的核心,通常有数千个。例如,图像识别架构 AlexNet 通过同时处理图像的不同部分,展示了并行处理的威力,从而实现准确的模式识别。因为当我们并行训练时,会产生更大的模型,而更大的模型会产生更好的输出。
2024-03-19 20:25:10
150
原创 Linux execve函数详解
描述execve()执行由pathname引用的程序。这会导致当前由调用进程运行的程序被一个新程序替换,该新程序具有新初始化的堆栈、堆和(已初始化和未初始化)数据段。pathname必须是二进制可执行文件或以形式为开头的脚本。argv是传递给新程序作为其命令行参数的字符串指针数组。按照惯例,这些字符串中第一个(即argv[0])应包含与正在执行文件相关联的文件名。argv数组必须以NULL指针结尾。(因此,在新程序中,argv[argc]将为NULL)。envp是传递给新程序环境变量的字符串指针数组。
2024-03-13 10:30:34
2863
1
原创 【矩阵论】Chapter 7—Hermite矩阵与正定矩阵知识点总结复习
【矩阵论】Chapter 7—Hermite矩阵与正定矩阵知识点总结复习
2023-12-06 10:02:44
9143
原创 【矩阵论】Chapter 6—矩阵分解知识点总结复习(附Python实现)
【矩阵论】Chapter 6—矩阵分解知识点总结复习(附Python实现)
2023-12-05 14:45:23
886
王爽《汇编语言》第三版课后实验及检测点答案
2024-05-20
XCPC-Algorithms
2024-05-20
牛客网数据库SQL实战题目汇总
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
Python实现矩阵论代码
2024-05-16
C语言实现的成绩管理系统
2024-05-16
基于Vue和Echarts实现的天气查询和家居设备控制app
2024-05-16
基于Thrift实现的游戏匹配项目
2022-04-05
基于CocosCreator制作的水果忍者游戏
2021-07-31
常用函数模板——ACMer者的精选.doc
2020-06-10
DP26题精解思路——ACM刷题常用.docx
2020-06-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人