项目代码流程
模拟proactor:主线程监听,执行数据读写操作,读写完成后主线程向工作线程通知这一“完成事件”,交给工作线程进行处理。
首先在mian.c中WebServer server创建server对象,先执行构造函数,初始化变量,
之后进行start
运行
登录linux系统的mysql:sudo mysql -u root -p 密码zj (版本为5.7.42)
修改WebServer文件下的mian.c中的mysql的用户名喝密码
创建并使用一个webserver数据库:create database webserver; use webserver;
创建user表:
CREATE TABLE user( username char(50) NULL, password char(50) NULL )ENGINE=InnoDB;
添加数据:INSERT INTO user(username, password) VALUES('newcoder', 'newcoder');
makefile文件就是一系列的规则,通过make命令找到makefile文件,通过里面的规则编译生成可执行文件
安装gcc/g++/make等工具
cd到WebServer-mastor文件夹执行make命令
执行server:.bin/server
此时服务器已经启动了
ifconfig查找一下服务器的ip地址
网页客户端连接服务器:http://10.102.99.181:1316
调试
关闭编译器的优化选项(-o),打开调试选项(-g),在尽量不影响程序行为的情况下选项打开所有warning(-wall),可避免一些不必要的BUG
gcc -g -wall test.c -o test
gdb test
给程序设置参数:set args 8888
其他命令可输入help查看各命令
想要查看某一个文件的内容(例如test.c)可输入:l test.cpp
想要查看某一文件的某一函数,可输入:l test.cpp:selectSort
查看断点信息:
b 8
i b
运行断点:run
向下执行,遇到函数体进入函数体:s
向下执行,遇到函数体不进入函数体:n
打印变量信息:p i
-pthread 多线程的库,-lmysqlclient数据库的库
1、库文件是一种代码仓库,提供给使用者一些可以直接拿来用的变量、函数或类。
2、库不能单独运行,是一种特殊的程序
3、静态库在链接阶段被复制到程序中;动态库在链接阶段没有被复制到程序中,而是程序在运行时由系统动态加载到内存中供动态调用
静态库和动态库的制作
Linux系统编程1-Linux系统基础_zhaojiazb的博客-CSDN博客
测试
基本原理:Webbench首先fork出多个子进程,每个子进程都循环做web访问测试。子进程把访问的结果通过pipe告诉父进程,父进程做最终的统计结果。
测试处在相同硬件上,不同服务的性能以及不同硬件上同一个服务的运行状况;
展示服务器的两项内容:每秒钟响应请求数和每秒钟传输数据量。
cd到webbench-1.5目录下make:
webbench -c 10000 -t 30 http://127.0.0.1:1316/index.html
-c表示客户端数;-t表示时间
netstat -anp | grep 1316 显示与端口的连接状态