自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 分布式概念:流量控制

网络传输中的流量控制,就是让发送方发送数据的速率不要太快,让接收方来得及接收数据,具体的实现方法就是滑动窗口。滑动窗口指的是,在任意时刻,发送方都维持一个连续的允许发送的数据大小,称为发送窗口;接收方也会维持一个连续的允许接收的数据大小,称为接收窗口。每次发送方给接收方发送数据后,必须收到接收方返回的确认消息,发送窗口才可向后移动,发送新的数据。漏桶策略无论用户请求有多少,无论请求速率有多大,“漏桶”都会接收下来,但从漏桶里出来的请求是固定速率的,保证服务器可以处理得游刃有余。当“漏桶.

2020-06-05 00:56:54 54

原创 分布式概念:负载均衡

负载均衡可以分为两种:一种是请求负载均衡,即将用户的请求均衡地分发到不同的服务器进行处理;另一种是数据负载均衡,即将用户更新的数据分发到不同的存储服务器(数据分片技术)网络层的角度,通常有基于 DNS、IP 报文等的负载均衡方法;分布式系统层,主要包括轮询策略、随机策略、哈希和一致性哈希等;顺序轮询按服务器序号依次选择处理。加权轮询加权轮询为每个服务器设置了优先级,每次请求过来时会挑选优先级最高的服务器进行处理。优点:实现简单,且对于请求所需开销差不多时,负载均衡效果比较明显。缺点:

2020-06-05 00:40:27 56

原创 分布式概念:分布式缓存

缓存技术一般是指,用一个更快的存储设备存储一些经常用到的数据,供用户快速访问。分布式缓存就是指在分布式环境或系统下,把一些热门数据存储到离用户近、离应用近的位置,并尽量存储到更快的设备,以减少远程数据传输的延迟。Redis 分布式缓存原理每个节点都负责一部分数据的存储,同时,每个节点还会进行主备设计来提高 Redis 的可靠性。1.Redis 支持多数据结构。2.Redis 支持持久化。3.Redis 支持主备同步。计算机体系结构缓存由于内存和 CPU 访问速度...

2020-06-04 00:56:03 58

原创 分布式概念:数据复制

数据复制是实现数据可靠性的关键方法。对数据进行备份,以提高数据的可用性和可靠性,而实现数据备份的关键技术就是“数据复制技术”。可以保证存储在不同节点上的同一份数据是一致的。这样当一个节点故障后,可以从其他存储该数据的节点获取数据,避免数据丢失,进而提高了系统的可靠性。主备数据库主备数据库中的数据保持一致。1.比较注重一致性,比如同步复制技术;当用户请求更新数据时,主数据库必须要同步到备数据库之后才可给用户返回,即如果主数据库没有同步到备数据库,用户的更新操作会一直阻塞。这种方式保证了数据的

2020-06-04 00:43:50 50

原创 分布式概念:一致性哈希

存储方案选型时,通常会考虑这三个维度数据均匀:(1)不同存储节点中存储的数据要尽量均衡,避免让某一个或某几个节点存储压力过大,而其他节点却几乎没什么数据。(2)用户访问也要做到均衡,避免出现某一个或某几个节点的访问量很大,但其他节点却无人问津的情况。数据稳定:当存储节点出现故障需要移除或者扩增时,数据按照分布规则得到的结果应该尽量保持稳定,不要出现大范围的数据迁移。节点异构性:根据不同存储节点的硬件配置,分配不同权重比例的数据量。哈希是指,将数据按照提前规定好的函数(哈希函数)映射到相应的存

2020-06-02 00:35:43 53

原创 分布式概念:分布式存储

把数据分布在多台存储节点上,可以为大规模应用提供大容量、高性能、高可用、高扩展的存储服务。而,分布式存储系统就是其具体实现。分布式存储系统的核心,是将用户需要存储的数据根据某种规则存储到不同的机器上,当用户想要获取指定数据时,再按照规则到存储数据的机器里获取。当用户(即应用程序)想要访问数据 D,分布式操作引擎通过一些映射方式,比如 Hash、一致性 Hash、数据范围分类等,将用户引导至数据 D 所属的存储节点获取数据。数据根据数据的特征,这些不同的数据通常被划分为三类:结构化数.

2020-06-02 00:27:00 40

原创 分布式概念:CAP理论

