frankfan的胡思乱想

学海无涯,回头是岸

2021年12月28日

UDP编程实践与细节

摘要: 基于以下几点考虑,本文章并不会使用udp协议来实际工程编码实现聊天室。这几点分别是: udp实践IM(即时通讯)并不是科学合理的实践(学习udp-socket的用法无可厚非) udp通信的实践领域更多的是音视频通讯(传输)这种场景上(实时性高,但对消息完整性要求不高) 无论是从学习还是工作的角度,没 阅读全文

posted @ 2021-12-28 09:40 shadow_fan 阅读(121) 评论(0) 推荐(0) 编辑

TCP编程

摘要: tcp 面向连接 流 本文我们需要掌握的主要知识是『理解TCP是面向连接的协议』、『理解TCP是流式的』。 这两个知识点非常关键,只有掌握了这两个基本问题,才能进一步理解TCP协议的真正运作机制,以及网络编程中所遇到和需要解决的问题。 在接下来的章节中,我们需要在基于TCP协议的基础上掌握解决高性能 阅读全文

posted @ 2021-12-28 09:38 shadow_fan 阅读(50) 评论(0) 推荐(0) 编辑

NAT(NAPT)机制及应用

摘要: UDP/TCP的差异 TCP的模拟 模拟TCP的现实意义 本章内容分为三部分: NAT(NAPT)机制及应用 TCP协议的特性 使用UDP模拟TCP实现TCP协议中的主要特性 NAT(NATP) 我们已经学习过UDP与TCP协议(伯克利socket接口函数)的使用,无论是sendto还是send,我 阅读全文

posted @ 2021-12-28 09:36 shadow_fan 阅读(1415) 评论(0) 推荐(0) 编辑

TCP及其细节

