摘要: 说说tcp_nodelay的原理: TCP_NODELAY和TCP_CORK基本上控制了包的“Nagle化”,这里我们主要讲TCP_NODELAY.Nagle化在这里的含义是采用Nagle算法把较小的包组装为更大的帧。JohnNagle是Nagle算法的发明人,后者就是用他的名字来命名的,他在198... 阅读全文
posted @ 2015-07-23 21:27 Jianhui_Ethan 阅读(295) 评论(0) 推荐(0) 编辑
摘要: 右值引用相关的几个函数:std::move, std::forward 和 成员的 emplace_back;通过这些函数我们可以避免不必要的拷贝,提高程序性能。move 是将 对象的状态 或者 所有权 从一个对象转移到另一个对象,只是转移,没有内存的搬迁或者内存拷贝。如图,深拷贝 和 move 的... 阅读全文
posted @ 2015-07-23 14:24 Jianhui_Ethan 阅读(780) 评论(0) 推荐(0) 编辑
摘要: function/bind1. std::functioni.是一个函数的包装器ii.std::functioniii.这是一个模板实现的函数对象类,它可以包装其它任意的函数对象,而被包装的函数对象具有类型为T1,T2,…,TN的参数,其返回值为R类型iv.function 对象的最大用处在于实现函... 阅读全文
posted @ 2015-07-23 00:32 Jianhui_Ethan 阅读(488) 评论(0) 推荐(0) 编辑
摘要: 移动语义--std::move编译器只对右值引用才能调用转移构造函数和转移赋值函数,而所有命名对象都只能是左值引用,如果已知一个命名对象不再被使用而想对它调用转移构造函数和转移赋值函数,也就是把一个左值引用当做右值引用来使用,怎么做呢?标准库提供了函数 std::move,这个函数以非常简单的方式将... 阅读全文
posted @ 2015-07-22 21:33 Jianhui_Ethan 阅读(1662) 评论(0) 推荐(0) 编辑
摘要: 一、缘起C++ 语言没有自动内存回收机制,每次 new 出来的内存都要手动 delete。程序员忘记 delete,流程太复杂,最终导致没有 delete;异常导致程序过早退出,没有执行 delete 的情况并不罕见。用智能指针便可以有效缓解这类问题,本文主要讲解参见的智能指针的用法。包括:std:... 阅读全文
posted @ 2015-07-22 21:16 Jianhui_Ethan 阅读(317) 评论(0) 推荐(0) 编辑
摘要: 昨日面试被组考官问及const与define异同,开始还简单,后来被问的我脑袋是一团浆糊.今日差点资料总结一下1. const与define。两者都可以用来定义常量,但是const定义时,定义了常量的类型,所以更精确一些。#define只是简单的文本替换,除了可以定义常量外,还可以用来定义一些简单的... 阅读全文
posted @ 2015-07-22 21:12 Jianhui_Ethan 阅读(257) 评论(0) 推荐(0) 编辑
摘要: c/c++强制类型转换Q:什么是C风格转换?什么是static_cast, dynamic_cast 以及 reinterpret_cast?区别是什么?为什么要注意?A:转换的含义是通过改变一个变量的类型为别的类型从而改变该变量的表示方式。为了类型转换一个简单对象为另一个对象你会使用传统的类型转换... 阅读全文
posted @ 2015-07-22 20:55 Jianhui_Ethan 阅读(222) 评论(0) 推荐(0) 编辑
摘要: 第一、四个用途用途一:定义一种类型的别名,而不只是简单的宏替换。可以用作同时声明指针型的多个对象。比如: char* pa, pb; // 这多数不符合我们的意图,它只声明了一个指向字符变量的指针, // 和一个字符变量; 以下则可行: typedef char* PCHAR; // 一般用大写 P... 阅读全文
posted @ 2015-07-22 11:10 Jianhui_Ethan 阅读(218) 评论(0) 推荐(0) 编辑
摘要: 转载至: http://www.dutor.net/index.php/2013/11/rvalue-reference-move-semantics-and-perfect-forwarding/ C++11 引入的新特性中,除了并发内存模型和相关设施,这些高帅富之外,最引人入胜且接地气的特性... 阅读全文
posted @ 2015-07-21 20:41 Jianhui_Ethan 阅读(689) 评论(0) 推荐(0) 编辑
摘要: 1. 智能指针(Smart Pointer)i.是存储指向动态分配(堆)对象指针的类ii.在面对异常的时候格外有用,因为他们能够确保正确的销毁动态分配的对象iii.RAII类模拟智能指针,见备注2. C++11提供了以下几种智能指针,位于头文件,它们都是模板类i.std::auto_ptr(复制/赋... 阅读全文
posted @ 2015-07-21 20:29 Jianhui_Ethan 阅读(628) 评论(0) 推荐(0) 编辑