vi如何退出

vi编辑完文件需要保存文件和退出。一般是esc,然后:wq或者:x来退出.但是两者还是有一些不同的.

  • :wq 的逻辑是"保存文件并退出"
  • :x 的逻辑是"检查是否有更新若有更新则保存并退出否则直接退出"

前者最后的效果是你无论是否对文件是否做出改动,文件在系统中的timestamp都会更新,而后者只会在你有改动后才会更新. (more…)

重载中括号操作符, 执行复杂操作

C++可以重载运算符, 其中中括号 "[]", 通常在其它地方用于表示下标的操作符, 重载自然也是用于"获得或者设置某个属性"这么个功能.

最简单的莫过于返回一个地址, 做的操作自然都被看光了.

class Opol {
 public:
    Opol() {
        memset(a,0,10);
    }

    int & operator [] (int k) {
        return a[k];
    }
 private:
    int a[10];
}

(more…)

修改普通用户的最大文件打开数

使用到mongo,redis等数据库的时候,往往会遇到这样一个坑。某mongo跑着跑着突然没了,某redis启动先给个warning,仔细一看log说最大文件打开数不够..

# You requested maxclients of 10000 requiring at least 10032 
# max file descriptors.
# Redis can't set maximum open files to 10032 because of OS error: 
# Operation not permitted.
# Current maximum open files is 1024. 
# maxclients has been reduced to 4064 
# to compensate for low ulimit. 
# If you need higher maxclients increase 'ulimit -n'.

(more…)

格式化MongoDB的输出

通过mongo自带的命令行进入后,db.coll_name.findOne(),可以发现mongo返回的数据是被format过的,看起来各种爽。但若你抽一下,改用db.coll_name.find(),瞬间弥漫而来的是各种unformatted数据,根本没法看。其实我们很容易就可以调整让它显示地更加漂亮。 现在有两种方法可以做到这点。 (more…)

MongoDB Replica Sets的配置

MongoDB是一种很不错的NoSQL数据库,数据库存储基于BSON,一种JSON的变种。在使用的时候,有时候我们dump某个单个的collection/db作为备份的时候,往往会连累到整库都访问困难。集群有时候果断是个不错的选择。

MongoDB的存储是Replica,有三种角色如下:

Diagram of a replica set that consists of a primary, a secondary, and an arbiter. (more…)

CentOS 7 下使用 iptables

系统升级到CentOS 7后总感觉iptables怪怪的,比如不管怎么保存重启后都被初始化一下,即便我最后发大绝招启动时候加命令: 首先iptables-save > /etc/iptables.rules保存当前状态。 然后再在/etc/rc.local中强制加上

iptables-restore /etc/iptables.rules

重启后虽然规则生效但仔细看规则还是一些被莫名添加的额外的内容,让人很是不爽。 (more…)

CentOS 7 下安装 jdk1.8

更新: 现在 CentOS 7 下默认 repo 已经有 openjdk 1.6, 1.7, 1.8 三个选项了, 若无所谓 oraclejdk 和 openjdk 的区别, 我们可以直接安装 openjdk 命令如下:
yum install java-1.8.0-openjdk -y
要是还需要用它的头文件和库, 可以再来句
yum install java-1.8.0-openjdk-{devel,headless} -y
以后跟着 yum update 一起更新, 也是极好的.

CentOS 7 下目前默认是 jdk1.6 和 1.7。若需要更高版本的1.8,我们就需要一点额外的手段了。

首先,我们需要从这个页面下个最新版本的 jdk. Oracle 提供 rpm 包和tar.gz 包. 为了省事, 我们直接下载个 rpm 包完事.

若远程直接用 wget 下载, 有时候有一点问题, 需要加点参数来帮忙. 参考此处.

下载完成后,可以用 rpm 命令安装,不过本懒人记不住那么多命令, 更喜欢用 yum 搞定。 (more…)

从 Linux 到 macOS

一个月前更新机器,从我大 Fedora 转到了 macOS, 虽然都继承了Unix的衣钵, 但很多地方还是有些区别的. 入手一个月, 感觉已经可以小用下, 虽然很多地方还是不适应, 至少可以好好写代码了. 抽点时间写下一些 log, 希望能帮助到谁.

(more…)

Cmake 2.8 以上 OSX RPath的支持

在mac某机器中cmake生成makefile文件的时候,发现提示如下:

....
CMake Warning (dev):
  Policy CMP0042 is not set: MACOSX_RPATH is enabled by default.  Run "cmake
  --help-policy CMP0042" for policy details.  Use the cmake_policy command to
  set the policy and suppress this warning.

  MACOSX_RPATH is not specified for the following targets:

   cjson
   iniparser
   stemmer
   word2vec

This warning is for project developers.  Use -Wno-dev to suppress it.

-- Generating done
....

(more…)