排序:
默认
按更新时间
按访问量

IO多路复用之epoll函数详解

epoll   在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。   相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮...

2016-08-17 01:34:07

阅读数:1876

评论数:0

Linux下的进程1——进程概念,进程切换,上下文切换,虚拟地址空间

进程概述  当一个可执行程序在现代系统上运行时,操作系统会提供一种假象——好像系统上只有这个程序在运行,看上去只有这个程序在使用处理器,主存和IO设备。   处理器看上去就像在不间断的一条接一条的执行程序中的指令,即改程序的代码和数据是系统存储器中唯一的对象。这些假象是通过进程的概念来实现的。 ...

2016-08-14 20:01:24

阅读数:4697

评论数:1

C++泛型编程2——类模板,容器适配器,仿函数

模板编译  当编译器遇到一个模板定义时,它并不生成代码。只有当我们实例化出模板的一个特定版本时,编译器才会生成代码。当我们使用模板时,比编译器才生成代码。  这一特性影响了我们如何组织代码以及错误何时被检测到。   通常,当我们调用一个函数时,编译器只需要掌握函数的声明。   类似的,当我们使...

2016-08-13 22:46:06

阅读数:1179

评论数:0

C++泛型编程1——函数模板实例化,模板参数,重载及特化

在C++中我们都知道引入了函数重载,那么在实际应用过程中:   如果我们想要实现一个加法函数,我们可以写出很简单的代码:   int ADD(int a,int b) {   return a+b; }  上面的函数很简单,但是仔细想一下,这样就实现了加法操作嘛?当我们的实参类型为double...

2016-08-13 02:09:37

阅读数:2657

评论数:0

【TCP/IP】TIME_WAIT状态及地址reuse问题,SO_REUSEADDR参数详解

TCP/IP四次挥手  在TCP/IP协议取消连接的时候会进行四次挥手过程:         当某个应用进程主动关闭的时候,该端TCP会发送一个FIN分节,表示数据发送完毕。   接收到这个FIN的对端执行被动关闭,这个FIN由TCP进行确认,他的接受也作为一个文件结束符EOF传递给接收端...

2016-08-07 01:26:45

阅读数:1964

评论数:0

【UNIX网络编程】五种I/O模型,阻塞非阻塞同步异步问题详解

IO复用  在写简单的TCP/IP服务器-客户端程序时,客户端要同时处理两个输入:   标准输入 TCP套接字  在结束的时候,因为客户端正阻塞于标准输入上的read函数,服务器TCP虽然正确的给客户TCP发送了一个FIN,但是既然客户进程正在阻塞于从标准输入读入的过程,他将看不到这个EOF,直到...

2016-08-06 23:53:30

阅读数:1409

评论数:0

【Linux】终端,进程组,作业,会话及作业控制

终端概念       在UNIX系统中,用用户通过终端登录系统后得到一一个Shell进程,这个终端成为Shell进程的控制终端 (Controlling Terminal),控制终端是保存在PCB中的信息,而我们知道fork会复制PCB中的信息,因此由Shell进程启动的其它进程的控制终端也是这个...

2016-08-03 02:00:55

阅读数:3742

评论数:0

C++多态篇3——虚函数表详解之多继承、虚函数表的打印

在上上一篇C++多态篇1一静态联编,动态联编、虚函数与虚函数表vtable中,我最后简单了剖析了一下虚函数表以及vptr。 而在上一篇文章C++多态篇2——虚函数表详解之从内存布局看函数重载,函数覆盖,函数隐藏中我详细介绍了虚函数的函数重载,函数覆盖以及函数隐藏的问题,其实在那一篇文章中...

2016-04-15 15:49:05

阅读数:6136

评论数:2

C++多态篇2——虚函数表详解之从内存布局看函数重载,函数覆盖,函数隐藏

上一篇C++多态篇1一静态联编,动态联编、虚函数与虚函数表vtable中,我在最后分析了虚函数与虚函数表的内存布局,在下一篇详细剖析虚函数及虚函数表的过程中,我发现有关函数重载,函数覆盖,函数重写和函数协变的知识也要理解清楚才能对虚函数表在内存中的布局,对派生类的对象模型以及对多态的实现有更深的理...

2016-04-15 01:23:17

阅读数:5449

评论数:2

C++多态篇1一静态联编,动态联编、虚函数与虚函数表vtable

