LaTeX 页码设置
默认情况下,LaTeX 会在每个页面的底部生成一个页码编号,即使是标题页也是如此。通常情况下,我们不需要在标题页输出页码编号,而且目录页一般也会采用罗马数字的形式给出页码,而正文内容则以阿拉伯数字的形式给出页码编号。本文接下来介绍了 LaTeX 中基本的页码设置。
默认情况下,LaTeX 会在每个页面的底部生成一个页码编号,即使是标题页也是如此。通常情况下,我们不需要在标题页输出页码编号,而且目录页一般也会采用罗马数字的形式给出页码,而正文内容则以阿拉伯数字的形式给出页码编号。本文接下来介绍了 LaTeX 中基本的页码设置。
Linux I/O 调度器控制着内核读写磁盘的工作方式。系统管理员可以通过更改调度器来自定义磁盘调度算法,从而优化系统性能。有三种调度程序可供选择,每种调度程序都有其优点。这些调度器是:
Noop - 电梯调度算法,最简单的调度算法,该算法基于先进先出队列 (FIFO) 实现,所有的 I/O 请求都符合先进先出规则,适合于 SSD 设备。
Deadline - 绝对保障算法,它为读和写分别创建了 FIFO 队列,当内核收到请时,先尝试合并,不能合并则尝试排序或放入队列中,并且尽量保证在请求到达最终期限时进行调度,避免有一些请求长时间不能得到处理。该调度器适合虚拟机所在宿主机器或 I/O 压力比较重的场景,例如数据库服务器。
Completely Fair Queuing, CFQ - 绝对公平调度算法,它为每个进程和线程单独创建一个队列来管理该进程的 I/O 请求,然后为每个队列分配访问磁盘的时间片。时间片的长度以及允许队列提交的请求数取决于给定进程的 I/O 优先级。该调度器比较适合于通用服务器。
本文将介绍 PostgreSQL 中的 Common Table Expressions, CTE,也叫做公用表表达式。在介绍 CTE 之前,我们需要先了解 WITH 查询。WITH 查询是 PostgreSQL 针对复杂查询,允许用户在该查询内容编写辅助语句的功能,其中用户编写的辅助语句就是今天介绍的 CTE,你可以将 CTE 视为在当前查询中的一个临时表。CTE 的一大优点就是我们可将查询中的较为耗时且多次重复使用的部分通过 CTE 缓存起来,从而避免多次执行。
现在越来越多的网站采用 HTTPS 协议,今天就遇到一个关于 HTTPS 证书的问题,服务器端采用 HTTPS 加密传输,而证书是使用的自签名证书,因此客户端开发时需要将其导入到 Eclipse 中才能通过验证(客户端采用 Java 开发)。Eclipse 采用 keystore 来管理证书,可以利用工具 keytool
来管理证书文件,本文主要记录 Eclipse 证书管理的基本使用,以及使用自签名证书的格式问题。
今天遇到一个 git 远程仓库分支同步的问题,主要的诉求是将两个远程仓库的分支同步到一致状态。起初,项目只是在 GitHub 上进行维护,后期又在 GitLab 上创建了该项目,并且两个仓库之间的分支情况有所不同。我们可以使用如下命令同步两个远程仓库之间的分支信息。
1 | $ git fetch --all -p |
备注: github
指向远端的 GitHub 项目地址,同理,gitlab
指向远端的 GitLab 项目地址。
PostgreSQL 标榜自己为最先进 (Most Advance) 的开源关系数据库,它支持大部分 SQL 标准并且提供了许多其他现代特性:复杂查询、外键、触发器、视图、事务完整性、MVCC。同样,PostgreSQL 可以用许多方法扩展,比如,通过增加新的数据类型、函数、操作符、聚集函数、索引。PostgreSQL 被设计为易于扩展,因此通过插件我们可以很容易的扩展 PostgreSQL 数据库。本文就从编写一个简单的斐波那契的数据库扩展来介绍 PostgreSQL 插件的编写。
本文主要收集日常工作中经常使用的 PostgreSQL 相关的命令;其中,主要包含相关的系统函数、使用技巧等。本文将持续更新!!!
备注: 主要基于 PostgreSQL 10 及其后续版本。
Python 的 gettext 模块为应用程序提供了国际化 (Internationalization, I18N) 和本地化 (Localization, L10N) 的服务。该模块提供了两类 APIs:(a) 支持 GNU gettext 的基本 API;(b) 适合 Python 的并且基于类的 API。本文主要针对第二类 API 进行介绍。
为了向 Python 程序提供多语言消息,我们需要按以下步骤进行:
在上一篇中我介绍了如何安装和使用列存数据库 cstore_fdw。接着,我将在本篇中介绍 cstore_fdw 是如何实现的。
Cstore_fdw 是基于 PostgreSQL 开发的一款列存数据库,它采用 ORC 作为低层的物理存储格式 (有部分改动),使用 protobuf 进行序列化并采用 PostgreSQL 外部插件的形式集成到数据库中。Cstore_fdw 包含 3 个头文件以及 5 个源文件:
无论何时,PostgreSQL 总是在集群的数据目录 pg_wal 下面维护一个 Write Ahead Log 日志记录。该日志记录了数据文件的所有变化。当数据库系统发生崩溃时,数据库系统可以通过重放最新检查点之后的 WAL 日志条目来恢复数据库的一致性。在 PostgreSQL 中,我们通过将文件系统级的备份与 WAL 日志的备份相结合可以实现三种策略的数据库备份。当需要进行数据库恢复时,我们先恢复文件系统的备份,随后通过重放备份的 WAL 日志使得数据库进入到当前状态。尽管该方法过于复杂,但是它拥有以下好处:
与普通文件系统备份技术一样,该方法只能支持恢复整个数据库集群,而不能用于恢复其子集。同时,它也需要更多的归档空间:基本的文件系统备份可能很庞大,繁忙的系统将生成许多必须归档的 WAL 流量。尽管如此,在多数情况下,它仍然是需要高可靠性的首选备份技术。
我们需要一系列连续归档 WAL 日志文件,这些文件至少可以延伸到备份的开始时间,从而确保连续归档 (许多数据库供应商也称为“在线备份”) 成功恢复。