佛山建站模板制作,diy定制软件,中国手工活加工网官网,北京网站建设 博客一、项目灵感来源 在日常做题的过程中#xff0c;我们总会去力扣和牛客网上去做题#xff0c;但是从来没有想过网站是如何加载给用户的#xff0c;以及在提交代码时#xff0c;是如何得知我们的代码是否正确。基于这样的原因#xff0c;也是学习到一定程度的知识后#x…一、项目灵感来源 在日常做题的过程中我们总会去力扣和牛客网上去做题但是从来没有想过网站是如何加载给用户的以及在提交代码时是如何得知我们的代码是否正确。基于这样的原因也是学习到一定程度的知识后才来模拟实现一下做题网站的判题系统 二、项目简介 模拟实现判题功能并完成不同局域网的主机都可以访问我的OJ系统在后台也要实现负载均衡当一个用户提交代码时选择负载最小的服务器来完成判题功能 三、相关技术
C STL 标准库cpp-httplib 第三⽅开源⽹络库ctemplate 第三⽅开源前端⽹⻚渲染库jsoncpp 第三⽅开源序列化、反序列化库负载均衡设计轮询法多进程、多线程Ace前端在线编辑器html/css/js/jquery/ajax
四、开发环境
ubuntu 20.04 云服务器vscode
五、设计思路搭配整体设计图 1. 一定存在很多客户端同时来向我们的系统请求资源包括但不限于首页资源、题目列表、指定题目内容、提交代码后的编译运行结果等。 2. 一定不能让一个服务器来完成上面的所有操作否则压力很大也无法实现负载均衡。也就必须让编译运行部分和对用户请求资源的响应部分做解藕实现两种服务器一种用来识别用户请求的资源另一种只用来完成编译运行服务。 3. 最后基于第二点我们就可以简单地画出整体设计图了 六、整体设计图 七、模块分析
1. Choice_Server 首先要明确我们想让Choice_Server完成的功能 browser请求首页返回首页资源browser请求题目列表返回题目列表的网页browser请求指定题目信息返回指定题目信息的网页brower请求提交代码后的编译运行结果负载均衡式地选择一台Compile_Run_Server来完成编译运行并接收Compile_Run_Server的运行结果再返回给browser。 所以我们就必须要让Choice_Server拥有这几点功能 请求资源的目录包含首页、题目列表信息、题目指定内容的信息负载均衡式地选择Compile_Run_Server发送代码并接收结果返回给browser 2. Compile_Run_Server 依旧是思考Compile_Run_Server需要完成的是什么 编译运行 所以我们就必须要以这两个功能为主体来设计Compile_Run_Server 八、遇到的问题及解决 把遇到的问题写了一篇博客 关于【setrlimit函数在设置RLIMIT_AS与进程替换】和【重定向与异常信息】的两个问题及解释-CSDN博客
九、项目总体详细流程图 十、总结 在写完这个项目之后对Linux系统编程和网络编程有了更深的理解也希望后续自己可以在学完数据库后把文件更换为数据库并且可以陆续添加更多的功能具体更多的详细设计思路在源代码中记录。