前面我写了几篇关于继承的博文,分别为: c++继承详解之一——继承的三种方式、派生类的对象模型 C++继承详解之二——派生类成员函数详解(函数隐藏、构造函数与兼容覆盖规则) C++继承详解之三——菱形继承+虚继承内存对象模型详解vbptr(1) C++继承详解之四——is-a接口继承和h...

2016-04-13 15:13:24

阅读数:3904

评论数:5

Linux下Mysql常用命令总结

很久没有写博客啦,大概有一年了,还记得以前找工作前疯狂的总结,后期慢慢的有些懈怠,最近总结了一下自己的问题,觉得博客这个方式是一个很好的学习方式,还是不能丢掉,所以今天又开始写博客啦,如果是师妹师弟看到我的这篇文章,也希望对你们有些帮助。   写这篇文章的初衷是我发现在工作中,总是与mysql...

2017-07-19 18:52:03

阅读数:524

评论数:0

socket编程选项——setsockopt和getsockopt

头文件:#include <sys/types.h> #include <sys/socket.h> setsockopt函数原型: int setsockopt(int sockfd, int level, int optname, const void* opt...

2016-09-17 15:33:34

阅读数:1228

评论数:0

服务器编程——gethostbyname函数

使用这个函数,首先要包含2个头文件:#include <netdb.h> #include <sys/socket.h>struct hostent *gethostbyname(const char *name);  这个函数的传入值是域名或者主机名,例如”www.goo...

2016-09-17 15:09:10

阅读数:811

评论数:0

boost库智能指针,循环引用,定置删除器详解

智能指针用于指向存放在堆,即动态分配对象指针的类,用于对指针所指向的对象生存期的控制,防止内存泄露。   boost库中的智能指针定义在namespace boost中,包括:   shared_ptr   weak_ptr   scoped_ptr   shared_arr   sc...

2016-09-16 00:16:35

阅读数:1158

评论数:0

计算机网络

HTTPGet和Post答:get和post都是http协议中与服务器交互的方法。   url地址用于描述一个网络上的资源,而get,post,put,delete等方法就对应着这个资源的查,改,增,删四个操作。   Get方法一般用于获取/查询资源信息。   Post一般用于更新资源信息。...

2016-08-31 01:17:01

阅读数:382

评论数:0

C/C++

C与C++的区别答:C是结构化语言,重点在于算法和数据结构。   C++是面向对象的语言。首先要考虑的是如何构造一个对象模型,让这个模型能够配合对应的问题。   最大的区别在于,解决问题的思想方法不一样。const与define答:define只是用来做文本替换,他的生命周期止于编译器,存在于...

2016-08-31 00:34:50

阅读数:498

评论数:0

select,poll,epoll优缺点及比较

在之前我已经分析了这三个函数,请看我之前的文章: IO多路复用之select函数详解 IO多路复用之poll函数详解 IO多路复用之epoll函数详解   这篇文章只总结优缺点,以便面试时回答。select优点1)select()的可移植性更好,在某些Unix系统上不支持poll() ...

2016-08-17 01:51:11

阅读数:6438

评论数:1

IO多路复用之poll函数详解

poll  poll的机制与select类似,与select在本质上没有多大差别,管理多个描述符也是进行轮询,根据描述符的状态进行处理,但是poll没有最大文件描述符数量的限制。   poll和select同样存在一个缺点就是,包含大量文件描述符的数组被整体复制于用户态和内核的地址空间之间,而不...

2016-08-17 01:05:01

阅读数:2159

评论数:0

IO多路复用之select函数详解

IO复用   我们首先来看看服务器编程的模型,客户端发来的请求服务端会产生一个进程来对其进行服务,每当来一个客户请求就产生一个进程来服务,然而进程不可能无限制的产生,因此为了解决大量客户端访问的问题,引入了IO复用技术。   即:一个进程可以同时对多个客户请求进行服务。   也就是说IO复用...

2016-08-17 00:48:14

阅读数:4225

评论数:1

Linux下的进程3——进程创建,文件替换,进程程序替换

进程标识  每个进程都有一个非负整型标识唯一的进程ID。因为进程ID标识符总是唯一的,常将其用作其他标识符的一部分以保证其唯一性。   虽然是唯一的,但是进程ID是可复用的,当一个进程终止后,其进程ID就称为复用的候选者,大多数UNIX系统实现延迟复用算法,使得赋予新建进程的ID不同于最近终止进...

2016-08-16 01:12:07

阅读数:1232

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