Browsed by
作者:YI

jemalloc

jemalloc

看到一个redis新版本发布的新闻,注意到其中的内存管理采用了jemalloc,替代标准gcc中的malloc。搜索了相关的信息,感觉jemalloc是个相当不错的内存管理模块,尤其在碎片化管理方面很吸引人。作为需要长期运行的服务器软件,内存管理方面的确是需要慎重考虑,jemalloc 有facebook这样的大厂支持,又有redis做背书,值得我们尝试。

在Debian系统中可以直接安装jemalloc的dev库:

sudo apt install libjemalloc-dev

安装后,头文件在以下目录:

/usr/include/jemalloc

库文件在以下目录(X86系统):

/usr/lib/x86_64-linux-gnu

或者以下目录(Raspberry Pi):

/usr/lib/arm-linux-gnueabihf

Linux下的一些命令

Linux下的一些命令

这两天费了老大劲查一个linux系统下的问题,最终查出了原因,其中用到一些日常不太使用的命令,记录一下,以免以后忘记。

strace -e trace=write -p 1234

这个命令是获取进程(进程ID是1234)的输出信息。

cd /proc/1234/fd
ls | wc -l

检查进程1234打开的句柄数。

perror 24

显示errno的提示信息。上述例子显示“errno=24”时的具体提示信息。

ulimit -a

检查用户的各项资源配置,比如句柄数、进程数等。通常这些资源数配置在 /etc/security/limits.conf 文件中。

uname -a

查询内核版本。

另外,Debian 7是在tty7上启动xwindows,而初始信息是输出到tty1上,用组合键 Ctrl+Alt+F1/F7 即可进行切换。

粗浅理解数据库联合索引

粗浅理解数据库联合索引

在表中对多个列建立联合索引,比如(a, b, c),这种情况下实际建立了三个索引:

  • a
  • (a, b)
  • (a, b, c)

因此,如果对b或者c列进行查询,就需要另外建立索引进行优化。当然,不是索引越多越好,毕竟对插入、更新数据(实际也就是I/O)会有影响。

root用户也用sudo

root用户也用sudo

过往在升级Debian (Testing版本)时,总是以root身份进行操作,例如:

apt update
apt upgrade

最近使用同样的命令升级时,总是提示错误,意思大约是“找不到ldconfig”文件或者无权执行。这是很奇怪的问题,毕竟当前用户是root,而且ldconfig显然就在‘/sbin’目录下,肉眼可见。

检查了root用户的env,发现Path的设置为:

PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

确实没有包含‘/sbin’目录,因此root用户的确无法直接执行ldconfig命令。再次检查‘/etc/profile’文件,在路径设置时进行了以下判断:

if [ "`id -u`" -eq 0 ]; then
  PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
else
  PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"
fi

当然,可以直接修改该文件,或者修改root用户的.bashrc文件,将’/sbin’目录将入路径当中。
然而根据profile文件的判断条件,也可以不做任何修改,只是执行命令时,加上‘sudo’即可。例如上述更新命令修改为:

sudo apt upgrade
markdown中的换行

markdown中的换行

以前google notebook用来记笔记极好,可惜google放弃了这个产品,后续试了evernote,onenote,有道笔记,以及qmail中的记笔记等,都有这样那样的问题,实在不太满意。

有朋友推荐用markdown记笔记,使用程序员必备工具VS code就可以直接预览markdown文件。markdown文件本质上就是文本文件,因此结合github等版本管理工具,还很容易对笔记进行版本管理、永不丢失,挺有意思。

markdown语法比较简单,基本上不妨碍记笔记时的思维过程。最近遇到“换行”的问题,简单搜索了一下,原来是采用以下语法:

两下空格后,再按回车键。

稍显麻烦,不过还能接受。

办理(香港)护照和身份证

办理(香港)护照和身份证

今天(2018-06-29)带苗去香港沙田事务处申请办理护照。记录一下,有些地方需要注意,方便以后办理这些证件。

过程与“办理回港证”基本一致。首次办理护照时,需要同时办理身份证,因此实际上是办理两个证件。需要的资料和复印件如下:

(1)大人的港澳通行证,以及过关时打印的小标签。需要在现场复印,将通行证和小标签复印在同一张纸上(复印费2港币)。

(2)小孩的出生纸原件及复印件(可在家复印好,也可交2港币现场复印)。

(3)小孩的回港证、回乡证以及学籍表,无需复印。

(4)现场填两张表(其中一张表在网上预约时可以下载,没下载也没关系,拿号时会给),现场有模版,照着填即可。需要注意的是“十一歲以下人士的香港永久性居民身份證申請書”这张表,里面主要填大人的信息,如果没有香港住址,可以填深圳地址;无香港身份证可以填通行证,父母双方的英文全名与小孩出生纸上的要一致(我当时填的是中文名的汉语拼音)。另外,中文要用繁体!

