Linux高性能服务器编程或陈硕的多线程服务端编程
优采云 发布时间: 2021-06-09 02:52Linux高性能服务器编程或陈硕的多线程服务端编程
最新更新:
ET和LT两个触发器,实现了Proactor和Reactor两种事件处理模式,更新了命令行参数测试,安装测试更加友好,压测结果令人惊喜。感谢您的关注和支持。
--------------------
更新:
修复了在服务器上请求大文件的bug,并同步了Github代码。可以重新下载测试一下,谢谢。
以下为原答案----------------
看了主要答主的部分回答,意见比较一致。如果你想提高,你需要更多的练习。
另外,一开始不要用web框架,不适合成熟复杂的项目。最好找一些基础的开源项目,根据自己的想法添加一些功能或者改写。打完这些基础,再来说说勤奋。
题目想问一下提高C/C++网络编程能力的开源项目。我的理解是服务器或后台开发项目。
个人觉得题主应该没看过游爽的Linux高性能服务器编程或者陈硕的Linux多线程服务器编程:使用木多C++网络库。如果你读过这两本书,你应该能够找到前进的方向。 ,就不会有这样的困惑。
所以,暂时我觉得这个主题是刚开始网络编程,学习了一些基本的API或者看了书里的逆反射服务器、*敏*感*词*、简单的HTTP服务器实现。
学完上面的基础知识,我们肯定想炫耀一下自己做一个像样的项目的技能,但似乎不知道如何开始,或者一个像样的项目的框架是什么。其实对于初学者来说,最难的就是找到一个容易上手的基础后端开发项目。
C++后台开发一般是指服务端开发,涉及的模型包括C/S模型和B/S模型。其中,C/S 模型更侧重于 TCP 协议。服务端和客户端都需要自己完成,数据包需要自己设计; B/S模型更关注HTTP协议,因为浏览器作为客户端,并且已有HTTP协议,所以重点在服务器端。
看大部分书籍的解说目录,我们先讲C/S模型,再讲B/S模型。相比入门,书中的逆反射服务器和*敏*感*词*程序更容易上手和理解,但要做出一个像样的C/S模型项目并不容易。
从面试和项目的角度来看,我个人更喜欢从简单的 B/S 模型开始,然后过渡到简单的 C/S 模型。这样我们就可以跳过客户端和数据包的设计,把更多的精力放在服务端,尽快完成一个小demo,增强初学者的信心。
很多受访者艾特推荐了陈硕的书和慕朵,我也推荐了。
不过我建议在看陈道人的书之前,可以先看一副下游Linux高性能服务器编程,运行书中的代码和例程,然后再看木多,肯定会更有收获。
这里给大家分享一下我去年秋季招聘面试时准备的项目。希望对刚入门的朋友有所帮助。此项目目前仍在更新和维护中。
项目链接:/qinguoyi/TinyWebServer
项目介绍
去年秋季招聘的时候,看了有双的高性能Linux服务器编程,根据书中的代码搭建了一个Linux下C++轻量级web服务器项目,并在原有基础上实现了简单的注册。简单的前端交互和登录、登录等后端访问功能,经过压测即可实现数万并发连接。 (测试机为Intel i7 7700,16G内存)
Linux下的C++轻量级web服务器虽然是玩具级的项目,但只要按照README中的步骤运行,经过多位同学测试后可以一次运行,大大提升初学者做项目的能力有信心。
经过各位朋友的反馈,一旦请求服务器上的大文件,就会出现问题,要么文件显示不全,要么无法显示。分析定位问题后,进行了初步修正,并实现了Demo。代码测试完成后,我会同步到Github。
目前在初步修正bug后,我在Ubuntu下的Chrome浏览器上进行了大文件测试,在服务器上请求了大图(6M)和视频(493k)。效果如下。
测试结果
Webbench 对服务器进行压力测试,可实现数万并发连接。
框架
整体框架如下,模块连接比较简单,耦合度不高。
我把项目中涉及的模块和知识点整理了一下,列在下面。每个模块都有相应的知识理解和应用。
HTTP请求和响应注册登录定时器数据库连接池同步/异步日志系统压力测试
我再次强调,大部分代码都在书中。我只是把它组织成一个比较完整的项目,添加了一些功能,并针对所有功能做了一些评论和说明。
如对以上项目模块的原理有任何疑问,请先参考友双的Linux高性能服务器编程。
感谢您看到这里。