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

Linux后台服务器编程。

文章分类

全部博文(299)

文章存档

2015年(2)

2014年(297)

发布时间:2014-07-26 20:48:19

首先什么是小根堆:(1)它是一颗完全二叉树(2)任意一个节点均小于或等于其左右子节点的关键码(大根堆相反就是了)因此可以得知,当前树形结构的根节点就是当前整个树形结构最小的节点。。。至于说这种堆结构有什么作用:(1)以前本科的时候上数据结构课的时候就有讲过堆排序,好像还不错,.........【阅读全文】

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

发布时间:2014-07-26 16:29:29

在C++中,静态成员是属于整个类的而不是某个对象,静态成员变量只存储一份供所有对象共用。所以在所有对象中都可以共享它。使用静态成员变量实现多个对象之间的数据共享不会破坏隐藏的原则,保证了安全性还可以节省内存。静态成员的定义或声明要加个关键static。静态成员可以通过双冒号来使用即<类名>::<静态成员名>。.........【阅读全文】

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

发布时间:2014-07-26 09:30:58

函数名: strrchr 功  能: 在串中查找指定字符的最后一个出现 用  法: char *strrchr(char *str, char c);举例:char fullname="./lib/lib1.so";  char *ptr;  ptr = strrchr(fullname,'/');  pri.........【阅读全文】

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

发布时间:2014-07-26 08:20:56

