Linux后台服务器编程。
发布时间:2014-10-23 21:45:25
在C++中,当我们没有为一个类定义构造函数时,编译器会自动生成一个默认的构造函数,这个时候可能生成的类对象中的数据成员跟我们所期待的值会不一样,接下来讨论一下当使用默认构造函数生成对象时类中各数据成员的初始化情况。这主要取决于以下三点:(1) 数据成员本身的类型;.........【阅读全文】
发布时间:2014-10-23 21:29:31
C++为类中提供类成员的初始化列表。类对象的构造顺序是这样的:1.分配内存,调用构造函数时,隐式/显示的初始化各数据成员2.进入构造函数后在构造函数中执行一般计算 1.类里面的任何成员变量在定义时是不能初始化的。 2.一般的数据成员可以在构造函数中初始化。 3.const数据成员必须在构.........【阅读全文】
发布时间: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.........【阅读全文】
发布时间:2014-10-22 16:33:50
eax, ebx, ecx, edx, esi, edi, ebp, esp等都是X86 汇编语言中CPU上的通用寄存器的名称,是32位的寄存器。如果用C语言来解释,可以把这些寄存器当作变量看待。比方说:add eax,-2 ; //可以认为是给变量eax加上-2这样的一个值。这些32位寄存器有多种用途,但每一个都有“专长”,有各自的特别之.........【阅读全文】
发布时间:2014-10-21 21:43:47
前言 读了三年的研究生,没有碰过web相关开发了。本科的三年的web开发经验都忘记完了。工作找好了,最近准备开始重新复习一下C和web相关的知识,以前做web开发的时候主要是主要是用PHP那几十个API来做系统开发,对PHP底层没有去学习过,最近打算从CGI出发,从本质上来了解一下web底层相关技术。.........【阅读全文】
发布时间:2014-10-21 20:31:16
为什么要进行 CGI 编程? 在 HTML 中,当客户填写了表单,并按下了发送(submit)按钮后,表单的 内容被发送到了服务器端,一般的,这时就需要有一个服务器端脚本来对表单的 内容进行一些处理,或者是把它们保存起来,或者是按内容进行一些查询,或者 是一些别的什么。没有了 CGI,WEB 的世界就完全失去了它的交互性,所有.........【阅读全文】
发布时间:2014-10-21 16:37:00
一:列文件清单 1. List (gdb) list line1,line2 二:执行程序 要想运行准备调试的程序,可使用run命令,在它后面可以跟随发给该程序的任何参数,包括标准输入和标准输出说明符(<和>)和外壳通配符(*、?、[、])在内。 如果你使用不带参数的run命令,gdb就再次使用你给予前一条run命令的.........【阅读全文】
发布时间: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.........【阅读全文】
发布时间: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 .........【阅读全文】
发布时间:2014-09-23 00:47:16
在面向对象编程(Object-Oriented Programming, OOP)中,多态机制无疑是其最具特色的功能,甚至可以说,不运用多态的编程不能称之为OOP。这也是为什么有人说,使用面向对象语言的编程和面向对象的编程是两码事。多态并没有一个严格的定义,维基百科上给它下的定义比较宽松:Subtype polymorphism, almost uni.........【阅读全文】
发布时间:2014-09-22 09:21:15
有一个单链表,其中可能有一个环,也就是某个节点的next指向的是链表中在它之前的节点,这样在链表的尾部形成一环。问题:1、如何判断一个链表是不是这类链表?2、如果链表为存在环,如何找到环的入口点?解答:一、判断链表是否存在环,办法为:设置两个指针(fast, slow),初始值都指向头,slow每次前进一步,f.........【阅读全文】
发布时间:2014-09-21 23:39:39
“一切皆Socket!”话虽些许夸张,但是事实也是,现在的网络编程几乎都是用的socket。——有感于实际编程和开源项目研究。我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web服务器通信的?当你用QQ聊天时,QQ进程怎么与服务器或你好友所在的QQ进程.........【阅读全文】
发布时间:2014-09-19 09:18:19
1、好好规划自己的路,不要跟着感觉走; 根据个人的理想来安排自己的生活,绝大部分人并不指望成为什么院士或教授,而是希望活得滋润一些,痛快一些,那么就需要慎重安排自己的的轨迹,从一个行业入手逐渐对该行业深入了解,不要频繁跳槽,特别是不要为了一点工资而转移阵地,从长远看,这点钱根本不算什么,当你.........【阅读全文】
发布时间:2014-09-13 10:42:09
下面是高性能服务器邮件组(http://groups.google.com/group/dev4server)上一次问答。lizp.net的问题还是从字面“流”来理解TCP时带来的疑问。如果是“流”,怎么发送,什么时候确认?什么时候分片?怎么接受?我对此进行了较详细的回答。感觉这个问题比较典型,所以重新整理编辑补充。lizp.net问:一般来说,.........【阅读全文】
发布时间: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的写功能,此选项将不允许.........【阅读全文】
发布时间: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.........【阅读全文】
发布时间:2014-09-11 11:51:20
我写了一个服务器程序,在Linux下测试,然后用C++写了客户端用千万级别数量的短链接进行压力测试. 但是服务器总是莫名退出,没有core文件.最后问题确定为, 对一个对端已经关闭的socket调用两次write, 第二次将会生成SIGPIPE信号, 该信号默认结束进程.具体的分析可以结合TCP的"四次握手"关闭. TCP是全双.........【阅读全文】
发布时间:2014-09-09 22:50:56
问题C语言以及C++语言中的const究竟表示什么?其具体的实现机制又是如何实现的呢? 本文将对这两个问题进行一些分析,简单解释const的含义以及实现机制。问题分析简单的说const在C语言中表示只读的变量,而在C++语言中表示常量。关于const在C与C++语言中的使用以及更多的区别,以后有时间另开一.........【阅读全文】
发布时间:2014-09-09 17:43:52
越是重要的决定,越要自己去抉择。容不得别人掺和。我是做咨询的,说这话好像违背我的职业原则。很多人找我,就是想知道应该如何决定。然而,我能做的是,告诉你什么样的原则是对的,什么样的策略是具有优势的,而最终究竟是否要应用那原则,是否要采取那策略,我当然无法越俎代庖。如果答案是确定.........【阅读全文】
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};