zookeeper源码分享六 ---- 事物日志

news2024/11/18 0:22:29

二进制格式设计思想

在二进制格式设计中,其实和json的格式设计类似,也是有套路的。

设计要存储的内容(内容尽可能少,能用数字表示,不用字符串表示)。这些内容的前后顺序,读写都是按照这个顺序来的。

比如:FileHeader 由magic(4bytes (ZKLG)) version(4bytes) dbid (8bytes)组成,写入的顺序:4bytes 的ZKLG、4bytes的version、8bytes的dbid,读的时候也一样

设计每个内容所占的字节数,读写的时候按照顺序读写就行。zk是借助BinaryOutputArchive BinaryInputArchive 工具类实现

每块内容的字节如何设计呢
1 原始数据类型,如:int long 就用原本的字节大小
2 字符串类型,在前面先写入字符串长度,长度是原始类型。之后在写入具体的字符串内容

FileTxnLog 事物日志的二进制格式设计

不同类型的type具体的record,要看Record接口的实现类。
在这里插入图片描述

快照日志数据格式

DataTree 借助BinaryOutputArchive 字节工具将对象模型转换成字节保存。

将record数据的每个字段都按照基础数据类型char int long dubbo float bool 基础数据类型的字节占用大小进行写入;String 类型的先写入int类型的大小在写入内存;

BinaryOutputArchive 二进制输出数据流类
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

BinaryInputArchive 二进制输入数据流类

将record数据的每个字段都按照基础数据类型char int long dubbo float bool 基础数据类型的字节占用大小进行读取,string类型的先读取大小,在读取内容。

BinaryInputArchive 底层是一个DataInput
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/192273.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

来看看这几个办公技巧吧

技巧一:重复运行命令 当我们需要将一段中的不同单词加粗时,使用替换功能可能不是特别方便。这时可以使用万能的【F4】键进行重复操作。首先选中一个需要加粗的字,点击【加粗】设置完成字体的加粗;然后,选择另一个文本&…

1、python框架selenium

分层的自动化测试 什么样的产品适合做自动化测试? 功能成熟(需求变动较小) 产品更新维护周期长 项目进度不太大 比较频繁的回归测试 软件开发比较规范,具有可测试性 可以脚本具有可复用性 selenium 技术: 元素定位的…

[基础语法] python语法之列表、判断、循环例子

文章目录购物车案例已发布:整体框架打印商品列表将商品加入购物车打印购物车、计算总金额完整代码另外说明购物车案例 已发布: python判断语句python循环语句python之列表list购物车案例后续暂时不更新,有想要的部分,可以后台留…

11、Servlet——综合案例(Servlet+JDBC):管理员登录

目录 1、在MySQL中新建一个servletdatabase数据库,创建表admin 2、在web中创建登录页面login.html 3、在web中创建CSS文件夹,在CSS文件夹中创建login.css 4、在web下新建注册页面register.html 5、在CSS文件夹中新建register.css 6、在CSS文件夹下新…

文件包含漏洞

数据来源 本文仅用于信息安全的学习,请遵守相关法律法规,严禁用于非法途径。若观众因此作出任何危害网络安全的行为,后果自负,与本人无关。 01 文件包含漏洞概述 简单例子 PHP中的文件包含函数 02 文件包含漏洞类型及利用 本地文…

基于MATLAB的车牌识别系统设计

基于MATLAB的车牌识别系统设计 摘要 随着公路逐渐普及,我国的公路交通事业发展迅速,所以人工管理方式已经不能满着实际的需要,微电子、通信和计算机技术在交通领域的应用极大地提高了交通管理效率。汽车牌照的自动识别技术已经得到了广泛应…

弱网测试利器-Charles工具实战

一:弱网测试要点 二:利用抓包工具charles进行弱网设置,适用PC端和移动端(IOS/Android) 1、以charles 4.5.6版本为例,打开Proxy->Throttle Settings 2、打开Throttle Settings,界…

实战详细讲解Qt插件plugin的编写与用法

目录 1.Qt的插件是什么?优点是什么? 2.实战项目需求 3. 程序设计分析 4.Qt插件的编写 Q_DECLARE_INTERFACE(类名,标识符) Q_INTERFACES 5.插件的调用 总结感言: 1.Qt的插件是什么?优点是…

let/const相关的内容(一)

1.let/const的基本使用 在ES5中我们声明变量都是使用的var关键字(variable的缩写),从ES6开始新增了两个关键字可以声明变量:let、const。 let和const在其他编程语言中都是有的,所以并不是新鲜的关键字,但是他们确实给JS带来了不一…

