Japin

登高必自卑,行远必自迩

二进制文件是以二进制格式存储的文件,它是计算机可读的,人类不直接阅读二进制文件。所有的可执行程序都以二进制文件存储。那我们该如何编辑二进制文件呢?在我使用的 Emacs 编辑器中提供了一个 hexl-mode 的主模式来编辑二进制文件。本文记录了 Emacs 中编辑二进制文件的基本操作。

阅读全文 »

Cstore_fdw 是 Citus Data 开发的一款开放源码的 PostgreSQL 列存扩展插件。列存储在数据批量导入的分析场景能够提供更好的性能。Cstore_fdw 通过只读取磁盘上相关的列数据来提升性能,同时,由于每列的数据来自同一个域,因此更利于数据压缩,cstore_fdw 提供 6~10 倍的数据压缩能力,从而减小了对磁盘存储的需求。

Cstore_fdw 采用 Optimized Row Columnar (ORC) 格式作为其数据的物理存储格式。ORC 优化了 Facebook 的 RCFile 存储格式,并具有以下优点:

  • 压缩 (Compression) - 大约减少了 2~4 倍的内存和磁盘存储空间。易于扩展以支持不同的编码。
  • 列投影 (Column Projections) - 仅仅读取与该查询有关的数据列,提高了 I/O 效率。
  • 跳跃索引 (Skip Indexes) - 为每个行组 (Row Groups) 存储其最大值和最小值,并利用他们来跳过不相关的数据行。

除此之外,cstore_fdw 使用了 PostgreSQL 的数据类型和 fdw API 编程接口,这样做的好处有以下几点:

  • 支持 40+ 的 PostgreSQL 数据类型,用户也可以创建并使用新的类型。
  • 统计信息收集,PostgreSQL 使用这些统计信息来评估不同的查询计划并选择最优查询计划的来执行。
  • 配置简单,用户只需要创建外部表并导入数据,之后就可以使用 SQL 进行查询。
阅读全文 »

域名系统 (Domain Name System, DNS) 是为连接到互联网或专用网络的计算机、服务或其他资源提供的一个分散且分级的命名系统。他可以理解为域名和 IP 地址相互映射的一个分布式数据库,通过域名系统,用户可以使用相对容易记忆的域名来访问互联网,而不用去记忆难以理解的 IP 字符串,由域名到 IP 地址转换的过程则被叫做域名解析。下图给出了一个典型的域名分级系统 (图片来源于维基百科)。

阅读全文 »

今天在 CentOS 上遇到一个奇怪的问题,ping 程序在 root 用户下能正常使用,但是在非 root 用户下则出现如下错误:

1
2
user@host:~ $ ping 127.0.0.1
ping: socket: Permission denied

在 StackExchage 上也有人遇到了类似的问题,他需要在 PHP 中调用 ping 命令,并且他通过执行 setenforce 0 可以让 ping 命令正常使用,但是经我测试发现这种方法对我无效。

之后在 LinuxQuestions 上发现有人指出 ping 命名将创建原始套接字而非 TCP 套接字,然而 Linux 系统对于普通用户创建原开套接字是禁止的,因此我们就看到了文章开始的错误,针对这一问题他也提出了解决方案,即为 ping 命令添加 suid 权限。

1
2
3
user@host:~ $ chmod +s /bin/ping
user@host:~ $ ls -al /bin/ping
-rwsr-xr-x 1 root root 64424 Mar 10 2017 /bin/ping
阅读全文 »

Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.

Quick Start

Create a new post

1
$ hexo new "My New Post"

More info: Writing

Run server

1
$ hexo server

More info: Server

Generate static files

1
$ hexo generate

More info: Generating

Deploy to remote sites

1
$ hexo deploy

More info: Deployment

0%