C++中值传递、指针传递、引用传递的总结 收藏 1. 值传递:形参是实参的拷贝,改变形参的值并不会影响外部实参的值。从被调用函数的角度来说,值传递是单向的(实参->形参),参数的值只能传入,不能传出。当函数内部需要修改参数,并且不希望这个改变影响调用者时,采用值传递。void swap(int a.........【阅读全文】

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

发布时间:2014-07-25 15:49:42

小根堆如果有一个关键字的集合K={k0,k1,k2, ..., kn-1}, 把所有元素按完全二叉树的顺序存储方式存放在一个一维数组中,并且满足ki ......【阅读全文】

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

发布时间:2014-07-25 09:00:14

应邀答题,很好奇这样中规中矩的题目为啥要匿名。首先说说“适合学生参与”。参与开源项目的开发者,来自各行各业的都有,并没有哪些开源项目学生的比例明显高于其它项目的。至于 GSoC,其项目也不是单独为学生专门设计的,都只是从标准的开源项目里选出一些工作量大小适中的子项目专门让学生参与而已。如果硬要说学生和.........【阅读全文】

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

发布时间:2014-07-24 20:13:53

第一层次:普通管理员    1、特征:能理解分区的概念,知道安装linux系统和常见的数据库、桌面管理器、应用软件等,能做一些基本的配置(如网络、打印机、调制解调器等),参照手边资料依葫画瓢式的安装和配置常见服务(如NFS、HTTP、FTP、TELNET、 SSH、LDAP、NIS、邮件服务、SAMBA、打印服务等),能解决一些.........【阅读全文】

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

发布时间:2014-07-24 19:58:49

内核态与用户态是操作系统的两种运行级别,intel cpu提供Ring0-Ring3三种级别的运行模式。Ring0级别最高,Ring3最低。其中特权级0(Ring0)是留给操作系统代码,设备驱动程序代码使用的,它们工作于系统核心态;而特权极3(Ring3)则给普通的用户程序使用,它们工作在用户态。运行于处理器核心态的代码不受任何的限制,可.........【阅读全文】

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

发布时间:2014-07-24 19:37:55

什么是epollepoll是什么?按照man手册的说法:是为处理大批量句柄而作了改进的poll。当然,这不是2.6内核才有的,它是在2.5.44内核中被引进的(epoll(4) is a new API introduced in Linux kernel 2.5.44),它几乎具备了之前所说的一切优点,被公认为Linux2.6下性能最好的多路I/O就绪通知方法。 epoll的.........【阅读全文】

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

发布时间:2014-07-24 17:14:46

   作为一个经验丰富的C/C++程序员, 肯定亲手写过各种功能的代码, 比如封装过数据库访问的类, 封装过网络通信的类,封装过日志操作的类, 封装过文件访问的类, 封装过UI界面库等, 也在实际的项目中应用过, 但是回过头仔细想想,其实以前自己写过的这些代码,只能是在特定的项目或者特定的环境中使用, 对.........【阅读全文】

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

发布时间:2014-07-24 15:15:30

C++中真正的临时对象是看不见的,它们不出现在你的源代码中,临时对象的产生在如下几个时刻: 1.       用构造函数作为隐式类型转换函数时,会创建临时对象。例:        class Integer    &nb.........【阅读全文】

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

发布时间:2014-07-18 17:18:20

up vote8down votefavorite3I found this symbols in a function declaration several times, but i don't know what they mean, if it is something stupid I apologize for the question.lik.........【阅读全文】

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

发布时间:2014-07-18 11:45:39

新疆 linux SO_LINGER ......【阅读全文】

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

发布时间:2014-07-18 11:39:45

新疆 linux TCP TIMEWAIT......【阅读全文】

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

发布时间:2014-07-17 17:25:11

1、环形缓冲区(下面生产者消费者的例子使用)  使用一段内存空间作为缓冲区,维护两个指针,一是读指针,指向缓冲空间的第一个可读位置;二是写指针,指向空间的第一个空位置。读取一个数据后,读指针+1,当指针位置超出缓冲区域则指向缓冲区域的头位置(置0);写入一个数据后,写指针+1,当指针位置超出缓冲.........【阅读全文】

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

发布时间:2014-07-16 23:06:05

现在使用linux的朋友越来越多了,在linux下做开发首先就是需要配置环境变量,下面以配置java环境变量为例介绍三种配置环境变量的方法。 1.修改/etc/profile文件如果你的计算机仅仅作为开发使用时推荐使用这种方法,因为所有用户的shell都有权使用这些环境变量,可能会给系统带来安全性问题。 .........【阅读全文】

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

发布时间:2014-07-16 23:00:43

1 获得源码   从apue的官方网站http://www.apuebook.com/下载 源码。(点击here直接下载) 在windows下载后用U盘拷到linux系统下找个目录解压   tar -zxvf src.tar.gz 在当前目录下解压  通过pwd查看你解压的目录 这个目录要记住会在下一步中用到2 WKDIR  编辑源码解压生成的apue.2e文件 夹下的Mak.........【阅读全文】

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

发布时间:2014-07-16 21:29:27

本文通过讲解Linux下的内存映射,从而知道怎么将设备地址映射到用户空间。......【阅读全文】

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

发布时间:2014-07-16 16:33:55

 什么时候需要创建线程池呢?简单的说,如果一个应用需要频繁的创建和销毁线程,而任务执行的时间又非常短,这样线程创建和销毁的带来的开销就不容忽视,这时也是线程池该出场的机会了。如果线程创建和销毁时间相比任务执行时间可以忽略不计,则没有必要使用线程池了。   下面是Linux系统下用C语言创建的.........【阅读全文】

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

发布时间:2014-07-16 16:14:25

目录 [hide]0. 为什么写这篇博客1. 如何统计进程CPU利用率1.0 概述1.1 /proc/stat 统计总CPU消耗1.2 进程消耗的CPU时间片1.3 "非阻塞"的计算进程CPU利用率1.4 ps命令显示的.........【阅读全文】

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

发布时间:2014-07-16 16:04:53

Here at the Microsoft Security Response Center, we investigate thousands of security reports every year. In some cases, we find that a report describes a bona fide security vulnerability resulting from an issue in one of our products; when this happens, we develop a corrective update as quickly as.........【阅读全文】

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

发布时间:2014-07-14 16:19:19

Linux进程间的通信可以简称为IPC(Interprocess Communication),前面说过的 Linux的同步工具也是属于IPC的一部分,这里我想说的是通常意义的进程间的实际数据通。1管道管道是最早的UNIX IPC,所有的UNIX系统都支持这个IPC通信机制。我们最常见到使用它的位置就是shell中使用的管道命令.........【阅读全文】

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

发布时间:2014-07-12 11:52:46

原文标题:Page Cache, the Affair Between Memory and Files原文地址:http://duartes.org/gustavo/blog/ [注:本人水平有限,只好挑一些国外高手的精彩文章翻译一下。一来自己复习,二来与大家分享。] 上次我们考察了内核如何为一个用户进程管理虚拟内存,但是没有涉及文件及I/O。这次我.........【阅读全文】

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

发布时间:2014-07-12 11:51:40

原文标题:How The Kernel Manages Your Memory原文地址:http://duartes.org/gustavo/blog/ [注:本人水平有限,只好挑一些国外高手的精彩文章翻译一下。一来自己复习,二来与大家分享。]     在仔细审视了进程的虚拟地址布局之后,让我们把目光转向内核以及其管理用户内.........【阅读全文】

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

发布时间:2014-07-12 11:22:46

原文标题:Anatomy of a Program in Memory原文地址:http://duartes.org/gustavo/blog/ [注:本人水平有限,只好挑一些国外高手的精彩文章翻译一下。一来自己复习,二来与大家分享。]     内存管理模块是操作系统的心脏;它对应用程序和系统管理非常重要。今后的几篇文章.........【阅读全文】

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

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

登录 注册