Python 字符串格式化 str.format 简介

Python 在 2.6 版本中新加了一个字符串格式化方法: str.format()。它的基本语法是通过 {} 和 : 来代替以前的 %.。格式化时的占位符语法: replacement_field ::= "{" [field_name] ["!" conversion] [":" format_spec] "}" “映射”规则 通过位置 str.format() 可以接受不限个参数,位置可以不按顺序: >>> "{0} {1}".format("hello", "world") 'hello world' >>> "{} {}".forma...

阅读更多

Docker 核心技术 -- Linux Namespace

Docker 在技术上实际并没有什么创新,而是整合了很多现有的技术。Docker 用到的核心技术包括 Namespace、CGroup、UnionFS 等等。 Namespace 简介 Namespace 是 Linux 提供的一种内核级别环境隔离的方法。其提供一种资源隔离方案,使得 PID, IPC ,Network 等系统资源不再是全局性的,而是属于特定的Namespace。每个 Namespace 里面的资源对其他 Namespace 都是透明的。 Unix 系统有一个 chroot 的系统调用,其一种简单的隔离模式,通过修改根目录把进程隔离到特定的目录下执行。Chroot ...

阅读更多

Docker 容器技术简介

Docker 是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、bare metal、OpenStack 集群和其他的基础应用平台。 Docker 应用场景 Web 应用的自动化打包和发布; 自动化测试和持续集成、发布; 在服务型环境中部署和调整数据库或其他的后台应用; 提供强大的安全保障,运行一个单独的进程与服务器隔离。 Docker 特征 速度飞快以及优雅的隔离框架 物美价廉 CPU/内存的低消耗 快速开/关机 跨云计算基础构架 D...

阅读更多

部署 Docker Registry 私有镜像仓库

Docker 官方提供一个 registry 镜像来让需要的人自己搭建私有仓库。因此部署仓库的服务器需要有 Docker 环境。 简单部署 简单部署如下: docker run -d -p 8855:5000 --name registry -v /home/server/registry/:/var/lib/registry registry 这默认是一个 http 的接口,但是 docker 客户端在 push 镜像时,默认会使用 https。为了避免搭建 https 时部署签名证书的麻烦,这里只介绍 http 接口的部署。那么,客户端要向服务器 push 镜像则需要做一...

阅读更多

Linux 下的 tmpfs 与 /dev/shm

tmpfs 是 Linux/Unix 系统上的一种基于内存的文件系统,即 tmpfs 使用内存或 swap 分区来存储文件。 Linux 内核中的 VM 子系统负责在后台管理虚拟内存资源 Virtual Memory,即 RAM 和 swap 资源,透明地将 RAM 页移动到交换分区或从交换分区到 RAM 页,tmpfs 文件系统需要 VM 子系统的页面来存储文件。tmpfs 自己并不知道这些页面是在交换分区还是在 RAM 中;做这种决定是 VM 子系统的工作。tmpfs 文件系统所知道的就是它正在使用某种形式的虚拟内存。 由于 tmpfs 是基于内存的,因此速度是相当快的。另外 t...

阅读更多

SQL 的基本使用概念简介

查询不重复的记录 SELECT 指令让我们能够读取表格中一个或数个栏位的所有资料。这将把所有的资料都抓出,无论资料值有无重复。在资料处理中,我们会经常碰到需要找出表格内的不同资料值的情况。换句话说,我们需要知道这个表格/栏位内有哪些不同的值,而每个值出现的次数并不重要。这要如何达成呢?在 SQL 中,这是很容易做到的。我们只要在 SELECT 后加上一个 DISTINCT 就可以了。DISTINCT 的语法如下: SELECT DISTINCT "栏位名" FROM "表格名"; 如果指定多列,则同时根据多列的值里去重,如 (1, 1) 与 (1, 2) 为不重复的数据。 多个复杂...

阅读更多

Python 模块简介 -- functools

Python 的 functools 模块可以说主要是为函数式编程而设计,用于增强函数功能。 functools.partial 用于创建一个偏函数,它用一些默认参数包装一个可调用对象,返回结果是可调用对象,并且可以像原始对象一样对待,这样可以简化函数调用。实际上 partial 相当于一个高阶函数,其大致的实现如下(实际在标准库中它是用 C 实现的): def partial(func, *args, **keywords): def newfunc(*fargs, **fkeywords): newkeywords = keywords.copy() ...

阅读更多

Python import hook

import hook 通常被译为 探针。我们可以认为每当导入模块的时候,所触发的操作就是 import hook。使用 import 的 hook 机制可以让我们做很多事情,比如加载网络上的模块,在导入模块时对模块进行修改,自动安装缺失模块,上传审计信息,延迟加载等等。 理解 import hook 需要先了解 Python 导入模块的过程。 一、 导入过程 Python 通常使用 import 语句来实现类库的引用,当然内建的 __import__() 函数等都能实现。 import 语句负责做两件事: 查找模块 加载模块到当前名字空间 那么,一个模块的导入过程大致可以...

阅读更多