Linux后台服务器编程。
发布时间:2014-05-14 15:55:20
一、TCP的滑动窗口大小实际上就是socket的接收缓冲区大小的字节数二、对于server端的socket一定要在listen之间设置缓冲区大小,因为,accept时新产生的socket会继承监听socket的缓冲区大小。对于client端的socket一定要在connet之前设置缓冲区大小,因为connet时需要进行三次握手过程,会通知对方自己的窗口大小。在c.........【阅读全文】
发布时间:2014-05-14 15:44:12
在内核中sk_buff表示一个网络数据包,它是一个双向链表,而链表头就是sk_buff_head,在老的内核里面sk_buff会有一个list域直接指向sk_buff_head也就是链表头,现在在2.6.32里面这个域已经被删除了。 而sk_buff的内存布局可以分作3个段,第一个就是sk_buff自身,第二个是linear-data buff,第三个是paged-data buff(也.........【阅读全文】
发布时间:2014-05-12 17:26:59
当您最初登录时,将启动一个新的 shell 进程。您已经知道,但是您可能还不知道这个新的 shell进程(通常是 bash)使用您的用户标识运行。照这样,bash 程序可以访问所有属于您的文件和目录。事实上,作为用户,我们完全依靠其它程序来代表我们执行操作。因为您启动的程序继承了您的用户标识,因此它们不能访问任何不允许您.........【阅读全文】
发布时间:2014-05-11 23:05:35
Why semaphores?Posix semaphores are easy to usesem_initsem_waitsem_postsem_getvaluesem_destroyExercises 1 2 3Now it is time to take a look at some cod.........【阅读全文】
发布时间:2014-05-11 15:35:22
当解决多线程互斥同步的问题时,经常会有如下几个问题:1. 在一个给定的问题中,需要多少个Mutex,多少个Semaphore?有什么规律?2. 在对临界区加锁和等待信号量的顺序上有什么要求和规律?3. 什么样操作适合放在临界区,什么样的不适合?下面就生产者和消费者问题来分析一些这几个问题.下面是一个简单的实现程序:生产者向数.........【阅读全文】
发布时间:2014-05-10 18:05:32
带外数据(out—of—band data),有时也称为加速数据(expedited data), 是指连接双方中的一方发生重要事情,想要迅速地通知对方。 这种通知在已经排队等待发送的任何“普通”(有时称为“带内”)数据之前发送。 带外数据设计为比普通数据有更高的优先级。 带外数据是映射到现有的连接中的,而.........【阅读全文】
发布时间:2014-05-10 17:21:51
一般文件的访问顺序:文件名 -> inode -> device block 一、inode是什么?理解inode,要从文件储存说起。文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector)。每个扇区储存512字节(相当于0.5KB)。 操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读.........【阅读全文】
发布时间:2014-05-10 16:50:49
Linux中I/O设备分为两类:块设备和字符设备。两种设备本身没有严格限制,但是,基于不同的功能进行了分类。(1) 字符设备:提供连续的数据流,应用程序可以顺序读取,通常不支持随机存取。相反,此类设备支持按字节/字符来读写数据。举例来说,调制解调器是典型的字符设备。(2) 块设备:应用程序可以随机访问设备.........【阅读全文】
发布时间:2014-05-06 17:53:58
最近在看C++,学到了标准库这一章,看到cin的时候,我们经常看到很多的代码中会有这么一段while(cin>>x){ ......}。这里我们最关注的问题是while括号里面cin>>x他每次输入的时候返回的是什么值呢。所以我们也就会问cin的返回值是什么。我也看到很多像我这样的新手问这样的问题,下面说下我个人的见解,如有不当之处,还请指.........【阅读全文】
发布时间:2014-05-06 15:45:57
C++强大的功能来源于其丰富的类库及库函数资源。C++标准库的内容总共在50个标准头文件中定义。在C++开发中,要尽可能地利用标准库完成。这样做的直接好处包括:(1)成本:已经作为标准提供,何苦再花费时间、人力重新开发呢;(2)质量:标准库的都是经过严格测试的,正确性有保证;(3)效率:关于人的效率已经体现.........【阅读全文】
发布时间:2014-05-05 09:26:24
本文来源:红帽 Performance Tuning GuideTo better analyze network bottlenecks and performance issues, you need to understand how packetreception works. Packet reception is important in network performance tuning because the receivepath is where frames are often lost. Lost frames in the recei.........【阅读全文】
发布时间:2014-04-28 17:07:36
常用的APT命令参数: apt-cache search package 搜索包 apt-cache show package 获取包的相关信息,如说明、大小、版本等 sudo apt-get install package 安装包 sudo apt-get install package - - reinstall 重新安装包 sudo apt-get -f install 修复安装"-f = ——fix-missing" .........【阅读全文】
发布时间:2014-04-27 22:57:58
#!/bin/bash是指此脚本使用/bin/bash来解释执行。其中,#!是一个特殊的表示符,其后,跟着解释此脚本的shell路径。bash只是shell的一种,还有很多其它shell,如:sh,csh,ksh,tcsh,...我们可以通过以下一个示例来进行实验,了解#!/bin/bash的使用。1)#!/bin/bash只能放在第一行,如果后面还有#!,那么只.........【阅读全文】
发布时间:2014-04-26 10:17:29
如果某项请求发送到您的服务器要求显示您网站上的某个网页(例如,用户通过浏览器访问您的网页或 Googlebot 抓取网页时),服务器将会返回 HTTP 状态码响应请求。 此状态码提供关于请求状态的信息,告诉 Googlebot 关于您的网站和请求的网页的信息。 &n.........【阅读全文】
发布时间:2014-04-24 12:33:47
这里说明,Ubuntu 中系统没有了RH系统中的 chkconfig 命令 !可用一些小工具来管理 Ubuntu 的启动选项:小工具 rcconf:#sudo apt-get rcconf#sudo apt-get install rcconfroot 下运行: #sudo rcconf功能更全的工具:sysv-rc-conf#sudo apt-get update#sudo apt-get install .........【阅读全文】
发布时间:2014-04-19 00:00:25
原文:http://apps.hi.baidu.com/share/detail/15354889最 近由于要做一个关于以太网环境中网络设备时延方面的测试,在RFC2544 上面规定了一些测试时数据包的长度分别为64, 128, 256, 512, 1024, 1280, 1518 Byte("Frame sizes to be used on Ethernet:64, 128, 256, 512, 1024, 1280, 1518"),故重新温习.........【阅读全文】
发布时间:2014-04-17 21:41:37
linux下为了多线程同步,通常用到锁的概念。posix下抽象了一个锁类型的结构:ptread_mutex_t。通过对该结构的操作,来判断资源是否可以访问。顾名思义,加锁(lock)后,别人就无法打开,只有当锁没有关闭(unlock)的时候才能访问资源。它主要用如下5个函数进行操作。1:pthread_mutex_init(pthread_mutex_t * mutex,c.........【阅读全文】
发布时间:2014-04-08 22:22:46
sockaddr_in , sockaddr , in_addr区别struct sockaddr { unsigned short sa_family; &nbs.........【阅读全文】
发布时间:2014-04-08 09:34:29
C++ provides the following classes to perform output and input of characters to/from files: ofstream: Stream class to write on filesifstream: Stream class to read from filesfstream: Stream class to both read and write from/to files.These classes are deri.........【阅读全文】
发布时间:2014-04-06 20:09:05
const用法详解,如何修饰变量,返回值以及成员函数const关键字是用来修饰一个变量使其成为常量(constant)的。常量只能在定义时进行初始化,而此后对这个变量的任何改变都将是非法的。const关键字在就是为了保证了它修饰的对象不被修改。对于指针来说,const关键字同样可以保证它修饰的对象不被修改.........【阅读全文】
发布时间:2014-03-29 22:02:02
最近学习算法,看CSDN博客:结构之法 中的 微软100题。由于编程动手少,知道怎么做,但是就是写不出代码来,所以把答案抄写几遍,最后记住了答案,可以直接写出代码来。那么是不是多记忆一些代码然后就可以提高自己的编程能力呢?我想这就如同背记作文,然后背多了就能写出文章来,但是这样的效率高吗?恐怕不会很高,写代.........【阅读全文】
tianyashuibin2014-12-08 11:22
Oscarzhao:c++11 中貌似可以
嗯,是的,在c++11中可以
下面是在gcc的编译结果:
test_struct.cc:8:11: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11 [enabled by default]
int a = 1;
^
tianyashuibin2014-10-23 21:57
除了静态数据成员外,数据成员不能在类体内显式的初始化
举个最简单例子
struct a
{
int a=1;
int b=2;
};
这也不能通过啊!
原因很简单,因为struct a此时只是在说明有这么个类型,而并没有定义一个具体的变量和分配内存空间
tianyashuibin2014-10-23 21:39
1.分配内存,调用构造函数时,隐式/显示的初始化各数据成员
2.进入构造函数后在构造函数中执行一般计算
1.类里面的任何成员变量在定义时是不能初始化的。
2.一般的数据成员可以在构造函数中初始化。
3.const数据成员必须在构造函数的初始化列表中初始化。
4.static要在类的定义外面初始化。
5.数组成员是不能在初始化列表里初始化的。
6.不能给数组指定明显的初始化。
这6条一起,说明了一个问题:C++里面是不能定义常量数组的!因为3和5的矛盾。
tianyashuibin2014-10-23 21:32
记住静态成员这样初始化:
C/C++ code
class A
{
public:
static const int a[3];
};
const int A::a[3] = {1,2,3};