摘要: 三次握手 四次挥手 ack 重传 拥塞控制 滑动窗口 接受/发送窗口 这里我们讨论的主题是TCP协议及其细节。 『TCP是面向链接的字节流协议』关于TCP的定性我们已经烂熟于胸了。 对TCP最重要也是最直观的认识是『可靠传输』。意思是对于用户来说只有2种情况: 告诉用户这条链接断了,传输失败(rea 阅读全文

posted @ 2021-12-28 09:35 shadow_fan 阅读(81) 评论(0) 推荐(0) 编辑

基本的网络IO模型

摘要: 线程池 IO模型 IOCP UDP TCP的理论 Socket的基本实践 用户态缓冲区的操作 完整的使用socket接口来跨进程数据传输 这是我们网络编程这一阶段的主要路径。核心是围绕『跨进程』的数据传输。 随着课程的推进,我们逐渐面临一些新的场景,使得我们学习的通用知识似乎无法很好的处理这些场景。 阅读全文

posted @ 2021-12-28 09:33 shadow_fan 阅读(40) 评论(0) 推荐(0) 编辑

多路复用

摘要: 多路复用select的细节 IOCP 高并发服务器常用架构 上一章节我们讨论了线程池、IO模型这两个经典话题。这对于构建高性能高并发服务器是非常重要的一环,今天在这一章节中我们主要来聊聊通用的高并发服务器的架构应该是怎样的,以及IO多路复用的具体用法以及异步IO的Windows实现(IOCP) 因为 阅读全文

posted @ 2021-12-28 09:32 shadow_fan 阅读(148) 评论(0) 推荐(0) 编辑

引用与默认参数

摘要: const 引用 默认参数 const关键词,引用的使用以及函数的默认参数。 const C++中使用const来修饰变量,使其成为常量,所谓常量,就是只能在初始化时给定值,后续不支持再次修改其值。 要做到这个效果,除了在内存的语义上做限定使得内存的WRES中的只读属性设置为1外,const更多的是 阅读全文

posted @ 2021-12-28 09:28 shadow_fan 阅读(238) 评论(0) 推荐(0) 编辑

迭代器

摘要: 迭代器及其实现原理 『容器迭代器』以及迭代器的实现原理。 在详细讨论迭代器的实现细节时,我们需要事先搞清楚几个前置问题: 1、基于堆的数据结构怎么表述一个节点的位置信息? 2、常规的表达位置的方式有什么弊端? 3、为什么需要迭代器? 4、迭代器的是怎么设计的? 基于堆的数据结构节点都是分配在堆上的, 阅读全文

posted @ 2021-12-28 09:28 shadow_fan 阅读(43) 评论(0) 推荐(0) 编辑

函数重载与内联

摘要: 命名空间 函数重载 内联函数 本章讲授的主要 内容是命名空间、函数重载以及内联函数,这三个相对于C语言,都是C++独有的。并且都是为了解决C语言无法解决或者优雅解决的问题而存在的。 命名空间 C/C++是编译型语言,在编译后会将源码中定义的变量名或者函数名等变成唯一的符号名,这个符号是独一无二的,这 阅读全文

posted @ 2021-12-28 00:38 shadow_fan 阅读(69) 评论(0) 推荐(0) 编辑

结构体与类

摘要: 类 类与结构体 类与封装 本章讲授的主要内容是C++中的类的定义以及与结构体的对比。 C++是C语言的超集,是对C语言的完全兼容。 C语言是一门面向过程的语言,而C则是多范式语言,而面向对象是其基本范式。在C语言中,使用结构体来模拟面向对象编程的思想,因此在C中,对结构体struct这个关键字做了语 阅读全文

posted @ 2021-12-28 00:34 shadow_fan 阅读(73) 评论(0) 推荐(0) 编辑

析构函数

摘要: 构造函数/析构函数 this指针 new/delete 本章讲授的主要内容是C++类的构造,其中牵涉到的概念有类的构造函数与析构函数,this指针与new、delete关键字。 构造函数/析构函数 在所有面向对象的语言中,为了方便管理对象的生命周期,会在对象生成时与对象销毁时调用两个特殊的函数,构造 阅读全文

posted @ 2021-12-28 00:33 shadow_fan 阅读(151) 评论(0) 推荐(0) 编辑

拷贝构造的应用

摘要: 拷贝构造 自定义字符串类 拷贝构造 C++中创建对象的方式处理直接定义在栈中ClassType obj也可以定义在堆中ClassType *obj = new ClassType 而无论是哪种方式,都是通过默认构造函数(或者自定义构造函数)创建的。 此外,C还支持通过另一个C对象创建一个新的C++对 阅读全文

posted @ 2021-12-28 00:28 shadow_fan 阅读(39) 评论(0) 推荐(0) 编辑

成员

摘要: 常成员函数 初始化列表 静态成员 常成员函数 在C++中,被const关键词修饰的对象只能在初始化时赋值,此后不能被修改。并且,对象的成员也不能被修改; #include <iostream> using namespace std; class Node{ public: int value; } 阅读全文

posted @ 2021-12-28 00:27 shadow_fan 阅读(277) 评论(0) 推荐(0) 编辑

构造函数

摘要: 普通构造 拷贝构造 隐式构造 构造函数 无论是普通的默认构造还是自定义参数构造函数,或者拷贝构造函数,都可以认为是对象创建完成后提供给用户的一个hook point. 给用户一个初始化对象成员的一个入口点,通常默认情况下编译器并不会自动实现默认构造函数,除非有成员变量的访问或者赋值等相关操作,而一旦 阅读全文

posted @ 2021-12-28 00:27 shadow_fan 阅读(159) 评论(0) 推荐(0) 编辑

友元和引用

摘要: 友元 引用计数 C++提供完整的面向对象支持,提供体系完善的构造函数与析构函数,对成员也提供相应的访问权限关键字(protect public private)。 在面向对象中,总是倾向于将成员变量设计成private 将成员函数设计成public ,不过这样设计的一个缺点在于当类用在全局函数时,全 阅读全文

posted @ 2021-12-28 00:26 shadow_fan 阅读(72) 评论(0) 推荐(0) 编辑

继承

摘要: 继承 本章讲授的主要内容是C++中的继承 分别从应用场景、语法、内存结构等方面进行阐述。 继承是面向对象的三大特性之一(封装、继承、多态),继承更多的是先有其设计模式后有其语法支持,在设计模式的角度,与继承通常被一起讨论的是组合 。 C++中继承的场景 面向对象中封装的目的是提高代码的复用度,封装是 阅读全文

posted @ 2021-12-28 00:24 shadow_fan 阅读(36) 评论(0) 推荐(0) 编辑

c++面向对象基本

摘要: 默认构造 抽象类 多继承 本章讲授的主要内容依然围绕C++中的面向对象世界观的构建,其中牵涉到构造函数、抽象类与多重继承的概念。 默认构造 编译器生成的构造函数,被称为默认构造函数,该构造函数不带参数。 C++中类的构造分为不带参的构造函数与带参构造函数,带参构造函数需要用户自己定义并实现,而不带参 阅读全文

posted @ 2021-12-28 00:23 shadow_fan 阅读(23) 评论(0) 推荐(0) 编辑

多态

摘要: 多态 这是面向对象编程世界中的三大特性之一,各支持面向对象编程语言都对其有语法上的支持。 分别从多态的产生以及应用场景、多态效果的模拟、以及C++对多态机制的实现原理等进行阐述 多态的产生极其应用场景 在面向对象世界中,类,是基础单位,这本质上是在模拟现实世界中的构建规则。 在面向对象世界中有一个继 阅读全文

posted @ 2021-12-28 00:23 shadow_fan 阅读(33) 评论(0) 推荐(0) 编辑

C++类的各种内存结构

摘要: 名词阐释 C++类的各种内存结构 关于一些C++中基础名词概念的厘清,如函数重载 函数重写 函数覆盖(隐藏) 以及C++类的相关内存结构在不同条件下的异同。 函数重载 函数重载是C++一个显著区别与C的语言特性。 这一特性的显著表现就是支持定义同名函数,只要函数的参数列表不同(或者成员函数否被con 阅读全文

posted @ 2021-12-28 00:21 shadow_fan 阅读(797) 评论(0) 推荐(0) 编辑

运算符重载

摘要: 运算符重载 运算符重载的主要目的是为了更加简洁的书写代码,C语言语法繁复,形式复杂多样,从源码的角度上看异常复杂。C还支持模板编程,这样一来源码显得更加复杂了,因此,C++也支持将常见的运算符进行重载,简化形式。 并非所有运算符都支持重载,如点. 就不支持,此外还有其他,无需记住,编译器会提示。 运 阅读全文

posted @ 2021-12-28 00:20 shadow_fan 阅读(164) 评论(0) 推荐(0) 编辑

导航