启用FTS编译sqlite并用update更新列值

2012年3月16日 sigma 3 条评论 6,040 views

今天,折腾sqlite,需要update一个数据库,发现可以用下面的命令:

UPDATE <table> SET  <col=new_val> WHERE <oth_col=val>

但是,在ubuntu里面用apt-get安装sqlite后,直接执行上面的语句,会报“no such module:FTS3”,因为默认sqlite编译是没有启用FTS3的。因此,需要自己下源码编译,手动编译是加入以下编译选项:

-DSQLITE_ENABLE_FTS3
-DSQLITE_ENABLE_FTS3_PARENTHESIS

用autoconf版本的话,在configure时,加入:

CPPFLAGS= "-DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_FTS3_PARENTHESIS "/configure <options>

上面两种方法的目的都是一样的,就是在编译时定义SQLITE_ENABLE_FTS3 和SQLITE_ENABLE_FTS3_PARENTHESIS宏。

参考资料:http://www.sqlite.org/fts3.html

分类: 沙子 标签: ,

关于Python变量和List的append操作

2012年2月28日 sigma 5 条评论 11,280 views

今天,写Python代码,碰到一个很诡异的问题,花了好长时间才明白(也怪我基础不好,没系统学习python,都是用的时候直接抓脑皮用),通过这个问题,我基本搞清楚了Python中的变量以及List的一些操作。在这里给自己Mark下,也希望对读这篇文章的人有点用。
首先,看下面这段代码:

#!/usr/bin/python
# -*- coding: utf-8 -*- 

import os,sys

trace_file = open("./all_memtrace_file_test","r")

all_addr=[]
all_addr2=[]
addr_info2={}
addr_info={}

for line in trace_file.readlines():
    addr_info = {'addr':int(line.split(",")[2].strip(" "),16),'access':line.split(",")[3].strip("n")}
#    addr_info2={}
    addr_info2['addr']=int(line.split(",")[2].strip(" "),16)
    addr_info2['access']=line.split(",")[3].strip("n")
    if addr_info == addr_info2:
        print "addr_info == addr_info2"
    print "addr_info  = ",
    print addr_info
    print "addr_info2 = ",
    print addr_info2
    all_addr.append(addr_info)
    all_addr2.append(addr_info2)
    print "all_addr   = ",
    print all_addr
    print "all_addr2  = ",
    print all_addr2

阅读全文…

mark

2012年2月26日 sigma 没有评论 4,404 views
分类: 未分类 标签:

由《商海通牒(Margin Call)》所想到的

2012年2月17日 sigma 5 条评论 5,619 views

上周末,看了关于华尔街,关于金融的电影《Margin Call》,中译《商海通牒》,又译《孖展风云(港)》 /《 黑心交易员的告白(台)》 / 《利益召唤》。这部电影个人感觉还不错,大致讲了在08年金融危机来临之前的华尔街,一个金融巨鳄是如何陷入危机,并转嫁危机的,从而对整个金融业造成更大动荡,看完以后对金融游戏有些了解(其实我虽然我从没想过涉足金融领域,但对金融还是有兴趣的,毕竟其已经深刻的影响我们的生活)。在这里,我不想介绍其具体介绍或剧情,有需要的可以看豆瓣电影的相关词条。其实这部电影对我印象最深的是一段对白,在这里分享下:

你知道吗,我以前造过座桥,我以前是个工程师。
这桥连接俄亥俄的多士巴和西维吉尼亚的玛瑟夫,在俄亥俄州河面上横跨912英尺[约277米]。
每天有一万两千一百人通过这桥,把从惠灵到新马顿赛的单程距离缩短了三十五英里;
一天总共是八十四万七千英里;
一个月两千五百四十一万英里;
一年 三亿四百九十二万英里就这么节省下来了。
那桥是我在1986年完成的,
就是二十二年前从桥建成以后算起,总共节省了六十七亿八百二十四万英里的车程。
时速呢,就算五十英里每小时吧,那就是一亿三千四百十六万四千八百小时,
也就是五十五万九千零二十天。
这么一座小桥,让这两个社区的居民总共节省了一千五百三十一年,不用浪费在车厢里。
一千五百三十一年啊!老天啊!

阅读全文…

事务和事务内存

2012年2月12日 sigma 没有评论 7,706 views

今天(2月9日),看到solidot报道,英特尔下一代Haswell处理器硬件支持事务内存,感觉有点小意外。

其实很早以前(2009年),我就对事务内存关注过一段时间,当时,号称要支持的事务内存的处理器只有(据我所知)只有sun公司的Rock处理器,可是这个Rock,一再跳票,跳到Sun陨落也没发布,到现在,oracle也没发布支持事务内存的处理器。事务内存(尤其是硬件实现的)的前景貌似不太明朗。

2011年9月,IBM发布了BlueGene/Q处理器,这是第一款支持事务内存的处理器。但是,这并不意味着事务内存重见天日了。
2012年2月7日,最大的处理器厂商发表文章,声称支持硬件事务内存,其通过Transactional Synchronization Extensions(TSX)的组件来实现的,事务内存的前景终于开始明朗起来。

那么,什么是事务,什么又是事务内存呢。

根据维基百科整理,事务的定义为:

数据库事务(简称: 事务)是数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。在数据库管理系统中,事务必须满足ACID性质,即原子性,一致性,隔离性和持久性。原子性指的是事务中的动作要么全部执行,要么一个都不执行;一致性指的是任何时刻,数据库必须处于一致性状态,即必须满足某些预先设定的条件;隔离性是指一个事务不能看见其他未提交事务所涉及到的内部对象的状态,而持久性则是指一个已提交的事务对数据库系统的改变必须是永久的。 阅读全文…

无觅相关文章插件,快速提升流量