从头开始实现一个留言板-README

news2025/7/7 11:52:56

前言

仓库地址:da1234cao/RestFulAPIDemo

由于我没做过C++服务器的开发,没有这方面的工程经验,所以代码中,大概率有一些我意识不到的问题,欢迎提issue。

PS: 代码使用C++实现restful接口,给前端提供数据读取和写入的功能。(用Java作为后端或许好些?但是我不会Java。。)


文档

演示与介绍视频:从头实现一个留言板-BiliBili

所有文档见:从头实现一个web留言板

罗马不是一天建成的。链接中的文档包含一个个独立可运行的代码。最后所有的代码逻辑,拼凑成这个项目。(这是有趣的地方)

  1. 稍微大点的代码,都需要日志,所以先了解日志该如何写:spdlog日志库的封装使用
  2. 类似的,稍微大点的代码,需要配置文件:配置文件的读取-TOML
  3. 项目和http密切相关,我们必须要知道http报文的基本结构:http消息简介
  4. 在了解http报文基本结构之后,我们需要考虑如何解析报文:http-parse的C++封装
  5. 和解析报文类似,我们得拼凑一个response,以便通过套接字发送,作为响应: C++构建response
  6. 此时,我们或许应该进行网络编程。但是,不着急,为了让每个请求使用单独的线程处理,我们还需要线程池:C++线程池
  7. 接下来,是网络编程,假定我们已经有一点套接字编程基础,我们使用epoll:epoll实现Reactor模式
  8. 最后,为了让数据持久化,我们使用数据库:X DevAPI–C++ mysql数据库连接池

代码结构

在这里插入图片描述


项目部署与压力测试

项目在本地运行 + 项目不需要持久运行 + 懒得到服务器上重新搭建环境 = 内网穿透。选择使用nps搭建内网穿透。

找了个在线网站,简单的压测了下。没咋明白每项指标的含义,但是没有错误是一眼可见的。

在这里插入图片描述


参考

Linux C++基于Epoll从零开始实现HTTP服务器

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/6969.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何封装一个实用的上传组件

前言 马上放假了,时间上相对宽裕,对最近做的东西进行一些总结。今天我们来看一个非常实用的组件,上传组件 我们先从组件的定位、组件的应用场景、组件的特性几个方面进行归纳 定位: 对于上传组件,基础的组件功能属…

【C++】-- 继承

目录 继承的概念及定义 继承的概念 继承的定义 定义格式 继承基类成员访问方式的变化 基类和派生类对象赋值转换 子类对象可以赋值给父类对象/指针/引用 派生类对象赋值给基类的对象 派生类对象赋值给基类的指针 派生类对象赋值给基类的引用 继承中的作用域 派生类的默认成员函…

IM开源项目OpenIM部署文档-从准备工作到nginx配置

