01 如何实现一个 Python 装饰器
稍微对 Python 有所了解的程序员一定知道 Python 装饰器和函数闭包。我曾经也以为很了解,直到在《流畅的Python》中看到了 Wrapt 模块。
Wrapt 模块的作者 Graham Dumpleton 先生写了 14 篇博客详细讲解了如何在 Python 中实现一个能同时包装函数,类方法,实例方法的通用装饰器。本文以及接下来几篇文章是我对那 14 篇博客的整理和笔记。
稍微对 Python 有所了解的程序员一定知道 Python 装饰器和函数闭包。我曾经也以为很了解,直到在《流畅的Python》中看到了 Wrapt 模块。
Wrapt 模块的作者 Graham Dumpleton 先生写了 14 篇博客详细讲解了如何在 Python 中实现一个能同时包装函数,类方法,实例方法的通用装饰器。本文以及接下来几篇文章是我对那 14 篇博客的整理和笔记。
sudo

sudo是linux系统管理指令,它允许用户临时以其他用户(通常是root)执行一些或全部指令,其实现的是一种授权机制。普通用户想执行root 用户的特权命令时,可以使用 su 切换到管理员,但是这样做有两个坏处,一是 root 用户会被普通用户知道,二是普通用户切换为 root 后获取的是 root 的所有权限,这些都存在安全风险。而 sudo 可以实现授权普通用户执行部分或全部命令,同时无需 root 密码。本节我们就来介绍 sudo 的使用,内容如下:
日志管理系统rsyslog

rsyslog 是Linux 系统上日志管理系统,应用程序可直接调用 rsyslog 的接口将日志写入到 rsyslog 特定的 facility 中即可完成日志记录。如果应用程序通过 rsyslog 来记录日志,通常在其自己的配置文件中有专门的选项用来定义将日志存入到 rsyslog 哪个 facility。facility 可以理解为 rsyslog 日志收集器的基本单元,rsyslog 内部的配置文件定义了每个 facility 的日志存储于何处。应用程序只需要将日志信息教给 rsyslog,rsyslog 会自动根据日志所属的 facility 将日志存储到对应的位置。本节我们就来详细介绍 rsyslog 的配置使用
Linux时间服务-chrony

Linux 中有一些通用原则,比如如果上下层衔接不通畅,通常的解决方法就是添加一个中间层,虚拟文件系统就是最典型的一例,再比如如果一个功能被很多应用所需要,通常会做成一个公共服务以便,认证功能 pam 还有本节将要介绍的 日志服务 rsyslog 就是典型的示例。本章我们会讲一些类似这些的 Linux 中基础的但是并不复杂的基础服务,包括:
网络接口类型

网络虚拟化我们会在之后的高级篇详细讲解,但是为了方便大家理解,我们在此章节简单描述以下不同虚拟网卡的类型的作用范围。虚拟网卡分为四种主要类型:
TCP 协议简述

tcp 连接是由两个有来有往的半个连接组成的

