- 博客(19)
- 资源 (11)
- 收藏
- 关注
转载 Linux socket 编程中存在的五个隐患
前言: Socket API 是网络应用程序开发中实际应用的标准 API。尽管该 API 简单,但是 开发新手可能会经历一些常见的问题。本文识别一些最常见的隐患并向您显示如何避免它们。 相关文档:《linux socket 编程》 在 4.2 BSD UNIX® 操作系统中首次引入,Sockets API 现在是任何操作系统的标准特性。事实上
2009-05-29 00:38:00 3294 3
转载 linux socket编程(字节处理)
1、 引言Linux的兴起可以说是Internet创造的一个奇迹。Linux作为一个完全开放其原代码的免费的自由软件,兼容了各种UNIX标准(如POSIX、UNIX System V 和 BSD UNIX 等)的多用户、多任务的具有复杂内核的操作系统。在中国,随着Internet的普及,一批主要以高等院校的学生和ISP的技术人员组成的Linux爱好者队伍已经蓬勃成长起来。越来越多的编程爱好者也逐渐
2009-05-29 00:31:00 4266
转载 linux下socket编程(基础参考)
什么是Socket Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。要学Internet上的TCP/IP网络编程,必须理解Socket接口。 Socket接口设计者最先是将接口放在Unix操作系统里面的。如果了解Unix系统的输入和输出的话,就很容易了解Socket了。网络的Socket数据传输是
2009-05-29 00:29:00 2257
转载 const用法详解 (转)
const用法详解 面向对象是C++的重要特性. 但是c++在c的基础上新增加的几点优化也是很耀眼的 就const直接可以取代c中的#define 以下几点很重要,学不好后果也也很严重 const 1. 限定符声明变量只能被读 const int i=5; int j=0; ... i=j; //非法,导致编译错误 j=i; //合法 2. 必须初始化 const in
2009-05-21 16:50:00 2394 1
原创 宽字符跟ASCII——区别及测试
一.宽字符介绍 首先说,什么是ASCII,ASCII是用来表示英文字符的一种编码规范。每个ASCII字符占用1个字节,因此,ASCII编码可以表示的最大字符数是255(00H—FFH)。其实,英文字符并没有那么多,一般只用前128个(00H—7FH,最高位为0),其中包括了控制字符、数字、大小写字母和其它一些符号。而最高位为1的另128个字符(80H—FFH)被称为“扩展ASCII”,
2009-05-18 15:28:00 11056 7
转载 Linux守护进程的编程实现
Linux 守护进程的编程方法 守护进程(Daemon)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程是一种很有用的进程。Linux的大多数服务器就是用守护进程实现的。比如,Internet服务器inetd,Web服务器httpd等。同时,守护进程完成许多系统任务。比如,作业规划进程crond,打印进程lpd等。 守护进程的编程本身并不复杂,
2009-05-17 15:29:00 63587 13
转载 iostream 与iostream.h区别(转)
C++的标准类库被修订了两次,有两个标准 C92和C99,这两个库现在都在并行使用,用 .h 包含的是c92 ,不带 .h 的是c99的头文件,对于普通用户来说这两者没有什么区别,区别是在内部函数的具体实现上。旧的C++头文件是官方明确反对使用的,但旧的C头文件则没有(以保持对C的兼容性)。据说从 Visual C++ .NET 2003 开始,移除了旧的 iostream 库。其实编译器制造商不
2009-05-14 18:06:00 11227 1
转载 一个很牛的求圆周率的6行代码
int a=10000,b,c=2800,d,e,f[2801],g; main(){ for(;b-c;) f[b++]=a/5; for(;d=0,g=c*2;c-=14,printf("%.4d",e+d/a),e=d%a) for(b=c;d+=f[b]*a,f[b]=d%--g,d/=g--,--b;d*=b);} 很早以前找到过这段代码,感觉蛮牛的,
2009-05-13 19:26:00 3475 3
原创 类的大小——sizeof 的研究(2.虚函数继承)
上一篇文章研究了关于类大小的4条规则后,我们再结合虚函数表,来研究下类的大小。 class Base{public: Base(){}; virtual ~Base(){}; void set_num(int num) { a=num; } virtual int get_num() { return a; }private:
2009-05-12 18:59:00 7333 4
原创 类的大小——sizeof 的研究(1)
先看一个空的类占多少空间? class Base{public: Base(); ~Base();}; 注意到我这里显示声明了构造跟析构,但是sizeof(Base)的结果是1. 因为一个空类也要实例化,所谓类的实例化就是在内存中分配一块地址,每个实例在内存中都有独一无二的地址。同样空类也会被实例化,所以编译器会给空类隐含的添加一个字节
2009-05-12 17:09:00 24461 12
原创 关于硬链接和软连接(符号链接)的区别
linux系统下提供ln指令来进行文件链接。文件链接主要分为硬链接和软链接。 硬链接:由于linux下的文件是通过索引节点(Inode)来识别文件,硬链接可以认为是一个指针,指向文件索引节点的指针,系统并不为它重新分配inode。每添加一个一个硬链接,文件的链接数就加1。 可以用:ln命令来建立硬链接。语法: ln [options] existingfile ne
2009-05-11 16:32:00 43750 9
转载 getch(),getche(),getchar()的区别 (综合转)
先说基本区别。 (1) getch()和getche()函数 这两个函数都是从键盘上读入一个字符。其调用格式为: getch(); getche(); 两者的区别是: getch()函数不将读入的字符回显在显示屏幕上, 而getche() 函数却将读入的字符回显到显示屏幕上。 例1: #include main()
2009-05-08 21:22:00 35922 5
原创 由类的成员函数深入指针
先看这样一段代码 class test { public: test(int i){ m_i=i;} test(){}; void hello() { printf("hello/n"); } private: int m_i; }; int main() { test *p=new test(); p->hello(); p=NULL; p->hello(); }
2009-05-06 00:22:00 6615 11
转载 排序系列- 堆排序
1、 堆排序定义 n个关键字序列Kl,K2,…,Kn称为堆,当且仅当该序列满足如下性质(简称为堆性质): (1) ki≤K2i且ki≤K2i+1 或(2)Ki≥K2i且ki≥K2i+1(1≤i≤ ) 若将此序列所存储的向量R[1..n]看做是一棵完全二叉树的存储结构,则堆实质上是满足如下性质的完全二叉树:树中任一非叶结点的关键字均不大于(或不小于)其左右孩子(若存在)结点
2009-05-05 17:15:00 3447
转载 [数据结构]哈夫曼树、哈夫曼编码(转)
哈夫曼树又称最优树(二叉树),是一类带权路径最短的树。构造这种树的算法最早是由哈夫曼(Huffman)1952年提出,这种树在信息检索中很有用。 结点之间的路径长度:从一个结点到另一个结点之间的分支数目。树的路径长度:从树的根到树中每一个结点的路径长度之和。结点的带权路径长度:从该结点到树根之间的路径长度与结点上权的乘积。树的带权路径长度:树中所有叶子结点的带权路径长度之和,记
2009-05-05 15:41:00 23527 17
转载 open和fopen的区别
open和fopen的区别:1.缓冲文件系统缓冲文件系统的特点是:在内存开辟一个“缓冲区”,为程序中的每一个文件使用,当执行读文件的操作时,从磁盘文件将数据先读入内存“缓冲区”, 装满后再从内存“缓冲区”依此读入接收的变量。执行写文件的操作时,先将数据写入内存“缓冲区”,待内存“缓冲区”装满后再写入文件。由此可以看出,内存 “缓冲区”的大小,影响着实际操作外存的次数,内存“缓冲区”越大,则
2009-05-05 00:01:00 53357 15
原创 基础系列(关于实参,形参,以及指针)
这里讲讲《彻底搞定C指针》里面一个经典的例子。引出实参,形参和指针。 形参:全称为"形式参数"是在定义函数名和函数体的时候使用的参数,目的是用来接收调用该函数时传如的参数. 实参:全称为"实际参数"是在调用时传递个该函数的参数. void Exchg1(int x, int y) { int tmp; tmp=x; x=y; y=tmp; pri
2009-05-03 13:10:00 14378 11
原创 自己实现atoi系列
atoi系列是字符跟数字之间转换常用的函数,其实自己实现也是挺快的,这里写一种带格式检测的atoi函数。函数说明atoi()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时(/0)才结束转换,并将结果返回。返回值返回转换后的整型数。 #includeint my_atoi(const char * str){ int
2009-05-03 01:15:00 10944 7
原创 关于分离线程的一种用法
讲到分离线程,先得从僵尸进程讲起(抱歉,确实不知道线程是否有僵尸一说)。 关于僵尸进程:一般情况下进程终止的时候,和它相关的系统资源也并不是主动释放的,而是进入一种通常称为“僵尸”(zombie)的状态。它所占有的资源一直被系统保留,直到它的父进程(如果它直接的父进程先于它去世,那么它将被init进程所收养,这个时候init就是它的父进程)显式地调用wait系列函数为其“收尸”
2009-05-01 13:27:00 6453 2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人