更新部署文档

This commit is contained in:
Himit_ZH 2021-05-23 22:43:06 +08:00
parent 15eb642de5
commit 3f469dec40
108 changed files with 980 additions and 227 deletions

View File

@ -30,6 +30,7 @@ module.exports = {
collapsable: true,
children: [
'deploy/',
'deploy/docker',
'deploy/frontend',
'deploy/mysql',
'deploy/redis',
@ -44,7 +45,8 @@ module.exports = {
collapsable: true,
children: [
'develop/',
'develop/db'
'develop/db',
'develop/sandbox'
]
},
{
@ -52,7 +54,11 @@ module.exports = {
collapsable: true,
children: [
'use/',
'use/sandbox',
'use/testcase',
'use/contest',
'use/import-problem',
'use/import-user',
'use/discussion-admin',
'use/spj'
]
},

View File

@ -8,13 +8,13 @@
<link rel="icon" href="/docs/img/favicon.ico">
<meta name="description" content="HOJ 的开发与使用文档">
<link rel="preload" href="/docs/assets/css/0.styles.0538ca31.css" as="style"><link rel="preload" href="/docs/assets/js/app.658a191c.js" as="script"><link rel="preload" href="/docs/assets/js/6.f86b5401.js" as="script"><link rel="prefetch" href="/docs/assets/js/10.783ce582.js"><link rel="prefetch" href="/docs/assets/js/11.6f33dd44.js"><link rel="prefetch" href="/docs/assets/js/12.c3bd2a61.js"><link rel="prefetch" href="/docs/assets/js/13.2df39f84.js"><link rel="prefetch" href="/docs/assets/js/14.af2ecfbc.js"><link rel="prefetch" href="/docs/assets/js/15.9983a763.js"><link rel="prefetch" href="/docs/assets/js/16.782db258.js"><link rel="prefetch" href="/docs/assets/js/17.04124198.js"><link rel="prefetch" href="/docs/assets/js/18.efedf33a.js"><link rel="prefetch" href="/docs/assets/js/19.b75b0a6f.js"><link rel="prefetch" href="/docs/assets/js/2.3e9bf4c9.js"><link rel="prefetch" href="/docs/assets/js/20.c7d201d0.js"><link rel="prefetch" href="/docs/assets/js/21.3709f65f.js"><link rel="prefetch" href="/docs/assets/js/22.ecbb6d60.js"><link rel="prefetch" href="/docs/assets/js/3.7cbf67d2.js"><link rel="prefetch" href="/docs/assets/js/4.3f3da556.js"><link rel="prefetch" href="/docs/assets/js/5.abc1b238.js"><link rel="prefetch" href="/docs/assets/js/7.120c22d9.js"><link rel="prefetch" href="/docs/assets/js/8.b161b559.js"><link rel="prefetch" href="/docs/assets/js/9.807c9668.js">
<link rel="preload" href="/docs/assets/css/0.styles.0538ca31.css" as="style"><link rel="preload" href="/docs/assets/js/app.af16b29f.js" as="script"><link rel="preload" href="/docs/assets/js/6.f86b5401.js" as="script"><link rel="prefetch" href="/docs/assets/js/10.3aec3aff.js"><link rel="prefetch" href="/docs/assets/js/11.3c715d4b.js"><link rel="prefetch" href="/docs/assets/js/12.f5d67101.js"><link rel="prefetch" href="/docs/assets/js/13.1b71fff9.js"><link rel="prefetch" href="/docs/assets/js/14.cd5e7136.js"><link rel="prefetch" href="/docs/assets/js/15.618bada7.js"><link rel="prefetch" href="/docs/assets/js/16.39b5f0a9.js"><link rel="prefetch" href="/docs/assets/js/17.1781a0fd.js"><link rel="prefetch" href="/docs/assets/js/18.42d5a6b0.js"><link rel="prefetch" href="/docs/assets/js/19.28b0b6dd.js"><link rel="prefetch" href="/docs/assets/js/2.3e9bf4c9.js"><link rel="prefetch" href="/docs/assets/js/20.4049e044.js"><link rel="prefetch" href="/docs/assets/js/21.3dac3195.js"><link rel="prefetch" href="/docs/assets/js/22.5a29a611.js"><link rel="prefetch" href="/docs/assets/js/23.6fc11064.js"><link rel="prefetch" href="/docs/assets/js/24.541271c6.js"><link rel="prefetch" href="/docs/assets/js/25.d102b518.js"><link rel="prefetch" href="/docs/assets/js/26.2bf4f42a.js"><link rel="prefetch" href="/docs/assets/js/27.62d662fe.js"><link rel="prefetch" href="/docs/assets/js/28.8e2b6aba.js"><link rel="prefetch" href="/docs/assets/js/3.068e2e40.js"><link rel="prefetch" href="/docs/assets/js/4.3f3da556.js"><link rel="prefetch" href="/docs/assets/js/5.abc1b238.js"><link rel="prefetch" href="/docs/assets/js/7.120c22d9.js"><link rel="prefetch" href="/docs/assets/js/8.d67efa58.js"><link rel="prefetch" href="/docs/assets/js/9.f68a10a9.js">
<link rel="stylesheet" href="/docs/assets/css/0.styles.0538ca31.css">
</head>
<body>
<div id="app" data-server-rendered="true"><div class="theme-container"><div class="theme-default-content"><h1>404</h1> <blockquote>Looks like we've got some broken links.</blockquote> <a href="/docs/" class="router-link-active">
<div id="app" data-server-rendered="true"><div class="theme-container"><div class="theme-default-content"><h1>404</h1> <blockquote>How did we get here?</blockquote> <a href="/docs/" class="router-link-active">
Take me home.
</a></div></div><div class="global-ui"></div></div>
<script src="/docs/assets/js/app.658a191c.js" defer></script><script src="/docs/assets/js/6.f86b5401.js" defer></script>
<script src="/docs/assets/js/app.af16b29f.js" defer></script><script src="/docs/assets/js/6.f86b5401.js" defer></script>
</body>
</html>

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
(window.webpackJsonp=window.webpackJsonp||[]).push([[14],{361:function(s,a,t){"use strict";t.r(a);var r=t(41),e=Object(r.a)({},(function(){var s=this,a=s.$createElement,t=s._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[t("h1",{attrs:{id:"redis部署"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#redis部署"}},[s._v("#")]),s._v(" redis部署")]),s._v(" "),t("h2",{attrs:{id:"docker部署"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#docker部署"}},[s._v("#")]),s._v(" docker部署")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[s._v("docker run -d --name redis -p "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("6379")]),s._v(":6379 \n-v /hoj/data/redis/data:/data "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n--restart"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"always"')]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\nredis "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n--requirepass "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"redis_password"')]),s._v(" \n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br"),t("span",{staticClass:"line-number"},[s._v("3")]),t("br"),t("span",{staticClass:"line-number"},[s._v("4")]),t("br"),t("span",{staticClass:"line-number"},[s._v("5")]),t("br")])]),t("h2",{attrs:{id:"常规部署"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#常规部署"}},[s._v("#")]),s._v(" 常规部署")]),s._v(" "),t("p",[s._v("请自行百度。。")])])}),[],!1,null,null,null);a.default=e.exports}}]);
(window.webpackJsonp=window.webpackJsonp||[]).push([[15],{360:function(s,a,t){"use strict";t.r(a);var e=t(41),r=Object(e.a)({},(function(){var s=this,a=s.$createElement,t=s._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[t("h1",{attrs:{id:"redis部署"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#redis部署"}},[s._v("#")]),s._v(" Redis部署")]),s._v(" "),t("h2",{attrs:{id:"docker部署"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#docker部署"}},[s._v("#")]),s._v(" docker部署")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[s._v("docker run -d --name redis -p "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("6379")]),s._v(":6379 \n-v /hoj/data/redis/data:/data "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n--restart"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"always"')]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\nredis "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n--requirepass "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"redis_password"')]),s._v(" \n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br"),t("span",{staticClass:"line-number"},[s._v("3")]),t("br"),t("span",{staticClass:"line-number"},[s._v("4")]),t("br"),t("span",{staticClass:"line-number"},[s._v("5")]),t("br")])]),t("h2",{attrs:{id:"常规部署"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#常规部署"}},[s._v("#")]),s._v(" 常规部署")]),s._v(" "),t("p",[s._v("请自行百度。。")])])}),[],!1,null,null,null);a.default=r.exports}}]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
(window.webpackJsonp=window.webpackJsonp||[]).push([[16],{363:function(t,s,i){"use strict";i.r(s);var e=i(41),n=Object(e.a)({},(function(){var t=this.$createElement,s=this._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[s("h1",{attrs:{id:"开发简介"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#开发简介"}},[this._v("#")]),this._v(" 开发简介")]),this._v(" "),s("ul",[s("li",[this._v("数据库表说明")]),this._v(" "),s("li",[this._v("其它待续.......")])])])}),[],!1,null,null,null);s.default=n.exports}}]);
(window.webpackJsonp=window.webpackJsonp||[]).push([[17],{364:function(t,s,i){"use strict";i.r(s);var e=i(41),n=Object(e.a)({},(function(){var t=this.$createElement,s=this._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[s("h1",{attrs:{id:"开发简介"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#开发简介"}},[this._v("#")]),this._v(" 开发简介")]),this._v(" "),s("ul",[s("li",[this._v("数据库表说明")]),this._v(" "),s("li",[this._v("其它待续.......")])])])}),[],!1,null,null,null);s.default=n.exports}}]);

File diff suppressed because one or more lines are too long

View File

@ -1 +0,0 @@
(window.webpackJsonp=window.webpackJsonp||[]).push([[20],{367:function(t,e,s){"use strict";s.r(e);var l=s(41),n=Object(l.a)({},(function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"使用简介"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#使用简介"}},[t._v("#")]),t._v(" 使用简介")]),t._v(" "),s("ul",[s("li",[t._v("安全沙盒的简单介绍")]),t._v(" "),s("li",[t._v("特殊判题的程序例子")]),t._v(" "),s("li",[t._v("其它待续......")])])])}),[],!1,null,null,null);e.default=n.exports}}]);

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
(window.webpackJsonp=window.webpackJsonp||[]).push([[22],{368:function(t,l,e){"use strict";e.r(l);var s=e(41),v=Object(s.a)({},(function(){var t=this,l=t.$createElement,e=t._self._c||l;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"使用简介"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#使用简介"}},[t._v("#")]),t._v(" 使用简介")]),t._v(" "),e("ul",[e("li",[t._v("测试数据的介绍")]),t._v(" "),e("li",[t._v("比赛的介绍")]),t._v(" "),e("li",[t._v("导入题目的介绍")]),t._v(" "),e("li",[t._v("导入用户的介绍")]),t._v(" "),e("li",[t._v("讨论管理的介绍")]),t._v(" "),e("li",[t._v("特殊判题的程序例子")]),t._v(" "),e("li",[t._v("其它待续......")])])])}),[],!1,null,null,null);l.default=v.exports}}]);

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
(window.webpackJsonp=window.webpackJsonp||[]).push([[23],{370:function(t,_,s){"use strict";s.r(_);var e=s(41),v=Object(e.a)({},(function(){var t=this,_=t.$createElement,s=t._self._c||_;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"比赛介绍"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#比赛介绍"}},[t._v("#")]),t._v(" 比赛介绍")]),t._v(" "),s("p",[s("img",{attrs:{src:"https://img-blog.csdnimg.cn/20210523221519574.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1MzA5Nw==,size_16,color_FFFFFF,t_70",alt:"在这里插入图片描述"}})]),t._v(" "),s("p",[t._v("创建比赛时两种赛制:")]),t._v(" "),s("ul",[s("li",[s("p",[s("strong",[t._v("ACM 模式")])]),t._v(" "),s("p",[t._v("在该模式下,我们严格按照ACM-ICPC的比赛规则来进行Contest设置项中的"),s("code",[t._v("Seal Time Rank")]),t._v("即为是否封榜,封榜后将不再刷新排名。可选择比赛结束前半小时,比赛前一小时,比赛全程封榜。")])]),t._v(" "),s("li",[s("p",[s("strong",[t._v("OI 模式")])]),t._v(" "),s("p",[t._v("在OI模式下选手的提交将根据得分点来计分多次提交以最后一次提交为准排名规则为多个题目的总分数。同样可以进行封榜操作封榜时段选手不能查看到实时的排行榜数据")])])]),t._v(" "),s("p",[t._v("注意:管理员可以选择强制刷新,查看实时的排行榜数据!通过"),s("code",[t._v("Force Update")]),t._v("来强制刷新榜,且刷新后的榜仅对管理者可见。")]),t._v(" "),s("p",[t._v("比赛权限模式有三种:")]),t._v(" "),s("ul",[s("li",[s("strong",[t._v("公开赛")]),t._v(":所有用户都可以查看比赛详情、比赛题目、比赛提交,比赛排行榜、比赛讨论等,且都可以在比赛阶段随时提交。")]),t._v(" "),s("li",[s("strong",[t._v("保护赛")]),t._v(":所有用户都可以查看比赛详情、比赛题目、比赛提交,比赛排行榜、比赛讨论等,但在比赛阶段提交需要提供该比赛的密码!")]),t._v(" "),s("li",[s("strong",[t._v("私有赛")]),t._v(":仅支持有比赛密码的用户进入比赛,查看查看比赛详情、比赛题目、比赛提交,比赛排行榜、比赛讨论等,包括提交。")])])])}),[],!1,null,null,null);_.default=v.exports}}]);

View File

@ -0,0 +1 @@
(window.webpackJsonp=window.webpackJsonp||[]).push([[24],{369:function(t,s,a){"use strict";a.r(s);var e=a(41),r=Object(e.a)({},(function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"评论管理"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#评论管理"}},[t._v("#")]),t._v(" 评论管理")]),t._v(" "),a("p",[a("img",{attrs:{src:"https://img-blog.csdnimg.cn/20210523223605573.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1MzA5Nw==,size_16,color_FFFFFF,t_70#pic_center",alt:"在这里插入图片描述"}})]),t._v(" "),a("ul",[a("li",[a("p",[t._v("后台管理员可以查看所有的讨论帖,并且可以选择是否置顶,是否正常显示,删除,查看等")])]),t._v(" "),a("li",[a("p",[t._v("后台管理员可以查看对应讨论帖的举报内容")]),t._v(" "),a("p",[a("img",{attrs:{src:"https://img-blog.csdnimg.cn/20210523221321418.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1MzA5Nw==,size_16,color_FFFFFF,t_70",alt:"在这里插入图片描述"}})])])])])}),[],!1,null,null,null);s.default=r.exports}}]);

View File

@ -0,0 +1 @@
(window.webpackJsonp=window.webpackJsonp||[]).push([[25],{371:function(t,s,a){"use strict";a.r(s);var r=a(41),e=Object(r.a)({},(function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"导入题目"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#导入题目"}},[t._v("#")]),t._v(" 导入题目")]),t._v(" "),a("h2",{attrs:{id:"一、导入hoj题目"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#一、导入hoj题目"}},[t._v("#")]),t._v(" 一、导入HOJ题目")]),t._v(" "),a("p",[t._v("待续.....")]),t._v(" "),a("h2",{attrs:{id:"二、导入其它oj题目"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#二、导入其它oj题目"}},[t._v("#")]),t._v(" 二、导入其它OJ题目")]),t._v(" "),a("p",[t._v("导入HDU、Codeforces题目只需提供该题目的题号便可一键导入")]),t._v(" "),a("p",[a("strong",[t._v("管理员进入后台,点击题目列表")])]),t._v(" "),a("p",[a("img",{attrs:{src:"https://img-blog.csdnimg.cn/20210523223454472.png#pic_center",alt:"在这里插入图片描述"}})]),t._v(" "),a("p",[t._v("然后添加上方的添加按钮")]),t._v(" "),a("p",[a("img",{attrs:{src:"https://img-blog.csdnimg.cn/20210523222914722.png",alt:"在这里插入图片描述"}})]),t._v(" "),a("p",[a("strong",[t._v("在弹出窗中选择OJ名字及题号便可导入")])]),t._v(" "),a("p",[a("img",{attrs:{src:"https://img-blog.csdnimg.cn/20210523223042100.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1MzA5Nw==,size_16,color_FFFFFF,t_70",alt:"在这里插入图片描述"}})]),t._v(" "),a("p",[a("strong",[t._v("注意:")])]),t._v(" "),a("ul",[a("li",[t._v("HDU的题号一般是 1000以上的数字")]),t._v(" "),a("li",[t._v("Codeforces的题号是1000A、1000B、这种数字加大写英文字母的格式")])])])}),[],!1,null,null,null);s.default=e.exports}}]);

View File

@ -0,0 +1 @@
(window.webpackJsonp=window.webpackJsonp||[]).push([[26],{372:function(t,s,a){"use strict";a.r(s);var e=a(41),l=Object(e.a)({},(function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h2",{attrs:{id:"导入用户"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#导入用户"}},[t._v("#")]),t._v(" 导入用户")]),t._v(" "),a("p",[a("img",{attrs:{src:"https://img-blog.csdnimg.cn/2021052322072728.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1MzA5Nw==,size_16,color_FFFFFF,t_70",alt:"在这里插入图片描述"}})]),t._v(" "),a("p",[t._v("要求如下:")]),t._v(" "),a("ol",[a("li",[a("p",[t._v("用户数据导入仅支持csv格式的用户数据。")])]),t._v(" "),a("li",[a("p",[t._v("共三列数据: 用户名,密码,邮箱,任一列不能为空,否则该行数据可能导入失败。")])]),t._v(" "),a("li",[a("p",[t._v("第一行不必写(“用户名”,“密码”,“邮箱”)这三个列名。")])]),t._v(" "),a("li",[a("p",[t._v("请导入保存为UTF-8编码的文件否则中文可能会乱码。")])])])])}),[],!1,null,null,null);s.default=l.exports}}]);

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
(window.webpackJsonp=window.webpackJsonp||[]).push([[28],{373:function(s,a,t){"use strict";t.r(a);var n=t(41),e=Object(n.a)({},(function(){var s=this,a=s.$createElement,t=s._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[t("h1",{attrs:{id:"测试用例"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#测试用例"}},[s._v("#")]),s._v(" 测试用例")]),s._v(" "),t("p",[t("img",{attrs:{src:"https://img-blog.csdnimg.cn/20210523215852734.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1MzA5Nw==,size_16,color_FFFFFF,t_70",alt:"在这里插入图片描述"}})]),s._v(" "),t("p",[t("strong",[s._v("进入后台添加题目上传题目测试用例数据可以选择手动输入、Zip文件上传两种方式")])]),s._v(" "),t("h2",{attrs:{id:"一、手动输入"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#一、手动输入"}},[s._v("#")]),s._v(" 一、手动输入")]),s._v(" "),t("p",[s._v("每次点击"),t("code",[s._v("Add Sampple")]),s._v("就可以手动填入该用例的输入与输出该方式比较适合题目数据简单的同时手动输入的题目数据将记录进数据库下次对该题目进行修改可以直接获取然后进行测试数据的修改同时也会在服务器对应的testcase文件夹生成对应的文件。")]),s._v(" "),t("h2",{attrs:{id:"二、文件上传"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#二、文件上传"}},[s._v("#")]),s._v(" 二、文件上传")]),s._v(" "),t("p",[s._v("对于通题目,测试用例文件包括"),t("code",[s._v("in")]),s._v("、"),t("code",[s._v("out")]),s._v("、"),t("code",[s._v("ans")]),s._v("三种拓展名")]),s._v(" "),t("p",[s._v("例如有两组测试用例,则对于普通题目测试用例的文件名分别为"),t("code",[s._v("1.in, 1.out1.ans, 2.in, 2.out2.ans")]),s._v("其他形式的文件后台均不识别。")]),s._v(" "),t("p",[s._v("压缩时,请将文件都放在压缩包的根目录,而不是包含在某一个文件夹中,比如正确的格式是:")]),s._v(" "),t("div",{staticClass:"language-bash line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[s._v("├── "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v(".in\n├── "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v(".out\n├── "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2")]),s._v(".in\n├── "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2")]),s._v(".out\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br"),t("span",{staticClass:"line-number"},[s._v("3")]),t("br"),t("span",{staticClass:"line-number"},[s._v("4")]),t("br")])]),t("div",{staticClass:"language-bash line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[s._v("├── "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v(".in\n├── "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v(".ans\n├── "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2")]),s._v(".in\n├── "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2")]),s._v(".ans\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br"),t("span",{staticClass:"line-number"},[s._v("3")]),t("br"),t("span",{staticClass:"line-number"},[s._v("4")]),t("br")])]),t("p",[s._v("然后压缩测试用例到一个zip中")]),s._v(" "),t("p",[s._v("注意:不要在这些文件外面套多一层文件夹,请直接压缩!!!")]),s._v(" "),t("p",[s._v("同时建议:尽量合并测试用例到一个文件中,减少测试用例组数,这会一定程度上提高判题性能。")])])}),[],!1,null,null,null);a.default=e.exports}}]);

View File

@ -1 +1 @@
(window.webpackJsonp=window.webpackJsonp||[]).push([[3],{318:function(t,e,n){},346:function(t,e,n){"use strict";n(318)},369:function(t,e,n){"use strict";n.r(e);var i={functional:!0,props:{type:{type:String,default:"tip"},text:String,vertical:{type:String,default:"top"}},render:function(t,e){var n=e.props,i=e.slots;return t("span",{class:["badge",n.type],style:{verticalAlign:n.vertical}},n.text||i().default)}},r=(n(346),n(41)),p=Object(r.a)(i,void 0,void 0,!1,null,"69367c83",null);e.default=p.exports}}]);
(window.webpackJsonp=window.webpackJsonp||[]).push([[3],{318:function(t,e,n){},346:function(t,e,n){"use strict";n(318)},375:function(t,e,n){"use strict";n.r(e);var i={functional:!0,props:{type:{type:String,default:"tip"},text:String,vertical:{type:String,default:"top"}},render:function(t,e){var n=e.props,i=e.slots;return t("span",{class:["badge",n.type],style:{verticalAlign:n.vertical}},n.text||i().default)}},r=(n(346),n(41)),p=Object(r.a)(i,void 0,void 0,!1,null,"69367c83",null);e.default=p.exports}}]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -8,7 +8,7 @@
<link rel="icon" href="/docs/img/favicon.ico">
<meta name="description" content="HOJ 的开发与使用文档">
<link rel="preload" href="/docs/assets/css/0.styles.0538ca31.css" as="style"><link rel="preload" href="/docs/assets/js/app.658a191c.js" as="script"><link rel="preload" href="/docs/assets/js/2.3e9bf4c9.js" as="script"><link rel="preload" href="/docs/assets/js/9.807c9668.js" as="script"><link rel="prefetch" href="/docs/assets/js/10.783ce582.js"><link rel="prefetch" href="/docs/assets/js/11.6f33dd44.js"><link rel="prefetch" href="/docs/assets/js/12.c3bd2a61.js"><link rel="prefetch" href="/docs/assets/js/13.2df39f84.js"><link rel="prefetch" href="/docs/assets/js/14.af2ecfbc.js"><link rel="prefetch" href="/docs/assets/js/15.9983a763.js"><link rel="prefetch" href="/docs/assets/js/16.782db258.js"><link rel="prefetch" href="/docs/assets/js/17.04124198.js"><link rel="prefetch" href="/docs/assets/js/18.efedf33a.js"><link rel="prefetch" href="/docs/assets/js/19.b75b0a6f.js"><link rel="prefetch" href="/docs/assets/js/20.c7d201d0.js"><link rel="prefetch" href="/docs/assets/js/21.3709f65f.js"><link rel="prefetch" href="/docs/assets/js/22.ecbb6d60.js"><link rel="prefetch" href="/docs/assets/js/3.7cbf67d2.js"><link rel="prefetch" href="/docs/assets/js/4.3f3da556.js"><link rel="prefetch" href="/docs/assets/js/5.abc1b238.js"><link rel="prefetch" href="/docs/assets/js/6.f86b5401.js"><link rel="prefetch" href="/docs/assets/js/7.120c22d9.js"><link rel="prefetch" href="/docs/assets/js/8.b161b559.js">
<link rel="preload" href="/docs/assets/css/0.styles.0538ca31.css" as="style"><link rel="preload" href="/docs/assets/js/app.af16b29f.js" as="script"><link rel="preload" href="/docs/assets/js/2.3e9bf4c9.js" as="script"><link rel="preload" href="/docs/assets/js/9.f68a10a9.js" as="script"><link rel="prefetch" href="/docs/assets/js/10.3aec3aff.js"><link rel="prefetch" href="/docs/assets/js/11.3c715d4b.js"><link rel="prefetch" href="/docs/assets/js/12.f5d67101.js"><link rel="prefetch" href="/docs/assets/js/13.1b71fff9.js"><link rel="prefetch" href="/docs/assets/js/14.cd5e7136.js"><link rel="prefetch" href="/docs/assets/js/15.618bada7.js"><link rel="prefetch" href="/docs/assets/js/16.39b5f0a9.js"><link rel="prefetch" href="/docs/assets/js/17.1781a0fd.js"><link rel="prefetch" href="/docs/assets/js/18.42d5a6b0.js"><link rel="prefetch" href="/docs/assets/js/19.28b0b6dd.js"><link rel="prefetch" href="/docs/assets/js/20.4049e044.js"><link rel="prefetch" href="/docs/assets/js/21.3dac3195.js"><link rel="prefetch" href="/docs/assets/js/22.5a29a611.js"><link rel="prefetch" href="/docs/assets/js/23.6fc11064.js"><link rel="prefetch" href="/docs/assets/js/24.541271c6.js"><link rel="prefetch" href="/docs/assets/js/25.d102b518.js"><link rel="prefetch" href="/docs/assets/js/26.2bf4f42a.js"><link rel="prefetch" href="/docs/assets/js/27.62d662fe.js"><link rel="prefetch" href="/docs/assets/js/28.8e2b6aba.js"><link rel="prefetch" href="/docs/assets/js/3.068e2e40.js"><link rel="prefetch" href="/docs/assets/js/4.3f3da556.js"><link rel="prefetch" href="/docs/assets/js/5.abc1b238.js"><link rel="prefetch" href="/docs/assets/js/6.f86b5401.js"><link rel="prefetch" href="/docs/assets/js/7.120c22d9.js"><link rel="prefetch" href="/docs/assets/js/8.d67efa58.js">
<link rel="stylesheet" href="/docs/assets/css/0.styles.0538ca31.css">
</head>
<body>
@ -24,7 +24,7 @@
Gitee首页
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div><div class="nav-item"><a href="https://blog.csdn.net/weixin_43853097" target="_blank" rel="noopener noreferrer" class="nav-link external">
作者首页
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div> <!----></nav> <ul class="sidebar-links"><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>开始介绍</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading open"><span>部署文档</span> <span class="arrow down"></span></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/docs/deploy/" aria-current="page" class="sidebar-link">环境配置</a></li><li><a href="/docs/deploy/frontend.html" class="sidebar-link">前端部署</a></li><li><a href="/docs/deploy/mysql.html" class="sidebar-link">MySQL部署</a></li><li><a href="/docs/deploy/redis.html" class="sidebar-link">redis部署</a></li><li><a href="/docs/deploy/nacos.html" class="sidebar-link">Nacos部署</a></li><li><a href="/docs/deploy/backend.html" aria-current="page" class="active sidebar-link">后端部署</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/docs/deploy/backend.html#前言" class="sidebar-link">前言</a></li><li class="sidebar-sub-header"><a href="/docs/deploy/backend.html#文件介绍" class="sidebar-link">文件介绍</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/docs/deploy/backend.html#_1-check-nacos-sh" class="sidebar-link">1. check_nacos.sh</a></li><li class="sidebar-sub-header"><a href="/docs/deploy/backend.html#_2-run-sh" class="sidebar-link">2. run.sh</a></li><li class="sidebar-sub-header"><a href="/docs/deploy/backend.html#_3-dockerfile" class="sidebar-link">3. Dockerfile</a></li></ul></li></ul></li><li><a href="/docs/deploy/judgeserver.html" class="sidebar-link">判题服务部署</a></li><li><a href="/docs/deploy/rsync.html" class="sidebar-link">评测数据同步</a></li></ul></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>开发文档</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>使用文档</span> <span class="arrow right"></span></p> <!----></section></li></ul> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="后端部署"><a href="#后端部署" class="header-anchor">#</a> 后端部署</h1> <h2 id="前言"><a href="#前言" class="header-anchor">#</a> 前言</h2> <p>下载本项目,进入到当前文件夹执行打包命令</p> <div class="language-shell line-numbers-mode"><pre class="language-shell"><code><span class="token function">git</span> clone https://gitee.com/himitzh0730/hoj-deploy.git <span class="token operator">&amp;&amp;</span> <span class="token builtin class-name">cd</span> hoj-deploy/src/backend
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div> <!----></nav> <ul class="sidebar-links"><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>开始介绍</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading open"><span>部署文档</span> <span class="arrow down"></span></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/docs/deploy/" aria-current="page" class="sidebar-link">环境配置</a></li><li><a href="/docs/deploy/docker.html" class="sidebar-link">快速部署</a></li><li><a href="/docs/deploy/frontend.html" class="sidebar-link">前端部署</a></li><li><a href="/docs/deploy/mysql.html" class="sidebar-link">MySQL部署</a></li><li><a href="/docs/deploy/redis.html" class="sidebar-link">Redis部署</a></li><li><a href="/docs/deploy/nacos.html" class="sidebar-link">Nacos部署</a></li><li><a href="/docs/deploy/backend.html" aria-current="page" class="active sidebar-link">后端部署</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/docs/deploy/backend.html#前言" class="sidebar-link">前言</a></li><li class="sidebar-sub-header"><a href="/docs/deploy/backend.html#文件介绍" class="sidebar-link">文件介绍</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/docs/deploy/backend.html#_1-check-nacos-sh" class="sidebar-link">1. check_nacos.sh</a></li><li class="sidebar-sub-header"><a href="/docs/deploy/backend.html#_2-run-sh" class="sidebar-link">2. run.sh</a></li><li class="sidebar-sub-header"><a href="/docs/deploy/backend.html#_3-dockerfile" class="sidebar-link">3. Dockerfile</a></li></ul></li></ul></li><li><a href="/docs/deploy/judgeserver.html" class="sidebar-link">判题服务部署</a></li><li><a href="/docs/deploy/rsync.html" class="sidebar-link">评测数据同步</a></li></ul></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>开发文档</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>使用文档</span> <span class="arrow right"></span></p> <!----></section></li></ul> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="后端部署"><a href="#后端部署" class="header-anchor">#</a> 后端部署</h1> <h2 id="前言"><a href="#前言" class="header-anchor">#</a> 前言</h2> <p>下载本项目,进入到当前文件夹执行打包命令</p> <div class="language-shell line-numbers-mode"><pre class="language-shell"><code><span class="token function">git</span> clone https://gitee.com/himitzh0730/hoj-deploy.git <span class="token operator">&amp;&amp;</span> <span class="token builtin class-name">cd</span> hoj-deploy/src/backend
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br></div></div><p>当前文件夹为打包<code>hoj-backend</code>镜像的相关文件,将这些文件复制到同一个文件夹内,<strong>然后打包<a href="https://gitee.com/himitzh0730/hoj/tree/master/hoj-springboot/DataBackup" target="_blank" rel="noopener noreferrer">DataBackup<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a>SpringBoot项目成jar包也放到当前文件夹</strong>,之后执行以下命令进行打包成镜像</p> <div class="language-shell line-numbers-mode"><pre class="language-shell"><code>docker build -t hoj-backend <span class="token builtin class-name">.</span>
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br></div></div><p><strong>项目依赖于hoj-redishoj-nacoshoj-mysql等镜像成功启动以及根据前面三个镜像的配置修改环境参数才可正常启动</strong></p> <p>docker-compose 启动</p> <div class="language-yaml line-numbers-mode"><pre class="language-yaml"><code><span class="token key atrule">version</span><span class="token punctuation">:</span> <span class="token string">&quot;3&quot;</span>
<span class="token key atrule">services</span><span class="token punctuation">:</span>
@ -184,6 +184,6 @@ java -Djava.security.egd<span class="token operator">=</span>file:/dev/./urandom
</a>
</span></p></div> </main></div><div class="global-ui"></div></div>
<script src="/docs/assets/js/app.658a191c.js" defer></script><script src="/docs/assets/js/2.3e9bf4c9.js" defer></script><script src="/docs/assets/js/9.807c9668.js" defer></script>
<script src="/docs/assets/js/app.af16b29f.js" defer></script><script src="/docs/assets/js/2.3e9bf4c9.js" defer></script><script src="/docs/assets/js/9.f68a10a9.js" defer></script>
</body>
</html>

View File

@ -0,0 +1,179 @@
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>快速部署 | HOJ 文档</title>
<meta name="generator" content="VuePress 1.8.2">
<link rel="icon" href="/docs/img/favicon.ico">
<meta name="description" content="HOJ 的开发与使用文档">
<link rel="preload" href="/docs/assets/css/0.styles.0538ca31.css" as="style"><link rel="preload" href="/docs/assets/js/app.af16b29f.js" as="script"><link rel="preload" href="/docs/assets/js/2.3e9bf4c9.js" as="script"><link rel="preload" href="/docs/assets/js/10.3aec3aff.js" as="script"><link rel="prefetch" href="/docs/assets/js/11.3c715d4b.js"><link rel="prefetch" href="/docs/assets/js/12.f5d67101.js"><link rel="prefetch" href="/docs/assets/js/13.1b71fff9.js"><link rel="prefetch" href="/docs/assets/js/14.cd5e7136.js"><link rel="prefetch" href="/docs/assets/js/15.618bada7.js"><link rel="prefetch" href="/docs/assets/js/16.39b5f0a9.js"><link rel="prefetch" href="/docs/assets/js/17.1781a0fd.js"><link rel="prefetch" href="/docs/assets/js/18.42d5a6b0.js"><link rel="prefetch" href="/docs/assets/js/19.28b0b6dd.js"><link rel="prefetch" href="/docs/assets/js/20.4049e044.js"><link rel="prefetch" href="/docs/assets/js/21.3dac3195.js"><link rel="prefetch" href="/docs/assets/js/22.5a29a611.js"><link rel="prefetch" href="/docs/assets/js/23.6fc11064.js"><link rel="prefetch" href="/docs/assets/js/24.541271c6.js"><link rel="prefetch" href="/docs/assets/js/25.d102b518.js"><link rel="prefetch" href="/docs/assets/js/26.2bf4f42a.js"><link rel="prefetch" href="/docs/assets/js/27.62d662fe.js"><link rel="prefetch" href="/docs/assets/js/28.8e2b6aba.js"><link rel="prefetch" href="/docs/assets/js/3.068e2e40.js"><link rel="prefetch" href="/docs/assets/js/4.3f3da556.js"><link rel="prefetch" href="/docs/assets/js/5.abc1b238.js"><link rel="prefetch" href="/docs/assets/js/6.f86b5401.js"><link rel="prefetch" href="/docs/assets/js/7.120c22d9.js"><link rel="prefetch" href="/docs/assets/js/8.d67efa58.js"><link rel="prefetch" href="/docs/assets/js/9.f68a10a9.js">
<link rel="stylesheet" href="/docs/assets/css/0.styles.0538ca31.css">
</head>
<body>
<div id="app" data-server-rendered="true"><div class="theme-container"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/docs/" class="home-link router-link-active"><!----> <span class="site-name">HOJ 文档</span></a> <div class="links"><div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><a href="https://www.hcode.top" target="_blank" rel="noopener noreferrer" class="nav-link external">
Demo
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div><div class="nav-item"><a href="https://gitee.com/himitzh0730/hoj" target="_blank" rel="noopener noreferrer" class="nav-link external">
Gitee首页
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div><div class="nav-item"><a href="https://blog.csdn.net/weixin_43853097" target="_blank" rel="noopener noreferrer" class="nav-link external">
作者首页
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div> <!----></nav></div></header> <div class="sidebar-mask"></div> <aside class="sidebar"><nav class="nav-links"><div class="nav-item"><a href="https://www.hcode.top" target="_blank" rel="noopener noreferrer" class="nav-link external">
Demo
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div><div class="nav-item"><a href="https://gitee.com/himitzh0730/hoj" target="_blank" rel="noopener noreferrer" class="nav-link external">
Gitee首页
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div><div class="nav-item"><a href="https://blog.csdn.net/weixin_43853097" target="_blank" rel="noopener noreferrer" class="nav-link external">
作者首页
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div> <!----></nav> <ul class="sidebar-links"><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>开始介绍</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading open"><span>部署文档</span> <span class="arrow down"></span></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/docs/deploy/" aria-current="page" class="sidebar-link">环境配置</a></li><li><a href="/docs/deploy/docker.html" aria-current="page" class="active sidebar-link">快速部署</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/docs/deploy/docker.html#一、单机部署" class="sidebar-link">一、单机部署</a></li><li class="sidebar-sub-header"><a href="/docs/deploy/docker.html#二、分布式部署" class="sidebar-link">二、分布式部署</a></li><li class="sidebar-sub-header"><a href="/docs/deploy/docker.html#三、开启https" class="sidebar-link">三、开启Https</a></li></ul></li><li><a href="/docs/deploy/frontend.html" class="sidebar-link">前端部署</a></li><li><a href="/docs/deploy/mysql.html" class="sidebar-link">MySQL部署</a></li><li><a href="/docs/deploy/redis.html" class="sidebar-link">Redis部署</a></li><li><a href="/docs/deploy/nacos.html" class="sidebar-link">Nacos部署</a></li><li><a href="/docs/deploy/backend.html" class="sidebar-link">后端部署</a></li><li><a href="/docs/deploy/judgeserver.html" class="sidebar-link">判题服务部署</a></li><li><a href="/docs/deploy/rsync.html" class="sidebar-link">评测数据同步</a></li></ul></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>开发文档</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>使用文档</span> <span class="arrow right"></span></p> <!----></section></li></ul> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="快速部署"><a href="#快速部署" class="header-anchor">#</a> 快速部署</h1> <blockquote><p>前提已经在上一步准备好docker与docker-compose</p></blockquote> <h2 id="一、单机部署"><a href="#一、单机部署" class="header-anchor">#</a> 一、单机部署</h2> <ol><li><p>选择好需要安装的位置,运行下面命令</p> <div class="language-shell line-numbers-mode"><pre class="language-shell"><code><span class="token function">git</span> clone https://gitee.com/himitzh0730/hoj-deploy.git <span class="token operator">&amp;&amp;</span> <span class="token builtin class-name">cd</span> hoj-deploy
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br></div></div></li> <li><p>进入文件夹使用docker-compose启动各容器服务</p> <div class="language-shell line-numbers-mode"><pre class="language-shell"><code><span class="token builtin class-name">cd</span> standAlone
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br></div></div><p><code>standAlone</code>文件夹文件有以下:</p> <div class="language-bash line-numbers-mode"><pre class="language-bash"><code>├── docker-compose.yml
├── .env
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br></div></div><p>主要配置请修改<code>.env</code>文件,内容如下:</p> <blockquote><p>注意各服务ip最好不改动保持处于172.20.0.0/16网段的docker network</p></blockquote> <div class="language-properties line-numbers-mode"><pre class="language-properties"><code><span class="token comment"># redis的配置</span>
<span class="token attr-name">REDIS_HOST</span><span class="token punctuation">=</span><span class="token attr-value">172.20.0.2</span>
<span class="token attr-name">REDIS_PORT</span><span class="token punctuation">=</span><span class="token attr-value">6379</span>
<span class="token attr-name">REDIS_PASSWORD</span><span class="token punctuation">=</span><span class="token attr-value">hoj123456</span>
<span class="token comment"># mysql的配置</span>
<span class="token attr-name">MYSQL_HOST</span><span class="token punctuation">=</span><span class="token attr-value">172.20.0.3</span>
<span class="token attr-name">MYSQL_PUBLIC_HOST</span><span class="token punctuation">=</span><span class="token attr-value">172.20.0.3 # 如果判题服务是分布式请提供当前mysql所在服务器的公网ip</span>
<span class="token attr-name">MYSQL_PORT</span><span class="token punctuation">=</span><span class="token attr-value">3306</span>
<span class="token attr-name">MYSQL_ROOT_PASSWORD</span><span class="token punctuation">=</span><span class="token attr-value">hoj123456</span>
<span class="token comment"># nacos的配置</span>
<span class="token attr-name">NACOS_HOST</span><span class="token punctuation">=</span><span class="token attr-value">172.20.0.4</span>
<span class="token attr-name">NACOS_PORT</span><span class="token punctuation">=</span><span class="token attr-value">8848</span>
<span class="token attr-name">NACOS_USERNAME</span><span class="token punctuation">=</span><span class="token attr-value">root</span>
<span class="token attr-name">NACOS_PASSWORD</span><span class="token punctuation">=</span><span class="token attr-value">hoj123456</span>
<span class="token comment"># backend后端服务的配置</span>
<span class="token attr-name">BACKEND_HOST</span><span class="token punctuation">=</span><span class="token attr-value">172.20.0.5</span>
<span class="token attr-name">BACKEND_PORT</span><span class="token punctuation">=</span><span class="token attr-value">6688</span>
<span class="token attr-name">JWT_TOKEN_SECRET</span><span class="token punctuation">=</span><span class="token attr-value">default # token加密秘钥 默认则生成32位随机密钥</span>
<span class="token attr-name">JWT_TOKEN_EXPIRE</span><span class="token punctuation">=</span><span class="token attr-value">86400 # token过期时间默认为24小时 86400s</span>
<span class="token attr-name">JWT_TOKEN_FRESH_EXPIRE</span><span class="token punctuation">=</span><span class="token attr-value">43200 # token默认12小时可自动刷新</span>
<span class="token attr-name">JUDGE_TOKEN</span><span class="token punctuation">=</span><span class="token attr-value">default # 调用判题服务器的token 默认则生成32位随机密钥</span>
<span class="token attr-name">EMAIL_SERVER_HOST</span><span class="token punctuation">=</span><span class="token attr-value">smtp.qq.com # 请使用邮件服务的域名或ip</span>
<span class="token attr-name">EMAIL_SERVER_PORT</span><span class="token punctuation">=</span><span class="token attr-value">465</span>
<span class="token attr-name">EMAIL_USERNMAE</span><span class="token punctuation">=</span><span class="token attr-value">your_email_username</span>
<span class="token attr-name">EMAIL_PASSWORD</span><span class="token punctuation">=</span><span class="token attr-value">your_email_password</span>
<span class="token comment"># 开启虚拟判题请提供对应oj的账号密码 格式为 </span>
<span class="token comment"># username1,username2,...</span>
<span class="token comment"># password1,password2,...</span>
<span class="token attr-name">HDU_ACCOUNT_USERNAME_LIST</span><span class="token punctuation">=</span>
<span class="token attr-name">HDU_ACCOUNT_PASSWORD_LIST</span><span class="token punctuation">=</span>
<span class="token attr-name">CF_ACCOUNT_USERNAME_LIST</span><span class="token punctuation">=</span>
<span class="token attr-name">CF_ACCOUNT_PASSWORD_LIST</span><span class="token punctuation">=</span>
<span class="token comment"># judgeserver的配置</span>
<span class="token attr-name">JUDGE_SERVER_IP</span><span class="token punctuation">=</span><span class="token attr-value">172.20.0.7</span>
<span class="token attr-name">JUDGE_SERVER_PORT</span><span class="token punctuation">=</span><span class="token attr-value">8088</span>
<span class="token attr-name">JUDGE_SERVER_NAME</span><span class="token punctuation">=</span><span class="token attr-value">judger-alone</span>
<span class="token comment"># docker network的配置</span>
<span class="token attr-name">SUBNET</span><span class="token punctuation">=</span><span class="token attr-value">172.20.0.0/16</span>
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br><span class="line-number">15</span><br><span class="line-number">16</span><br><span class="line-number">17</span><br><span class="line-number">18</span><br><span class="line-number">19</span><br><span class="line-number">20</span><br><span class="line-number">21</span><br><span class="line-number">22</span><br><span class="line-number">23</span><br><span class="line-number">24</span><br><span class="line-number">25</span><br><span class="line-number">26</span><br><span class="line-number">27</span><br><span class="line-number">28</span><br><span class="line-number">29</span><br><span class="line-number">30</span><br><span class="line-number">31</span><br><span class="line-number">32</span><br><span class="line-number">33</span><br><span class="line-number">34</span><br><span class="line-number">35</span><br><span class="line-number">36</span><br><span class="line-number">37</span><br><span class="line-number">38</span><br><span class="line-number">39</span><br><span class="line-number">40</span><br><span class="line-number">41</span><br><span class="line-number">42</span><br><span class="line-number">43</span><br></div></div><p>如果不改动,则以默认参数启动</p> <div class="language-shell line-numbers-mode"><pre class="language-shell"><code>docker-compose up -d
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br></div></div><p><strong>根据网速情况,大约十到二十分钟拉取镜像,全程无需人工干预,拉取完毕后,自动启动容器服务,大概需要一至两分钟的初始化。</strong></p> <p>等待命令执行完毕后,查看容器状态</p> <div class="language-shell line-numbers-mode"><pre class="language-shell"><code>docker <span class="token function">ps</span> -a
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br></div></div><p>当看到所有的容器的状态status都为<code>UP</code><code>healthy</code>就代表 OJ 已经启动成功。</p> <blockquote><p>以下默认参数说明</p></blockquote> <ul><li>默认超级管理员账号与密码root / hoj123456</li> <li>默认redis密码hoj123456</li> <li>默认mysql账号与密码root / hoj123456</li> <li>默认nacos管理员账号与密码root / hoj123456</li> <li>默认不开启https开启需修改文件同时提供证书文件</li> <li>判题并发数默认cpu核心数*2</li> <li>默认开启vj判题需要手动修改添加账号与密码如果不添加不能vj判题</li> <li>vj判题并发数默认cpu核心数*4</li></ul></li></ol> <p><strong>登录root账号到后台查看服务状态以及到<code>http://ip/admin/conf</code>修改服务配置!</strong></p> <p><u>注意网站的注册及用户账号相关操作需要邮件系统所以请在系统配置中配置自己的SMTP邮件服务。</u></p> <p><strong>(如果已经在启动在.env文件配置了邮件服务即不用再次修改)</strong></p> <div class="language-bash line-numbers-mode"><pre class="language-bash"><code>Host: smtp.qq.com
Port: <span class="token number">465</span>
Username: qq邮箱账号
Password: 开启SMTP服务后生成的随机授权码
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br></div></div><h2 id="二、分布式部署"><a href="#二、分布式部署" class="header-anchor">#</a> 二、分布式部署</h2> <ol><li><p>选择好需要安装的位置,运行下面命令</p> <div class="language-shell line-numbers-mode"><pre class="language-shell"><code><span class="token function">git</span> clone https://gitee.com/himitzh0730/hoj-deploy.git <span class="token operator">&amp;&amp;</span> <span class="token builtin class-name">cd</span> hoj-deploy
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br></div></div></li> <li><p>进入文件夹</p> <div class="language-shell line-numbers-mode"><pre class="language-shell"><code><span class="token builtin class-name">cd</span> distributed
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br></div></div><p><code>distributed</code>文件夹有以下:</p> <div class="language-bash line-numbers-mode"><pre class="language-bash"><code>├── judgeserver
├── main
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br></div></div></li> <li><p>首先部署主服务即是数据后台服务DataBackup</p> <div class="language-shell line-numbers-mode"><pre class="language-shell"><code><span class="token builtin class-name">cd</span> main
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br></div></div><p>该文件夹下有:</p> <div class="language-bash line-numbers-mode"><pre class="language-bash"><code>├── docker-compose.yml
├── .env
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br></div></div><p>修改<code>.env</code>文件中的配置</p> <div class="language-shell line-numbers-mode"><pre class="language-shell"><code><span class="token function">vim</span> .env
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br></div></div><blockquote><p>注意各服务ip最好不改动保持处于172.20.0.0/16网段的docker network</p></blockquote> <div class="language-properties line-numbers-mode"><pre class="language-properties"><code><span class="token comment"># redis的配置</span>
<span class="token attr-name">REDIS_HOST</span><span class="token punctuation">=</span><span class="token attr-value">172.20.0.2</span>
<span class="token attr-name">REDIS_PORT</span><span class="token punctuation">=</span><span class="token attr-value">6379</span>
<span class="token attr-name">REDIS_PASSWORD</span><span class="token punctuation">=</span><span class="token attr-value">hoj123456</span>
<span class="token comment"># mysql的配置</span>
<span class="token attr-name">MYSQL_HOST</span><span class="token punctuation">=</span><span class="token attr-value">172.20.0.3</span>
<span class="token attr-name">MYSQL_PUBLIC_HOST</span><span class="token punctuation">=</span><span class="token attr-value">172.20.0.3 # 请提供当前mysql所在服务器的公网ip</span>
<span class="token attr-name">MYSQL_PORT</span><span class="token punctuation">=</span><span class="token attr-value">3306</span>
<span class="token attr-name">MYSQL_ROOT_PASSWORD</span><span class="token punctuation">=</span><span class="token attr-value">hoj123456</span>
<span class="token comment"># nacos的配置</span>
<span class="token attr-name">NACOS_HOST</span><span class="token punctuation">=</span><span class="token attr-value">172.20.0.4</span>
<span class="token attr-name">NACOS_PORT</span><span class="token punctuation">=</span><span class="token attr-value">8848</span>
<span class="token attr-name">NACOS_USERNAME</span><span class="token punctuation">=</span><span class="token attr-value">root</span>
<span class="token attr-name">NACOS_PASSWORD</span><span class="token punctuation">=</span><span class="token attr-value">hoj123456</span>
<span class="token comment"># backend后端服务的配置</span>
<span class="token attr-name">BACKEND_HOST</span><span class="token punctuation">=</span><span class="token attr-value">172.20.0.5</span>
<span class="token attr-name">BACKEND_PORT</span><span class="token punctuation">=</span><span class="token attr-value">6688</span>
<span class="token attr-name">JWT_TOKEN_SECRET</span><span class="token punctuation">=</span><span class="token attr-value">default # token加密秘钥 默认则生成32位随机密钥</span>
<span class="token attr-name">JWT_TOKEN_EXPIRE</span><span class="token punctuation">=</span><span class="token attr-value">86400 # token过期时间默认为24小时 86400s</span>
<span class="token attr-name">JWT_TOKEN_FRESH_EXPIRE</span><span class="token punctuation">=</span><span class="token attr-value">43200 # token默认12小时可自动刷新</span>
<span class="token attr-name">JUDGE_TOKEN</span><span class="token punctuation">=</span><span class="token attr-value">default # 调用判题服务器的token 默认则生成32位随机密钥</span>
<span class="token attr-name">EMAIL_SERVER_HOST</span><span class="token punctuation">=</span><span class="token attr-value">smtp.qq.com # 请使用邮件服务的域名或ip</span>
<span class="token attr-name">EMAIL_SERVER_PORT</span><span class="token punctuation">=</span><span class="token attr-value">465</span>
<span class="token attr-name">EMAIL_USERNMAE</span><span class="token punctuation">=</span><span class="token attr-value">your_email_username</span>
<span class="token attr-name">EMAIL_PASSWORD</span><span class="token punctuation">=</span><span class="token attr-value">your_email_password</span>
<span class="token comment"># 开启虚拟判题请提供对应oj的账号密码 格式为 </span>
<span class="token comment"># username1,username2,...</span>
<span class="token comment"># password1,password2,...</span>
<span class="token attr-name">HDU_ACCOUNT_USERNAME_LIST</span><span class="token punctuation">=</span><span class="token attr-value">username1,username2</span>
<span class="token attr-name">HDU_ACCOUNT_PASSWORD_LIST</span><span class="token punctuation">=</span><span class="token attr-value">password1,password2</span>
<span class="token attr-name">CF_ACCOUNT_USERNAME_LIST</span><span class="token punctuation">=</span>
<span class="token attr-name">CF_ACCOUNT_PASSWORD_LIST</span><span class="token punctuation">=</span>
<span class="token comment"># 评测数据同步的配置</span>
<span class="token attr-name">RSYNC_PASSWORD</span><span class="token punctuation">=</span><span class="token attr-value">hoj123456 # 请修改数据同步密码</span>
<span class="token comment"># docker network的配置</span>
<span class="token attr-name">SUBNET</span><span class="token punctuation">=</span><span class="token attr-value">172.20.0.0/16</span>
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br><span class="line-number">15</span><br><span class="line-number">16</span><br><span class="line-number">17</span><br><span class="line-number">18</span><br><span class="line-number">19</span><br><span class="line-number">20</span><br><span class="line-number">21</span><br><span class="line-number">22</span><br><span class="line-number">23</span><br><span class="line-number">24</span><br><span class="line-number">25</span><br><span class="line-number">26</span><br><span class="line-number">27</span><br><span class="line-number">28</span><br><span class="line-number">29</span><br><span class="line-number">30</span><br><span class="line-number">31</span><br><span class="line-number">32</span><br><span class="line-number">33</span><br><span class="line-number">34</span><br><span class="line-number">35</span><br><span class="line-number">36</span><br><span class="line-number">37</span><br><span class="line-number">38</span><br><span class="line-number">39</span><br><span class="line-number">40</span><br><span class="line-number">41</span><br></div></div><p>配置修改保存后,当前路径下启动该服务</p> <div class="language-shell line-numbers-mode"><pre class="language-shell"><code>docker-compose up -d
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br></div></div><p>根据网速情况,大约十分钟即可安装完毕,全程无需人工干预。</p> <p>等待命令执行完毕后,查看容器状态</p> <div class="language-shell line-numbers-mode"><pre class="language-shell"><code>docker <span class="token function">ps</span> -a
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br></div></div><p>当看到所有的容器的状态status都为<code>UP</code><code>healthy</code>就代表 OJ 已经启动成功。</p></li> <li><p>接着在另一台服务器上依旧git clone该文件夹下来然后进入<code>judgeserver</code>文件夹,修改<code>.env</code>的配置</p> <div class="language-properties line-numbers-mode"><pre class="language-properties"><code><span class="token comment"># nacos的配置</span>
<span class="token attr-name">NACOS_HOST</span><span class="token punctuation">=</span><span class="token attr-value">NACOS_HOST # 修改为nacos所在服务的ip,即主服务器的公网ip</span>
<span class="token attr-name">NACOS_PORT</span><span class="token punctuation">=</span><span class="token attr-value">8848 # 修改为nacos启动端口号默认为8848</span>
<span class="token attr-name">NACOS_USERNAME</span><span class="token punctuation">=</span><span class="token attr-value">root # 修改为nacos的管理员账号</span>
<span class="token attr-name">NACOS_PASSWORD</span><span class="token punctuation">=</span><span class="token attr-value">hoj123456 # 修改为nacos的管理员密码</span>
<span class="token comment"># judgeserver的配置</span>
<span class="token attr-name">JUDGE_SERVER_IP</span><span class="token punctuation">=</span><span class="token attr-value">172.20.0.7 # 修改为当前的服务器公网ip</span>
<span class="token attr-name">JUDGE_SERVER_PORT</span><span class="token punctuation">=</span><span class="token attr-value">8088 # judgeserver启动端口号</span>
<span class="token attr-name">JUDGE_SERVER_NAME</span><span class="token punctuation">=</span><span class="token attr-value">judger-1</span>
<span class="token attr-name">MAX_TASK_NUM</span><span class="token punctuation">=</span><span class="token attr-value">-1 # -1表示最大并行任务数为cpu核心数*2</span>
<span class="token attr-name">REMOTE_JUDGE_OPEN</span><span class="token punctuation">=</span><span class="token attr-value">true # 当前判题服务器是否开启远程虚拟判题功能</span>
<span class="token attr-name">REMOTE_JUDGE_MAX_TASK_NUM</span><span class="token punctuation">=</span><span class="token attr-value">-1 # -1表示最大并行任务数为(cpu核心数*2)*2</span>
<span class="token comment"># rsync评测数据同步的配置</span>
<span class="token attr-name">RSYNC_MASTER_ADDR</span><span class="token punctuation">=</span><span class="token attr-value">127.0.0.1 # 写入主服务器ip</span>
<span class="token attr-name">RSYNC_PASSWORD</span><span class="token punctuation">=</span><span class="token attr-value">hoj123456 # 与主服务器的rsync密码一致</span>
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br><span class="line-number">15</span><br><span class="line-number">16</span><br><span class="line-number">17</span><br></div></div><p>配置修改保存后,当前路径下启动该服务</p> <div class="language-shell line-numbers-mode"><pre class="language-shell"><code>docker-compose up -d
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br></div></div><blockquote><p>提示需要开启多台判题机就如当前第4步的操作一样在每台服务器上执行以上的操作即可。</p></blockquote></li> <li><p>两个服务都启动完成在浏览器输入主服务ip或域名进行访问登录root账号到后台查看服务状态。</p></li></ol> <h2 id="三、开启https"><a href="#三、开启https" class="header-anchor">#</a> 三、开启Https</h2> <ul><li><p>单机部署:</p> <p>提供server.crt和server.key证书与密钥文件放置<code>/standAlone</code>目录下,与<code>docker-compose.yml</code><code>.env</code>文件放置同一位置,然后修改<code>docker-compose.yml</code>中的hoj-frontend的配置</p></li> <li><p>分布式部署:</p> <p>提供server.crt和server.key证书与密钥文件放置<code>/distributed/main目录下</code>docker-compose.yml<code></code>.env<code>文件放置同一位置,然后修改</code>docker-compose.yml`中的hoj-frontend的配置</p></li></ul> <div class="language-yaml line-numbers-mode"><pre class="language-yaml"><code><span class="token key atrule">hoj-frontend</span><span class="token punctuation">:</span>
<span class="token key atrule">image</span><span class="token punctuation">:</span> registry.cn<span class="token punctuation">-</span>shenzhen.aliyuncs.com/hcode/hoj_frontend
<span class="token key atrule">container_name</span><span class="token punctuation">:</span> hoj<span class="token punctuation">-</span>frontend
<span class="token key atrule">restart</span><span class="token punctuation">:</span> always
<span class="token comment"># 开启https请提供证书</span>
<span class="token key atrule">volumes</span><span class="token punctuation">:</span>
<span class="token punctuation">-</span> ./server.crt<span class="token punctuation">:</span>/etc/nginx/etc/crt/server.crt
<span class="token punctuation">-</span> ./server.key<span class="token punctuation">:</span>/etc/nginx/etc/crt/server.key
<span class="token key atrule">environment</span><span class="token punctuation">:</span>
<span class="token punctuation">-</span> SERVER_NAME=localhost <span class="token comment"># 提供你的域名!!!!</span>
<span class="token punctuation">-</span> BACKEND_SERVER_HOST=$<span class="token punctuation">{</span>BACKEND_HOST<span class="token punctuation">:</span><span class="token punctuation">-</span>172.20.0.5<span class="token punctuation">}</span> <span class="token comment"># backend后端服务地址</span>
<span class="token punctuation">-</span> BACKEND_SERVER_PORT=$<span class="token punctuation">{</span>BACKEND_PORT<span class="token punctuation">:</span><span class="token number">-6688</span><span class="token punctuation">}</span> <span class="token comment"># backend后端服务端口号</span>
<span class="token punctuation">-</span> USE_HTTPS=true <span class="token comment"># 使用https请设置为true</span>
<span class="token key atrule">ports</span><span class="token punctuation">:</span>
<span class="token punctuation">-</span> <span class="token string">&quot;80:80&quot;</span>
<span class="token punctuation">-</span> <span class="token string">&quot;443:443&quot;</span>
<span class="token key atrule">networks</span><span class="token punctuation">:</span>
<span class="token key atrule">hoj-network</span><span class="token punctuation">:</span>
<span class="token key atrule">ipv4_address</span><span class="token punctuation">:</span> 172.20.0.6
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br><span class="line-number">15</span><br><span class="line-number">16</span><br><span class="line-number">17</span><br><span class="line-number">18</span><br><span class="line-number">19</span><br></div></div></div> <footer class="page-edit"><!----> <!----></footer> <div class="page-nav"><p class="inner"><span class="prev">
<a href="/docs/deploy/" class="prev router-link-active">
环境配置
</a></span> <span class="next"><a href="/docs/deploy/frontend.html">
前端部署
</a>
</span></p></div> </main></div><div class="global-ui"></div></div>
<script src="/docs/assets/js/app.af16b29f.js" defer></script><script src="/docs/assets/js/2.3e9bf4c9.js" defer></script><script src="/docs/assets/js/10.3aec3aff.js" defer></script>
</body>
</html>

View File

@ -8,7 +8,7 @@
<link rel="icon" href="/docs/img/favicon.ico">
<meta name="description" content="HOJ 的开发与使用文档">
<link rel="preload" href="/docs/assets/css/0.styles.0538ca31.css" as="style"><link rel="preload" href="/docs/assets/js/app.658a191c.js" as="script"><link rel="preload" href="/docs/assets/js/2.3e9bf4c9.js" as="script"><link rel="preload" href="/docs/assets/js/10.783ce582.js" as="script"><link rel="prefetch" href="/docs/assets/js/11.6f33dd44.js"><link rel="prefetch" href="/docs/assets/js/12.c3bd2a61.js"><link rel="prefetch" href="/docs/assets/js/13.2df39f84.js"><link rel="prefetch" href="/docs/assets/js/14.af2ecfbc.js"><link rel="prefetch" href="/docs/assets/js/15.9983a763.js"><link rel="prefetch" href="/docs/assets/js/16.782db258.js"><link rel="prefetch" href="/docs/assets/js/17.04124198.js"><link rel="prefetch" href="/docs/assets/js/18.efedf33a.js"><link rel="prefetch" href="/docs/assets/js/19.b75b0a6f.js"><link rel="prefetch" href="/docs/assets/js/20.c7d201d0.js"><link rel="prefetch" href="/docs/assets/js/21.3709f65f.js"><link rel="prefetch" href="/docs/assets/js/22.ecbb6d60.js"><link rel="prefetch" href="/docs/assets/js/3.7cbf67d2.js"><link rel="prefetch" href="/docs/assets/js/4.3f3da556.js"><link rel="prefetch" href="/docs/assets/js/5.abc1b238.js"><link rel="prefetch" href="/docs/assets/js/6.f86b5401.js"><link rel="prefetch" href="/docs/assets/js/7.120c22d9.js"><link rel="prefetch" href="/docs/assets/js/8.b161b559.js"><link rel="prefetch" href="/docs/assets/js/9.807c9668.js">
<link rel="preload" href="/docs/assets/css/0.styles.0538ca31.css" as="style"><link rel="preload" href="/docs/assets/js/app.af16b29f.js" as="script"><link rel="preload" href="/docs/assets/js/2.3e9bf4c9.js" as="script"><link rel="preload" href="/docs/assets/js/11.3c715d4b.js" as="script"><link rel="prefetch" href="/docs/assets/js/10.3aec3aff.js"><link rel="prefetch" href="/docs/assets/js/12.f5d67101.js"><link rel="prefetch" href="/docs/assets/js/13.1b71fff9.js"><link rel="prefetch" href="/docs/assets/js/14.cd5e7136.js"><link rel="prefetch" href="/docs/assets/js/15.618bada7.js"><link rel="prefetch" href="/docs/assets/js/16.39b5f0a9.js"><link rel="prefetch" href="/docs/assets/js/17.1781a0fd.js"><link rel="prefetch" href="/docs/assets/js/18.42d5a6b0.js"><link rel="prefetch" href="/docs/assets/js/19.28b0b6dd.js"><link rel="prefetch" href="/docs/assets/js/20.4049e044.js"><link rel="prefetch" href="/docs/assets/js/21.3dac3195.js"><link rel="prefetch" href="/docs/assets/js/22.5a29a611.js"><link rel="prefetch" href="/docs/assets/js/23.6fc11064.js"><link rel="prefetch" href="/docs/assets/js/24.541271c6.js"><link rel="prefetch" href="/docs/assets/js/25.d102b518.js"><link rel="prefetch" href="/docs/assets/js/26.2bf4f42a.js"><link rel="prefetch" href="/docs/assets/js/27.62d662fe.js"><link rel="prefetch" href="/docs/assets/js/28.8e2b6aba.js"><link rel="prefetch" href="/docs/assets/js/3.068e2e40.js"><link rel="prefetch" href="/docs/assets/js/4.3f3da556.js"><link rel="prefetch" href="/docs/assets/js/5.abc1b238.js"><link rel="prefetch" href="/docs/assets/js/6.f86b5401.js"><link rel="prefetch" href="/docs/assets/js/7.120c22d9.js"><link rel="prefetch" href="/docs/assets/js/8.d67efa58.js"><link rel="prefetch" href="/docs/assets/js/9.f68a10a9.js">
<link rel="stylesheet" href="/docs/assets/css/0.styles.0538ca31.css">
</head>
<body>
@ -24,7 +24,7 @@
Gitee首页
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div><div class="nav-item"><a href="https://blog.csdn.net/weixin_43853097" target="_blank" rel="noopener noreferrer" class="nav-link external">
作者首页
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div> <!----></nav> <ul class="sidebar-links"><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>开始介绍</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading open"><span>部署文档</span> <span class="arrow down"></span></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/docs/deploy/" aria-current="page" class="sidebar-link">环境配置</a></li><li><a href="/docs/deploy/frontend.html" aria-current="page" class="active sidebar-link">前端部署</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/docs/deploy/frontend.html#一、常规部署" class="sidebar-link">一、常规部署</a></li><li class="sidebar-sub-header"><a href="/docs/deploy/frontend.html#二、docker部署" class="sidebar-link">二、docker部署</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/docs/deploy/frontend.html#前言" class="sidebar-link">前言</a></li><li class="sidebar-sub-header"><a href="/docs/deploy/frontend.html#文件介绍" class="sidebar-link">文件介绍</a></li></ul></li></ul></li><li><a href="/docs/deploy/mysql.html" class="sidebar-link">MySQL部署</a></li><li><a href="/docs/deploy/redis.html" class="sidebar-link">redis部署</a></li><li><a href="/docs/deploy/nacos.html" class="sidebar-link">Nacos部署</a></li><li><a href="/docs/deploy/backend.html" class="sidebar-link">后端部署</a></li><li><a href="/docs/deploy/judgeserver.html" class="sidebar-link">判题服务部署</a></li><li><a href="/docs/deploy/rsync.html" class="sidebar-link">评测数据同步</a></li></ul></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>开发文档</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>使用文档</span> <span class="arrow right"></span></p> <!----></section></li></ul> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="前端部署"><a href="#前端部署" class="header-anchor">#</a> 前端部署</h1> <h2 id="一、常规部署"><a href="#一、常规部署" class="header-anchor">#</a> 一、常规部署</h2> <h4 id="_1-安装nginx"><a href="#_1-安装nginx" class="header-anchor">#</a> 1. 安装nginx</h4> <blockquote><p>注意apt下载太慢的话建议换阿里云源请自行百度or谷歌</p></blockquote> <ol><li><p>使用apt安装</p> <div class="language-shell line-numbers-mode"><pre class="language-shell"><code><span class="token function">sudo</span> <span class="token function">apt</span> <span class="token function">install</span> nginx
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div> <!----></nav> <ul class="sidebar-links"><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>开始介绍</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading open"><span>部署文档</span> <span class="arrow down"></span></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/docs/deploy/" aria-current="page" class="sidebar-link">环境配置</a></li><li><a href="/docs/deploy/docker.html" class="sidebar-link">快速部署</a></li><li><a href="/docs/deploy/frontend.html" aria-current="page" class="active sidebar-link">前端部署</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/docs/deploy/frontend.html#一、常规部署" class="sidebar-link">一、常规部署</a></li><li class="sidebar-sub-header"><a href="/docs/deploy/frontend.html#二、docker部署" class="sidebar-link">二、docker部署</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/docs/deploy/frontend.html#前言" class="sidebar-link">前言</a></li><li class="sidebar-sub-header"><a href="/docs/deploy/frontend.html#文件介绍" class="sidebar-link">文件介绍</a></li></ul></li></ul></li><li><a href="/docs/deploy/mysql.html" class="sidebar-link">MySQL部署</a></li><li><a href="/docs/deploy/redis.html" class="sidebar-link">Redis部署</a></li><li><a href="/docs/deploy/nacos.html" class="sidebar-link">Nacos部署</a></li><li><a href="/docs/deploy/backend.html" class="sidebar-link">后端部署</a></li><li><a href="/docs/deploy/judgeserver.html" class="sidebar-link">判题服务部署</a></li><li><a href="/docs/deploy/rsync.html" class="sidebar-link">评测数据同步</a></li></ul></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>开发文档</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>使用文档</span> <span class="arrow right"></span></p> <!----></section></li></ul> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="前端部署"><a href="#前端部署" class="header-anchor">#</a> 前端部署</h1> <h2 id="一、常规部署"><a href="#一、常规部署" class="header-anchor">#</a> 一、常规部署</h2> <h4 id="_1-安装nginx"><a href="#_1-安装nginx" class="header-anchor">#</a> 1. 安装nginx</h4> <blockquote><p>注意apt下载太慢的话建议换阿里云源请自行百度or谷歌</p></blockquote> <ol><li><p>使用apt安装</p> <div class="language-shell line-numbers-mode"><pre class="language-shell"><code><span class="token function">sudo</span> <span class="token function">apt</span> <span class="token function">install</span> nginx
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br></div></div></li> <li><p>路径介绍</p> <ul><li>/usr/sbin/nginx主程序</li> <li>/etc/nginx存放配置文件</li> <li>/usr/share/nginx存放静态文件</li> <li>/var/log/nginx存放日志</li></ul></li> <li><p>启动nginx</p> <div class="language-shell line-numbers-mode"><pre class="language-shell"><code><span class="token function">service</span> nginx start
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br></div></div></li> <li><p>验证是否成功</p> <p>在浏览器输入你的ip地址如果出现Wellcome to nginx 那么就是配置成功</p></li></ol> <h4 id="_2-部署"><a href="#_2-部署" class="header-anchor">#</a> 2. 部署</h4> <ol><li><p><a href="https://gitee.com/himitzh0730/hoj/tree/master/hoj-vue" target="_blank" rel="noopener noreferrer">下载本项目<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a>git clone或者download zip</p></li> <li><p>前提是本地有vue-cli4与npm请自行百度下载</p></li> <li><p>然后在当前hoj-vue文件夹的src路径运行打包命令</p> <div class="language-powershell line-numbers-mode"><pre class="language-powershell"><code>npm run build
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br></div></div></li> <li><p>打包成功会在src同文件夹内有个dist文件夹复制里面的html和css等静态文件</p></li> <li><p>在云服务器上创建文件夹</p> <div class="language-shell line-numbers-mode"><pre class="language-shell"><code><span class="token function">mkdir</span> -p /hoj/www/html
@ -209,13 +209,13 @@ hoj-frontend
<span class="token keyword">EXPOSE</span> 443
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br><span class="line-number">15</span><br><span class="line-number">16</span><br><span class="line-number">17</span><br><span class="line-number">18</span><br><span class="line-number">19</span><br><span class="line-number">20</span><br><span class="line-number">21</span><br></div></div></div> <footer class="page-edit"><!----> <!----></footer> <div class="page-nav"><p class="inner"><span class="prev">
<a href="/docs/deploy/" class="prev router-link-active">
环境配置
<a href="/docs/deploy/docker.html" class="prev">
快速部署
</a></span> <span class="next"><a href="/docs/deploy/mysql.html">
MySQL部署
</a>
</span></p></div> </main></div><div class="global-ui"></div></div>
<script src="/docs/assets/js/app.658a191c.js" defer></script><script src="/docs/assets/js/2.3e9bf4c9.js" defer></script><script src="/docs/assets/js/10.783ce582.js" defer></script>
<script src="/docs/assets/js/app.af16b29f.js" defer></script><script src="/docs/assets/js/2.3e9bf4c9.js" defer></script><script src="/docs/assets/js/11.3c715d4b.js" defer></script>
</body>
</html>

View File

@ -8,7 +8,7 @@
<link rel="icon" href="/docs/img/favicon.ico">
<meta name="description" content="HOJ 的开发与使用文档">
<link rel="preload" href="/docs/assets/css/0.styles.0538ca31.css" as="style"><link rel="preload" href="/docs/assets/js/app.658a191c.js" as="script"><link rel="preload" href="/docs/assets/js/2.3e9bf4c9.js" as="script"><link rel="preload" href="/docs/assets/js/8.b161b559.js" as="script"><link rel="prefetch" href="/docs/assets/js/10.783ce582.js"><link rel="prefetch" href="/docs/assets/js/11.6f33dd44.js"><link rel="prefetch" href="/docs/assets/js/12.c3bd2a61.js"><link rel="prefetch" href="/docs/assets/js/13.2df39f84.js"><link rel="prefetch" href="/docs/assets/js/14.af2ecfbc.js"><link rel="prefetch" href="/docs/assets/js/15.9983a763.js"><link rel="prefetch" href="/docs/assets/js/16.782db258.js"><link rel="prefetch" href="/docs/assets/js/17.04124198.js"><link rel="prefetch" href="/docs/assets/js/18.efedf33a.js"><link rel="prefetch" href="/docs/assets/js/19.b75b0a6f.js"><link rel="prefetch" href="/docs/assets/js/20.c7d201d0.js"><link rel="prefetch" href="/docs/assets/js/21.3709f65f.js"><link rel="prefetch" href="/docs/assets/js/22.ecbb6d60.js"><link rel="prefetch" href="/docs/assets/js/3.7cbf67d2.js"><link rel="prefetch" href="/docs/assets/js/4.3f3da556.js"><link rel="prefetch" href="/docs/assets/js/5.abc1b238.js"><link rel="prefetch" href="/docs/assets/js/6.f86b5401.js"><link rel="prefetch" href="/docs/assets/js/7.120c22d9.js"><link rel="prefetch" href="/docs/assets/js/9.807c9668.js">
<link rel="preload" href="/docs/assets/css/0.styles.0538ca31.css" as="style"><link rel="preload" href="/docs/assets/js/app.af16b29f.js" as="script"><link rel="preload" href="/docs/assets/js/2.3e9bf4c9.js" as="script"><link rel="preload" href="/docs/assets/js/8.d67efa58.js" as="script"><link rel="prefetch" href="/docs/assets/js/10.3aec3aff.js"><link rel="prefetch" href="/docs/assets/js/11.3c715d4b.js"><link rel="prefetch" href="/docs/assets/js/12.f5d67101.js"><link rel="prefetch" href="/docs/assets/js/13.1b71fff9.js"><link rel="prefetch" href="/docs/assets/js/14.cd5e7136.js"><link rel="prefetch" href="/docs/assets/js/15.618bada7.js"><link rel="prefetch" href="/docs/assets/js/16.39b5f0a9.js"><link rel="prefetch" href="/docs/assets/js/17.1781a0fd.js"><link rel="prefetch" href="/docs/assets/js/18.42d5a6b0.js"><link rel="prefetch" href="/docs/assets/js/19.28b0b6dd.js"><link rel="prefetch" href="/docs/assets/js/20.4049e044.js"><link rel="prefetch" href="/docs/assets/js/21.3dac3195.js"><link rel="prefetch" href="/docs/assets/js/22.5a29a611.js"><link rel="prefetch" href="/docs/assets/js/23.6fc11064.js"><link rel="prefetch" href="/docs/assets/js/24.541271c6.js"><link rel="prefetch" href="/docs/assets/js/25.d102b518.js"><link rel="prefetch" href="/docs/assets/js/26.2bf4f42a.js"><link rel="prefetch" href="/docs/assets/js/27.62d662fe.js"><link rel="prefetch" href="/docs/assets/js/28.8e2b6aba.js"><link rel="prefetch" href="/docs/assets/js/3.068e2e40.js"><link rel="prefetch" href="/docs/assets/js/4.3f3da556.js"><link rel="prefetch" href="/docs/assets/js/5.abc1b238.js"><link rel="prefetch" href="/docs/assets/js/6.f86b5401.js"><link rel="prefetch" href="/docs/assets/js/7.120c22d9.js"><link rel="prefetch" href="/docs/assets/js/9.f68a10a9.js">
<link rel="stylesheet" href="/docs/assets/css/0.styles.0538ca31.css">
</head>
<body>
@ -24,7 +24,7 @@
Gitee首页
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div><div class="nav-item"><a href="https://blog.csdn.net/weixin_43853097" target="_blank" rel="noopener noreferrer" class="nav-link external">
作者首页
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div> <!----></nav> <ul class="sidebar-links"><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>开始介绍</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading open"><span>部署文档</span> <span class="arrow down"></span></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/docs/deploy/" aria-current="page" class="active sidebar-link">环境配置</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/docs/deploy/#环境说明" class="sidebar-link">环境说明</a></li><li class="sidebar-sub-header"><a href="/docs/deploy/#linux环境搭建" class="sidebar-link">Linux环境搭建</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/docs/deploy/#安装docker" class="sidebar-link">安装docker</a></li><li class="sidebar-sub-header"><a href="/docs/deploy/#安装docker-compose" class="sidebar-link">安装docker-compose</a></li></ul></li><li class="sidebar-sub-header"><a href="/docs/deploy/#windows-环境" class="sidebar-link">Windows 环境</a></li><li class="sidebar-sub-header"><a href="/docs/deploy/#单个部署" class="sidebar-link">单个部署</a></li><li class="sidebar-sub-header"><a href="/docs/deploy/#docker-compose开始部署" class="sidebar-link">docker-compose开始部署</a></li></ul></li><li><a href="/docs/deploy/frontend.html" class="sidebar-link">前端部署</a></li><li><a href="/docs/deploy/mysql.html" class="sidebar-link">MySQL部署</a></li><li><a href="/docs/deploy/redis.html" class="sidebar-link">redis部署</a></li><li><a href="/docs/deploy/nacos.html" class="sidebar-link">Nacos部署</a></li><li><a href="/docs/deploy/backend.html" class="sidebar-link">后端部署</a></li><li><a href="/docs/deploy/judgeserver.html" class="sidebar-link">判题服务部署</a></li><li><a href="/docs/deploy/rsync.html" class="sidebar-link">评测数据同步</a></li></ul></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>开发文档</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>使用文档</span> <span class="arrow right"></span></p> <!----></section></li></ul> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="环境配置"><a href="#环境配置" class="header-anchor">#</a> 环境配置</h1> <h2 id="环境说明"><a href="#环境说明" class="header-anchor">#</a> 环境说明</h2> <ul><li>后端需要在Linux系统下部署运行建议使用ubuntu18.04其它版本的Linux系统也可同时需要<strong>Docker</strong>辅助部署</li> <li>前端Linux系统下需要nginx进行反向代理</li> <li>判题服务由于判题沙盒有多操作系统版本Linux系统或Windows都可强烈建议Linux系统Ubuntu</li> <li>数据同步需要运行判题服务和后端服务的服务器有rsync即可</li></ul> <h2 id="linux环境搭建"><a href="#linux环境搭建" class="header-anchor">#</a> Linux环境搭建</h2> <blockquote><p>请先准备一台 CPU: 1核 内存: 2G 硬盘: 30G的云服务器推荐Ubuntu16.04以上的操作系统,</p> <p>HOJ使用的Ubuntu18.04版本单机部署建议2G以上内存</p></blockquote> <h3 id="安装docker"><a href="#安装docker" class="header-anchor">#</a> 安装docker</h3> <ol><li><p>安装需要的包</p> <div class="language-shell line-numbers-mode"><pre class="language-shell"><code><span class="token function">sudo</span> <span class="token function">apt-get</span> update
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div> <!----></nav> <ul class="sidebar-links"><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>开始介绍</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading open"><span>部署文档</span> <span class="arrow down"></span></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/docs/deploy/" aria-current="page" class="active sidebar-link">环境配置</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/docs/deploy/#环境说明" class="sidebar-link">环境说明</a></li><li class="sidebar-sub-header"><a href="/docs/deploy/#linux环境搭建" class="sidebar-link">Linux环境搭建</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/docs/deploy/#安装docker" class="sidebar-link">安装docker</a></li><li class="sidebar-sub-header"><a href="/docs/deploy/#安装docker-compose" class="sidebar-link">安装docker-compose</a></li></ul></li><li class="sidebar-sub-header"><a href="/docs/deploy/#windows-环境" class="sidebar-link">Windows 环境</a></li><li class="sidebar-sub-header"><a href="/docs/deploy/#单个部署顺序" class="sidebar-link">单个部署顺序</a></li></ul></li><li><a href="/docs/deploy/docker.html" class="sidebar-link">快速部署</a></li><li><a href="/docs/deploy/frontend.html" class="sidebar-link">前端部署</a></li><li><a href="/docs/deploy/mysql.html" class="sidebar-link">MySQL部署</a></li><li><a href="/docs/deploy/redis.html" class="sidebar-link">Redis部署</a></li><li><a href="/docs/deploy/nacos.html" class="sidebar-link">Nacos部署</a></li><li><a href="/docs/deploy/backend.html" class="sidebar-link">后端部署</a></li><li><a href="/docs/deploy/judgeserver.html" class="sidebar-link">判题服务部署</a></li><li><a href="/docs/deploy/rsync.html" class="sidebar-link">评测数据同步</a></li></ul></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>开发文档</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>使用文档</span> <span class="arrow right"></span></p> <!----></section></li></ul> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="环境配置"><a href="#环境配置" class="header-anchor">#</a> 环境配置</h1> <h2 id="环境说明"><a href="#环境说明" class="header-anchor">#</a> 环境说明</h2> <ul><li>后端需要在Linux系统下部署运行建议使用ubuntu18.04其它版本的Linux系统也可同时需要<strong>Docker</strong>辅助部署</li> <li>前端Linux系统下需要nginx进行反向代理</li> <li>判题服务由于判题沙盒有多操作系统版本Linux系统或Windows都可强烈建议Linux系统Ubuntu</li> <li>数据同步需要运行判题服务和后端服务的服务器有rsync即可</li></ul> <h2 id="linux环境搭建"><a href="#linux环境搭建" class="header-anchor">#</a> Linux环境搭建</h2> <blockquote><p>请先准备一台 CPU: 1核 内存: 2G 硬盘: 30G的云服务器推荐Ubuntu16.04以上的操作系统,</p> <p>HOJ使用的Ubuntu18.04版本单机部署建议2G以上内存</p></blockquote> <h3 id="安装docker"><a href="#安装docker" class="header-anchor">#</a> 安装docker</h3> <ol><li><p>安装需要的包</p> <div class="language-shell line-numbers-mode"><pre class="language-shell"><code><span class="token function">sudo</span> <span class="token function">apt-get</span> update
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br></div></div></li> <li><p>安装依赖包</p> <div class="language-shell line-numbers-mode"><pre class="language-shell"><code><span class="token function">sudo</span> <span class="token function">apt-get</span> <span class="token function">install</span> <span class="token punctuation">\</span>
apt-transport-https <span class="token punctuation">\</span>
ca-certificates <span class="token punctuation">\</span>
@ -41,43 +41,15 @@
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br></div></div></li> <li><p>验证是否成功</p> <div class="language-shell line-numbers-mode"><pre class="language-shell"><code><span class="token function">sudo</span> docker run hello-world
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br></div></div></li></ol> <h3 id="安装docker-compose"><a href="#安装docker-compose" class="header-anchor">#</a> 安装docker-compose</h3> <ol><li><p>下载</p> <div class="language-shell line-numbers-mode"><pre class="language-shell"><code><span class="token function">sudo</span> <span class="token function">curl</span> -L https://get.daocloud.io/docker/compose/releases/download/1.25.5/docker-compose-<span class="token variable"><span class="token variable">`</span><span class="token function">uname</span> -s<span class="token variable">`</span></span>-<span class="token variable"><span class="token variable">`</span><span class="token function">uname</span> -m<span class="token variable">`</span></span> -o /usr/local/bin/docker-compose
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br></div></div></li> <li><p>授权</p> <div class="language-shell line-numbers-mode"><pre class="language-shell"><code><span class="token function">sudo</span> <span class="token function">chmod</span> +x /usr/local/bin/docker-compose
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br></div></div></li></ol> <h2 id="windows-环境"><a href="#windows-环境" class="header-anchor">#</a> Windows 环境</h2> <p>Windows 下的安装仅供体验,勿在生产环境使用。如有必要,请使用虚拟机安装 Linux 并将 OJ 安装在其中。</p> <p>以下教程仅适用于 Win10 x64 下的 <code>PowerShell</code></p> <ol><li>安装 Windows 的 Docker 工具</li> <li>右击右下角 Docker 图标,选择 Settings 进行设置</li> <li>选择 <code>Shared Drives</code> 菜单,之后勾选你想安装 OJ 的盘符位置例如勾选D盘点击 <code>Apply</code></li> <li>输入 Windows 的账号密码进行文件共享</li> <li>安装 <code>Python</code><code>pip</code><code>git</code><code>docker-compose</code>,安装方法自行搜索。</li></ol> <h2 id="单个部署"><a href="#单个部署" class="header-anchor">#</a> 单个部署</h2> <p>单个部署的顺序是redismysqlrsyncfrontend &gt;&gt; nacos &gt;&gt; backendjudgeserver</p> <h2 id="docker-compose开始部署"><a href="#docker-compose开始部署" class="header-anchor">#</a> docker-compose开始部署</h2> <ol><li><p>选择好需要安装的位置,运行下面命令</p> <div class="language-shell line-numbers-mode"><pre class="language-shell"><code><span class="token function">git</span> clone https://gitee.com/himitzh0730/hoj-deploy.git <span class="token operator">&amp;&amp;</span> <span class="token builtin class-name">cd</span> hoj-deploy
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br></div></div></li> <li><p>单机部署建议服务器内存2G以上</p> <blockquote><p>注意:以下操作建议试用,配置大部分是默认的,实际运行请修改<code>docker-compose.yml</code>文件的配置</p></blockquote> <div class="language-shell line-numbers-mode"><pre class="language-shell"><code><span class="token builtin class-name">cd</span> standAlone <span class="token operator">&amp;&amp;</span> docker-compose up -d
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br></div></div><p>根据网速情况,大约十到二十分钟即可安装完毕,全程无需人工干预。</p> <p>等待命令执行完毕后,查看容器状态</p> <div class="language-shell line-numbers-mode"><pre class="language-shell"><code>docker <span class="token function">ps</span> -a
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br></div></div><p>当看到所有的容器的状态status都为<code>UP</code><code>healthy</code>就代表 OJ 已经启动成功。</p> <blockquote><p>更多自定义配置请查看**/standAlone/.env**的文件,或者/src下各组件的详情说明</p></blockquote> <blockquote><p>以下默认参数说明</p></blockquote> <ul><li>默认超级管理员账号与密码root / hoj123456</li> <li>默认redis密码hoj123456</li> <li>默认mysql账号与密码root / hoj123456</li> <li>默认nacos管理员账号与密码root / hoj123456</li> <li>默认不开启https开启需修改文件同时提供证书文件</li> <li>判题并发数默认cpu核心数*2</li></ul></li></ol> <ul><li><p>默认开启vj判题需要手动修改添加账号与密码如果不添加不能vj判题</p> <ul><li>vj判题并发数默认cpu核心数*4</li></ul> <p><strong>登录root账号到后台查看服务状态以及到<code>http://ip/admin/conf</code>修改服务配置!</strong></p> <p><u>注意:网站的注册及用户账号相关操作需要邮件系统,所以请在系统配置中配置自己的邮件服务。</u></p></li></ul> <ol start="3"><li><p>分布式部署默认开启rsync数据同步</p> <ul><li><p>主服务启动,默认不提供判题服务,请修改该启动文件配置</p> <div class="language-shell line-numbers-mode"><pre class="language-shell"><code><span class="token builtin class-name">cd</span> distributed/main
<span class="token function">vim</span> .env <span class="token comment"># 请根据文件内注释提示修改</span>
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br></div></div><p>配置修改保存后,在<code>docker-compose.yml</code>当前路径下启动该服务</p> <div class="language-shell line-numbers-mode"><pre class="language-shell"><code>docker-compose up -d
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br></div></div></li> <li><p>判题服务启动,请修改该启动文件配置</p> <div class="language-shell line-numbers-mode"><pre class="language-shell"><code><span class="token builtin class-name">cd</span> distributed/judgeserver
<span class="token function">vim</span> .env <span class="token comment"># 请根据文件内注释提示修改</span>
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br></div></div><p>配置修改保存后,在<code>docker-compose.yml</code>当前路径下启动该服务</p> <div class="language-shell line-numbers-mode"><pre class="language-shell"><code>docker-compose up -d
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br></div></div></li></ul> <p>两个服务都启动完成在浏览器输入主服务ip或域名进行访问登录root账号到后台查看服务状态以及到<code>http://ip/admin/conf</code>修改服务配置!</p></li></ol> <blockquote><p>如果需要开启https</p></blockquote> <ul><li><p>单机:</p> <p>提供server.crt和server.key证书与密钥文件放置<code>/standAlone</code>目录下,与<code>docker-compose.yml</code><code>.env</code>文件放置同一位置,然后修改<code>docker-compose.yml</code>中的hoj-frontend的配置</p></li> <li><p>分布式提供server.crt和server.key证书与密钥文件放置<code>/distributed/main目录下</code>docker-compose.yml<code></code>.env<code>文件放置同一位置,然后修改</code>docker-compose.yml`中的hoj-frontend的配置</p></li></ul> <div class="language-yaml line-numbers-mode"><pre class="language-yaml"><code><span class="token key atrule">hoj-frontend</span><span class="token punctuation">:</span>
<span class="token key atrule">image</span><span class="token punctuation">:</span> registry.cn<span class="token punctuation">-</span>shenzhen.aliyuncs.com/hcode/hoj_frontend
<span class="token key atrule">container_name</span><span class="token punctuation">:</span> hoj<span class="token punctuation">-</span>frontend
<span class="token key atrule">restart</span><span class="token punctuation">:</span> always
<span class="token comment"># 开启https请提供证书</span>
<span class="token key atrule">volumes</span><span class="token punctuation">:</span>
<span class="token punctuation">-</span> ./server.crt<span class="token punctuation">:</span>/etc/nginx/etc/crt/server.crt
<span class="token punctuation">-</span> ./server.key<span class="token punctuation">:</span>/etc/nginx/etc/crt/server.key
<span class="token key atrule">environment</span><span class="token punctuation">:</span>
<span class="token punctuation">-</span> SERVER_NAME=localhost <span class="token comment"># 提供你的域名!!!!</span>
<span class="token punctuation">-</span> BACKEND_SERVER_HOST=$<span class="token punctuation">{</span>BACKEND_HOST<span class="token punctuation">:</span><span class="token punctuation">-</span>172.20.0.5<span class="token punctuation">}</span> <span class="token comment"># backend后端服务地址</span>
<span class="token punctuation">-</span> BACKEND_SERVER_PORT=$<span class="token punctuation">{</span>BACKEND_PORT<span class="token punctuation">:</span><span class="token number">-6688</span><span class="token punctuation">}</span> <span class="token comment"># backend后端服务端口号</span>
<span class="token punctuation">-</span> USE_HTTPS=true <span class="token comment"># 使用https请设置为true</span>
<span class="token key atrule">ports</span><span class="token punctuation">:</span>
<span class="token punctuation">-</span> <span class="token string">&quot;80:80&quot;</span>
<span class="token punctuation">-</span> <span class="token string">&quot;443:443&quot;</span>
<span class="token key atrule">networks</span><span class="token punctuation">:</span>
<span class="token key atrule">hoj-network</span><span class="token punctuation">:</span>
<span class="token key atrule">ipv4_address</span><span class="token punctuation">:</span> 172.20.0.6
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br><span class="line-number">15</span><br><span class="line-number">16</span><br><span class="line-number">17</span><br><span class="line-number">18</span><br><span class="line-number">19</span><br></div></div></div> <footer class="page-edit"><!----> <!----></footer> <div class="page-nav"><p class="inner"><span class="prev">
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br></div></div></li></ol> <h2 id="windows-环境"><a href="#windows-环境" class="header-anchor">#</a> Windows 环境</h2> <p>Windows 下的安装仅供体验,勿在生产环境使用。如有必要,请使用虚拟机安装 Linux 并将 OJ 安装在其中。</p> <p>以下教程仅适用于 Win10 x64 下的 <code>PowerShell</code></p> <ol><li>安装 Windows 的 Docker 工具</li> <li>右击右下角 Docker 图标,选择 Settings 进行设置</li> <li>选择 <code>Shared Drives</code> 菜单,之后勾选你想安装 OJ 的盘符位置例如勾选D盘点击 <code>Apply</code></li> <li>输入 Windows 的账号密码进行文件共享</li> <li>安装 <code>Python</code><code>pip</code><code>git</code><code>docker-compose</code>,安装方法自行搜索。</li></ol> <h2 id="单个部署顺序"><a href="#单个部署顺序" class="header-anchor">#</a> 单个部署顺序</h2> <p>单个部署的顺序是redismysqlrsyncfrontend &gt;&gt; nacos &gt;&gt; backendjudgeserver</p></div> <footer class="page-edit"><!----> <!----></footer> <div class="page-nav"><p class="inner"><span class="prev">
<a href="/docs/introducition/about.html" class="prev">
简介
</a></span> <span class="next"><a href="/docs/deploy/frontend.html">
前端部署
</a></span> <span class="next"><a href="/docs/deploy/docker.html">
快速部署
</a>
</span></p></div> </main></div><div class="global-ui"></div></div>
<script src="/docs/assets/js/app.658a191c.js" defer></script><script src="/docs/assets/js/2.3e9bf4c9.js" defer></script><script src="/docs/assets/js/8.b161b559.js" defer></script>
<script src="/docs/assets/js/app.af16b29f.js" defer></script><script src="/docs/assets/js/2.3e9bf4c9.js" defer></script><script src="/docs/assets/js/8.d67efa58.js" defer></script>
</body>
</html>

File diff suppressed because one or more lines are too long

View File

@ -8,7 +8,7 @@
<link rel="icon" href="/docs/img/favicon.ico">
<meta name="description" content="HOJ 的开发与使用文档">
<link rel="preload" href="/docs/assets/css/0.styles.0538ca31.css" as="style"><link rel="preload" href="/docs/assets/js/app.658a191c.js" as="script"><link rel="preload" href="/docs/assets/js/2.3e9bf4c9.js" as="script"><link rel="preload" href="/docs/assets/js/12.c3bd2a61.js" as="script"><link rel="prefetch" href="/docs/assets/js/10.783ce582.js"><link rel="prefetch" href="/docs/assets/js/11.6f33dd44.js"><link rel="prefetch" href="/docs/assets/js/13.2df39f84.js"><link rel="prefetch" href="/docs/assets/js/14.af2ecfbc.js"><link rel="prefetch" href="/docs/assets/js/15.9983a763.js"><link rel="prefetch" href="/docs/assets/js/16.782db258.js"><link rel="prefetch" href="/docs/assets/js/17.04124198.js"><link rel="prefetch" href="/docs/assets/js/18.efedf33a.js"><link rel="prefetch" href="/docs/assets/js/19.b75b0a6f.js"><link rel="prefetch" href="/docs/assets/js/20.c7d201d0.js"><link rel="prefetch" href="/docs/assets/js/21.3709f65f.js"><link rel="prefetch" href="/docs/assets/js/22.ecbb6d60.js"><link rel="prefetch" href="/docs/assets/js/3.7cbf67d2.js"><link rel="prefetch" href="/docs/assets/js/4.3f3da556.js"><link rel="prefetch" href="/docs/assets/js/5.abc1b238.js"><link rel="prefetch" href="/docs/assets/js/6.f86b5401.js"><link rel="prefetch" href="/docs/assets/js/7.120c22d9.js"><link rel="prefetch" href="/docs/assets/js/8.b161b559.js"><link rel="prefetch" href="/docs/assets/js/9.807c9668.js">
<link rel="preload" href="/docs/assets/css/0.styles.0538ca31.css" as="style"><link rel="preload" href="/docs/assets/js/app.af16b29f.js" as="script"><link rel="preload" href="/docs/assets/js/2.3e9bf4c9.js" as="script"><link rel="preload" href="/docs/assets/js/13.1b71fff9.js" as="script"><link rel="prefetch" href="/docs/assets/js/10.3aec3aff.js"><link rel="prefetch" href="/docs/assets/js/11.3c715d4b.js"><link rel="prefetch" href="/docs/assets/js/12.f5d67101.js"><link rel="prefetch" href="/docs/assets/js/14.cd5e7136.js"><link rel="prefetch" href="/docs/assets/js/15.618bada7.js"><link rel="prefetch" href="/docs/assets/js/16.39b5f0a9.js"><link rel="prefetch" href="/docs/assets/js/17.1781a0fd.js"><link rel="prefetch" href="/docs/assets/js/18.42d5a6b0.js"><link rel="prefetch" href="/docs/assets/js/19.28b0b6dd.js"><link rel="prefetch" href="/docs/assets/js/20.4049e044.js"><link rel="prefetch" href="/docs/assets/js/21.3dac3195.js"><link rel="prefetch" href="/docs/assets/js/22.5a29a611.js"><link rel="prefetch" href="/docs/assets/js/23.6fc11064.js"><link rel="prefetch" href="/docs/assets/js/24.541271c6.js"><link rel="prefetch" href="/docs/assets/js/25.d102b518.js"><link rel="prefetch" href="/docs/assets/js/26.2bf4f42a.js"><link rel="prefetch" href="/docs/assets/js/27.62d662fe.js"><link rel="prefetch" href="/docs/assets/js/28.8e2b6aba.js"><link rel="prefetch" href="/docs/assets/js/3.068e2e40.js"><link rel="prefetch" href="/docs/assets/js/4.3f3da556.js"><link rel="prefetch" href="/docs/assets/js/5.abc1b238.js"><link rel="prefetch" href="/docs/assets/js/6.f86b5401.js"><link rel="prefetch" href="/docs/assets/js/7.120c22d9.js"><link rel="prefetch" href="/docs/assets/js/8.d67efa58.js"><link rel="prefetch" href="/docs/assets/js/9.f68a10a9.js">
<link rel="stylesheet" href="/docs/assets/css/0.styles.0538ca31.css">
</head>
<body>
@ -24,7 +24,7 @@
Gitee首页
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div><div class="nav-item"><a href="https://blog.csdn.net/weixin_43853097" target="_blank" rel="noopener noreferrer" class="nav-link external">
作者首页
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div> <!----></nav> <ul class="sidebar-links"><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>开始介绍</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading open"><span>部署文档</span> <span class="arrow down"></span></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/docs/deploy/" aria-current="page" class="sidebar-link">环境配置</a></li><li><a href="/docs/deploy/frontend.html" class="sidebar-link">前端部署</a></li><li><a href="/docs/deploy/mysql.html" aria-current="page" class="active sidebar-link">MySQL部署</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/docs/deploy/mysql.html#前言" class="sidebar-link">前言</a></li><li class="sidebar-sub-header"><a href="/docs/deploy/mysql.html#文件介绍" class="sidebar-link">文件介绍</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/docs/deploy/mysql.html#_1-bcrypt" class="sidebar-link">1. bcrypt</a></li><li class="sidebar-sub-header"><a href="/docs/deploy/mysql.html#_2-hoj-sql" class="sidebar-link">2. hoj.sql</a></li><li class="sidebar-sub-header"><a href="/docs/deploy/mysql.html#_3-nacos-sql" class="sidebar-link">3. nacos.sql</a></li><li class="sidebar-sub-header"><a href="/docs/deploy/mysql.html#_4-run-sh" class="sidebar-link">4. run.sh</a></li><li class="sidebar-sub-header"><a href="/docs/deploy/mysql.html#_5-dockerfile" class="sidebar-link">5. Dockerfile</a></li></ul></li></ul></li><li><a href="/docs/deploy/redis.html" class="sidebar-link">redis部署</a></li><li><a href="/docs/deploy/nacos.html" class="sidebar-link">Nacos部署</a></li><li><a href="/docs/deploy/backend.html" class="sidebar-link">后端部署</a></li><li><a href="/docs/deploy/judgeserver.html" class="sidebar-link">判题服务部署</a></li><li><a href="/docs/deploy/rsync.html" class="sidebar-link">评测数据同步</a></li></ul></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>开发文档</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>使用文档</span> <span class="arrow right"></span></p> <!----></section></li></ul> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="mysql部署"><a href="#mysql部署" class="header-anchor">#</a> MySQL部署</h1> <p>首先 先下载<a href="https://gitee.com/himitzh0730/hoj-deploy/tree/master" target="_blank" rel="noopener noreferrer">hoj-deploy<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></p> <div class="language-shell line-numbers-mode"><pre class="language-shell"><code><span class="token function">git</span> clone https://gitee.com/himitzh0730/hoj-deploy.git <span class="token operator">&amp;&amp;</span> <span class="token builtin class-name">cd</span> hoj-deploy/src/mysql
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div> <!----></nav> <ul class="sidebar-links"><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>开始介绍</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading open"><span>部署文档</span> <span class="arrow down"></span></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/docs/deploy/" aria-current="page" class="sidebar-link">环境配置</a></li><li><a href="/docs/deploy/docker.html" class="sidebar-link">快速部署</a></li><li><a href="/docs/deploy/frontend.html" class="sidebar-link">前端部署</a></li><li><a href="/docs/deploy/mysql.html" aria-current="page" class="active sidebar-link">MySQL部署</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/docs/deploy/mysql.html#前言" class="sidebar-link">前言</a></li><li class="sidebar-sub-header"><a href="/docs/deploy/mysql.html#文件介绍" class="sidebar-link">文件介绍</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/docs/deploy/mysql.html#_1-bcrypt" class="sidebar-link">1. bcrypt</a></li><li class="sidebar-sub-header"><a href="/docs/deploy/mysql.html#_2-hoj-sql" class="sidebar-link">2. hoj.sql</a></li><li class="sidebar-sub-header"><a href="/docs/deploy/mysql.html#_3-nacos-sql" class="sidebar-link">3. nacos.sql</a></li><li class="sidebar-sub-header"><a href="/docs/deploy/mysql.html#_4-run-sh" class="sidebar-link">4. run.sh</a></li><li class="sidebar-sub-header"><a href="/docs/deploy/mysql.html#_5-dockerfile" class="sidebar-link">5. Dockerfile</a></li></ul></li></ul></li><li><a href="/docs/deploy/redis.html" class="sidebar-link">Redis部署</a></li><li><a href="/docs/deploy/nacos.html" class="sidebar-link">Nacos部署</a></li><li><a href="/docs/deploy/backend.html" class="sidebar-link">后端部署</a></li><li><a href="/docs/deploy/judgeserver.html" class="sidebar-link">判题服务部署</a></li><li><a href="/docs/deploy/rsync.html" class="sidebar-link">评测数据同步</a></li></ul></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>开发文档</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>使用文档</span> <span class="arrow right"></span></p> <!----></section></li></ul> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="mysql部署"><a href="#mysql部署" class="header-anchor">#</a> MySQL部署</h1> <p>首先 先下载<a href="https://gitee.com/himitzh0730/hoj-deploy/tree/master" target="_blank" rel="noopener noreferrer">hoj-deploy<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></p> <div class="language-shell line-numbers-mode"><pre class="language-shell"><code><span class="token function">git</span> clone https://gitee.com/himitzh0730/hoj-deploy.git <span class="token operator">&amp;&amp;</span> <span class="token builtin class-name">cd</span> hoj-deploy/src/mysql
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br></div></div><h2 id="前言"><a href="#前言" class="header-anchor">#</a> 前言</h2> <p>当前文件夹为打包<code>hoj-mysql</code>镜像的相关文件,只需将这些文件复制到同一个文件夹内,之后执行以下命令进行打包成镜像。</p> <div class="language-shell line-numbers-mode"><pre class="language-shell"><code>docker build -t hoj-mysql <span class="token builtin class-name">.</span>
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br></div></div><p>docker run启动</p> <div class="language-shell line-numbers-mode"><pre class="language-shell"><code>docker run -d --name hoj-mysql <span class="token punctuation">\</span>
-v ./hoj/data/mysql/data:/var/lib/mysql <span class="token punctuation">\</span>
@ -159,10 +159,10 @@ EOF</span>
<a href="/docs/deploy/frontend.html" class="prev">
前端部署
</a></span> <span class="next"><a href="/docs/deploy/redis.html">
redis部署
Redis部署
</a>
</span></p></div> </main></div><div class="global-ui"></div></div>
<script src="/docs/assets/js/app.658a191c.js" defer></script><script src="/docs/assets/js/2.3e9bf4c9.js" defer></script><script src="/docs/assets/js/12.c3bd2a61.js" defer></script>
<script src="/docs/assets/js/app.af16b29f.js" defer></script><script src="/docs/assets/js/2.3e9bf4c9.js" defer></script><script src="/docs/assets/js/13.1b71fff9.js" defer></script>
</body>
</html>

View File

@ -8,7 +8,7 @@
<link rel="icon" href="/docs/img/favicon.ico">
<meta name="description" content="HOJ 的开发与使用文档">
<link rel="preload" href="/docs/assets/css/0.styles.0538ca31.css" as="style"><link rel="preload" href="/docs/assets/js/app.658a191c.js" as="script"><link rel="preload" href="/docs/assets/js/2.3e9bf4c9.js" as="script"><link rel="preload" href="/docs/assets/js/13.2df39f84.js" as="script"><link rel="prefetch" href="/docs/assets/js/10.783ce582.js"><link rel="prefetch" href="/docs/assets/js/11.6f33dd44.js"><link rel="prefetch" href="/docs/assets/js/12.c3bd2a61.js"><link rel="prefetch" href="/docs/assets/js/14.af2ecfbc.js"><link rel="prefetch" href="/docs/assets/js/15.9983a763.js"><link rel="prefetch" href="/docs/assets/js/16.782db258.js"><link rel="prefetch" href="/docs/assets/js/17.04124198.js"><link rel="prefetch" href="/docs/assets/js/18.efedf33a.js"><link rel="prefetch" href="/docs/assets/js/19.b75b0a6f.js"><link rel="prefetch" href="/docs/assets/js/20.c7d201d0.js"><link rel="prefetch" href="/docs/assets/js/21.3709f65f.js"><link rel="prefetch" href="/docs/assets/js/22.ecbb6d60.js"><link rel="prefetch" href="/docs/assets/js/3.7cbf67d2.js"><link rel="prefetch" href="/docs/assets/js/4.3f3da556.js"><link rel="prefetch" href="/docs/assets/js/5.abc1b238.js"><link rel="prefetch" href="/docs/assets/js/6.f86b5401.js"><link rel="prefetch" href="/docs/assets/js/7.120c22d9.js"><link rel="prefetch" href="/docs/assets/js/8.b161b559.js"><link rel="prefetch" href="/docs/assets/js/9.807c9668.js">
<link rel="preload" href="/docs/assets/css/0.styles.0538ca31.css" as="style"><link rel="preload" href="/docs/assets/js/app.af16b29f.js" as="script"><link rel="preload" href="/docs/assets/js/2.3e9bf4c9.js" as="script"><link rel="preload" href="/docs/assets/js/14.cd5e7136.js" as="script"><link rel="prefetch" href="/docs/assets/js/10.3aec3aff.js"><link rel="prefetch" href="/docs/assets/js/11.3c715d4b.js"><link rel="prefetch" href="/docs/assets/js/12.f5d67101.js"><link rel="prefetch" href="/docs/assets/js/13.1b71fff9.js"><link rel="prefetch" href="/docs/assets/js/15.618bada7.js"><link rel="prefetch" href="/docs/assets/js/16.39b5f0a9.js"><link rel="prefetch" href="/docs/assets/js/17.1781a0fd.js"><link rel="prefetch" href="/docs/assets/js/18.42d5a6b0.js"><link rel="prefetch" href="/docs/assets/js/19.28b0b6dd.js"><link rel="prefetch" href="/docs/assets/js/20.4049e044.js"><link rel="prefetch" href="/docs/assets/js/21.3dac3195.js"><link rel="prefetch" href="/docs/assets/js/22.5a29a611.js"><link rel="prefetch" href="/docs/assets/js/23.6fc11064.js"><link rel="prefetch" href="/docs/assets/js/24.541271c6.js"><link rel="prefetch" href="/docs/assets/js/25.d102b518.js"><link rel="prefetch" href="/docs/assets/js/26.2bf4f42a.js"><link rel="prefetch" href="/docs/assets/js/27.62d662fe.js"><link rel="prefetch" href="/docs/assets/js/28.8e2b6aba.js"><link rel="prefetch" href="/docs/assets/js/3.068e2e40.js"><link rel="prefetch" href="/docs/assets/js/4.3f3da556.js"><link rel="prefetch" href="/docs/assets/js/5.abc1b238.js"><link rel="prefetch" href="/docs/assets/js/6.f86b5401.js"><link rel="prefetch" href="/docs/assets/js/7.120c22d9.js"><link rel="prefetch" href="/docs/assets/js/8.d67efa58.js"><link rel="prefetch" href="/docs/assets/js/9.f68a10a9.js">
<link rel="stylesheet" href="/docs/assets/css/0.styles.0538ca31.css">
</head>
<body>
@ -24,7 +24,7 @@
Gitee首页
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div><div class="nav-item"><a href="https://blog.csdn.net/weixin_43853097" target="_blank" rel="noopener noreferrer" class="nav-link external">
作者首页
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div> <!----></nav> <ul class="sidebar-links"><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>开始介绍</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading open"><span>部署文档</span> <span class="arrow down"></span></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/docs/deploy/" aria-current="page" class="sidebar-link">环境配置</a></li><li><a href="/docs/deploy/frontend.html" class="sidebar-link">前端部署</a></li><li><a href="/docs/deploy/mysql.html" class="sidebar-link">MySQL部署</a></li><li><a href="/docs/deploy/redis.html" class="sidebar-link">redis部署</a></li><li><a href="/docs/deploy/nacos.html" aria-current="page" class="active sidebar-link">Nacos部署</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/docs/deploy/nacos.html#docker部署" class="sidebar-link">docker部署</a></li><li class="sidebar-sub-header"><a href="/docs/deploy/nacos.html#常规部署" class="sidebar-link">常规部署</a></li></ul></li><li><a href="/docs/deploy/backend.html" class="sidebar-link">后端部署</a></li><li><a href="/docs/deploy/judgeserver.html" class="sidebar-link">判题服务部署</a></li><li><a href="/docs/deploy/rsync.html" class="sidebar-link">评测数据同步</a></li></ul></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>开发文档</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>使用文档</span> <span class="arrow right"></span></p> <!----></section></li></ul> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="nacos部署"><a href="#nacos部署" class="header-anchor">#</a> Nacos部署</h1> <h2 id="docker部署"><a href="#docker部署" class="header-anchor">#</a> docker部署</h2> <div class="language-shell line-numbers-mode"><pre class="language-shell"><code>docker run -d <span class="token punctuation">\</span>
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div> <!----></nav> <ul class="sidebar-links"><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>开始介绍</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading open"><span>部署文档</span> <span class="arrow down"></span></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/docs/deploy/" aria-current="page" class="sidebar-link">环境配置</a></li><li><a href="/docs/deploy/docker.html" class="sidebar-link">快速部署</a></li><li><a href="/docs/deploy/frontend.html" class="sidebar-link">前端部署</a></li><li><a href="/docs/deploy/mysql.html" class="sidebar-link">MySQL部署</a></li><li><a href="/docs/deploy/redis.html" class="sidebar-link">Redis部署</a></li><li><a href="/docs/deploy/nacos.html" aria-current="page" class="active sidebar-link">Nacos部署</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/docs/deploy/nacos.html#docker部署" class="sidebar-link">docker部署</a></li><li class="sidebar-sub-header"><a href="/docs/deploy/nacos.html#常规部署" class="sidebar-link">常规部署</a></li></ul></li><li><a href="/docs/deploy/backend.html" class="sidebar-link">后端部署</a></li><li><a href="/docs/deploy/judgeserver.html" class="sidebar-link">判题服务部署</a></li><li><a href="/docs/deploy/rsync.html" class="sidebar-link">评测数据同步</a></li></ul></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>开发文档</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>使用文档</span> <span class="arrow right"></span></p> <!----></section></li></ul> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="nacos部署"><a href="#nacos部署" class="header-anchor">#</a> Nacos部署</h1> <h2 id="docker部署"><a href="#docker部署" class="header-anchor">#</a> docker部署</h2> <div class="language-shell line-numbers-mode"><pre class="language-shell"><code>docker run -d <span class="token punctuation">\</span>
-e <span class="token assign-left variable">JVM_XMS</span><span class="token operator">=</span>384m <span class="token punctuation">\</span>
-e <span class="token assign-left variable">JVM_XMX</span><span class="token operator">=</span>384m <span class="token punctuation">\</span>
-e <span class="token assign-left variable">JVM_XMN</span><span class="token operator">=</span>192m <span class="token punctuation">\</span>
@ -43,12 +43,12 @@ nacos/nacos-server:1.4.2
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br><span class="line-number">15</span><br><span class="line-number">16</span><br></div></div><h2 id="常规部署"><a href="#常规部署" class="header-anchor">#</a> 常规部署</h2> <p>请自行百度下载修改配置</p></div> <footer class="page-edit"><!----> <!----></footer> <div class="page-nav"><p class="inner"><span class="prev">
<a href="/docs/deploy/redis.html" class="prev">
redis部署
Redis部署
</a></span> <span class="next"><a href="/docs/deploy/backend.html">
后端部署
</a>
</span></p></div> </main></div><div class="global-ui"></div></div>
<script src="/docs/assets/js/app.658a191c.js" defer></script><script src="/docs/assets/js/2.3e9bf4c9.js" defer></script><script src="/docs/assets/js/13.2df39f84.js" defer></script>
<script src="/docs/assets/js/app.af16b29f.js" defer></script><script src="/docs/assets/js/2.3e9bf4c9.js" defer></script><script src="/docs/assets/js/14.cd5e7136.js" defer></script>
</body>
</html>

View File

@ -3,12 +3,12 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>redis部署 | HOJ 文档</title>
<title>Redis部署 | HOJ 文档</title>
<meta name="generator" content="VuePress 1.8.2">
<link rel="icon" href="/docs/img/favicon.ico">
<meta name="description" content="HOJ 的开发与使用文档">
<link rel="preload" href="/docs/assets/css/0.styles.0538ca31.css" as="style"><link rel="preload" href="/docs/assets/js/app.658a191c.js" as="script"><link rel="preload" href="/docs/assets/js/2.3e9bf4c9.js" as="script"><link rel="preload" href="/docs/assets/js/14.af2ecfbc.js" as="script"><link rel="prefetch" href="/docs/assets/js/10.783ce582.js"><link rel="prefetch" href="/docs/assets/js/11.6f33dd44.js"><link rel="prefetch" href="/docs/assets/js/12.c3bd2a61.js"><link rel="prefetch" href="/docs/assets/js/13.2df39f84.js"><link rel="prefetch" href="/docs/assets/js/15.9983a763.js"><link rel="prefetch" href="/docs/assets/js/16.782db258.js"><link rel="prefetch" href="/docs/assets/js/17.04124198.js"><link rel="prefetch" href="/docs/assets/js/18.efedf33a.js"><link rel="prefetch" href="/docs/assets/js/19.b75b0a6f.js"><link rel="prefetch" href="/docs/assets/js/20.c7d201d0.js"><link rel="prefetch" href="/docs/assets/js/21.3709f65f.js"><link rel="prefetch" href="/docs/assets/js/22.ecbb6d60.js"><link rel="prefetch" href="/docs/assets/js/3.7cbf67d2.js"><link rel="prefetch" href="/docs/assets/js/4.3f3da556.js"><link rel="prefetch" href="/docs/assets/js/5.abc1b238.js"><link rel="prefetch" href="/docs/assets/js/6.f86b5401.js"><link rel="prefetch" href="/docs/assets/js/7.120c22d9.js"><link rel="prefetch" href="/docs/assets/js/8.b161b559.js"><link rel="prefetch" href="/docs/assets/js/9.807c9668.js">
<link rel="preload" href="/docs/assets/css/0.styles.0538ca31.css" as="style"><link rel="preload" href="/docs/assets/js/app.af16b29f.js" as="script"><link rel="preload" href="/docs/assets/js/2.3e9bf4c9.js" as="script"><link rel="preload" href="/docs/assets/js/15.618bada7.js" as="script"><link rel="prefetch" href="/docs/assets/js/10.3aec3aff.js"><link rel="prefetch" href="/docs/assets/js/11.3c715d4b.js"><link rel="prefetch" href="/docs/assets/js/12.f5d67101.js"><link rel="prefetch" href="/docs/assets/js/13.1b71fff9.js"><link rel="prefetch" href="/docs/assets/js/14.cd5e7136.js"><link rel="prefetch" href="/docs/assets/js/16.39b5f0a9.js"><link rel="prefetch" href="/docs/assets/js/17.1781a0fd.js"><link rel="prefetch" href="/docs/assets/js/18.42d5a6b0.js"><link rel="prefetch" href="/docs/assets/js/19.28b0b6dd.js"><link rel="prefetch" href="/docs/assets/js/20.4049e044.js"><link rel="prefetch" href="/docs/assets/js/21.3dac3195.js"><link rel="prefetch" href="/docs/assets/js/22.5a29a611.js"><link rel="prefetch" href="/docs/assets/js/23.6fc11064.js"><link rel="prefetch" href="/docs/assets/js/24.541271c6.js"><link rel="prefetch" href="/docs/assets/js/25.d102b518.js"><link rel="prefetch" href="/docs/assets/js/26.2bf4f42a.js"><link rel="prefetch" href="/docs/assets/js/27.62d662fe.js"><link rel="prefetch" href="/docs/assets/js/28.8e2b6aba.js"><link rel="prefetch" href="/docs/assets/js/3.068e2e40.js"><link rel="prefetch" href="/docs/assets/js/4.3f3da556.js"><link rel="prefetch" href="/docs/assets/js/5.abc1b238.js"><link rel="prefetch" href="/docs/assets/js/6.f86b5401.js"><link rel="prefetch" href="/docs/assets/js/7.120c22d9.js"><link rel="prefetch" href="/docs/assets/js/8.d67efa58.js"><link rel="prefetch" href="/docs/assets/js/9.f68a10a9.js">
<link rel="stylesheet" href="/docs/assets/css/0.styles.0538ca31.css">
</head>
<body>
@ -24,7 +24,7 @@
Gitee首页
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div><div class="nav-item"><a href="https://blog.csdn.net/weixin_43853097" target="_blank" rel="noopener noreferrer" class="nav-link external">
作者首页
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div> <!----></nav> <ul class="sidebar-links"><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>开始介绍</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading open"><span>部署文档</span> <span class="arrow down"></span></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/docs/deploy/" aria-current="page" class="sidebar-link">环境配置</a></li><li><a href="/docs/deploy/frontend.html" class="sidebar-link">前端部署</a></li><li><a href="/docs/deploy/mysql.html" class="sidebar-link">MySQL部署</a></li><li><a href="/docs/deploy/redis.html" aria-current="page" class="active sidebar-link">redis部署</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/docs/deploy/redis.html#docker部署" class="sidebar-link">docker部署</a></li><li class="sidebar-sub-header"><a href="/docs/deploy/redis.html#常规部署" class="sidebar-link">常规部署</a></li></ul></li><li><a href="/docs/deploy/nacos.html" class="sidebar-link">Nacos部署</a></li><li><a href="/docs/deploy/backend.html" class="sidebar-link">后端部署</a></li><li><a href="/docs/deploy/judgeserver.html" class="sidebar-link">判题服务部署</a></li><li><a href="/docs/deploy/rsync.html" class="sidebar-link">评测数据同步</a></li></ul></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>开发文档</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>使用文档</span> <span class="arrow right"></span></p> <!----></section></li></ul> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="redis部署"><a href="#redis部署" class="header-anchor">#</a> redis部署</h1> <h2 id="docker部署"><a href="#docker部署" class="header-anchor">#</a> docker部署</h2> <div class="language-shell line-numbers-mode"><pre class="language-shell"><code>docker run -d --name redis -p <span class="token number">6379</span>:6379
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div> <!----></nav> <ul class="sidebar-links"><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>开始介绍</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading open"><span>部署文档</span> <span class="arrow down"></span></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/docs/deploy/" aria-current="page" class="sidebar-link">环境配置</a></li><li><a href="/docs/deploy/docker.html" class="sidebar-link">快速部署</a></li><li><a href="/docs/deploy/frontend.html" class="sidebar-link">前端部署</a></li><li><a href="/docs/deploy/mysql.html" class="sidebar-link">MySQL部署</a></li><li><a href="/docs/deploy/redis.html" aria-current="page" class="active sidebar-link">Redis部署</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/docs/deploy/redis.html#docker部署" class="sidebar-link">docker部署</a></li><li class="sidebar-sub-header"><a href="/docs/deploy/redis.html#常规部署" class="sidebar-link">常规部署</a></li></ul></li><li><a href="/docs/deploy/nacos.html" class="sidebar-link">Nacos部署</a></li><li><a href="/docs/deploy/backend.html" class="sidebar-link">后端部署</a></li><li><a href="/docs/deploy/judgeserver.html" class="sidebar-link">判题服务部署</a></li><li><a href="/docs/deploy/rsync.html" class="sidebar-link">评测数据同步</a></li></ul></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>开发文档</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>使用文档</span> <span class="arrow right"></span></p> <!----></section></li></ul> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="redis部署"><a href="#redis部署" class="header-anchor">#</a> Redis部署</h1> <h2 id="docker部署"><a href="#docker部署" class="header-anchor">#</a> docker部署</h2> <div class="language-shell line-numbers-mode"><pre class="language-shell"><code>docker run -d --name redis -p <span class="token number">6379</span>:6379
-v /hoj/data/redis/data:/data <span class="token punctuation">\</span>
--restart<span class="token operator">=</span><span class="token string">&quot;always&quot;</span> <span class="token punctuation">\</span>
redis <span class="token punctuation">\</span>
@ -38,6 +38,6 @@ redis <span class="token punctuation">\</span>
</a>
</span></p></div> </main></div><div class="global-ui"></div></div>
<script src="/docs/assets/js/app.658a191c.js" defer></script><script src="/docs/assets/js/2.3e9bf4c9.js" defer></script><script src="/docs/assets/js/14.af2ecfbc.js" defer></script>
<script src="/docs/assets/js/app.af16b29f.js" defer></script><script src="/docs/assets/js/2.3e9bf4c9.js" defer></script><script src="/docs/assets/js/15.618bada7.js" defer></script>
</body>
</html>

View File

@ -8,7 +8,7 @@
<link rel="icon" href="/docs/img/favicon.ico">
<meta name="description" content="HOJ 的开发与使用文档">
<link rel="preload" href="/docs/assets/css/0.styles.0538ca31.css" as="style"><link rel="preload" href="/docs/assets/js/app.658a191c.js" as="script"><link rel="preload" href="/docs/assets/js/2.3e9bf4c9.js" as="script"><link rel="preload" href="/docs/assets/js/15.9983a763.js" as="script"><link rel="prefetch" href="/docs/assets/js/10.783ce582.js"><link rel="prefetch" href="/docs/assets/js/11.6f33dd44.js"><link rel="prefetch" href="/docs/assets/js/12.c3bd2a61.js"><link rel="prefetch" href="/docs/assets/js/13.2df39f84.js"><link rel="prefetch" href="/docs/assets/js/14.af2ecfbc.js"><link rel="prefetch" href="/docs/assets/js/16.782db258.js"><link rel="prefetch" href="/docs/assets/js/17.04124198.js"><link rel="prefetch" href="/docs/assets/js/18.efedf33a.js"><link rel="prefetch" href="/docs/assets/js/19.b75b0a6f.js"><link rel="prefetch" href="/docs/assets/js/20.c7d201d0.js"><link rel="prefetch" href="/docs/assets/js/21.3709f65f.js"><link rel="prefetch" href="/docs/assets/js/22.ecbb6d60.js"><link rel="prefetch" href="/docs/assets/js/3.7cbf67d2.js"><link rel="prefetch" href="/docs/assets/js/4.3f3da556.js"><link rel="prefetch" href="/docs/assets/js/5.abc1b238.js"><link rel="prefetch" href="/docs/assets/js/6.f86b5401.js"><link rel="prefetch" href="/docs/assets/js/7.120c22d9.js"><link rel="prefetch" href="/docs/assets/js/8.b161b559.js"><link rel="prefetch" href="/docs/assets/js/9.807c9668.js">
<link rel="preload" href="/docs/assets/css/0.styles.0538ca31.css" as="style"><link rel="preload" href="/docs/assets/js/app.af16b29f.js" as="script"><link rel="preload" href="/docs/assets/js/2.3e9bf4c9.js" as="script"><link rel="preload" href="/docs/assets/js/16.39b5f0a9.js" as="script"><link rel="prefetch" href="/docs/assets/js/10.3aec3aff.js"><link rel="prefetch" href="/docs/assets/js/11.3c715d4b.js"><link rel="prefetch" href="/docs/assets/js/12.f5d67101.js"><link rel="prefetch" href="/docs/assets/js/13.1b71fff9.js"><link rel="prefetch" href="/docs/assets/js/14.cd5e7136.js"><link rel="prefetch" href="/docs/assets/js/15.618bada7.js"><link rel="prefetch" href="/docs/assets/js/17.1781a0fd.js"><link rel="prefetch" href="/docs/assets/js/18.42d5a6b0.js"><link rel="prefetch" href="/docs/assets/js/19.28b0b6dd.js"><link rel="prefetch" href="/docs/assets/js/20.4049e044.js"><link rel="prefetch" href="/docs/assets/js/21.3dac3195.js"><link rel="prefetch" href="/docs/assets/js/22.5a29a611.js"><link rel="prefetch" href="/docs/assets/js/23.6fc11064.js"><link rel="prefetch" href="/docs/assets/js/24.541271c6.js"><link rel="prefetch" href="/docs/assets/js/25.d102b518.js"><link rel="prefetch" href="/docs/assets/js/26.2bf4f42a.js"><link rel="prefetch" href="/docs/assets/js/27.62d662fe.js"><link rel="prefetch" href="/docs/assets/js/28.8e2b6aba.js"><link rel="prefetch" href="/docs/assets/js/3.068e2e40.js"><link rel="prefetch" href="/docs/assets/js/4.3f3da556.js"><link rel="prefetch" href="/docs/assets/js/5.abc1b238.js"><link rel="prefetch" href="/docs/assets/js/6.f86b5401.js"><link rel="prefetch" href="/docs/assets/js/7.120c22d9.js"><link rel="prefetch" href="/docs/assets/js/8.d67efa58.js"><link rel="prefetch" href="/docs/assets/js/9.f68a10a9.js">
<link rel="stylesheet" href="/docs/assets/css/0.styles.0538ca31.css">
</head>
<body>
@ -24,7 +24,7 @@
Gitee首页
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div><div class="nav-item"><a href="https://blog.csdn.net/weixin_43853097" target="_blank" rel="noopener noreferrer" class="nav-link external">
作者首页
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div> <!----></nav> <ul class="sidebar-links"><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>开始介绍</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading open"><span>部署文档</span> <span class="arrow down"></span></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/docs/deploy/" aria-current="page" class="sidebar-link">环境配置</a></li><li><a href="/docs/deploy/frontend.html" class="sidebar-link">前端部署</a></li><li><a href="/docs/deploy/mysql.html" class="sidebar-link">MySQL部署</a></li><li><a href="/docs/deploy/redis.html" class="sidebar-link">redis部署</a></li><li><a href="/docs/deploy/nacos.html" class="sidebar-link">Nacos部署</a></li><li><a href="/docs/deploy/backend.html" class="sidebar-link">后端部署</a></li><li><a href="/docs/deploy/judgeserver.html" class="sidebar-link">判题服务部署</a></li><li><a href="/docs/deploy/rsync.html" aria-current="page" class="active sidebar-link">评测数据同步</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/docs/deploy/rsync.html#一、常规部署" class="sidebar-link">一、常规部署</a></li><li class="sidebar-sub-header"><a href="/docs/deploy/rsync.html#二、docker部署" class="sidebar-link">二、docker部署</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/docs/deploy/rsync.html#前言" class="sidebar-link">前言</a></li></ul></li></ul></li></ul></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>开发文档</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>使用文档</span> <span class="arrow right"></span></p> <!----></section></li></ul> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="评测数据同步"><a href="#评测数据同步" class="header-anchor">#</a> 评测数据同步</h1> <h2 id="一、常规部署"><a href="#一、常规部署" class="header-anchor">#</a> 一、常规部署</h2> <ol><li><p>在主后台服务开启rsync实现服务增量同步本HOJ使用子服务器主动拉取最新评测数据的功能可选择主服务推的功能但对主服务器的功耗较大</p></li> <li><p>首先在主服务器(运行后端服务)的服务器中配置,指令如下</p> <div class="language-shell line-numbers-mode"><pre class="language-shell"><code><span class="token function">vim</span> /etc/rsyncd/rsyncd.conf <span class="token comment"># 新建配置文件</span>
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div> <!----></nav> <ul class="sidebar-links"><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>开始介绍</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading open"><span>部署文档</span> <span class="arrow down"></span></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/docs/deploy/" aria-current="page" class="sidebar-link">环境配置</a></li><li><a href="/docs/deploy/docker.html" class="sidebar-link">快速部署</a></li><li><a href="/docs/deploy/frontend.html" class="sidebar-link">前端部署</a></li><li><a href="/docs/deploy/mysql.html" class="sidebar-link">MySQL部署</a></li><li><a href="/docs/deploy/redis.html" class="sidebar-link">Redis部署</a></li><li><a href="/docs/deploy/nacos.html" class="sidebar-link">Nacos部署</a></li><li><a href="/docs/deploy/backend.html" class="sidebar-link">后端部署</a></li><li><a href="/docs/deploy/judgeserver.html" class="sidebar-link">判题服务部署</a></li><li><a href="/docs/deploy/rsync.html" aria-current="page" class="active sidebar-link">评测数据同步</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/docs/deploy/rsync.html#一、常规部署" class="sidebar-link">一、常规部署</a></li><li class="sidebar-sub-header"><a href="/docs/deploy/rsync.html#二、docker部署" class="sidebar-link">二、docker部署</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/docs/deploy/rsync.html#前言" class="sidebar-link">前言</a></li><li class="sidebar-sub-header"><a href="/docs/deploy/rsync.html#文件介绍" class="sidebar-link">文件介绍</a></li></ul></li></ul></li></ul></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>开发文档</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>使用文档</span> <span class="arrow right"></span></p> <!----></section></li></ul> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="评测数据同步"><a href="#评测数据同步" class="header-anchor">#</a> 评测数据同步</h1> <h2 id="一、常规部署"><a href="#一、常规部署" class="header-anchor">#</a> 一、常规部署</h2> <ol><li><p>在主后台服务开启rsync实现服务增量同步本HOJ使用子服务器主动拉取最新评测数据的功能可选择主服务推的功能但对主服务器的功耗较大</p></li> <li><p>首先在主服务器(运行后端服务)的服务器中配置,指令如下</p> <div class="language-shell line-numbers-mode"><pre class="language-shell"><code><span class="token function">vim</span> /etc/rsyncd/rsyncd.conf <span class="token comment"># 新建配置文件</span>
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br></div></div><div class="language-shell line-numbers-mode"><pre class="language-shell"><code><span class="token comment"># 将以下内容写入的rsyncd.conf文件里面 然后保存退出</span>
port <span class="token operator">=</span> <span class="token number">873</span>
uid <span class="token operator">=</span> root
@ -105,7 +105,7 @@ hoj-rsync
<span class="token punctuation">-</span> RSYNC_MASTER_ADDR=master_server_ip <span class="token comment"># 主服务器ip</span>
<span class="token key atrule">ports</span><span class="token punctuation">:</span>
<span class="token punctuation">-</span> <span class="token string">&quot;0.0.0.0:873:873&quot;</span>
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br><span class="line-number">15</span><br><span class="line-number">16</span><br><span class="line-number">17</span><br></div></div></li></ul> <p>###文件介绍</p> <h4 id="_1-rsync-conf"><a href="#_1-rsync-conf" class="header-anchor">#</a> 1. rsync.conf</h4> <p>主服务器的rsync配置文件</p> <div class="language-shell line-numbers-mode"><pre class="language-shell"><code>port <span class="token operator">=</span> <span class="token number">873</span>
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br><span class="line-number">15</span><br><span class="line-number">16</span><br><span class="line-number">17</span><br></div></div></li></ul> <h3 id="文件介绍"><a href="#文件介绍" class="header-anchor">#</a> 文件介绍</h3> <h4 id="_1-rsync-conf"><a href="#_1-rsync-conf" class="header-anchor">#</a> 1. rsync.conf</h4> <p>主服务器的rsync配置文件</p> <div class="language-shell line-numbers-mode"><pre class="language-shell"><code>port <span class="token operator">=</span> <span class="token number">873</span>
uid <span class="token operator">=</span> root
gid <span class="token operator">=</span> root
use <span class="token function">chroot</span> <span class="token operator">=</span> <span class="token function">yes</span>
@ -150,6 +150,6 @@ secrets <span class="token function">file</span> <span class="token operator">=<
</a>
</span></p></div> </main></div><div class="global-ui"></div></div>
<script src="/docs/assets/js/app.658a191c.js" defer></script><script src="/docs/assets/js/2.3e9bf4c9.js" defer></script><script src="/docs/assets/js/15.9983a763.js" defer></script>
<script src="/docs/assets/js/app.af16b29f.js" defer></script><script src="/docs/assets/js/2.3e9bf4c9.js" defer></script><script src="/docs/assets/js/16.39b5f0a9.js" defer></script>
</body>
</html>

File diff suppressed because one or more lines are too long

View File

@ -8,7 +8,7 @@
<link rel="icon" href="/docs/img/favicon.ico">
<meta name="description" content="HOJ 的开发与使用文档">
<link rel="preload" href="/docs/assets/css/0.styles.0538ca31.css" as="style"><link rel="preload" href="/docs/assets/js/app.658a191c.js" as="script"><link rel="preload" href="/docs/assets/js/2.3e9bf4c9.js" as="script"><link rel="preload" href="/docs/assets/js/16.782db258.js" as="script"><link rel="prefetch" href="/docs/assets/js/10.783ce582.js"><link rel="prefetch" href="/docs/assets/js/11.6f33dd44.js"><link rel="prefetch" href="/docs/assets/js/12.c3bd2a61.js"><link rel="prefetch" href="/docs/assets/js/13.2df39f84.js"><link rel="prefetch" href="/docs/assets/js/14.af2ecfbc.js"><link rel="prefetch" href="/docs/assets/js/15.9983a763.js"><link rel="prefetch" href="/docs/assets/js/17.04124198.js"><link rel="prefetch" href="/docs/assets/js/18.efedf33a.js"><link rel="prefetch" href="/docs/assets/js/19.b75b0a6f.js"><link rel="prefetch" href="/docs/assets/js/20.c7d201d0.js"><link rel="prefetch" href="/docs/assets/js/21.3709f65f.js"><link rel="prefetch" href="/docs/assets/js/22.ecbb6d60.js"><link rel="prefetch" href="/docs/assets/js/3.7cbf67d2.js"><link rel="prefetch" href="/docs/assets/js/4.3f3da556.js"><link rel="prefetch" href="/docs/assets/js/5.abc1b238.js"><link rel="prefetch" href="/docs/assets/js/6.f86b5401.js"><link rel="prefetch" href="/docs/assets/js/7.120c22d9.js"><link rel="prefetch" href="/docs/assets/js/8.b161b559.js"><link rel="prefetch" href="/docs/assets/js/9.807c9668.js">
<link rel="preload" href="/docs/assets/css/0.styles.0538ca31.css" as="style"><link rel="preload" href="/docs/assets/js/app.af16b29f.js" as="script"><link rel="preload" href="/docs/assets/js/2.3e9bf4c9.js" as="script"><link rel="preload" href="/docs/assets/js/17.1781a0fd.js" as="script"><link rel="prefetch" href="/docs/assets/js/10.3aec3aff.js"><link rel="prefetch" href="/docs/assets/js/11.3c715d4b.js"><link rel="prefetch" href="/docs/assets/js/12.f5d67101.js"><link rel="prefetch" href="/docs/assets/js/13.1b71fff9.js"><link rel="prefetch" href="/docs/assets/js/14.cd5e7136.js"><link rel="prefetch" href="/docs/assets/js/15.618bada7.js"><link rel="prefetch" href="/docs/assets/js/16.39b5f0a9.js"><link rel="prefetch" href="/docs/assets/js/18.42d5a6b0.js"><link rel="prefetch" href="/docs/assets/js/19.28b0b6dd.js"><link rel="prefetch" href="/docs/assets/js/20.4049e044.js"><link rel="prefetch" href="/docs/assets/js/21.3dac3195.js"><link rel="prefetch" href="/docs/assets/js/22.5a29a611.js"><link rel="prefetch" href="/docs/assets/js/23.6fc11064.js"><link rel="prefetch" href="/docs/assets/js/24.541271c6.js"><link rel="prefetch" href="/docs/assets/js/25.d102b518.js"><link rel="prefetch" href="/docs/assets/js/26.2bf4f42a.js"><link rel="prefetch" href="/docs/assets/js/27.62d662fe.js"><link rel="prefetch" href="/docs/assets/js/28.8e2b6aba.js"><link rel="prefetch" href="/docs/assets/js/3.068e2e40.js"><link rel="prefetch" href="/docs/assets/js/4.3f3da556.js"><link rel="prefetch" href="/docs/assets/js/5.abc1b238.js"><link rel="prefetch" href="/docs/assets/js/6.f86b5401.js"><link rel="prefetch" href="/docs/assets/js/7.120c22d9.js"><link rel="prefetch" href="/docs/assets/js/8.d67efa58.js"><link rel="prefetch" href="/docs/assets/js/9.f68a10a9.js">
<link rel="stylesheet" href="/docs/assets/css/0.styles.0538ca31.css">
</head>
<body>
@ -24,7 +24,7 @@
Gitee首页
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div><div class="nav-item"><a href="https://blog.csdn.net/weixin_43853097" target="_blank" rel="noopener noreferrer" class="nav-link external">
作者首页
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div> <!----></nav> <ul class="sidebar-links"><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>开始介绍</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>部署文档</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading open"><span>开发文档</span> <span class="arrow down"></span></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/docs/develop/" aria-current="page" class="active sidebar-link">开发简介</a></li><li><a href="/docs/develop/db.html" class="sidebar-link">数据库说明</a></li></ul></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>使用文档</span> <span class="arrow right"></span></p> <!----></section></li></ul> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="开发简介"><a href="#开发简介" class="header-anchor">#</a> 开发简介</h1> <ul><li>数据库表说明</li> <li>其它待续.......</li></ul></div> <footer class="page-edit"><!----> <!----></footer> <div class="page-nav"><p class="inner"><span class="prev">
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div> <!----></nav> <ul class="sidebar-links"><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>开始介绍</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>部署文档</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading open"><span>开发文档</span> <span class="arrow down"></span></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/docs/develop/" aria-current="page" class="active sidebar-link">开发简介</a></li><li><a href="/docs/develop/db.html" class="sidebar-link">数据库说明</a></li><li><a href="/docs/develop/sandbox.html" class="sidebar-link">安全沙盒的调用</a></li></ul></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>使用文档</span> <span class="arrow right"></span></p> <!----></section></li></ul> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="开发简介"><a href="#开发简介" class="header-anchor">#</a> 开发简介</h1> <ul><li>数据库表说明</li> <li>其它待续.......</li></ul></div> <footer class="page-edit"><!----> <!----></footer> <div class="page-nav"><p class="inner"><span class="prev">
<a href="/docs/deploy/rsync.html" class="prev">
评测数据同步
@ -33,6 +33,6 @@
</a>
</span></p></div> </main></div><div class="global-ui"></div></div>
<script src="/docs/assets/js/app.658a191c.js" defer></script><script src="/docs/assets/js/2.3e9bf4c9.js" defer></script><script src="/docs/assets/js/16.782db258.js" defer></script>
<script src="/docs/assets/js/app.af16b29f.js" defer></script><script src="/docs/assets/js/2.3e9bf4c9.js" defer></script><script src="/docs/assets/js/17.1781a0fd.js" defer></script>
</body>
</html>

File diff suppressed because one or more lines are too long

View File

@ -8,7 +8,7 @@
<link rel="icon" href="/docs/img/favicon.ico">
<meta name="description" content="HOJ 的开发与使用文档">
<link rel="preload" href="/docs/assets/css/0.styles.0538ca31.css" as="style"><link rel="preload" href="/docs/assets/js/app.658a191c.js" as="script"><link rel="preload" href="/docs/assets/js/2.3e9bf4c9.js" as="script"><link rel="preload" href="/docs/assets/js/7.120c22d9.js" as="script"><link rel="prefetch" href="/docs/assets/js/10.783ce582.js"><link rel="prefetch" href="/docs/assets/js/11.6f33dd44.js"><link rel="prefetch" href="/docs/assets/js/12.c3bd2a61.js"><link rel="prefetch" href="/docs/assets/js/13.2df39f84.js"><link rel="prefetch" href="/docs/assets/js/14.af2ecfbc.js"><link rel="prefetch" href="/docs/assets/js/15.9983a763.js"><link rel="prefetch" href="/docs/assets/js/16.782db258.js"><link rel="prefetch" href="/docs/assets/js/17.04124198.js"><link rel="prefetch" href="/docs/assets/js/18.efedf33a.js"><link rel="prefetch" href="/docs/assets/js/19.b75b0a6f.js"><link rel="prefetch" href="/docs/assets/js/20.c7d201d0.js"><link rel="prefetch" href="/docs/assets/js/21.3709f65f.js"><link rel="prefetch" href="/docs/assets/js/22.ecbb6d60.js"><link rel="prefetch" href="/docs/assets/js/3.7cbf67d2.js"><link rel="prefetch" href="/docs/assets/js/4.3f3da556.js"><link rel="prefetch" href="/docs/assets/js/5.abc1b238.js"><link rel="prefetch" href="/docs/assets/js/6.f86b5401.js"><link rel="prefetch" href="/docs/assets/js/8.b161b559.js"><link rel="prefetch" href="/docs/assets/js/9.807c9668.js">
<link rel="preload" href="/docs/assets/css/0.styles.0538ca31.css" as="style"><link rel="preload" href="/docs/assets/js/app.af16b29f.js" as="script"><link rel="preload" href="/docs/assets/js/2.3e9bf4c9.js" as="script"><link rel="preload" href="/docs/assets/js/7.120c22d9.js" as="script"><link rel="prefetch" href="/docs/assets/js/10.3aec3aff.js"><link rel="prefetch" href="/docs/assets/js/11.3c715d4b.js"><link rel="prefetch" href="/docs/assets/js/12.f5d67101.js"><link rel="prefetch" href="/docs/assets/js/13.1b71fff9.js"><link rel="prefetch" href="/docs/assets/js/14.cd5e7136.js"><link rel="prefetch" href="/docs/assets/js/15.618bada7.js"><link rel="prefetch" href="/docs/assets/js/16.39b5f0a9.js"><link rel="prefetch" href="/docs/assets/js/17.1781a0fd.js"><link rel="prefetch" href="/docs/assets/js/18.42d5a6b0.js"><link rel="prefetch" href="/docs/assets/js/19.28b0b6dd.js"><link rel="prefetch" href="/docs/assets/js/20.4049e044.js"><link rel="prefetch" href="/docs/assets/js/21.3dac3195.js"><link rel="prefetch" href="/docs/assets/js/22.5a29a611.js"><link rel="prefetch" href="/docs/assets/js/23.6fc11064.js"><link rel="prefetch" href="/docs/assets/js/24.541271c6.js"><link rel="prefetch" href="/docs/assets/js/25.d102b518.js"><link rel="prefetch" href="/docs/assets/js/26.2bf4f42a.js"><link rel="prefetch" href="/docs/assets/js/27.62d662fe.js"><link rel="prefetch" href="/docs/assets/js/28.8e2b6aba.js"><link rel="prefetch" href="/docs/assets/js/3.068e2e40.js"><link rel="prefetch" href="/docs/assets/js/4.3f3da556.js"><link rel="prefetch" href="/docs/assets/js/5.abc1b238.js"><link rel="prefetch" href="/docs/assets/js/6.f86b5401.js"><link rel="prefetch" href="/docs/assets/js/8.d67efa58.js"><link rel="prefetch" href="/docs/assets/js/9.f68a10a9.js">
<link rel="stylesheet" href="/docs/assets/css/0.styles.0538ca31.css">
</head>
<body>
@ -33,6 +33,6 @@
</a></p></header> <div class="features"><div class="feature"><h2>分布式</h2> <p>支持多台判题服务随时增减</p></div><div class="feature"><h2>高效化</h2> <p>采用前后端分离,开发迅速,使用高性能可复用判题沙盒</p></div><div class="feature"><h2>定制化</h2> <p>网站高度集中配置,支持定制化修改</p></div><div class="feature"><h2>安全化</h2> <p>判题使用 cgroup 隔离用户程序,网站权限控制完善</p></div><div class="feature"><h2>多样化</h2> <p>独有自身判题服务同时支持其它知名OJ题目的提交判题</p></div></div> <div class="theme-default-content custom content__default"></div> <div class="footer">
MIT Licensed | Copyright © 2021.05.23 Himit_ZH Email:oj.hcode@qq.com
</div></main></div><div class="global-ui"></div></div>
<script src="/docs/assets/js/app.658a191c.js" defer></script><script src="/docs/assets/js/2.3e9bf4c9.js" defer></script><script src="/docs/assets/js/7.120c22d9.js" defer></script>
<script src="/docs/assets/js/app.af16b29f.js" defer></script><script src="/docs/assets/js/2.3e9bf4c9.js" defer></script><script src="/docs/assets/js/7.120c22d9.js" defer></script>
</body>
</html>

View File

@ -8,7 +8,7 @@
<link rel="icon" href="/docs/img/favicon.ico">
<meta name="description" content="HOJ 的开发与使用文档">
<link rel="preload" href="/docs/assets/css/0.styles.0538ca31.css" as="style"><link rel="preload" href="/docs/assets/js/app.658a191c.js" as="script"><link rel="preload" href="/docs/assets/js/2.3e9bf4c9.js" as="script"><link rel="preload" href="/docs/assets/js/19.b75b0a6f.js" as="script"><link rel="prefetch" href="/docs/assets/js/10.783ce582.js"><link rel="prefetch" href="/docs/assets/js/11.6f33dd44.js"><link rel="prefetch" href="/docs/assets/js/12.c3bd2a61.js"><link rel="prefetch" href="/docs/assets/js/13.2df39f84.js"><link rel="prefetch" href="/docs/assets/js/14.af2ecfbc.js"><link rel="prefetch" href="/docs/assets/js/15.9983a763.js"><link rel="prefetch" href="/docs/assets/js/16.782db258.js"><link rel="prefetch" href="/docs/assets/js/17.04124198.js"><link rel="prefetch" href="/docs/assets/js/18.efedf33a.js"><link rel="prefetch" href="/docs/assets/js/20.c7d201d0.js"><link rel="prefetch" href="/docs/assets/js/21.3709f65f.js"><link rel="prefetch" href="/docs/assets/js/22.ecbb6d60.js"><link rel="prefetch" href="/docs/assets/js/3.7cbf67d2.js"><link rel="prefetch" href="/docs/assets/js/4.3f3da556.js"><link rel="prefetch" href="/docs/assets/js/5.abc1b238.js"><link rel="prefetch" href="/docs/assets/js/6.f86b5401.js"><link rel="prefetch" href="/docs/assets/js/7.120c22d9.js"><link rel="prefetch" href="/docs/assets/js/8.b161b559.js"><link rel="prefetch" href="/docs/assets/js/9.807c9668.js">
<link rel="preload" href="/docs/assets/css/0.styles.0538ca31.css" as="style"><link rel="preload" href="/docs/assets/js/app.af16b29f.js" as="script"><link rel="preload" href="/docs/assets/js/2.3e9bf4c9.js" as="script"><link rel="preload" href="/docs/assets/js/21.3dac3195.js" as="script"><link rel="prefetch" href="/docs/assets/js/10.3aec3aff.js"><link rel="prefetch" href="/docs/assets/js/11.3c715d4b.js"><link rel="prefetch" href="/docs/assets/js/12.f5d67101.js"><link rel="prefetch" href="/docs/assets/js/13.1b71fff9.js"><link rel="prefetch" href="/docs/assets/js/14.cd5e7136.js"><link rel="prefetch" href="/docs/assets/js/15.618bada7.js"><link rel="prefetch" href="/docs/assets/js/16.39b5f0a9.js"><link rel="prefetch" href="/docs/assets/js/17.1781a0fd.js"><link rel="prefetch" href="/docs/assets/js/18.42d5a6b0.js"><link rel="prefetch" href="/docs/assets/js/19.28b0b6dd.js"><link rel="prefetch" href="/docs/assets/js/20.4049e044.js"><link rel="prefetch" href="/docs/assets/js/22.5a29a611.js"><link rel="prefetch" href="/docs/assets/js/23.6fc11064.js"><link rel="prefetch" href="/docs/assets/js/24.541271c6.js"><link rel="prefetch" href="/docs/assets/js/25.d102b518.js"><link rel="prefetch" href="/docs/assets/js/26.2bf4f42a.js"><link rel="prefetch" href="/docs/assets/js/27.62d662fe.js"><link rel="prefetch" href="/docs/assets/js/28.8e2b6aba.js"><link rel="prefetch" href="/docs/assets/js/3.068e2e40.js"><link rel="prefetch" href="/docs/assets/js/4.3f3da556.js"><link rel="prefetch" href="/docs/assets/js/5.abc1b238.js"><link rel="prefetch" href="/docs/assets/js/6.f86b5401.js"><link rel="prefetch" href="/docs/assets/js/7.120c22d9.js"><link rel="prefetch" href="/docs/assets/js/8.d67efa58.js"><link rel="prefetch" href="/docs/assets/js/9.f68a10a9.js">
<link rel="stylesheet" href="/docs/assets/css/0.styles.0538ca31.css">
</head>
<body>
@ -34,6 +34,6 @@
</a>
</span></p></div> </main></div><div class="global-ui"></div></div>
<script src="/docs/assets/js/app.658a191c.js" defer></script><script src="/docs/assets/js/2.3e9bf4c9.js" defer></script><script src="/docs/assets/js/19.b75b0a6f.js" defer></script>
<script src="/docs/assets/js/app.af16b29f.js" defer></script><script src="/docs/assets/js/2.3e9bf4c9.js" defer></script><script src="/docs/assets/js/21.3dac3195.js" defer></script>
</body>
</html>

View File

@ -8,7 +8,7 @@
<link rel="icon" href="/docs/img/favicon.ico">
<meta name="description" content="HOJ 的开发与使用文档">
<link rel="preload" href="/docs/assets/css/0.styles.0538ca31.css" as="style"><link rel="preload" href="/docs/assets/js/app.658a191c.js" as="script"><link rel="preload" href="/docs/assets/js/2.3e9bf4c9.js" as="script"><link rel="preload" href="/docs/assets/js/18.efedf33a.js" as="script"><link rel="prefetch" href="/docs/assets/js/10.783ce582.js"><link rel="prefetch" href="/docs/assets/js/11.6f33dd44.js"><link rel="prefetch" href="/docs/assets/js/12.c3bd2a61.js"><link rel="prefetch" href="/docs/assets/js/13.2df39f84.js"><link rel="prefetch" href="/docs/assets/js/14.af2ecfbc.js"><link rel="prefetch" href="/docs/assets/js/15.9983a763.js"><link rel="prefetch" href="/docs/assets/js/16.782db258.js"><link rel="prefetch" href="/docs/assets/js/17.04124198.js"><link rel="prefetch" href="/docs/assets/js/19.b75b0a6f.js"><link rel="prefetch" href="/docs/assets/js/20.c7d201d0.js"><link rel="prefetch" href="/docs/assets/js/21.3709f65f.js"><link rel="prefetch" href="/docs/assets/js/22.ecbb6d60.js"><link rel="prefetch" href="/docs/assets/js/3.7cbf67d2.js"><link rel="prefetch" href="/docs/assets/js/4.3f3da556.js"><link rel="prefetch" href="/docs/assets/js/5.abc1b238.js"><link rel="prefetch" href="/docs/assets/js/6.f86b5401.js"><link rel="prefetch" href="/docs/assets/js/7.120c22d9.js"><link rel="prefetch" href="/docs/assets/js/8.b161b559.js"><link rel="prefetch" href="/docs/assets/js/9.807c9668.js">
<link rel="preload" href="/docs/assets/css/0.styles.0538ca31.css" as="style"><link rel="preload" href="/docs/assets/js/app.af16b29f.js" as="script"><link rel="preload" href="/docs/assets/js/2.3e9bf4c9.js" as="script"><link rel="preload" href="/docs/assets/js/20.4049e044.js" as="script"><link rel="prefetch" href="/docs/assets/js/10.3aec3aff.js"><link rel="prefetch" href="/docs/assets/js/11.3c715d4b.js"><link rel="prefetch" href="/docs/assets/js/12.f5d67101.js"><link rel="prefetch" href="/docs/assets/js/13.1b71fff9.js"><link rel="prefetch" href="/docs/assets/js/14.cd5e7136.js"><link rel="prefetch" href="/docs/assets/js/15.618bada7.js"><link rel="prefetch" href="/docs/assets/js/16.39b5f0a9.js"><link rel="prefetch" href="/docs/assets/js/17.1781a0fd.js"><link rel="prefetch" href="/docs/assets/js/18.42d5a6b0.js"><link rel="prefetch" href="/docs/assets/js/19.28b0b6dd.js"><link rel="prefetch" href="/docs/assets/js/21.3dac3195.js"><link rel="prefetch" href="/docs/assets/js/22.5a29a611.js"><link rel="prefetch" href="/docs/assets/js/23.6fc11064.js"><link rel="prefetch" href="/docs/assets/js/24.541271c6.js"><link rel="prefetch" href="/docs/assets/js/25.d102b518.js"><link rel="prefetch" href="/docs/assets/js/26.2bf4f42a.js"><link rel="prefetch" href="/docs/assets/js/27.62d662fe.js"><link rel="prefetch" href="/docs/assets/js/28.8e2b6aba.js"><link rel="prefetch" href="/docs/assets/js/3.068e2e40.js"><link rel="prefetch" href="/docs/assets/js/4.3f3da556.js"><link rel="prefetch" href="/docs/assets/js/5.abc1b238.js"><link rel="prefetch" href="/docs/assets/js/6.f86b5401.js"><link rel="prefetch" href="/docs/assets/js/7.120c22d9.js"><link rel="prefetch" href="/docs/assets/js/8.d67efa58.js"><link rel="prefetch" href="/docs/assets/js/9.f68a10a9.js">
<link rel="stylesheet" href="/docs/assets/css/0.styles.0538ca31.css">
</head>
<body>
@ -29,6 +29,6 @@
</a>
</span></p></div> </main></div><div class="global-ui"></div></div>
<script src="/docs/assets/js/app.658a191c.js" defer></script><script src="/docs/assets/js/2.3e9bf4c9.js" defer></script><script src="/docs/assets/js/18.efedf33a.js" defer></script>
<script src="/docs/assets/js/app.af16b29f.js" defer></script><script src="/docs/assets/js/2.3e9bf4c9.js" defer></script><script src="/docs/assets/js/20.4049e044.js" defer></script>
</body>
</html>

View File

@ -0,0 +1,38 @@
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>比赛介绍 | HOJ 文档</title>
<meta name="generator" content="VuePress 1.8.2">
<link rel="icon" href="/docs/img/favicon.ico">
<meta name="description" content="HOJ 的开发与使用文档">
<link rel="preload" href="/docs/assets/css/0.styles.0538ca31.css" as="style"><link rel="preload" href="/docs/assets/js/app.af16b29f.js" as="script"><link rel="preload" href="/docs/assets/js/2.3e9bf4c9.js" as="script"><link rel="preload" href="/docs/assets/js/23.6fc11064.js" as="script"><link rel="prefetch" href="/docs/assets/js/10.3aec3aff.js"><link rel="prefetch" href="/docs/assets/js/11.3c715d4b.js"><link rel="prefetch" href="/docs/assets/js/12.f5d67101.js"><link rel="prefetch" href="/docs/assets/js/13.1b71fff9.js"><link rel="prefetch" href="/docs/assets/js/14.cd5e7136.js"><link rel="prefetch" href="/docs/assets/js/15.618bada7.js"><link rel="prefetch" href="/docs/assets/js/16.39b5f0a9.js"><link rel="prefetch" href="/docs/assets/js/17.1781a0fd.js"><link rel="prefetch" href="/docs/assets/js/18.42d5a6b0.js"><link rel="prefetch" href="/docs/assets/js/19.28b0b6dd.js"><link rel="prefetch" href="/docs/assets/js/20.4049e044.js"><link rel="prefetch" href="/docs/assets/js/21.3dac3195.js"><link rel="prefetch" href="/docs/assets/js/22.5a29a611.js"><link rel="prefetch" href="/docs/assets/js/24.541271c6.js"><link rel="prefetch" href="/docs/assets/js/25.d102b518.js"><link rel="prefetch" href="/docs/assets/js/26.2bf4f42a.js"><link rel="prefetch" href="/docs/assets/js/27.62d662fe.js"><link rel="prefetch" href="/docs/assets/js/28.8e2b6aba.js"><link rel="prefetch" href="/docs/assets/js/3.068e2e40.js"><link rel="prefetch" href="/docs/assets/js/4.3f3da556.js"><link rel="prefetch" href="/docs/assets/js/5.abc1b238.js"><link rel="prefetch" href="/docs/assets/js/6.f86b5401.js"><link rel="prefetch" href="/docs/assets/js/7.120c22d9.js"><link rel="prefetch" href="/docs/assets/js/8.d67efa58.js"><link rel="prefetch" href="/docs/assets/js/9.f68a10a9.js">
<link rel="stylesheet" href="/docs/assets/css/0.styles.0538ca31.css">
</head>
<body>
<div id="app" data-server-rendered="true"><div class="theme-container"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/docs/" class="home-link router-link-active"><!----> <span class="site-name">HOJ 文档</span></a> <div class="links"><div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><a href="https://www.hcode.top" target="_blank" rel="noopener noreferrer" class="nav-link external">
Demo
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div><div class="nav-item"><a href="https://gitee.com/himitzh0730/hoj" target="_blank" rel="noopener noreferrer" class="nav-link external">
Gitee首页
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div><div class="nav-item"><a href="https://blog.csdn.net/weixin_43853097" target="_blank" rel="noopener noreferrer" class="nav-link external">
作者首页
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div> <!----></nav></div></header> <div class="sidebar-mask"></div> <aside class="sidebar"><nav class="nav-links"><div class="nav-item"><a href="https://www.hcode.top" target="_blank" rel="noopener noreferrer" class="nav-link external">
Demo
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div><div class="nav-item"><a href="https://gitee.com/himitzh0730/hoj" target="_blank" rel="noopener noreferrer" class="nav-link external">
Gitee首页
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div><div class="nav-item"><a href="https://blog.csdn.net/weixin_43853097" target="_blank" rel="noopener noreferrer" class="nav-link external">
作者首页
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div> <!----></nav> <ul class="sidebar-links"><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>开始介绍</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>部署文档</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>开发文档</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading open"><span>使用文档</span> <span class="arrow down"></span></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/docs/use/" aria-current="page" class="sidebar-link">使用简介</a></li><li><a href="/docs/use/testcase.html" class="sidebar-link">测试用例</a></li><li><a href="/docs/use/contest.html" aria-current="page" class="active sidebar-link">比赛介绍</a></li><li><a href="/docs/use/import-problem.html" class="sidebar-link">导入题目</a></li><li><a href="/docs/use/import-user.html" class="sidebar-link">导入用户</a></li><li><a href="/docs/use/discussion-admin.html" class="sidebar-link">评论管理</a></li><li><a href="/docs/use/spj.html" class="sidebar-link">特殊判题</a></li></ul></section></li></ul> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="比赛介绍"><a href="#比赛介绍" class="header-anchor">#</a> 比赛介绍</h1> <p><img src="https://img-blog.csdnimg.cn/20210523221519574.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1MzA5Nw==,size_16,color_FFFFFF,t_70" alt="在这里插入图片描述"></p> <p>创建比赛时两种赛制:</p> <ul><li><p><strong>ACM 模式</strong></p> <p>在该模式下,我们严格按照ACM-ICPC的比赛规则来进行Contest设置项中的<code>Seal Time Rank</code>即为是否封榜,封榜后将不再刷新排名。可选择比赛结束前半小时,比赛前一小时,比赛全程封榜。</p></li> <li><p><strong>OI 模式</strong></p> <p>在OI模式下选手的提交将根据得分点来计分多次提交以最后一次提交为准排名规则为多个题目的总分数。同样可以进行封榜操作封榜时段选手不能查看到实时的排行榜数据</p></li></ul> <p>注意:管理员可以选择强制刷新,查看实时的排行榜数据!通过<code>Force Update</code>来强制刷新榜,且刷新后的榜仅对管理者可见。</p> <p>比赛权限模式有三种:</p> <ul><li><strong>公开赛</strong>:所有用户都可以查看比赛详情、比赛题目、比赛提交,比赛排行榜、比赛讨论等,且都可以在比赛阶段随时提交。</li> <li><strong>保护赛</strong>:所有用户都可以查看比赛详情、比赛题目、比赛提交,比赛排行榜、比赛讨论等,但在比赛阶段提交需要提供该比赛的密码!</li> <li><strong>私有赛</strong>:仅支持有比赛密码的用户进入比赛,查看查看比赛详情、比赛题目、比赛提交,比赛排行榜、比赛讨论等,包括提交。</li></ul></div> <footer class="page-edit"><!----> <!----></footer> <div class="page-nav"><p class="inner"><span class="prev">
<a href="/docs/use/testcase.html" class="prev">
测试用例
</a></span> <span class="next"><a href="/docs/use/import-problem.html">
导入题目
</a>
</span></p></div> </main></div><div class="global-ui"></div></div>
<script src="/docs/assets/js/app.af16b29f.js" defer></script><script src="/docs/assets/js/2.3e9bf4c9.js" defer></script><script src="/docs/assets/js/23.6fc11064.js" defer></script>
</body>
</html>

View File

@ -0,0 +1,38 @@
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>评论管理 | HOJ 文档</title>
<meta name="generator" content="VuePress 1.8.2">
<link rel="icon" href="/docs/img/favicon.ico">
<meta name="description" content="HOJ 的开发与使用文档">
<link rel="preload" href="/docs/assets/css/0.styles.0538ca31.css" as="style"><link rel="preload" href="/docs/assets/js/app.af16b29f.js" as="script"><link rel="preload" href="/docs/assets/js/2.3e9bf4c9.js" as="script"><link rel="preload" href="/docs/assets/js/24.541271c6.js" as="script"><link rel="prefetch" href="/docs/assets/js/10.3aec3aff.js"><link rel="prefetch" href="/docs/assets/js/11.3c715d4b.js"><link rel="prefetch" href="/docs/assets/js/12.f5d67101.js"><link rel="prefetch" href="/docs/assets/js/13.1b71fff9.js"><link rel="prefetch" href="/docs/assets/js/14.cd5e7136.js"><link rel="prefetch" href="/docs/assets/js/15.618bada7.js"><link rel="prefetch" href="/docs/assets/js/16.39b5f0a9.js"><link rel="prefetch" href="/docs/assets/js/17.1781a0fd.js"><link rel="prefetch" href="/docs/assets/js/18.42d5a6b0.js"><link rel="prefetch" href="/docs/assets/js/19.28b0b6dd.js"><link rel="prefetch" href="/docs/assets/js/20.4049e044.js"><link rel="prefetch" href="/docs/assets/js/21.3dac3195.js"><link rel="prefetch" href="/docs/assets/js/22.5a29a611.js"><link rel="prefetch" href="/docs/assets/js/23.6fc11064.js"><link rel="prefetch" href="/docs/assets/js/25.d102b518.js"><link rel="prefetch" href="/docs/assets/js/26.2bf4f42a.js"><link rel="prefetch" href="/docs/assets/js/27.62d662fe.js"><link rel="prefetch" href="/docs/assets/js/28.8e2b6aba.js"><link rel="prefetch" href="/docs/assets/js/3.068e2e40.js"><link rel="prefetch" href="/docs/assets/js/4.3f3da556.js"><link rel="prefetch" href="/docs/assets/js/5.abc1b238.js"><link rel="prefetch" href="/docs/assets/js/6.f86b5401.js"><link rel="prefetch" href="/docs/assets/js/7.120c22d9.js"><link rel="prefetch" href="/docs/assets/js/8.d67efa58.js"><link rel="prefetch" href="/docs/assets/js/9.f68a10a9.js">
<link rel="stylesheet" href="/docs/assets/css/0.styles.0538ca31.css">
</head>
<body>
<div id="app" data-server-rendered="true"><div class="theme-container"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/docs/" class="home-link router-link-active"><!----> <span class="site-name">HOJ 文档</span></a> <div class="links"><div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><a href="https://www.hcode.top" target="_blank" rel="noopener noreferrer" class="nav-link external">
Demo
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div><div class="nav-item"><a href="https://gitee.com/himitzh0730/hoj" target="_blank" rel="noopener noreferrer" class="nav-link external">
Gitee首页
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div><div class="nav-item"><a href="https://blog.csdn.net/weixin_43853097" target="_blank" rel="noopener noreferrer" class="nav-link external">
作者首页
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div> <!----></nav></div></header> <div class="sidebar-mask"></div> <aside class="sidebar"><nav class="nav-links"><div class="nav-item"><a href="https://www.hcode.top" target="_blank" rel="noopener noreferrer" class="nav-link external">
Demo
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div><div class="nav-item"><a href="https://gitee.com/himitzh0730/hoj" target="_blank" rel="noopener noreferrer" class="nav-link external">
Gitee首页
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div><div class="nav-item"><a href="https://blog.csdn.net/weixin_43853097" target="_blank" rel="noopener noreferrer" class="nav-link external">
作者首页
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div> <!----></nav> <ul class="sidebar-links"><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>开始介绍</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>部署文档</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>开发文档</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading open"><span>使用文档</span> <span class="arrow down"></span></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/docs/use/" aria-current="page" class="sidebar-link">使用简介</a></li><li><a href="/docs/use/testcase.html" class="sidebar-link">测试用例</a></li><li><a href="/docs/use/contest.html" class="sidebar-link">比赛介绍</a></li><li><a href="/docs/use/import-problem.html" class="sidebar-link">导入题目</a></li><li><a href="/docs/use/import-user.html" class="sidebar-link">导入用户</a></li><li><a href="/docs/use/discussion-admin.html" aria-current="page" class="active sidebar-link">评论管理</a></li><li><a href="/docs/use/spj.html" class="sidebar-link">特殊判题</a></li></ul></section></li></ul> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="评论管理"><a href="#评论管理" class="header-anchor">#</a> 评论管理</h1> <p><img src="https://img-blog.csdnimg.cn/20210523223605573.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1MzA5Nw==,size_16,color_FFFFFF,t_70#pic_center" alt="在这里插入图片描述"></p> <ul><li><p>后台管理员可以查看所有的讨论帖,并且可以选择是否置顶,是否正常显示,删除,查看等</p></li> <li><p>后台管理员可以查看对应讨论帖的举报内容</p> <p><img src="https://img-blog.csdnimg.cn/20210523221321418.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1MzA5Nw==,size_16,color_FFFFFF,t_70" alt="在这里插入图片描述"></p></li></ul></div> <footer class="page-edit"><!----> <!----></footer> <div class="page-nav"><p class="inner"><span class="prev">
<a href="/docs/use/import-user.html" class="prev">
导入用户
</a></span> <span class="next"><a href="/docs/use/spj.html">
特殊判题
</a>
</span></p></div> </main></div><div class="global-ui"></div></div>
<script src="/docs/assets/js/app.af16b29f.js" defer></script><script src="/docs/assets/js/2.3e9bf4c9.js" defer></script><script src="/docs/assets/js/24.541271c6.js" defer></script>
</body>
</html>

View File

@ -0,0 +1,38 @@
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>导入题目 | HOJ 文档</title>
<meta name="generator" content="VuePress 1.8.2">
<link rel="icon" href="/docs/img/favicon.ico">
<meta name="description" content="HOJ 的开发与使用文档">
<link rel="preload" href="/docs/assets/css/0.styles.0538ca31.css" as="style"><link rel="preload" href="/docs/assets/js/app.af16b29f.js" as="script"><link rel="preload" href="/docs/assets/js/2.3e9bf4c9.js" as="script"><link rel="preload" href="/docs/assets/js/25.d102b518.js" as="script"><link rel="prefetch" href="/docs/assets/js/10.3aec3aff.js"><link rel="prefetch" href="/docs/assets/js/11.3c715d4b.js"><link rel="prefetch" href="/docs/assets/js/12.f5d67101.js"><link rel="prefetch" href="/docs/assets/js/13.1b71fff9.js"><link rel="prefetch" href="/docs/assets/js/14.cd5e7136.js"><link rel="prefetch" href="/docs/assets/js/15.618bada7.js"><link rel="prefetch" href="/docs/assets/js/16.39b5f0a9.js"><link rel="prefetch" href="/docs/assets/js/17.1781a0fd.js"><link rel="prefetch" href="/docs/assets/js/18.42d5a6b0.js"><link rel="prefetch" href="/docs/assets/js/19.28b0b6dd.js"><link rel="prefetch" href="/docs/assets/js/20.4049e044.js"><link rel="prefetch" href="/docs/assets/js/21.3dac3195.js"><link rel="prefetch" href="/docs/assets/js/22.5a29a611.js"><link rel="prefetch" href="/docs/assets/js/23.6fc11064.js"><link rel="prefetch" href="/docs/assets/js/24.541271c6.js"><link rel="prefetch" href="/docs/assets/js/26.2bf4f42a.js"><link rel="prefetch" href="/docs/assets/js/27.62d662fe.js"><link rel="prefetch" href="/docs/assets/js/28.8e2b6aba.js"><link rel="prefetch" href="/docs/assets/js/3.068e2e40.js"><link rel="prefetch" href="/docs/assets/js/4.3f3da556.js"><link rel="prefetch" href="/docs/assets/js/5.abc1b238.js"><link rel="prefetch" href="/docs/assets/js/6.f86b5401.js"><link rel="prefetch" href="/docs/assets/js/7.120c22d9.js"><link rel="prefetch" href="/docs/assets/js/8.d67efa58.js"><link rel="prefetch" href="/docs/assets/js/9.f68a10a9.js">
<link rel="stylesheet" href="/docs/assets/css/0.styles.0538ca31.css">
</head>
<body>
<div id="app" data-server-rendered="true"><div class="theme-container"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/docs/" class="home-link router-link-active"><!----> <span class="site-name">HOJ 文档</span></a> <div class="links"><div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><a href="https://www.hcode.top" target="_blank" rel="noopener noreferrer" class="nav-link external">
Demo
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div><div class="nav-item"><a href="https://gitee.com/himitzh0730/hoj" target="_blank" rel="noopener noreferrer" class="nav-link external">
Gitee首页
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div><div class="nav-item"><a href="https://blog.csdn.net/weixin_43853097" target="_blank" rel="noopener noreferrer" class="nav-link external">
作者首页
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div> <!----></nav></div></header> <div class="sidebar-mask"></div> <aside class="sidebar"><nav class="nav-links"><div class="nav-item"><a href="https://www.hcode.top" target="_blank" rel="noopener noreferrer" class="nav-link external">
Demo
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div><div class="nav-item"><a href="https://gitee.com/himitzh0730/hoj" target="_blank" rel="noopener noreferrer" class="nav-link external">
Gitee首页
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div><div class="nav-item"><a href="https://blog.csdn.net/weixin_43853097" target="_blank" rel="noopener noreferrer" class="nav-link external">
作者首页
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div> <!----></nav> <ul class="sidebar-links"><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>开始介绍</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>部署文档</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>开发文档</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading open"><span>使用文档</span> <span class="arrow down"></span></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/docs/use/" aria-current="page" class="sidebar-link">使用简介</a></li><li><a href="/docs/use/testcase.html" class="sidebar-link">测试用例</a></li><li><a href="/docs/use/contest.html" class="sidebar-link">比赛介绍</a></li><li><a href="/docs/use/import-problem.html" aria-current="page" class="active sidebar-link">导入题目</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/docs/use/import-problem.html#一、导入hoj题目" class="sidebar-link">一、导入HOJ题目</a></li><li class="sidebar-sub-header"><a href="/docs/use/import-problem.html#二、导入其它oj题目" class="sidebar-link">二、导入其它OJ题目</a></li></ul></li><li><a href="/docs/use/import-user.html" class="sidebar-link">导入用户</a></li><li><a href="/docs/use/discussion-admin.html" class="sidebar-link">评论管理</a></li><li><a href="/docs/use/spj.html" class="sidebar-link">特殊判题</a></li></ul></section></li></ul> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="导入题目"><a href="#导入题目" class="header-anchor">#</a> 导入题目</h1> <h2 id="一、导入hoj题目"><a href="#一、导入hoj题目" class="header-anchor">#</a> 一、导入HOJ题目</h2> <p>待续.....</p> <h2 id="二、导入其它oj题目"><a href="#二、导入其它oj题目" class="header-anchor">#</a> 二、导入其它OJ题目</h2> <p>导入HDU、Codeforces题目只需提供该题目的题号便可一键导入</p> <p><strong>管理员进入后台,点击题目列表</strong></p> <p><img src="https://img-blog.csdnimg.cn/20210523223454472.png#pic_center" alt="在这里插入图片描述"></p> <p>然后添加上方的添加按钮</p> <p><img src="https://img-blog.csdnimg.cn/20210523222914722.png" alt="在这里插入图片描述"></p> <p><strong>在弹出窗中选择OJ名字及题号便可导入</strong></p> <p><img src="https://img-blog.csdnimg.cn/20210523223042100.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1MzA5Nw==,size_16,color_FFFFFF,t_70" alt="在这里插入图片描述"></p> <p><strong>注意:</strong></p> <ul><li>HDU的题号一般是 1000以上的数字</li> <li>Codeforces的题号是1000A、1000B、这种数字加大写英文字母的格式</li></ul></div> <footer class="page-edit"><!----> <!----></footer> <div class="page-nav"><p class="inner"><span class="prev">
<a href="/docs/use/contest.html" class="prev">
比赛介绍
</a></span> <span class="next"><a href="/docs/use/import-user.html">
导入用户
</a>
</span></p></div> </main></div><div class="global-ui"></div></div>
<script src="/docs/assets/js/app.af16b29f.js" defer></script><script src="/docs/assets/js/2.3e9bf4c9.js" defer></script><script src="/docs/assets/js/25.d102b518.js" defer></script>
</body>
</html>

View File

@ -0,0 +1,38 @@
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>导入用户 | HOJ 文档</title>
<meta name="generator" content="VuePress 1.8.2">
<link rel="icon" href="/docs/img/favicon.ico">
<meta name="description" content="HOJ 的开发与使用文档">
<link rel="preload" href="/docs/assets/css/0.styles.0538ca31.css" as="style"><link rel="preload" href="/docs/assets/js/app.af16b29f.js" as="script"><link rel="preload" href="/docs/assets/js/2.3e9bf4c9.js" as="script"><link rel="preload" href="/docs/assets/js/26.2bf4f42a.js" as="script"><link rel="prefetch" href="/docs/assets/js/10.3aec3aff.js"><link rel="prefetch" href="/docs/assets/js/11.3c715d4b.js"><link rel="prefetch" href="/docs/assets/js/12.f5d67101.js"><link rel="prefetch" href="/docs/assets/js/13.1b71fff9.js"><link rel="prefetch" href="/docs/assets/js/14.cd5e7136.js"><link rel="prefetch" href="/docs/assets/js/15.618bada7.js"><link rel="prefetch" href="/docs/assets/js/16.39b5f0a9.js"><link rel="prefetch" href="/docs/assets/js/17.1781a0fd.js"><link rel="prefetch" href="/docs/assets/js/18.42d5a6b0.js"><link rel="prefetch" href="/docs/assets/js/19.28b0b6dd.js"><link rel="prefetch" href="/docs/assets/js/20.4049e044.js"><link rel="prefetch" href="/docs/assets/js/21.3dac3195.js"><link rel="prefetch" href="/docs/assets/js/22.5a29a611.js"><link rel="prefetch" href="/docs/assets/js/23.6fc11064.js"><link rel="prefetch" href="/docs/assets/js/24.541271c6.js"><link rel="prefetch" href="/docs/assets/js/25.d102b518.js"><link rel="prefetch" href="/docs/assets/js/27.62d662fe.js"><link rel="prefetch" href="/docs/assets/js/28.8e2b6aba.js"><link rel="prefetch" href="/docs/assets/js/3.068e2e40.js"><link rel="prefetch" href="/docs/assets/js/4.3f3da556.js"><link rel="prefetch" href="/docs/assets/js/5.abc1b238.js"><link rel="prefetch" href="/docs/assets/js/6.f86b5401.js"><link rel="prefetch" href="/docs/assets/js/7.120c22d9.js"><link rel="prefetch" href="/docs/assets/js/8.d67efa58.js"><link rel="prefetch" href="/docs/assets/js/9.f68a10a9.js">
<link rel="stylesheet" href="/docs/assets/css/0.styles.0538ca31.css">
</head>
<body>
<div id="app" data-server-rendered="true"><div class="theme-container"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/docs/" class="home-link router-link-active"><!----> <span class="site-name">HOJ 文档</span></a> <div class="links"><div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><a href="https://www.hcode.top" target="_blank" rel="noopener noreferrer" class="nav-link external">
Demo
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div><div class="nav-item"><a href="https://gitee.com/himitzh0730/hoj" target="_blank" rel="noopener noreferrer" class="nav-link external">
Gitee首页
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div><div class="nav-item"><a href="https://blog.csdn.net/weixin_43853097" target="_blank" rel="noopener noreferrer" class="nav-link external">
作者首页
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div> <!----></nav></div></header> <div class="sidebar-mask"></div> <aside class="sidebar"><nav class="nav-links"><div class="nav-item"><a href="https://www.hcode.top" target="_blank" rel="noopener noreferrer" class="nav-link external">
Demo
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div><div class="nav-item"><a href="https://gitee.com/himitzh0730/hoj" target="_blank" rel="noopener noreferrer" class="nav-link external">
Gitee首页
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div><div class="nav-item"><a href="https://blog.csdn.net/weixin_43853097" target="_blank" rel="noopener noreferrer" class="nav-link external">
作者首页
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div> <!----></nav> <ul class="sidebar-links"><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>开始介绍</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>部署文档</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>开发文档</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading open"><span>使用文档</span> <span class="arrow down"></span></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/docs/use/" aria-current="page" class="sidebar-link">使用简介</a></li><li><a href="/docs/use/testcase.html" class="sidebar-link">测试用例</a></li><li><a href="/docs/use/contest.html" class="sidebar-link">比赛介绍</a></li><li><a href="/docs/use/import-problem.html" class="sidebar-link">导入题目</a></li><li><a href="/docs/use/import-user.html" aria-current="page" class="active sidebar-link">导入用户</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/docs/use/import-user.html#导入用户" class="sidebar-link">导入用户</a></li></ul></li><li><a href="/docs/use/discussion-admin.html" class="sidebar-link">评论管理</a></li><li><a href="/docs/use/spj.html" class="sidebar-link">特殊判题</a></li></ul></section></li></ul> </aside> <main class="page"> <div class="theme-default-content content__default"><h2 id="导入用户"><a href="#导入用户" class="header-anchor">#</a> 导入用户</h2> <p><img src="https://img-blog.csdnimg.cn/2021052322072728.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1MzA5Nw==,size_16,color_FFFFFF,t_70" alt="在这里插入图片描述"></p> <p>要求如下:</p> <ol><li><p>用户数据导入仅支持csv格式的用户数据。</p></li> <li><p>共三列数据: 用户名,密码,邮箱,任一列不能为空,否则该行数据可能导入失败。</p></li> <li><p>第一行不必写(“用户名”,“密码”,“邮箱”)这三个列名。</p></li> <li><p>请导入保存为UTF-8编码的文件否则中文可能会乱码。</p></li></ol></div> <footer class="page-edit"><!----> <!----></footer> <div class="page-nav"><p class="inner"><span class="prev">
<a href="/docs/use/import-problem.html" class="prev">
导入题目
</a></span> <span class="next"><a href="/docs/use/discussion-admin.html">
评论管理
</a>
</span></p></div> </main></div><div class="global-ui"></div></div>
<script src="/docs/assets/js/app.af16b29f.js" defer></script><script src="/docs/assets/js/2.3e9bf4c9.js" defer></script><script src="/docs/assets/js/26.2bf4f42a.js" defer></script>
</body>
</html>

View File

@ -8,7 +8,7 @@
<link rel="icon" href="/docs/img/favicon.ico">
<meta name="description" content="HOJ 的开发与使用文档">
<link rel="preload" href="/docs/assets/css/0.styles.0538ca31.css" as="style"><link rel="preload" href="/docs/assets/js/app.658a191c.js" as="script"><link rel="preload" href="/docs/assets/js/2.3e9bf4c9.js" as="script"><link rel="preload" href="/docs/assets/js/20.c7d201d0.js" as="script"><link rel="prefetch" href="/docs/assets/js/10.783ce582.js"><link rel="prefetch" href="/docs/assets/js/11.6f33dd44.js"><link rel="prefetch" href="/docs/assets/js/12.c3bd2a61.js"><link rel="prefetch" href="/docs/assets/js/13.2df39f84.js"><link rel="prefetch" href="/docs/assets/js/14.af2ecfbc.js"><link rel="prefetch" href="/docs/assets/js/15.9983a763.js"><link rel="prefetch" href="/docs/assets/js/16.782db258.js"><link rel="prefetch" href="/docs/assets/js/17.04124198.js"><link rel="prefetch" href="/docs/assets/js/18.efedf33a.js"><link rel="prefetch" href="/docs/assets/js/19.b75b0a6f.js"><link rel="prefetch" href="/docs/assets/js/21.3709f65f.js"><link rel="prefetch" href="/docs/assets/js/22.ecbb6d60.js"><link rel="prefetch" href="/docs/assets/js/3.7cbf67d2.js"><link rel="prefetch" href="/docs/assets/js/4.3f3da556.js"><link rel="prefetch" href="/docs/assets/js/5.abc1b238.js"><link rel="prefetch" href="/docs/assets/js/6.f86b5401.js"><link rel="prefetch" href="/docs/assets/js/7.120c22d9.js"><link rel="prefetch" href="/docs/assets/js/8.b161b559.js"><link rel="prefetch" href="/docs/assets/js/9.807c9668.js">
<link rel="preload" href="/docs/assets/css/0.styles.0538ca31.css" as="style"><link rel="preload" href="/docs/assets/js/app.af16b29f.js" as="script"><link rel="preload" href="/docs/assets/js/2.3e9bf4c9.js" as="script"><link rel="preload" href="/docs/assets/js/22.5a29a611.js" as="script"><link rel="prefetch" href="/docs/assets/js/10.3aec3aff.js"><link rel="prefetch" href="/docs/assets/js/11.3c715d4b.js"><link rel="prefetch" href="/docs/assets/js/12.f5d67101.js"><link rel="prefetch" href="/docs/assets/js/13.1b71fff9.js"><link rel="prefetch" href="/docs/assets/js/14.cd5e7136.js"><link rel="prefetch" href="/docs/assets/js/15.618bada7.js"><link rel="prefetch" href="/docs/assets/js/16.39b5f0a9.js"><link rel="prefetch" href="/docs/assets/js/17.1781a0fd.js"><link rel="prefetch" href="/docs/assets/js/18.42d5a6b0.js"><link rel="prefetch" href="/docs/assets/js/19.28b0b6dd.js"><link rel="prefetch" href="/docs/assets/js/20.4049e044.js"><link rel="prefetch" href="/docs/assets/js/21.3dac3195.js"><link rel="prefetch" href="/docs/assets/js/23.6fc11064.js"><link rel="prefetch" href="/docs/assets/js/24.541271c6.js"><link rel="prefetch" href="/docs/assets/js/25.d102b518.js"><link rel="prefetch" href="/docs/assets/js/26.2bf4f42a.js"><link rel="prefetch" href="/docs/assets/js/27.62d662fe.js"><link rel="prefetch" href="/docs/assets/js/28.8e2b6aba.js"><link rel="prefetch" href="/docs/assets/js/3.068e2e40.js"><link rel="prefetch" href="/docs/assets/js/4.3f3da556.js"><link rel="prefetch" href="/docs/assets/js/5.abc1b238.js"><link rel="prefetch" href="/docs/assets/js/6.f86b5401.js"><link rel="prefetch" href="/docs/assets/js/7.120c22d9.js"><link rel="prefetch" href="/docs/assets/js/8.d67efa58.js"><link rel="prefetch" href="/docs/assets/js/9.f68a10a9.js">
<link rel="stylesheet" href="/docs/assets/css/0.styles.0538ca31.css">
</head>
<body>
@ -24,15 +24,15 @@
Gitee首页
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div><div class="nav-item"><a href="https://blog.csdn.net/weixin_43853097" target="_blank" rel="noopener noreferrer" class="nav-link external">
作者首页
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div> <!----></nav> <ul class="sidebar-links"><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>开始介绍</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>部署文档</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>开发文档</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading open"><span>使用文档</span> <span class="arrow down"></span></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/docs/use/" aria-current="page" class="active sidebar-link">使用简介</a></li><li><a href="/docs/use/sandbox.html" class="sidebar-link">安全沙盒的调用</a></li><li><a href="/docs/use/spj.html" class="sidebar-link">特殊判题</a></li></ul></section></li></ul> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="使用简介"><a href="#使用简介" class="header-anchor">#</a> 使用简介</h1> <ul><li>安全沙盒的简单介绍</li> <li>特殊判题的程序例子</li> <li>其它待续......</li></ul></div> <footer class="page-edit"><!----> <!----></footer> <div class="page-nav"><p class="inner"><span class="prev">
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div> <!----></nav> <ul class="sidebar-links"><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>开始介绍</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>部署文档</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>开发文档</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading open"><span>使用文档</span> <span class="arrow down"></span></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/docs/use/" aria-current="page" class="active sidebar-link">使用简介</a></li><li><a href="/docs/use/testcase.html" class="sidebar-link">测试用例</a></li><li><a href="/docs/use/contest.html" class="sidebar-link">比赛介绍</a></li><li><a href="/docs/use/import-problem.html" class="sidebar-link">导入题目</a></li><li><a href="/docs/use/import-user.html" class="sidebar-link">导入用户</a></li><li><a href="/docs/use/discussion-admin.html" class="sidebar-link">评论管理</a></li><li><a href="/docs/use/spj.html" class="sidebar-link">特殊判题</a></li></ul></section></li></ul> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="使用简介"><a href="#使用简介" class="header-anchor">#</a> 使用简介</h1> <ul><li>测试数据的介绍</li> <li>比赛的介绍</li> <li>导入题目的介绍</li> <li>导入用户的介绍</li> <li>讨论管理的介绍</li> <li>特殊判题的程序例子</li> <li>其它待续......</li></ul></div> <footer class="page-edit"><!----> <!----></footer> <div class="page-nav"><p class="inner"><span class="prev">
<a href="/docs/develop/db.html" class="prev">
数据库说明
</a></span> <span class="next"><a href="/docs/use/sandbox.html">
<a href="/docs/develop/sandbox.html" class="prev">
安全沙盒的调用
</a></span> <span class="next"><a href="/docs/use/testcase.html">
测试用例
</a>
</span></p></div> </main></div><div class="global-ui"></div></div>
<script src="/docs/assets/js/app.658a191c.js" defer></script><script src="/docs/assets/js/2.3e9bf4c9.js" defer></script><script src="/docs/assets/js/20.c7d201d0.js" defer></script>
<script src="/docs/assets/js/app.af16b29f.js" defer></script><script src="/docs/assets/js/2.3e9bf4c9.js" defer></script><script src="/docs/assets/js/22.5a29a611.js" defer></script>
</body>
</html>

View File

@ -8,7 +8,7 @@
<link rel="icon" href="/docs/img/favicon.ico">
<meta name="description" content="HOJ 的开发与使用文档">
<link rel="preload" href="/docs/assets/css/0.styles.0538ca31.css" as="style"><link rel="preload" href="/docs/assets/js/app.658a191c.js" as="script"><link rel="preload" href="/docs/assets/js/2.3e9bf4c9.js" as="script"><link rel="preload" href="/docs/assets/js/22.ecbb6d60.js" as="script"><link rel="prefetch" href="/docs/assets/js/10.783ce582.js"><link rel="prefetch" href="/docs/assets/js/11.6f33dd44.js"><link rel="prefetch" href="/docs/assets/js/12.c3bd2a61.js"><link rel="prefetch" href="/docs/assets/js/13.2df39f84.js"><link rel="prefetch" href="/docs/assets/js/14.af2ecfbc.js"><link rel="prefetch" href="/docs/assets/js/15.9983a763.js"><link rel="prefetch" href="/docs/assets/js/16.782db258.js"><link rel="prefetch" href="/docs/assets/js/17.04124198.js"><link rel="prefetch" href="/docs/assets/js/18.efedf33a.js"><link rel="prefetch" href="/docs/assets/js/19.b75b0a6f.js"><link rel="prefetch" href="/docs/assets/js/20.c7d201d0.js"><link rel="prefetch" href="/docs/assets/js/21.3709f65f.js"><link rel="prefetch" href="/docs/assets/js/3.7cbf67d2.js"><link rel="prefetch" href="/docs/assets/js/4.3f3da556.js"><link rel="prefetch" href="/docs/assets/js/5.abc1b238.js"><link rel="prefetch" href="/docs/assets/js/6.f86b5401.js"><link rel="prefetch" href="/docs/assets/js/7.120c22d9.js"><link rel="prefetch" href="/docs/assets/js/8.b161b559.js"><link rel="prefetch" href="/docs/assets/js/9.807c9668.js">
<link rel="preload" href="/docs/assets/css/0.styles.0538ca31.css" as="style"><link rel="preload" href="/docs/assets/js/app.af16b29f.js" as="script"><link rel="preload" href="/docs/assets/js/2.3e9bf4c9.js" as="script"><link rel="preload" href="/docs/assets/js/27.62d662fe.js" as="script"><link rel="prefetch" href="/docs/assets/js/10.3aec3aff.js"><link rel="prefetch" href="/docs/assets/js/11.3c715d4b.js"><link rel="prefetch" href="/docs/assets/js/12.f5d67101.js"><link rel="prefetch" href="/docs/assets/js/13.1b71fff9.js"><link rel="prefetch" href="/docs/assets/js/14.cd5e7136.js"><link rel="prefetch" href="/docs/assets/js/15.618bada7.js"><link rel="prefetch" href="/docs/assets/js/16.39b5f0a9.js"><link rel="prefetch" href="/docs/assets/js/17.1781a0fd.js"><link rel="prefetch" href="/docs/assets/js/18.42d5a6b0.js"><link rel="prefetch" href="/docs/assets/js/19.28b0b6dd.js"><link rel="prefetch" href="/docs/assets/js/20.4049e044.js"><link rel="prefetch" href="/docs/assets/js/21.3dac3195.js"><link rel="prefetch" href="/docs/assets/js/22.5a29a611.js"><link rel="prefetch" href="/docs/assets/js/23.6fc11064.js"><link rel="prefetch" href="/docs/assets/js/24.541271c6.js"><link rel="prefetch" href="/docs/assets/js/25.d102b518.js"><link rel="prefetch" href="/docs/assets/js/26.2bf4f42a.js"><link rel="prefetch" href="/docs/assets/js/28.8e2b6aba.js"><link rel="prefetch" href="/docs/assets/js/3.068e2e40.js"><link rel="prefetch" href="/docs/assets/js/4.3f3da556.js"><link rel="prefetch" href="/docs/assets/js/5.abc1b238.js"><link rel="prefetch" href="/docs/assets/js/6.f86b5401.js"><link rel="prefetch" href="/docs/assets/js/7.120c22d9.js"><link rel="prefetch" href="/docs/assets/js/8.d67efa58.js"><link rel="prefetch" href="/docs/assets/js/9.f68a10a9.js">
<link rel="stylesheet" href="/docs/assets/css/0.styles.0538ca31.css">
</head>
<body>
@ -24,7 +24,7 @@
Gitee首页
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div><div class="nav-item"><a href="https://blog.csdn.net/weixin_43853097" target="_blank" rel="noopener noreferrer" class="nav-link external">
作者首页
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div> <!----></nav> <ul class="sidebar-links"><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>开始介绍</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>部署文档</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>开发文档</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading open"><span>使用文档</span> <span class="arrow down"></span></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/docs/use/" aria-current="page" class="sidebar-link">使用简介</a></li><li><a href="/docs/use/sandbox.html" class="sidebar-link">安全沙盒的调用</a></li><li><a href="/docs/use/spj.html" aria-current="page" class="active sidebar-link">特殊判题</a></li></ul></section></li></ul> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="特殊判题"><a href="#特殊判题" class="header-anchor">#</a> 特殊判题</h1> <blockquote><p>后台对题目使用特殊判题时,请参考以下程序例子</p></blockquote> <div class="language-cpp line-numbers-mode"><pre class="language-cpp"><code><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;iostream&gt;</span></span>
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div> <!----></nav> <ul class="sidebar-links"><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>开始介绍</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>部署文档</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>开发文档</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading open"><span>使用文档</span> <span class="arrow down"></span></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/docs/use/" aria-current="page" class="sidebar-link">使用简介</a></li><li><a href="/docs/use/testcase.html" class="sidebar-link">测试用例</a></li><li><a href="/docs/use/contest.html" class="sidebar-link">比赛介绍</a></li><li><a href="/docs/use/import-problem.html" class="sidebar-link">导入题目</a></li><li><a href="/docs/use/import-user.html" class="sidebar-link">导入用户</a></li><li><a href="/docs/use/discussion-admin.html" class="sidebar-link">评论管理</a></li><li><a href="/docs/use/spj.html" aria-current="page" class="active sidebar-link">特殊判题</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/docs/use/spj.html#什么是特殊判题" class="sidebar-link">什么是特殊判题?</a></li><li class="sidebar-sub-header"><a href="/docs/use/spj.html#使用场景" class="sidebar-link">使用场景</a></li><li class="sidebar-sub-header"><a href="/docs/use/spj.html#例子" class="sidebar-link">例子:</a></li></ul></li></ul></section></li></ul> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="特殊判题"><a href="#特殊判题" class="header-anchor">#</a> 特殊判题</h1> <h2 id="什么是特殊判题"><a href="#什么是特殊判题" class="header-anchor">#</a> 什么是特殊判题?</h2> <p>特殊判题Special Judge是指OJ将使用一个特定的程序来判断提交的程序的输出是不是正确的而不是单纯地看提交的程序的输出是否和标准输出一模一样。</p> <h2 id="使用场景"><a href="#使用场景" class="header-anchor">#</a> 使用场景</h2> <p>一般使用Special Judge都是因为题目的答案不唯一更具体一点说的话一般是两种情况</p> <ul><li>题目最终要求输出一个解决方案,而且这个解决方案可能不唯一。</li> <li>题目最终要求输出一个浮点数而且会告诉只要答案和标准答案相差不超过某个较小的数就可以比如0.01。这种情况保留3位小数、4位小数等等都是可以的而且多保留几位小数也没什么坏处。</li></ul> <h2 id="例子"><a href="#例子" class="header-anchor">#</a> 例子:</h2> <p>在创建题目的适合,选择开启特殊判题,编写特殊判题程序,然后编译通过便可。</p> <blockquote><p>后台对题目使用特殊判题时,请参考以下程序例子</p></blockquote> <div class="language-cpp line-numbers-mode"><pre class="language-cpp"><code><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;iostream&gt;</span></span>
<span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string">&lt;cstdio&gt;</span></span>
<span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">define</span> <span class="token macro-name">AC</span> <span class="token expression"><span class="token number">100</span></span></span>
<span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">define</span> <span class="token macro-name">WA</span> <span class="token expression"><span class="token number">101</span></span></span>
@ -79,9 +79,9 @@
<span class="token punctuation">}</span>
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br><span class="line-number">15</span><br><span class="line-number">16</span><br><span class="line-number">17</span><br><span class="line-number">18</span><br><span class="line-number">19</span><br><span class="line-number">20</span><br><span class="line-number">21</span><br><span class="line-number">22</span><br><span class="line-number">23</span><br><span class="line-number">24</span><br><span class="line-number">25</span><br><span class="line-number">26</span><br><span class="line-number">27</span><br><span class="line-number">28</span><br><span class="line-number">29</span><br><span class="line-number">30</span><br><span class="line-number">31</span><br><span class="line-number">32</span><br><span class="line-number">33</span><br><span class="line-number">34</span><br><span class="line-number">35</span><br><span class="line-number">36</span><br><span class="line-number">37</span><br><span class="line-number">38</span><br><span class="line-number">39</span><br><span class="line-number">40</span><br><span class="line-number">41</span><br><span class="line-number">42</span><br><span class="line-number">43</span><br><span class="line-number">44</span><br><span class="line-number">45</span><br><span class="line-number">46</span><br><span class="line-number">47</span><br><span class="line-number">48</span><br><span class="line-number">49</span><br><span class="line-number">50</span><br><span class="line-number">51</span><br><span class="line-number">52</span><br><span class="line-number">53</span><br></div></div></div> <footer class="page-edit"><!----> <!----></footer> <div class="page-nav"><p class="inner"><span class="prev">
<a href="/docs/use/sandbox.html" class="prev">
安全沙盒的调用
<a href="/docs/use/discussion-admin.html" class="prev">
评论管理
</a></span> <!----></p></div> </main></div><div class="global-ui"></div></div>
<script src="/docs/assets/js/app.658a191c.js" defer></script><script src="/docs/assets/js/2.3e9bf4c9.js" defer></script><script src="/docs/assets/js/22.ecbb6d60.js" defer></script>
<script src="/docs/assets/js/app.af16b29f.js" defer></script><script src="/docs/assets/js/2.3e9bf4c9.js" defer></script><script src="/docs/assets/js/27.62d662fe.js" defer></script>
</body>
</html>

View File

@ -0,0 +1,46 @@
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>测试用例 | HOJ 文档</title>
<meta name="generator" content="VuePress 1.8.2">
<link rel="icon" href="/docs/img/favicon.ico">
<meta name="description" content="HOJ 的开发与使用文档">
<link rel="preload" href="/docs/assets/css/0.styles.0538ca31.css" as="style"><link rel="preload" href="/docs/assets/js/app.af16b29f.js" as="script"><link rel="preload" href="/docs/assets/js/2.3e9bf4c9.js" as="script"><link rel="preload" href="/docs/assets/js/28.8e2b6aba.js" as="script"><link rel="prefetch" href="/docs/assets/js/10.3aec3aff.js"><link rel="prefetch" href="/docs/assets/js/11.3c715d4b.js"><link rel="prefetch" href="/docs/assets/js/12.f5d67101.js"><link rel="prefetch" href="/docs/assets/js/13.1b71fff9.js"><link rel="prefetch" href="/docs/assets/js/14.cd5e7136.js"><link rel="prefetch" href="/docs/assets/js/15.618bada7.js"><link rel="prefetch" href="/docs/assets/js/16.39b5f0a9.js"><link rel="prefetch" href="/docs/assets/js/17.1781a0fd.js"><link rel="prefetch" href="/docs/assets/js/18.42d5a6b0.js"><link rel="prefetch" href="/docs/assets/js/19.28b0b6dd.js"><link rel="prefetch" href="/docs/assets/js/20.4049e044.js"><link rel="prefetch" href="/docs/assets/js/21.3dac3195.js"><link rel="prefetch" href="/docs/assets/js/22.5a29a611.js"><link rel="prefetch" href="/docs/assets/js/23.6fc11064.js"><link rel="prefetch" href="/docs/assets/js/24.541271c6.js"><link rel="prefetch" href="/docs/assets/js/25.d102b518.js"><link rel="prefetch" href="/docs/assets/js/26.2bf4f42a.js"><link rel="prefetch" href="/docs/assets/js/27.62d662fe.js"><link rel="prefetch" href="/docs/assets/js/3.068e2e40.js"><link rel="prefetch" href="/docs/assets/js/4.3f3da556.js"><link rel="prefetch" href="/docs/assets/js/5.abc1b238.js"><link rel="prefetch" href="/docs/assets/js/6.f86b5401.js"><link rel="prefetch" href="/docs/assets/js/7.120c22d9.js"><link rel="prefetch" href="/docs/assets/js/8.d67efa58.js"><link rel="prefetch" href="/docs/assets/js/9.f68a10a9.js">
<link rel="stylesheet" href="/docs/assets/css/0.styles.0538ca31.css">
</head>
<body>
<div id="app" data-server-rendered="true"><div class="theme-container"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/docs/" class="home-link router-link-active"><!----> <span class="site-name">HOJ 文档</span></a> <div class="links"><div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><a href="https://www.hcode.top" target="_blank" rel="noopener noreferrer" class="nav-link external">
Demo
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div><div class="nav-item"><a href="https://gitee.com/himitzh0730/hoj" target="_blank" rel="noopener noreferrer" class="nav-link external">
Gitee首页
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div><div class="nav-item"><a href="https://blog.csdn.net/weixin_43853097" target="_blank" rel="noopener noreferrer" class="nav-link external">
作者首页
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div> <!----></nav></div></header> <div class="sidebar-mask"></div> <aside class="sidebar"><nav class="nav-links"><div class="nav-item"><a href="https://www.hcode.top" target="_blank" rel="noopener noreferrer" class="nav-link external">
Demo
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div><div class="nav-item"><a href="https://gitee.com/himitzh0730/hoj" target="_blank" rel="noopener noreferrer" class="nav-link external">
Gitee首页
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div><div class="nav-item"><a href="https://blog.csdn.net/weixin_43853097" target="_blank" rel="noopener noreferrer" class="nav-link external">
作者首页
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div> <!----></nav> <ul class="sidebar-links"><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>开始介绍</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>部署文档</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>开发文档</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading open"><span>使用文档</span> <span class="arrow down"></span></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/docs/use/" aria-current="page" class="sidebar-link">使用简介</a></li><li><a href="/docs/use/testcase.html" aria-current="page" class="active sidebar-link">测试用例</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/docs/use/testcase.html#一、手动输入" class="sidebar-link">一、手动输入</a></li><li class="sidebar-sub-header"><a href="/docs/use/testcase.html#二、文件上传" class="sidebar-link">二、文件上传</a></li></ul></li><li><a href="/docs/use/contest.html" class="sidebar-link">比赛介绍</a></li><li><a href="/docs/use/import-problem.html" class="sidebar-link">导入题目</a></li><li><a href="/docs/use/import-user.html" class="sidebar-link">导入用户</a></li><li><a href="/docs/use/discussion-admin.html" class="sidebar-link">评论管理</a></li><li><a href="/docs/use/spj.html" class="sidebar-link">特殊判题</a></li></ul></section></li></ul> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="测试用例"><a href="#测试用例" class="header-anchor">#</a> 测试用例</h1> <p><img src="https://img-blog.csdnimg.cn/20210523215852734.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1MzA5Nw==,size_16,color_FFFFFF,t_70" alt="在这里插入图片描述"></p> <p><strong>进入后台添加题目上传题目测试用例数据可以选择手动输入、Zip文件上传两种方式</strong></p> <h2 id="一、手动输入"><a href="#一、手动输入" class="header-anchor">#</a> 一、手动输入</h2> <p>每次点击<code>Add Sampple</code>就可以手动填入该用例的输入与输出该方式比较适合题目数据简单的同时手动输入的题目数据将记录进数据库下次对该题目进行修改可以直接获取然后进行测试数据的修改同时也会在服务器对应的testcase文件夹生成对应的文件。</p> <h2 id="二、文件上传"><a href="#二、文件上传" class="header-anchor">#</a> 二、文件上传</h2> <p>对于通题目,测试用例文件包括<code>in</code><code>out</code><code>ans</code>三种拓展名</p> <p>例如有两组测试用例,则对于普通题目测试用例的文件名分别为<code>1.in, 1.out1.ans, 2.in, 2.out2.ans</code>其他形式的文件后台均不识别。</p> <p>压缩时,请将文件都放在压缩包的根目录,而不是包含在某一个文件夹中,比如正确的格式是:</p> <div class="language-bash line-numbers-mode"><pre class="language-bash"><code>├── <span class="token number">1</span>.in
├── <span class="token number">1</span>.out
├── <span class="token number">2</span>.in
├── <span class="token number">2</span>.out
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br></div></div><div class="language-bash line-numbers-mode"><pre class="language-bash"><code>├── <span class="token number">1</span>.in
├── <span class="token number">1</span>.ans
├── <span class="token number">2</span>.in
├── <span class="token number">2</span>.ans
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br></div></div><p>然后压缩测试用例到一个zip中</p> <p>注意:不要在这些文件外面套多一层文件夹,请直接压缩!!!</p> <p>同时建议:尽量合并测试用例到一个文件中,减少测试用例组数,这会一定程度上提高判题性能。</p></div> <footer class="page-edit"><!----> <!----></footer> <div class="page-nav"><p class="inner"><span class="prev">
<a href="/docs/use/" class="prev router-link-active">
使用简介
</a></span> <span class="next"><a href="/docs/use/contest.html">
比赛介绍
</a>
</span></p></div> </main></div><div class="global-ui"></div></div>
<script src="/docs/assets/js/app.af16b29f.js" defer></script><script src="/docs/assets/js/2.3e9bf4c9.js" defer></script><script src="/docs/assets/js/28.8e2b6aba.js" defer></script>
</body>
</html>

View File

@ -88,114 +88,9 @@ Windows 下的安装仅供体验,勿在生产环境使用。如有必要,请
## 单个部署
## 单个部署顺序
单个部署的顺序是redismysqlrsyncfrontend >> nacos >> backendjudgeserver
## docker-compose开始部署
1. 选择好需要安装的位置,运行下面命令
```shell
git clone https://gitee.com/himitzh0730/hoj-deploy.git && cd hoj-deploy
```
2. 单机部署建议服务器内存2G以上
> 注意:以下操作建议试用,配置大部分是默认的,实际运行请修改`docker-compose.yml`文件的配置
```shell
cd standAlone && docker-compose up -d
```
根据网速情况,大约十到二十分钟即可安装完毕,全程无需人工干预。
等待命令执行完毕后,查看容器状态
```shell
docker ps -a
```
当看到所有的容器的状态status都为`UP`或`healthy`就代表 OJ 已经启动成功。
> 更多自定义配置请查看**/standAlone/.env**的文件,或者/src下各组件的详情说明
> 以下默认参数说明
- 默认超级管理员账号与密码root / hoj123456
- 默认redis密码hoj123456
- 默认mysql账号与密码root / hoj123456
- 默认nacos管理员账号与密码root / hoj123456
- 默认不开启https开启需修改文件同时提供证书文件
- 判题并发数默认cpu核心数*2
- 默认开启vj判题需要手动修改添加账号与密码如果不添加不能vj判题
- vj判题并发数默认cpu核心数*4
**登录root账号到后台查看服务状态以及到`http://ip/admin/conf`修改服务配置!**
<u>注意:网站的注册及用户账号相关操作需要邮件系统,所以请在系统配置中配置自己的邮件服务。</u>
3. 分布式部署默认开启rsync数据同步
- 主服务启动,默认不提供判题服务,请修改该启动文件配置
```shell
cd distributed/main
vim .env # 请根据文件内注释提示修改
```
配置修改保存后,在`docker-compose.yml`当前路径下启动该服务
```shell
docker-compose up -d
```
- 判题服务启动,请修改该启动文件配置
```shell
cd distributed/judgeserver
vim .env # 请根据文件内注释提示修改
```
配置修改保存后,在`docker-compose.yml`当前路径下启动该服务
```shell
docker-compose up -d
```
两个服务都启动完成在浏览器输入主服务ip或域名进行访问登录root账号到后台查看服务状态以及到`http://ip/admin/conf`修改服务配置!
> 如果需要开启https
- 单机:
提供server.crt和server.key证书与密钥文件放置`/standAlone`目录下,与`docker-compose.yml`和`.env`文件放置同一位置,然后修改`docker-compose.yml`中的hoj-frontend的配置
- 分布式提供server.crt和server.key证书与密钥文件放置`/distributed/main目录下与`docker-compose.yml`和`.env`文件放置同一位置,然后修改`docker-compose.yml`中的hoj-frontend的配置
```yaml
hoj-frontend:
image: registry.cn-shenzhen.aliyuncs.com/hcode/hoj_frontend
container_name: hoj-frontend
restart: always
# 开启https请提供证书
volumes:
- ./server.crt:/etc/nginx/etc/crt/server.crt
- ./server.key:/etc/nginx/etc/crt/server.key
environment:
- SERVER_NAME=localhost # 提供你的域名!!!!
- BACKEND_SERVER_HOST=${BACKEND_HOST:-172.20.0.5} # backend后端服务地址
- BACKEND_SERVER_PORT=${BACKEND_PORT:-6688} # backend后端服务端口号
- USE_HTTPS=true # 使用https请设置为true
ports:
- "80:80"
- "443:443"
networks:
hoj-network:
ipv4_address: 172.20.0.6
```

291
docs/docs/deploy/docker.md Normal file
View File

@ -0,0 +1,291 @@
# 快速部署
> 前提已经在上一步准备好docker与docker-compose
## 一、单机部署
1. 选择好需要安装的位置,运行下面命令
```shell
git clone https://gitee.com/himitzh0730/hoj-deploy.git && cd hoj-deploy
```
2. 进入文件夹使用docker-compose启动各容器服务
```shell
cd standAlone
```
`standAlone`文件夹文件有以下:
```bash
├── docker-compose.yml
├── .env
```
主要配置请修改`.env`文件,内容如下:
> 注意各服务ip最好不改动保持处于172.20.0.0/16网段的docker network
```properties
# redis的配置
REDIS_HOST=172.20.0.2
REDIS_PORT=6379
REDIS_PASSWORD=hoj123456
# mysql的配置
MYSQL_HOST=172.20.0.3
MYSQL_PUBLIC_HOST=172.20.0.3 # 如果判题服务是分布式请提供当前mysql所在服务器的公网ip
MYSQL_PORT=3306
MYSQL_ROOT_PASSWORD=hoj123456
# nacos的配置
NACOS_HOST=172.20.0.4
NACOS_PORT=8848
NACOS_USERNAME=root
NACOS_PASSWORD=hoj123456
# backend后端服务的配置
BACKEND_HOST=172.20.0.5
BACKEND_PORT=6688
JWT_TOKEN_SECRET=default # token加密秘钥 默认则生成32位随机密钥
JWT_TOKEN_EXPIRE=86400 # token过期时间默认为24小时 86400s
JWT_TOKEN_FRESH_EXPIRE=43200 # token默认12小时可自动刷新
JUDGE_TOKEN=default # 调用判题服务器的token 默认则生成32位随机密钥
EMAIL_SERVER_HOST=smtp.qq.com # 请使用邮件服务的域名或ip
EMAIL_SERVER_PORT=465
EMAIL_USERNMAE=your_email_username
EMAIL_PASSWORD=your_email_password
# 开启虚拟判题请提供对应oj的账号密码 格式为
# username1,username2,...
# password1,password2,...
HDU_ACCOUNT_USERNAME_LIST=
HDU_ACCOUNT_PASSWORD_LIST=
CF_ACCOUNT_USERNAME_LIST=
CF_ACCOUNT_PASSWORD_LIST=
# judgeserver的配置
JUDGE_SERVER_IP=172.20.0.7
JUDGE_SERVER_PORT=8088
JUDGE_SERVER_NAME=judger-alone
# docker network的配置
SUBNET=172.20.0.0/16
```
如果不改动,则以默认参数启动
```shell
docker-compose up -d
```
**根据网速情况,大约十到二十分钟拉取镜像,全程无需人工干预,拉取完毕后,自动启动容器服务,大概需要一至两分钟的初始化。**
等待命令执行完毕后,查看容器状态
```shell
docker ps -a
```
当看到所有的容器的状态status都为`UP`或`healthy`就代表 OJ 已经启动成功。
> 以下默认参数说明
- 默认超级管理员账号与密码root / hoj123456
- 默认redis密码hoj123456
- 默认mysql账号与密码root / hoj123456
- 默认nacos管理员账号与密码root / hoj123456
- 默认不开启https开启需修改文件同时提供证书文件
- 判题并发数默认cpu核心数*2
- 默认开启vj判题需要手动修改添加账号与密码如果不添加不能vj判题
- vj判题并发数默认cpu核心数*4
**登录root账号到后台查看服务状态以及到`http://ip/admin/conf`修改服务配置!**
<u>注意网站的注册及用户账号相关操作需要邮件系统所以请在系统配置中配置自己的SMTP邮件服务。</u>
**(如果已经在启动在.env文件配置了邮件服务即不用再次修改)**
```bash
Host: smtp.qq.com
Port: 465
Username: qq邮箱账号
Password: 开启SMTP服务后生成的随机授权码
```
## 二、分布式部署
1. 选择好需要安装的位置,运行下面命令
```shell
git clone https://gitee.com/himitzh0730/hoj-deploy.git && cd hoj-deploy
```
2. 进入文件夹
```shell
cd distributed
```
`distributed`文件夹有以下:
```bash
├── judgeserver
├── main
```
3. 首先部署主服务即是数据后台服务DataBackup
```shell
cd main
```
该文件夹下有:
```bash
├── docker-compose.yml
├── .env
```
修改`.env`文件中的配置
```shell
vim .env
```
> 注意各服务ip最好不改动保持处于172.20.0.0/16网段的docker network
```properties
# redis的配置
REDIS_HOST=172.20.0.2
REDIS_PORT=6379
REDIS_PASSWORD=hoj123456
# mysql的配置
MYSQL_HOST=172.20.0.3
MYSQL_PUBLIC_HOST=172.20.0.3 # 请提供当前mysql所在服务器的公网ip
MYSQL_PORT=3306
MYSQL_ROOT_PASSWORD=hoj123456
# nacos的配置
NACOS_HOST=172.20.0.4
NACOS_PORT=8848
NACOS_USERNAME=root
NACOS_PASSWORD=hoj123456
# backend后端服务的配置
BACKEND_HOST=172.20.0.5
BACKEND_PORT=6688
JWT_TOKEN_SECRET=default # token加密秘钥 默认则生成32位随机密钥
JWT_TOKEN_EXPIRE=86400 # token过期时间默认为24小时 86400s
JWT_TOKEN_FRESH_EXPIRE=43200 # token默认12小时可自动刷新
JUDGE_TOKEN=default # 调用判题服务器的token 默认则生成32位随机密钥
EMAIL_SERVER_HOST=smtp.qq.com # 请使用邮件服务的域名或ip
EMAIL_SERVER_PORT=465
EMAIL_USERNMAE=your_email_username
EMAIL_PASSWORD=your_email_password
# 开启虚拟判题请提供对应oj的账号密码 格式为
# username1,username2,...
# password1,password2,...
HDU_ACCOUNT_USERNAME_LIST=username1,username2
HDU_ACCOUNT_PASSWORD_LIST=password1,password2
CF_ACCOUNT_USERNAME_LIST=
CF_ACCOUNT_PASSWORD_LIST=
# 评测数据同步的配置
RSYNC_PASSWORD=hoj123456 # 请修改数据同步密码
# docker network的配置
SUBNET=172.20.0.0/16
```
配置修改保存后,当前路径下启动该服务
```shell
docker-compose up -d
```
根据网速情况,大约十分钟即可安装完毕,全程无需人工干预。
等待命令执行完毕后,查看容器状态
```shell
docker ps -a
```
当看到所有的容器的状态status都为`UP`或`healthy`就代表 OJ 已经启动成功。
4. 接着在另一台服务器上依旧git clone该文件夹下来然后进入`judgeserver`文件夹,修改`.env`的配置
```properties
# nacos的配置
NACOS_HOST=NACOS_HOST # 修改为nacos所在服务的ip,即主服务器的公网ip
NACOS_PORT=8848 # 修改为nacos启动端口号默认为8848
NACOS_USERNAME=root # 修改为nacos的管理员账号
NACOS_PASSWORD=hoj123456 # 修改为nacos的管理员密码
# judgeserver的配置
JUDGE_SERVER_IP=172.20.0.7 # 修改为当前的服务器公网ip
JUDGE_SERVER_PORT=8088 # judgeserver启动端口号
JUDGE_SERVER_NAME=judger-1
MAX_TASK_NUM=-1 # -1表示最大并行任务数为cpu核心数*2
REMOTE_JUDGE_OPEN=true # 当前判题服务器是否开启远程虚拟判题功能
REMOTE_JUDGE_MAX_TASK_NUM=-1 # -1表示最大并行任务数为(cpu核心数*2)*2
# rsync评测数据同步的配置
RSYNC_MASTER_ADDR=127.0.0.1 # 写入主服务器ip
RSYNC_PASSWORD=hoj123456 # 与主服务器的rsync密码一致
```
配置修改保存后,当前路径下启动该服务
```shell
docker-compose up -d
```
> 提示需要开启多台判题机就如当前第4步的操作一样在每台服务器上执行以上的操作即可。
5. 两个服务都启动完成在浏览器输入主服务ip或域名进行访问登录root账号到后台查看服务状态。
## 三、开启Https
- 单机部署:
提供server.crt和server.key证书与密钥文件放置`/standAlone`目录下,与`docker-compose.yml`和`.env`文件放置同一位置,然后修改`docker-compose.yml`中的hoj-frontend的配置
- 分布式部署:
提供server.crt和server.key证书与密钥文件放置`/distributed/main目录下与`docker-compose.yml`和`.env`文件放置同一位置,然后修改`docker-compose.yml`中的hoj-frontend的配置
```yaml
hoj-frontend:
image: registry.cn-shenzhen.aliyuncs.com/hcode/hoj_frontend
container_name: hoj-frontend
restart: always
# 开启https请提供证书
volumes:
- ./server.crt:/etc/nginx/etc/crt/server.crt
- ./server.key:/etc/nginx/etc/crt/server.key
environment:
- SERVER_NAME=localhost # 提供你的域名!!!!
- BACKEND_SERVER_HOST=${BACKEND_HOST:-172.20.0.5} # backend后端服务地址
- BACKEND_SERVER_PORT=${BACKEND_PORT:-6688} # backend后端服务端口号
- USE_HTTPS=true # 使用https请设置为true
ports:
- "80:80"
- "443:443"
networks:
hoj-network:
ipv4_address: 172.20.0.6
```

View File

@ -1,4 +1,4 @@
# redis部署
# Redis部署
## docker部署

View File

@ -190,7 +190,7 @@ docker-compose启动
- "0.0.0.0:873:873"
```
###文件介绍
### 文件介绍
#### 1. rsync.conf

View File

@ -2,9 +2,9 @@
> Judger-SandBox使用的是开源项目[go-judge](https://github.com/criyle/go-judge)Linux版本的可执行文件更多调用方式请自行浏览[go-judge](https://github.com/criyle/go-judge)
> 启动[Judger-SandBox](https://gitee.com/himitzh0730/hoj/blob/master/judger/Judger-SandBox)默认监听5050端口
HOJ用的是java来调用此沙盒请看[JudgeServer-judge](https://gitee.com/himitzh0730/hoj/tree/master/hoj-springboot/JudgeServer/src/main/java/top/hcode/hoj/judge)下的SandboxRun.java
> HOJ用的是java来调用此沙盒请看[JudgeServer-judge](https://gitee.com/himitzh0730/hoj/tree/master/hoj-springboot/JudgeServer/src/main/java/top/hcode/hoj/judge)下的SandboxRun.java
启动[Judger-SandBox](https://gitee.com/himitzh0730/hoj/blob/master/judger/Judger-SandBox)默认监听5050端口
#### 验证是否启动

View File

@ -1,6 +1,10 @@
# 使用简介
- 安全沙盒的简单介绍
- 测试数据的介绍
- 比赛的介绍
- 导入题目的介绍
- 导入用户的介绍
- 讨论管理的介绍
- 特殊判题的程序例子
- 其它待续......

24
docs/docs/use/contest.md Normal file
View File

@ -0,0 +1,24 @@
# 比赛介绍
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210523221519574.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1MzA5Nw==,size_16,color_FFFFFF,t_70)
创建比赛时两种赛制:
- **ACM 模式**
在该模式下,我们严格按照ACM-ICPC的比赛规则来进行Contest设置项中的`Seal Time Rank`即为是否封榜,封榜后将不再刷新排名。可选择比赛结束前半小时,比赛前一小时,比赛全程封榜。
- **OI 模式**
在OI模式下选手的提交将根据得分点来计分多次提交以最后一次提交为准排名规则为多个题目的总分数。同样可以进行封榜操作封榜时段选手不能查看到实时的排行榜数据
注意:管理员可以选择强制刷新,查看实时的排行榜数据!通过`Force Update`来强制刷新榜,且刷新后的榜仅对管理者可见。
比赛权限模式有三种:
- **公开赛**:所有用户都可以查看比赛详情、比赛题目、比赛提交,比赛排行榜、比赛讨论等,且都可以在比赛阶段随时提交。
- **保护赛**:所有用户都可以查看比赛详情、比赛题目、比赛提交,比赛排行榜、比赛讨论等,但在比赛阶段提交需要提供该比赛的密码!
- **私有赛**:仅支持有比赛密码的用户进入比赛,查看查看比赛详情、比赛题目、比赛提交,比赛排行榜、比赛讨论等,包括提交。

View File

@ -0,0 +1,12 @@
# 评论管理
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210523223605573.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1MzA5Nw==,size_16,color_FFFFFF,t_70#pic_center)
- 后台管理员可以查看所有的讨论帖,并且可以选择是否置顶,是否正常显示,删除,查看等
- 后台管理员可以查看对应讨论帖的举报内容
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210523221321418.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1MzA5Nw==,size_16,color_FFFFFF,t_70)

View File

@ -0,0 +1,32 @@
# 导入题目
## 一、导入HOJ题目
待续.....
## 二、导入其它OJ题目
导入HDU、Codeforces题目只需提供该题目的题号便可一键导入
**管理员进入后台,点击题目列表**
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210523223454472.png#pic_center)
然后添加上方的添加按钮
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210523222914722.png)
**在弹出窗中选择OJ名字及题号便可导入**
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210523223042100.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1MzA5Nw==,size_16,color_FFFFFF,t_70)
**注意:**
- HDU的题号一般是 1000以上的数字
- Codeforces的题号是1000A、1000B、这种数字加大写英文字母的格式

View File

@ -0,0 +1,16 @@
## 导入用户
![在这里插入图片描述](https://img-blog.csdnimg.cn/2021052322072728.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1MzA5Nw==,size_16,color_FFFFFF,t_70)
要求如下:
1. 用户数据导入仅支持csv格式的用户数据。
2. 共三列数据: 用户名,密码,邮箱,任一列不能为空,否则该行数据可能导入失败。
3. 第一行不必写(“用户名”,“密码”,“邮箱”)这三个列名。
4. 请导入保存为UTF-8编码的文件否则中文可能会乱码。

View File

@ -1,5 +1,20 @@
# 特殊判题
## 什么是特殊判题?
特殊判题Special Judge是指OJ将使用一个特定的程序来判断提交的程序的输出是不是正确的而不是单纯地看提交的程序的输出是否和标准输出一模一样。
## 使用场景
一般使用Special Judge都是因为题目的答案不唯一更具体一点说的话一般是两种情况
- 题目最终要求输出一个解决方案,而且这个解决方案可能不唯一。
- 题目最终要求输出一个浮点数而且会告诉只要答案和标准答案相差不超过某个较小的数就可以比如0.01。这种情况保留3位小数、4位小数等等都是可以的而且多保留几位小数也没什么坏处。
## 例子:
在创建题目的适合,选择开启特殊判题,编写特殊判题程序,然后编译通过便可。
> 后台对题目使用特殊判题时,请参考以下程序例子
```cpp

37
docs/docs/use/testcase.md Normal file
View File

@ -0,0 +1,37 @@
# 测试用例
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210523215852734.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1MzA5Nw==,size_16,color_FFFFFF,t_70)
**进入后台添加题目上传题目测试用例数据可以选择手动输入、Zip文件上传两种方式**
## 一、手动输入
每次点击`Add Sampple`就可以手动填入该用例的输入与输出该方式比较适合题目数据简单的同时手动输入的题目数据将记录进数据库下次对该题目进行修改可以直接获取然后进行测试数据的修改同时也会在服务器对应的testcase文件夹生成对应的文件。
## 二、文件上传
对于通题目,测试用例文件包括`in`、`out`、`ans`三种拓展名
例如有两组测试用例,则对于普通题目测试用例的文件名分别为`1.in, 1.out1.ans, 2.in, 2.out2.ans`其他形式的文件后台均不识别。
压缩时,请将文件都放在压缩包的根目录,而不是包含在某一个文件夹中,比如正确的格式是:
```bash
├── 1.in
├── 1.out
├── 2.in
├── 2.out
```
```bash
├── 1.in
├── 1.ans
├── 2.in
├── 2.ans
```
然后压缩测试用例到一个zip中
注意:不要在这些文件外面套多一层文件夹,请直接压缩!!!
同时建议:尽量合并测试用例到一个文件中,减少测试用例组数,这会一定程度上提高判题性能。

View File

@ -0,0 +1 @@
{"code":"(window.webpackJsonp=window.webpackJsonp||[]).push([[26],{372:function(t,s,a){\"use strict\";a.r(s);var e=a(41),l=Object(e.a)({},(function(){var t=this,s=t.$createElement,a=t._self._c||s;return a(\"ContentSlotsDistributor\",{attrs:{\"slot-key\":t.$parent.slotKey}},[a(\"h2\",{attrs:{id:\"导入用户\"}},[a(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#导入用户\"}},[t._v(\"#\")]),t._v(\" 导入用户\")]),t._v(\" \"),a(\"p\",[a(\"img\",{attrs:{src:\"https://img-blog.csdnimg.cn/2021052322072728.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1MzA5Nw==,size_16,color_FFFFFF,t_70\",alt:\"在这里插入图片描述\"}})]),t._v(\" \"),a(\"p\",[t._v(\"要求如下:\")]),t._v(\" \"),a(\"ol\",[a(\"li\",[a(\"p\",[t._v(\"用户数据导入仅支持csv格式的用户数据。\")])]),t._v(\" \"),a(\"li\",[a(\"p\",[t._v(\"共三列数据: 用户名,密码,邮箱,任一列不能为空,否则该行数据可能导入失败。\")])]),t._v(\" \"),a(\"li\",[a(\"p\",[t._v(\"第一行不必写(“用户名”,“密码”,“邮箱”)这三个列名。\")])]),t._v(\" \"),a(\"li\",[a(\"p\",[t._v(\"请导入保存为UTF-8编码的文件否则中文可能会乱码。\")])])])])}),[],!1,null,null,null);s.default=l.exports}}]);","extractedComments":[]}

View File

@ -0,0 +1 @@
{"code":"(window.webpackJsonp=window.webpackJsonp||[]).push([[23],{370:function(t,_,s){\"use strict\";s.r(_);var e=s(41),v=Object(e.a)({},(function(){var t=this,_=t.$createElement,s=t._self._c||_;return s(\"ContentSlotsDistributor\",{attrs:{\"slot-key\":t.$parent.slotKey}},[s(\"h1\",{attrs:{id:\"比赛介绍\"}},[s(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#比赛介绍\"}},[t._v(\"#\")]),t._v(\" 比赛介绍\")]),t._v(\" \"),s(\"p\",[s(\"img\",{attrs:{src:\"https://img-blog.csdnimg.cn/20210523221519574.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1MzA5Nw==,size_16,color_FFFFFF,t_70\",alt:\"在这里插入图片描述\"}})]),t._v(\" \"),s(\"p\",[t._v(\"创建比赛时两种赛制:\")]),t._v(\" \"),s(\"ul\",[s(\"li\",[s(\"p\",[s(\"strong\",[t._v(\"ACM 模式\")])]),t._v(\" \"),s(\"p\",[t._v(\"在该模式下,我们严格按照ACM-ICPC的比赛规则来进行Contest设置项中的\"),s(\"code\",[t._v(\"Seal Time Rank\")]),t._v(\"即为是否封榜,封榜后将不再刷新排名。可选择比赛结束前半小时,比赛前一小时,比赛全程封榜。\")])]),t._v(\" \"),s(\"li\",[s(\"p\",[s(\"strong\",[t._v(\"OI 模式\")])]),t._v(\" \"),s(\"p\",[t._v(\"在OI模式下选手的提交将根据得分点来计分多次提交以最后一次提交为准排名规则为多个题目的总分数。同样可以进行封榜操作封榜时段选手不能查看到实时的排行榜数据\")])])]),t._v(\" \"),s(\"p\",[t._v(\"注意:管理员可以选择强制刷新,查看实时的排行榜数据!通过\"),s(\"code\",[t._v(\"Force Update\")]),t._v(\"来强制刷新榜,且刷新后的榜仅对管理者可见。\")]),t._v(\" \"),s(\"p\",[t._v(\"比赛权限模式有三种:\")]),t._v(\" \"),s(\"ul\",[s(\"li\",[s(\"strong\",[t._v(\"公开赛\")]),t._v(\":所有用户都可以查看比赛详情、比赛题目、比赛提交,比赛排行榜、比赛讨论等,且都可以在比赛阶段随时提交。\")]),t._v(\" \"),s(\"li\",[s(\"strong\",[t._v(\"保护赛\")]),t._v(\":所有用户都可以查看比赛详情、比赛题目、比赛提交,比赛排行榜、比赛讨论等,但在比赛阶段提交需要提供该比赛的密码!\")]),t._v(\" \"),s(\"li\",[s(\"strong\",[t._v(\"私有赛\")]),t._v(\":仅支持有比赛密码的用户进入比赛,查看查看比赛详情、比赛题目、比赛提交,比赛排行榜、比赛讨论等,包括提交。\")])])])}),[],!1,null,null,null);_.default=v.exports}}]);","extractedComments":[]}

View File

@ -0,0 +1 @@
{"code":"(window.webpackJsonp=window.webpackJsonp||[]).push([[22],{368:function(t,l,e){\"use strict\";e.r(l);var s=e(41),v=Object(s.a)({},(function(){var t=this,l=t.$createElement,e=t._self._c||l;return e(\"ContentSlotsDistributor\",{attrs:{\"slot-key\":t.$parent.slotKey}},[e(\"h1\",{attrs:{id:\"使用简介\"}},[e(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#使用简介\"}},[t._v(\"#\")]),t._v(\" 使用简介\")]),t._v(\" \"),e(\"ul\",[e(\"li\",[t._v(\"测试数据的介绍\")]),t._v(\" \"),e(\"li\",[t._v(\"比赛的介绍\")]),t._v(\" \"),e(\"li\",[t._v(\"导入题目的介绍\")]),t._v(\" \"),e(\"li\",[t._v(\"导入用户的介绍\")]),t._v(\" \"),e(\"li\",[t._v(\"讨论管理的介绍\")]),t._v(\" \"),e(\"li\",[t._v(\"特殊判题的程序例子\")]),t._v(\" \"),e(\"li\",[t._v(\"其它待续......\")])])])}),[],!1,null,null,null);l.default=v.exports}}]);","extractedComments":[]}

View File

@ -0,0 +1 @@
{"code":"(window.webpackJsonp=window.webpackJsonp||[]).push([[24],{369:function(t,s,a){\"use strict\";a.r(s);var e=a(41),r=Object(e.a)({},(function(){var t=this,s=t.$createElement,a=t._self._c||s;return a(\"ContentSlotsDistributor\",{attrs:{\"slot-key\":t.$parent.slotKey}},[a(\"h1\",{attrs:{id:\"评论管理\"}},[a(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#评论管理\"}},[t._v(\"#\")]),t._v(\" 评论管理\")]),t._v(\" \"),a(\"p\",[a(\"img\",{attrs:{src:\"https://img-blog.csdnimg.cn/20210523223605573.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1MzA5Nw==,size_16,color_FFFFFF,t_70#pic_center\",alt:\"在这里插入图片描述\"}})]),t._v(\" \"),a(\"ul\",[a(\"li\",[a(\"p\",[t._v(\"后台管理员可以查看所有的讨论帖,并且可以选择是否置顶,是否正常显示,删除,查看等\")])]),t._v(\" \"),a(\"li\",[a(\"p\",[t._v(\"后台管理员可以查看对应讨论帖的举报内容\")]),t._v(\" \"),a(\"p\",[a(\"img\",{attrs:{src:\"https://img-blog.csdnimg.cn/20210523221321418.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1MzA5Nw==,size_16,color_FFFFFF,t_70\",alt:\"在这里插入图片描述\"}})])])])])}),[],!1,null,null,null);s.default=r.exports}}]);","extractedComments":[]}

View File

@ -0,0 +1 @@
{"code":"(window.webpackJsonp=window.webpackJsonp||[]).push([[28],{373:function(s,a,t){\"use strict\";t.r(a);var n=t(41),e=Object(n.a)({},(function(){var s=this,a=s.$createElement,t=s._self._c||a;return t(\"ContentSlotsDistributor\",{attrs:{\"slot-key\":s.$parent.slotKey}},[t(\"h1\",{attrs:{id:\"测试用例\"}},[t(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#测试用例\"}},[s._v(\"#\")]),s._v(\" 测试用例\")]),s._v(\" \"),t(\"p\",[t(\"img\",{attrs:{src:\"https://img-blog.csdnimg.cn/20210523215852734.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1MzA5Nw==,size_16,color_FFFFFF,t_70\",alt:\"在这里插入图片描述\"}})]),s._v(\" \"),t(\"p\",[t(\"strong\",[s._v(\"进入后台添加题目上传题目测试用例数据可以选择手动输入、Zip文件上传两种方式\")])]),s._v(\" \"),t(\"h2\",{attrs:{id:\"一、手动输入\"}},[t(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#一、手动输入\"}},[s._v(\"#\")]),s._v(\" 一、手动输入\")]),s._v(\" \"),t(\"p\",[s._v(\"每次点击\"),t(\"code\",[s._v(\"Add Sampple\")]),s._v(\"就可以手动填入该用例的输入与输出该方式比较适合题目数据简单的同时手动输入的题目数据将记录进数据库下次对该题目进行修改可以直接获取然后进行测试数据的修改同时也会在服务器对应的testcase文件夹生成对应的文件。\")]),s._v(\" \"),t(\"h2\",{attrs:{id:\"二、文件上传\"}},[t(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#二、文件上传\"}},[s._v(\"#\")]),s._v(\" 二、文件上传\")]),s._v(\" \"),t(\"p\",[s._v(\"对于通题目,测试用例文件包括\"),t(\"code\",[s._v(\"in\")]),s._v(\"、\"),t(\"code\",[s._v(\"out\")]),s._v(\"、\"),t(\"code\",[s._v(\"ans\")]),s._v(\"三种拓展名\")]),s._v(\" \"),t(\"p\",[s._v(\"例如有两组测试用例,则对于普通题目测试用例的文件名分别为\"),t(\"code\",[s._v(\"1.in, 1.out1.ans, 2.in, 2.out2.ans\")]),s._v(\"其他形式的文件后台均不识别。\")]),s._v(\" \"),t(\"p\",[s._v(\"压缩时,请将文件都放在压缩包的根目录,而不是包含在某一个文件夹中,比如正确的格式是:\")]),s._v(\" \"),t(\"div\",{staticClass:\"language-bash line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-bash\"}},[t(\"code\",[s._v(\"├── \"),t(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"1\")]),s._v(\".in\\n├── \"),t(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"1\")]),s._v(\".out\\n├── \"),t(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"2\")]),s._v(\".in\\n├── \"),t(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"2\")]),s._v(\".out\\n\")])]),s._v(\" \"),t(\"div\",{staticClass:\"line-numbers-wrapper\"},[t(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"2\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"3\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"4\")]),t(\"br\")])]),t(\"div\",{staticClass:\"language-bash line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-bash\"}},[t(\"code\",[s._v(\"├── \"),t(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"1\")]),s._v(\".in\\n├── \"),t(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"1\")]),s._v(\".ans\\n├── \"),t(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"2\")]),s._v(\".in\\n├── \"),t(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"2\")]),s._v(\".ans\\n\")])]),s._v(\" \"),t(\"div\",{staticClass:\"line-numbers-wrapper\"},[t(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"2\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"3\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"4\")]),t(\"br\")])]),t(\"p\",[s._v(\"然后压缩测试用例到一个zip中\")]),s._v(\" \"),t(\"p\",[s._v(\"注意:不要在这些文件外面套多一层文件夹,请直接压缩!!!\")]),s._v(\" \"),t(\"p\",[s._v(\"同时建议:尽量合并测试用例到一个文件中,减少测试用例组数,这会一定程度上提高判题性能。\")])])}),[],!1,null,null,null);a.default=e.exports}}]);","extractedComments":[]}

View File

@ -0,0 +1 @@
{"code":"(window.webpackJsonp=window.webpackJsonp||[]).push([[25],{371:function(t,s,a){\"use strict\";a.r(s);var r=a(41),e=Object(r.a)({},(function(){var t=this,s=t.$createElement,a=t._self._c||s;return a(\"ContentSlotsDistributor\",{attrs:{\"slot-key\":t.$parent.slotKey}},[a(\"h1\",{attrs:{id:\"导入题目\"}},[a(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#导入题目\"}},[t._v(\"#\")]),t._v(\" 导入题目\")]),t._v(\" \"),a(\"h2\",{attrs:{id:\"一、导入hoj题目\"}},[a(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#一、导入hoj题目\"}},[t._v(\"#\")]),t._v(\" 一、导入HOJ题目\")]),t._v(\" \"),a(\"p\",[t._v(\"待续.....\")]),t._v(\" \"),a(\"h2\",{attrs:{id:\"二、导入其它oj题目\"}},[a(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#二、导入其它oj题目\"}},[t._v(\"#\")]),t._v(\" 二、导入其它OJ题目\")]),t._v(\" \"),a(\"p\",[t._v(\"导入HDU、Codeforces题目只需提供该题目的题号便可一键导入\")]),t._v(\" \"),a(\"p\",[a(\"strong\",[t._v(\"管理员进入后台,点击题目列表\")])]),t._v(\" \"),a(\"p\",[a(\"img\",{attrs:{src:\"https://img-blog.csdnimg.cn/20210523223454472.png#pic_center\",alt:\"在这里插入图片描述\"}})]),t._v(\" \"),a(\"p\",[t._v(\"然后添加上方的添加按钮\")]),t._v(\" \"),a(\"p\",[a(\"img\",{attrs:{src:\"https://img-blog.csdnimg.cn/20210523222914722.png\",alt:\"在这里插入图片描述\"}})]),t._v(\" \"),a(\"p\",[a(\"strong\",[t._v(\"在弹出窗中选择OJ名字及题号便可导入\")])]),t._v(\" \"),a(\"p\",[a(\"img\",{attrs:{src:\"https://img-blog.csdnimg.cn/20210523223042100.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1MzA5Nw==,size_16,color_FFFFFF,t_70\",alt:\"在这里插入图片描述\"}})]),t._v(\" \"),a(\"p\",[a(\"strong\",[t._v(\"注意:\")])]),t._v(\" \"),a(\"ul\",[a(\"li\",[t._v(\"HDU的题号一般是 1000以上的数字\")]),t._v(\" \"),a(\"li\",[t._v(\"Codeforces的题号是1000A、1000B、这种数字加大写英文字母的格式\")])])])}),[],!1,null,null,null);s.default=e.exports}}]);","extractedComments":[]}

View File

@ -0,0 +1 @@
{"code":"(window.webpackJsonp=window.webpackJsonp||[]).push([[17],{364:function(t,s,i){\"use strict\";i.r(s);var e=i(41),n=Object(e.a)({},(function(){var t=this.$createElement,s=this._self._c||t;return s(\"ContentSlotsDistributor\",{attrs:{\"slot-key\":this.$parent.slotKey}},[s(\"h1\",{attrs:{id:\"开发简介\"}},[s(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#开发简介\"}},[this._v(\"#\")]),this._v(\" 开发简介\")]),this._v(\" \"),s(\"ul\",[s(\"li\",[this._v(\"数据库表说明\")]),this._v(\" \"),s(\"li\",[this._v(\"其它待续.......\")])])])}),[],!1,null,null,null);s.default=n.exports}}]);","extractedComments":[]}

View File

@ -0,0 +1 @@
{"code":"(window.webpackJsonp=window.webpackJsonp||[]).push([[3],{318:function(t,e,n){},346:function(t,e,n){\"use strict\";n(318)},375:function(t,e,n){\"use strict\";n.r(e);var i={functional:!0,props:{type:{type:String,default:\"tip\"},text:String,vertical:{type:String,default:\"top\"}},render:function(t,e){var n=e.props,i=e.slots;return t(\"span\",{class:[\"badge\",n.type],style:{verticalAlign:n.vertical}},n.text||i().default)}},r=(n(346),n(41)),p=Object(r.a)(i,void 0,void 0,!1,null,\"69367c83\",null);e.default=p.exports}}]);","extractedComments":[]}

View File

@ -0,0 +1 @@
{"code":"(window.webpackJsonp=window.webpackJsonp||[]).push([[15],{360:function(s,a,t){\"use strict\";t.r(a);var e=t(41),r=Object(e.a)({},(function(){var s=this,a=s.$createElement,t=s._self._c||a;return t(\"ContentSlotsDistributor\",{attrs:{\"slot-key\":s.$parent.slotKey}},[t(\"h1\",{attrs:{id:\"redis部署\"}},[t(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#redis部署\"}},[s._v(\"#\")]),s._v(\" Redis部署\")]),s._v(\" \"),t(\"h2\",{attrs:{id:\"docker部署\"}},[t(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#docker部署\"}},[s._v(\"#\")]),s._v(\" docker部署\")]),s._v(\" \"),t(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[t(\"code\",[s._v(\"docker run -d --name redis -p \"),t(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"6379\")]),s._v(\":6379 \\n-v /hoj/data/redis/data:/data \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"\\\\\")]),s._v(\"\\n--restart\"),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"=\")]),t(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"always\"')]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"\\\\\")]),s._v(\"\\nredis \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"\\\\\")]),s._v(\"\\n--requirepass \"),t(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"redis_password\"')]),s._v(\" \\n\")])]),s._v(\" \"),t(\"div\",{staticClass:\"line-numbers-wrapper\"},[t(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"2\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"3\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"4\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"5\")]),t(\"br\")])]),t(\"h2\",{attrs:{id:\"常规部署\"}},[t(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#常规部署\"}},[s._v(\"#\")]),s._v(\" 常规部署\")]),s._v(\" \"),t(\"p\",[s._v(\"请自行百度。。\")])])}),[],!1,null,null,null);a.default=r.exports}}]);","extractedComments":[]}

View File

@ -0,0 +1,2 @@
0e7f20520172a2a9024e426babc2bf6c7c74f858 {"key":"{\"terser\":\"4.8.0\",\"node_version\":\"v12.18.1\",\"terser-webpack-plugin\":\"1.4.5\",\"terser-webpack-plugin-options\":{\"test\":new RegExp(\"\\\\.m?js(\\\\?.*)?$\", \"i\"),\"chunkFilter\":() => true,\"warningsFilter\":() => true,\"extractComments\":false,\"sourceMap\":false,\"cache\":true,\"cacheKeys\":defaultCacheKeys => defaultCacheKeys,\"parallel\":true,\"include\":undefined,\"exclude\":undefined,\"minify\":undefined,\"terserOptions\":{\"output\":{\"comments\":new RegExp(\"^\\\\**!|@preserve|@license|@cc_on\", \"i\")}}},\"hash\":\"55dd64ff10eba0bcb8275577553e3df9\"}","integrity":"sha512-gHjxKK+JxD+UyAzHUV9bDKekM3ZXlyZyHS5xtIRg2+FvltXmQaOmzZ2zPdkFkasyLXl80G+vHHVhzutMguDSSQ==","time":1621780818348,"size":3548}

View File

@ -0,0 +1,2 @@
4a712814a579a5563e6e7e35bc28144aeaad72c1 {"key":"{\"terser\":\"4.8.0\",\"node_version\":\"v12.18.1\",\"terser-webpack-plugin\":\"1.4.5\",\"terser-webpack-plugin-options\":{\"test\":new RegExp(\"\\\\.m?js(\\\\?.*)?$\", \"i\"),\"chunkFilter\":() => true,\"warningsFilter\":() => true,\"extractComments\":false,\"sourceMap\":false,\"cache\":true,\"cacheKeys\":defaultCacheKeys => defaultCacheKeys,\"parallel\":true,\"include\":undefined,\"exclude\":undefined,\"minify\":undefined,\"terserOptions\":{\"output\":{\"comments\":new RegExp(\"^\\\\**!|@preserve|@license|@cc_on\", \"i\")}}},\"hash\":\"66e54d18dce279a0722c3b7a1dd0f567\"}","integrity":"sha512-qDO55neCaRS7r2ujNT93AXaPE5XkWLCSRwLhp9U3IxlCaPzzSKne3idrXcBzFcKMkipwtLAQsyYHnc3MCrS+YA==","time":1621780818148,"size":46250}

View File

@ -0,0 +1,2 @@
bc623e085245a629034aaecfd2d5e1ef76661cef {"key":"{\"terser\":\"4.8.0\",\"node_version\":\"v12.18.1\",\"terser-webpack-plugin\":\"1.4.5\",\"terser-webpack-plugin-options\":{\"test\":new RegExp(\"\\\\.m?js(\\\\?.*)?$\", \"i\"),\"chunkFilter\":() => true,\"warningsFilter\":() => true,\"extractComments\":false,\"sourceMap\":false,\"cache\":true,\"cacheKeys\":defaultCacheKeys => defaultCacheKeys,\"parallel\":true,\"include\":undefined,\"exclude\":undefined,\"minify\":undefined,\"terserOptions\":{\"output\":{\"comments\":new RegExp(\"^\\\\**!|@preserve|@license|@cc_on\", \"i\")}}},\"hash\":\"4e7204a736b62021c4fca561b8674bce\"}","integrity":"sha512-4L0yAm2vRgH3WF92iIZYjoXdxWWxwU1vcEQTlW6VkTmHk7gvJAgHEgN4nAFX4Fz8sjr64fGGOJBcb+AeOIYzFQ==","time":1621780817369,"size":597}

View File

@ -0,0 +1,2 @@
94d21600c413dcb6d69f6ce9162b5db6e922b612 {"key":"{\"terser\":\"4.8.0\",\"node_version\":\"v12.18.1\",\"terser-webpack-plugin\":\"1.4.5\",\"terser-webpack-plugin-options\":{\"test\":new RegExp(\"\\\\.m?js(\\\\?.*)?$\", \"i\"),\"chunkFilter\":() => true,\"warningsFilter\":() => true,\"extractComments\":false,\"sourceMap\":false,\"cache\":true,\"cacheKeys\":defaultCacheKeys => defaultCacheKeys,\"parallel\":true,\"include\":undefined,\"exclude\":undefined,\"minify\":undefined,\"terserOptions\":{\"output\":{\"comments\":new RegExp(\"^\\\\**!|@preserve|@license|@cc_on\", \"i\")}}},\"hash\":\"c7bbf46065761a7aea04bda220936110\"}","integrity":"sha512-8gTQE3chiDa0gNH3O7Cp0iOfHiZZNsYjhuiszcobc51WJUxE13O6SlbQm/SqmZj/YK5pTB4tl7x8+yGYNkNcWw==","time":1621780817098,"size":2049}

View File

@ -0,0 +1,2 @@
c48b7aad19ae65d66321fb85a043eb9ce5d73adc {"key":"{\"terser\":\"4.8.0\",\"node_version\":\"v12.18.1\",\"terser-webpack-plugin\":\"1.4.5\",\"terser-webpack-plugin-options\":{\"test\":new RegExp(\"\\\\.m?js(\\\\?.*)?$\", \"i\"),\"chunkFilter\":() => true,\"warningsFilter\":() => true,\"extractComments\":false,\"sourceMap\":false,\"cache\":true,\"cacheKeys\":defaultCacheKeys => defaultCacheKeys,\"parallel\":true,\"include\":undefined,\"exclude\":undefined,\"minify\":undefined,\"terserOptions\":{\"output\":{\"comments\":new RegExp(\"^\\\\**!|@preserve|@license|@cc_on\", \"i\")}}},\"hash\":\"91bfdd238ef1eccdaf623ff9618f1a21\"}","integrity":"sha512-IeBNpD4fKpECHARF6DByrN3f6dftgaso1QsUAzkj0CFHm/U3YjgY6j/Ybf4nYE4oUAvmRkK513siFtCW8uuPhA==","time":1621780818267,"size":1095}

View File

@ -0,0 +1,2 @@
ec0f3eb5e563354d47a2d560b1eb6aaba585239c {"key":"{\"terser\":\"4.8.0\",\"node_version\":\"v12.18.1\",\"terser-webpack-plugin\":\"1.4.5\",\"terser-webpack-plugin-options\":{\"test\":new RegExp(\"\\\\.m?js(\\\\?.*)?$\", \"i\"),\"chunkFilter\":() => true,\"warningsFilter\":() => true,\"extractComments\":false,\"sourceMap\":false,\"cache\":true,\"cacheKeys\":defaultCacheKeys => defaultCacheKeys,\"parallel\":true,\"include\":undefined,\"exclude\":undefined,\"minify\":undefined,\"terserOptions\":{\"output\":{\"comments\":new RegExp(\"^\\\\**!|@preserve|@license|@cc_on\", \"i\")}}},\"hash\":\"2ad34befb62af93b26c3630b7d53e96e\"}","integrity":"sha512-ZSq4oq2tDVywVwzDLLiskRLyFzEIWv60ErU7SEhkVW0MSFR/TTT9XReRJyj7LcmSWNcK9Eh7kYUSuYbE4Ik5gw==","time":1621780817347,"size":9709}

View File

@ -0,0 +1,2 @@
460e1763e0ba35d41f3ca9bc55a226c32f9db6a6 {"key":"{\"terser\":\"4.8.0\",\"node_version\":\"v12.18.1\",\"terser-webpack-plugin\":\"1.4.5\",\"terser-webpack-plugin-options\":{\"test\":new RegExp(\"\\\\.m?js(\\\\?.*)?$\", \"i\"),\"chunkFilter\":() => true,\"warningsFilter\":() => true,\"extractComments\":false,\"sourceMap\":false,\"cache\":true,\"cacheKeys\":defaultCacheKeys => defaultCacheKeys,\"parallel\":true,\"include\":undefined,\"exclude\":undefined,\"minify\":undefined,\"terserOptions\":{\"output\":{\"comments\":new RegExp(\"^\\\\**!|@preserve|@license|@cc_on\", \"i\")}}},\"hash\":\"26786aa36e3042f6ab27ea74ef062ef7\"}","integrity":"sha512-r3gbTNKzTlRWgEw1cD0MSJ0r+fpKnLQap2lmyVT4b4INWQaEC4Kf/bxf/4fr5NI/z5uU3HcITFm3OluU8vWD2A==","time":1621780818268,"size":1793}

View File

@ -0,0 +1,2 @@
d9660b51760185ba70f13f9b8392af515dec0540 {"key":"{\"terser\":\"4.8.0\",\"node_version\":\"v12.18.1\",\"terser-webpack-plugin\":\"1.4.5\",\"terser-webpack-plugin-options\":{\"test\":new RegExp(\"\\\\.m?js(\\\\?.*)?$\", \"i\"),\"chunkFilter\":() => true,\"warningsFilter\":() => true,\"extractComments\":false,\"sourceMap\":false,\"cache\":true,\"cacheKeys\":defaultCacheKeys => defaultCacheKeys,\"parallel\":true,\"include\":undefined,\"exclude\":undefined,\"minify\":undefined,\"terserOptions\":{\"output\":{\"comments\":new RegExp(\"^\\\\**!|@preserve|@license|@cc_on\", \"i\")}}},\"hash\":\"d5b8a4a240e58480dd83ea30e2e7fe9e\"}","integrity":"sha512-Q4HKOEYOppQXw68X+Wjh5iFYYi3VOj1SojiD+4gxaBACUBYzwjGv2KmxC5zrRUSZYMFmrmDdlLWPnqZXHhjzcw==","time":1621780818104,"size":7479}

View File

@ -0,0 +1,2 @@
4bdf1b88dd861942f8cec1e2df0c46d967e23edb {"key":"{\"terser\":\"4.8.0\",\"node_version\":\"v12.18.1\",\"terser-webpack-plugin\":\"1.4.5\",\"terser-webpack-plugin-options\":{\"test\":new RegExp(\"\\\\.m?js(\\\\?.*)?$\", \"i\"),\"chunkFilter\":() => true,\"warningsFilter\":() => true,\"extractComments\":false,\"sourceMap\":false,\"cache\":true,\"cacheKeys\":defaultCacheKeys => defaultCacheKeys,\"parallel\":true,\"include\":undefined,\"exclude\":undefined,\"minify\":undefined,\"terserOptions\":{\"output\":{\"comments\":new RegExp(\"^\\\\**!|@preserve|@license|@cc_on\", \"i\")}}},\"hash\":\"636fd0d00054700256d1d801e13932fa\"}","integrity":"sha512-BuJGEl7ekgxaKHk9VR+UVCQEJkndML7B8f0ZPj3qux8y5Ojtdca3OwIO33i8/ETYayR/3lTh2HOT7NSUothbrA==","time":1621780817752,"size":36840}

View File

@ -0,0 +1,2 @@
6eee43357d42ee76ccf02c3e699f88ad80ac4e75 {"key":"{\"terser\":\"4.8.0\",\"node_version\":\"v12.18.1\",\"terser-webpack-plugin\":\"1.4.5\",\"terser-webpack-plugin-options\":{\"test\":new RegExp(\"\\\\.m?js(\\\\?.*)?$\", \"i\"),\"chunkFilter\":() => true,\"warningsFilter\":() => true,\"extractComments\":false,\"sourceMap\":false,\"cache\":true,\"cacheKeys\":defaultCacheKeys => defaultCacheKeys,\"parallel\":true,\"include\":undefined,\"exclude\":undefined,\"minify\":undefined,\"terserOptions\":{\"output\":{\"comments\":new RegExp(\"^\\\\**!|@preserve|@license|@cc_on\", \"i\")}}},\"hash\":\"cbd7d48b5aa449121ebd8892e273990f\"}","integrity":"sha512-pD1m8mk2XxPdm1KmDHiuMZ22Zj+MOtN5BBrC7KED3kguyLAg2TRlO/KkS+hWwjmnLBCVmXEM3w6vAzUS4QzFmQ==","time":1621780818652,"size":77565}

View File

@ -0,0 +1,2 @@
e720041f02b7a7d8aa3a896f9c8259f6cd6fa5ba {"key":"{\"terser\":\"4.8.0\",\"node_version\":\"v12.18.1\",\"terser-webpack-plugin\":\"1.4.5\",\"terser-webpack-plugin-options\":{\"test\":new RegExp(\"\\\\.m?js(\\\\?.*)?$\", \"i\"),\"chunkFilter\":() => true,\"warningsFilter\":() => true,\"extractComments\":false,\"sourceMap\":false,\"cache\":true,\"cacheKeys\":defaultCacheKeys => defaultCacheKeys,\"parallel\":true,\"include\":undefined,\"exclude\":undefined,\"minify\":undefined,\"terserOptions\":{\"output\":{\"comments\":new RegExp(\"^\\\\**!|@preserve|@license|@cc_on\", \"i\")}}},\"hash\":\"f35428589b387136fd2221ec4797ab8e\"}","integrity":"sha512-7X+CA/UisLPiQ4jjQsTLFEgefytAkaq7A3YYIu/iJ0GeT7BZXiVSnGD8psjushZBSvLC/8MlXUYgbFiQI87DyQ==","time":1621780816831,"size":557}

View File

@ -0,0 +1,2 @@
c3e517db176ab1dee356400452fe923041a8119a {"key":"{\"terser\":\"4.8.0\",\"node_version\":\"v12.18.1\",\"terser-webpack-plugin\":\"1.4.5\",\"terser-webpack-plugin-options\":{\"test\":new RegExp(\"\\\\.m?js(\\\\?.*)?$\", \"i\"),\"chunkFilter\":() => true,\"warningsFilter\":() => true,\"extractComments\":false,\"sourceMap\":false,\"cache\":true,\"cacheKeys\":defaultCacheKeys => defaultCacheKeys,\"parallel\":true,\"include\":undefined,\"exclude\":undefined,\"minify\":undefined,\"terserOptions\":{\"output\":{\"comments\":new RegExp(\"^\\\\**!|@preserve|@license|@cc_on\", \"i\")}}},\"hash\":\"754f5ce19dfdb8ea793e215c0cc2096b\"}","integrity":"sha512-J1CoPdcJDGvMon97TytcCAVKLASVzKMWPnq+LMP2cVqs8PEiNnbubKYdDAMd7jlze6CG6cW3vsvBoVzenvzjjQ==","time":1621780818479,"size":18120}

View File

@ -0,0 +1,2 @@
bfd7da685c8ba6a88607a82fa45bf3dd9560c8e2 {"key":"{\"terser\":\"4.8.0\",\"node_version\":\"v12.18.1\",\"terser-webpack-plugin\":\"1.4.5\",\"terser-webpack-plugin-options\":{\"test\":new RegExp(\"\\\\.m?js(\\\\?.*)?$\", \"i\"),\"chunkFilter\":() => true,\"warningsFilter\":() => true,\"extractComments\":false,\"sourceMap\":false,\"cache\":true,\"cacheKeys\":defaultCacheKeys => defaultCacheKeys,\"parallel\":true,\"include\":undefined,\"exclude\":undefined,\"minify\":undefined,\"terserOptions\":{\"output\":{\"comments\":new RegExp(\"^\\\\**!|@preserve|@license|@cc_on\", \"i\")}}},\"hash\":\"6cbf4f7ef6bab3bb675f2398f293577f\"}","integrity":"sha512-WOGP78cjV0xfo1m//3oHvYMDHAi5+UZL8kSVHa226jhWT3jcKRC+5zfdYb74AuBUydiNUiZpM6AB6tS3HUxxGA==","time":1621780818249,"size":4559}

View File

@ -0,0 +1,2 @@
7fc4f2c5456b0206af1b710e3545718184d80422 {"key":"{\"terser\":\"4.8.0\",\"node_version\":\"v12.18.1\",\"terser-webpack-plugin\":\"1.4.5\",\"terser-webpack-plugin-options\":{\"test\":new RegExp(\"\\\\.m?js(\\\\?.*)?$\", \"i\"),\"chunkFilter\":() => true,\"warningsFilter\":() => true,\"extractComments\":false,\"sourceMap\":false,\"cache\":true,\"cacheKeys\":defaultCacheKeys => defaultCacheKeys,\"parallel\":true,\"include\":undefined,\"exclude\":undefined,\"minify\":undefined,\"terserOptions\":{\"output\":{\"comments\":new RegExp(\"^\\\\**!|@preserve|@license|@cc_on\", \"i\")}}},\"hash\":\"5e75bbd87b3ad71b9de3b9602fcfe1cc\"}","integrity":"sha512-fqAbz0MmuZ6B545hhe85dc4IbL8RzHsVJl2B/dGofkGQnlKmxms1tmy5JBkrsiPAqaYjcJUU3mNhDS6sZA+MUQ==","time":1621780817916,"size":34511}

Some files were not shown because too many files have changed in this diff Show More