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

Linux后台服务器编程。

文章分类

全部博文(299)

文章存档

2015年(2)

2014年(297)

发布时间:2014-10-24 21:44:58

之前都是参考别人的代码,现如今自己动手来写一个个人版本的线程池,线程池的实现本身并不复杂,无非就是创建一些线程然后让这些线程处于条件等待状态(可以用条件变量,也可以用信号量来实现)。这是最基本的原理,原理的理解很简单,但重要的是实现的细节问题。线程池的实现:包含内容:1、线程数量N;2、线程的工.........【阅读全文】

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

发布时间:2014-10-24 21:09:38

一、创建分离线程有两种方式创建分离线程:(1)在线程创建时将其属性设为分离状态(detached);(2)在线程创建后将其属性设为分离的(detached)。二、分离线程的作用由系统来回收线程所占用资源。三、实例#include <stdlib.h> #include <string.h> #include <unistd.h> #include <sema.........【阅读全文】

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

发布时间:2014-10-23 21:45:25

在C++中,当我们没有为一个类定义构造函数时,编译器会自动生成一个默认的构造函数,这个时候可能生成的类对象中的数据成员跟我们所期待的值会不一样,接下来讨论一下当使用默认构造函数生成对象时类中各数据成员的初始化情况。这主要取决于以下三点:(1)      数据成员本身的类型;.........【阅读全文】

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

发布时间:2014-10-23 21:29:31

C++为类中提供类成员的初始化列表。类对象的构造顺序是这样的:1.分配内存,调用构造函数时,隐式/显示的初始化各数据成员2.进入构造函数后在构造函数中执行一般计算  1.类里面的任何成员变量在定义时是不能初始化的。  2.一般的数据成员可以在构造函数中初始化。  3.const数据成员必须在构.........【阅读全文】

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

发布时间:2014-10-22 21:00:27

1、  一些头文件的作用:<assert.h>:ANSI C。提供断言,assert(表达式)<glib.h>:GCC。GTK,GNOME的基础库,提供很多有用的函数,如有数据结构操作函数。使用glib只需要包含<glib.h><dirent.h>:GCC。文件夹操作函数。struct dirent,struct DIR,opendir(),closedir(),readdir(),readdir64()等<ctype.h>:ANSI C.........【阅读全文】

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

发布时间:2014-10-22 16:33:50

eax, ebx, ecx, edx, esi, edi, ebp, esp等都是X86 汇编语言中CPU上的通用寄存器的名称,是32位的寄存器。如果用C语言来解释,可以把这些寄存器当作变量看待。比方说:add eax,-2 ;   //可以认为是给变量eax加上-2这样的一个值。这些32位寄存器有多种用途,但每一个都有“专长”,有各自的特别之.........【阅读全文】

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

发布时间:2014-10-21 21:43:47

前言     读了三年的研究生,没有碰过web相关开发了。本科的三年的web开发经验都忘记完了。工作找好了,最近准备开始重新复习一下C和web相关的知识,以前做web开发的时候主要是主要是用PHP那几十个API来做系统开发,对PHP底层没有去学习过,最近打算从CGI出发,从本质上来了解一下web底层相关技术。.........【阅读全文】

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

发布时间:2014-10-21 20:31:16

为什么要进行 CGI 编程? 在 HTML 中,当客户填写了表单,并按下了发送(submit)按钮后,表单的 内容被发送到了服务器端,一般的,这时就需要有一个服务器端脚本来对表单的 内容进行一些处理,或者是把它们保存起来,或者是按内容进行一些查询,或者 是一些别的什么。没有了 CGI,WEB 的世界就完全失去了它的交互性,所有.........【阅读全文】

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

发布时间:2014-10-21 16:37:00

一:列文件清单 1. List (gdb) list line1,line2 二:执行程序 要想运行准备调试的程序,可使用run命令,在它后面可以跟随发给该程序的任何参数,包括标准输入和标准输出说明符(<和>)和外壳通配符(*、?、[、])在内。 如果你使用不带参数的run命令,gdb就再次使用你给予前一条run命令的.........【阅读全文】

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

发布时间:2014-10-20 21:36:28

Segmentation fault is a specific kind of error caused by accessing memory that “does not belong to you.” It’s a helper mechanism that keeps you from corrupting the memory and introducing hard-to-debug memory bugs. Whenever you get a segfault you know you are doing something wrong with memory – a.........【阅读全文】

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

发布时间:2014-10-18 10:46:28

GCC and MakeCompiling, Linking and BuildingC/C++ Applications1.  GCC (GNU Compiler Collection)1.1  A Brief History and Introduction to GCCThe original GNU C Compiler (GCC) is developed by Richard Stallman, the founder of the GNU .........【阅读全文】

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

发布时间:2014-09-23 00:47:16

在面向对象编程(Object-Oriented Programming, OOP)中,多态机制无疑是其最具特色的功能,甚至可以说,不运用多态的编程不能称之为OOP。这也是为什么有人说,使用面向对象语言的编程和面向对象的编程是两码事。多态并没有一个严格的定义,维基百科上给它下的定义比较宽松:Subtype polymorphism, almost uni.........【阅读全文】

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

