ShardingSphere 入门教程之一
大纲
前言
学习资源
基础核心理论
CAP 理论
CAP 的概念:
CAP 定理(CAP theorem)又被称作布鲁尔定理(Brewer’s theorem),是加州大学伯克利分校的计算机科学家埃里克・布鲁尔(Eric Brewer)在 2000 年的 ACM PODC 上提出的一个猜想。
对于设计分布式系统的架构师来说,CAP 是必须掌握的理论。在一个分布式系统中,当涉及读写操作时,只能保证一致性(Consistence)、可用性(Availability)、分区容错性(Partition Tolerance)三者中的两个,另外一个必须被牺牲。- C 一致性(Consistency):对某个指定的客户端来说,读操作保证能够返回最新的写操作结果
- A 可用性(Availability):非故障的节点在合理的时间内返回合理的响应
(不是错误和超时的响应) - P 分区容忍性(Partition Tolerance):当出现网络分区后
(可能是丢包,也可能是连接中断,还可能是拥塞),系统能够继续 “履行职责”
C++ 进阶基础之十一
大纲
- C++ 进阶基础之一、C++ 进阶基础之二、C++ 进阶基础之三
- C++ 进阶基础之四、C++ 进阶基础之五、C++ 进阶基础之六
- C++ 进阶基础之七、C++ 进阶基础之八、C++ 进阶基础之九
- C++ 进阶基础之十、C++ 进阶基础之十一
算法
算法的基本概念
算法的简介
函数库对数据类型的选择对其可重用性起着至关重要的作用。举例来说,一个求方根的函数,在使用浮点数作为其参数类型的情况下的可重用性肯定比使用整型作为它的参数类性要高。而 C++ 通过模板的机制允许推迟对某些类型的选择,直到真正想使用模板或者说对模板进行特化的时候,STL 就利用了这一点提供了相当多的算法。它是在一个有效的框架中完成这些算法的 —— 可以将所有的类型划分为少数的几类,然后就可以在模板的参数中使用一种类型替换掉同一种类中的其他类型。
Kafka 入门教程之二
C++ 进阶基础之十
大纲
- C++ 进阶基础之一、C++ 进阶基础之二、C++ 进阶基础之三
- C++ 进阶基础之四、C++ 进阶基础之五、C++ 进阶基础之六
- C++ 进阶基础之七、C++ 进阶基础之八、C++ 进阶基础之九
- C++ 进阶基础之十、C++ 进阶基础之十一
函数对象
函数对象的概念
尽管函数指针被广泛用于实现函数回调,但 C++ 还提供了一个重要的实现回调函数的方法,那就是函数对象。重载函数调用操作符 () 的类,其对象常称为函数对象(Function Object),即它们是行为类似函数的对象。一个类对象,表现出一个函数的特征,就是通过 对象名 + (参数列表) 的方式使用一个类对象,如果没有上下文,完全可以把它看作一个函数对待,这是通过重载类的 () 操作符来实现的。在 C++ 标准库中,函数对象被广泛地使用以获得弹性,并且标准库中的很多算法都可以使用函数对象或者函数来作为自定义的回调行为。值得一提的是,函数对象的别名是 仿函数,或者是 伪函数。
Kafka 入门教程之一
Linux 生产环境搭建 Kafka 集群
大纲
前言
本文将使用多台物理机器(至少三台)搭建 Kafka 集群,适用于 CentOS/Debian/Ubuntu 等发行版。
Zookeeper 集群搭建
本文的 Kafka 集群搭建依赖于 Zookeeper,因此生产环境需要将 Zookeeper 集群提前搭建起来。值得一提的是,从 Kafka 2.8.0 版本开始,Kafka 自身实现了 Raft 分布式一致性机制,这意味着 Kafka 集群是可以脱离 ZooKeeper 独立运行的。
集群规划
| 节点 | IP 地址 | 端口 | 版本号 |
|---|---|---|---|
| Zookeeper 节点 1 | 192.168.1.1 | 2181 | 3.4.10 |
| Zookeeper 节点 2 | 192.168.1.2 | 2181 | 3.4.10 |
| Zookeeper 节点 3 | 192.168.1.3 | 2181 | 3.4.10 |
Linux 单机搭建 Kafka 集群
大纲
前言
本文适用于在 Centos/Debian/Ubuntu 等 Linux 发行版系统上,使用单机搭建 Kafka 集群。
Zookeeper 集群搭建
本文的 Kafka 集群搭建依赖于 Zookeeper,因此需要将 Zookeeper 单机集群提前搭建起来。值得一提的是,从 Kafka 2.8.0 版本开始,Kafka 自身实现了 Raft 分布式一致性机制,这意味着 Kafka 集群是可以脱离 ZooKeeper 独立运行的。
集群规划
| 节点 | IP 地址 | 端口 | 版本号 |
|---|---|---|---|
| Zookeeper 节点 1 | 127.0.0.1 | 2181 | 3.4.10 |
| Zookeeper 节点 2 | 127.0.0.1 | 2182 | 3.4.10 |
| Zookeeper 节点 3 | 127.0.0.1 | 2183 | 3.4.10 |
C++ 进阶基础之九
大纲
- C++ 进阶基础之一、C++ 进阶基础之二、C++ 进阶基础之三
- C++ 进阶基础之四、C++ 进阶基础之五、C++ 进阶基础之六
- C++ 进阶基础之七、C++ 进阶基础之八、C++ 进阶基础之九
- C++ 进阶基础之十、C++ 进阶基础之十一
set 与 multiset 容器
set 与 multiset 容器的概念
set 容器的概念
set 是一个集合容器,其中所包含的元素是唯一的,集合中的元素会自动按一定的顺序排列。元素插入过程是按排序规则插入,所以不能指定插入位置。set 的元素不像 map 那样可以同时拥有实值和键值,set 的元素即是键值又是实值。Set 不允许两个元素有相同的键,也不可以通过 set 的迭代器改变 set 元素的值,因为 set 元素值就是其键值,关系到 set 元素的排序规则。如果任意改变 set 元素值,会严重破坏 set 的组织。换句话说 set 的 iterator 是一种 const iterator。set 拥有和 list 某些相同的性质,当对容器中的元素进行插入操作或者删除操作的时候,操作之前所有的迭代器,在操作完成之后依然有效,被删除的那个元素的迭代器必然是一个例外。


