函数式编程:纯函数

纯函数(Pure Function)是函数式编程中一个非常重要的概念,是函数式编程关于“避免使用状态(State)或可变数据(Mutable Data)”这一定义的最直接推论。那么,什么是纯函数?为什么函数式编程追求纯函数的使用?

阅读余文函数式编程:纯函数

Fork 炸弹

在 Linux 的 shell 脚本中,流传着一个很有意思,当然也是相当危险的脚本段,俗称 Fork 炸弹(Fork Bomb)。如下:

:(){ :|:& };:

Fork 炸弹会以极快的速度创建大量的进程(进程数以指数式增长),以此消耗系统分配给予的进程可用空间,使进程表饱和。进程表饱和后,就无法运行新程序,除非终止进程表中的某一个进程;但被终止的进程,又会立刻被 Fork 炸弹探测到并被占用,导致仍然无法运行新的程序。Fork 炸弹生成的子程序在消耗进程表空间的同时,也会占用 CPU 和内存,从而导致系统与现有进程运行速度放缓,响应时间也随之大幅增加,以致于无法完成正常的任务,从而使系统的正常运作受到严重影响。那么,这个由 13 个字符(包括两个空格字符)组成的所谓 Fork 炸弹,为何会有如此大的威力呢?

阅读余文Fork 炸弹

Centos 7 搭建 socks5 代理服务器

我们可以通过 shadowsocks 来实现 socks5 的代理。当然了,前提你得有一台拥有固定 ip 的服务器。

阅读余文Centos 7 搭建 socks5 代理服务器

邮件系统中各组件与相关协议的概念梳理

关于邮件传输,我们大体上可以分为三个过程:

1、用户在本地邮件客户端编写完邮件,把邮件投送到本地端的邮件主机

2、本地端邮件主机把邮件投递到远端邮件主机

3、远端用户的邮件客户端拉取远端邮件主机的邮件

为了实现这三个过程,就需要得到邮件系统中多个组件的帮助。下面就梳理整个邮件系统中包含的若干组件,以及相关的协议。

阅读余文邮件系统中各组件与相关协议的概念梳理

使用 fail2ban 防御 ssh 暴力破解

最近用 ssh 登陆 Centos 7 服务器的时候,经常看到几十次甚至上百次的失败登录,可见有很多人在尝试 ssh 暴力破解我的机器。那么,是否有某些手段可以阻止这种暴力破解呢?答案是肯定的。比如 ssh 本身可以设置使用非密码的验证方式来对抗这种攻击,例如公钥验证或者双重验证。而今天要介绍的 fail2ban 则是针对密码登录防止暴力破解的手段。

阅读余文使用 fail2ban 防御 ssh 暴力破解