月度归档:2015年08月

AWK统计不同列的数据

今天QA妹子在做数据查询的时候向我抱怨,说我们开发打的日志太不规范,导致她查询数据时相当麻烦,数据的原始格式是这样的:

1844#雄霸四方#freePhantomNum:89,armyGold:280,num:1,gold:2800,type:1
1844#雄霸四方#freePhantomNum:88,armyGold:280,num:1,gold:2800,type:1
1844#雄霸四方#freePhantomNum:87,armyGold:280,num:1,gold:2800,type:1
92673#汔丶淚。#freePhantomNum:101,armyGold:280,num:1,gold:2800,type:1
4391#曹操之后#freePhantomNum:81,num:1,armyGold:280,gold:2800,type:1
4391#曹操之后#freePhantomNum:80,num:1,armyGold:280,gold:2800,type:1
4391#曹操之后#freePhantomNum:79,num:1,armyGold:280,gold:2800,type[……]

继续阅读

乐观锁和悲观锁

这两个概念是非常宏观的,只是两种不同的设计思想。

一、基本概念

悲观锁:假设线程在竞争资源时肯定会发生冲突,这时就需要把这个资源锁住,只有一个线程能同时操作这些竞争资源,其他线程只能等待拥有这个锁的线程完成操作。

乐观锁:顾名思义就是假设线程在竞争资源不会发生冲突,或者说概率很小,大家都可以同时访问这个资源,只有在最终修改的那一瞬间才会去检查是否能够修改。但如果发现冲突了怎么办?回滚。

这样很明显,乐观锁加锁的时间短,在多读少写,并发的可能性较低的情况下,可以减少事务之间的锁等待和事务对锁的管理开销,能够在一定程度上提高效率。但如果在资源竞争很激烈的情况下,乐观锁就会因为频繁的回滚导致性能的下降。

乐观锁的最初概念其实是Optimistic concurrency control,最初由华人科学家H. T. Kung在1981年提出,wikipedia给出的定义非常准确:

Optimistic concurrency control (OCC) is a concurrency control method applied to transactional systems such as rela[……]

继续阅读

vim编辑器常用指令

vim编辑器是Linux下面非常流行的文本编辑器,它是vi的增强版。本文主要介绍一些最最基本,也是最常用的指令。

一、基本模式

新手对vim可能非常讨厌,因为不清楚整个vim编辑器的操作状态,导致文件操作混乱。其实只要弄清楚这三种状态,vim还是很好用的。

命令模式(command mode):主要是光标的移动,文本复制,撤销之类的。

插入模式(insert mode):就是实际开始编辑文本了,进入的方式有很多,最常见的是i,对光标处插入字符进入编辑模式。

底行模式(lastline mode):也可以理解为设置选项,比如设置行号,语法高亮之类的。进入的方式是在命令模式下按下冒号:。

二、常用指令

1).插入指令
o     插入当前行的下一行
O    插入当前航的前一行
i      插入当前光标所在行
b     插入当前光标所在的前一个单词
w    插入当前光标所在的后一个单词
e     插入到下一个单词的开头

2).光标移动
0    数字0,移动光标到行首
^    移动光标到当前行的第一个字母
$    移动光标到行尾
h    左
j     下
k    上
l     右
gg   到文件的开头
G    [……]

继续阅读