C 代表 Consistency,一致性,是指所有节点在同一时刻的数据是相同的,即更新操作执行结束并响应用户完成后,所有节点存储的数据会保持相同。A 代表 Availability,可用性,是指系统提供的服务一直处于可用状态,对于用户的请求可即时响应。P 代表 Partition Tolerance,分区容错性,是指在分布式系统遇到网络分区的情况下,仍然可以响应用户的请求。网络分区是指因为网络故障导致网络不连通,不同节点分布在不同的子网络中,各个子网络内网络正常。CAP 理论指的就是,在分布式系统中

2020-06-01 14:04:42 44

原创 分布式概念:通信之消息队列(RocketMQ)

比如用户注册,注册完成后发送通知邮件。如果不使用消息队列:1.检查用户注册信息的合法性,如果合法则将注册信息写入数据库中,若不合法,直接返回,流程结束;2.将用户注册信息写入数据库后,给用户发送通知邮件,以告知用户注册的相关信息,比如注册账号等信息。注册消息写入数据库和发送通知邮件这两个组件间是直接交互,且是同步通信方式。那么,从用户提交注册到收到响应,需要等系统完成这两个步骤。引入消息队列作为注册消息写入数据库和发送通知邮件这两个组件间的中间通信者,那么这两个组件就可以实现异步通信..

2020-05-31 17:23:46 34

原创 分布式概念:通信之发布订阅(kafka)

发布订阅的三要素是生产者、消费者和消息中心生产者负责产生数据放到消息中心,消费者向消息中心订阅自己感兴趣的消息,当发布者推送数据到消息中心后,消息中心根据消费者订阅情况将相关数据推送给对应的订阅者。发布订阅的基本工作原理生产者可以发送消息到消息中心,而消息中心通常以主题(Topic)进行划分,每条消息都会有相应的主题,消息会被存储到自己所属的主题中,订阅该主题的所有消费者均可获得该消息进行消费。假设生产者 1 发布一个 Topic 相关数据或消息,消费者 1~3 均订阅了该 Topi

2020-05-31 16:47:21 79

原创 分布式概念:通信之远程调用(RPC)

本地调用,是进程内函数之间的相互调用;远程调用,是进程间函数的相互调用,是进程间通信 IPC(Inter-Process Communication)的一种方式。通过远程调用,一个进程可以看到其他进程的函数、方法等。本地过程调用(Local Procedure Call,LPC),是指运行在同一台机器上的进程之间的互相通信,即在多进程操作系统中,运行的不同进程之间可以通过 LPC 进行函数调用。远程过程调用(Remote Procedure Call,RPC),是指不同机器中运行的进程之间的相互通信

2020-05-31 16:16:04 35

原创 分布式概念:分布式计算(MapReduce、Stream、Actor、流水线)

Map Reduce 模式(海量数据的处理)核心思想:将一个复杂的、难以直接解决的大问题,分割成一些规模较小的、可以比较简单的或直接求解的子问题,这些子问题之间相互独立且与原问题形式相同,递归地求解这些子问题,然后将子问题的解合并得到原问题的解。MapReduce 分为 Map 和 Reduce 两个核心阶段,其中 Map 对应“分”,即把复杂的任务分解为若干个“简单的任务”执行;Reduce 对应着“合”,即对 Map 阶段的结果进行汇总。MapReduce 主要包括以下三种组件:Ma

2020-05-31 11:25:12 67

原创 分布式概念:调度(任务和资源匹配的过程)

调度,为用户任务寻找合适的服务器这个过程,在分布式领域中叫作调度。单体调度任务和分布式系统中的空闲资源直接进行匹配调度。一个集群中只有一个节点运行调度进程,该节点对集群中的其他节点具有访问权限,可以搜集其他节点的资源信息、节点状态等进行统一管理,同时根据用户下发的任务对资源的需求,在调度器中进行任务与资源匹配,然后根据匹配结果将任务指派给其他节点。单体调度器拥有全局资源视图和全局任务,可以很容易地实现对任务的约束并实施全局性的调度策略。所有节点的资源以及用户的任务均由中央服务器统一管理和调

2020-05-31 11:03:48 63

原创 分布式概念:集中式架构(Mesos、Kubernets)与非集中式结构(Redis)

