自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 收藏
  • 关注

原创 服务器加密算法

全称:Open Secure Sockets Layer(开放安全套接字层)对称加密算法(AES、DES等)非对称加密算法(RSA、ECC等)哈希算法(SHA系列、MD5等)消息认证码(HMAC)数字签名和证书处理随机数生成// 指向哈希算法的指针// 算法特定的数据// 公钥上下文(用于签名)

2025-08-24 22:12:03 524

原创 服务器依赖注入

/ 抽象接口定义public:public:接口设计原则单一职责:每个接口只负责一个功能依赖倒置:高层模块不依赖低层模块,都依赖抽象接口隔离:客户端不应该依赖它不需要的接口。

2025-08-23 18:54:25 960

原创 服务器加密算法

OpenSSL是一个开源的加密库,提供了丰富的加密算法实现。它是目前最广泛使用的加密库之一。全称输出长度:256位(32字节)安全性:目前被认为是安全的应用:数字签名、密码存储、区块链符号说明K:密钥M:消息H:哈希函数(如SHA256)⊕:异或运算||:连接运算ipad:内部填充(0x36重复)opad:外部填充(0x5C重复)

2025-08-23 18:53:36 1190

原创 服务层设计

实体类(Entity):对应数据库表的结构DTO类:用于数据传输的简化结构响应类:统一的API响应格式。

2025-08-23 18:52:59 549

原创 服务器认证系统

首先,我们需要定义用户相关的数据结构,包括用户信息、认证凭据等。

2025-08-23 18:42:26 674

原创 DAO 模式

我们首先需要定义与数据库表对应的C++结构体。int id;// 笔记ID(主键)// 笔记标题// 笔记内容// 所属笔记本ID// 所属用户ID// 标签(逗号分隔)int status;// 状态:0=草稿,1=已发布,2=已归档// 是否公开:0=私密,1=公开// 查看次数// 创建时间// 更新时间结构体字段说明id: 数据库自增主键,用于唯一标识每条笔记title: 笔记标题,varchar(200)类型content。

2025-08-23 11:34:23 1086

原创 Redis 缓存

在早期的Web应用中,每次用户请求都需要直接访问数据库,这导致了严重的性能瓶颈。

2025-08-22 21:21:56 1311

原创 MySQL 连接池

在Web应用发展的早期阶段,数据库连接管理经历了从简单到复杂的演化过程:最初的Web应用采用最简单粗暴的方式处理数据库连接:这种方式在用户量较少时还能勉强应付,但问题很快显现:想象一下,如果每个用户访问都要重新"拨号"连接数据库,就像每次打电话都要重新申请电话线一样低效。为了解决频繁连接的问题,开发者开始使用长连接:长连接解决了连接开销问题,但引入了新的挑战:这就像整个公司只有一部电话,所有人都要排队使用,效率反而更低。**连接池(Connection Pool)**技术的出现彻底改变了数据库连接管理的

2025-08-18 22:54:12 1070

原创 HTTP 响应构建

HTTP响应构建系统是Web服务器的重要组成部分,它经历了从简单文本到复杂结构化数据的演化。

2025-08-18 22:51:15 1009

原创 HTTP 路由系统

/ 路由处理函数类型定义// 参数:HttpRequest&-请求对象引用, HttpResponse&-响应对象引用// 返回值:void// 中间件函数类型定义// 参数:HttpRequest&-请求对象, HttpResponse&-响应对象, std::function<void()>-下一个处理函数// 返回值:void使用类型擦除:可以存储任何可调用对象(函数指针、lambda、函数对象)灵活性:支持闭包和状态捕获标准化:C++11标准库提供,性能和兼容性有保障。

2025-08-18 22:48:22 976

原创 MySQL 连接池

