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

服务器程序框架

C/S模型 服务器启动后,创建一个监听 socket,调用 bind 函数将其绑定到特定端口,调用 listen 函数等待客户连接。 服务器稳定运行后,客户端可以调用 connect 函数向其发起连接。由于客户连接请求是随机到达的异步事件,服务器使用某种 I/O 模型(select、poll、e...

2018-10-12 18:06:43

阅读数:11

评论数:0

同步、异步与阻塞、非阻塞

UNIX下可用的I/O模型: 阻塞式I/O; 非阻塞式I/O; I/O复用(select,poll,epoll…); 信号驱动式I/O(SIGIO); 异步I/O(POSIX的aio_系列函数); 阻塞式I/O模型:默认情况下,所有套接字都是阻塞的。 一个输入操作通常包括两个不同阶段:(1)等...

2018-10-09 17:45:18

阅读数:7

评论数:0

epoll

LT (LevelTriggered):水平触发 ET(EdgeTriggered):边缘触发(高效模式) LT:对于LT水平触发下的文件描述符,当epoll_wait检测到其上有事件发生并将其通知应用程序后,应用程序可不立即处理改事件。这样,当应用程序下一次调用epoll_wait时,epol...

2018-10-09 10:52:42

阅读数:10

评论数:0

右值引用

两大作用: 移动语义和完美转发。 移动语义,解决各种情形下对象的资源所有权转移的问题 C++通过拷贝构造函数和拷贝赋值操作符为类设计了拷贝/复制的概念,但为了实现对资源的移动操作,调用者必须使用先复制、再析构的方式。否则,就需要自己实现移动资源的接口。 左值对应变量的存储位置,而右值对应变量的值本...

2018-09-28 16:03:51

阅读数:17

评论数:0

std::bind

《C++ Primer5》P354 定义 函数模板 bind 生成 f 的转发调用包装器,调用此包装器等价于以一些绑定到 args 的参数调用 f 。 template< class F, class... Args > bind( F&...

2018-09-26 17:30:00

阅读数:11

评论数:0

std::function

《C++ Primer5》p512 定义 类模板 std::function 是通用多态函数封装器。 std::function 的实例能存储、复制及调用任何可调用 (Callable) 目标——函数、 lambda 表达式、 bind 表达式或其他函数对象,还有指向成员函数指针和指向数据成员指...

2018-09-26 16:28:34

阅读数:22

评论数:0

Zero-copy(零复制)

零复制 零复制(英语:Zero-copy;也译零拷贝技术是指计算机执行操作时,CPU不需要先将数据从某处内存复制到另一个特定区域。这种技术通常用于通过网络传输文件时节省CPU周期和内存带宽。 原理 操作系统某些组件(例如驱动程序、文件系统和网络协议栈)若采用零复制技术,则能极大地增强了特定应用程序...

2018-09-25 10:34:11

阅读数:7

评论数:0

copy on write(写时复制)

原理 写入时复制(英语:Copy-on-write,简称COW)是一种计算机程序设计领域的优化策略。其核心思想是,如果有多个调用者(callers)同时请求相同资源(如内存或磁盘上的数据存储),他们会共同获取相同的指针指向相同的资源,直到某个调用者试图修改资源的内容时,系统才会真正复制一份专用副本...

2018-09-25 10:25:06

阅读数:10

评论数:0

C++ volatile修饰符

避免编译器对生成的机器码进行优化 功能 对声明为volatile的变量进行的任何操作都不会被优化器去除,即使看起来没有任何意义(例如,连续多次对某个变量赋相同的值),因为它可能会被编译时未知的某个外部设备或线程使用 被声明为volatile的变量不会被编译器优化到寄存器中,每次操作都保证在内...

2018-09-11 11:20:35

阅读数:7

评论数:0

C++算法习题

1.分别写出bool,int,float,指针类型变量与零的比较 2.判断一段程序是由c还是由c++编写 3.递归反向输出字符串 4.用递归算法判断数组a[n]是否为一个递增数组 5.不用库函数,用c语言将一整型数字转化为字符串 6.实现strcmp 7.实现子串定位 8.给定字符串A和B...

2018-08-07 18:52:28

阅读数:86

评论数:0

C++四种类型转换方式

C++四种类型转换方式 reinterpret_cast<new_type>(expression) dynamic_cast<new_type>(expression) static_cast&a...

2018-07-31 12:28:16

阅读数:86

评论数:0

堆和栈的区别

申请方式 stack由系统自动分配,heap需要程序员自己申请,并指明大小 申请后系统的响应 栈:只要剩余空间大于所申请的空间,系统就会为程序提供内存,否则就会报栈溢出; 堆:系统有一个记录空闲内存地址的链表,当申请内存时,系统会遍历该链表,找到第一个空间大于所申请堆空间的结点,并将该结点...

2018-07-31 10:19:45

阅读数:46

评论数:0

C++知识点问答

1.关键字static的作用在 c 语言中? 在函数体内,一个被声明为静态的变量在这一函数调用过程中维持不变 在模块内(一个 .c 文件内),被声明的静态变量可以被模块内所有函数访问,但不能被模块外的其他函数访问。 在模块内,一个被声明为静态的函数只能被同一模块内的其它函数调用。 2.引用...

2018-07-30 18:09:48

阅读数:25

评论数:0

C++多态

多态 1.意义 接口的多种不同实现方式 多态性是指具有不同功能的函数可以用同一个函数名,这样就可以用一个函数名调用不同内容的函数 面向对象中的表述:向不同的对象发送同一个消息,不同的对象在接收时会产生不同的行为(即方法); 也就是说,每个对象可以用自己的方式去响应共同的消息。所谓消息,就是调...

2018-07-30 11:19:09

阅读数:13

评论数:0

C++面试之语言基础(3)

51.C++重写和重载重定义区别 52.一个数据成员是否可以既是const又是static,为什么?如果可以,如何初始化。 53.构造函数和析构函数的异同点。 54.自动调用拷贝构造函数的几种情形。 55.类型转换构造函数是什么? 56.异常处理方式。 57.成员函数和友元函数的区别 58...

2018-06-01 22:00:53

阅读数:24

评论数:0

C++面试之语言基础(2)

21.不借助第三个数交换两个数的值。 第一种:a=a+b;b=a-b;a=a-b; 第二种:a=a*b;b=a/b;a=a/b;(b不为0) 第三种:a=a^b;b=a^b;a=a^b; 22.用宏定义写出swap(x,y) #define swap(x,y) (x)=(x)+(y);(...

2018-06-01 17:42:20

阅读数:62

评论数:0

C++ 类与对象

对象 对象的定义 对象的构造 缺省构造函数 拷贝构造函数 构造函数的初始化列表 P258 对象的析构 对象数组 类与对象的成员 内联函数 P213 常数据成员 常成员函数 静态数据成员 静态成员函数 静态常数据成员 友元函数与友元类 继承 继承的意义 单继承 多继承 函数覆盖与二义...

2018-06-01 09:36:26

阅读数:16

评论数:0

函数指针

一.函数指针介绍 二.函数指针的使用 一.函数指针介绍 P221 函数指针指向某种特定类型,函数的类型由其参数及返回类型共同决定,与函数名无关。 int add(int nLeft,int nRight);//函数定义 该函数类型为 int(int,int) ,要想...

2018-05-30 23:14:34

阅读数:16

评论数:0

智能指针与动态内存

1.C++Primer 2.智能指针作用 3.shared_ptr 3.1shared_ptr原理 3.2shared_ptr使用 4.unique_ptr 4.1unique_ptr 原理 4.2unique_ptr 使用 5.weak_ptr 5.1weak_ptr原理 5.2wea...

2018-05-18 17:09:38

阅读数:17

评论数:0

RAII(资源获取即初始化)

RAII(Resource Acquisition Is Initialization) 主要作用: 典型用法 RAII(Resource Acquisition Is Initialization) RAII要求,资源的有效期与持有资源的对象的生命期严格绑定,即由对象的构造...

2018-05-17 17:22:38

阅读数:23

评论数:0

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