- 博客(46)
- 资源 (2)
- 收藏
- 关注
原创 强大的UNIX命令行
我们传统的写程序办法是造单一而功能全面的程序,设法在一个程序里提供能够全面满足需求的功能,这样的做法会造成程序庞大而复杂,可维护性降低。Windows上的程序通常如此,具有全面的功能,基本上不考虑与其他程序的配合,比方说有两个程序都需要分页,他们会各自开发一个分页模块,而不是去寻求共用分页功能。在UNIX世界里的做法与之相反,每个程序只做单一的功能,除此之外不做任何多余的事情。复杂的功能通过多个程序之间配合完成(通过管道)。相信经常使用UNIX命令行工具的人会经常为它的强大和灵活而感到深深的震撼和佩服。举个
2010-12-24 10:39:00
1438
原创 SICP第二章40~42题解答
;2.40;flatmap中的proc应该是给定元素x,能做出多个含x的序对序列的过程(define (flatmap proc seq) (accumulate append '() (map proc seq)))(define (enumerate-interval low high) (if (> low high) '() (cons low (enumerate-interval (+ low 1) high))));(enumerate-interval
2010-08-26 22:16:00
1259
原创 SICP第一章及第二章部分习题解答
这些是以前做好的,先贴上来。第一章部分习题:;1.34(define (f g) (g 2));(f square);(f (lambda (z) (* z (+ z 1))));(f f);(define (search f neg-point pos-point) ( let ((midpoint (average neg-point pos-point))) (if (close-enough? neg-point pos-point)
2010-06-04 22:05:00
1376
原创 SICP习题
最近在看《计算机程序的构造和解释》,感觉很不错,打开眼界。为了从中获得最多的收益,打算把书中的习题都做了,又怕坚持不下来。我决定把做完的习题贴到博客上,可以鼓励自己,边做边贴,直到全部做完为止。
2010-06-04 16:38:00
1214
原创 一个简单的计算器程序
前段时间写了一个简单的计算器程序,可以支持+-*/()和数字构成的表达式,每个表达式以分号结束,运行时向下面这样: $ ./a.out (2+3)*(-2+5);15.000 有兴趣的可以编译后玩玩,源代码如下:#include #include #define NONE -1enum {NUM=256};int lookahead;double tok
2010-01-04 15:20:00
1823
原创 用信号量做进程同步解决生产者和消费者遇到的奇怪问题
看了APUE关于信号量部分的内容后,决定用它来实现一下生产者消费者问题,程序写好运行后,总是有问题,生产者每调用32767次就会报错,检查了semop的返回值为ERANGE。不知道是什么原因。搜到一篇具有同样问题的帖子,帖子的解答时在用信号量设置undo flag后,在每个进程中对信号量的PV操作必须“对称”,由于生产者消费者是两个不同的进程,对满槽数和空槽数的PV操作不是对称的,导致und
2009-10-19 17:43:00
2004
转载 IPCRM命令介绍
ipcrm 命令 用途 删除消息队列、信号集、或者共享内存标识。 语法 ipcrm [ -m SharedMemoryID ] [ -M SharedMemoryKey ] [ -q MessageID ] [ -Q MessageKey ] [ -s SemaphoreID ] [ -S SemaphoreKey ] 描述 ipcrm 命令删除一个或更
2009-10-16 17:20:00
1442
转载 dd命令详解之linux下创建一定大小文件命令
本文讲解了linux创建文件命令:dd。使用dd这个linux命令可以创建一定大小文件。 linux创建文件命令:dd命令 把指定的输入文件拷贝到指定的输出文件中,并且在拷贝的过程中可以进行格式转换。语法: CODE:[Copy to clipboard]dd 〔选项〕 QUOTE: if =输入文件(或设备名称)。 of =输出文件(或设备名称)。 ibs = bytes 一次读取bytes字节
2009-10-16 10:56:00
1575
转载 yum介绍(一种管理软件包的工具)
1)yum是什么: * yum = Yellow dog Updater, Modified * 主要功能是更方便的添加/删除/更新RPM包. * 它能自动解决包的倚赖性问题. * 它能便于管理大量系统的更新问题 2)yum特点: * 可以同时配置多个资源库(Repository) * 简洁的
2009-07-23 14:02:00
1242
转载 loser们的共同特征
互联网提供了一个很好的窗口,使我们可以观察形形色色的人们,那么看到最多的,大概就是loser了。这也符合社会人群构成的分布,失意者往往是大多数,成功者往往是极少数。 怎样摆脱失意,成就自己,不妨先看看loser有哪些共性,再看看自己占了几条。loser共性之一, 怨天尤人 别人有个好老板,我们老板真抠门;别人有背景,我们是草根;等等,把自己的无能用
2009-07-18 21:24:00
1220
转载 遇到问题为什么应该自己动手
1. 遇到问题寻找捷径为什么是很聪明的做法我们在生活中总是在不停地试图做最优经济决策,只不过很多时候我们为适应远古社会而进化的大脑未必适用于现代工业社会(《MeanGenes》,《进化心理学》,《How We Decide》),所以很多时候我们可以在超市为选择哪一卷卫生纸斟酌半天(《PredictablyIrrational》),却在面对生活中重大抉择的时候轻易就随波逐流(《Par
2009-07-07 13:15:00
1003
转载 Notes on Programming in C
Introduction Kernighan and PlaugersThe Elements of Programming Stylewas an important and rightly influential book. Butsometimes I feel its concise rules were taken as a
2009-07-04 10:22:00
1305
转载 Linux/Unix 新手和专家教程
你正在找一些高质量的Linux 和 UNIX 的教程吗?如果是,这篇文章会告诉你到哪去找到这些教程。这里我们将给出超过30个相当的不错的 Linux 和 UNIX 在线的教程。需要大家注意的是,他们都是英文的,也许有一些也经被翻译到了中文社区,你可以搜索一下。但不管怎么样,我的建议是应该尽可能的去阅读英文。 Linux 和UNIX 的新手培训教程 免费的新手Linux教程
2009-07-02 10:06:00
1129
转载 朱棣文在哈佛大学毕业典礼上的演讲
朱棣文在哈佛大学毕业典礼上的演讲演说日期:2009年6月4日译者:阮一峰原文网址:http://www.news.harvard.edu/gazette/2009/06.04/chu_speech.html在线观看:http://vimeo.com/5007822音频下载:http://harvardmag.com/media/2
2009-07-02 09:40:00
1802
转载 php在apache中安装模式的区别:fastcgi和mod_php
说到fastCgi就不得不说Cgi。 CGI英文全称是 Common GatewayInterface,通常翻译为共同网关接口,是HTTP服务器与机器上的其他程序进行通信的一个接口。这个“其他程序”可以使用任何计算机语言来编写,它通过CGI这个接口从HTTP服务器取得输入,然后把运行的结果又通过CGI这个接口交给HTTP服务器,而HTTP服务器把这个结果送给浏览器。
2009-06-10 15:21:00
2675
转载 一个简单聊天室的两种实现 (fcntl 和 select)(转)
在互联网相当普及的今天,在互联网上聊天对很多“网虫”来说已经是家常便饭了。聊天室程序可以说是网上最简单的多点通信程序。聊天室的实现方法有很多,但都是利用所谓的“多用户空间”来对信息进行交换,具有典型的多路I/O的架构。一个简单的聊天室, 从程序员的观点来看就是在多个I/O端点之间实现多对多的通信。其架构如图一所示。这样的实现在用户的眼里就是聊天室内任何一个人输入一段字符之后,其他用户都可以得到这一
2009-06-01 17:10:00
1115
转载 UNIX 生产力技巧
在日常的办公环境中使用 UNIX? 并不一定是非常笨拙的。使用 UNIX Shell 的强大功能和可用的系统工具可以极大地提高您在办公中的工作效率。引言UNIX? 命令行的语言以功能全面而著称,通过使用各种小型工具、实用程序,并在 Shell 中将它们组合在一起执行,您可以指定许多精确的和复杂的任务。但是,当在办公环境中使用它们时,同样的这些工具可能成为提高您工作效率的功能
2009-06-01 09:48:00
1175
转载 高性能网络编程
http://www.ibm.com/developerworks/cn/aix/library/au-highperform1/http://www.ibm.com/developerworks/cn/aix/library/au-highperform2/
2009-05-29 00:24:00
1159
转载 最后的讲座——真正实现你的童年梦想(lead your life)
简介:2007 年9 月18 日,身患胰腺癌、生命还剩几个月的兰迪·波许(RandyPaush)教授在他的母校卡内基·梅隆大学做了一场风靡全美的题为《真正实现你的童年梦想》的讲座,引起了旋风般的反应。这是关于这个讲座的视频专辑,共有四个。经典话语:如果你非常想要某一样东西,而你努力过了却又没有得到它,那么你收获的就是宝贵的经验. 兰迪教授最后的公开演讲兰迪教授的
2009-05-23 19:01:00
1754
转载 卡内基-梅隆大学的编程竞赛
几年前,卡内基-梅隆大学(CMU)的计算机科学系有一个常规性的小型编程竞赛,参赛对象是刚入学的研究生。竞赛的目的是让这些新的研究人员得到一些关于计算机科学系的直接经验,并让他们展示自己的强大潜力。CMU在计算机领域的研究历史悠久,可以追溯到计算机的先驱时代,它在这个邻域所取得的成就可以说是非同凡响。所以,对于CMU举办的编程竞赛,其水准可想而知。比赛的形式每年都不一样,其中有一年非常简
2009-05-23 18:51:00
1588
转载 wikipedia讲http keepalive选项作用的图
HTTP_persistent_connection.svg keepalive的时间范围内,这些http请求共用同一个TCP connection. 如果keepalive为off的话,则每次http请求都需要新建tcp connection摘自wikipedia:HTTP persistent connections, also called HTTP keep-ali
2009-05-23 13:50:00
1659
转载 在ip层中只对数据报头而不对数据计算校验和的好处是什么?缺点是什么?
因为网络层是“尽最大努力完整的传输数据包”,差错检测已由数据链路层实现,IP层没必要再进行一次校验。 优点就是:因为不负责差错检测和纠错,所以可获得较高的传输性能。 缺点就是:因为IP层不负责差错检测,那么错误检测只能在传输层或应用层被发现,使纠正错误的时间增加了。 试想一下,如果两台PC跨INTERNET通信,之间隔了很多台路由器,PC1给PC2发了个数据包,到达第一台路
2009-05-20 11:18:00
4527
转载 秘诀工作效率与薪水翻番
一、全心投入工作(work harder at what you do):当你工作时,一定要全心投入,不要浪费时间,不要把工作场所当成社交场合。光这个秘诀,如果你能长期实践,就能使你的生产力加倍。 二、工作步调快(work faster):养成一种紧迫感,一次专心做一件事,并且用最快的速度完成,之后,立刻进入下一件工作。养成这习惯后,你会惊讶地发现,一天所能完成的工作量居然是如此地惊人。
2009-05-16 21:32:00
698
转载 如何查看一个进程打开了哪些文件?
今天又看到了这个命令,这个命令简单的讲可以用来查看一个进程打开了哪些文件,很实用的一个命令。直接lsof,输出的是全部进程打开的全部文件,lsof -P 18400 (按照进程ID查看)lsof -d type (按照FD的类型查看)lsof -i 4 (查看进程打开的网络连接,使用IPV4协议)lsof -i :80 (查看进程打开的网络连接,端口号为80)lsof -i
2009-05-16 15:25:00
4880
原创 一个好用的linux命令:strace
strace可以用来跟踪可执行程序,列出可执行程序使用的系统调用,当程序崩溃时,可用它来得到一定的启发。看看wikipedia的描述:strace is a debugging utility in Linux to monitor the system callsused by a program and all the signals it receives, similar to
2009-05-15 10:37:00
1588
转载 半同步半异步模式以及Leader_Follwer模式
这里提到的两个设计模式都是用于高并发系统(例如一个高性能的网络服务器)的。这里我只是简单地提一下: 1.半同步/半异步(half-sync/half-async): 在网上一份资料中引用了一本貌似很经典的书里的比喻:” 许多餐厅使用 半同步/半异步 模式的变体。例如,餐厅常常雇佣一个领班负责迎接顾客,并在餐厅繁忙时留意给顾客安排桌位,为等待就餐的顾客按序排队是必要的。领班由所有顾客“共
2009-05-07 11:01:00
980
原创 通过mysql client API或者memcache client API来学习API设计
可以通过mysql client API或者memcache client API来学习API设计
2009-05-06 15:10:00
722
转载 亿万用户网站MySpace的成功秘密
高速增长的访问量给社区网络的技术体系带来了巨大挑战。MySpace的开发者多年来不断重构站点软件、数据库和存储系统,以期与自身的成长同步——目前,该站点月访问量已达400亿。绝大多数网站需要应对的流量都不及MySpace的一小部分,但那些指望迈入庞大在线市场的人,可以从MySpace的成长过程学到知识。用户的烦恼Drew,是个来自达拉斯的17岁小伙子,在他的MySpace个人资料页上,可
2009-05-06 15:06:00
892
原创 douglas schmidt的主页上一些关于网络编程方面的资料
http://www.cs.wustl.edu/~schmidt/tutorials-ace.html
2009-05-06 11:25:00
784
转载 TCP状态转换图
这个图n多人都知道,它对排除和定位网络或系统故障时大有帮助,但是怎样牢牢地将这张图刻在脑中呢?那么你就一定要对这张图的每一个状态,及转换的过程有深刻地认识,不能只停留在一知半解之中。下面对这张图的11种状态详细解释一下,以便加强记忆!不过在这之前,先回顾一下TCP建立连接的三次握手过程,以及关闭连接的四次握手过程。1、建立连接协议(三次握手) (1)客户端发送一个带SYN标志的TCP
2009-05-05 17:22:00
15659
1
转载 关于Perl里面正则规范
关于Perl正则的一些规范,有很多很少了解的知识,这里一一介绍过来:1,定界符定界符是用于定界运算符各部分的字符,任何非字母或数字字符、非空白字符都可做定界符。比如:=~ m/there/;=~ s/there/here/;=~ m#there#;=~ s#there#here#;=~ m(there);=~ s
2009-05-04 14:12:00
1096
转载 Makefile的编写
概述什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。特别在Unix下的软件编译,你就不能不自己写makefile了,会不会写make
2009-05-04 12:01:00
1154
转载 GCC使用详解
在为Linux开发应用程序时,绝大多数情况下使用的都是C语言,因此几乎每一位Linux程序员面临的首要问题都是如何灵活运用C编译器。目前Linux下最常用的C语言编译器是GCC(GNU Compiler Collection),它是GNU项目中符合ANSIC标准的编译系统,能够编译用C、C++和ObjectC等语言编写的程序。GCC不仅功能非常强大,结构也异常灵活。最值得称道的一点
2009-05-04 11:36:00
1139
转载 在Linux上,如何知道一个可执行文件是否包含调试信息呢?
请教,在Linux上,如何知道一个可执行文件是否包含调试信息呢?我的意思是是否该文件是使用如gcc -g 这样的参数编译的。2楼 发表于 2008-12-3 15:44 nm -a binary_file3楼 发表于 2008-12-3 15:46 gdb试一下就知道了4楼 发表于 2008-12-3 15:47 同意LS的,直接gdb测试一下就知道了。5楼 发表于 2008
2009-05-04 10:02:00
16385
原创 如何用正则表达式表示非“字符串”
刚才遇到这样一个问题,一个文件目录下有不少文件,有些是.txt后缀结尾的,我想选出所有非.txt结尾的文件来,linux下自然是想用grep来解决这个问题,首先:ls|grep [^/.txt]$ 但是发现这样做是不对的,[]表示的是或,^表示的是否定,其实这是匹配了结尾非.、或非t、或非x的文件,假设又一个文件名为a.x,这个文件也将被排除掉,这不是我想要的结果。其实可以用-v参
2009-05-03 14:28:00
8520
转载 使用 libevent 容易犯的一个错误
使用 libevent 的一个代码片段如下:struct event ev_accept;event_set(&ev_accept, listen_fd, EV_READ|EV_PERSIST, on_accept, NULL);event_add(&ev_accept, NULL);这段代码是错误的,因为 ev_accept 是在栈上分配的临时变量,但是 ev_acc
2009-05-03 13:38:00
2078
转载 Libevent examples
Non-blocking DNS example#include #include /* For inet_ntoa. */#include #include #include #include #include #include #include #include voidusage(void){ fprintf(stderr, “USAGE: evdns-demo /
2009-04-30 16:16:00
3812
转载 apache的配置优化
【APACHE的工作方式】prefork模式(默认)这个多路处理模块(MPM)实现了一个非线程型的、预派生的web服务器,它的工作方式类似于Apache 1.3。它适合于没有线程安全库,需要避免线程兼容性问题的系统。它是要求将每个请求相互独立的情况下最好的MPM,这样若一个请求出现问题就不会影响到其他请求。这个MPM具有很强的自我调节能力,只需要很少的配置指令调整。最重要的是将MaxCli
2009-04-29 16:15:00
1439
原创 一个好办法:用小例子来实验语言特性,或者是工具特性
有些语言(比如C++)或者工具太复杂,一个人就算是神童,也不能记得它的每一项特性,那么怎么才能保证用到一项新特性的时候信心百倍呢?工作中养成好的习惯,比如在大的程序中要用到一项新的特性,用了以后出错怎么办?所以先写个小程序测试一下新的特性是增加信心的好办法。 最近在用gdb调试程序,有些gdb的特性不清楚导致调试不是很顺利,每次有不明白的地方,我要么上网查查,要么写小程序做实验,
2009-04-28 15:27:00
754
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人