单例模式:确保全局唯一的连接池实例线程安全:使用互斥锁和信号量保证并发安全RAII资源管理:自动管理连接的获取和释放连接复用:避免频繁创建销毁连接的开销通过这种设计,我们实现了一个高效、安全、易用的MySQL连接池,能够显著提升Web服务器的数据库访问性能。

2025-08-18 22:45:41 594

原创 HTTP 解析

HTTP/0.9时代: 解析极其简单,只有一行请求HTTP/1.0/1.1时代: 引入了复杂的头部和消息体HTTP/2时代: 二进制帧格式,完全不同的解析方式解析器设计的核心挑战流式处理:HTTP消息可能分多个TCP包到达状态管理:需要跟踪解析进度错误处理:处理格式错误和恶意请求性能优化:高并发场景下的解析效率内存管理:避免缓冲区溢出和内存泄漏HTTP/1.1请求解析器架构设计解析器状态机设计HTTP请求行解析 - 协议的入口请求行格式分析HTTP请求行的标准格式:实际示例

2025-08-17 18:55:47 990

原创 HTTP 连接管理

HTTP(HyperText Transfer Protocol,超文本传输协议)自1990年诞生以来,经历了五个主要版本的演进,每个版本都是为了解决当时Web发展面临的具体问题而设计的。HTTP/0.9 (1991年) - 原始版本历史背景HTTP/0.9是Tim Berners-Lee在CERN(欧洲核子研究中心)设计的最初版本,当时Web还只是一个简单的文档分享系统,主要用于科研人员之间交换HTML文档。1. 极简设计2. 请求格式就这么简单,一行搞定!3. 响应格式服务器直接返回HTML文

2025-08-17 18:18:57 1705

原创 线程池(二)

生产者-消费者模式是并发编程中的经典模式,它解决了生产速度和消费速度不匹配生产者线程 ──→ [缓冲区] ←── 消费者线程(产生任务) (任务队列) (执行任务)在线程池中的映射:生产者:主线程或其他线程,负责提交任务缓冲区:任务队列,存储待执行的任务消费者:工作线程,从队列中取任务执行资源管理避免频繁创建/销毁线程的开销控制系统中的线程数量,防止资源耗尽性能优化减少上下文切换开销提高CPU利用率编程模型简化将任务提交和执行分离支持异步编程模式。

2025-08-17 16:08:53 1479

原创 线程池(一)

Reactor模式是一种事件驱动的设计模式,常用于高性能网络服务器。它将I/O事件的检测和处理分离,使用线程池来并发处理业务逻辑。RAII原则: 资源管理自动化异常安全: 保证强异常安全性线程安全: 正确使用同步原语性能优化: 减少锁竞争,避免false sharing可扩展性: 支持动态调整线程数量。

2025-08-17 16:05:55 987

原创 Reactor 模型

多线程Reactor在单线程基础上引入了工作线程池。主线程负责接受连接和事件分发,工作线程负责具体的业务处理。// 主事件循环// 线程池// 线程数量主Reactor:负责接受新连接从Reactor:每个工作线程一个,负责处理已建立连接的I/O事件// 主Reactor// 从Reactor数组// 从Reactor数量// 线程数组。

2025-08-17 15:26:55 1703

原创 I/O 多路复用编程

I/O多路复用编程、select、poll、epoll、Reactor

2025-08-16 19:07:55 1411

原创 Socket 编程常用函数

本文档按照搭建TCP服务器的步骤顺序,详细说明socket编程中的关键函数。

2025-08-16 11:37:07 1144

原创 Socket 网络编程

阶段函数作用关键参数及说明创建套接字socket()创建套接字AF_INET0绑定地址bind()绑定 IP 和端口sin_familysin_portsin_addr监听连接listen()监听端口,等待连接backlog队列长度接受连接accept()接受客户端连接返回新的连接套接字数据收发recv()send()接收和发送数据缓冲区指针、长度、标志关闭连接close()shutdown()关闭套接字关闭读写端或全部。

2025-08-15 22:40:23 1122

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除