跳至主要內容

钝悟的博客

大道至简,知易行难

dunwu.github.io
个人的技术文档归档
链接名称
链接详细描述
书籍名称
书籍详细描述
文章名称
文章详细描述
伙伴名称
伙伴详细介绍
自定义项目
自定义项目
自定义详细介绍
分布式共识

分布式共识

什么是分布式共识

共识 (distributed consensus) 是分布式系统中最基本的问题,用来保证一个分布式系统的可靠性以及容错能力。简单来说,分布式共识性是指多个服务器的保持状态一致

共识问题通常形式化如下:一个或多个节点可以提议(propose) 某些值,而集群中的所有有效节点根据共识算法进行协商,最终决议(decides) 采纳某个节点的提议。

而共识算法必须满足以下性质:


钝悟...大约 8 分钟分布式分布式协同分布式协同综合分布式协同共识广播epochquorum
《深入浅出分布式技术原理》笔记

《深入浅出分布式技术原理》笔记

开篇词 掌握好学习路径,分布式系统原来如此简单

导读:以前因后果为脉络,串起网状知识体系

分布式系统解决了什么问题

  • 首先,分布式系统解决了单机性能瓶颈导致的成本问题。——水平扩展
  • 然后,解决了用户量和数据量爆炸性地增大导致的成本问题。——水平扩展
  • 接着,满足了业务高可用的要求。——解决单点问题,鸡蛋不要都放在一个篮子里
  • 最后,分布式系统解决了大规模软件系统的迭代效率和成本的问题。——分而治之,化繁为简

钝悟...大约 13 分钟笔记分布式分布式理论分布式理论
逻辑时钟

逻辑时钟

什么是逻辑时钟

1978 年,Lamport 在 Time, Clocks, and the Ordering of Events in a Distributed System 中提出了逻辑时钟的概念,来解决分布式系统中区分事件发生的时序问题。

逻辑时钟指的是分布式系统中用于区分事件的发生顺序的时间机制


钝悟...大约 8 分钟分布式分布式理论分布式理论逻辑时钟全序偏序
ZAB 协议

ZAB 协议

ZooKeeper 并没有直接采用 Paxos 算法,而是采用了名为 ZAB 的一致性协议。ZAB 协议不是 Paxos 算法,只是比较类似,二者在操作上并不相同。Multi-Paxos 实现的是一系列值的共识,不关心最终达成共识的值是什么,不关心各值的顺序。而 ZooKeeper 需要确保操作的顺序性。

ZAB 协议是 Zookeeper 专门设计的一种支持崩溃恢复的原子广播协议

ZAB 协议是 ZooKeeper 的数据一致性和高可用解决方案。


钝悟...大约 7 分钟分布式分布式理论分布式理论算法共识性ZAB
初识 Python

初识 Python

Python 简介

Python 是一种广泛使用的解释型、高级和通用的编程语言。Python 支持多种编程范型,包括结构化、过程式、反射式、面向对象和函数式编程。它拥有动态类型系统和垃圾回收功能,能够自动管理内存使用,并且其本身拥有一个巨大而广泛的标准库。

Python 历史

1991 年,Python 的第一个解释器诞生。

1994 年,Python 1.0 版本发布。它包含了异常处理、函数和模块等基本特性。

2000 年,Python 2.0 版本发布。它引入了新的特性,如列表推导式、垃圾回收机制等。


钝悟...大约 4 分钟PythonPython
Python 基础语法

Python 基础语法

编码

默认情况下,Python 3 源码文件以 UTF-8 编码,所有字符串都是 unicode 字符串。 当然你也可以为源码文件指定不同的编码:

# -*- coding: cp-1252 -*-

钝悟...大约 5 分钟PythonPython
Python 基础语法

Python 变量和数据类型

变量

变量简介

Python 中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。

Python 基本赋值

a = 1
b = 2.0
c = "test"
print(f'a={a}')
print(f'b={b}')
print(f'c={c}')
# 输出
# a=1
# b=2.0
# c=test

钝悟...大约 5 分钟PythonPython
Python 操作符

Python 操作符

Python 语言支持以下类型的运算符:

  • 算术运算符
  • 比较(关系)运算符
  • 赋值运算符
  • 逻辑运算符
  • 位运算符
  • 成员运算符
  • 身份运算符
  • 运算符优先级

