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

校园官方网站建设的书籍给公司做门户网站

校园官方网站建设的书籍,给公司做门户网站,百度seo优化,网站备案需要年检吗1 本次分享的意义 源码地址:https://github.com/shangguanyongshi/WebFileServer.git 视频讲解:Linux C项目推荐:WebFileServer文件服务器如何快速上手C大项目 学完C和Linux编程后, 可以以WebFileServer文件服务器作为练手项目&…

1 本次分享的意义

源码地址:https://github.com/shangguanyongshi/WebFileServer.git

视频讲解:Linux C++项目推荐:WebFileServer文件服务器+如何快速上手C++大项目

学完C++和Linux编程后, 可以以WebFileServer文件服务器作为练手项目,比WebServer项目多了文件上传的功能,更加有意义。

这次分享不单只是讲解这个WebFileServer项目如何运行,也能让大家掌握如何快速掌握自己不熟悉的C++项目。

2 项目功能

Web 文件服务器,通过浏览器发送 HTTP 请求管理服务器指定文件夹下的所有文件。主要功能包括:

  • 以 HTML 页面形式返回该文件夹下的所有文件

  • 可以选择本地文件上传到服务器

  • 可以对列表中的文件文件执行下载操作

  • 可以删除服务器中的指定文件

3 整体框架

  • 使用 Reactor 事件处理模型,通过统一事件源,主线程使用 epoll 监听所有的事件,工作线程负责执行事件的逻辑处理

  • 预先创建线程池,当有事件发生时,加入线程池的工作队列中,使用随机选择算法选择线程池中的一个线程处理工作队列的事件

  • 使用 HTTP GET 方法获取文件列表,发起下载文件、删除文件的请求。使用 POST 方法向服务器上传文件

  • 服务端使用有限状态机对请求消息进行解析,根据解析结果执行操作后,向客户端发送页面、发送文件或发送重定向报文

  • 服务端使用 sendfile 函数实现零拷贝数据发送

4 编译和运行

1.build 项目

sh ./build.sh

默认的编译不支持调试,可以修改makefile增加-g编译选项。

然后再重新编译,以方便调试代码。

2.启动文件服务器

./main

3.在浏览器端输入 服务端ip:端口号(端口号默认是8888)

serverip:8888

5 如何快速分析代码

5.1 main函数入口

(gdb) b main
Breakpoint 1 at 0x5555555590ad: file main.cpp, line 3.

5.2 分析网络模型

通过info threads可以看到 共有五个线程,其中主线程是调用了epoll,再加上README的讲解可以推断出来这个项目是单个epoll +线程池的模式

* 1    Thread 0x7ffff79a9740 (LWP 339328) "main" 0x00007ffff7c1c68e in epoll_wait (epfd=4, events=0x7fffffffaf14, maxevents=1024, timeout=-1) at ../sysdeps/unix/sysv/linux/epoll_wait.c:302    Thread 0x7ffff79a8700 (LWP 339343) "main" futex_abstimed_wait_cancelable ( ) at ../sysdeps/nptl/futex-internal.h:3203    Thread 0x7ffff71a7700 (LWP 339344) "main" futex_abstimed_wait_cancelable ( ) at ../sysdeps/nptl/futex-internal.h:3204    Thread 0x7ffff69a6700 (LWP 339345) "main" futex_abstimed_wait_cancelable ( ) at ../sysdeps/nptl/futex-internal.h:3205    Thread 0x7ffff61a5700 (LWP 339346) "main" futex_abstimed_wait_cancelable ( ) at ../sysdeps/nptl/futex-internal.h:320

5.3 网络数据收发

5.3.1 数据接收

断点 recv

Thread 4 "main" hit Breakpoint 4, __libc_recv (fd=5, buf=0x7ffff69a5600, len=2048, flags=0) at ../sysdeps/unix/sysv/linux/recv.c:24
24      ../sysdeps/unix/sysv/linux/recv.c: No such file or directory.
(gdb) bt
#0  __libc_recv (fd=5, buf=0x7ffff69a5600, len=2048, flags=0) at ../sysdeps/unix/sysv/linux/recv.c:24
#1  0x000055555555df4a in HandleRecv::process (this=0x55555558bb90) at event/myevent.cpp:38
#2  0x000055555555c114 in ThreadPool::run (this=0x55555558b2b0) at threadpool/threadpool.cpp:114
#3  0x000055555555bc5c in ThreadPool::worker (arg=0x55555558b2b0) at threadpool/threadpool.cpp:77
#4  0x00007ffff7f8a609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#5  0x00007ffff7c1c353 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

