7daysgolang-GeeRPC 简析
7daysgolang-GeeRPC 简析
|
前言本文是记录在学习 GeeRPC 项目中的一些要点和概念,在代码部分只会给出最核心的代码,而一些外围代码,例如错误处理、一些并发细节、一些接口定义等都会被忽略。适合从一个宏观层面来理解 GeeRPC,因为 GeeRPC 原文实际上是从细节出发,难以从一个宏观视角理解,容易在「森林」中迷路。完整的源
HTTP 各版本简述(1.1/2/3)
HTTP 各版本简述(1.1/2/3)
|
HTTP 1.0HTTP 1.0 实际上作为最原始的版本,并没有使用多久就被 HTTP 1.1 代替了,后续实际上普遍认为 HTTP 1.1 是第一个广泛使用的 HTTP 版本。原始的 HTTP 由于没有长连接,也就是每个 HTTP 请求都是单独的 TCP 连接,这就会导致在请求多个小文件时延迟较高
HTTP 如何加密?
HTTP 如何加密?
|
为什么需要加密简单来说,HTTP 协议的内容是通过明文传递的,任何中间人都可以看到完整的信息,由此就导致了两种攻击:被动窃听攻击,报文的信息可以被抓包获取,从而泄露信息;主动攻击:中间者可以修改 HTTP 协议的内容,从而给客户端或服务端发送伪造的信息。所以需要一个机制来对 HTTP 的内容进行加密
Makefile 光速入门
Makefile 光速入门
|
Makefile 光速入门什么是 MakefileMakefile 简单来说就是构建某个文件需要的步骤,比如我们要编译一个 C 语言的程序,单个文件时我们可以简单输入一行 gcc 的编译命令:$ gcc main.c -o main就可以完成一个编译单文件的操作,但是如果项目比较复杂,涉及到多文件的
Copy-On-Write 策略
Copy-On-Write 策略
|
操作系统在分配内存时,有一个很重要的策略叫写时复制(Copy-On-Write,COW),在现实情况中,内存通常是不够应用程序分配的,应用程序通常会申请超过自己需求的内存。在操作系统内部,COW 对进程 fork 也有加速作用。我们先从操作系统的 fork 操作来理解。当一个进程进行 fork 时,
Raft 详解
Raft 详解
|
共识算法Raft 是一种共识算法,共识算法是一种在分布式系统中非常重要的算法,他允许在一个节点集合中,即使某些节点挂了,对外的服务仍然还是一致的。最经典的模型是拜占庭问题,假设现在有几个将军和他们的军队围攻一个城市,这些将军必须通过传令兵来通信。他们需要对攻击还是撤退达成一致的决定,只有半数以上的军
MapReduce 详解
MapReduce 详解
|
前言MapReduce 作为谷歌三剑客之一,在分布式系统领域有非常重要的作用,他带来 Map-Reduce 的分布式任务处理框架推动了分布式系统的发展。对于 MapReduce,其可以简单概括为两个步骤,第一个是 Map,第二个是 Reduce。Map 的操作在于把原始巨大的任务打碎拆散,方便多个计
力扣 407 接雨水 II
力扣 407 接雨水 II
|
力扣 |
0 评论
题目描述给你一个 m x n 的矩阵,其中的值均为非负整数,代表二维高度图每个单元的高度,请计算图中形状最多能接多少体积的雨水。示例 1:输入: heightMap = [[1,4,3,1,3,2],[3,2,1,3,2,4],[2,3,3,2,3,1]]输出: 4解释: 下雨后,雨水将会被上图蓝色
经典互斥问题:面包店算法
经典互斥问题:面包店算法
|
介绍面包店算法是在多线程环境下无锁的互斥算法,能够保证在多线程的环境下,临界区同时至多只有一个线程进入。虽然算法回看起来并不难,但却是图灵奖得主 Lamport 最骄傲的成果之一。面包店算法要解决的本质是一个互斥问题,其是由 Dijkstra 提出的,另一个图灵奖得主。在计算机发展过程中,有相当多人
The Google File System 详解
The Google File System 详解
|
什么是 GFS?GFS 全称为 Google File System,是一个分布式的文件系统,GFS 实际上是部署在分布式的环境中,但是提供的文件服务好像就在单机上运行一样。程序员不需要知道分布式的任何细节,就像使用本地文件一样读取或写入在分布式环境上储存的文件。GFS 为大型数据密集型的应用提供了