摘要:
ACE是C++库的代表,超重量级的网络通信开发框架。ACE自适配通信环境(Adaptive Communication Environment)是可以自由使用、开放源代码的面向对象框架,在其中实现了许多用于并发通信软件的核心模式。 ACE是C++库的代表,超重量级的网络通信开发框架。ACE自适配通信 阅读全文
摘要:
之前写了很多linux下的底层网络API的demo,这些demo可用于了解底层的网络通信过程,但是想做出好的服务器用于实际业务还是非常困难的,需要大量的代码实现,移植性也非常差,想要写出高性能架构的服务器更是需要高深的功力和时间。所以后续关于服务器的内容会使用网络中间件ACE来实现,封装掉底层的复杂 阅读全文
摘要:
1、基本知识 poll是Linux中的字符设备驱动中的一个函数。Linux 2.5.44版本后,poll被epoll取代。和select实现的功能差不多,poll的作用是把当前的文件指针挂到等待队列。 poll的机制与select类似,与select在本质上没有多大差别,管理多个描述符也是进行轮询, 阅读全文
摘要:
golang主要特性 1、语法简单 舍弃语法糖,严格控制关键字 C++语法糖之多,令人发指,而C又太过于底层,容易出现自己造轮子的情况,如何在两者之间取舍,是每一个转向golang的工程师曾经思考过的问题。 golang的出现,就是在C和C++之间的刚刚好的取舍。 2、垃圾回收 golang支持垃圾 阅读全文
摘要:
概览 2xx 成功 2XX 的响应结果表明请求被正常处理了。 200 OK 204 No Content 206 Partial Content 3xx 重定向 3XX 响应结果表明浏览器需要执行某些特殊的处理以正确处理请求。 301 Moved Permanently 永久性重定向。 该状态码表示 阅读全文
摘要:
String 这应该是应用最广泛的了,简单的 key-value 类型。value 不仅可以是 String,也可以是数字。还可以享受 Redis 的定时持久化(可以选择 RDB 模式或者 AOF 模式),操作日志及 Replication 等功能。 Set 利用 Redis 提供的 Set 数据结 阅读全文
摘要:
外排序问题的出现,主要是因为内存不够。当需要排序的数据量过多,以至于无法一次性把所有的数据都放入内存,这导致了外排序问题的出现。解决大数据量排序的方法是:先分块排序,后进行块合并。 外排序步骤 这就是归并排序在外排序中的应用。 对每块数据进行排序,可以使用各种内排序方法:快速排序、归并排序、堆排序等 阅读全文
摘要:
阅读目录 C++异常机制概述 throw 关键字 异常对象 catch 关键字 栈展开、RAII 异常机制与构造函数 异常机制与析构函数 noexcept修饰符与noexcept操作符 异常处理的性能分析 阅读目录 C++异常机制概述 throw 关键字 异常对象 catch 关键字 栈展开、RAI 阅读全文
摘要:
阅读目录 前言 new与malloc的10点区别 1. 申请的内存所在位置 2.返回类型安全性 3.内存分配失败时的返回值 4.是否需要指定内存大小 5.是否调用构造函数/析构函数 6.对数组的处理 7.new与malloc是否可以相互调用 8.是否可以被重载 9. 能够直观地重新分配内存 10. 阅读全文
摘要:
AVL树的介绍 AVL树是高度平衡的而二叉树。它的特点是:AVL树中任何节点的两个子树的高度最大差别为1。 上面的两张图片,左边的是AVL树,它的任何节点的两个子树的高度差别都<=1;而右边的不是AVL树,因为7的两颗子树的高度相差为2(以2为根节点的树的高度是3,而以8为根节点的树的高度是1)。 阅读全文
摘要:
线程间无需特别的手段进行通信,因为线程间可以共享数据结构,也就是一个全局变量可以被两个线程同时使用。 不过要注意的是线程间需要做好同步,一般用 mutex。 可以参考一些比较新的 UNIX/Linux 编程的书,都会提到 Posix 线程编程,比如《UNIX环境高级编程(第二版)》、《UNIX系统编 阅读全文