Python的shelve模块提供了一种简单的数据存储方案,以dict(字典)的形式来操作数据。
#!/usr/bin/python import sys, shelve def store_person(db): """ Query user for data and store it in the shelf object """ pid = raw_input('Enter unique ID number:') person = {} person['name'] = raw_input('Enter name:') person['age'] = raw_input('Enter age:') person['phone'] = raw_input('Enter phone number:') db[pid] = person def lookup_person(db): """ Query user for ID and desired field, and fetch the corresponding data from the shelf object """ pid = raw_input('Enter unique ID number:') temp = db[pid] field = raw_input('Please enter name, age or phone:') field.strip().lower() print field.capitalize() + ': ', temp[field] def print_help(): print 'The avaliable commands are:' print 'store :Stores infomation about a person' print 'lookup :Looks up a person form ID number' print 'quit :Save changes and exit' print '? :Prints this message' def enter_command(): cmd = raw_input('Enter command(? for help):') cmd = cmd.strip().lower() return cmd def main(): database = shelve.open('database') # database stores in current directory try: while True: cmd = enter_command() if cmd == 'store': store_person(database) elif cmd == 'lookup': lookup_person(database) elif cmd == '?': print_help() elif cmd == 'quit': return finally: database.close() # Close database in any condition if __name__ == '__main__': main()
要修改系统的 dalvik.vm.heapsize的值,可以修改 /system/build.prop。写到 /system/build.prop 裏面,然後重開機,才會有效。還要記得 chmod 644 /system/build.prop 哦,不然会没办法开机。
build.prop如下:
#
# ADDITIONAL_BUILD_PROPERTIES
#
wifi.interface=wlan0
keyguard.no_require_sim=true
ro.com.android.dataroaming=true
ro.com.android.dateformat=MM-dd-yyyy
ro.config.ringtone=Ring_Synth_04.ogg
ro.config.notification_sound=pixiedust.ogg
ro.config.alarm_alert=Alarm_Classic.ogg
ro.ril.hsxpa=1
ro.ril.gprsclass=10
ro.adb.qemud=1
ro.opengles.version=131072
ro.sf.lcd_density=213
dalvik.vm.heapsize=192m
persist.sys.strictmode.visual=0
persist.sys.strictmode.disable=1
dalvik.vm.jniopts=warnonly
ro.pm.warmboot=1
sys.pm.warmboot.flag=0
ro.mtk.browser.cachePolicy=1
mtk.browser.useCmpbPlayer=1
mtk.browser.alwaysFullscreen=1
mtk.browser.openLinkInSameTab=1
hwui.render_dirty_regions=false
dalvik.vm.lockprof.threshold=500
net.bt.name=Android
dalvik.vm.stack-trace-file=/data/anr/traces.txt
Go 语言作为一种新颖的编程语言, 它最初是由谷歌为了服务器开发而发明出来的。 而它的发明者们,更是数位成就卓绝、技艺非常的计算机科学泰斗:像是 Ken Thompson 和 Rob Pike 这对老朋友。 我最近刚发表的一个重要的产品就使用了Go开发,从开发者产出效率和产品表现来说,Go语言很好地证明自己在这些方面的优越特性。也正因为如此,我所知的其它许多开发团队也在准备Go to "Go" (噢,这语言的名字是有多灵动啊!)。
仔细想想看,你要多久才能遇到一项编程创新同时兼顾了开发效率以及 计算性能?
在讨论GO语言之前,我想谈谈为什么我会喜欢上Ta. 我是在2001年开始开发小型网页应用,并开始接触各种各样的语言。 那时我是C++的绝对忠实粉丝。 到了在2004年,我开始接触PHP(非面向对象)。但没多久,我就讨厌PHP了。尤其是在没有运行程序前,我根本不能捕捉任何的错误。就在那时,我认识到以下两个编程概念非常重要:
1. “面向对象”只是一种编程方式,而并非唯一的方式。 而且有时候,它未必是最好的选择。
2. 标量(整形,字符,字符串,浮点型,布尔类型),序列(列表、数组)和映射(名值对)这些语言内置类型,其实已经基本满足大部分的数据结构需求。
PHP用于小型应用的创作场景是绝对没得说。但是它难于测试,难于调试(太多的隐式类型转换)还有就是太慢。当我想暂时脱离PHP的时候,我在2007年和Java偶遇了。 Java也许是我遇到过的最令人郁闷的语言。Java太严格,太无意义(换句话说太冗余)还有太“庞大”,包括各种的IDE,框架,编译环境配置等等。 需要完成繁琐的配置,我们才能开始开发。同时,我并不接受JVM(Java 虚拟机)的思想。它虚幻的便携性会带来沉痛的代价。2008年,我开始接触 Python。5年前我曾经用Ta小试牛刀,但现在我是全身心的投入其中。我喜欢Python。 它支持多范型,语言很有语义,有很多亮点的东东,例如列表解析,生成器表达式,装饰器,关键字参数(**kwargs)等等。 它语义清晰,设计 紧密。它的强大力量,在写代码-运行-修正-运行的过程中表现的淋漓尽致... 开发周期中经常无需迭代。用Python写的代码经常比其他语言写的,更能按着我的意图去运作。
可是,Python有个突出的问题,就是它速度不快。我使用过Psyco这样的优化器,但是效果还不够理想。然后又尝试了Unladen Swallow优化器,可也不够理想。
在我开始用Python的时候,我发现Google对Ta情有独钟。 Python之父 -- Guido van Rossum 就是就职于Google. 过了一段时间,我听到了一个来自Google的新语言诞生了 -- Go.如果Go背后不是借助与名声赫赫的Rob和Ken,和诞生于世界上最伟大的IT公司,这个项目也许就在实验阶段就被解散了。
2009年Go语言发布的时候,我并未觉察到为什么它如此伟大,除了知道Go包含很多现代语言的结构和运行速度很快。
现在让我们先暂停一下思路,换一个话题。
在2010年末,当时我刚刚在Zynga工作,重新由Python转去使用php而使我有点时间。所以我花了一点时间去读了一些东西。其中在我读过的书中有一本书,在该书中一些讨论中,介绍了这样的一种概念:“数据流编程”(dataflow programming)和“声明式并发”(declarative concurrency).你可能需要通过前面的链接,去简单了解一下这个概念,因为这就是Go语言的核心特征。
在我学习数据流编程时,我想起