此项目为从计算机入门水平
升阶为计算机进阶-前期水平
的升阶项目。
初稿部分以简单、简洁性和完整性为主,除了必要的数据库API外,没有额外的外部插件库,全是由个人手动实现的底层C语言源码。
对于初稿所指的C语言指C,不包含C++,使用的C标准在C99之下(不包括C99)。
该项目在Linux系统CentOS 7下编译,测试和运行,具体操作包含
- HTML和CSS的源码编写
- JavaScript脚本语言监听元素事件的源码编写
- 支持http1.0协议的socket通信的纯C语言源码编写
- MySQL数据库(C语言API)的数据库处理纯C语言源码编写
- 前端网络请求的JS源码编写
- 后端对前端请求的处理纯C语言源码编写
- 前端通过后端与数据库进行数据交换的纯C语言源码和JS源码编写
- 前端与后端与数据库的动态化处理
- 服务器进程源码的多线程模式编写
- 服务器进程源码的日志监听模式编写
- 对后端服务器进程纯C语言源码进行高性能化的处理
中稿部分以附加功能为主,主要是将编程语言切换到cpp,并利用了cpp中的第三方库添加并改善了相关功能。
设计思路与源码解析,以及项目实现的全过程 - 网站留言评论系统-初稿与中稿的(思路与教程)文章
main
- 主线分支,由C++
编写,通过使用外部库及API来对功能进行优化,并作为主线来更新其他功能original
- 最初的初稿成品,由C语言编写original-cpp
- 最初的初稿成品,由C++
编写
- C语言基础知识
- 计算机网络(运输层和应用层)基础知识
- HTML与CSS基础知识
- JavaScript基础知识
- 有关网络编程的全基础知识(额外包含了Linux环境编程/GCC编译器/GDB调试器)
- HTTP网络通信基础
- 数据库基础知识与MySQL数据库基础
目录结构
httpserver
├── _config
│ ├── _config.cc
│ ├── _config.h
│ ├── _config.json
│ └── json.hpp
├── _database
│ ├── db.cc
│ └── db.h
├── docs
│ ├── css
│ │ ├── comment_reply.css
│ │ └── comments.css
│ ├── index.html
│ └── js
│ └── comments.js
├── _http
│ ├── http.cc
│ ├── http.h
│ ├── _response.cc
│ └── _response.h
├── httpserver.cc
├── makefile
├── mylibs.cc
├── mylibs.h
└── _tcp
├── tcp.cc
└── tcp.h
获取源码
git clone https://github.com/ReverseSacle/simple-comment-system.git
正式操作
(info) 这里以二进制的方式运行,默认在虚拟机上Linux系统(CentOS7)中运行。
(info) 编译前需预先安装MySQL,详细请看→该项目介绍文章第一部分的【Linux服务器处理进程的数据库链接】区块。
(info) 运行前需修改./docs/js/comments.js
文件开头的_host
变量的值,改为虚拟机的IP地址。
# (可选)预先确保Linux虚拟机环境安装了make工具
yum -y install make
# 配置库连接位置
vi /etc/ld.so.conf
## 新的一行添加 /usr/local/lib
## 输入 :x
## 退出后输入命令 ldconfig
cd simple-comment-system
make httptest
## make操作详细操作可查看makefile文件
可通过ctrl c
中断,之后直接执行./httpserver
即可启动服务端进程,再在浏览器中的输入栏输入http://(虚拟机IP地址)/index.html
,回车即可看到评论系统的前端界面。
-
mysql++ - 用于mysql数据库的相关操作(
C++
) -
gabime/spdlog - 用于记录日志(
C++
) -
nlohmann/json - 用于json文件的解析(
C++
) -
crypto-js
- 用于SHA256的哈希处理(JavaScript)<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/[email protected]/core.js"></script> <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/[email protected]/sha256.js"></script>
- 使用了
gabime/spdlog
第三方库来配置日志功能 -tag v0.0.2
- 更换不可更改配置的运行方法,采用运行时动态解析JSON文件的方式来获取配置,使用了
nlohmann/json
第三库来解析JSON配置文件 -tag v0.0.3
- 完善之前的改进部分并优化项目代码结构,使用
C++11
特性改善了代码 -tag v0.0.4
- 更改数据库的存储数据类型,并利用
crypto-js
进行SHA256的哈希处理,以此适配avatar头像。部分代码的结构进行了调整 -tag v0.0.5
- 更改数据库的表结构,添加了评论回复功能的前端样式、前端回复功能的交互代码、后端交互代码和服务器后端与前端的交互代码,之后,对前端的样式代码进行了文件拆分,对前端的js代码进行了重构 -
tag v0.0.6
- 添加了回复对象的显示,并对所有代码进行了简明的注释 -
tag v0.0.7