动态规划设计LeetCode 300. 最长递增子序列 354. 俄罗斯套娃信封问题

🌈🌈😄😄 欢迎来到茶色岛独家岛屿,本期将为大家揭晓LeetCode 300. 最长递增子序列 354. 俄罗斯套娃信封问题,做好准备了么,那么开始吧。 🌲🌲🐴&#x1f434…

【openGauss】把应用开发中的设置客户端字符编码往细了说

前言 早前写过两篇有关Oracle字符集的文章 【ORACLE】谈一谈Oracle数据库使用的字符集,不仅仅是乱码 【ORACLE】谈一谈NVARCHAR2、NCHAR、NCLOB等数据类型和国家字符集 基本说明了 ”数据字符编码“、”客户端字符编码“、”数据库字符编码“三者的关系,这些关系&a…

磨金石教育摄影技能干货分享|年味就是幸福圆满的味道

时光荏苒,时代变迁。以前是古街古巷,现在是高楼大厦。以前的老街,灯笼满街,烟火气十足。现在的城市商业街中霓虹灯可以展示出各种新年的影像。无论时代如何变迁,无论时光走了多远,我们对春节的期待从未改变…

吴恩达机器学习(二)——机器学习之监督模型之回归模型之线性回归模型

y-hat一般指的就是预测值 线性回归模型实例 构建模型 我们有一个房子的大小size,得到房屋价格(price),通过这两个常数就可计算一个输入和输出的函数关系。 f w,b(x(i)) wx(i) b i指的是第几个训练数据 评估模型——…

【教程】browsermob-proxy 基于Java的代理服务 配合selenium使用

【教程】browsermob-proxy 基于Java的代理服务 配合selenium使用 配置依赖 <!-- 代理 配合 selenium进行抓包修改等 --><dependency><groupId>net.lightbody.bmp</groupId><artifactId>browsermob-core</artifactId><version>2.1.5&…

H3C Switch S1848G端口限速

需求&#xff1a;在交换机层面对接入用户的网络流量限速1.交换机信息2.主机限速前2.1本机IP和MAC信息依次打开控制面板\所有控制面板项\网络连接2.2限速前测速使用浏览器打开https://10000.gd.cn/测速3.主机限速后3.1查看主机所在交换机接口点击“网络”-“MAC地址”&#xff0…

【微信小程序】给你的页面加上一个填写进度表

前言在搭建一些与申请相关的微信小程序的时候&#xff0c;用户会遇到需要填写很多表单的情况&#xff0c;面对未知的表单数量&#xff0c;用户往往就会放弃填写申请表格。在此基础上作为开发者的我们常常会收到这样的一个任务——给申请页面加上一个填写进度表。这样不仅可以优…

274. H 指数

274. H 指数一、题目描述二、题目分析三、解题思路3.1 更换H指数定义3.2 二分法枚举H指数一、题目描述 二、题目分析 这道题比较绕&#xff0c;理解题目意思&#xff0c;根据题目的说法&#xff0c;所谓的H指数就是&#xff1a;总共有 h 篇论文分别被引用了至少 h 次。且其余的…

二战阿里巴巴成功上岸,准备了小半年,要个28k应该也算不上很高吧~

先说下我基本情况&#xff0c;本科不是计算机专业&#xff0c;现在是学通信&#xff0c;然后做图像处理&#xff0c;可能面试官看我不是科班出身没有问太多计算机相关的问题&#xff0c;因为第一次找工作&#xff0c;阿里的游戏专场又是最早开始的&#xff0c;就投递了&#xf…

Spring Cloud Alibaba系列三:集成Gateway实现路由管理

文章目录Spring Cloud Alibaba系列三&#xff1a;集成Gateway实现路由管理前言1、改造父项目 pom 文件2、创建 gateway 子 module3、配置yml文件Spring Cloud Alibaba系列三&#xff1a;集成Gateway实现路由管理 spring cloud alibaba 版本对照 spring cloud alibaba 有严格的…

【MPP数据库】TiDB表分区探索与实践

方案背景——为什么要进行分区&#xff1f; 一是老板通Tidb集群每天涉及50张表、2亿多条数据回流&#xff0c;合理使用Hash可以把写入压力打散到不同的TiKV&#xff1b; 二是对于大集团数据做聚合&#xff0c;利用分区裁剪原理&#xff0c;查询时可以充当前置索引&#xff0c…