算术运算符

假设变量: a=10,b=20

运算符 描述 实例
+ 加 - 两个对象相加 a + b 输出结果 30
- 减 - 得到负数或是一个数减去另一个数 a - b 输出结果 -10
* 乘 - 两个数相乘或是返回一个被重复若干次的字符串 a * b 输出结果 200
/ 除 - x 除以 y b / a 输出结果 2
% 取模 - 返回除法的余数 b % a 输出结果 0
** 幂 - 返回 x 的 y 次幂 a**b 为 10 的 20 次方, 输出结果 100000000000000000000
// 取整除 - 返回商的整数部分 9//2 输出结果 4 , 9.0//2.0 输出结果 4.0

钝悟...大约 4 分钟PythonPython
Python 控制语句

Python 控制语句

选择语句

Python 的选择语句的语法格式为:if...elif...else 语句。

  • if 语句至多有 1 个 else 语句,else 语句在所有的 elif 语句之后。
  • if 语句可以有若干个 elif 语句,它们必须在 else 语句之前。
  • 一旦其中一个 elif 语句检测为 true,其他的 elif 以及 else 语句都将跳过执行。

钝悟...大约 2 分钟PythonPython
2
3
4
5
...
57

starforkbuildcode style

dunwu.github.io

💧 dunwu.github.ioopen in new window 是个人的技术文档归档仓库。

Java

Java 面试总结 💯

JavaSE

Java 基础特性

Java 高级特性

  • Java 正则从入门到精通 - 关键词:PatternMatcher捕获与非捕获反向引用零宽断言贪婪与懒惰元字符DFANFA
  • Java 编码和加密 - 关键词:Base64消息摘要数字签名对称加密非对称加密MD5SHAHMACAESDESDESedeRSA
  • Java 国际化 - 关键词:LocaleResourceBundleNumberFormatDateFormatMessageFormat
  • Java JDK8 - 关键词:StreamlambdaOptional@FunctionalInterface
  • Java SPI - 关键词:SPIClassLoader

Java 容器

img
img

Java IO

img
img
  • Java IO 模型 - 关键词:InputStreamOutputStreamReaderWriter阻塞
  • Java NIO - 关键词:ChannelBufferSelector非阻塞多路复用
  • Java 序列化 - 关键词:SerializableserialVersionUIDtransientExternalizablewriteObjectreadObject
  • Java 网络编程 - 关键词:SocketServerSocketDatagramPacketDatagramSocket
  • Java IO 工具类 - 关键词:FileRandomAccessFileSystemScanner

Java 并发

img
img

Java 虚拟机

img
img

JavaEE

JavaWeb

Java 服务器

Tomcat 和 Jetty 都是 Java 比较流行的轻量级服务器。

Nginx 是目前最流行的反向代理服务器,也常用于负载均衡。

Java 软件

Java 构建

Java 项目需要通过 构建工具 来管理项目依赖,完成编译、打包、发布、生成 JavaDoc 等任务。

  • 目前最主流的构建工具是 Maven,它的功能非常强大。
  • Gradle 号称是要替代 Maven 等构件工具,它的版本管理确实简洁,但是需要学习 Groovy,学习成本比 Maven 高。
  • Ant 功能比 Maven 和 Gradle 要弱,现代 Java 项目基本不用了,但也有一些传统的 Java 项目还在使用。

Java IDE

自从有了 IDE,写代码从此就告别了刀耕火种的蛮荒时代。

  • Eclipse 是久负盛名的开源 Java IDE,我的学生时代一直使用它写 Java。
  • 曾经抗拒从转 Intellij Idea ,但后来发现真香,不得不说,确实是目前最优秀的 Java IDE。
  • 你可以在 vscode 中写各种语言,只要安装相应插件即可。如果你的项目中使用了很多种编程语言,又懒得在多个 IDE 之间切换,那么就用 vscode 来一网打尽吧。

Java 监控诊断

监控/诊断 工具主要用于 Java 应用的运维。通过采集、分析、存储、可视化应用的有效数据,帮助开发者、使用者快速定位问题,找到性能瓶颈。

Java 工具

Java IO

JavaBean 工具

Java 模板引擎

Java 测试工具

其他

Java 框架

Spring

综合
核心
数据
Web
IO
集成
其他

ORM

安全

Java 领域比较流行的安全框架就是 shiro 和 spring-security。

