Optimus-Xs' Blog

如何优雅的编写Dockerfile

容器需要从Dockerfile开始,本文将介绍如何写出一个优雅的Dockerfile文件。 Docker容器 容器的特点 我们都知道容器就是一个标准的软件单元,它有以下特点: 随处运行:容器可以将代码与配置文件和相关依赖库进行打包,从而确保在任何环境下的运行都是一致的。 高资源利用率:容器提供进程级的隔离,因此可以更加精细地设置CPU和内存的使用率,进而更好地利用服务器的计算...

4种强化域名安全的协议

传统的 DNS 有啥问题 传统的 DNS 是一个【比较古老】的协议。最早的草案可以追溯到1983年。1987年定稿之后,基本上没啥变化。 设计 DNS 的时候,互联网基本上还是个玩具。那年头的互联网协议,压根儿都没考虑安全性,DNS 当然也不例外。所以 DNS 的交互过程全都是【明文】滴,既无法做到“保密性”,也无法实现“完整性”。 缺乏“保密性”就意味着——任何一个能【监视】你上网流量...

海量积分数据实时排名处理方式

需求概述 积分排名在很多项目都会出现,大家都不会陌生,需求也很简单,积分排名主要满足以下需求: 查询用户名次。 查询TopN(即查询前N名的用户) 实时排名(很多项目是可选的) 当排序的数据量不大的时候,这个需求很容易满足,但是如果数据量很大的时候比如百万级、千万级甚至上亿的时候,或者有实时排名需求;这个时候要满足性能、低成本等需求,在设计上就变得复杂起来了 常规积分排...

堆的原理和实现

堆 堆这种数据结构,有很多的实现,比如:最大堆,最小堆,斐波那锲堆,左派堆,斜堆等。从孩子节点的个数上还可以分为二叉堆,N叉堆等。本文我们从最大二叉堆堆入手看看堆究竟是什么 什么是堆 我们先看看它的定义 堆是一种完全二叉树(不是平衡二叉树,也不是二分搜索树哦) 堆要求孩子节点要小于等于父亲节点(如果是最小堆则大于等于其父亲节点) 满足以上两点性质即可成为一棵合格的堆数据结构...

DNS报文格式

我们知道查询一个域名,需要与 DNS 服务器进行通信。那么,DNS 通信过程大概是怎样的呢? DNS 是一个典型的 Client-Server 应用,客户端发起域名查询请求,服务端对请求进行应答: DNS 一般采用 UDP 作为传输层协议( TCP 亦可),端口号是 53 。请求报文和应答报文均作为数据,搭载在 UDP 数据报中进行传输: 很显然,DNS 请求报文和应答报文均需...