当前位置: 首页 > news >正文

济南推广网站建设优化企业网站

济南推广网站建设,优化企业网站,小程序开发商排名,耒阳市网站建设目录 0.框架 前言1.TcpServer类1.功能2.类设计 2.HttpServer类1.功能2.类设计 3.Request类 Response类1.功能2.Request类设计3.Response类设计 4.EndPoint类1.功能2.类设计 5.Task类1.功能2.类设计 6.ThreadPool类1.功能2.类设计 0.框架 前言… 目录 0.框架 前言1.TcpServer类1.功能2.类设计 2.HttpServer类1.功能2.类设计 3.Request类 Response类1.功能2.Request类设计3.Response类设计 4.EndPoint类1.功能2.类设计 5.Task类1.功能2.类设计 6.ThreadPool类1.功能2.类设计 0.框架 前言 程序main()函数如下void Usage(std::string proc) {std::cout Usage:\n\t proc Port std::endl; }int main(int argc, char *argv[]) {if(argc ! 2){Usage(argv[0]);exit(4);}std::unique_ptrHttpServer httpServer(new HttpServer(atoi(argv[1])));httpServer-Init();httpServer-Loop();return 0; }本项目将分模块设计主要包含以下模块注意本篇只放函数声明 1.TcpServer类 1.功能 主要负责底层的TCP通信将其设计为单例模式作为一个组件置入HTTPServer中 2.类设计 static const uint16_t PORT 8090; static const int BACKLOG 128;// 单例 -- 饿汉模式 class TcpServer { public:static TcpServer* GetInstance(uint16_t port PORT){}void Init(){}void Socket(){}void Bind(){}void Listen(){}int Sock(){}~TcpServer(){} private:TcpServer(uint16_t port): _port(port), _listenSock(-1){}TcpServer(const TcpServer) delete; private:uint16_t _port;int _listenSock;static TcpServer* svr; };TcpServer* TcpServer::svr nullptr;2.HttpServer类 1.功能 主要负责HTTP协议的通信其中主要包括以下模块 TcpServerThreadPoolTaskQueue 2.类设计 class HttpServer { public:HttpServer(int port PORT): _port(port), _stop(false){}void Init(){}void Loop(int threadNum THREAD_POOL_NUM){} private:uint16_t _port;bool _stop; };3.Request类 Response类 1.功能 Request类负责存储接收到的请求及解析结果ReSponse类用来构建响应 2.Request类设计 struct HttpRequest {std::string request_line;std::vectorstd::string request_header;std::string blank;std::string request_body;// 解析结果std::string method;std::string uri;std::string version;std::unordered_mapstd::string, std::string headerMap;size_t content_length;std::string path;std::string suffix;std::string arg;bool cgi;HttpRequest(): content_length(0), cgi(false){} };3.Response类设计 struct HttpResponse {std::string status_line;std::vectorstd::string response_header;std::string blank;std::string response_body;int status_code;int fd;int fSize;HttpResponse(): status_code(OK), fd(-1), blank(LINE_END){} };4.EndPoint类 1.功能 负责两端业务处理主要包括以下功能 读取请求、分析请求、构建响应、IO通信该类为本项目主要设计方向 2.类设计 class EndPoint { public:EndPoint(int sock): _sock(sock), _stop(false){}~EndPoint(){}void RecvRequest(){}void BuildResponse(){}void SendResponse(){}bool IsStop(){}private:bool RecvRequestLine(){}bool RecvRequestHeader(){}void ParseRequestLine(){}void ParseRequestHeader(){}bool IsRecvRequestBody(){}bool RecvRequestBody(){}int ProcessNonCgi(){}int ProcessCgi(){}void BuildResponseHelper(){}void BuildOKResponse(){}void HandlerError(std::string page){}private:int _sock;bool _stop;HttpRequest _request;HttpResponse _response; };5.Task类 1.功能 将HTTP请求构建成一个任务以便ThreadPool管理任务队列一定程度上和ThreadPool一起缓解了服务器压力 2.类设计 class Task { public:void ProcessOn(){}Task(){}Task(int sock): _sock(sock){}~Task(){} private:int _sock;CallBack _handler; // 设置回调 };6.ThreadPool类 1.功能 线程池分配任务给各线程使其处理请求主要解决问题 大量链接过来导致服务器内部进程或者线程暴增进而导致服务器效率严重降低或者挂掉节省链接请求到来时创建线程的时间成本 提前创建好了一批线程来任务时处理任务没有任务时让线程休眠 让服务器的效率在一个恒定的稳定区间内 线程个数不增多CPU调度成本基本不变 2.类设计 static const int THREAD_POOL_NUM 10;// 单例模式 class ThreadPool { public:static ThreadPool *GetInstance(int num THREAD_POOL_NUM){}static void *ThreadRoutine(void *args){}bool Init(){}void Push(const Task task) // in{}void Pop(Task task) // out{}void ThreadWait(){}void ThreadWakeUp(){}bool TaskQueueIsEmpty(){}void Lock(){}void Unlock(){}bool IsStop(){}~ThreadPool(){} private:ThreadPool(int num THREAD_POOL_NUM): _num(num), _stop(false){}ThreadPool(const ThreadPool ) delete; private:int _num;bool _stop;std::queueTask _taskQueue;pthread_mutex_t _mtx;pthread_cond_t _cond;static ThreadPool *_tp; };ThreadPool* ThreadPool::_tp nullptr;
http://www.w-s-a.com/news/898789/

相关文章:

  • 个人摄影网站推介网手机版
  • 有哪些免费的视频网站网站开发和竞价
  • 学校网站如何做广州商城型网站建设
  • 微网站建设哪家便宜易优建站系统
  • 推荐做木工的视频网站毕业设计做的网站抄袭
  • 网站导航页面制作wordpress调用文章阅读量
  • app小程序网站开发品牌购物网站十大排名
  • 用wordpress做购物网站龙岩品牌设计
  • 网站开发是指wordpress系统在线升级
  • 网站建设运营的灵魂是什么意思页面跳转中
  • 家政服务网站源码重庆建网站企业有哪些
  • 怎样分析一个网站做的好坏重庆长寿网站设计公司哪家专业
  • 百度助手app下载苏州seo关键词优化排名
  • 17网站一起做 佛山诸城网站建设多少钱
  • 郑州网站建设培训学校泉州做网站设计公司
  • 西峡做网站深圳建筑工务署官网
  • 单县网站惠州seo计费
  • 万网网站建设 优帮云怎样用记事本做网站
  • 注册域名后网站建设百度指数的功能
  • 怎么做伪静态网站山西网站建设设计
  • 做小型企业网站多少钱衡阳市建设局网站
  • 金华专业网站建设公司网站建设空间和服务器方式
  • 自己做的网站在浏览器上显示不安全吗wordpress revolution slider
  • 西安网站建设推广优化搜索引擎营销
  • 互联网站备案管理工作方案 工信部注册深圳公司需要什么条件
  • 网站网站服务器网站建设 物流
  • 国外开发网站手机网站建设制作
  • 怎么把自己做的网站传网上青岛工程建设监理公司网站
  • 网站301跳转效果商丘网站公司
  • 公司网站建设西安网站的架构与建设