更新部署文档
This commit is contained in:
parent
15eb642de5
commit
3f469dec40
|
@ -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'
|
||||
]
|
||||
},
|
||||
|
|
|
@ -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
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
File diff suppressed because one or more lines are too long
|
@ -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
|
@ -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
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -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
File diff suppressed because one or more lines are too long
|
@ -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
|
@ -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}}]);
|
|
@ -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}}]);
|
|
@ -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}}]);
|
|
@ -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
|
@ -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.out(1.ans), 2.in, 2.out(2.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}}]);
|
|
@ -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
File diff suppressed because one or more lines are too long
|
@ -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">&&</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">&&</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-redis,hoj-nacos,hoj-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">"3"</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>
|
||||
|
|
|
@ -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">&&</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">&&</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">"80:80"</span>
|
||||
<span class="token punctuation">-</span> <span class="token string">"443:443"</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>
|
|
@ -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>
|
||||
|
|
|
@ -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>单个部署的顺序是:redis,mysql,rsync,frontend >> nacos >> backend,judgeserver</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">&&</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">&&</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">"80:80"</span>
|
||||
<span class="token punctuation">-</span> <span class="token string">"443:443"</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>单个部署的顺序是:redis,mysql,rsync,frontend >> nacos >> backend,judgeserver</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
|
@ -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">&&</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">&&</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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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">"always"</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>
|
||||
|
|
|
@ -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">"0.0.0.0:873: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> <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
|
@ -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
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
||||
|
|
|
@ -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"><iostream></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"><iostream></span></span>
|
||||
<span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span><span class="token string"><cstdio></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>
|
||||
|
|
|
@ -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.out(1.ans), 2.in, 2.out(2.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>
|
|
@ -88,114 +88,9 @@ Windows 下的安装仅供体验,勿在生产环境使用。如有必要,请
|
|||
|
||||
|
||||
|
||||
## 单个部署
|
||||
## 单个部署顺序
|
||||
|
||||
单个部署的顺序是:redis,mysql,rsync,frontend >> nacos >> backend,judgeserver
|
||||
|
||||
|
||||
|
||||
## 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
|
||||
```
|
||||
|
|
|
@ -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
|
||||
```
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
# redis部署
|
||||
# Redis部署
|
||||
|
||||
## docker部署
|
||||
|
||||
|
|
|
@ -190,7 +190,7 @@ docker-compose启动
|
|||
- "0.0.0.0:873:873"
|
||||
```
|
||||
|
||||
###文件介绍
|
||||
### 文件介绍
|
||||
|
||||
#### 1. rsync.conf
|
||||
|
||||
|
|
|
@ -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端口
|
||||
|
||||
#### 验证是否启动
|
||||
|
|
@ -1,6 +1,10 @@
|
|||
# 使用简介
|
||||
|
||||
- 安全沙盒的简单介绍
|
||||
- 测试数据的介绍
|
||||
- 比赛的介绍
|
||||
- 导入题目的介绍
|
||||
- 导入用户的介绍
|
||||
- 讨论管理的介绍
|
||||
- 特殊判题的程序例子
|
||||
- 其它待续......
|
||||
|
||||
|
|
|
@ -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`来强制刷新榜,且刷新后的榜仅对管理者可见。
|
||||
|
||||
比赛权限模式有三种:
|
||||
|
||||
- **公开赛**:所有用户都可以查看比赛详情、比赛题目、比赛提交,比赛排行榜、比赛讨论等,且都可以在比赛阶段随时提交。
|
||||
- **保护赛**:所有用户都可以查看比赛详情、比赛题目、比赛提交,比赛排行榜、比赛讨论等,但在比赛阶段提交需要提供该比赛的密码!
|
||||
- **私有赛**:仅支持有比赛密码的用户进入比赛,查看查看比赛详情、比赛题目、比赛提交,比赛排行榜、比赛讨论等,包括提交。
|
||||
|
|
@ -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)
|
||||
|
|
@ -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、这种数字加大写英文字母的格式
|
|
@ -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编码的文件,否则中文可能会乱码。
|
||||
|
|
@ -1,5 +1,20 @@
|
|||
# 特殊判题
|
||||
|
||||
## 什么是特殊判题?
|
||||
|
||||
特殊判题(Special Judge)是指OJ将使用一个特定的程序来判断提交的程序的输出是不是正确的,而不是单纯地看提交的程序的输出是否和标准输出一模一样。
|
||||
|
||||
## 使用场景
|
||||
|
||||
一般使用Special Judge都是因为题目的答案不唯一,更具体一点说的话一般是两种情况:
|
||||
|
||||
- 题目最终要求输出一个解决方案,而且这个解决方案可能不唯一。
|
||||
- 题目最终要求输出一个浮点数,而且会告诉只要答案和标准答案相差不超过某个较小的数就可以,比如0.01。这种情况保留3位小数、4位小数等等都是可以的,而且多保留几位小数也没什么坏处。
|
||||
|
||||
## 例子:
|
||||
|
||||
在创建题目的适合,选择开启特殊判题,编写特殊判题程序,然后编译通过便可。
|
||||
|
||||
> 后台对题目使用特殊判题时,请参考以下程序例子
|
||||
|
||||
```cpp
|
||||
|
|
|
@ -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.out(1.ans), 2.in, 2.out(2.ans)`其他形式的文件后台均不识别。
|
||||
|
||||
压缩时,请将文件都放在压缩包的根目录,而不是包含在某一个文件夹中,比如正确的格式是:
|
||||
|
||||
```bash
|
||||
├── 1.in
|
||||
├── 1.out
|
||||
├── 2.in
|
||||
├── 2.out
|
||||
```
|
||||
|
||||
```bash
|
||||
├── 1.in
|
||||
├── 1.ans
|
||||
├── 2.in
|
||||
├── 2.ans
|
||||
```
|
||||
|
||||
然后压缩测试用例到一个zip中
|
||||
|
||||
注意:不要在这些文件外面套多一层文件夹,请直接压缩!!!
|
||||
|
||||
同时建议:尽量合并测试用例到一个文件中,减少测试用例组数,这会一定程度上提高判题性能。
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -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":[]}
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -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":[]}
|
|
@ -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":[]}
|
|
@ -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":[]}
|
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
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -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.out(1.ans), 2.in, 2.out(2.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":[]}
|
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
|
@ -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":[]}
|
File diff suppressed because one or more lines are too long
|
@ -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":[]}
|
|
@ -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":[]}
|
|
@ -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":[]}
|
2
docs/node_modules/.cache/terser-webpack-plugin/index-v5/0a/20/c10146d926a60013b5a837280005ffcc29693e5bdaba55578100ff47e5db
generated
vendored
Normal file
2
docs/node_modules/.cache/terser-webpack-plugin/index-v5/0a/20/c10146d926a60013b5a837280005ffcc29693e5bdaba55578100ff47e5db
generated
vendored
Normal 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}
|
2
docs/node_modules/.cache/terser-webpack-plugin/index-v5/15/7b/69ccae71b90913f9b23c55f7f9be15e90f171996c1551031f4dca2915a6a
generated
vendored
Normal file
2
docs/node_modules/.cache/terser-webpack-plugin/index-v5/15/7b/69ccae71b90913f9b23c55f7f9be15e90f171996c1551031f4dca2915a6a
generated
vendored
Normal 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}
|
2
docs/node_modules/.cache/terser-webpack-plugin/index-v5/17/f1/19851af6d12d5de0511b4d95e6bde42a5725be388422fd4c0c5b5d31a7ac
generated
vendored
Normal file
2
docs/node_modules/.cache/terser-webpack-plugin/index-v5/17/f1/19851af6d12d5de0511b4d95e6bde42a5725be388422fd4c0c5b5d31a7ac
generated
vendored
Normal 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}
|
2
docs/node_modules/.cache/terser-webpack-plugin/index-v5/1b/96/814f4f4b3fd99190660214df944763ab181249f867e5e790c18bafb1cd70
generated
vendored
Normal file
2
docs/node_modules/.cache/terser-webpack-plugin/index-v5/1b/96/814f4f4b3fd99190660214df944763ab181249f867e5e790c18bafb1cd70
generated
vendored
Normal 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}
|
2
docs/node_modules/.cache/terser-webpack-plugin/index-v5/28/77/c5177404fe8d67a9c1aae3b15904bd5b01c76999c00504130a69999ed1cf
generated
vendored
Normal file
2
docs/node_modules/.cache/terser-webpack-plugin/index-v5/28/77/c5177404fe8d67a9c1aae3b15904bd5b01c76999c00504130a69999ed1cf
generated
vendored
Normal 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}
|
2
docs/node_modules/.cache/terser-webpack-plugin/index-v5/2d/fe/2b012120903e7b5e88767f28dacf17e9c007a6244457c308f1f142d074cc
generated
vendored
Normal file
2
docs/node_modules/.cache/terser-webpack-plugin/index-v5/2d/fe/2b012120903e7b5e88767f28dacf17e9c007a6244457c308f1f142d074cc
generated
vendored
Normal 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}
|
2
docs/node_modules/.cache/terser-webpack-plugin/index-v5/3a/5c/363f94ef98675385a42573a136b04af458a3d0bacc15a5c2ebed7a693e7f
generated
vendored
Normal file
2
docs/node_modules/.cache/terser-webpack-plugin/index-v5/3a/5c/363f94ef98675385a42573a136b04af458a3d0bacc15a5c2ebed7a693e7f
generated
vendored
Normal 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}
|
2
docs/node_modules/.cache/terser-webpack-plugin/index-v5/3f/1a/770dbc52133104710049783d298eba817c03bef6f57a4f8c98b658bfa079
generated
vendored
Normal file
2
docs/node_modules/.cache/terser-webpack-plugin/index-v5/3f/1a/770dbc52133104710049783d298eba817c03bef6f57a4f8c98b658bfa079
generated
vendored
Normal 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}
|
2
docs/node_modules/.cache/terser-webpack-plugin/index-v5/42/17/630f7d4d7a3acc3be9040d0c8a1bf89b0f531d1abcb29adaad2e6195a067
generated
vendored
Normal file
2
docs/node_modules/.cache/terser-webpack-plugin/index-v5/42/17/630f7d4d7a3acc3be9040d0c8a1bf89b0f531d1abcb29adaad2e6195a067
generated
vendored
Normal 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}
|
2
docs/node_modules/.cache/terser-webpack-plugin/index-v5/4f/4b/ec4afb7bdb469a7c9229ef9665c44cb22c84a5a65ee6d41ef152943e8f4f
generated
vendored
Normal file
2
docs/node_modules/.cache/terser-webpack-plugin/index-v5/4f/4b/ec4afb7bdb469a7c9229ef9665c44cb22c84a5a65ee6d41ef152943e8f4f
generated
vendored
Normal 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}
|
2
docs/node_modules/.cache/terser-webpack-plugin/index-v5/57/9b/9099a157b0b12e8a8650be10038cb707cd3c79d1756360f9987c99e81e6d
generated
vendored
Normal file
2
docs/node_modules/.cache/terser-webpack-plugin/index-v5/57/9b/9099a157b0b12e8a8650be10038cb707cd3c79d1756360f9987c99e81e6d
generated
vendored
Normal 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}
|
2
docs/node_modules/.cache/terser-webpack-plugin/index-v5/6e/d4/cf3d6ff898e2ee672932a69a80899412cd57e28f6529d5a48a466e9f8349
generated
vendored
Normal file
2
docs/node_modules/.cache/terser-webpack-plugin/index-v5/6e/d4/cf3d6ff898e2ee672932a69a80899412cd57e28f6529d5a48a466e9f8349
generated
vendored
Normal 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}
|
2
docs/node_modules/.cache/terser-webpack-plugin/index-v5/6f/0d/692fc3eeb072630a02f0a5cee729a37d1e5395c1b6f9b6e3aa626eccacbf
generated
vendored
Normal file
2
docs/node_modules/.cache/terser-webpack-plugin/index-v5/6f/0d/692fc3eeb072630a02f0a5cee729a37d1e5395c1b6f9b6e3aa626eccacbf
generated
vendored
Normal 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}
|
2
docs/node_modules/.cache/terser-webpack-plugin/index-v5/7c/53/4fc926071a6453e9073bc62fe5e13da9d7a0d0cdae5d069706bc1cc00a87
generated
vendored
Normal file
2
docs/node_modules/.cache/terser-webpack-plugin/index-v5/7c/53/4fc926071a6453e9073bc62fe5e13da9d7a0d0cdae5d069706bc1cc00a87
generated
vendored
Normal 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
Loading…
Reference in New Issue