集中式结构由一台或多台服务器组成中央服务器,系统内所有的业务也均先由中央服务器处理。多个节点服务器与中央服务器连接,并将自己的信息汇报给中央服务器,由中央服务器统一进行资源和任务调度:中央服务器根据这些信息,将任务下达给节点服务器;节点服务器执行任务,并将结果反馈给中央服务器。Google BorgBorg 是 Google 内部使用的集群管理系统,采用了典型的集中式结构,负责提交、调度、开始、重启和管理 Google 运行在其上的所有应用。Kubernetes是Borg的一个开源版本K.

2020-05-31 10:37:53 50

原创 Day28:红黑树

二叉查找树在频繁的动态更新过程中,可能会出现树的高度远大于 log2n 的情况,从而导致各个操作的效率下降。极端情况下,二叉树会退化为链表,时间复杂度会退化到 O(n)。要解决这个复杂度退化的问题,需要设计一种平衡二叉查找树,即红黑树。平衡二叉树:二叉树中任意一个节点的左右子树的高度相差不能大于 1。但是很多平衡二叉查找树其实并没有严格符合上面的定义,比如我红黑树,它从根节点到各个叶子节点的最长路径,有可能会比最短路径大一倍。平衡二叉查找树中“平衡”的意思,其实就是让整棵树左右看起来比较“对称

2020-05-30 14:16:56 35

原创 重温算法Day27:搜索引擎4步曲

搜索引擎大致可以分为四个部分:搜集、分析、索引、查询。搜集,就是我们常说的利用爬虫爬取网页。们先找一些比较知名的网页(专业的叫法是权重比较高)的链接(比如新浪主页网址、腾讯主页网址等),作为种子网页链接,放入到队列中。爬虫按照广度优先的策略,不停地从队列中取出链接,然后去爬取对应的网页,解析出网页里包含的其他网页链接,再将解析出来的链接添加到队列中。1. 待爬取网页链接文件:links.bin(磁盘文件)爬虫从 links.bin 文件中,取出链接去爬取对应的页面。等爬取到网页之后,将解析

2020-05-30 11:00:52 44

原创 重温算法Day26:Redis常用的数据结构

Redis 主要是作为内存数据库来使用,也就是说,数据是存储在内存中的。尽管它经常被用作内存数据库,但是,它也支持将数据存储在硬盘中。Redis 中,键的数据类型是字符串,但是为了丰富数据存储的方式,方便开发者使用,值的数据类型有很多,常用的数据类型有这样几种,它们分别是字符串、列表、字典、集合、有序集合。压缩列表:是 Redis 自己设计的一种数据存储结构。它有点儿类似数组,通过一片连续的内存空间,来存储数据。不过,它跟数组不同的一点是,它允许存储的数据大小不同。压缩列表这种存储结构,一方面比较

2020-05-30 10:55:08 46

原创 重温算法Day25:哈希算法的应用

哈希算法:将任意长度的二进制值串映射为固定长度的二进制值串,这个映射的规则就是哈希算法,而通过原始数据映射之后得到的二进制值串就是哈希值。hash算法应用安全加密、MD5(MD5 Message-Digest Algorithm,MD5 消息摘要算法)SHA(Secure Hash Algorithm,安全散列算法)DES(Data Encryption Standard,数据加密标准)AES(Advanced Encryption Standard,高级加密标准)鸽巢原理(也叫抽屉原理)。

2020-05-30 00:01:25 38

原创 分布式概念:分布式锁(分布式互斥的一种实现方式)

分布式系统中,多个节点都需要访问一个临界资源,但是同一时刻只能有一个节点可以访问,为了解决这个问题就是要通过分布式互斥来实现;分布式锁就是实现分布式互斥的一种实现方式。锁是实现多线程同时访问同一共享资源,保证同一时刻只有一个线程可访问共享资源所做的一种标记。分布式锁是指分布式环境下,系统部署在多个机器中,实现多进程分布式互斥的一种锁。为了保证多个进程能看到锁,锁被存在公共存储(比如 Redis、数据库等三方存储中),以实现多个进程并发访问同一个临界资源,同一时刻只有一个进程可访问共享资源,确保数据的一致

2020-05-27 13:24:01 55

原创 分布式概念:分布式事务(通过分布式消息来确保事务最终一致性)