很明显,这个项目是在线程池的线程里读取socket 数据并解析解析处理。

5.3.2 数据发送

断点 send

说明数据的响应也是在线程池的线程进行的。

6 拓展建议

建议将本项目的功能一直到muduo库进一步测试,对比分析性能的差异。

也建议和nginx做更多测试对比。

这样可以不断优化项目的性能,面试的时候也能有更多可以讲解的内容。


文章转载自:

http://L059meGu.cnqwn.cn
http://9t7ejrGR.cnqwn.cn
http://E6GHI1yJ.cnqwn.cn
http://tKU8FkUd.cnqwn.cn
http://FdoBmrrI.cnqwn.cn
http://cGtvjjad.cnqwn.cn
http://seSbo7CB.cnqwn.cn
http://Q0rn3C8f.cnqwn.cn
http://XhULY4vf.cnqwn.cn
http://yVOu6wQq.cnqwn.cn
http://ov4W7mnW.cnqwn.cn
http://kEM87xUl.cnqwn.cn
http://9AswOOXL.cnqwn.cn
http://yf3eztU1.cnqwn.cn
http://PgLt2MpW.cnqwn.cn
http://qvx9XcNP.cnqwn.cn
http://A1ep3MBl.cnqwn.cn
http://44nKO1Zx.cnqwn.cn
http://vjFQFsRd.cnqwn.cn
http://HfBNaEcI.cnqwn.cn
http://ULD3JdvL.cnqwn.cn
http://Jo4Vr9Lq.cnqwn.cn
http://aCfcU2Qn.cnqwn.cn
http://hazeGZZU.cnqwn.cn
http://yrmqErlQ.cnqwn.cn
http://f706d1nB.cnqwn.cn
http://BPd5xuw0.cnqwn.cn
http://SErrg216.cnqwn.cn
http://RPyKaI4v.cnqwn.cn
http://QVoCVRzJ.cnqwn.cn
http://www.dtcms.com/wzjs/754422.html

相关文章:

  • 张家港建网站公司wordpress百度翻译
  • 网站建设服务器一般多少钱南充房产交易网官网
  • 对对联的网站能自己做头像的网站
  • 黑龙江省建设集团网站瑞安 网站建设
  • 邯郸网站设计申请菜鸟教程wordpress模板
  • 专业房产网站建设wordpress+move插件
  • 垂直网站做益智类问答开个广告公司大概需要多少钱
  • 青岛网站建设哪个好2017做啥网站能致富
  • 企业网站需求方案阿里云wordpress 安装
  • 杭州专业网站设计制作兰州网络推广优化网
  • 建设银行淮安招聘网站公司建网站软件
  • 花店做网单的网站旅游网页设计模板简约图片
  • 做一个15页的网站怎么做试客类网站开发
  • 静态网站怎么建设厦门做网站优化的公司
  • 南京做企业网站公司青岛一点两区救治医院
  • seo网站制作电商网站开发ppt
  • 网站的发布与推广怎么写网页动画制作软件
  • 江西商城网站建设宁夏建设技术职业学院官方网站
  • 麻将棋牌网站开发集团网站建设网络公司
  • 建设部网站合并如何制作图片配文字
  • 亚马逊网站建设进度计划表大连外经贸网站
  • 网站如何添加浮动窗口可以在线制作网页的网站
  • 网站开发专业就业培训学校学室内设计后悔了
  • 建立一个网站要多久wordpress需要什么主机
  • 微信优惠券网站怎么做wordpress设置权限设置方法
  • 赚钱平台网站自己开公司需要什么条件
  • 在哪个网站上可以找兼职做青岛网站建设费用
  • 长沙建站费用成都关键词优化
  • 网站建设神器重庆建设工程信息网项目经理积分
  • 网站项目建设措施河南移动商城网站建设