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

Linux后台服务器编程。

文章分类

全部博文(299)

文章存档

2015年(2)

2014年(297)

发布时间:2014-06-13 16:50:41

存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程。在大型数据库系统中,存储过程和触.........【阅读全文】

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

发布时间:2014-06-12 22:07:24

数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出。对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标。数据库连接池正是针对这个问题提出来的。数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而再不.........【阅读全文】

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

发布时间:2014-06-12 21:55:05

线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。线程池线程都是后台线程。每个线程都使用默认的堆栈大小,以默认的优先级运行,并处于多线程单元中。如果某个线程在托管代码中空闲(如正在等待某个事件),则线程池将插入另一个辅助线程来使所有处理器保持繁忙。如果所有线程.........【阅读全文】

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

发布时间:2014-06-09 20:33:13

结合阻塞与非阻塞访问、poll 函数可以较好地解决设备的读写,但是如果有了异步通知就更方便了。异步通知的意思是:一旦设备就绪,则主动通知应用程序,这样应用程序根本就不需要查询设备状态,这一点非常类似于硬件上“中断”地概念,比较准确的称谓是:信号驱动(SIGIO)的异步 I/O。可以使用signal()函数来设置对应的信号.........【阅读全文】

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

发布时间:2014-06-09 17:17:07

同步IO与异步IO的区别 首先要明确一点:不同IO模型之间的差别本质上是CPU的参与方式 这里重点说一下各自的应用场景 如何选择同步还是异步呢? 主要有这么几个指标供参考 1.并发数量 2.接收字节数 3.处理请求所需CPU时间 我们一个一个来考察 并发数 并.........【阅读全文】

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

发布时间:2014-06-09 17:04:44

AIO关于AIO的讨论,可以参看这个帖子 http://bbs.chinaunix.net/thread-4064773-1-1.html......【阅读全文】

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

发布时间:2014-06-09 16:44:30

之前博客有一个俄罗斯方块(使用异步io实现), 这个相对简单......【阅读全文】

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

发布时间:2014-06-07 17:35:59

新疆 linux tcp MTU MSS 1448 ......【阅读全文】

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

发布时间:2014-06-07 17:19:43

新疆 linux send recv......【阅读全文】

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

发布时间:2014-06-07 15:41:12

新疆 linux IO调度 IO队列......【阅读全文】

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

发布时间:2014-06-06 22:48:07

新疆 linux IO 流程 buffer 图......【阅读全文】

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

发布时间:2014-06-06 22:43:56

新疆 linux IO "buffer cache"......【阅读全文】

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

发布时间:2014-06-06 22:24:19

新疆 linux C库 buffer 缓冲......【阅读全文】

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

发布时间:2014-06-06 21:25:18

新疆 linux 系统调用......【阅读全文】

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

发布时间:2014-06-06 21:13:02

新疆 linux TCP 性能 优化......【阅读全文】

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

发布时间:2014-06-06 21:10:17

新疆 linux TCP 慢启动 性能 优化......【阅读全文】

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

发布时间:2014-06-06 20:21:26

有几个概念需要在开头澄清一下TCP socket分两种,监听socket和传输socket两种监听socket:负责处理网络上来的连接请求(客户端的syn包到达便是连接请求来了,如果不知道syn包,请参看一下TCP三次握手);传输socket:负责在网络上的两个端点之间传输TCP数据。 未决socket:pending socket,就是.........【阅读全文】

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

发布时间:2014-06-06 15:47:59

在Direct IO模式下,异步是非常有必要的(因为绕过了pagecache,直接和磁盘交互)。 linux Native AIO正是基于这种场景设计的,具体的介绍见:KernelAsynchronousI/O (AIO) SupportforLinux。下面我们就来分析一下AIO编程的相关知识。阻塞模式下的IO过程如下:int fd = open(const char *pathname, int flags, mode_t mode);.........【阅读全文】

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

发布时间:2014-06-06 15:10:17

Linux内核主要由五个子系统组成:进程调度,内存管理,虚拟文件系统,网络接口,进程间通信。1.进程调度(SCHED):控制进程对CPU的访问。当需要选择下一个进程运行时,由调度程序选择最值得运行的进程。可运行进程实际上是仅等待CPU资源的进程,如果某个进程在等待其它资源,则该进程是不可运行进程。Linux使用了比较简单.........【阅读全文】

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

发布时间:2014-06-05 21:45:01

在Linux和UNIX中有很多的输入输出函数,有时真是让想跟它攀点关系的菜鸟们束手无策。先来看看都有哪些函数,通过解析与总结,看看能不能让大家能这些函数有个理性的认识,哦,原来是这么回事,也就算我没白花这份闲。内核文件I/O->标准库I/O->高级I/O->IPC中1. read()/write();2. pread()/pwrite();.........【阅读全文】

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

发布时间:2014-06-04 22:41:33

虚拟文件系统(VFS)在我看来, "虚拟"二字主要有两层含义:1, 在同一个目录结构中, 可以挂载着若干种不同的文件系统. VFS隐藏了它们的实现细节, 为使用者提供统一的接口;2, 目录结构本身并不是绝对的, 每个进程可能会看到不一样的目录结构. 目录结构是由"地址空间(namespace)"来描述的, 不同的进程可能拥有.........【阅读全文】

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

发布时间:2014-06-04 17:54:59

direct io是一种不用内核缓存的io,它可以做到直接将用户空间的内存直接写入磁盘或者将磁盘数据直接读到用户空间的缓冲区,这种策略就是不用内核的缓存而使用用户自己设计的缓存,这一般在数据库系统中用到,初用linux的人在调用free命令的时候都会大吃一惊,为何文件cache占用了那么多的内存,太可怕了啊,其实这正是表.........【阅读全文】

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

发布时间:2014-06-04 10:08:53

1,malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。2,对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内.........【阅读全文】

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

发布时间:2014-06-03 15:08:58

首先要明白一点,就是无论你用哪种语言进行程序设计,也无论你用哪个函数进行文件操作(库函数也好,直接操作系统API也好),最终的文件打开的操作都是由操作系统来进行的,因此各种语言的情况从本质上来说都是相同的。用二进制模式打开一个文件的时候,文件本身的内容和你编写程序时用函数读到的内容完全相同(或者.........【阅读全文】

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

发布时间:2014-06-02 22:31:09

知道Boost中的AIO模型库是使用Epoll实现的,请看下面的讨论!应该很有帮助的,文章概论了几乎所有开发模型的效率!1: EPOLL!=AIO 我只是说Boost的网络库在linux下是用linux的epoll实现的ACE中有ACE_POSIX_AIOCB_Proactor和ACE_Dev_Poll_Reactor,分别用aio和epoll实现,这是2个不同的东西2: .........【阅读全文】

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

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

登录 注册