4、负载均衡式在线OJ-编译运行
该模块为编译运行功能,该模块需要使用json库,首先安装json,作用是将结构化的数据转化为字符串,做序列化和反序列化工作
命令:sudo yum install jsoncpp-devel
整体逻辑
Start函数
1static void Start(const std::string &in_json, std::string *out_json){}
Start函数参数
start函数的两个参数
in_json: {“code”: “#include …”, “input”: “”, “cpu_limit”: 1, “mem_limit”:10240}
out_json: {“status”:0, “reason”:“”, “stdout”:“”, “stderr”:“”}
in_json字符串中的内容
code: 用户提交的代码
input: 用户给自己提交的代码对应的输入,暂不做处理
cpu_limit: 时间要求
mem_limit: 空间要求
out_json字符串中的内容
status: 状态码 (必填)
rea ...
3、负载均衡式在线OJ-运行模块
运行模块
运行模块作用是:执行编译模块编译好的可执行程序,我们希望,输出、输出、错误等信息能写入到文件中。Run模块只关心运行,不关注结果的正确与否,结果正确与否靠测试用例判断
运行逻辑
这里需要重定向工作
标准输入
标准输出
标准错误
运行服务大致过程类似编译:
创建子进程
子进程通过execl执行编译好的可执行程序
那么这里会有两个问题
编译的代码可能是死循环或者恶意代码
运行出错如何知道是哪种错误
问题1可以通过资源限制来解决,通过限制运行时间,和申请内存上限等方式可以解决
问题2解决方式:
首先设计运行类,类中提供静态方法Run,该函数通过文件名可以自动拼接路径,然后再执行对应逻辑,返回值可以代表程序运行时的各种错误,比如我们规定:
返回值 > 0: 程序异常了,退出时收到了信号,返回值就是对应的信号编号
返回值 == 0: 正常运行完毕的,结果保存到了对应的临时文件中
返回值 < 0: 内部错误
具体代码
1234567891011121314151617181920212223242526272829303132333435363738394 ...
2、负载均衡式在线OJ-编译服务设计
一、编译服务框架
二、具体实现
首先是编译模块,封装Compiler类,提供Compile函数接口,具体编译流程如下:
根据传入文件名,对其进行编译,这里需要实现一个工具类
工具类,对文件名进行拼接,待编译的文件放在compile_server/temp文件下,例如test.cpp
拼接目标有源文件拼接:test->./temp/test.cpp
可执行程序拼接:test->./temp/test.exe
错误信息文件拼接:test->./temp/test.stderr
正式逻辑开始,首先创建子进程,子进程进行编译服务
通过程序替换:execlp函数,执行g++编译源文件,生成text.exe
g++编译可能成功,可能失败,如果失败,会通过stderr打印,这里对stderr进行重定向到指定文件(dup2函数):./temp/test.stderr
父进程对子进程编译结果进行判断,这里只需要判断./temp/test.exe函数是否存在,存在就是编译成功
在工具类中FileUtil类提供接口IsFileExists判断文件是否存在,其中调用stat函数
1 ...
1、负载均衡式在线OJ-项目介绍
1、所用技术与开发环境
所用技术:
除了ctemplate可能会稍微写点之外,其余所有关于前端渲染相关内容不做说明~~~
C++ STL 标准库
Boost 准标准库(字符串切割)
cpp-httplib 第三方开源网络库
ctemplate 第三方开源前端网页渲染库
jsoncpp 第三方开源序列化、反序列化库
负载均衡设计
多进程、多线程
MySQL C connect
Ace前端在线编辑器(使用现成…)
html/css/js/jquery/ajax (使用现成…)
开发环境:
centos7
vim
mysql workbench
2、项目宏观结构
项目由3个核心模块组成
common: 公众模块
compile_server:编译运行模块
oj_server: 获取题目列表,查看编写题目界面,负载均衡,其他功能
leetcode结构
只实现类似leetcode的题目列表+在线编程功能
项目宏观结构
编写思路
先编写 compile_server
oj_server
version1 基于文件版的在线OJ
前端的页面设计
version2 基于 My ...
分享几个可以免费体验GPT4的网站,感受GPT4的强大!!!
GPT3.5的强大大家已经尝试过了吧,今天分享几个可以免费使用GPT4的网站,好东西得学会分享,也让大家体验一下高科技!
GPT-4(Generative Pre-trained Transformer 4)是OpenAI推出的一款具有革命性影响的大型语言模型。基于Transformer架构,GPT-4的设计使其在理解和生成自然语言文本方面表现出色,让机器与人类的沟通变得更为流畅。该模型通过在大量文本数据上进行预训练,学会了诸多领域的知识,包括科技、文学、历史等。此外,GPT-4具备强大的迁移学习能力,可以在微调阶段适应各种具体任务,如问答、摘要、翻译等。
1、Poe
Poe每天免费一次试用GPT4,并且可以访问 ChatGPT、Claude instant、Claude+、等,强烈推荐!
网址:https://poe.com/GPT-4
体验:✨✨✨✨✨
2、Ora
每天5条GPT4信息,并且可以创建并训练不同的机器人
网址:https://ora.sh/openai/gpt4
体验:✨✨✨✨
3、Forefront Chat
看下图,有好多角色可以自定义,比较推荐 ...
一切的基础-卦
太极、两仪、四象和八卦是中国古代哲学和道家思想的重要概念,它们相互关联,共同构成了一个完整的哲学体系。对于上边的几个名词基本每个人都听过,但是让大家说说是哪八个卦,每个卦象是什么样的,能说出来的人应该不多。这里就带大家认识一下,争取最快的速度让大家记住
目标
八卦-卦象(最快认识、最低目标是会画)
八卦-卦序 (简单了解)
太极
太极是道家哲学中的核心概念,代表了宇宙万物生成和变化的根本原因。太极即无极,无极生太极,太极生两仪。它既包含了宇宙的一切,也是宇宙的起源。太极图象往往用一副黑白相间的圆形图案表示,代表阴阳两极的和谐统一。
两仪
两仪指的是阴和阳,分别代表宇宙中的负面和正面力量。阴阳是相互依存、对立统一的,它们共同促成了宇宙的生成和变化。两仪生四象,即阴阳进一步演化所产生的四种状态。
四象
四象是指:太阴、少阴、太阳、少阳。它们代表了阴阳两仪在宇宙中的进一步演化和辩证过程,太阴和少阳形成一对,太阳和少阴形成另一对。四象生成八卦,是由阴阳两仪演化后的八种状态。
八卦
八卦是古代中国的一种卜辞和预测体系,它包括八个基本符号,分别是:乾、兑、离、震、巽、坎、艮 ...
还在用GPT?一直搞指令和交互麻烦么?试试AutoGPT(四个AutoGPT应用推荐)
ChatGPT大家应该都已经用过了吧,ChatGPT一般来说还挺好用,但是让人不爽的是需要很多前提和限制才能让ChatGPT输出比较好的结果,也就是最近很火的Prompt。但是一旦涉及prompt就会觉的很呆,大家用ChatGPT就是图方便,那么有没有什么解决方法呢?
当然有,这个解决方法就是AutoGPT,这个核心是我们只需要提出我们想要完成的任务,其他的一切交给AI自己来,让AI自己给自己设定阶段性任务,自己给自己提示,只在必要的时候给他纠正即可,其他时候我们只用等代结果,听起来是不是很爽?
其实上边说的还是太过抽象了一点,我们还是详细举个具体的例子,比如我想让GPT写个论文,我们大概有几种种方式:
直接给GPT主题或题目让它自由发挥
给GPT限定范围,并且给GPT一个具体身份
让GPT写大纲,让后根据大纲再让GPT写
…
或者对其进行排列组合,但是一般来说,只有我们要求的越多,给GPT限制越多,最后的结果质量才好,但是有了AutoGPT之后会变成什么样呢?我们只需要告诉GPT我们要写的题目或者主题,它会不断的拆分任务,然后自己完成自己提出的任务,相当于让ChatGPT自己指 ...
ChatGPT学术优化-VsCode+Anaconda配置
项目简介
科研工作专用ChatGPT拓展,特别优化学术Paper润色体验,支持自定义快捷按钮,支持自定义函数插件,支持markdown代码块表格显示,Tex公式双显示,新增Python/C++项目剖析/自译解功能,PDF/LaTex论文翻译/总结功能,兼容ChatGLM等本地模型
项目地址
项目功能
功能
描述
一键润色
支持一键润色、一键查找论文语法错误
一键中英互译
一键中英互译
一键代码解释
可以正确显示代码、解释代码
自定义快捷键
支持自定义快捷键
配置代理服务器
支持配置代理服务器
模块化设计
支持自定义高阶的实验性功能与[函数插件],插件支持热更新
自我程序剖析
[函数插件] 一键读懂本项目的源代码
程序剖析
[函数插件] 一键可以剖析其他Python/C/C++/Java项目树
读论文
[函数插件] 一键解读latex论文全文并生成摘要
批量注释生成
[函数插件] 一键批量生成函数注释
chat分析报告生成
[函数插件] 运行后自动生成总结汇报
arxiv小助手
[函数插件] 输入arxiv文章url即可一键 ...
人工智能资源大放送:好用ChatGPT工具推荐、ChatGPT镜像站分享
人工智能资源大放送:4个好用ChatGPT相关AI工具推荐、21个ChatGPT镜像网站分享
小六壬寻物算法-简单图乐篇
今天教教大家用小六壬找丢的东西,两分钟学会,都2023年了,我不允许任何一个人还丢校园卡,并且还找不着!!😡😡😡。
注意:要相信科学,杜绝迷信!!!
简介
小六壬是一种中国传统的预测方法,据说是由三国时期的诸葛孔明简化自奇门遁甲而成。小六壬以大安、留连、速喜、赤口、小吉、空亡六位分列于食指、中指及无名指上,时间按月、日、时顺序计算,最后得到大安、速喜和小吉的为吉,其余为凶。手掌对应图如下:
食指
中指
无名指
留连
速喜
赤口
大安
空亡
小吉
具体对应图如下:
要记住:手用左手、以及6个数字的位置,顺时针1~6哦。
实操
记住位置就可以进行实操了,只要你会数数就可以了。
首先知道现在是农历的几号,什么时辰。比如今天是农历5日(不用看月份),早上8点多,也就是辰时。
然后看上边的手掌图,从1的位置开始数,日数是5,顺时针数5下,到了红色的5位置(无名指的下部),记住5这个数字。
然后从5位置数,这里是重点啊,新的位置是5开始,辰时是第五个时辰,数5下,到了红色的3位置,记住3这个数字。
最后结果就是5+3,也就是小吉+速喜
或者:上边的 ...