译 - The rsync algorithm
《The rsync algorithm》这篇发表于 1996 年的论文中介绍了一种名为 rsync 的增量同步算法,它能够快速地将两个文件夹中的内容同步。该算法利用了文件的局部性和差异性,通过计算文件的弱校验和和块校验和来确定文件的相似性,并进行增量同步。该算法具有高效性、可靠性和安全性等优点,在实际应用中被广泛使用。 0、摘要This report presents an algorithm for updating a file on one machine to be identical to a file on another machine. We assume that the two machines are connected by a low-bandwidth high-latency bi-directional communications link. The algorithm identifies parts of the source file which are identical to some part of the...
转/译-Dynamo:Amazon的高可用键值存储
本文翻译自 2007 年 Amazon 的分布式存储经典论文:《Dynamo: Amazon’s Highly Available Key-value Store》),直译为 《Dynamo:Amazon 的高可用键值存储》,这里对排版做了一些调整,以更适合 web 阅读。 Dynamo 是 Amazon 的高可用分布式键值存储(key/value storage)系统。这篇论文发表 的时候(2007)它还只是一个内部服务,现在(改名为 DynamoDB)已经发展成 AWS 最核心 的存储产品(服务)之一,与 S3 等并列。据了解,国内某一线大厂的公有云键值 存储服务,也是参考这篇文章设计和实现的。 现在提到键值存储,大家首先想到的可能是 Redis,那么 Dynamo 和 Redis 是不是竞品, 只是一个开源一个是商业的?不是的,二者针对的场景不同,这里非常粗地列举几方面: 使用场景:Dynamo 定位是永远可写(always writable)的持久文件系统,Redis 主要用作(易失)缓存或内存数据库 存储方式:Dynamo 是磁盘,Redis...
正向/反向/透明代理服务器对比
一、正向代理正向代理是一个位于客户端和目标服务器之间的服务器,为了从目标服务器取得内容,客户端需要向代理服务器发送一个请求并指定目标服务器,然后代理服务器向目标服务器转交请求并将获得的内容返回给客户端。 1.1、特点 用户无法直接访问目标服务器; 客户端明确知道自己访问的是代理服务器; 隐藏真实的客户端IP; 1.2、使用场景 为防火墙(局域网)内的客户端提供访问互联网的途径; 客户端的鉴权; 提供数据缓存,访问加速服务; 1.3、相关软件 Nginx Apache Traffic Server Tinyproxy Squid...
Docker多阶段构建的理解与使用
在构建镜像的过程中可能会区分为编译镜像以及运行镜像,我们在编译环境中进行二进制运行文件的构建编译工作,然后将运行文件放置在运行环境中构建体积较小的运行镜像,在这个过程中,我们可能会使用到多阶段构建。 一、简介在Docker的17.05及更高的版本中支持了多阶段构建的方式,多阶段构建的方式极大的减小了需要阶段性构建的复杂度。官方介绍 -...
Git使用技巧
一、分支管理二、提交日志管理 批量替换历史提交日志的用户名和邮箱信息 git filter-branch -f --env-filter 'OLD_NAME="old_name"OLD_EMAIL="old@mail.com"CORRECT_NAME="new_name"CORRECT_EMAIL="new@mail.com"if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ]then export GIT_COMMITTER_NAME="$CORRECT_NAME" export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"fiif [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ]then export...
ssh的高级用法 - ProxyCommand
一、简介OpenSSH的客户端有一个 ProxyCommand 的选项,用于 SSH 客户端与服务器之间的隧道通信(tunneling)。所谓的隧道技术,也称代理技术,是网络通信技术的一个普遍概念,就是把一条信道建立于另外一条信道之上。 SSH 会话基于一个 TCP 连接,如果我们把连接的两个端口各自的出口(也即入口)进行截获,就可以用其它的信道来传输。而且 SSH 仍然认为它用的是和另一端连接一条 TCP 连接。 ProxyCommand 指定一个命令(称为 Proxy),SSH 客户端将通过标准输入输出和这个命令启动后的进程进行正常的 SSH 通信,而 Proxy 连接着 SSH 服务器(一般是一个 Server Proxy,再由该 Server Proxy 连接服务器)。Proxy 和 Server Proxy 之间组成了一条隧道,如果两者之间用 HTTP 协议进行通信,则整个系统便称为tunneling SSH over HTTP,当然也可以使用 UDP、TCP、IP 以及其它任意的可行的协议。 SSH ProxyCommand 相对于 SOCKS、HTTP...
nc指令的使用与源码解析 - 每周指令
nc的全称为Netcat,是一款拥有多种功能的 CLI 工具,可以在网络上进行读/写以及重定向数据等操作,被誉为是网络界的瑞士军刀。它被设计成可以被脚本或其他程序调用的可靠的后端工具。同时由于它能创建任意所需的连接,因此它是一个非常好用的网络工具,它的主要用途为: 文件传输:由于是直接建立TCP连接发送数据流,因此使用nc传输文件是不安全的,但是速度很快; 端口扫描:可用于批量扫描指定IP的端口是否可用; 代理服务器:简单的代理服务器; 等等; 一、源码解析 官方nc(Netcat)的代码的下载地址为:http://netcat.sourceforge.net/download.php; nc(Netcat)各版本的代码已经存储到...
sar指令的使用与源码解析 - 每周指令
sar 的全称是 System Activity Reporter(系统活动情况报告)的缩写。sar工具将对系统当前的状态进行取样,然后通过计算数据和比例来表达系统的当前运行状态。它的特点是可以连续对系统取样,获得大量的取样数据;取样数据分析的结果都可以存入文件, 所需的负载很小。sar是目前 Linux 上最为全面的系统性能分析工具之一,可以从 14 个大方面对系统的活动进行报告,包括文件的读写情况、系统调用的使用情况、串口、CPU...
Hexo的多种Markdown渲染器对比分析
Hexo 作为一个优秀的 Markdown 博客框架,自然也诞生了很多适用的 Markdown 渲染器,这里对比分析一下 Hexo 下几种常用的 Markdown 渲染器: hexo-renderer-marked , hexo-renderer-kramed , hexo-renderer-pandoc , hexo-renderer-markdown-it , hexo-renderer-markdown-it-plus ,本文使用的渲染器为: hexo-renderer-markdown-it-plus 。 一、详细介绍1.1、hexo-renderer-markedHexo默认的Markdown的渲染器,针对于普通的Markdown的文章书写,该渲染器已经足够,但是由于不支持Mathjax,不支持插件扩展,不支持emoji表情,所以该渲染器也是介绍的渲染器中功能最弱的。 GitHub地址:hexojs/hexo-renderer-marked NPM地址:hexo-renderer-marked 版本:2.0.0 最近提交:a month...