Chinaunix首页 | 论坛 | 博客
  • 博客访问: 912200
  • 博文数量: 299
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 2493
  • 用 户 组: 普通用户
  • 注册时间: 2014-03-21 10:07
个人简介

Linux后台服务器编程。

文章分类

全部博文(299)

文章存档

2015年(2)

2014年(297)

发布时间:2014-05-25 11:34:06

在命令行下也能产生五颜六色的字体和图案,只需要加上一些颜色代码,例如    echo -e "\033[41;36m 红底绿字\033[0m"    其中41的位置代表底色, 36的位置是代表字的颜色    那些ascii code 是对颜色调用的始末.    \033[ ; m …… \033[0m    字背景颜色范围:40---.........【阅读全文】

阅读(2272) | 评论(0) | 转发(0)

发布时间:2014-05-24 23:03:40

使用异步 I/O 大大提高应用程序的性能学习何时以及如何使用 POSIX AIO APILinux? 中最常用的输入/输出(I/O)模型是同步 I/O。在这个模型中,当请求发出之后,应用程序就会阻塞,直到请求满足为止。这是很好的一种解决方案,因为调用应用程序在等待 I/O 请求完成时不需要使用任何中.........【阅读全文】

阅读(1495) | 评论(0) | 转发(0)

发布时间:2014-05-23 15:40:46

本文将从以下几个方面来阐述信号:(1)信号的基本知识(2)信号生命周期与处理过程分析(3) 基本的信号处理函数(4) 保护临界区不被中断(5) 信号的继承与执行(6)实时信号中锁的研究 第一部分: 信号的基本知识 1.信号本质: 信号的本质是软件层次上对中断的一种.........【阅读全文】

阅读(1536) | 评论(0) | 转发(0)

发布时间:2014-05-22 19:55:09

new和delete运算符用于动态分配和撤销内存的运算符new用法:          1.     开辟单变量地址空间               1)new int;  //.........【阅读全文】

阅读(1219) | 评论(0) | 转发(0)

发布时间:2014-05-22 19:53:29

c++编译常会出现free(): invalid next size(fast)或者是free(): invalid next size(normal)的问题,这大多数是内存泄漏的问题。经常出现的情况是动态数组赋值越界,导致最后在进行free时候,出现内存泄漏。解决方法,只能首先定位,然后一步一步自查,发现对数组的操作,然后慢慢带入,考虑极端情况(数组下标过大,或者.........【阅读全文】

阅读(8677) | 评论(0) | 转发(0)

发布时间:2014-05-22 17:19:52

1.STDIN_FILENO的作用STDIN_FILENO属于系统API接口库,其声明为 int 型,是一个打开文件句柄,对应的函数主要包括 open/read/write/close 等系统级调用。操作系统一级提供的文件API都是以文件描述符来表示文件。STDIN_FILENO就是标准输入设备(一般是键盘)的文件描述符。2.区别1)数据类型不一致:.........【阅读全文】

阅读(1317) | 评论(0) | 转发(0)

发布时间:2014-05-22 10:46:06

HTTP(HyperText Transfer Protocol)是一套计算机通过网络进行通信的规则。计算机专家设计出HTTP,使HTTP客户(如Web浏览器)能够从HTTP服务器(Web服务器)请求信息和服务,HTTP目前协议的版本是1.1.HTTP是一种无状态的协议,无状态是指Web浏览器和Web服务器之间不需要建立持久的连接,这意味着当一个客户端向服务器端发出.........【阅读全文】

阅读(2637) | 评论(0) | 转发(0)

发布时间:2014-05-17 11:34:08

======== TCP ========TCP_Serversocket()bind()listen()accept()write()read()close() 和shutdown() TCP_Clientsocket()connect()send() 和recv()close() 和shutdown() ======== UDP ========UDP_Serversocket()bind()send.........【阅读全文】

阅读(1282) | 评论(0) | 转发(0)

发布时间:2014-05-16 20:40:06

不知不觉,做程序工作已经10年了,从最初学习C++到Java,从困惑到清晰,感觉真的有不少东西可写,不过总觉得不成体系,大概看了太多八股文章的缘故,被憋得实在难受。所以不管了,想到什么写什么吧。  1、从C++到Java  C++和Java谁快?从算法上讲我认为毫无疑问是汇编〉C++〉Java,不要迷信某些个别评测,单纯的回圈测试.........【阅读全文】

阅读(1532) | 评论(0) | 转发(0)

发布时间:2014-05-14 15:55:20

一、TCP的滑动窗口大小实际上就是socket的接收缓冲区大小的字节数二、对于server端的socket一定要在listen之间设置缓冲区大小,因为,accept时新产生的socket会继承监听socket的缓冲区大小。对于client端的socket一定要在connet之前设置缓冲区大小,因为connet时需要进行三次握手过程,会通知对方自己的窗口大小。在c.........【阅读全文】

阅读(3845) | 评论(0) | 转发(2)

发布时间: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(也.........【阅读全文】

阅读(1181) | 评论(0) | 转发(0)

发布时间:2014-05-12 17:26:59

当您最初登录时,将启动一个新的 shell 进程。您已经知道,但是您可能还不知道这个新的 shell进程(通常是 bash)使用您的用户标识运行。照这样,bash 程序可以访问所有属于您的文件和目录。事实上,作为用户,我们完全依靠其它程序来代表我们执行操作。因为您启动的程序继承了您的用户标识,因此它们不能访问任何不允许您.........【阅读全文】

阅读(1083) | 评论(0) | 转发(0)

发布时间: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.........【阅读全文】

阅读(1259) | 评论(0) | 转发(1)

发布时间:2014-05-11 15:35:22

当解决多线程互斥同步的问题时,经常会有如下几个问题:1. 在一个给定的问题中,需要多少个Mutex,多少个Semaphore?有什么规律?2. 在对临界区加锁和等待信号量的顺序上有什么要求和规律?3. 什么样操作适合放在临界区,什么样的不适合?下面就生产者和消费者问题来分析一些这几个问题.下面是一个简单的实现程序:生产者向数.........【阅读全文】

阅读(1110) | 评论(0) | 转发(0)

发布时间:2014-05-10 22:45:31

内核同步措施    为了避免并发,防止竞争。内核提供了一组同步方法来提供对共享数据的保护。 我们的重点不是介绍这些方法的详细用法,而是强调为什么使用这些方法和它们之间的差别。    Linux 使用的同步机制可以说从2.0到2.6以来不断发展完善。从最初的原子操作,到后来的信号量,从大内.........【阅读全文】

阅读(885) | 评论(0) | 转发(0)

发布时间:2014-05-10 18:05:32

带外数据(out—of—band data),有时也称为加速数据(expedited data), 是指连接双方中的一方发生重要事情,想要迅速地通知对方。 这种通知在已经排队等待发送的任何“普通”(有时称为“带内”)数据之前发送。 带外数据设计为比普通数据有更高的优先级。 带外数据是映射到现有的连接中的,而.........【阅读全文】

阅读(1005) | 评论(0) | 转发(0)

发布时间:2014-05-10 17:21:51

一般文件的访问顺序:文件名 -> inode -> device block 一、inode是什么?理解inode,要从文件储存说起。文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector)。每个扇区储存512字节(相当于0.5KB)。 操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读.........【阅读全文】

阅读(760) | 评论(1) | 转发(0)

发布时间:2014-05-10 16:50:49

Linux中I/O设备分为两类:块设备和字符设备。两种设备本身没有严格限制,但是,基于不同的功能进行了分类。(1) 字符设备:提供连续的数据流,应用程序可以顺序读取,通常不支持随机存取。相反,此类设备支持按字节/字符来读写数据。举例来说,调制解调器是典型的字符设备。(2) 块设备:应用程序可以随机访问设备.........【阅读全文】

阅读(639) | 评论(0) | 转发(0)

发布时间:2014-05-06 17:53:58

最近在看C++,学到了标准库这一章,看到cin的时候,我们经常看到很多的代码中会有这么一段while(cin>>x){ ......}。这里我们最关注的问题是while括号里面cin>>x他每次输入的时候返回的是什么值呢。所以我们也就会问cin的返回值是什么。我也看到很多像我这样的新手问这样的问题,下面说下我个人的见解,如有不当之处,还请指.........【阅读全文】

阅读(740) | 评论(0) | 转发(0)

发布时间:2014-05-06 15:45:57

  C++强大的功能来源于其丰富的类库及库函数资源。C++标准库的内容总共在50个标准头文件中定义。在C++开发中,要尽可能地利用标准库完成。这样做的直接好处包括:(1)成本:已经作为标准提供,何苦再花费时间、人力重新开发呢;(2)质量:标准库的都是经过严格测试的,正确性有保证;(3)效率:关于人的效率已经体现.........【阅读全文】

阅读(664) | 评论(0) | 转发(0)

发布时间: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.........【阅读全文】

阅读(868) | 评论(0) | 转发(0)

发布时间:2014-05-02 15:38:42

http主要特点:1、B/S2、简单快速:客户向服务器请求时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于http协议简单,使得http服务器的程序规模小,因而通信速度很快。3、灵活:http允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。4.........【阅读全文】

阅读(1088) | 评论(0) | 转发(0)
给主人留下些什么吧!~~

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;
           ^

回复  |  举报

Oscarzhao2014-11-26 20:12

tianyashuibin:除了静态数据成员外,数据成员不能在类体内显式的初始化

举个最简单例子
struct a

  int a=1;
  int b=2;
};
这也不能通过啊!
原因很简单,因为struct a此时只是在说明有这么个类型,而并没有定义一个具体的变量和分配内存空间

c++11 中貌似可以

回复  |  举报

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};

回复  |  举报
留言热议
请登录后留言。

登录 注册