thread库
强调并发编程中需要注意的问题
chrono库
C语言虽然也有时间处理方法,但是精度只到秒。Linux 和 Windows 都有提供相应的方法精确到微秒,但是用法不同,显然不支持跨平台。chrono 库精度更高,同时支持跨平台,因此C++11之后使用chrono 库处理时间和日期是有必要的,至于到后面的C++版本是否会继续加强,那是以后的事情
移动语义
移动语义就是从给定对象“窃取”资源而不是拷贝资源,源对象不再拥有资源,资源的所有权已经归属于新创建的对象
Lambda 表达式
一个普通函数不仅可以没有实参,也可以无需具体的返回值类型,但是必须要有函数体。lambda表达式又名匿名函数,即没有函数名的函数,形参和返回值也可以不必有,但是函数体不能丢。至于捕获也可以不进行任何捕获,但是却必须标识它的存在
function 和 bind
function 和 bind 的结合,让回调函数的实现更加容易
智能指针
程序员可以自由分配堆内存,而栈内存由编译器申请和释放。内存管理针对的就是堆内存,在C++11的智能指针没有出现之前,为了保证内存合理的申请释放,需要配对操作,即new和delete,malloc和free,来避免内存泄漏
第二章:函数式编程之旅
事实上,函数式编程并不神秘--它只是简单的概念,但作用很大。在前一章,第一个简单的,但还远没有理解的概念就是可以把一个函数作为参数传给STL中的算法。STL 算法可解决大多数问题,因为可以定制它们的行为
第一章:函数式编程简介
我们常用的是命令式编程,它关心“怎么做”,而函数式编程关心“做什么”。通俗来讲,函数式编程更关注结果的定义,而命令式编程更关注实现的步骤
不要用 TIME-WAIT暗杀来关闭一条连接
不幸的时,TIME-WAIT 状态可以被提前终止,这被称为 TIME-WAIT 暗杀。它可能时“碰巧”产生的,也可能是故意造成的。不管是哪种情况,提前终止 TIME-WAIT 状态 都是不明智的
使用前将结构sockaddr_in清零
因为必须要将 sin_zero 清零,所以在使用之前,将整个地址结构清零就成了一种惯常的做法。通过这种方式,可以清除所有其它字段,而且还可以避免于未正式说明的字段及用法发送可能的冲突
189101112