- 博客(19)
- 收藏
- 关注
原创 编译器是怎样工作的?用lex和yacc 写一个计算器(2)
幸运的是-----------------------------------------现在你可以看明白了上边的规则,问题又来了,我们怎么来处理这种语法的规则呢?该不会要自己写一个人肉编译吧?该不会要自己写一个人肉编译吧?该不会要自己写一个人肉编译吧?哈哈,不要担心,我们有现成的工具,它的名字叫另一种C编译器(yacc , yet another C compiler)
2013-04-17 22:44:29
1601
原创 编译器是怎么工作的?使用yacc 和lex 写一个计算器(1)
编译器是怎么工作的?使用yacc 和lex 写一个计算器前天开始学yacc 和lex编译器,找了一通文档,发现没有好的文档,都是一上来就给初学者来个下马威讲高深的玩意,所以我决定写一篇从初学者的观点来看编译器的文章。让我们从计算器开始-----------------------------一听说要学习编译器,马上有同学想到C++,就会痛苦不堪,那一大坨** ,
2013-04-16 17:13:15
1607
原创 使用Python将Excel文件导入到Oracle数据库里
由于最近经常需要从Excel中导入数据到Oracle中,就写了个脚本专门干这个说明:这个脚本需要xlrd库和cx_Oracle 库才能正常运行,下载安装方法就不再多说使用方法:insert_excel.py db=usr/passwd@db excel=all_data.xlsx sql="insert into aa values(:n1, :n2, to_number(:n
2013-04-11 02:38:20
3562
原创 mail设置引起的sendmail资源占用过高问题
前天发现某生产系统占用过高,后发现是sendmail进程过多。查看/var/spool/mqueue邮件目录,ls半分钟无反应,sendmail -bp发现unsafe map file /etc/mail/aliases根据http://www.sendmail.org/~ca/email/english.html 提示,发现居然有人把/etc/的权限设置错误,导致邮件消息文件N
2012-05-07 11:00:42
2544
原创 python对文件加载到内存进行索引缓存
前几天写了一个函数,加载文件到内存里进行查找(扔到数据库里有点慢,不想那么搞)。数据是格式规范的数据,用'|'分隔,按列进行索引:比如,我们对以下数据进行索引:1|2|3#commenta|bc可以选择使用第一列索引:>>> index_file(('1|2|3', 'a|b|c', ' # a comment line '), vertical_sep, '/' ,
2012-05-03 09:38:56
1583
原创 协程与并行(2/3):协程,管道和数据流
代码在这里github 上查看代码和笔记第二部分 : 协程,管道和数据流协程可以用来构建管道,只用把协程串起来并通过send推送数据就行了这种管道(由协程构成的)需要要一个初始的数据源(一个生产者),源驱动了整个的管道链像这样:def source(target): while not done:item = produce_an_item(
2012-02-06 21:59:42
1439
原创 python与协程(1/3):生成器与协程
本文主要是从 A Curious Course on Coroutines and Concurrency 作笔记而来。1,生成器:生成器是一个包含yield表达式的函数,这个函数与普通函数不同--它返回一个生成器--首次执行时并不真正运行,只是返回一个生成器--首次对这个生成器调用内置的next函数(python2.6+ 使用 generator. next()),
2012-02-05 10:22:58
2344
原创 一个并发调用ping 的python 脚本
在github上查看源代码使用方法:python p.py 132.35.98.6 132.35.98.7 132.35.98.10 132.35.98.11 132.35.98.12 132.35.98.8 g.cn输出{'132.35.98.12': '9999', '132.35.98.10': '9999', '132.35.98.11': '9999',
2011-07-25 22:22:48
1991
原创 合并排序与分治法
合并排序是所说的分治法,分治法一般要3步: 1,分解,将问题n分解为 两个 n/2 直到我们能直接解决的数。 2,解决问题。 3,合并,将分解以后的问题。
2011-04-16 02:09:00
1018
原创 第一个python 程序
有人在论坛 上问 将日志格式化的方法,刚好学python,就拿这个练手了: 09:55:54: ERROR1 /tmp/error/log.3 50 timesMon Jun 28 00:00:53 200909:55:54: ERROR1 /tmp/error/log.3 50 times09:56:09: ERROR1 /tmp/error/log.14 50 times10
2009-07-14 23:27:00
695
转载 读懂一本书,精于一件事
到青少年中去测问:你心中最为向往也最为恐惧的是什么?回答得最多的是:我将来干什么?做人难,首难在安身立命。这么大的世界,这么小的个人;大世界人太多,这么多的人与人既互相联系又互相排挤。时空莫逆,来路莫测。人生在世,要吃要喝要穿要住要建功立业要养家……千难万难,第一难确实就是如何给自己在这个拥挤的世界上找到属于自己的一席之地。难怪青少年最向往的是它,最怕的也是它——我将来干什么?若将这题目
2009-05-08 17:10:00
722
原创 使用lbaby筛,求10亿之内的所有素数(Yet Another Prime Algorithm)
求10亿之内的所有素数原题目在这里:http://bbs2.chinaunix.net/thread-1433650-1-1.html1,第一步思考:只有个位数是 1 ,3 ,7 , 9 的数才可能是素数 -- (结论1)根据这个结论,可以对 10亿内的自然数作如下 划分:设 集合G为:{ 个位数 为1,3,7,9}集合X为:{个位数 为 :0, 2, 4
2009-04-22 22:48:00
2880
3
原创 《一一》中的一段
成群的湿空气,受到地热会上升,到了温度低冷的高空,就凝结成小水珠,这就是大家现在看到这些美丽的云。他们跟随着大自然的节拍,不声不响的在我们头上,跳着美丽的舞蹈。我们常常都没注意而错过了,他们的舞越跳越高,不知不觉的把自己变成了小冰粒,然后穿过云层,飞向地面。在这飞翔的过程里,小冰粒在空中留下了正电,把自己变成负电的雨滴,两种对立而又相吸的能量在小雨滴冲向地面的同时不断累计,互相越来越不
2009-01-25 22:42:00
808
原创 一些常用的shell模式
一些常用的shell模式在shell中有一些模式经常使用,暂时总解了几点:并行适用性:多进程之间基本没有相互联系的情况下,比如:有很多的文件需要解压就可以根据cpu(或核)的多少,将进程启动到后台,然后,检测进程数上限,自适应地启动新进程或睡眠等待任务。 这种模式在多核或多路CPU上充分利用计算资源/加快程序执行速度时尤其有用。for f in `cat $1`do gzip -d $f &
2008-10-05 23:11:00
3365
原创 pa-risc 2.0 上的地址对齐问题
前几天写了一个程序,在Linux 上运行正常,在HP-UX B11.23 上却是bus error (core dump)后来发现是由于地址对齐引起的:$ cat pad.c#include int main(void){ char a[1024] = {0}; *(uint64_t*)(a+3) = 123;//让64 位整数不在4的整数地址上起始}$ cc -o pad pad.c
2008-09-18 22:12:00
1261
2
原创 close stdin/stdout 引发的BUG
close stdin/stdout 引发的BUG大概是去年初的时候的一件事,客户说有一个生产系统上的程序行为不正常,总是在日志里出现一些乱糟糟的信息,仔细交流之后,客户说只在配置文件是某种状态时才会出现。看了一下,目标就锁定在那个调用的close函数上了后来想了一想,猛然想起来了:“open 一个文件时,它的文件描述符总是最小的可用值"代码示例如下:[of@lbaby workspace]$ c
2008-09-17 22:36:00
1573
原创 c 语言中的函数参数
很久以前写的旧文,不改了,直接发出来---------------这个帖子分以下几个部分: 1,声明和定义 2,参数传递方法 3,参数入栈顺序 4,指针作为参数 5,数组作为参数 6,结构体作为参数 1,函数声明和定义: 首先,分清楚声明和定义。 在一个函数声明中,你需要给出函数名,函数返回值类型
2008-06-29 20:33:00
1637
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人