0%

红黑树的性质

普通的二叉查找树在极端情况下可退化成链表,此时的增删查效率都会比较低下。为了避免这种情况,就出现了一些自平衡的查找树,比如 AVL,红黑树等。这些自平衡的查找树通过定义一些性质,将任意节点的左右子树高度差控制在规定范围内,以达到平衡状态。以红黑树为例,红黑树通过如下的性质定义实现自平衡:

  1. 节点是红色或黑色。
  2. 根是黑色。
  3. 所有叶子都是黑色(叶子是NIL节点)。
  4. 每个红色节点必须有两个黑色的子节点。(从每个叶子到根的所有路径上不能有两个连续的红色节点。)
  5. 从任一节点到其每个叶子的所有简单路径都包含相同数目的黑色节点(简称黑高)。
阅读全文 »

参考文档:https://snailclimb.gitee.io/javaguide/#/docs/system-design/data-communication/why-use-rpc

RPC简介

什么是 RPC?

RPC(Remote Procedure Call)—远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。比如两个不同的服务 A、B 部署在两台不同的机器上,那么服务 A 如果想要调用服务 B 中的某个方法该怎么办呢?使用 HTTP请求当然可以,但是可能会比较慢而且一些优化做的并不好。 RPC 的出现就是为了解决这个问题。

阅读全文 »

概述

一、基本特征

1. 并发

并发是指宏观上在一段时间内能同时运行多个程序,而并行则指同一时刻能运行多个指令。

并行需要硬件支持,如多流水线、多核处理器或者分布式计算系统。

操作系统通过引入进程和线程,使得程序能够并发运行。

2. 共享

共享是指系统中的资源可以被多个并发进程共同使用。

有两种共享方式:互斥共享同时共享

互斥共享的资源称为临界资源,例如打印机等,在同一时刻只允许一个进程访问,需要用同步机制来实现互斥访问。

阅读全文 »

概述

网络的网络

网络把主机连接起来,而互连网(internet)是把多种不同的网络连接起来,因此互连网是网络的网络。而互联网(Internet)是全球范围的互连网。

阅读全文 »

参考书籍:
《重构 改善既有代码的设计 第2版》马丁 福勒著 人民邮电出版社

马丁 福勒的其他著作:《分析模式》,《UML精粹》,《领域特定语言》

阅读全文 »

1.什么是重构?

在不改变软件可观察行为的前提下,使用一些重构的手法,提高代码可读性。

换句话说,在保持软件可用的前提下,修改代码使得更加容易被理解。

阅读全文 »

代码的坏味道这一章集中论述该何时重构。具体的重构方法在后面的章节。

“没有任何度量规矩比得上见识广博者的直觉。你必须培养自己的判断力,学会判断一个类中有多少实例变量才算太大,一个函数内有多少代码才不算太长。”

​ ——Martin Flower

阅读全文 »

关系数据库

  • 读写分离(减轻访问压力)

基本原理:将数据库读写操作分散到不同节点上,减小单个数据库的访问压力,提高访问效率。

阅读全文 »