protobuf序列化反序列化原理剖析
protobuf的数据类型大致可以分为以下几种: 变长编码类型Varints 固定32bits类型 固定64bits类型 有长度标识的变量 根据这些类型,编码方式也就分成四种。下面我来一一介绍一下不同数据类型的编码方式。 Varints编码 Varints编码用于处理变长编码类型。 核心思想其实就一句话:数字小的占用空间小,数字大的占用空间大。那要如何实现这个结果呢...
protobuf的数据类型大致可以分为以下几种: 变长编码类型Varints 固定32bits类型 固定64bits类型 有长度标识的变量 根据这些类型,编码方式也就分成四种。下面我来一一介绍一下不同数据类型的编码方式。 Varints编码 Varints编码用于处理变长编码类型。 核心思想其实就一句话:数字小的占用空间小,数字大的占用空间大。那要如何实现这个结果呢...
高可用的基本策略就是部署redis服务集群,集群首先要解决的问题就是数据一致性问题。redis内使用主从复制来解决这个问题。 redis主从复制 redis哨兵机制 对于所有机制的学习,我们都可以遵循一下原则来学习。why-what-how原则。 why-为什么需要哨兵机制 what-什么是哨兵机制 how-如何实现哨兵机制
为了提高系统数据的高可用,通常会集群化部署MySQL,MySQL中又是使用了什么技术来实现其高可用的呢?答案是主从复制。主从复制保证集群内MySQL的数据保持一致性。主从复制的前提是binlog。 binlog 什么是binlog?binlog是Mysql Server层提供的在表结构或者表数据发生修改的时候进行保存的日志。每产生一条更新操作时,Server层就会产生一条binlog,在...
前言 久仰MIT6.5840大名,现开始做它的Lab。本篇讲下MapReduce这个Lab的基本流程。这里提供MapReduce的论文。这篇论文非常经典,值得一读,是经典的分布式任务框架。 MapReduce 要完成这个实验其实不需要把MapReduce这个框架研究多深,只需要理解Coordinator和Worker之间是如何通信协作的就可以。甚至实验代码中把Map和Reduce函数也提前...
前言 在一月份的实习面试中发现不少问题和需要进行补充的地方,在2月份的春季实习面试开始前,进行一些针对性的准备和学习,在这里发帖记录需要学习的内容。 需要准备的内容大致可以分为两个方向:cpp方向和go方向。由于cpp岗是在太少、加上就业形势不好,全部押宝cpp实在不是明智之举,因此打算在这个寒假多学一门语言 / GO。不过学习一门语言需要掌握的模块基本一致,可以快速速成。速成完语言学习后...
前缀和 如何定义前缀和呢? 所以有s[i+1] = s[i] + nums[i] 下标从i到j-1的非空连续数组的元素和等于k,说明s[j] - s[i] = k 和为k的子数组 将上面的式子转换一下,得到s[i] = s[j] - k;这表示元素和为k的子数组的个数。然后在遍历数组的过程中用哈希表记录前缀和出现的次数,每遍历一个元素,就查看是否存在前缀和为pre - k的,如果...
单例模式是最常用的设计模式之一,当类对象只需要一个实例、或者重复创建的无意义且消耗资源的时候需要,通常用于全局唯一工具类的编写,比如:日志、配置、uuid生成器等。单例类需要提供一个全局访问的入口 / global access point。下面仅讨论cpp下单例类的实现。 cpp中单例类的编写范式有两种:Meyer’s Singleton 、 Lazy Singleton 和 Eager...
前言 本文旨在帮助读者快速复习Cpp,建立起一个完整的Cpp知识体系架构。 Cpp 新特性 掌握 auto、decltype auto:变量类型推断;decltype:表达式类型推断 类型推断可以在编译器就推导出变量或者表达式的类型,方便开发者编码简化代码。 decltype:decltype(expression) var 将 var 的类型定义为 expression 的...
二分查找 重要重要!二分查找的前提是有序数组!并且元素不能重复,如果重复查找返回的下标可能不是唯一的。 循环不变量原则:根据定义不变量区间来判断while循环条件语句以及循环体内的操作。区间分为两种:左闭右闭区间和左闭右开区间。左闭右闭区间的循环条件是left<=right,左闭右开区间的循环条件是left<right。在循环中一定要根据区间的定义来确定边界条件,进行边界处理...
DragonOS syscall alarm q1:什么是syscall alarm? alarm系统调用是我加入dragonos社区领到的第一个任务,算是个新手任务。负责实现alarm系统调用。alarm系统调用的作用就是内核申请一个定时器alarm,在经过一段时间后向用户程序发送一个SYSALATM信号,用户程序捕捉到这个信号后执行提前设定号的回调函数。 这个alarm结构体注册在用...