摘要: 1.题库与网站资源 题库-在线提交系统(Online Judge)简介 下面是几个比较大的在线提交系统(Online Judge)里面有大量历年的竞赛题目,注册一个ID,然后用自己熟悉的语言(一般有Pascal/C/C++/Java)写好源代码提交即可,会实时返回信息告诉你是否正确。采用黑箱测试,系统里有一套标准的输入输出数据(对外保密,而且通常数据很多很怪),你的程序的输出和标准输出完全符合即可。 常见的返回信息有 AC(Accepted,通过)、WA(Wrong Answer,输出有错误)、TLE(Time Limit Exceeded,超时)、MLE(Memory Limit Ex 阅读全文
posted @ 2010-12-17 15:06 flyxiang 阅读(196) 评论(0) 推荐(0) 编辑
摘要: 第一步,在线安装中文语言支持包:sudo apt-get install xpdf-chinese-simplified xpdf-chinese-traditional安装完后打开pdf文档,如果发现仍然是乱码,进行第二步,安装安装poppler-data:从8.04开始,源中开始提供poppler-data安装包的支持,可以直接输入命令sudo apt-get install poppler-data安装sudo make install datadir=/usr/share在我这里,上一步安装完成后打开pdf文档发现中文乱码都变成方块了,于是进行第三步,删除字体sudo rm /etc/ 阅读全文
posted @ 2010-12-17 15:00 flyxiang 阅读(477) 评论(0) 推荐(0) 编辑
摘要: vi编辑器是所有Unix及Linux系统下标准的编辑器,他的强大不逊色于所有最新的文本编辑器,这里只是简单地介绍一下他的用法和一小部分指令。由于对Unix及Linux系统的所有版本,vi编辑器是完全相同的,因此你能在其他所有介绍vi的地方进一步了解他。Vi也是Linux中最基本的文本编辑器,学会他后,你将在Linux的世界里畅行无阻。1、vi的基本概念  基本上vi能分为三种状态,分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下: 1) 命令行模式command mode)  控制屏幕光标的移动,字 阅读全文
posted @ 2010-12-17 14:59 flyxiang 阅读(165) 评论(0) 推荐(0) 编辑
摘要: 1. 备份系统我该如何备份我的Ubuntu系统呢?很简单,就像你备份或压缩其它东西一样,使用TAR。和Windows不同,Linux不会限制root访问任何东西,你可以把分区上的所有东西都扔到一个TAR文件里去!首先成为root用户:$ sudo su然后进入文件系统的根目录(当然,如果你不想备份整个文件系统,你也可以进入你想要备份的目录,包括远程目录或者移动硬盘上的目录):# cd /下面是我用来备份系统的完整命令:# tar cvpzf backup.tgz –exclude=/proc –exclude=/lost+found –exclude=/backup.tgz –exclude= 阅读全文
posted @ 2010-12-17 14:58 flyxiang 阅读(444) 评论(0) 推荐(1) 编辑
摘要: shell 编程中使用到得if语句内判断参数   –b 当file存在并且是块文件时返回真  -c 当file存在并且是字符文件时返回真  -d 当pathname存在并且是一个目录时返回真  -e 当pathname指定的文件或目录存在时返回真  -f 当file存在并且是正规文件时返回真 -g 当由pathname指定的文件或目录存在并且设置了SGID位时返回为真  -h 当file存在并且是符号链接文件时返回真,该选项在一些老系统上无效  -k 当由pathname指定的文件或目录存在并且设置了“粘滞”位时返回真  -p 当file存在并且是命令管道时返回为真  -r 当由pathnam 阅读全文
posted @ 2010-12-17 14:53 flyxiang 阅读(239) 评论(0) 推荐(0) 编辑
摘要: 4. sed 附加/替换:sed "/xmdh/a\daoyou" file 把含有xmdh的行的结尾附加daoyou(有换行)sed 's/$/ daoyou/' file把每行的结尾附加daoyou(在同一行)sed '/test/s/$/ daoyou/' file把包含test行的结尾附加daoyou(在同一行)sed '10s/$/ daoyou/' file把第10行的结尾附加daoyou(在同一行)sed "s/xmdh/daoyou/g" file把xmdh替换成daoyoused"s/xmdh/daoyou/;G"file把xmdh替换成daoyou并增加一个换行cat us 阅读全文
posted @ 2010-12-17 14:52 flyxiang 阅读(301) 评论(0) 推荐(0) 编辑
摘要: shell入门基础  1.建立和运行shell程序什么是shell程序呢? 简单的说shell程序就是一个包含若干行shell 或者linux命令的文件.象编写高级语言的程序一样,编写一个shell程序需要一个文本编辑器.如VI等.在文本编辑环境下,依据 shell的语法规则,输入一些shell/linux命令行,形成一个完整的程序文件.执行shell程序文件有三种方法(1)#chmod +x file(2)#sh file(3)# . file在编写shell时,第一行一定要指明系统需要那种shell解 释你的shell程序,如:#! /bin/bash,#! /bin/csh,/bin/t 阅读全文
posted @ 2010-12-17 14:51 flyxiang 阅读(200) 评论(0) 推荐(0) 编辑
摘要: IP 协议是在网络层的协议.它主要完成数据包的发送作用. 下面这个表是 IP4 的数据包格式0 4 8 16 32--------------------------------------------------|版本 |首部长度|服务类型| 数据包总长 |--------------------------------------------------| 标识 |DF |MF| 碎片偏移 |--------------------------------------------------| 生存时间 | 协议 | 首部较验和 |----------------------------- 阅读全文
posted @ 2010-12-17 14:50 flyxiang 阅读(665) 评论(0) 推荐(0) 编辑
摘要: 服务器端程序的编译gcc -o file_server file_server.c客户端程序的编译gcc -o file_client file_client.c服务器程序和客户端程应当分别运行在2台计算机上.服务器端程序的运行,在一个计算机的终端执行./file_server客户端程序的运行,在另一个计算机的终端中执行./file_client 运行服务器程序的计算机的IP地址根据提示输入要传输的服务器上的文件,该文件在服务器的运行目录上在实际编程和测试中,可以用2个终端代替2个计算机,这样就可以在一台计算机上测试网络程序,服务器端程序的运行,在一个终端执行./file_server客户端程 阅读全文
posted @ 2010-12-17 14:36 flyxiang 阅读(520) 评论(0) 推荐(0) 编辑
摘要: 编译方式:gcc -pthread -o chat_server chat_server.c#include pthread.h#include sys/errno.h#include "chat.h"#define LENGTH_OF_LISTEN_QUEUE (20)#define USER_AMOUNT_MAX (50)#define NOT_LOGIN (-1)#define NOT_IN_USE (NOT_LOGIN -1)#define USER_ID_SIZE (ID_SIZE)typedef struct user{ char user_ID[USER_ID_SIZE] 阅读全文
posted @ 2010-12-17 14:33 flyxiang 阅读(742) 评论(0) 推荐(1) 编辑
摘要: 编译方式:gcc -o chat_client chat_client.c#include "chat.h"#include unistd.h // for fork#include sys/signal.h // for signal#include sys/wait.h // for wait#include fcntl.hstatic char user_ID[BUFFER_SIZE]; //一个很大的缓冲区,实际ID_SIZE内有效static char password[BUFFER_SIZE]; //一个很大的缓冲区,实际PASSWORD_SIZEE内有效stati 阅读全文
posted @ 2010-12-17 14:32 flyxiang 阅读(615) 评论(0) 推荐(0) 编辑
摘要: 服务器端的实现:#include sys/types.h#include sys/socket.h#include netinet/in.h//sockaddr_in等结构的定义#include netdb.h//addrinfo等结构的定义#include stdio.h#include unistd.h#include dirent.h#include string.h#include sys/stat.h#include fcntl.h#include stdlib.h#define TRUE 1#define LISTEN_PORT 3499 阅读全文
posted @ 2010-12-17 14:27 flyxiang 阅读(865) 评论(0) 推荐(0) 编辑
摘要: 学习了LINUX下用C语言遍历文件夹,一些心得struct dirent中的几个成员:d_type:4表示为目录,8表示为文件d_reclen:16表示子目录或文件,24表示非子目录经过本人亲自试验发现:d_reclen:16表示子目录或以.开头的隐藏文件,24表示普通文本文件,28为二进制文件,等等d_name:目录或文件的名称具体代码如下,仅供参考#include stdio.h#include dirent.h#include sys/stat.hvoid List(char *path){ struct dirent* ent = NULL; DIR *pDir; pDir 阅读全文
posted @ 2010-12-17 14:15 flyxiang 阅读(6595) 评论(0) 推荐(0) 编辑
摘要: 刚才转载了一篇文章《情景分析“C语言的const关键字”》,csdn上也有一篇《Const用 法小结》,可能很多人看了这两篇文章之后就对const绝望了,太复杂了。其实const并不复杂,它是有规则的,不然设计语言的语法就不好弄了(大家看 一下编译原理就好理解了)。下面就说一下我对const的理解:我觉得,语言里面的关键字,都有一个修饰域(即这个关键字修饰那块范围),还有一个修饰方向(即从 那里开始修饰)。对于c类似的语言(c,c++,java),关键字的修饰方向都是从向右的,即关键字不会修饰它左边的东西。从编译原理的角度就好理解为 什么这样了,我们现在编译器采用的基本都是LR(k)进行语法分 阅读全文
posted @ 2010-12-17 12:46 flyxiang 阅读(431) 评论(0) 推荐(1) 编辑
摘要: 1) #define是预处理指令,在编译预处理时进行简单的替换,不作正确性检查,不关含义是否正确照样带入,只有在编译已被展开的源程序时才会发现可能的错误并报错。例如: #define PI 3.1415926 程序中的:area=PI*r*r 会替换为3.1415926*r*r 如果你把#define语句中的数字9 写成字母g 预处理也照样带入。 2)typedef是在编译时处理的。它在自己的作用域内给一个已经存在的类型一个别名,但是You cannot use the typedef specifier inside a function definition。 3)typedef int 阅读全文
posted @ 2010-12-17 12:45 flyxiang 阅读(218) 评论(0) 推荐(0) 编辑
摘要: 三个函数的申明分别是:void* realloc(void* ptr, unsigned newsize);void* malloc(unsigned size);void* calloc(size_t nelem, size_t elsize);都在stdlib.h函数库内它们的返回值都是请求系统分配的地址,如果请求失败就返回NULLmalloc用于申请一段新的地址,参数size为需要内存空间的长度,如:char* p;p=(char*)malloc(20);calloc与malloc相似,参数nelem为申请地址的单位元素长度,elsize为元素个数,如:char* p;p=(char*) 阅读全文
posted @ 2010-12-17 12:42 flyxiang 阅读(463) 评论(0) 推荐(0) 编辑
摘要: 1.这样的初始化有什么问题?char *p = malloc(10); 编译器提示“非法初始式” 云云。答:这个声明是静态或非局部变量吗?函数调用只能出现在自动变量(即局部非静态变量) 的初始式中。因为静态变量的地址必须在编译的过程中就确定下来而malloc()申请的内存地址是在运行时确定的。2. *p++ 自增p 还是p 所指向的变量?答:后缀++ 和-- 操作符本质上比前缀一目操作的优先级高, 因此*p++ 和*(p++) 等价, 它自增p 并返回p 自增之前所指向的值。要自增p 指向的值, 使用(*p)++, 如果副作用的顺序无关紧要也可以使用++*p。3 我有一个char * 型指针正 阅读全文
posted @ 2010-12-17 12:40 flyxiang 阅读(172) 评论(0) 推荐(0) 编辑
摘要: linux下用C开发多线程程序,Linux系统下的多线程遵循POSIX线程接口,称为pthread。Returns: 0 if OK, error number on failureC99 中新增加了 restrict 修饰的指针: 由 restrict 修饰的指针是最初唯一对指针所指向的对象进行存取的方法,仅当第二个指针基于第一个时,才能对对象进行存取。对对象的存取都限定于基于由 restrict 修饰的指针表达式中。 由 restrict 修饰的指针主要用于函数形参,或指向由 malloc() 分配的内存空间。restrict 数据类型不改变程序的语义。 编译器能通过作出 restrict 阅读全文
posted @ 2010-12-17 12:36 flyxiang 阅读(548) 评论(0) 推荐(0) 编辑
摘要: linux 系统中单个进程的最大线程数有其最大的限制 PTHREAD_THREADS_MAX这个限制可以在 /usr/include/bits/local_lim.h 中查看对 linuxthreads 这个值一般是 1024,对于 nptl 则没有硬性的限制,仅仅受限于系统的资源这个系统的资源主要就是线程的 stack 所占用的内存,用 ulimit -s 可以查看默认的线程栈大小,一般情况下,这个值是 8M可以写一段简单的代码验证最多可以创建多少个线程int main(){int i = 0;pthread_t thread;while (1) {if (pthread_create(&t 阅读全文
posted @ 2010-12-17 12:35 flyxiang 阅读(772) 评论(0) 推荐(0) 编辑
摘要: socket()——生成socket句柄#include sys/types.h; #include sys/socket.h; int socket(int domain, int type, int protocol); domain : "AF_INET"type : SOCK_STREAM(TCP), SOCK_DGRAM (UDP)protocol:0返回值:socket句柄(整型);(注意:有很多种 domain、type,请看 socket() 的 man帮助。另一个方式去得到 protocol。同 时请查阅 getprotobyname() 的 man 帮助。)int 阅读全文
posted @ 2010-12-17 12:32 flyxiang 阅读(782) 评论(0) 推荐(0) 编辑