shiro 更为简单、轻便,容易理解,能满足大多数基本安全场景下的需要。

spring-security 功能更丰富,也比 shiro 更复杂。值得一提的是由于 spring-security 是 spring 团队开发,所以集成 spring 和 spring-boot 框架更容易。

IO

Java 中间件

缓存

缓存可以说是优化系统性能的第一手段,在各种技术中都会有缓存的应用。

如果想深入学习缓存,建议先了解一下 缓存基本原理open in new window,有助于理解缓存的特性、原理,使用缓存常见的问题及解决方案。

流量控制

数据结构和算法

数据库

数据库综合

数据库中间件

关系型数据库

关系型数据库 整理主流关系型数据库知识点。

公共知识

Mysql 教程

Mysql 架构Mysql 存储引擎Mysql 索引Mysql 事务Mysql 锁Mysql 高可用Mysql 优化Mysql 运维Mysql 面试

其他

文档数据库

MongoDB

MongoDB 是一个基于文档的分布式数据库,由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。

MongoDB 是一个介于关系型数据库和非关系型数据库之间的产品。它是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似 json 的 bson 格式,因此可以存储比较复杂的数据类型。

MongoDB 最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

KV 数据库

Redis

Redis 基本数据类型Redis 高级数据类型Redis 数据结构Redis 过期删除和内存淘汰Redis 持久化Redis 事件Redis 复制Redis 哨兵Redis 集群Redis 发布订阅Redis 独立功能Redis 管道Redis 脚本Redis 运维Redis 实战Redis 面试

列式数据库

HBase

搜索引擎数据库

Elasticsearch

Elasticsearch 是一个基于 Lucene 的搜索和数据分析工具,它提供了一个分布式服务。Elasticsearch 是遵从 Apache 开源条款的一款开源产品,是当前主流的企业级搜索引擎。

Elastic

网络

如果你是做通信领域的开发,或者是 Web 应用的开发,那就或多或少需要了解一些计算机网络的知识 。

网络综合

理解计算机网络,首先需要从宏观层面了解计算机网络通信的分层结构。最有代表性的是 OSI 七层结构模型,但现实中更流行的是五层结构模型。

了解网络分层结构,需要了解每个网络层级在网络通信中的定位,以及这个层级主要的通信设备、通信协议。

网络协议

网络技术

分布式

分布式综合

分布式理论

分布式协同

分布式调度

  • 流量控制 - 关键词:限流熔断降级计数器法时间窗口法令牌桶法漏桶法
  • 负载均衡 - 关键词:轮询随机最少连接源地址哈希一致性哈希虚拟 hash 槽
  • 服务路由 - 关键词:路由条件路由脚本路由标签路由
  • 分布式会话 - 关键词:粘性 SessionSession 复制共享基于缓存的 session 共享
  • 分布式 ID - 关键词:UUID自增序列雪花算法Leaf

分布式高可用

分布式通信

RPC

RPC 综合
Dubbo

MQ

MQ 综合
Kafka
RocketMQ
其他 MQ

分布式存储

  • 分布式缓存 - 关键词:进程内缓存分布式缓存缓存雪崩缓存穿透缓存击穿缓存更新缓存预热缓存降级
  • 读写分离
  • 分库分表 - 关键词:分片路由迁移扩容双写聚合

编程

编程范式

编程语言

设计

架构

综合

微服务

  • 微服务简介 - 关键词:定义演进利弊如何拆分容量规划核心组件
  • 微服务之注册和发现 - 关键词:服务定义注册中心元数据健康检查服务订阅一致性
  • 微服务之服务调用 - 关键词:RPC通信协议传输方式序列化
  • 微服务基本原理 - 关键词:微服务序列化动态代理通信服务注册发现健康检查路由负载均衡容错处理优雅上线下线限流熔断业务分组

安全

设计模式

面向对象原则

创建型模式

创建型模式提供了创建对象的机制, 能够提升已有代码的灵活性和可复用性。

结构型模式

结构型模式介绍如何将对象和类组装成较大的结构, 并同时保持结构的灵活和高效。

行为型模式

行为模式负责对象间的高效沟通和职责委派。

重构

UML

DevOps

CI

CD

监控

工具

工作

方法论

规范

工具

🚪 传送

◾ 💧 钝悟的 IT 知识图谱open in new window