蒸汽日记

协程设计原理与实现

学习内容(目录): 1.为什么会要有携程? 2.携程实现过程,原语操作(哪些原语操作) 3.携程如何定义 struct coroutine 4.调度器如何定义, struct scheduler 5.携程的调度执行策略 6.posix api做到一致

蒸汽 发布于 2024-11-08

高性能异步IO机制——io_uring

一、io_uring的引入 为了方便说明io_uring的作用,先举一个通俗点的例子 1、通过异步提高读写的效率 假设有一批

蒸汽 发布于 2024-11-08

epoll的实现原理

在前文已经基于dpdk实现了用户态协议栈,但是有个缺陷就是不能连接多服务端。这也就引出了本文的目的——如何实现自定的 epoll。 为什么不用系统自带的epoll? 用户态协议栈是指运行在用户态的协议栈,与传统的内核态协议栈相比,它有许多优点,如灵活性、可扩展性、高性能等。因为可以避免内核态和用户态

蒸汽 发布于 2024-11-07

DPDK实现用户态udp协议栈

一、网络协议栈 如何实现网络协议栈,首先需要拿到网络数据,有以下几种方式 1)原生socket 2)netmap 3)dpdk 1、网络通信过程

蒸汽 发布于 2024-11-07

服务器百万并发实现

本文利用四台虚拟机,实现了百万并发的项目,并解决其中遇到的一些问题 一、百万并发项目 准备4个虚拟机,其中一个4G内存,2核CPU;另外三个2G内存,1核CPU。

蒸汽 发布于 2024-11-07

网络IO-select/poll/epoll详解与对比/事件驱动模型reactor

一、网络IO请求 网络I/O请求是指在计算机网络中,向其他主机或服务器发送请求或接收响应的操作。这些请求可以包括获取网页、下载文件、发送电子邮件等。网络I/O请求需要使用合适的协议和通信方式来进行数据传输,例如HTTP、FTP、SMTP等。 要完成一个完整的 TCP/IP 网络通信过程,需要使用一系

蒸汽 发布于 2024-11-07

设计模式精进

定义 设计模式是什么:解决特定环境下,重复出现的,特定问题的解决方案(解决问题的固定套路) 场景 具体需求既有稳定点,又有变化点,希望修改少量的代码,就可以适应需求的变化 全是稳定点,变化点都不适合用设计模式

蒸汽 发布于 2024-11-07

智能指针

为什么需要智能指针? 智能指针主要解决以下问题: 内存泄漏:内存手动释放,使用智能指针可以自动释放malloc free; new delete 共享所有权指针的传播和释放,比如多线程使用同一个对象时析构问题 使用普通指针,容易造成堆内存泄露(忘记释放),二次释放,程序发生异常时内存泄露等问题等,使

蒸汽 发布于 2024-11-07

分布式版本控制Git

git git定义:分布式版本控制工具 github定义:代码托管平台 作用: 1.保存文件的所有修改记录

蒸汽 发布于 2024-11-07

Makefile文件管理

Makefile 1.makefile基础规则 makefile: 管理项目。 命名:makefile Makefile --- make 命令 1 个规则: 目标:依赖条件 (一个tab缩进)命令 1. 目标的时间必须晚于依赖条件的时间,否则,更新目标 ​ 2. 依赖条件如果不存在,找寻新的规则去

蒸汽 发布于 2024-11-07