C++
文章平均质量分 78
古德jiò
这个作者很懒,什么都没留下…
展开
-
协程设计原理(理论)
网络编程与协程原理为什么有协程,协程用来干什么?原语操作大致思路实现方法协程适用场景技术参考为什么有协程,协程用来干什么?协程有着同步的编程方式,异步的性能。即写代码是同步的方式写的,运行起来是异步的异步:检测io(调度器)与io操作不在一个流程中。如检测io(epoll_wait()判断fd读写状态)与io操作(send(),recv())同步:检测io与io操作在一个流程中//以网络io为例 同步的写法(单线程)有着多线程的性能while(1){ epoll_wait() for(;;原创 2022-01-10 20:58:42 · 427 阅读 · 0 评论 -
UDP可靠传输(KCP))
在阅读本文之前,可以先阅读一下之前的文章,了解tcp是如何保证可靠传输的本文主要以KCP协议展开讲解,KCP是UDP可靠传输协议分片 链路层具有最大传输单元MTU这个特性,它限制了数据帧的最大长度,不同的网络类型都有一个上限值。以太网的MTU是1500,你可以用 netstat -i 命令查看这个值。如果IP层有数据包要传,而且数据包的长度超过了MTU,那么IP层就要对数据包进行分片(fragmentation)操作,使每一片的长度都小于或等于MTU。我们假设要传输一个UDP数据包,以太网的MTU为原创 2022-01-09 20:56:29 · 2397 阅读 · 0 评论 -
websocket
websocket是什么是一个应用层协议,主要用于服务器主动推送数据给浏览器(不仅仅局限于浏览器)。如:浏览器请求登录csdn,csdn的服务器产生一个二维码信息给浏览器,浏览器显示二维码,通过微信扫描二维码,微信的服务器处理信息,然后去告知csdn的服务器哪个二维码被哪个微信扫描了,csdn服务器再主动发送用户相关数据给浏览器(csdn给浏览器发送消息是websocket在起作用),浏览器登录成功。自定义协议由tcp包本身的信息(如包的长度)和协议本身的信息(如版本号)组成协议格式1.建立连接原创 2022-01-04 21:05:21 · 656 阅读 · 0 评论 -
C++ 设计模式(三)工厂方法模式、抽象工厂、代理模式和适配器模式
这里写目录标题工厂方法模式定义背景要点结构图抽象工厂定义背景结构图适配器模式定义背景要点本质结构图代理模式定义背景要点本质结构图工厂方法模式定义定义一个用于创建对象的接口,让子类决定实例化哪个类。Factory Method 使得一个类的实例化延迟到子类背景实现一个导出数据的接口,让客户选择数据的导出方式要点解决创建过程比较复杂,希望对外隐藏这些细节;比如连接池,线程池;隐藏对象真实类型;对象创建会有很多参数来决定如何创建;创建对象有复杂的依赖关系;结构图抽象工厂定义提供一个原创 2021-07-27 17:45:57 · 215 阅读 · 0 评论 -
C++ 设计模式(二)单例模式、策略模式、责任链模式和装饰器模式
设计模式单例模式懒汉模式定义代码策略模式定义背景要点本质结构图责任链模式定义背景要点本质结构图装饰器模式定义背景#要点本质单例模式懒汉模式定义 懒汉模式只有在调用是才会生成单例类,没有调用的时候是不会生成的,可以理解为它很懒,所以叫懒汉模式。代码template<typename T>class Singleton {public: static T& GetInstance() { static T instance; // 这⾥要初始化DesignPatt原创 2021-07-26 16:38:33 · 188 阅读 · 0 评论 -
C++ 设计模式(一)模板方法和观察者模式
设计模式设计模式是指在软件开发中,经过验证的,用于解决在特定环境下,重复出现的,特定问题的解决方案。内存模型模式设计原则依赖倒置原则高层模块不应该依赖低层模块,二者都应该依赖抽象抽象不应该依赖具体实现,具体实现应该依赖于抽象开放封闭原则一个类应该对扩展开放,对修改关闭面向接口编程不将变量类型声明为某个特定的具体类,而是声明为某个接口。...原创 2021-07-21 16:05:24 · 215 阅读 · 0 评论 -
图论算法以及迪杰斯特拉算法(最短路径问题)C++
图论算法背景:1、网络爬虫2、地图应用:最近距离推荐,最短时间推荐3、社交网络分析:好友推荐、垃圾用户分析、社交关系分析4、推荐、精准营销5、舆情控制、信息传播6、防欺诈(网络欺诈和电信欺诈)7、计算生物学:...原创 2021-07-19 20:48:21 · 810 阅读 · 0 评论 -
布隆过滤器介绍
海量数据去重背景问题1、现在使用word文档时,word如何判断某个单词是否拼写正确?2、网络爬虫程序,怎么让它不去爬相同的URL页面?3、垃圾邮件(短信)过滤算法如何设计?4、公安办案时,如何判断某嫌疑人是否在网逃名单中?5、缓存穿透问题如何解决?解决方案1优化:给key设置一个缓存过期,如60ms,如60ms后释放掉该 键值。set和map底层用的是红黑树,区别在于set不存储val字段;增删改查的时间复杂度是o(logn)优点:存储效率高,访问速度高效;缺点:对于数据量大且查询原创 2021-07-16 15:57:22 · 109 阅读 · 0 评论 -
Win32 API 三两事(一)
Win32 API(转载)1、APIENTRY,WINAPI,CALLBACK等是什么东西?2、HINSTANCE 、HANDLE 、 HWND 、LPCTSTR是什么?3、CWnd 、 CDC 与 HDC?4、COLORREF 与 RGB 、LPVOID 与 LPCVOID?5、char、wchar_t、TCHAR、WCHAR、std::string、std::wstring、CString、LPCTSTR、DWORD6、SelectObject()和SelectStockObject()有何区别?1、转载 2021-03-04 10:15:32 · 435 阅读 · 1 评论