(5)两张小孩的白底照片。可以在大陆拍照好,基本上按照内地大一寸大头贴的标准,坐姿端庄,露额头、露耳朵、无眼镜、无头饰等就可以了,和大陆的证件照标准相差无几。现场也提供自助照相。

(6)小孩必须亲自到场。

(7)费用是185港币,最好带好零钱。

这次再次证明推延症害死人,办事要乘早。上周网上预约的时候,赫然发现一直到7月底各事务处都几乎全满额,像上次一样发现沙田事务处只在今天有点名额。除了路途比较遥远,办理过程总体上是轻松愉快的。由于我不懂粤语,因此心理上总是比较紧张,实际上完全不用担心。事务处工作人员都非常和蔼,从来没有遇到给白眼的情况,专业的服务态度值得我们学习。

尤其值得一提的是今天遇到的办事员李姑娘(?李小姐,抱歉我不知道香港的准确称呼,我看到位置上的名称是“李xx”)。李姑娘能说流利的普通话,态度温柔、细心,指导我填表时没有丝毫的不耐烦,一直非常耐心,对待孩子也是轻声慢语,当然人也漂亮,实在是如沐春风!如果能遇到像李姑娘这样的办事员,我愿意每次都跋山涉水地去沙田事务处!

最后,事务处人确实很多,有些人也是莫名其妙,对大陆人未必友善(大家都懂的),请务必照顾好孩子,其他无关紧要!

2018-07-09 更新: 拿到回执过一天,就可以预约拿证的时间。一定要预约拿证!回执单上有预约网址。需要注意的是,回执单的申请编号中间没有横线,而网上预约填编号时有横线,直接输入即可,程序会自动进行横线分割。

2018-07-23 更新: 领证件时不需要小孩在场,只需要带上回执单、大人的通行证、过关的小票即可,所有材料无需复印。

手工解除fail2ban封锁的IP地址

手工解除fail2ban封锁的IP地址

首先检查fail2ban的log文件,看是哪一个jail的规则触发了封锁,比如apache的规则。然后可以使用fail2ban-client确认该规则的封锁状态:

root@minisipserver:~$ fail2ban-client status apache
Status for the jail: apache
|- filter
|  |- File list:        /var/log/apache2/error.log
|  |- Currently failed: 0
|  `- Total failed:     21
`- action
   |- Currently banned: 1
   |  `- IP list:       184.15.66.88
   `- Total banned:     3

例如,示例中apache的规则封锁了“184.15.66.88”。接着使用以下命令解除对该IP地址的封锁:

fail2ban-client set apache unbanip 184.15.66.88
Debian 9中安装VirtualBox增强工具

Debian 9中安装VirtualBox增强工具

以前的Debian版本中自带有virtualbox-guest-dkms包,直接安装即可。然而Debian8(?9)后,不知道什么原因这个包不再包含在Debian的库中,因此需要手工编译安装。理论上来说,Debian团队没有必要移除这个包,估计可能是Oracle的政策变化导致的。

步骤稍微有些繁琐,主要参考网上一篇文档进行操作,请猛击此处阅读原文档。

首先是将Debian更新到最新的版本:

apt update
apt upgrade

然后安装编译dkms需要的若干工具和库:

apt install build-essential module-assistant dkms

开始准备编译内核模块:

m-a prepare

点击Vbox的菜单“设备 – 安装增强工具”,会在桌面上生成一个类似cdrom的图标,打开ta并进入terminal窗体,运行以下命令即可:

sh ./VBoxLinuxAdditions.run
巴菲特股东大会实录(2018)

巴菲特股东大会实录(2018)

点击此处访问新浪网的翻译。

今年巴老买了很多Apple的股票,是当作消费股来买,而不是视为科技股。作为一名科技领域的工作人员,从科技领域的角度看,我觉得巴老的决定可能也是错误的,就像他在IBM上犯的错误一样。当然,这需要时间去证明。

如何迁移系统?

如何迁移系统?

其实一直被这个问题困扰。家里有台旧笔记本,想换SSD硬盘,可是一想到要重装系统,再加上一堆的软件、配置等,实在是耗时耗力,就这么拖着。今天在知乎上看到一篇大牛的文章《如何安全快速的迁移你的系统到固态硬盘》,实在是太棒了!

粗略地阅读了这篇文章,写得非常详细清晰,更主要的是,推荐使用的工具软件也完全可以免费获得,而且还非常好用。以前也看到过类似的文章,不过为了一次迁移专门去购买一套ghost软件,似乎又下不了决心。这下好了,在忙完这段后,就可以再仔细考虑这件事了。