??xml version="1.0" encoding="utf-8" standalone="yes"?>python 整数对象
1.python中的整数使用c语言中的longcd存储
2.python intq行加法会检查结果是否溢出,如果溢出则自动{换ؓpyLongObject对象
3.python中的文无缝集成在语a实现?br />
2 print a.__doc__
4.整数对象完全缓存在内存?其他整数对象轮流使用一块内存空?br />5.整数对象在python初始化中调用的_PyInt_Init中创?然后׃直存在着Q?直到python虚拟机退?/pre>python String对象
1.pyStringObject在创Z后,内部l护的字W串不能再改?
2.intern机制是否只在字符数组长度0或?的时候? 书中提供的代码太q于_了,没讲清楚,但是看后面的演示l果Q应该是所有的字符串都实现了intern机制
3.字符串连接操作严重媄响pythonE序执行效率Q用join只需分配一ơ内存,能够大大提高效率.用法举例Python Dict对象
1.Python中的dict采用hashtable而不是R-B Tree?br />2.采用开攑֮址法解军_H?br />3.Z证冲H探链的连l性,采用伪删除技术,active对象删除则设|ؓdummy?br />4.为减冲H,转蝲率大?/3时则改变table的大?每次增大4倍,如果table中的active态的元素个数大于50000?巨型?Q?br /> 则放慢增镉K度Q每ơ增?倍。可以看出Python中dict的查找效率较?而对于内存的使用是省了又?q考虑了巨型表增长减少倍数?br />Python List对象
1.PyListObjectcMSTL中的Vector?br />2.Python对内存的使用十分节PQ如果list改变的新寸不到分配内存?/2Q则收羃内存.
3.在Pylist中徏插入元素需要逐个Ud后面的元素,cMC中的数组Q因此需要尽量避免对中间元素的插入和删除操作?br />4.STL和PyListObject自动扩容法Ҏ:个h觉得list改名为array比较恰当一些,嘿嘿
len = (old_size != 0 )?2*oldsize:1
//(不够用则扩充两?如果开始ؓI则讄?)
//Python:
new_allocated=(newsize>>3)+(newsize<9?3:6)
//Q?Q?Q?/span>5.对于增长倍数的选择Q这里有讨论
http://en.w3support.net/index.php?db=so&id=1100311
p70书中W误 :"allcated/2"应改?allocated/2"
]]>
译:XGuru
原始状?/span>
我曾l观看过提琴家非常有激情地拉u演奏Q我有了q种xQ也许我投入到文本编辑器中的脑细胞数量和他ؓ投入所喜好的乐器的演奏中差不多吧。我q有U奇异的惌Q当他独奏的时?脑中的核共振图和我在用VIM中操控代码的的图像也怸会相差太大吧Q?/span>
如果你愿意的话请你仔l思考下Q以下是一个vimmer的学习旅E的剪辑
Vim涅磐所l历的O长而艰苦的道\
星期一
“Eclipse当然是简z实用的”
“但是一些满脸落腮胡的奇怪家伙在工作中似乎用vim实非常?我应该试一下?#8221;
“好吧Q我弄了个Gvim,q看h不是很糟p,q里甚至q有菜单界面Q?#8221;
“{什么?我的文本d了?{一下,撤销Q不要啊Q?#8221;
“:help”
“:q!!!!!”
今天剩下的时间还是回到拥有让Z瘄自动补全h功能的Eclipse中获得解脱吧
星期?/span>
“好吧 vim,q是新的一天了Q这是个砺自己学习C西的一个崭新的ZQ我不是那么Ҏ攑ּ的hQ?#8221;
“Z么我׃能一直呆在插入模式里面呢?FJDSAKLFJDALSKJKLDFQ发狂的敲击键盘Q?#8221;
“{一下,你在告诉我保存的时候必LESC-shift-冒号-w-回R?q简直就是狗屁啊”
“在花?个小时学习教E以后,我基本上懂的是ddp命o可以交换两行的内?真是蛋疼?#8221;
一个礼拜以?/span>
“哇噢QQ何地斚w有vim阿,q意味着q付出的所有的努力不会白费,比如当我用sshq程dL修改一些配|的时?#8221;
“太爽了,嘿,朋友们来看看q个全暗色的配色主题Q我新的工具链表面上看v来非常安怺”
“噢,真是扯蛋Q我?vimrc没有在我的远E主机里Q当我sshd~辑一些配|的时候,所有我的酷玩意都没?#8221;
两个月以?/span>
HJKL的移动方式习惯成自然Q你秘的失M使用鼠标的能力?br>
“我将始终使用我刚下蝲的这400个插Ӟ其是这个折叠latex语法的插Ӟ噢,哥们”
“使用箭头方向键直是自我折磨?#8221;
“再见QCaps Lock?#8221;
“p样吧Q这是忍耐的极限Qvim甚至不能让文本合适的自动换行Q我准备回到edit.com?#8221;
一q后
更少的大声说话了?br>
安装command-T插gQ每天节U成百上千次的键盘敲凅R?br>
用宏试着让你肩膀后的某个人感到印象深刻,通过在整个文仉混合大小写和参杂ROT13暗码Q回转十三位加密Q?br>
最l在某个奇迹般的一天学会在肌肉记忆里用ctrl+[来g~了腕关节炎症降临?br>
学会了移动光标,使用visual模式??---q意味着已经没有退路了?br>
“vim不支持交互性缓存??0q了Q好吧,作ؓ一名黑客,我决定给它添加这Ҏ持?#8221;
查看vim代码库,疯狂地让它向相反的方向运行?br>
“谁无论如何也需要在~辑器里弄个控制収ͼ我就是所有的unix哲学?#8221;
对周围的”vim只是一个编辑模式合q到真正的编辑器?#8220;观念感到无可忍耐?br>
因ؓ你老是在房间里令h讨厌地回?#8221;:w”,IRC的朋友们最后将你孤?/span>?br>
两年以后
vim脚本是一U对上帝的深恶痛l?br>
有点觉得emacs的从始至l的指o模式相对有点像在天堂一栗?br>
我昨晚做了一个噩梦,梦到我始l没有学会在宽屏昄器中垂直切分H口Q这h心吊胆真是够混帐ѝ?br>
偷偷地瞄一下周_l定ctrl+sC存,允许自己悄悄地松一口气?br>
意识到hjkl搜烦定位不以成为终极时间节U工P发现:python脚本,所建立的大量定制功能达到鼎盛期Q对<Leader>keyl定直到你的键盘cM于NASA指挥中心控制面板一h点繁多到荒谬的功能感觉有一点糟p?br>
“嘿,每个听的到我声音的家伙过来看看,我现在控制电脑,写博客,查邮Ӟq行试Q调试程序,览黑客新闻
所有的一切都能在vim温暖舒适,可以定制化的母体中进?#8221;
Z么你q小子不做几个后I翻来庆一下呢Q?/span>
模糊又很长某D|间之?/span>
?#8220;文本~辑中模态的明显的优?#8221;演讲l束后失M几个朋友?br>
情享受在github.com/me/vimfiles中分享自己配|的快乐中,有义务完成关于如何特立独行地安装语法查,lint工具Q自动补全,快速文查看,成吨的杀手~写Q世界上所有文件类型对应的插gQvim在每U功能的高效性上接近真正的IDE的博客帖子。开机时间日志写入服务器Q下意识C用nano来编辑配|文件。不会ؓ没有使用插g和vimrc中的更多语法而更新所有的配置文g而感到深q愧?br>
变得十分淡定Q重复性的~辑d再也难不住你Q不再去参加emacs与vim谁好谁坏的争?/span>?br>
...q就是你用vim时大脑的l形?
]]>
]]>
from:@activa
![]() |
坊间有传a?“emacs无所不能,甚至能够用来煮咖?” 煮咖啡何解?勾v了我的考究Ʋ望?br> 上网搜烦?得出几种初步l论如下: 1.q只是一U好玩的说法Q只是用来Ş容emacs功能无所不包而已? 2.Java的标志就一杯咖?用来形象的表C写代码 ![]() 3.emacs的确?a style="color: #0010ff;" >有煮咖啡的功?/a>Q有脚本能够控制自动咖啡行? |
by XGuru
is licensed under a Creative
Commons |名-非商业性?相同方式׃n 2.5 中国大陆 License.
eventop在源码中定义如下Q?/span>
其中的顺序也是大文章的?span>官方的文档中说明libevent中支持的复用机制 /dev/poll, kqueue(2), event ports, select(2), poll(2) and epoll(4).
libevent开发h员通过对各U机制的基准试Q根据性能高到低选择复用机制优先序如图所C:
从中也可以了解到不同q_机制的不l一。标准的 poll?/span> select却难以满_规模架构的需要,具体可以参?/span>Dan Kegel?/span> "The C10K problem"文档?/span>
关于机制的采用,libevent采用的是函数指针的方法?/span>
每个eventop卛_应一U?span>IO复用机制Q其中的每个函数指针都指向用该机制对事件进行操作的Ҏ?/span>
比如对应epoll?span>eventopl构中:
1.void *(*init)(…)函数指针对应的是static void * epoll_init(…)
2.?span>epoll_init()里,首先对环境变量进行检,发现没有epoll机制时立卌?span>NULL?br>3.使用epoll_create(32000)指定了连接数目的上限?span>32000个,然后?span>epollop的各个成员所需资源q行分配?br>4.最后调?span>libevent自n的信号初始化函数?/span>
选择机制q将其初始化的过E十分简单:
遍历存储机制?span>eventops数组Q按序依次试初始化,一U机制被成功初始化则立即跛_循环?/span>当然Q检系l环境可用机Ӟ选择哪种机制更合适,具体的复用机制如何用,q一切的琐碎l节你都无需兛_Q用时Q只要调?span>event_init()函数卛_?span>Libevent对各U复用机制的巧妙装避免了开发者开发大规模架构Ӟ处理跨^台时机制选择的苦恹{?