分布式事务,就是在分布式系统中运行的事务,由多个本地事务组合而成。例子:对于网上购物的每一笔订单来说,电商平台一般都会有两个核心步骤:一是订单业务采取下订单操作,二是库存业务采取减库存操作。通常,这两个业务会运行在不同的机器上,甚至是运行在不同区域的机器上。针对同一笔订单,当且仅当订单操作和减库存操作一致时,才能保证交易的正确性。也就是说一笔订单,只有这两个操作都完成,才能算做处理成功,否则处理失败。事务的特征 ACID特征:原子性(Atomicity):全部执行成功和全部不执行。一致性(Con

2020-05-27 00:32:44 31

原创 Go:动态的创建多个chan

让chan作为map的value。Themake(chan int, 2)part makes the channel buffered with a buffer length of 2.package mainimport "fmt"func main() { things := make(map[string](chan int)) things["stuff"] = make(chan int, 2) things["stuff"] <- 2 mything...

2020-05-26 17:27:47 44

原创 分布式概念:分布式选举(选举主节点)

分布式选举主节点,在一个分布式集群中负责对其他节点的协调和管理。分布式选举的算法序号选举的算法( Bully 算法)核心思想选取 ID 最大的节点作为主节点。在 Bully 算法中,节点的角色有两种:普通节点和主节点。初始化时,所有节点都是平等的,都是普通节点,并且都有成为主的权利。但是,当选主成功后,有且仅有一个节点成为主节点,其他所有节点都是普通节点。当且仅当主节点故障或与其他节点失去联系后,才会重新选主。Bully 算法在选举过程中,需要用到以下 3 种消息:Election 消息,

2020-05-26 00:05:54 32

原创 重温算法Day24:位图与布隆过滤器

位图(BitMap)位图,就是用每一位来存放某种状态,适用于大规模数据,但数据状态又不是很多的情况。通常是用来判断某个数据存不存在的。位图其实是用数组实现的,数组的每一个元素的每一个二进制位都可以表示一个数据在或者不在,0表示数据存在,1表示数据不存在。因为比特位只有两种状态,要不是0,要不就是1,所以位图其实就是一种直接定址法的哈希,只不过位图只能表示这个值在或者不在。布隆过滤器(Bloom Filter)使用 K 个哈希函数,对同一个数字进行求哈希值,那会得到 K 个不同的哈希值,我们分别记作

2020-05-25 23:20:39 71

原创 分布式概念:分布式互斥(临界资源访问)

分布式互斥(Distributed Mutual Exclusion),被互斥访问的共享资源就叫作临界资源(Critical Resource)。集中式算法:每个程序在需要访问临界资源时,先给协调者发送一个请求。如果当前没有程序使用这个资源,协调者直接授权请求程序访问;否则,按照先来后到的顺序为请求程序“排一个号”。如果有程序使用完资源,则通知协调者,协调者从“排号”的队列里取出排在最前面的请求,并给它发送授权消息。拿到授权消息的程序,可以直接去访问临界资源。一个程序完成一次临界资源访问,需要如下

2020-05-25 14:00:00 38

转载 B树与B+树

B+树索引是B+树在数据库中的一种实现,是最常见也是数据库中使用最为频繁的一种索引。B+树中的B代表平衡(balance),而不是二叉(binary),因为B+树是从最早的平衡二叉树演化而来的。在讲B+树之前必须先了解二叉查找树、平衡二叉树(AVLTree)和平衡多路查找树(B-Tree),B+树即由这些树逐步优化而来。二叉查找树二叉树具有以下性质:左子树的键值小于根的键值,右子树的键值大于根的键值。如下图所示就是一棵二叉查找树,对该二叉树的节点进行查找发现深度为1的节点的查找次数为1,深...

2020-05-23 14:36:07 43

原创 重温算法Day23:B+树

树中的节点并不存储数据本身,而是只是作为索引。除此之外,我们把每个叶子节点串在一条链表上,链表中的数据是从小到大有序的。如果我们要求某个区间的数据。我们只需要拿区间的起始值,在树中进行查找,当查找到某个叶子节点之后,我们再顺着链表往后遍历,直到链表中的结点数据值大于区间的终止值为止。所有遍历到的数据,就是符合区间值的所有数据。当数据量很大的时候,如果将索引存储在内存中,尽管内存访问的速度非常快,查询的效率非常高,但是,占用的内存会非常多。如果把索引存储在硬盘中,而非内存中。但硬盘是一个非常.

2020-05-23 14:32:03 50

原创 arangodb的aql逻辑判断

arangodb的aql,如果做类似关系库的case when操作,可以使用三目运算符,如下两种casecase1:FOR c IN clientsRETURN {client: c.client,c.address: IS_NULL(c.mailing_address) ? c.physical_address :c.mailing_address}case2:FOR id IN [ 'xp/a-b' ] LET doc = DOCUMENT(id) LET ke

2020-05-21 14:34:14 49

原创 重温算法Day22:拓扑排序

拓扑排序:有向无环图如果 a 先于 b 执行,也就是说 b 依赖于 a,那么就在顶点 a 和顶点 b 之间,构建一条从 a 指向 b 的边。而且,还要是一个有向无环图,也就是不能存在像 a->b->c->a 这样的循环依赖关系。Kahn 算法如果 s 需要先于 t 执行,那就添加一条 s 指向 t 的边。所以,如果某个顶点入度为 0, 也就表示,没有任何顶点必须先于这个顶点执行,那么这个顶点就可以执行了。找出一个入度为 0 的顶点,将其输出到拓扑排序的结果序列中,且把这个顶点从

2020-05-21 00:30:04 35

原创 重温算法Day21:跳表

每两个(三个、五个)结点提取一个结点到上一级,我们把抽出来的那一级叫作索引或索引层。你可以看我画的图。图中的 down 表示 down 指针,指向下一级结点。在第一级索引的基础之上,每两个(三个、五个)结点就抽出一个结点到第二级索引。链表加多级索引的结构,就是跳表。每两个结点会抽出一个结点作为上一级索引的结点,那第一级索引的结点个数大约就是 n/2,第二级索引的结点个数大约就是 n/4,第三级索引的结点个数大约就是 n/8,依次类推,也就是说,第 k 级索引的结点个数是第 k-1 级索引的结点个数的

2020-05-20 23:25:39 45

原创 Go-自定义Error

package commonimport ( "fmt")type ErrCode stringvar ( //common api err message SUCCESS ErrCode = "0" DB_UNKNOW_ERR ErrCode = "1001")var errCodeName = map[ErrCode]string{ SUCCESS: "Success return", DB_UNKNOW_ERR: "Db unknow erro.

2020-05-20 18:34:34 46

原创 重温算法Day20:动态规划

背包问题对于一组不同重量、不可分割的物品,我们需要选择一些装入背包,在满足背包最大重量限制的前提下,背包中物品总重量的最大值。把整个求解过程分为 n 个阶段,每个阶段会决策一个物品是否放到背包中。每个物品决策(放入或者不放入背包)完之后,背包中的物品的重量会有多种情况,也就是说,会达到多种不同的状态,对应到递归树中,就是有很多不同的节点。我们把每一层重复的状态(节点)合并,只记录不同的状态,然后基于上一层的状态集合,来推导下一层的状态集合。我们可以通过合并每一层重复的状态,这样就保证每一层不同

2020-05-16 18:01:11 51

原创 linux学习2:进程

用系统调用创建进程 #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <unistd.h> extern int create_process (char* program, char** arg_list); int create_process (char* program, char*...

2020-05-13 13:43:11 65

原创 linux学习0:内核初始化

内核初始化内核的启动从入口函数 start_kernel() 开始。在 init/main.c 文件中,start_kernel 相当于内核的 main 函数。在操作系统里面,先要有个创始进程,有一行指令 set_task_stack_end_magic(&init_task)。这里面有一个参数 init_task,它的定义是 struct task_struct init_task = INIT_TASK(init_task)。它是系统创建的第一个进程,我们称为 0 号进程。这是唯

2020-05-13 01:13:49 42

原创 linux系统学习1:系统调用

glibc 对系统调用的封装在用户态进程里面调用 open 函数int open(const char *pathname, int flags, mode_t mode)64 位系统调用过程:x86_64 下的 sysdep.h 文件/* The Linux/x86-64 kernel expects the system call parameters in registers according to the following table: syscall nu...

2020-05-13 00:41:35 129 1

原创 http笔记整理:数字签名与证书

实现完整性的手段主要是摘要算法(Digest Algorithm),也就是常说的散列函数、哈希函数(Hash Function)。摘要算法理解成特殊的“单向”加密算法,它只有算法,没有密钥,加密后的数据无法解密,不能从摘要逆推出原文。摘要算法实际上是把数据从一个“大空间”映射到了“小空间”,所以就存在“冲突”(collision,也叫碰撞)的可能性,就如同现实中的指纹一样,可能会有两份不同的原文对应相同的摘要。MD5(Message-Digest 5)、SHA-1(Secure Hash A

2020-05-12 23:01:23 61

原创 重温算法Day19:分治思想

分治算法是一种处理问题的思想,递归是一种编程技巧。实际上,分治算法一般都比较适合用递归来实现。分治算法的递归实现中,每一层递归都会涉及这样三个操作:分解:将原问题分解成一系列子问题;解决:递归地求解各个子问题,若子问题足够小,则直接求解;合并:将子问题的结果合并成原问题。分治算法能解决的问题,一般需要满足下面这几个条件:原问题与分解成的小问题具有相同的模式;原问题分解成的子问题可以独立求解,子问题之间没有相关性,这一点是分治算法跟动态规划的明显区别,等我们讲到动态规划的时候,会详细对比这两种算法;

2020-05-12 13:42:13 41

原创 重温算法Day18:贪心算法

分糖果我们有 m 个糖果和 n 个孩子。我们现在要把糖果分给这些孩子吃,但是糖果少,(m<n),所以糖果只能分配给一部分孩子。每个糖果的大小不等,这 m 个糖果的大小分别是 s1,s2,s3,……,sm。除此之外,每个孩子对糖果大小的需求也是不一样的,只有糖果的大小大于等于孩子的对糖果大小的需求的时候,孩子才得到满足。假设这 n 个孩子对糖果大小的需求分别是 g1,g2,g3,……,gn。我的问题是,如何分配糖果,能尽可能满足最多数量的孩子?对于一个孩子来说,如果小的糖果可以满足,我们就没必

2020-05-12 13:29:26 61

原创 重温算法Day17:图及图的遍历

如何在内存中存储图这种数据结构邻接矩阵(Adjacency Matrix)邻接矩阵的底层依赖一个二维数组。对于无向图来说,如果顶点 i 与顶点 j 之间有边,我们就将 A[i][j]和 A[j][i]标记为 1;对于有向图来说,如果顶点 i 到顶点 j 之间,有一条箭头从顶点 i 指向顶点 j 的边,那我们就将 A[i][j]标记为 1。同理,如果有一条箭头从顶点 j 指向顶点 i 的边,我们就将 A[j][i]标记为 1。对于带权图,数组中就存储相应的权重。缺点:浪费空间。无向图会浪费一半,

2020-05-12 00:02:03 72

原创 http笔记整理:对称和非对称加密

加密前的消息叫“明文”(plain text/clear text),加密后的乱码叫“密文”(cipher text),使用密钥还原明文的过程叫“解密”(decrypt),是加密的反操作,加密解密的操作过程就是“加密算法”。说密钥长度是 128,就是 16 字节的二进制串,密钥长度 1024,就是 128 字节的二进制串。对称加密算法:不安全: RC4、DES、3DES、安全:AES、ChaCha20AES 是“高级加密标准”(Advanced Encryption S.

2020-05-11 23:59:51 350

原创 http笔记整理:https

安全:如果通信过程具备了四个特性,就可以认为是“安全”的,这四个特性是:机密性、完整性,身份认证和不可否认。SSL 即安全套接层(Secure Sockets Layer),目前应用的最广泛的 TLS 是 1.2。TLS 由记录协议、握手协议、警告协议、变更密码规范协议、扩展协议等几个子协议组成,综合使用了对称加密、非对称加密、身份认证等许多密码学前沿技术实验环境使用的 TLS 是 1.2,客户端和服务器都支持非常多的密码套件,而最后协商选定的是“ECDHE-RSA-AES25.

2020-05-11 23:49:12 39

原创 http笔记整理:缓存代理

HTTP 的服务器缓存功能主要由代理服务器来实现(即缓存代理),源服务器系统内部虽然也经常有各种缓存(如 Memcache、Redis、Varnish 等),但与 HTTP 没有太多关系。在没有缓存的时候,代理服务器每次都是直接转发客户端和服务器的报文,中间不会存储任何数据,只有最简单的中转功能。代理服务收到源服务器发来的响应数据后需要做两件事。第一个当然是把报文转发给客户端,而第二个就是把报文存入自己的 Cache 里。下一次再有相同的请求,代理服务器就可以直接发送 304 或者缓存数据,不必

2020-05-11 23:46:26 42

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