自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 收藏
  • 关注

原创 一致性笔记

CAP 理论中的 consistency,或者 ACID 中的 consistency,或者缓存一致协议中的 coherence,还有 Raft/Paxos 中的 consensus,它们对应的中文翻译都是“一致性”。

2023-11-09 16:45:28 101

原创 Linux 内核设计与实现(五)

程序的并发执行可能会导致多个进程同时访问临界区的资源。

2023-11-09 16:45:03 84

原创 Linux 内核设计与实现(四)

该函数不能访问用户空间。

2023-11-09 16:44:55 103

原创 Linux 内核设计与实现(三)

Linux内核实现了一些通用数据结构,并倡导大家在开发内核时使用。

2023-11-09 16:44:41 63

原创 Linux 内核设计与实现(二)

进程由可执行程序代码以及其他资源组成,包括打开的文、挂起的信号、内核内部数据结构、处理器状态、一个或多个具有内存映射的内存地址以及一个或多个执行线程,当然还有用来包括存放全局变量的数据段等。线程是在进程中活动的对象。**每个线程拥有一个独立的程序计数器、线程栈和一组寄存器。内核调度的对象是线程而不是进程。**在Linux实现中,它对线程和进程并不特别区分。进程在创建它的时候开始存活,这是调用fork()系统的结果,通过复制一个现有进程创建一个全新的进程。

2023-11-09 16:44:21 38

原创 Linux 内核设计与实现(一)

Linux是类Unix系统,但它不是Unix。尽管Linux借鉴了Unix的许多设计并实现了Unix的API(由POSIX标准定义和其他Single Unix Specification定义),但Linux没有像其他Unix变种那样直接使用Unix源码。

2023-11-09 16:44:01 40

原创 C++ Primer 学习(二)

使用内联函数,需要在函数声明与定义前加上关键字 inline;应该有选择地使用内联函数,如果执行代码的时间比函数调用机理的时间长,则所节省的时间只占整个过程的一小部分;如果代码执行时间很短,则内联调用就可以节省非内联调用的大部分时间。inline 只是对编译器的一种提示,编译器不一定会这么做,他可能会认为函数过大或注意到函数调用了自己(内联函数不能递归)。

2023-11-09 16:42:40 28

原创 Tars RPC

Socket 起源于 Unix ,Unix/Linux 基本哲学之一就是“一切皆文件”,都可以用“打开(open) –> 读写(write/read) –> 关闭(close)”模式来进行操作。因此 Socket 也被处理为一种特殊的文件或者文件描述符。Socket 是对 TCP/IP 协议族的一种封装,是应用层与 TCP/IP 协议族通信的中间软件抽象层。

2023-11-09 16:41:11 45

原创 C++ Primer 学习(一)

C++ Primer Plus 学习笔记

2022-06-17 10:51:45 30

原创 C++性能优化(三)

C++性能优化指南学习笔记

2022-06-17 10:50:26 151

原创 C++ 性能优化(二)

C++ 性能优化指南阅读笔记

2022-06-09 17:04:12 51

原创 C++ 性能优化(一)

C++性能优化指南阅读笔记

2022-06-04 14:37:36 129

原创 C++头文件及库搜索路径

头文件搜索路径第一种#include "head.h"搜索当前目录搜索 -I 指定的目录搜索 gcc 的环境变量 CPLUS_INCLUDE_PATH (C程序使用 C_INCLUDE_PATH ) 对应的目录搜索 gcc 的内定目录/usr/include/usr/local/include/usr/lib/gcc/x86_64-linux-gnu/include第二种#include <head.h>搜索 -I 指定的目录搜索 gcc 的环境变量 CP

2022-04-21 10:29:50 778

原创 C++右值引用

临时对象什么是临时对象?C++真正的临时对象是不可见的匿名对象,不会出现在你的源码中,但是程序在运行时确实生成了这样的对象。通常出现在以下两种情况。为了使函数调用成功而进行隐式类型转换的时候传递某对象给一个函数,而其类型与函数的形参类型不同时,如果可以通过隐式转化的话可以使函数调用成功,那么此时会通过构造函数生成一个临时对象,当函数返回时临时对象即自动销毁。如下例://计算字符ch在字符串str中出现的次数 int countChar (const string& str, cha

2022-01-23 15:49:35 26

原创 C++常用知识归纳

类访问权限C++ 通过 public、protected、private 三个关键字来控制成员变量和成员函数的访问权限。public:可以被该类中的函数、子类的函数、友元函数访问,也可以由该类的对象访问;protected:可以被该类中的函数、子类的函数、友元函数访问,但不可以由该类的对象访问;private:可以被该类中的函数、友元函数访问,但不可以由子类的函数、该类的对象访问。继承方式公有继承公有继承的特点是基类的公有成员和保护成员作为派生类的成员时,它们都保持原来的状态。因此,派

2022-01-23 15:49:18 38

原创 以太坊Geth 共识算法源码解析

共识算法目前以太坊中有两个公式算法的实现,分别为clique和ethash。其中clique是PoA共识的实现,ethash是PoW共识的实现,其相应的代码位于go-ethereum/consensus目录下。PoW (ethash)PoW定义PoW与PoA不同之处在于,PoW是一个人人都可能有出块权的共识机制,而PoA通过“选举专家”来确认出块权。PoW可以被概括为如下:PoW用来对人人可以参与的区块链项目的出块权进行确权。确权的方式是通过计算满足一定的条件。这个计算必须是复杂的、耗时的;而条件

2021-09-03 15:24:12 2600

原创 以太坊Geth Trie源码解析

引言Merkle Patricia Trie 是一种经过改良的、融合了默克尔树(Merkle Trie)和前缀树(Patricia Trie)两种树结构优点的数据结构,是以太坊中用来存储键值数据对(Key, Value)的重要树形数据结构。MPT树具有以下几个作用:存储任意长度的 Key-Value 键值对数据;提供了一种快速计算所维护数据集哈希标识的机制;提供了快速状态回滚的机制;提供了一种称为默克尔证明的证明方法,进行轻节点的扩展,实现简单支付验证;由于MPT结合了默克尔树及前缀树的优势

2021-08-27 16:25:44 9045 3

原创 以太坊Geth RLP编码源码解析

RLP编码基本原理RLP (Recursive Length Prefix) 编码唯一的目的是解决结构体编码问题。RLP编码设计的两个结构体分别为:String和List。它们的定义如下:String指的是一串字节,对应Go语言中的 string/[]byte/uint/[]uint/[N]uint 等List指定是由许多String和List组成的一个列表,如 struct/[]interface{} 等比如,"\x11 \x22 \x33" 和 “abc” 为String类型,而 [“ab”

2021-07-23 12:19:09 3985

原创 以太坊区块链钱包原理

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

2021-07-14 20:42:47 3431 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除