刷新
Ros2_control浅析——一个机器人开发通用框架的结构(1)

博主头像 引言: 最近在开发一个送餐机器人,但是在电机和ros2系统交互时犯了难,不知道该怎么写才能让系统架构清晰一些,后来了解到ros2社区有一个规范的开发框架,所以我会结合个人理解来分析一下这个架构,算是我的学习笔记吧,希望能够对您有帮助! ros2_control是什么 ros2_control 是一个 ...

揭秘JUC:volatile与CAS,并发编程的两大基石

博主头像 JUC(java.util.concurrent)并发包,作为Java语言并发编程的利器,由并发编程领域的泰斗道格·利(Doug Lea)精心打造。它提供了一系列高效、线程安全的工具类、接口及原子类,极大地简化了并发编程的开发流程与管理复杂度。 JUC并发包与happens-before、内存语义的 ...

vivo 浏览器福利体系架构演进之路

博主头像 vivo 浏览器为应对多场景金币激励需求及旧架构流量、IO等痛点,升级福利中心架构。服务层面拆分流量与业务,打造金币集散中心;数据层面分库分表、拆解大表并优化流水设计;通过仲裁系统和软事务保障数据一致性。改造后,系统可支撑千万级DAU,性能稳定提升,物理存储成本降低,解决了流量与存储压力,成为高可用... ...

从MESA模型到锁升级:synchronized性能逆袭的底层逻辑

博主头像 管程(Monitor)是一种用于管理共享资源访问的程序结构,能确保同一时刻只有一个线程访问共享资源,解决并发编程中的互斥和同步问题。MESA模型是管程的经典实现,主要由入口等待队列和条件变量等待队列构成。 1)入口等待队列‌:确保线程互斥,多个线程试图进入管程时,仅一个线程能成功,其余线程在入口等待 ...

一把锁的两种承诺:synchronized如何同时保证互斥与内存可见性?

博主头像 在多线程环境中,‌临界区(Critical Section)是指一次只能由一个线程执行的代码段,这些代码通常涉及对共享资源(如变量、数据结构、文件或数据库连接)的访问或修改。临界区的存在是为了解决并发控制中的两大核心问题。 ‌ 1)数据不一致性‌:如果多个线程同时对共享资源进行写操作,可能会破坏数据 ...

从混沌到秩序:Java共享内存模型如何通过显式约束驯服并发?

博主头像 并发编程的本质,是在看似混沌的并行执行中建立秩序,确保程序的确定性。为达此目的,并发原语应运而生,它们是构筑一切并发系统的基石。其核心使命在于,通过定义一套明确的交互范式,消除因资源共享而引发的竞态条件(Race Condition),从而驯服并发世界的不确定性。 从Java的显式锁(synchro ...

绯闻女孩不只会八卦:从“验明正身”到“抓内鬼”,Gossip的进阶玩法

博主头像 默克尔树 默克尔树(Merkle Tree)是由计算机科学家Ralph Merkle多年前提出,并以他本人的名字来命名,也叫哈希树。默克尔树是一种树形数据结构,通常是二叉树,其中每个叶子节点是数据块的哈希值,而每个非叶子节点是其所有子节点哈希值的哈希。树根的哈希值(Merkle Root)代表了整个 ...

“鸡蛋不能放一个篮子里”,如何确保千亿数据万无一失?

博主头像 副本机制(Replication),是指分布式系统在多个节点间保存有相同数据的冗余,即副本(Replica/copy)。当出现某一个节点的数据丢失时,可以从副本上读取到数据。数据副本是分布式系统中解决数据丢失问题的唯一手段。 合适的做法并非以机器作为副本单位,而是将数据划分为合理的数据段,以数据段为 ...

“你还活着吗?” “我没死,只是网卡了!”——来自分布式世界的“生死契约”

博主头像 租约(Lease) 机制是分布式系统中一种至关重要的协调工具,广泛应用于节点状态判定、领导者选举、分布式锁、资源管理等场景。其核心思想是通过一个带有时间限制的授权(Time-bounded Promise) 来确保在不确定环境下的行为一致性和系统可靠性。 Lease机制的运行逻辑主要包括以下要点。 ...

妙哉!这个业务语义化的Builder模式,让对象构建变得更稳、更准、更快

博主头像 还在用传统的builder模式来实例化构建对象吗?来,给你的程序注入点新鲜血液 业务导向的Builder模式在AuditSaveVO中的卓越实践 在复杂的业务系统开发中,我们经常面临如何优雅构建数据对象的挑战。传统的构造器模式在业务语义表达方面存在明显不足。今天我们将深入分析一种基于业务语义导向 ...

并发编程中的乐观锁与悲观锁

博主头像 一、核心思想:不同的并发哲学 乐观锁和悲观锁是处理数据竞争(多个线程可能同时修改同一数据)的两种不同策略。它们的区别源于对“冲突发生概率”的不同假设。 二、对比总结先行 特性 悲观锁 乐观锁 哲学 假设冲突很可能发生 假设冲突不太可能发生 机制 先取锁,再操作 先操作,更新前再检查冲突 实现 syn ...

海量数据如何“安家”?一文读懂哈希、范围和一致性哈希三大分片策略

博主头像 将单机问题转化为分布式解决方案时,首要任务是对问题进行分解,使得集群中的每台机器负责处理原问题的一个子集。无论是计算任务还是存储任务,其操作对象都是数据。因此,如何将海量数据有效地分解并分配到集群的不同节点上,即数据分布(也常称为数据分片,Data Partitioning/Sharding),是构 ...

“卧槽,系统又崩了!”——别慌,这也许是你看过最通俗易懂的分布式入门

博主头像 在分布式系统中,有效应对节点故障、网络分区延迟和数据一致性等挑战至关重要。本文将剖析保障分布式系统可靠性的核心机制:数据分片实现水平扩展,冗余副本保障数据高可用,租约(Lease)机制优化节点状态共识与资源管理,多数派(Quorum)原则确保操作的一致性,Gossip等去中心化协议高效同步集群状态。 ...

从JSON到Protobuf,深入序列化方案的选型与原理

博主头像 序列化:数据跨越边界的翻译官 序列化(Serialization)用于描述RPC服务接口和数据结构。在RPC通信中,客户端和服务器之间传输的数据通常是结构化的,如调用方法、请求参数、返回值等。这些结构化数据需要通过序列化过程转换为二进制流,以便在网络中进行传输。 目前,常见的跨语言序列化编码方式包括 ...

gRPC不是银弹:为内网极致性能,如何设计自己的RPC协议?

博主头像 自研RPC协议:为性能而生的赛道利器 尽管gRPC凭借其标准化、跨语言和基于HTTP/2的强大特性,在公网和云原生环境中大放异彩,但在某些特定的内网环境中,对性能、延迟和资源占用的要求可能更为苛刻。HTTP/2虽然高效,但其帧结构和头部处理机制相较于专为内网设计的极简协议,仍可能引入不必要的开销。 ...

123···50>