January 22, 2011
6.5 标准 I/O 开发
"本章前面几节所述的文件及I/O 读写都是基于文件描述符的。这些都是基本的I/O 控制,是不带缓存的。而本节所要讨论的I/O 操作都是基于流缓冲的,它是符合ANSI C的标准I/O处理,这里有很多函数读者已经非常熟悉了(如printf、scantf 函数等),因此本节中仅简要介绍最主要的函数。\n标准 I/O 提供流缓冲的目的是尽可能减少使用read和write调用的数量。标准I/O 提供了3 种类型的缓冲存储。\n· 全缓冲。在这种情况下,当填满标准I/O 缓存后才进行实际I/O 操作。对于驻在磁盘上的文件通常是由标准I/O 库实施全缓冲的。在一个流上执行第一次I/O 操作时,通常调用malloc就是使用全缓冲。\n· 行缓冲。在这种情况下,当在输入和输出中遇到新行符时,标准I/O 库执行I/O 操作。 这允许我们一次输出一个字符(如fputc 函数),但只有写了一行之后才进行实际I/O 操作。 当流涉及一个终端时(例如标准输入和标准输出),典型地使用行缓冲。\n· 不带缓冲。标准I/O库不对字符进行缓冲。如果用标准I/O函数写若干字符到不带缓冲的流中,则相当于用write系统的用函数将这些字 …"
January 21, 2011
6.2 Linux 中文件及文件描述符概述
"正如第1 章中所述,在Linux 中对目录和设备的操作都等同于文件的操作,因此,大大简化了系统对不同设备的处理,提高了效率。Linux 中的文件主要分为4 种:普通文件、目录文件、链接文件和设备文件。\n那么,内核如何区分和引用特定的文件呢?这里用到的就是一个重要的概念——文件描述符。对于Linux 而言,所有对设备和文件的操作都使用文件描述符来进行的。文件描述符是一个非负的整数,它是一个索引值,并指向内核中每个进程打开文件的记录表。当打开一个现存文件或创建一个新文件时,内核就向进程返回一个文件描述符;当需要读写文件时,也需要把文件描述符作为参数传递给相应的函数。\n通常,一个进程启动时,都会打开3 个文件:标准输入、标准输出和标准出错处理。这3 个文件分别对应文件描述符为0、1 和2(也就是宏替换STDIN_FILENO、STDOUT_FILENO和STDERR_FILENO,鼓励读者使用这些宏替换)。\n基于文件描述符的I/O 操作虽然不能移植到类Linux 以外的系统上去(如Windows),但它往往是实现某些I/O操作的惟一途径,如Linux中低级文件操作函数、多 …"
January 19, 2011
用PHP命令行控制脚本[CLI]
"CLI :Command-Line Script(CLI – Command-Line Interface) //翻译;命令行接口\n字串5\nPHP CLI(Command Line Interface). http://www.php.net/ 预设支援CLI 了,什么是CLI,也就是Command Line Interface,简单的说,就是让你可以在系统上当shell 来跑。 如果还不懂,简单的说,就像你写perl 程式一样: #!/usr/local/bin/php echo “Hello World!”; ?\u0026gt;\n字串3 ———————————————————官方[PHP 手册]叙述:\n从版本 4.3.0 开始,PHP 提供了一种新类型的 SAPI(Server Application Programming Interface,服务端应用编程端口)支持,名为 CLI,意为 Command Line Interface,即命令行接口。顾名思义,该 SAPI 模块主要用作 PHP 的开发外壳应用。CLI SAPI 和其它 SAPI 模块相比有很多的不同之处,我们将在本章中详细 …"
January 19, 2011
asp实现QQ号状态和QQ秀
"原理基于Xmlhttp查询http://webpresence.qq.com/getonline?qq=QQ 号\n如果在线将返回1为在线,0为不在线。 好了,\n或者:\n定义online数组,必须是online命名\n获取在线状态\n可以获取多个,必须以冒号分隔,以冒号结尾,比如:\nonline[0]=0,表示271569542离线\nonline[1]=1,表示78293657在线\nonline[2]=1,表示123456在线\n填写号码的先后顺序,分别对应数组online的0、1、2\nQQ秀怎么返回那\n这个地址http://qqshow-user.tencent.com/\n是显示QQ秀的\n下面来实现\n程序部分\n以下是代码片段:\nif request(“q”)\u0026lt;\u0026gt;”” then\ndim q,url,result\nq=request(“q”)\nurl = “http://webpresence.qq.com/getonline?qq=”\u0026amp; q\nresult=getHTTPPage(url)\nif result = 1 then\nresult=”当前在线”\nelse …"
January 16, 2011
nginx和apache下对域名进行301重定向-优化篇
"一般网站为了将网站的权重从yoursite.com自动转向到www.yoursite.com,这里我们在nginx下来实现永久跳转.\n将不带WWW的主域名重定向到带WWW的二级域名,实现两个域名合并,方法如下:\nNginx配置方法:\n方法1:\nserver {\nserver_name www.yoursite.com yoursite.com;\nif ($host != ‘www.yoursite.com’ ) {\nrewrite ^/(.*)$ http://www.yoursite.com/$1 permanent;\n}\n…\n}\n方法2:\n类似apache,单独给yoursite.com做一个虚拟主机\nserver {\nserver_name yoursite.com;\nrewrite ^(.*) http://www.yoursite.com$1 permanent;\n}\nApache虚拟主机配置:\nDocumentRoot /data/www/www.yoursite.com\nServerName www.yoursite.com\nDirectoryIndex …"
January 15, 2011
linux下which、whereis、locate、find 命令的区别
"我们经常在linux要查找某个文件,但不知道放在哪里了,可以使用下面的一些命令来搜索。这些是从网上找到的资料,因为有时很长时间不会用到,当要用的时候经常弄混了,所以放到这里方便使用。 which 查看可执行文件的位置 whereis 查看文件的位置 locate 配 合数据库查看文件位置 find 实际搜寻硬盘查询文件名称\n1、which 语法: [root@redhat ~]# which 可执行文件名称 例如: [root@redhat ~]# which passwd /usr/bin/passwd which是通过 PATH环境变量到该路径内查找可执行文件,所以基本的功能是寻找可执行文件\n2、whereis 语法: [root@redhat ~]# whereis [-bmsu] 文件或者目录名称 参数说 明: -b : 只找二进制文件 -m: 只找在说明文件manual路径下的文件 -s : 只找source源文件 -u : 没有说明文档的文件 例如: [root@redhat ~]# whereis passwd passwd: /usr/bin/passwd …"
January 14, 2011
SEO URL的优化方案【转】
"针对搜索引擎优化(SEO),页面URL的布局与呈现是影响排名和网站索引率的重要因素之一。对于搜索引擎而言,URL是它们找到一个网页的入口,URL的好坏会直接影响搜索引擎对一个网站的索引及理解程度。对于用户,URL会直接显示在搜索结果中,从而影响人们的点击意愿。因此一个好的URL结构无论是对搜索引擎,还是用户,都有着非常重要的作用。在本文中,我们将详细探讨针对SEO的URL优化技巧,但同时也想提醒大家,对于一个现有的网站,URL的改动需要谨慎。URL的改动会牵扯到原有URL权重的转移等问题,因此除非在万不得已的情况下,尽量不要改动现有的URL。但如果你是在策划一个新的网站或者生成新的页面,那么就让我们来探讨一下如何得到一个完美的URL吧。 1. URL愈短愈好 无论是搜索引擎,还是浏览者,都喜欢简短的URL。URL的层级不宜过多,尽量控制在4级之内。虽然搜索引擎仍然会抓取四级之后的页面,但页面的权重会大大降低。\n例如华为中文网站的“移动宽带”( http://www.huawei.com/cn/core_network/internet_mobility _solutions.do )页 …"
January 13, 2011
3.6.4 Make管理器的使用
"使用Make管理器非常简单,只需在make命令的后面键入目标名即可建立指定的目标,如果直接运行make,则建立Makefile中的第一个目标。\n此外 make 还有丰富的命令行选项,可以完成各种不同的功能。下表3.17 列出了常用的make命令行选项。\n表3.17 make的命令行选项\n命 令 格 式 含 义\n-C dir 读入指定目录下的Makefile\n-f file 读入当前目录下的file文件作为Makefile\n-i 忽略所有的命令执行错误\n-I dir 指定被包含的Makefile所在目录\n-n 只打印要执行的命令,但不执行这些命令\n-p 显示make变量数据库和隐含规则\n-s 在执行命令时不显示命令\n-w 如果make在执行过程中改变目录,则打印当前目录名"
January 13, 2011
3.6.3 Makefile规则
"Makefile 的规则是Make 进行处理的依据,它包括了目标体、依赖文件及其之间的命令语句。一般的,Makefile 中的一条语句就是一个规则。在上面的例子中,都显示地指出了Makefile中的规则关系,如“$(CC) $(CFLAGS) -c $\u0026lt; -o $@”,但为了简化Makefile的编写,make还定义了隐式规则和模式规则,下面就分别对其进行讲解。\n1.隐式规则\n隐含规则能够告诉make 怎样使用传统的技术完成任务,这样,当用户使用它们时就不必详细指定编译的具体细节,而只需把目标文件列出即可。Make 会自动搜索隐式规则目录来确定如何生成目标文件。如上例就可以写成:\nOBJS = kang.o yul.o\nCC = Gcc\nCFLAGS = -Wall -O -g\nsunq : $(OBJS)\n$(CC) $^ -o $@\n为什么可以省略后两句呢?因为Make的隐式规则指出:所有“.o”文件都可自动由“.c”\n文件使用命令“$(CC) $(CPPFLAGS) $(CFLAGS) -c file.c –o file.o”生成。这样“kang.o”和“yul.o”就会分 …"
January 13, 2011
3.6.2 Makefile变量
"上面示例的Makefile在实际中是几乎不存在的,因为它过于简单,仅包含两个文件和一个命令,在这种情况下完全不必要编写Makefile 而只需在Shell 中直接输入即可,在实际中使用的Makefile往往是包含很多的文件和命令的,这也是Makefile产生的原因。下面就可给\n出稍微复杂一些的Makefile进行讲解:\nsunq:kang.o yul.o\nGcc kang.o bar.o -o myprog\nkang.o : kang.c kang.h head.h\nGcc –Wall –O -g –c kang.c -o kang.o\nyul.o : bar.c head.h\nGcc – Wall –O -g –c yul.c -o yul.o\n在这个Makefile中有3 个目标体(target),分别为sunq、kang.o和yul.o,其中第一个目标体的依赖文件就是后两个目标体。如果用户使用命令“make sunq”,则make管理器就是找到sunq目标体开始执行。\n这时,make会自动检查相关文件的时间戳。首先,在检查“kang.o”、“yul.o”和“sunq”3 个文件的 …"