分类目录:电脑技术

如何加快 sort 的排序速度

GNU sort 工具是我们经常用来对文本文件进行排序或去重的工具。sort 默认的参数可能并不适合排序上 G 的大文件。我们来看一下经常被忽略的 GNU sort 单文件排序优化策略。

例如,我们有一个 100G 的 data.csv 文件,要按第一列的编号排序。命令如下:

env LC_ALL=C sort -S 60% -k 1n,1n -t, --parallel=4 --compress-program=pzstd -o data_sorted.csv data.csv

其中:

  • env LC_ALL=C 指定 sort 按照字节排序,无视内容的语言和编码。在不同的语言环境下,sort 会根据该语言的特点进行字典序的比较 …

SQLite 扩展应用

SQLite 根据作者的说法,它不是要跟 PostgreSQL/Oracle/MSSQL/MySQL 比,而是要取代 fopen(),让应用开发者不用自己考虑文件格式的解析和序列化。我们来看看 SQLite 中比较少注意到的功能。

PRAGMA

  • PRAGMA journal_mode=WAL。本地数据库可以用 WAL 模式加快读写速度,减少多进程冲突。
  • PRAGMA cache_size=-kibibytes,加大你的缓存。
  • PRAGMA application_idPRAGMA user_version,让程序给自己的数据库标上识别码和版本号。

权限机制

SQLite 有一个很简单的权限系统,能对 SQL 虚拟机的操作指令设置回调 [1],来判断是否允许操作。拿 Python 举例 [2],例如我们要仅允许只读操作。

import sqlite3

SQLITE_FUNCTION = 31

def …

为什么不用 LaTeX

8102 年了,为什么还要用 LaTeX 呢?LaTeX 没有:

  • 良好的设计。混乱的宏定义名称、包名称、语法,读不懂的错误信息。你猜不出你要用的命令到底叫什么、在哪个包,也没有命名空间的约定。
  • 文档。它唯一的官方文档是一本书,没有电子版,也没有多少能用的索引,有些命令还没有提到。常见问题分散在各大论坛、问答网站,而不是加进官方文档。每个包的文档不统一,还得用难用的 PDF 搜索功能。
  • 更新。没有新增和删减功能,都是靠包来凑。
  • 国际化支持。别跟我说 Xe/Lua/PdfLaTeX 之类的扩展实现,LaTeX 设计上就是没有的,也常常会遇到外部扩展不支持国际化的问题。它是在 Unicode 标准建立之前设计的,却从来没有官方更新支持国际化和 Unicode。除了拉丁文字,其他文字的特有排版样式,像是中文竖排,也是没有的。
  • 排版样式。你就只见到过那几种排版 …