IM开源项目OpenIM部署文档-从准备工作到nginx配置 2022-11-14 22:27OpenIM 一、准备工作 运行环境 linux系统即可, Ubuntu 7.5.0-3ubuntu1~18.04最优 图片视频文件存储 支持cos/MinIO https/wss协议 1. 需申请域名或者子域名(web im端登录注册及im…

C# HTML

一 HTML 超文本标记语言 在HTML当中存在着大量的标签,我们用HTML提供的标签,将要显示在网页中的内容包含起来。就构成了我们的网页。 二 CSS CSS 控制网页内容显示的效果。 HTMLCSS静态网页。 JSJquery 动态效果。 三 开始动手写HTML页面 ① 首先在…

XSS进阶二

目录实验目的预备知识实验环境实验步骤一实例四、换一个角度,阳光依旧实验步骤二实例五、限制了我的左手,我还有右手实验步骤三实例六、大胆去思考,小心去求证实验目的 1.深入理解xss工作原理。 2.怎么去绕过规则实现xss。 3.培养学生的独立…

Spring Cloud(十):Spring Cloud Skywalking

链路追踪组件选型 Zipkin是Twitter开源的调用链分析工具,目前基于springcloud sleuth得到了广泛的使用,特点是轻量,使用部署简单。Pinpoint是韩国人开源的基于字节码注入的调用链分析,以及应用监控分析工具。特点是支持多种插件&…

XCTF-web Robots

场景一:Training-WWW-Robots 进入场景,提示关于robots.txt文件 访问robots.txt文件,目录下存在 /fl0g.php 文件,进一步访问得到flag 场景二:robots 根据题目,提示关于robots.txt协议 访问成功&#xff…

api股票数据接口能实现什么功能?

api股票数据接口在量化投资方面能够受到比较多交易者的开发和使用的,主要是得于股票量化交易数据接口的7个策略十档行情,可以实现一键解决炒股难题,和多指标辅助追踪主力,跟主力做强势股,只有在行股票数据接口一键就可…

零样本图像分类综述

零样本图像分类综述 摘要 零样本图像分类指训练集和测试集在数据的类别上没有交集的情况下进行图像分类,该技术是解决类别标签缺失问题的一种有效手段,因此受到了日益广泛的关注,自提出问题至今。零样本图像分类研究已经大致有十年时间啦。…

学完 Fluent 官方基础教程,你离一名合格Fluent 流体工程师还有多远?

作者 | 张杨 仿真秀专栏作者 Fluent软件的学习包含基础部分和进阶部分,通常我们学习Fluent软件,都是从一个最简单的三通管开始的。 图1 Fluent的标准初学案例——三通管混合换热 ANSYS Fluent官方的基础培训课程表,通常只包括以下几个方面…

堆排序在topK场景题中的应用及原理

参考以下文章: 堆排序(大顶堆、小顶堆)----C语言 006 查找第k大的数——堆结构的初应用寻找最大的K个数,Top K问题的堆实现海量数据查找最大的前k个数(小顶堆) 零、先简单说下处理topK问题的答案: 一般我们说 topK 问…

如此简单易懂的方式 让网站支持PWA

总结起来,网站配置PWA简单步骤为: 1.编写 manifest.json; 2.编写 serviceWorker.js; 3.在 index.html 引入上述两个文件; 4.把上述三个文件放在网站根目录(或者同一目录下); 5.网站需要部署在https环境才能…

mannose-PEG-Alkyne|甘露糖-聚乙二醇-巯基|巯基修饰甘露糖

mannose-PEG-Alkyne|甘露糖-聚乙二醇-巯基|巯基修饰甘露糖 中文名称:甘露糖-巯基 英文名称:mannose-SH 别称:巯基修饰甘露糖,巯基-甘露糖 西安齐岳生物还可以提供PEG接枝修饰甘露糖,mannose-PEG-Alkyne 甘露糖-聚乙…

Android App开发实战项目之给用户推荐旅游信息图片(附源码 简单易懂)

需要全部源码请点赞关注收藏后评论区留言~~~ 一、需求描述 假定用户打开一个旅游App想看看哪里风景比较优美,那么App应当展示各地的风景名声图片,为了让界面不太呆板,可以考虑交错显示风景图片,接着用户向下拉动页面,…

【ROS】机械人开发二--ROS环境安装

机械人开发二--ROS环境安装一、运行环境二、ROS-melodic安装2.1 设置软件源2.2 设置密钥2.3 安装ROS2.4 环境设置2.5 安装ROS的依赖环境2.6 初始化rosdep三、建立工作空间测试一、运行环境 树莓派4B-4G、VMware15系统都为ubuntu18.04xshell 使用时,通过xshell同时…

10-1.WPF模板

10-1.WPF模板 控件由“算法内容”和“数据内容”决定 算法内容:指控件能展示哪些数据、具有哪些方法、能激发什么事件等,简而言之是控件的功能,一组相关逻辑数据内容:控件所展示的具体数据是什么 在WPF中,模板将数据…

Redis数据类型

1.String(字符串) 在任何一种编程语言中,字符串都是最基础的数据结构,在Redis中String是可以修改的称之为:动态字符串(简称SDS) Redis的内存分配机制: - 当字符串的长度小于1MB时,每次扩容都是加倍现有的空间 - 如果字…

离散数学:图的基本概念

本帖子讨论图的基本概念,这一章,我们将利用有序对和二元关系的概念定义图。图分为了无向图和有向图,他们有共性也有区别,请大家注意体会,用联系和辩证的观点去认识。 1、无向图和有向图 注意无向图和有向图的表示&…

Servlet【 ServletAPI中的会话管理Cookie与Session】

Servlet【 ServletAPI中的会话管理Cookie与Session】🍒一.回顾Cookie与Session🍎1.1 Cookie🍎1.2 Session🍎1.3Cookie 和 Session 的区别🍒二.Servlet会话管理操作🍎2.1核心方法🍒三.常见案例实…

【服务器搭建】教程一:没钱买服务器怎么玩 进来看

前言: 最近看到有一些网上的大佬把自己的爱心网页(没领到的小伙伴看一下前几篇文章)部署到了自己的服务器上,使得可以直接通过链接就实现访问。属实不错! 自己内心就产生了这样一个想法:购买一台服务器&a…