发布时间:2014-09-23 00:05:07

/*问题描述:从一个字符串中搜索出指定类型的最长的字符串*/#include <iostream>#include <vector>#include <string>#include <algorithm>#include <ctype.h>using namespace std;struct Snode {    int index;   &n.........【阅读全文】

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

发布时间:2014-09-22 23:36:37

1、 C++ 定义了哪些类型转换操作符?分别有什么作用? ① 定义了四个操作符:static_cast,const_cast,dynamic_cast和reinterpret_cast。 ② static_cast:可以被用于强制类型转换(例如,non-const对象转换为const对象,int转换为double,等等),它还可以用于很多这样.........【阅读全文】

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

发布时间:2014-09-22 17:36:55

1.        结构化程序设计为了提高程序的可读性、可重用性等,逐渐出现了将程序开发中经常用到的相同的功能,比如数学函数运算、字符串操作等,.........【阅读全文】

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

发布时间:2014-09-22 17:13:04

......【阅读全文】

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

发布时间:2014-09-22 09:21:15

有一个单链表,其中可能有一个环,也就是某个节点的next指向的是链表中在它之前的节点,这样在链表的尾部形成一环。问题:1、如何判断一个链表是不是这类链表?2、如果链表为存在环,如何找到环的入口点?解答:一、判断链表是否存在环,办法为:设置两个指针(fast, slow),初始值都指向头,slow每次前进一步,f.........【阅读全文】

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

发布时间:2014-09-21 23:39:39

“一切皆Socket!”话虽些许夸张,但是事实也是,现在的网络编程几乎都是用的socket。——有感于实际编程和开源项目研究。我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web服务器通信的?当你用QQ聊天时,QQ进程怎么与服务器或你好友所在的QQ进程.........【阅读全文】

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

发布时间:2014-09-19 22:04:02

在进行UDP编程的时候,我们最容易想到的问题就是,一次发送多少bytes好?    当然,这个没有唯一答案,相对于不同的系统,不同的要求,其得到的答案是不一样的,我这里仅对    像ICQ一类的发送聊天消息的情况作分析,对于其他情况,你或许也能得到一点帮助:    首先,我们知道,TCP.........【阅读全文】

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

发布时间:2014-09-19 09:18:19

1、好好规划自己的路,不要跟着感觉走;  根据个人的理想来安排自己的生活,绝大部分人并不指望成为什么院士或教授,而是希望活得滋润一些,痛快一些,那么就需要慎重安排自己的的轨迹,从一个行业入手逐渐对该行业深入了解,不要频繁跳槽,特别是不要为了一点工资而转移阵地,从长远看,这点钱根本不算什么,当你.........【阅读全文】

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

发布时间:2014-09-15 23:32:47

 单例模式也称为单件模式、单子模式,可能是使用最广泛的设计模式。其意图是保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。有很多地方需要这样的功能模块,如系统的日志输出,GUI应用必须是单鼠标,MODEM的联接需要一条且只需要一条电话线,操作系统只能有一个窗口管理器,一台PC.........【阅读全文】

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

发布时间:2014-09-13 10:42:09

下面是高性能服务器邮件组(http://groups.google.com/group/dev4server)上一次问答。lizp.net的问题还是从字面“流”来理解TCP时带来的疑问。如果是“流”,怎么发送,什么时候确认?什么时候分片?怎么接受?我对此进行了较详细的回答。感觉这个问题比较典型,所以重新整理编辑补充。lizp.net问:一般来说,.........【阅读全文】

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

发布时间:2014-09-11 12:16:08

在Linux socket关闭连接的方法有两种分别是shutdown和close,首先看一下shutdown的定义#include<sys/socket.h>int shutdown(int sockfd,int how);how的方式有三种分别是SHUT_RD(0):关闭sockfd上的读功能,此选项将不允许sockfd进行读操作。SHUT_WR(1):关闭sockfd的写功能,此选项将不允许.........【阅读全文】

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

发布时间:2014-09-11 12:01:29

C中的可变参数研究一. 何谓可变参数int printf( const char* format, ...);这是使用过C语言的人所再熟悉不过的printf函数原型,它的参数中就有固定参数format和可变参数(用”…”表示). 而我们又可以用各种方式来调用printf,如:printf( "%d ",value);printf( "%s ",str);printf( "the number is %d ,string is:%s.........【阅读全文】

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

发布时间:2014-09-11 11:51:20

我写了一个服务器程序,在Linux下测试,然后用C++写了客户端用千万级别数量的短链接进行压力测试.  但是服务器总是莫名退出,没有core文件.最后问题确定为, 对一个对端已经关闭的socket调用两次write, 第二次将会生成SIGPIPE信号, 该信号默认结束进程.具体的分析可以结合TCP的"四次握手"关闭. TCP是全双.........【阅读全文】

阅读(1416) | 评论(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};

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

登录 注册