Ryan Blog

「离开世界之前 一切都是过程」

C++ Catalog

"learning……"

生活破破烂烂,小猫尝尝咸淡 这是一篇C++学习的笔记汇总帖,边复习边记录。 绝大部分是hands-on实操写代码。 一部分是knowledge知识&问答。 一点点有用的reference参考链接。 全部的markdown编写。 有的note可能有点“巨长”。 C++ C++ 学习路线和就业方向 C Basic & C With Classe...

Linux 下 Reactor高并发服务器

"learning……"

人是生而自由的,但却无往不在枷锁之中。 Reactor模型 Reactor模型(Reactor Pattern)是一种用于处理高并发事件驱动应用的设计模式,常用于服务器架构(如Web服务器、网络服务器)中。它允许单个或少量的线程处理大量并发请求,提高系统的吞吐量和资源利用率。 最简单的非阻塞epoll程序 命令如下: 1 2 3 ./tcpepoll 192.168.157.12...

C++ 设计模式

"learning……"

单例模式 单例模式确保某一个类只有一个实例,并提供一个全局访问点来访问该实例。它通常用于需要共享资源的场景,如数据库连接、日志管理等,避免频繁创建和销毁相同的对象。 关键点: 保证只有一个实例:无论创建多少个对象,类中只会有一个实例。 提供全局访问点:通过该实例可以访问到类的功能。 延迟实例化:实例化对象时通常是延迟加载的(懒汉模式)。 优点: 节省内存资源:只会有...

Redis 基础

"learning……"

多点自知之明,少点自作多情。 Redis简介 Redis(Remote Dictionary Server)是一个开源的高性能键值对(key-value)数据库,通常用作缓存、消息队列和持久化数据存储系统。它基于内存进行操作,因此非常快速,并且提供了丰富的数据结构支持,如字符串、哈希、列表、集合、有序集合等,广泛应用于高并发、高性能场景中。 Ubuntu下Redis下载安装 ...

MySql 基础

"learning……"

不要抱怨,抱我。 MySql底层原理学习链接 MySql底层原理学习链接 MySql简介 MySQL 是一种开源的关系型数据库管理系统(RDBMS),它使用结构化查询语言(SQL)进行数据存储和管理。MySQL 是由 MySQL AB 开发的,后来被 Sun Microsystems(现为 Oracle Corporation)收购。由于其高效性、稳定性和广泛的社区支持,MySQ...

C++11 function&bind

"learning……"

真正的大师,永远都怀着一颗学徒的心…… 函数封装器和绑定器 C++11 引入了 std::function 和 std::bind,主要用于函数对象的存储和调用,提供了一种更灵活的方式来管理回调函数、延迟执行和绑定参数。 函数封装器 std::function 是 C++ 标准库中的一个通用函数包装器,它可以存储普通函数、lambda 表达式、函数指针、成员函数指针、仿函数等。类...

C++11 lambda

"learning……"

医院的白墙听过比教堂更多的祈祷 Lambda 表达式是 C++11 引入的一种特性,用于定义匿名函数对象(即没有名字的函数,或者称为闭包)。这种表达式使得函数作为参数传递更加简洁,并且能够访问外部作用域的变量。 基础语法 1 [capture](parameter_list) -> return_type { body } capture:指定外部变量的捕获方式。可...

Linux 下 poll/epoll模型

"learning……"

酒入愁肠,吨吨吨吨吨…… poll模型 pollfd 是用于 I/O 多路复用 的结构体,主要用于在 Linux 或类 Unix 系统上处理多个文件描述符的事件检测。它是 poll 系统调用的一部分,用于代替 select 系统调用来处理多个文件描述符的读写事件。 poll结构体如下: 1 2 3 4 5 struct pollfd { int fd; //...

Linux 下 select网络I/O复用模型

"learning……"

多少真心话都是以开玩笑的方式说出来的。 I/O多路复用 为每个客户端提供一个进/线程,消耗的资源是很多的,1核2G的虚拟机大概可以创建一百多个进程。 I/O复用可以用一个进/线程处理多个TCP连接,减少系统开销。有三种模型:select(1024)、poll(数千)、epoll(百万)。 网络通信读事件: 已连接队列中有已经准备好的socket(有新的客户端连上来) 接...

Linux 下 TCP/IP协议

"learning……"

从别后,忆相逢,几回魂梦与君同…… TCP 三次握手和四次挥手 TCP是面向连接的可靠的协议,建立TCP连接需要三次对话(三次握手),拆除TCP连接需要四次对话(四次挥手),确保通信双方能够正常发送和接收数据。 三次握手 服务端调用listen()函数后就进入监听(等待)状态,这时候,客户端就可以调用connect()函数发起TCP连接请求了,客户端connect()会引发三次握...