增加qdoj的题目导入

This commit is contained in:
Himit_ZH 2021-05-30 21:47:23 +08:00
parent 5581ec931e
commit bd5e692e3b
99 changed files with 636 additions and 192 deletions

View File

@ -8,13 +8,13 @@
<link rel="icon" href="/docs/img/favicon.ico">
<meta name="description" content="HOJ 的开发与使用文档">
<link rel="preload" href="/docs/assets/css/0.styles.a456a50a.css" as="style"><link rel="preload" href="/docs/assets/js/app.2b24ff06.js" as="script"><link rel="preload" href="/docs/assets/js/6.f86b5401.js" as="script"><link rel="prefetch" href="/docs/assets/js/10.4c55a21d.js"><link rel="prefetch" href="/docs/assets/js/11.4861d789.js"><link rel="prefetch" href="/docs/assets/js/12.d8b05b7c.js"><link rel="prefetch" href="/docs/assets/js/13.a5d0a23f.js"><link rel="prefetch" href="/docs/assets/js/14.8ee17087.js"><link rel="prefetch" href="/docs/assets/js/15.618bada7.js"><link rel="prefetch" href="/docs/assets/js/16.f1865f2e.js"><link rel="prefetch" href="/docs/assets/js/17.c2e36571.js"><link rel="prefetch" href="/docs/assets/js/18.1d51026e.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.26b3a223.js"><link rel="prefetch" href="/docs/assets/js/21.3710e210.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.abbf0e9e.js"><link rel="prefetch" href="/docs/assets/js/26.2bf4f42a.js"><link rel="prefetch" href="/docs/assets/js/27.f0189890.js"><link rel="prefetch" href="/docs/assets/js/28.2e81fb40.js"><link rel="prefetch" href="/docs/assets/js/3.807ef1c0.js"><link rel="prefetch" href="/docs/assets/js/4.18e98edc.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.a456a50a.css">
<link rel="preload" href="/docs/assets/css/0.styles.0538ca31.css" as="style"><link rel="preload" href="/docs/assets/js/app.a50ec468.js" as="script"><link rel="preload" href="/docs/assets/js/6.f86b5401.js" as="script"><link rel="prefetch" href="/docs/assets/js/10.ec70d570.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.ca97dea5.js"><link rel="prefetch" href="/docs/assets/js/14.33cb85fe.js"><link rel="prefetch" href="/docs/assets/js/15.4e37b949.js"><link rel="prefetch" href="/docs/assets/js/16.f1865f2e.js"><link rel="prefetch" href="/docs/assets/js/17.c2e36571.js"><link rel="prefetch" href="/docs/assets/js/18.1d51026e.js"><link rel="prefetch" href="/docs/assets/js/19.393c9a56.js"><link rel="prefetch" href="/docs/assets/js/2.3e9bf4c9.js"><link rel="prefetch" href="/docs/assets/js/20.534de8b6.js"><link rel="prefetch" href="/docs/assets/js/21.3710e210.js"><link rel="prefetch" href="/docs/assets/js/22.2e9ffb3f.js"><link rel="prefetch" href="/docs/assets/js/23.6fc11064.js"><link rel="prefetch" href="/docs/assets/js/24.a70541b6.js"><link rel="prefetch" href="/docs/assets/js/25.e000908d.js"><link rel="prefetch" href="/docs/assets/js/26.5dd72228.js"><link rel="prefetch" href="/docs/assets/js/27.7f689554.js"><link rel="prefetch" href="/docs/assets/js/28.2e81fb40.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>How did we get here?</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>Looks like we've got some broken links.</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.2b24ff06.js" defer></script><script src="/docs/assets/js/6.f86b5401.js" defer></script>
<script src="/docs/assets/js/app.a50ec468.js" defer></script><script src="/docs/assets/js/6.f86b5401.js" defer></script>
</body>
</html>

View File

@ -1 +1 @@
(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}}]);
(window.webpackJsonp=window.webpackJsonp||[]).push([[15],{361: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}}]);

View File

@ -1 +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}}]);
(window.webpackJsonp=window.webpackJsonp||[]).push([[22],{369: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}}]);

View File

@ -1 +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}}]);
(window.webpackJsonp=window.webpackJsonp||[]).push([[24],{371: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}}]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
(window.webpackJsonp=window.webpackJsonp||[]).push([[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}}]);
(window.webpackJsonp=window.webpackJsonp||[]).push([[26],{373: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}}]);

View File

@ -1 +1 @@
(window.webpackJsonp=window.webpackJsonp||[]).push([[3],{319:function(t,e,n){},347:function(t,e,n){"use strict";n(319)},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(347),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}}]);

View File

@ -1 +1 @@
(window.webpackJsonp=window.webpackJsonp||[]).push([[4],{318:function(t,e,n){},346:function(t,e,n){"use strict";n(318)},351:function(t,e,n){"use strict";n.r(e);var a={name:"CodeBlock",props:{title:{type:String,required:!0},active:{type:Boolean,default:!1}},mounted:function(){this.$parent&&this.$parent.loadTabs&&this.$parent.loadTabs()}},c=(n(346),n(41)),i=Object(c.a)(a,(function(){var t=this.$createElement;return(this._self._c||t)("div",{staticClass:"theme-code-block",class:{"theme-code-block__active":this.active}},[this._t("default")],2)}),[],!1,null,"c265c668",null);e.default=i.exports}}]);
(window.webpackJsonp=window.webpackJsonp||[]).push([[4],{319:function(t,e,n){},347:function(t,e,n){"use strict";n(319)},351:function(t,e,n){"use strict";n.r(e);var a={name:"CodeBlock",props:{title:{type:String,required:!0},active:{type:Boolean,default:!1}},mounted:function(){this.$parent&&this.$parent.loadTabs&&this.$parent.loadTabs()}},c=(n(347),n(41)),i=Object(c.a)(a,(function(){var t=this.$createElement;return(this._self._c||t)("div",{staticClass:"theme-code-block",class:{"theme-code-block__active":this.active}},[this._t("default")],2)}),[],!1,null,"c265c668",null);e.default=i.exports}}]);

View File

@ -8,8 +8,8 @@
<link rel="icon" href="/docs/img/favicon.ico">
<meta name="description" content="HOJ 的开发与使用文档">
<link rel="preload" href="/docs/assets/css/0.styles.a456a50a.css" as="style"><link rel="preload" href="/docs/assets/js/app.2b24ff06.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.4c55a21d.js"><link rel="prefetch" href="/docs/assets/js/11.4861d789.js"><link rel="prefetch" href="/docs/assets/js/12.d8b05b7c.js"><link rel="prefetch" href="/docs/assets/js/13.a5d0a23f.js"><link rel="prefetch" href="/docs/assets/js/14.8ee17087.js"><link rel="prefetch" href="/docs/assets/js/15.618bada7.js"><link rel="prefetch" href="/docs/assets/js/16.f1865f2e.js"><link rel="prefetch" href="/docs/assets/js/17.c2e36571.js"><link rel="prefetch" href="/docs/assets/js/18.1d51026e.js"><link rel="prefetch" href="/docs/assets/js/19.28b0b6dd.js"><link rel="prefetch" href="/docs/assets/js/20.26b3a223.js"><link rel="prefetch" href="/docs/assets/js/21.3710e210.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.abbf0e9e.js"><link rel="prefetch" href="/docs/assets/js/26.2bf4f42a.js"><link rel="prefetch" href="/docs/assets/js/27.f0189890.js"><link rel="prefetch" href="/docs/assets/js/28.2e81fb40.js"><link rel="prefetch" href="/docs/assets/js/3.807ef1c0.js"><link rel="prefetch" href="/docs/assets/js/4.18e98edc.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.a456a50a.css">
<link rel="preload" href="/docs/assets/css/0.styles.0538ca31.css" as="style"><link rel="preload" href="/docs/assets/js/app.a50ec468.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.ec70d570.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.ca97dea5.js"><link rel="prefetch" href="/docs/assets/js/14.33cb85fe.js"><link rel="prefetch" href="/docs/assets/js/15.4e37b949.js"><link rel="prefetch" href="/docs/assets/js/16.f1865f2e.js"><link rel="prefetch" href="/docs/assets/js/17.c2e36571.js"><link rel="prefetch" href="/docs/assets/js/18.1d51026e.js"><link rel="prefetch" href="/docs/assets/js/19.393c9a56.js"><link rel="prefetch" href="/docs/assets/js/20.534de8b6.js"><link rel="prefetch" href="/docs/assets/js/21.3710e210.js"><link rel="prefetch" href="/docs/assets/js/22.2e9ffb3f.js"><link rel="prefetch" href="/docs/assets/js/23.6fc11064.js"><link rel="prefetch" href="/docs/assets/js/24.a70541b6.js"><link rel="prefetch" href="/docs/assets/js/25.e000908d.js"><link rel="prefetch" href="/docs/assets/js/26.5dd72228.js"><link rel="prefetch" href="/docs/assets/js/27.7f689554.js"><link rel="prefetch" href="/docs/assets/js/28.2e81fb40.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>
<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">
@ -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.2b24ff06.js" defer></script><script src="/docs/assets/js/2.3e9bf4c9.js" defer></script><script src="/docs/assets/js/9.f68a10a9.js" defer></script>
<script src="/docs/assets/js/app.a50ec468.js" defer></script><script src="/docs/assets/js/2.3e9bf4c9.js" defer></script><script src="/docs/assets/js/9.f68a10a9.js" defer></script>
</body>
</html>

View File

@ -8,8 +8,8 @@
<link rel="icon" href="/docs/img/favicon.ico">
<meta name="description" content="HOJ 的开发与使用文档">
<link rel="preload" href="/docs/assets/css/0.styles.a456a50a.css" as="style"><link rel="preload" href="/docs/assets/js/app.2b24ff06.js" as="script"><link rel="preload" href="/docs/assets/js/2.3e9bf4c9.js" as="script"><link rel="preload" href="/docs/assets/js/10.4c55a21d.js" as="script"><link rel="prefetch" href="/docs/assets/js/11.4861d789.js"><link rel="prefetch" href="/docs/assets/js/12.d8b05b7c.js"><link rel="prefetch" href="/docs/assets/js/13.a5d0a23f.js"><link rel="prefetch" href="/docs/assets/js/14.8ee17087.js"><link rel="prefetch" href="/docs/assets/js/15.618bada7.js"><link rel="prefetch" href="/docs/assets/js/16.f1865f2e.js"><link rel="prefetch" href="/docs/assets/js/17.c2e36571.js"><link rel="prefetch" href="/docs/assets/js/18.1d51026e.js"><link rel="prefetch" href="/docs/assets/js/19.28b0b6dd.js"><link rel="prefetch" href="/docs/assets/js/20.26b3a223.js"><link rel="prefetch" href="/docs/assets/js/21.3710e210.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.abbf0e9e.js"><link rel="prefetch" href="/docs/assets/js/26.2bf4f42a.js"><link rel="prefetch" href="/docs/assets/js/27.f0189890.js"><link rel="prefetch" href="/docs/assets/js/28.2e81fb40.js"><link rel="prefetch" href="/docs/assets/js/3.807ef1c0.js"><link rel="prefetch" href="/docs/assets/js/4.18e98edc.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.a456a50a.css">
<link rel="preload" href="/docs/assets/css/0.styles.0538ca31.css" as="style"><link rel="preload" href="/docs/assets/js/app.a50ec468.js" as="script"><link rel="preload" href="/docs/assets/js/2.3e9bf4c9.js" as="script"><link rel="preload" href="/docs/assets/js/10.ec70d570.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.ca97dea5.js"><link rel="prefetch" href="/docs/assets/js/14.33cb85fe.js"><link rel="prefetch" href="/docs/assets/js/15.4e37b949.js"><link rel="prefetch" href="/docs/assets/js/16.f1865f2e.js"><link rel="prefetch" href="/docs/assets/js/17.c2e36571.js"><link rel="prefetch" href="/docs/assets/js/18.1d51026e.js"><link rel="prefetch" href="/docs/assets/js/19.393c9a56.js"><link rel="prefetch" href="/docs/assets/js/20.534de8b6.js"><link rel="prefetch" href="/docs/assets/js/21.3710e210.js"><link rel="prefetch" href="/docs/assets/js/22.2e9ffb3f.js"><link rel="prefetch" href="/docs/assets/js/23.6fc11064.js"><link rel="prefetch" href="/docs/assets/js/24.a70541b6.js"><link rel="prefetch" href="/docs/assets/js/25.e000908d.js"><link rel="prefetch" href="/docs/assets/js/26.5dd72228.js"><link rel="prefetch" href="/docs/assets/js/27.7f689554.js"><link rel="prefetch" href="/docs/assets/js/28.2e81fb40.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">
@ -154,6 +154,9 @@ Password: 开启SMTP服务后生成的随机授权码
<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 comment"># 修改前端logo</span>
<span class="token comment"># - ./logo.a0924d7d.png:/usr/share/nginx/html/assets/img/logo.a0924d7d.png</span>
<span class="token comment"># - ./backstage.8bce8c6e.png:/usr/share/nginx/html/assets/img/backstage.8bce8c6e.png</span>
<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>
@ -165,7 +168,7 @@ Password: 开启SMTP服务后生成的随机授权码
<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><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></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">
环境配置
@ -174,6 +177,6 @@ Password: 开启SMTP服务后生成的随机授权码
</a>
</span></p></div> </main></div><div class="global-ui"></div></div>
<script src="/docs/assets/js/app.2b24ff06.js" defer></script><script src="/docs/assets/js/2.3e9bf4c9.js" defer></script><script src="/docs/assets/js/10.4c55a21d.js" defer></script>
<script src="/docs/assets/js/app.a50ec468.js" defer></script><script src="/docs/assets/js/2.3e9bf4c9.js" defer></script><script src="/docs/assets/js/10.ec70d570.js" defer></script>
</body>
</html>

View File

@ -8,8 +8,8 @@
<link rel="icon" href="/docs/img/favicon.ico">
<meta name="description" content="HOJ 的开发与使用文档">
<link rel="preload" href="/docs/assets/css/0.styles.a456a50a.css" as="style"><link rel="preload" href="/docs/assets/js/app.2b24ff06.js" as="script"><link rel="preload" href="/docs/assets/js/2.3e9bf4c9.js" as="script"><link rel="preload" href="/docs/assets/js/11.4861d789.js" as="script"><link rel="prefetch" href="/docs/assets/js/10.4c55a21d.js"><link rel="prefetch" href="/docs/assets/js/12.d8b05b7c.js"><link rel="prefetch" href="/docs/assets/js/13.a5d0a23f.js"><link rel="prefetch" href="/docs/assets/js/14.8ee17087.js"><link rel="prefetch" href="/docs/assets/js/15.618bada7.js"><link rel="prefetch" href="/docs/assets/js/16.f1865f2e.js"><link rel="prefetch" href="/docs/assets/js/17.c2e36571.js"><link rel="prefetch" href="/docs/assets/js/18.1d51026e.js"><link rel="prefetch" href="/docs/assets/js/19.28b0b6dd.js"><link rel="prefetch" href="/docs/assets/js/20.26b3a223.js"><link rel="prefetch" href="/docs/assets/js/21.3710e210.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.abbf0e9e.js"><link rel="prefetch" href="/docs/assets/js/26.2bf4f42a.js"><link rel="prefetch" href="/docs/assets/js/27.f0189890.js"><link rel="prefetch" href="/docs/assets/js/28.2e81fb40.js"><link rel="prefetch" href="/docs/assets/js/3.807ef1c0.js"><link rel="prefetch" href="/docs/assets/js/4.18e98edc.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.a456a50a.css">
<link rel="preload" href="/docs/assets/css/0.styles.0538ca31.css" as="style"><link rel="preload" href="/docs/assets/js/app.a50ec468.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.ec70d570.js"><link rel="prefetch" href="/docs/assets/js/12.f5d67101.js"><link rel="prefetch" href="/docs/assets/js/13.ca97dea5.js"><link rel="prefetch" href="/docs/assets/js/14.33cb85fe.js"><link rel="prefetch" href="/docs/assets/js/15.4e37b949.js"><link rel="prefetch" href="/docs/assets/js/16.f1865f2e.js"><link rel="prefetch" href="/docs/assets/js/17.c2e36571.js"><link rel="prefetch" href="/docs/assets/js/18.1d51026e.js"><link rel="prefetch" href="/docs/assets/js/19.393c9a56.js"><link rel="prefetch" href="/docs/assets/js/20.534de8b6.js"><link rel="prefetch" href="/docs/assets/js/21.3710e210.js"><link rel="prefetch" href="/docs/assets/js/22.2e9ffb3f.js"><link rel="prefetch" href="/docs/assets/js/23.6fc11064.js"><link rel="prefetch" href="/docs/assets/js/24.a70541b6.js"><link rel="prefetch" href="/docs/assets/js/25.e000908d.js"><link rel="prefetch" href="/docs/assets/js/26.5dd72228.js"><link rel="prefetch" href="/docs/assets/js/27.7f689554.js"><link rel="prefetch" href="/docs/assets/js/28.2e81fb40.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">
@ -216,6 +216,6 @@ hoj-frontend
</a>
</span></p></div> </main></div><div class="global-ui"></div></div>
<script src="/docs/assets/js/app.2b24ff06.js" defer></script><script src="/docs/assets/js/2.3e9bf4c9.js" defer></script><script src="/docs/assets/js/11.4861d789.js" defer></script>
<script src="/docs/assets/js/app.a50ec468.js" defer></script><script src="/docs/assets/js/2.3e9bf4c9.js" defer></script><script src="/docs/assets/js/11.3c715d4b.js" defer></script>
</body>
</html>

View File

@ -8,8 +8,8 @@
<link rel="icon" href="/docs/img/favicon.ico">
<meta name="description" content="HOJ 的开发与使用文档">
<link rel="preload" href="/docs/assets/css/0.styles.a456a50a.css" as="style"><link rel="preload" href="/docs/assets/js/app.2b24ff06.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.4c55a21d.js"><link rel="prefetch" href="/docs/assets/js/11.4861d789.js"><link rel="prefetch" href="/docs/assets/js/12.d8b05b7c.js"><link rel="prefetch" href="/docs/assets/js/13.a5d0a23f.js"><link rel="prefetch" href="/docs/assets/js/14.8ee17087.js"><link rel="prefetch" href="/docs/assets/js/15.618bada7.js"><link rel="prefetch" href="/docs/assets/js/16.f1865f2e.js"><link rel="prefetch" href="/docs/assets/js/17.c2e36571.js"><link rel="prefetch" href="/docs/assets/js/18.1d51026e.js"><link rel="prefetch" href="/docs/assets/js/19.28b0b6dd.js"><link rel="prefetch" href="/docs/assets/js/20.26b3a223.js"><link rel="prefetch" href="/docs/assets/js/21.3710e210.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.abbf0e9e.js"><link rel="prefetch" href="/docs/assets/js/26.2bf4f42a.js"><link rel="prefetch" href="/docs/assets/js/27.f0189890.js"><link rel="prefetch" href="/docs/assets/js/28.2e81fb40.js"><link rel="prefetch" href="/docs/assets/js/3.807ef1c0.js"><link rel="prefetch" href="/docs/assets/js/4.18e98edc.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.a456a50a.css">
<link rel="preload" href="/docs/assets/css/0.styles.0538ca31.css" as="style"><link rel="preload" href="/docs/assets/js/app.a50ec468.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.ec70d570.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.ca97dea5.js"><link rel="prefetch" href="/docs/assets/js/14.33cb85fe.js"><link rel="prefetch" href="/docs/assets/js/15.4e37b949.js"><link rel="prefetch" href="/docs/assets/js/16.f1865f2e.js"><link rel="prefetch" href="/docs/assets/js/17.c2e36571.js"><link rel="prefetch" href="/docs/assets/js/18.1d51026e.js"><link rel="prefetch" href="/docs/assets/js/19.393c9a56.js"><link rel="prefetch" href="/docs/assets/js/20.534de8b6.js"><link rel="prefetch" href="/docs/assets/js/21.3710e210.js"><link rel="prefetch" href="/docs/assets/js/22.2e9ffb3f.js"><link rel="prefetch" href="/docs/assets/js/23.6fc11064.js"><link rel="prefetch" href="/docs/assets/js/24.a70541b6.js"><link rel="prefetch" href="/docs/assets/js/25.e000908d.js"><link rel="prefetch" href="/docs/assets/js/26.5dd72228.js"><link rel="prefetch" href="/docs/assets/js/27.7f689554.js"><link rel="prefetch" href="/docs/assets/js/28.2e81fb40.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>
<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">
@ -50,6 +50,6 @@
</a>
</span></p></div> </main></div><div class="global-ui"></div></div>
<script src="/docs/assets/js/app.2b24ff06.js" defer></script><script src="/docs/assets/js/2.3e9bf4c9.js" defer></script><script src="/docs/assets/js/8.d67efa58.js" defer></script>
<script src="/docs/assets/js/app.a50ec468.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>

View File

@ -8,8 +8,8 @@
<link rel="icon" href="/docs/img/favicon.ico">
<meta name="description" content="HOJ 的开发与使用文档">
<link rel="preload" href="/docs/assets/css/0.styles.a456a50a.css" as="style"><link rel="preload" href="/docs/assets/js/app.2b24ff06.js" as="script"><link rel="preload" href="/docs/assets/js/2.3e9bf4c9.js" as="script"><link rel="preload" href="/docs/assets/js/12.d8b05b7c.js" as="script"><link rel="prefetch" href="/docs/assets/js/10.4c55a21d.js"><link rel="prefetch" href="/docs/assets/js/11.4861d789.js"><link rel="prefetch" href="/docs/assets/js/13.a5d0a23f.js"><link rel="prefetch" href="/docs/assets/js/14.8ee17087.js"><link rel="prefetch" href="/docs/assets/js/15.618bada7.js"><link rel="prefetch" href="/docs/assets/js/16.f1865f2e.js"><link rel="prefetch" href="/docs/assets/js/17.c2e36571.js"><link rel="prefetch" href="/docs/assets/js/18.1d51026e.js"><link rel="prefetch" href="/docs/assets/js/19.28b0b6dd.js"><link rel="prefetch" href="/docs/assets/js/20.26b3a223.js"><link rel="prefetch" href="/docs/assets/js/21.3710e210.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.abbf0e9e.js"><link rel="prefetch" href="/docs/assets/js/26.2bf4f42a.js"><link rel="prefetch" href="/docs/assets/js/27.f0189890.js"><link rel="prefetch" href="/docs/assets/js/28.2e81fb40.js"><link rel="prefetch" href="/docs/assets/js/3.807ef1c0.js"><link rel="prefetch" href="/docs/assets/js/4.18e98edc.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.a456a50a.css">
<link rel="preload" href="/docs/assets/css/0.styles.0538ca31.css" as="style"><link rel="preload" href="/docs/assets/js/app.a50ec468.js" as="script"><link rel="preload" href="/docs/assets/js/2.3e9bf4c9.js" as="script"><link rel="preload" href="/docs/assets/js/12.f5d67101.js" as="script"><link rel="prefetch" href="/docs/assets/js/10.ec70d570.js"><link rel="prefetch" href="/docs/assets/js/11.3c715d4b.js"><link rel="prefetch" href="/docs/assets/js/13.ca97dea5.js"><link rel="prefetch" href="/docs/assets/js/14.33cb85fe.js"><link rel="prefetch" href="/docs/assets/js/15.4e37b949.js"><link rel="prefetch" href="/docs/assets/js/16.f1865f2e.js"><link rel="prefetch" href="/docs/assets/js/17.c2e36571.js"><link rel="prefetch" href="/docs/assets/js/18.1d51026e.js"><link rel="prefetch" href="/docs/assets/js/19.393c9a56.js"><link rel="prefetch" href="/docs/assets/js/20.534de8b6.js"><link rel="prefetch" href="/docs/assets/js/21.3710e210.js"><link rel="prefetch" href="/docs/assets/js/22.2e9ffb3f.js"><link rel="prefetch" href="/docs/assets/js/23.6fc11064.js"><link rel="prefetch" href="/docs/assets/js/24.a70541b6.js"><link rel="prefetch" href="/docs/assets/js/25.e000908d.js"><link rel="prefetch" href="/docs/assets/js/26.5dd72228.js"><link rel="prefetch" href="/docs/assets/js/27.7f689554.js"><link rel="prefetch" href="/docs/assets/js/28.2e81fb40.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">
@ -171,6 +171,6 @@ java -XX:+UseG1GC -Djava.security.egd<span class="token operator">=</span>file:/
</a>
</span></p></div> </main></div><div class="global-ui"></div></div>
<script src="/docs/assets/js/app.2b24ff06.js" defer></script><script src="/docs/assets/js/2.3e9bf4c9.js" defer></script><script src="/docs/assets/js/12.d8b05b7c.js" defer></script>
<script src="/docs/assets/js/app.a50ec468.js" defer></script><script src="/docs/assets/js/2.3e9bf4c9.js" defer></script><script src="/docs/assets/js/12.f5d67101.js" defer></script>
</body>
</html>

View File

@ -8,8 +8,8 @@
<link rel="icon" href="/docs/img/favicon.ico">
<meta name="description" content="HOJ 的开发与使用文档">
<link rel="preload" href="/docs/assets/css/0.styles.a456a50a.css" as="style"><link rel="preload" href="/docs/assets/js/app.2b24ff06.js" as="script"><link rel="preload" href="/docs/assets/js/2.3e9bf4c9.js" as="script"><link rel="preload" href="/docs/assets/js/13.a5d0a23f.js" as="script"><link rel="prefetch" href="/docs/assets/js/10.4c55a21d.js"><link rel="prefetch" href="/docs/assets/js/11.4861d789.js"><link rel="prefetch" href="/docs/assets/js/12.d8b05b7c.js"><link rel="prefetch" href="/docs/assets/js/14.8ee17087.js"><link rel="prefetch" href="/docs/assets/js/15.618bada7.js"><link rel="prefetch" href="/docs/assets/js/16.f1865f2e.js"><link rel="prefetch" href="/docs/assets/js/17.c2e36571.js"><link rel="prefetch" href="/docs/assets/js/18.1d51026e.js"><link rel="prefetch" href="/docs/assets/js/19.28b0b6dd.js"><link rel="prefetch" href="/docs/assets/js/20.26b3a223.js"><link rel="prefetch" href="/docs/assets/js/21.3710e210.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.abbf0e9e.js"><link rel="prefetch" href="/docs/assets/js/26.2bf4f42a.js"><link rel="prefetch" href="/docs/assets/js/27.f0189890.js"><link rel="prefetch" href="/docs/assets/js/28.2e81fb40.js"><link rel="prefetch" href="/docs/assets/js/3.807ef1c0.js"><link rel="prefetch" href="/docs/assets/js/4.18e98edc.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.a456a50a.css">
<link rel="preload" href="/docs/assets/css/0.styles.0538ca31.css" as="style"><link rel="preload" href="/docs/assets/js/app.a50ec468.js" as="script"><link rel="preload" href="/docs/assets/js/2.3e9bf4c9.js" as="script"><link rel="preload" href="/docs/assets/js/13.ca97dea5.js" as="script"><link rel="prefetch" href="/docs/assets/js/10.ec70d570.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.33cb85fe.js"><link rel="prefetch" href="/docs/assets/js/15.4e37b949.js"><link rel="prefetch" href="/docs/assets/js/16.f1865f2e.js"><link rel="prefetch" href="/docs/assets/js/17.c2e36571.js"><link rel="prefetch" href="/docs/assets/js/18.1d51026e.js"><link rel="prefetch" href="/docs/assets/js/19.393c9a56.js"><link rel="prefetch" href="/docs/assets/js/20.534de8b6.js"><link rel="prefetch" href="/docs/assets/js/21.3710e210.js"><link rel="prefetch" href="/docs/assets/js/22.2e9ffb3f.js"><link rel="prefetch" href="/docs/assets/js/23.6fc11064.js"><link rel="prefetch" href="/docs/assets/js/24.a70541b6.js"><link rel="prefetch" href="/docs/assets/js/25.e000908d.js"><link rel="prefetch" href="/docs/assets/js/26.5dd72228.js"><link rel="prefetch" href="/docs/assets/js/27.7f689554.js"><link rel="prefetch" href="/docs/assets/js/28.2e81fb40.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">
@ -163,6 +163,6 @@ EOF</span>
</a>
</span></p></div> </main></div><div class="global-ui"></div></div>
<script src="/docs/assets/js/app.2b24ff06.js" defer></script><script src="/docs/assets/js/2.3e9bf4c9.js" defer></script><script src="/docs/assets/js/13.a5d0a23f.js" defer></script>
<script src="/docs/assets/js/app.a50ec468.js" defer></script><script src="/docs/assets/js/2.3e9bf4c9.js" defer></script><script src="/docs/assets/js/13.ca97dea5.js" defer></script>
</body>
</html>

View File

@ -8,8 +8,8 @@
<link rel="icon" href="/docs/img/favicon.ico">
<meta name="description" content="HOJ 的开发与使用文档">
<link rel="preload" href="/docs/assets/css/0.styles.a456a50a.css" as="style"><link rel="preload" href="/docs/assets/js/app.2b24ff06.js" as="script"><link rel="preload" href="/docs/assets/js/2.3e9bf4c9.js" as="script"><link rel="preload" href="/docs/assets/js/14.8ee17087.js" as="script"><link rel="prefetch" href="/docs/assets/js/10.4c55a21d.js"><link rel="prefetch" href="/docs/assets/js/11.4861d789.js"><link rel="prefetch" href="/docs/assets/js/12.d8b05b7c.js"><link rel="prefetch" href="/docs/assets/js/13.a5d0a23f.js"><link rel="prefetch" href="/docs/assets/js/15.618bada7.js"><link rel="prefetch" href="/docs/assets/js/16.f1865f2e.js"><link rel="prefetch" href="/docs/assets/js/17.c2e36571.js"><link rel="prefetch" href="/docs/assets/js/18.1d51026e.js"><link rel="prefetch" href="/docs/assets/js/19.28b0b6dd.js"><link rel="prefetch" href="/docs/assets/js/20.26b3a223.js"><link rel="prefetch" href="/docs/assets/js/21.3710e210.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.abbf0e9e.js"><link rel="prefetch" href="/docs/assets/js/26.2bf4f42a.js"><link rel="prefetch" href="/docs/assets/js/27.f0189890.js"><link rel="prefetch" href="/docs/assets/js/28.2e81fb40.js"><link rel="prefetch" href="/docs/assets/js/3.807ef1c0.js"><link rel="prefetch" href="/docs/assets/js/4.18e98edc.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.a456a50a.css">
<link rel="preload" href="/docs/assets/css/0.styles.0538ca31.css" as="style"><link rel="preload" href="/docs/assets/js/app.a50ec468.js" as="script"><link rel="preload" href="/docs/assets/js/2.3e9bf4c9.js" as="script"><link rel="preload" href="/docs/assets/js/14.33cb85fe.js" as="script"><link rel="prefetch" href="/docs/assets/js/10.ec70d570.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.ca97dea5.js"><link rel="prefetch" href="/docs/assets/js/15.4e37b949.js"><link rel="prefetch" href="/docs/assets/js/16.f1865f2e.js"><link rel="prefetch" href="/docs/assets/js/17.c2e36571.js"><link rel="prefetch" href="/docs/assets/js/18.1d51026e.js"><link rel="prefetch" href="/docs/assets/js/19.393c9a56.js"><link rel="prefetch" href="/docs/assets/js/20.534de8b6.js"><link rel="prefetch" href="/docs/assets/js/21.3710e210.js"><link rel="prefetch" href="/docs/assets/js/22.2e9ffb3f.js"><link rel="prefetch" href="/docs/assets/js/23.6fc11064.js"><link rel="prefetch" href="/docs/assets/js/24.a70541b6.js"><link rel="prefetch" href="/docs/assets/js/25.e000908d.js"><link rel="prefetch" href="/docs/assets/js/26.5dd72228.js"><link rel="prefetch" href="/docs/assets/js/27.7f689554.js"><link rel="prefetch" href="/docs/assets/js/28.2e81fb40.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">
@ -49,6 +49,6 @@ nacos/nacos-server:1.4.2
</a>
</span></p></div> </main></div><div class="global-ui"></div></div>
<script src="/docs/assets/js/app.2b24ff06.js" defer></script><script src="/docs/assets/js/2.3e9bf4c9.js" defer></script><script src="/docs/assets/js/14.8ee17087.js" defer></script>
<script src="/docs/assets/js/app.a50ec468.js" defer></script><script src="/docs/assets/js/2.3e9bf4c9.js" defer></script><script src="/docs/assets/js/14.33cb85fe.js" defer></script>
</body>
</html>

View File

@ -8,8 +8,8 @@
<link rel="icon" href="/docs/img/favicon.ico">
<meta name="description" content="HOJ 的开发与使用文档">
<link rel="preload" href="/docs/assets/css/0.styles.a456a50a.css" as="style"><link rel="preload" href="/docs/assets/js/app.2b24ff06.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.4c55a21d.js"><link rel="prefetch" href="/docs/assets/js/11.4861d789.js"><link rel="prefetch" href="/docs/assets/js/12.d8b05b7c.js"><link rel="prefetch" href="/docs/assets/js/13.a5d0a23f.js"><link rel="prefetch" href="/docs/assets/js/14.8ee17087.js"><link rel="prefetch" href="/docs/assets/js/16.f1865f2e.js"><link rel="prefetch" href="/docs/assets/js/17.c2e36571.js"><link rel="prefetch" href="/docs/assets/js/18.1d51026e.js"><link rel="prefetch" href="/docs/assets/js/19.28b0b6dd.js"><link rel="prefetch" href="/docs/assets/js/20.26b3a223.js"><link rel="prefetch" href="/docs/assets/js/21.3710e210.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.abbf0e9e.js"><link rel="prefetch" href="/docs/assets/js/26.2bf4f42a.js"><link rel="prefetch" href="/docs/assets/js/27.f0189890.js"><link rel="prefetch" href="/docs/assets/js/28.2e81fb40.js"><link rel="prefetch" href="/docs/assets/js/3.807ef1c0.js"><link rel="prefetch" href="/docs/assets/js/4.18e98edc.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.a456a50a.css">
<link rel="preload" href="/docs/assets/css/0.styles.0538ca31.css" as="style"><link rel="preload" href="/docs/assets/js/app.a50ec468.js" as="script"><link rel="preload" href="/docs/assets/js/2.3e9bf4c9.js" as="script"><link rel="preload" href="/docs/assets/js/15.4e37b949.js" as="script"><link rel="prefetch" href="/docs/assets/js/10.ec70d570.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.ca97dea5.js"><link rel="prefetch" href="/docs/assets/js/14.33cb85fe.js"><link rel="prefetch" href="/docs/assets/js/16.f1865f2e.js"><link rel="prefetch" href="/docs/assets/js/17.c2e36571.js"><link rel="prefetch" href="/docs/assets/js/18.1d51026e.js"><link rel="prefetch" href="/docs/assets/js/19.393c9a56.js"><link rel="prefetch" href="/docs/assets/js/20.534de8b6.js"><link rel="prefetch" href="/docs/assets/js/21.3710e210.js"><link rel="prefetch" href="/docs/assets/js/22.2e9ffb3f.js"><link rel="prefetch" href="/docs/assets/js/23.6fc11064.js"><link rel="prefetch" href="/docs/assets/js/24.a70541b6.js"><link rel="prefetch" href="/docs/assets/js/25.e000908d.js"><link rel="prefetch" href="/docs/assets/js/26.5dd72228.js"><link rel="prefetch" href="/docs/assets/js/27.7f689554.js"><link rel="prefetch" href="/docs/assets/js/28.2e81fb40.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">
@ -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.2b24ff06.js" defer></script><script src="/docs/assets/js/2.3e9bf4c9.js" defer></script><script src="/docs/assets/js/15.618bada7.js" defer></script>
<script src="/docs/assets/js/app.a50ec468.js" defer></script><script src="/docs/assets/js/2.3e9bf4c9.js" defer></script><script src="/docs/assets/js/15.4e37b949.js" defer></script>
</body>
</html>

View File

@ -8,8 +8,8 @@
<link rel="icon" href="/docs/img/favicon.ico">
<meta name="description" content="HOJ 的开发与使用文档">
<link rel="preload" href="/docs/assets/css/0.styles.a456a50a.css" as="style"><link rel="preload" href="/docs/assets/js/app.2b24ff06.js" as="script"><link rel="preload" href="/docs/assets/js/2.3e9bf4c9.js" as="script"><link rel="preload" href="/docs/assets/js/16.f1865f2e.js" as="script"><link rel="prefetch" href="/docs/assets/js/10.4c55a21d.js"><link rel="prefetch" href="/docs/assets/js/11.4861d789.js"><link rel="prefetch" href="/docs/assets/js/12.d8b05b7c.js"><link rel="prefetch" href="/docs/assets/js/13.a5d0a23f.js"><link rel="prefetch" href="/docs/assets/js/14.8ee17087.js"><link rel="prefetch" href="/docs/assets/js/15.618bada7.js"><link rel="prefetch" href="/docs/assets/js/17.c2e36571.js"><link rel="prefetch" href="/docs/assets/js/18.1d51026e.js"><link rel="prefetch" href="/docs/assets/js/19.28b0b6dd.js"><link rel="prefetch" href="/docs/assets/js/20.26b3a223.js"><link rel="prefetch" href="/docs/assets/js/21.3710e210.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.abbf0e9e.js"><link rel="prefetch" href="/docs/assets/js/26.2bf4f42a.js"><link rel="prefetch" href="/docs/assets/js/27.f0189890.js"><link rel="prefetch" href="/docs/assets/js/28.2e81fb40.js"><link rel="prefetch" href="/docs/assets/js/3.807ef1c0.js"><link rel="prefetch" href="/docs/assets/js/4.18e98edc.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.a456a50a.css">
<link rel="preload" href="/docs/assets/css/0.styles.0538ca31.css" as="style"><link rel="preload" href="/docs/assets/js/app.a50ec468.js" as="script"><link rel="preload" href="/docs/assets/js/2.3e9bf4c9.js" as="script"><link rel="preload" href="/docs/assets/js/16.f1865f2e.js" as="script"><link rel="prefetch" href="/docs/assets/js/10.ec70d570.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.ca97dea5.js"><link rel="prefetch" href="/docs/assets/js/14.33cb85fe.js"><link rel="prefetch" href="/docs/assets/js/15.4e37b949.js"><link rel="prefetch" href="/docs/assets/js/17.c2e36571.js"><link rel="prefetch" href="/docs/assets/js/18.1d51026e.js"><link rel="prefetch" href="/docs/assets/js/19.393c9a56.js"><link rel="prefetch" href="/docs/assets/js/20.534de8b6.js"><link rel="prefetch" href="/docs/assets/js/21.3710e210.js"><link rel="prefetch" href="/docs/assets/js/22.2e9ffb3f.js"><link rel="prefetch" href="/docs/assets/js/23.6fc11064.js"><link rel="prefetch" href="/docs/assets/js/24.a70541b6.js"><link rel="prefetch" href="/docs/assets/js/25.e000908d.js"><link rel="prefetch" href="/docs/assets/js/26.5dd72228.js"><link rel="prefetch" href="/docs/assets/js/27.7f689554.js"><link rel="prefetch" href="/docs/assets/js/28.2e81fb40.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">
@ -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.2b24ff06.js" defer></script><script src="/docs/assets/js/2.3e9bf4c9.js" defer></script><script src="/docs/assets/js/16.f1865f2e.js" defer></script>
<script src="/docs/assets/js/app.a50ec468.js" defer></script><script src="/docs/assets/js/2.3e9bf4c9.js" defer></script><script src="/docs/assets/js/16.f1865f2e.js" defer></script>
</body>
</html>

View File

@ -8,8 +8,8 @@
<link rel="icon" href="/docs/img/favicon.ico">
<meta name="description" content="HOJ 的开发与使用文档">
<link rel="preload" href="/docs/assets/css/0.styles.a456a50a.css" as="style"><link rel="preload" href="/docs/assets/js/app.2b24ff06.js" as="script"><link rel="preload" href="/docs/assets/js/2.3e9bf4c9.js" as="script"><link rel="preload" href="/docs/assets/js/18.1d51026e.js" as="script"><link rel="prefetch" href="/docs/assets/js/10.4c55a21d.js"><link rel="prefetch" href="/docs/assets/js/11.4861d789.js"><link rel="prefetch" href="/docs/assets/js/12.d8b05b7c.js"><link rel="prefetch" href="/docs/assets/js/13.a5d0a23f.js"><link rel="prefetch" href="/docs/assets/js/14.8ee17087.js"><link rel="prefetch" href="/docs/assets/js/15.618bada7.js"><link rel="prefetch" href="/docs/assets/js/16.f1865f2e.js"><link rel="prefetch" href="/docs/assets/js/17.c2e36571.js"><link rel="prefetch" href="/docs/assets/js/19.28b0b6dd.js"><link rel="prefetch" href="/docs/assets/js/20.26b3a223.js"><link rel="prefetch" href="/docs/assets/js/21.3710e210.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.abbf0e9e.js"><link rel="prefetch" href="/docs/assets/js/26.2bf4f42a.js"><link rel="prefetch" href="/docs/assets/js/27.f0189890.js"><link rel="prefetch" href="/docs/assets/js/28.2e81fb40.js"><link rel="prefetch" href="/docs/assets/js/3.807ef1c0.js"><link rel="prefetch" href="/docs/assets/js/4.18e98edc.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.a456a50a.css">
<link rel="preload" href="/docs/assets/css/0.styles.0538ca31.css" as="style"><link rel="preload" href="/docs/assets/js/app.a50ec468.js" as="script"><link rel="preload" href="/docs/assets/js/2.3e9bf4c9.js" as="script"><link rel="preload" href="/docs/assets/js/18.1d51026e.js" as="script"><link rel="prefetch" href="/docs/assets/js/10.ec70d570.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.ca97dea5.js"><link rel="prefetch" href="/docs/assets/js/14.33cb85fe.js"><link rel="prefetch" href="/docs/assets/js/15.4e37b949.js"><link rel="prefetch" href="/docs/assets/js/16.f1865f2e.js"><link rel="prefetch" href="/docs/assets/js/17.c2e36571.js"><link rel="prefetch" href="/docs/assets/js/19.393c9a56.js"><link rel="prefetch" href="/docs/assets/js/20.534de8b6.js"><link rel="prefetch" href="/docs/assets/js/21.3710e210.js"><link rel="prefetch" href="/docs/assets/js/22.2e9ffb3f.js"><link rel="prefetch" href="/docs/assets/js/23.6fc11064.js"><link rel="prefetch" href="/docs/assets/js/24.a70541b6.js"><link rel="prefetch" href="/docs/assets/js/25.e000908d.js"><link rel="prefetch" href="/docs/assets/js/26.5dd72228.js"><link rel="prefetch" href="/docs/assets/js/27.7f689554.js"><link rel="prefetch" href="/docs/assets/js/28.2e81fb40.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">
@ -73,6 +73,6 @@ BEFORE <span class="token keyword">INSERT</span> <span class="token keyword">ON<
</a>
</span></p></div> </main></div><div class="global-ui"></div></div>
<script src="/docs/assets/js/app.2b24ff06.js" defer></script><script src="/docs/assets/js/2.3e9bf4c9.js" defer></script><script src="/docs/assets/js/18.1d51026e.js" defer></script>
<script src="/docs/assets/js/app.a50ec468.js" defer></script><script src="/docs/assets/js/2.3e9bf4c9.js" defer></script><script src="/docs/assets/js/18.1d51026e.js" defer></script>
</body>
</html>

View File

@ -8,8 +8,8 @@
<link rel="icon" href="/docs/img/favicon.ico">
<meta name="description" content="HOJ 的开发与使用文档">
<link rel="preload" href="/docs/assets/css/0.styles.a456a50a.css" as="style"><link rel="preload" href="/docs/assets/js/app.2b24ff06.js" as="script"><link rel="preload" href="/docs/assets/js/2.3e9bf4c9.js" as="script"><link rel="preload" href="/docs/assets/js/17.c2e36571.js" as="script"><link rel="prefetch" href="/docs/assets/js/10.4c55a21d.js"><link rel="prefetch" href="/docs/assets/js/11.4861d789.js"><link rel="prefetch" href="/docs/assets/js/12.d8b05b7c.js"><link rel="prefetch" href="/docs/assets/js/13.a5d0a23f.js"><link rel="prefetch" href="/docs/assets/js/14.8ee17087.js"><link rel="prefetch" href="/docs/assets/js/15.618bada7.js"><link rel="prefetch" href="/docs/assets/js/16.f1865f2e.js"><link rel="prefetch" href="/docs/assets/js/18.1d51026e.js"><link rel="prefetch" href="/docs/assets/js/19.28b0b6dd.js"><link rel="prefetch" href="/docs/assets/js/20.26b3a223.js"><link rel="prefetch" href="/docs/assets/js/21.3710e210.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.abbf0e9e.js"><link rel="prefetch" href="/docs/assets/js/26.2bf4f42a.js"><link rel="prefetch" href="/docs/assets/js/27.f0189890.js"><link rel="prefetch" href="/docs/assets/js/28.2e81fb40.js"><link rel="prefetch" href="/docs/assets/js/3.807ef1c0.js"><link rel="prefetch" href="/docs/assets/js/4.18e98edc.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.a456a50a.css">
<link rel="preload" href="/docs/assets/css/0.styles.0538ca31.css" as="style"><link rel="preload" href="/docs/assets/js/app.a50ec468.js" as="script"><link rel="preload" href="/docs/assets/js/2.3e9bf4c9.js" as="script"><link rel="preload" href="/docs/assets/js/17.c2e36571.js" as="script"><link rel="prefetch" href="/docs/assets/js/10.ec70d570.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.ca97dea5.js"><link rel="prefetch" href="/docs/assets/js/14.33cb85fe.js"><link rel="prefetch" href="/docs/assets/js/15.4e37b949.js"><link rel="prefetch" href="/docs/assets/js/16.f1865f2e.js"><link rel="prefetch" href="/docs/assets/js/18.1d51026e.js"><link rel="prefetch" href="/docs/assets/js/19.393c9a56.js"><link rel="prefetch" href="/docs/assets/js/20.534de8b6.js"><link rel="prefetch" href="/docs/assets/js/21.3710e210.js"><link rel="prefetch" href="/docs/assets/js/22.2e9ffb3f.js"><link rel="prefetch" href="/docs/assets/js/23.6fc11064.js"><link rel="prefetch" href="/docs/assets/js/24.a70541b6.js"><link rel="prefetch" href="/docs/assets/js/25.e000908d.js"><link rel="prefetch" href="/docs/assets/js/26.5dd72228.js"><link rel="prefetch" href="/docs/assets/js/27.7f689554.js"><link rel="prefetch" href="/docs/assets/js/28.2e81fb40.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">
@ -33,6 +33,6 @@
</a>
</span></p></div> </main></div><div class="global-ui"></div></div>
<script src="/docs/assets/js/app.2b24ff06.js" defer></script><script src="/docs/assets/js/2.3e9bf4c9.js" defer></script><script src="/docs/assets/js/17.c2e36571.js" defer></script>
<script src="/docs/assets/js/app.a50ec468.js" defer></script><script src="/docs/assets/js/2.3e9bf4c9.js" defer></script><script src="/docs/assets/js/17.c2e36571.js" defer></script>
</body>
</html>

View File

@ -8,8 +8,8 @@
<link rel="icon" href="/docs/img/favicon.ico">
<meta name="description" content="HOJ 的开发与使用文档">
<link rel="preload" href="/docs/assets/css/0.styles.a456a50a.css" as="style"><link rel="preload" href="/docs/assets/js/app.2b24ff06.js" as="script"><link rel="preload" href="/docs/assets/js/2.3e9bf4c9.js" as="script"><link rel="preload" href="/docs/assets/js/19.28b0b6dd.js" as="script"><link rel="prefetch" href="/docs/assets/js/10.4c55a21d.js"><link rel="prefetch" href="/docs/assets/js/11.4861d789.js"><link rel="prefetch" href="/docs/assets/js/12.d8b05b7c.js"><link rel="prefetch" href="/docs/assets/js/13.a5d0a23f.js"><link rel="prefetch" href="/docs/assets/js/14.8ee17087.js"><link rel="prefetch" href="/docs/assets/js/15.618bada7.js"><link rel="prefetch" href="/docs/assets/js/16.f1865f2e.js"><link rel="prefetch" href="/docs/assets/js/17.c2e36571.js"><link rel="prefetch" href="/docs/assets/js/18.1d51026e.js"><link rel="prefetch" href="/docs/assets/js/20.26b3a223.js"><link rel="prefetch" href="/docs/assets/js/21.3710e210.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.abbf0e9e.js"><link rel="prefetch" href="/docs/assets/js/26.2bf4f42a.js"><link rel="prefetch" href="/docs/assets/js/27.f0189890.js"><link rel="prefetch" href="/docs/assets/js/28.2e81fb40.js"><link rel="prefetch" href="/docs/assets/js/3.807ef1c0.js"><link rel="prefetch" href="/docs/assets/js/4.18e98edc.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.a456a50a.css">
<link rel="preload" href="/docs/assets/css/0.styles.0538ca31.css" as="style"><link rel="preload" href="/docs/assets/js/app.a50ec468.js" as="script"><link rel="preload" href="/docs/assets/js/2.3e9bf4c9.js" as="script"><link rel="preload" href="/docs/assets/js/19.393c9a56.js" as="script"><link rel="prefetch" href="/docs/assets/js/10.ec70d570.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.ca97dea5.js"><link rel="prefetch" href="/docs/assets/js/14.33cb85fe.js"><link rel="prefetch" href="/docs/assets/js/15.4e37b949.js"><link rel="prefetch" href="/docs/assets/js/16.f1865f2e.js"><link rel="prefetch" href="/docs/assets/js/17.c2e36571.js"><link rel="prefetch" href="/docs/assets/js/18.1d51026e.js"><link rel="prefetch" href="/docs/assets/js/20.534de8b6.js"><link rel="prefetch" href="/docs/assets/js/21.3710e210.js"><link rel="prefetch" href="/docs/assets/js/22.2e9ffb3f.js"><link rel="prefetch" href="/docs/assets/js/23.6fc11064.js"><link rel="prefetch" href="/docs/assets/js/24.a70541b6.js"><link rel="prefetch" href="/docs/assets/js/25.e000908d.js"><link rel="prefetch" href="/docs/assets/js/26.5dd72228.js"><link rel="prefetch" href="/docs/assets/js/27.7f689554.js"><link rel="prefetch" href="/docs/assets/js/28.2e81fb40.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">
@ -246,6 +246,6 @@
</a>
</span></p></div> </main></div><div class="global-ui"></div></div>
<script src="/docs/assets/js/app.2b24ff06.js" defer></script><script src="/docs/assets/js/2.3e9bf4c9.js" defer></script><script src="/docs/assets/js/19.28b0b6dd.js" defer></script>
<script src="/docs/assets/js/app.a50ec468.js" defer></script><script src="/docs/assets/js/2.3e9bf4c9.js" defer></script><script src="/docs/assets/js/19.393c9a56.js" defer></script>
</body>
</html>

View File

@ -8,8 +8,8 @@
<link rel="icon" href="/docs/img/favicon.ico">
<meta name="description" content="HOJ 的开发与使用文档">
<link rel="preload" href="/docs/assets/css/0.styles.a456a50a.css" as="style"><link rel="preload" href="/docs/assets/js/app.2b24ff06.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.4c55a21d.js"><link rel="prefetch" href="/docs/assets/js/11.4861d789.js"><link rel="prefetch" href="/docs/assets/js/12.d8b05b7c.js"><link rel="prefetch" href="/docs/assets/js/13.a5d0a23f.js"><link rel="prefetch" href="/docs/assets/js/14.8ee17087.js"><link rel="prefetch" href="/docs/assets/js/15.618bada7.js"><link rel="prefetch" href="/docs/assets/js/16.f1865f2e.js"><link rel="prefetch" href="/docs/assets/js/17.c2e36571.js"><link rel="prefetch" href="/docs/assets/js/18.1d51026e.js"><link rel="prefetch" href="/docs/assets/js/19.28b0b6dd.js"><link rel="prefetch" href="/docs/assets/js/20.26b3a223.js"><link rel="prefetch" href="/docs/assets/js/21.3710e210.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.abbf0e9e.js"><link rel="prefetch" href="/docs/assets/js/26.2bf4f42a.js"><link rel="prefetch" href="/docs/assets/js/27.f0189890.js"><link rel="prefetch" href="/docs/assets/js/28.2e81fb40.js"><link rel="prefetch" href="/docs/assets/js/3.807ef1c0.js"><link rel="prefetch" href="/docs/assets/js/4.18e98edc.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.a456a50a.css">
<link rel="preload" href="/docs/assets/css/0.styles.0538ca31.css" as="style"><link rel="preload" href="/docs/assets/js/app.a50ec468.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.ec70d570.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.ca97dea5.js"><link rel="prefetch" href="/docs/assets/js/14.33cb85fe.js"><link rel="prefetch" href="/docs/assets/js/15.4e37b949.js"><link rel="prefetch" href="/docs/assets/js/16.f1865f2e.js"><link rel="prefetch" href="/docs/assets/js/17.c2e36571.js"><link rel="prefetch" href="/docs/assets/js/18.1d51026e.js"><link rel="prefetch" href="/docs/assets/js/19.393c9a56.js"><link rel="prefetch" href="/docs/assets/js/20.534de8b6.js"><link rel="prefetch" href="/docs/assets/js/21.3710e210.js"><link rel="prefetch" href="/docs/assets/js/22.2e9ffb3f.js"><link rel="prefetch" href="/docs/assets/js/23.6fc11064.js"><link rel="prefetch" href="/docs/assets/js/24.a70541b6.js"><link rel="prefetch" href="/docs/assets/js/25.e000908d.js"><link rel="prefetch" href="/docs/assets/js/26.5dd72228.js"><link rel="prefetch" href="/docs/assets/js/27.7f689554.js"><link rel="prefetch" href="/docs/assets/js/28.2e81fb40.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>
<div id="app" data-server-rendered="true"><div class="theme-container no-sidebar"><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/" aria-current="page" class="home-link router-link-exact-active 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">
@ -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.28 @Author Himit_ZH Email:oj.hcode@qq.com
</div></main></div><div class="global-ui"></div></div>
<script src="/docs/assets/js/app.2b24ff06.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.a50ec468.js" defer></script><script src="/docs/assets/js/2.3e9bf4c9.js" defer></script><script src="/docs/assets/js/7.120c22d9.js" defer></script>
</body>
</html>

View File

@ -8,8 +8,8 @@
<link rel="icon" href="/docs/img/favicon.ico">
<meta name="description" content="HOJ 的开发与使用文档">
<link rel="preload" href="/docs/assets/css/0.styles.a456a50a.css" as="style"><link rel="preload" href="/docs/assets/js/app.2b24ff06.js" as="script"><link rel="preload" href="/docs/assets/js/2.3e9bf4c9.js" as="script"><link rel="preload" href="/docs/assets/js/21.3710e210.js" as="script"><link rel="prefetch" href="/docs/assets/js/10.4c55a21d.js"><link rel="prefetch" href="/docs/assets/js/11.4861d789.js"><link rel="prefetch" href="/docs/assets/js/12.d8b05b7c.js"><link rel="prefetch" href="/docs/assets/js/13.a5d0a23f.js"><link rel="prefetch" href="/docs/assets/js/14.8ee17087.js"><link rel="prefetch" href="/docs/assets/js/15.618bada7.js"><link rel="prefetch" href="/docs/assets/js/16.f1865f2e.js"><link rel="prefetch" href="/docs/assets/js/17.c2e36571.js"><link rel="prefetch" href="/docs/assets/js/18.1d51026e.js"><link rel="prefetch" href="/docs/assets/js/19.28b0b6dd.js"><link rel="prefetch" href="/docs/assets/js/20.26b3a223.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.abbf0e9e.js"><link rel="prefetch" href="/docs/assets/js/26.2bf4f42a.js"><link rel="prefetch" href="/docs/assets/js/27.f0189890.js"><link rel="prefetch" href="/docs/assets/js/28.2e81fb40.js"><link rel="prefetch" href="/docs/assets/js/3.807ef1c0.js"><link rel="prefetch" href="/docs/assets/js/4.18e98edc.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.a456a50a.css">
<link rel="preload" href="/docs/assets/css/0.styles.0538ca31.css" as="style"><link rel="preload" href="/docs/assets/js/app.a50ec468.js" as="script"><link rel="preload" href="/docs/assets/js/2.3e9bf4c9.js" as="script"><link rel="preload" href="/docs/assets/js/21.3710e210.js" as="script"><link rel="prefetch" href="/docs/assets/js/10.ec70d570.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.ca97dea5.js"><link rel="prefetch" href="/docs/assets/js/14.33cb85fe.js"><link rel="prefetch" href="/docs/assets/js/15.4e37b949.js"><link rel="prefetch" href="/docs/assets/js/16.f1865f2e.js"><link rel="prefetch" href="/docs/assets/js/17.c2e36571.js"><link rel="prefetch" href="/docs/assets/js/18.1d51026e.js"><link rel="prefetch" href="/docs/assets/js/19.393c9a56.js"><link rel="prefetch" href="/docs/assets/js/20.534de8b6.js"><link rel="prefetch" href="/docs/assets/js/22.2e9ffb3f.js"><link rel="prefetch" href="/docs/assets/js/23.6fc11064.js"><link rel="prefetch" href="/docs/assets/js/24.a70541b6.js"><link rel="prefetch" href="/docs/assets/js/25.e000908d.js"><link rel="prefetch" href="/docs/assets/js/26.5dd72228.js"><link rel="prefetch" href="/docs/assets/js/27.7f689554.js"><link rel="prefetch" href="/docs/assets/js/28.2e81fb40.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">
@ -34,6 +34,6 @@
</a>
</span></p></div> </main></div><div class="global-ui"></div></div>
<script src="/docs/assets/js/app.2b24ff06.js" defer></script><script src="/docs/assets/js/2.3e9bf4c9.js" defer></script><script src="/docs/assets/js/21.3710e210.js" defer></script>
<script src="/docs/assets/js/app.a50ec468.js" defer></script><script src="/docs/assets/js/2.3e9bf4c9.js" defer></script><script src="/docs/assets/js/21.3710e210.js" defer></script>
</body>
</html>

View File

@ -8,8 +8,8 @@
<link rel="icon" href="/docs/img/favicon.ico">
<meta name="description" content="HOJ 的开发与使用文档">
<link rel="preload" href="/docs/assets/css/0.styles.a456a50a.css" as="style"><link rel="preload" href="/docs/assets/js/app.2b24ff06.js" as="script"><link rel="preload" href="/docs/assets/js/2.3e9bf4c9.js" as="script"><link rel="preload" href="/docs/assets/js/20.26b3a223.js" as="script"><link rel="prefetch" href="/docs/assets/js/10.4c55a21d.js"><link rel="prefetch" href="/docs/assets/js/11.4861d789.js"><link rel="prefetch" href="/docs/assets/js/12.d8b05b7c.js"><link rel="prefetch" href="/docs/assets/js/13.a5d0a23f.js"><link rel="prefetch" href="/docs/assets/js/14.8ee17087.js"><link rel="prefetch" href="/docs/assets/js/15.618bada7.js"><link rel="prefetch" href="/docs/assets/js/16.f1865f2e.js"><link rel="prefetch" href="/docs/assets/js/17.c2e36571.js"><link rel="prefetch" href="/docs/assets/js/18.1d51026e.js"><link rel="prefetch" href="/docs/assets/js/19.28b0b6dd.js"><link rel="prefetch" href="/docs/assets/js/21.3710e210.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.abbf0e9e.js"><link rel="prefetch" href="/docs/assets/js/26.2bf4f42a.js"><link rel="prefetch" href="/docs/assets/js/27.f0189890.js"><link rel="prefetch" href="/docs/assets/js/28.2e81fb40.js"><link rel="prefetch" href="/docs/assets/js/3.807ef1c0.js"><link rel="prefetch" href="/docs/assets/js/4.18e98edc.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.a456a50a.css">
<link rel="preload" href="/docs/assets/css/0.styles.0538ca31.css" as="style"><link rel="preload" href="/docs/assets/js/app.a50ec468.js" as="script"><link rel="preload" href="/docs/assets/js/2.3e9bf4c9.js" as="script"><link rel="preload" href="/docs/assets/js/20.534de8b6.js" as="script"><link rel="prefetch" href="/docs/assets/js/10.ec70d570.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.ca97dea5.js"><link rel="prefetch" href="/docs/assets/js/14.33cb85fe.js"><link rel="prefetch" href="/docs/assets/js/15.4e37b949.js"><link rel="prefetch" href="/docs/assets/js/16.f1865f2e.js"><link rel="prefetch" href="/docs/assets/js/17.c2e36571.js"><link rel="prefetch" href="/docs/assets/js/18.1d51026e.js"><link rel="prefetch" href="/docs/assets/js/19.393c9a56.js"><link rel="prefetch" href="/docs/assets/js/21.3710e210.js"><link rel="prefetch" href="/docs/assets/js/22.2e9ffb3f.js"><link rel="prefetch" href="/docs/assets/js/23.6fc11064.js"><link rel="prefetch" href="/docs/assets/js/24.a70541b6.js"><link rel="prefetch" href="/docs/assets/js/25.e000908d.js"><link rel="prefetch" href="/docs/assets/js/26.5dd72228.js"><link rel="prefetch" href="/docs/assets/js/27.7f689554.js"><link rel="prefetch" href="/docs/assets/js/28.2e81fb40.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">
@ -29,6 +29,6 @@
</a>
</span></p></div> </main></div><div class="global-ui"></div></div>
<script src="/docs/assets/js/app.2b24ff06.js" defer></script><script src="/docs/assets/js/2.3e9bf4c9.js" defer></script><script src="/docs/assets/js/20.26b3a223.js" defer></script>
<script src="/docs/assets/js/app.a50ec468.js" defer></script><script src="/docs/assets/js/2.3e9bf4c9.js" defer></script><script src="/docs/assets/js/20.534de8b6.js" defer></script>
</body>
</html>

View File

@ -8,8 +8,8 @@
<link rel="icon" href="/docs/img/favicon.ico">
<meta name="description" content="HOJ 的开发与使用文档">
<link rel="preload" href="/docs/assets/css/0.styles.a456a50a.css" as="style"><link rel="preload" href="/docs/assets/js/app.2b24ff06.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.4c55a21d.js"><link rel="prefetch" href="/docs/assets/js/11.4861d789.js"><link rel="prefetch" href="/docs/assets/js/12.d8b05b7c.js"><link rel="prefetch" href="/docs/assets/js/13.a5d0a23f.js"><link rel="prefetch" href="/docs/assets/js/14.8ee17087.js"><link rel="prefetch" href="/docs/assets/js/15.618bada7.js"><link rel="prefetch" href="/docs/assets/js/16.f1865f2e.js"><link rel="prefetch" href="/docs/assets/js/17.c2e36571.js"><link rel="prefetch" href="/docs/assets/js/18.1d51026e.js"><link rel="prefetch" href="/docs/assets/js/19.28b0b6dd.js"><link rel="prefetch" href="/docs/assets/js/20.26b3a223.js"><link rel="prefetch" href="/docs/assets/js/21.3710e210.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.abbf0e9e.js"><link rel="prefetch" href="/docs/assets/js/26.2bf4f42a.js"><link rel="prefetch" href="/docs/assets/js/27.f0189890.js"><link rel="prefetch" href="/docs/assets/js/28.2e81fb40.js"><link rel="prefetch" href="/docs/assets/js/3.807ef1c0.js"><link rel="prefetch" href="/docs/assets/js/4.18e98edc.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.a456a50a.css">
<link rel="preload" href="/docs/assets/css/0.styles.0538ca31.css" as="style"><link rel="preload" href="/docs/assets/js/app.a50ec468.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.ec70d570.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.ca97dea5.js"><link rel="prefetch" href="/docs/assets/js/14.33cb85fe.js"><link rel="prefetch" href="/docs/assets/js/15.4e37b949.js"><link rel="prefetch" href="/docs/assets/js/16.f1865f2e.js"><link rel="prefetch" href="/docs/assets/js/17.c2e36571.js"><link rel="prefetch" href="/docs/assets/js/18.1d51026e.js"><link rel="prefetch" href="/docs/assets/js/19.393c9a56.js"><link rel="prefetch" href="/docs/assets/js/20.534de8b6.js"><link rel="prefetch" href="/docs/assets/js/21.3710e210.js"><link rel="prefetch" href="/docs/assets/js/22.2e9ffb3f.js"><link rel="prefetch" href="/docs/assets/js/24.a70541b6.js"><link rel="prefetch" href="/docs/assets/js/25.e000908d.js"><link rel="prefetch" href="/docs/assets/js/26.5dd72228.js"><link rel="prefetch" href="/docs/assets/js/27.7f689554.js"><link rel="prefetch" href="/docs/assets/js/28.2e81fb40.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">
@ -33,6 +33,6 @@
</a>
</span></p></div> </main></div><div class="global-ui"></div></div>
<script src="/docs/assets/js/app.2b24ff06.js" defer></script><script src="/docs/assets/js/2.3e9bf4c9.js" defer></script><script src="/docs/assets/js/23.6fc11064.js" defer></script>
<script src="/docs/assets/js/app.a50ec468.js" defer></script><script src="/docs/assets/js/2.3e9bf4c9.js" defer></script><script src="/docs/assets/js/23.6fc11064.js" defer></script>
</body>
</html>

View File

@ -8,8 +8,8 @@
<link rel="icon" href="/docs/img/favicon.ico">
<meta name="description" content="HOJ 的开发与使用文档">
<link rel="preload" href="/docs/assets/css/0.styles.a456a50a.css" as="style"><link rel="preload" href="/docs/assets/js/app.2b24ff06.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.4c55a21d.js"><link rel="prefetch" href="/docs/assets/js/11.4861d789.js"><link rel="prefetch" href="/docs/assets/js/12.d8b05b7c.js"><link rel="prefetch" href="/docs/assets/js/13.a5d0a23f.js"><link rel="prefetch" href="/docs/assets/js/14.8ee17087.js"><link rel="prefetch" href="/docs/assets/js/15.618bada7.js"><link rel="prefetch" href="/docs/assets/js/16.f1865f2e.js"><link rel="prefetch" href="/docs/assets/js/17.c2e36571.js"><link rel="prefetch" href="/docs/assets/js/18.1d51026e.js"><link rel="prefetch" href="/docs/assets/js/19.28b0b6dd.js"><link rel="prefetch" href="/docs/assets/js/20.26b3a223.js"><link rel="prefetch" href="/docs/assets/js/21.3710e210.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.abbf0e9e.js"><link rel="prefetch" href="/docs/assets/js/26.2bf4f42a.js"><link rel="prefetch" href="/docs/assets/js/27.f0189890.js"><link rel="prefetch" href="/docs/assets/js/28.2e81fb40.js"><link rel="prefetch" href="/docs/assets/js/3.807ef1c0.js"><link rel="prefetch" href="/docs/assets/js/4.18e98edc.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.a456a50a.css">
<link rel="preload" href="/docs/assets/css/0.styles.0538ca31.css" as="style"><link rel="preload" href="/docs/assets/js/app.a50ec468.js" as="script"><link rel="preload" href="/docs/assets/js/2.3e9bf4c9.js" as="script"><link rel="preload" href="/docs/assets/js/24.a70541b6.js" as="script"><link rel="prefetch" href="/docs/assets/js/10.ec70d570.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.ca97dea5.js"><link rel="prefetch" href="/docs/assets/js/14.33cb85fe.js"><link rel="prefetch" href="/docs/assets/js/15.4e37b949.js"><link rel="prefetch" href="/docs/assets/js/16.f1865f2e.js"><link rel="prefetch" href="/docs/assets/js/17.c2e36571.js"><link rel="prefetch" href="/docs/assets/js/18.1d51026e.js"><link rel="prefetch" href="/docs/assets/js/19.393c9a56.js"><link rel="prefetch" href="/docs/assets/js/20.534de8b6.js"><link rel="prefetch" href="/docs/assets/js/21.3710e210.js"><link rel="prefetch" href="/docs/assets/js/22.2e9ffb3f.js"><link rel="prefetch" href="/docs/assets/js/23.6fc11064.js"><link rel="prefetch" href="/docs/assets/js/25.e000908d.js"><link rel="prefetch" href="/docs/assets/js/26.5dd72228.js"><link rel="prefetch" href="/docs/assets/js/27.7f689554.js"><link rel="prefetch" href="/docs/assets/js/28.2e81fb40.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">
@ -33,6 +33,6 @@
</a>
</span></p></div> </main></div><div class="global-ui"></div></div>
<script src="/docs/assets/js/app.2b24ff06.js" defer></script><script src="/docs/assets/js/2.3e9bf4c9.js" defer></script><script src="/docs/assets/js/24.541271c6.js" defer></script>
<script src="/docs/assets/js/app.a50ec468.js" defer></script><script src="/docs/assets/js/2.3e9bf4c9.js" defer></script><script src="/docs/assets/js/24.a70541b6.js" defer></script>
</body>
</html>

View File

@ -8,8 +8,8 @@
<link rel="icon" href="/docs/img/favicon.ico">
<meta name="description" content="HOJ 的开发与使用文档">
<link rel="preload" href="/docs/assets/css/0.styles.a456a50a.css" as="style"><link rel="preload" href="/docs/assets/js/app.2b24ff06.js" as="script"><link rel="preload" href="/docs/assets/js/2.3e9bf4c9.js" as="script"><link rel="preload" href="/docs/assets/js/25.abbf0e9e.js" as="script"><link rel="prefetch" href="/docs/assets/js/10.4c55a21d.js"><link rel="prefetch" href="/docs/assets/js/11.4861d789.js"><link rel="prefetch" href="/docs/assets/js/12.d8b05b7c.js"><link rel="prefetch" href="/docs/assets/js/13.a5d0a23f.js"><link rel="prefetch" href="/docs/assets/js/14.8ee17087.js"><link rel="prefetch" href="/docs/assets/js/15.618bada7.js"><link rel="prefetch" href="/docs/assets/js/16.f1865f2e.js"><link rel="prefetch" href="/docs/assets/js/17.c2e36571.js"><link rel="prefetch" href="/docs/assets/js/18.1d51026e.js"><link rel="prefetch" href="/docs/assets/js/19.28b0b6dd.js"><link rel="prefetch" href="/docs/assets/js/20.26b3a223.js"><link rel="prefetch" href="/docs/assets/js/21.3710e210.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.f0189890.js"><link rel="prefetch" href="/docs/assets/js/28.2e81fb40.js"><link rel="prefetch" href="/docs/assets/js/3.807ef1c0.js"><link rel="prefetch" href="/docs/assets/js/4.18e98edc.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.a456a50a.css">
<link rel="preload" href="/docs/assets/css/0.styles.0538ca31.css" as="style"><link rel="preload" href="/docs/assets/js/app.a50ec468.js" as="script"><link rel="preload" href="/docs/assets/js/2.3e9bf4c9.js" as="script"><link rel="preload" href="/docs/assets/js/25.e000908d.js" as="script"><link rel="prefetch" href="/docs/assets/js/10.ec70d570.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.ca97dea5.js"><link rel="prefetch" href="/docs/assets/js/14.33cb85fe.js"><link rel="prefetch" href="/docs/assets/js/15.4e37b949.js"><link rel="prefetch" href="/docs/assets/js/16.f1865f2e.js"><link rel="prefetch" href="/docs/assets/js/17.c2e36571.js"><link rel="prefetch" href="/docs/assets/js/18.1d51026e.js"><link rel="prefetch" href="/docs/assets/js/19.393c9a56.js"><link rel="prefetch" href="/docs/assets/js/20.534de8b6.js"><link rel="prefetch" href="/docs/assets/js/21.3710e210.js"><link rel="prefetch" href="/docs/assets/js/22.2e9ffb3f.js"><link rel="prefetch" href="/docs/assets/js/23.6fc11064.js"><link rel="prefetch" href="/docs/assets/js/24.a70541b6.js"><link rel="prefetch" href="/docs/assets/js/26.5dd72228.js"><link rel="prefetch" href="/docs/assets/js/27.7f689554.js"><link rel="prefetch" href="/docs/assets/js/28.2e81fb40.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">
@ -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/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><img src="https://img-blog.csdnimg.cn/20210528205738445.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1MzA5Nw==,size_16,color_FFFFFF,t_70" alt="在这里插入图片描述"></p> <h4 id="_1-导出题目"><a href="#_1-导出题目" class="header-anchor">#</a> 1. 导出题目</h4> <p>点击选择需要的题目便可以批量导出成一个zip压缩包分别对应一个json格式的题目数据一个对应名字的文件夹存放评测数据文件具体的文件结构如下</p> <div class="language- line-numbers-mode"><pre class="language-text"><code>+-- problem_1000.json
<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#二、导入qdoj的题目" class="sidebar-link">二、导入qdoj的题目</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><img src="https://img-blog.csdnimg.cn/20210530214011773.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1MzA5Nw==,size_16,color_FFFFFF,t_70" alt="在这里插入图片描述"></p> <h4 id="_1-导出题目"><a href="#_1-导出题目" class="header-anchor">#</a> 1. 导出题目</h4> <p>点击选择需要的题目便可以批量导出成一个zip压缩包分别对应一个json格式的题目数据一个对应名字的文件夹存放评测数据文件具体的文件结构如下</p> <div class="language- line-numbers-mode"><pre class="language-text"><code>+-- problem_1000.json
+-- problem_1000
| +-- 1.in
| +-- 1.out
@ -61,7 +61,7 @@
<span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token property">&quot;tags&quot;</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">&quot;测试题&quot;</span><span class="token punctuation">,</span><span class="token string">&quot;测试&quot;</span><span class="token punctuation">]</span><span class="token punctuation">,</span> <span class="token comment">// 题目标签,一般不超过三个 </span>
<span class="token property">&quot;problem&quot;</span><span class="token operator">:</span> <span class="token punctuation">{</span>
<span class="token property">&quot;auth&quot;</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span>
<span class="token property">&quot;auth&quot;</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token comment">// 1 公开赛</span>
<span class="token property">&quot;author&quot;</span><span class="token operator">:</span> <span class="token string">&quot;admin&quot;</span><span class="token punctuation">,</span> <span class="token comment">// 题目上传的作者,请使用用户名</span>
<span class="token property">&quot;isRemote&quot;</span><span class="token operator">:</span> <span class="token boolean">false</span><span class="token punctuation">,</span> <span class="token comment">// 均为非VJ题目不用修改</span>
<span class="token property">&quot;problemId&quot;</span><span class="token operator">:</span> <span class="token string">&quot;HOJ-1010&quot;</span><span class="token punctuation">,</span> <span class="token comment">// 题目的展示id</span>
@ -95,7 +95,7 @@
<span class="token punctuation">}</span>
<span class="token punctuation">]</span>
<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></div></div><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">
</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></div></div><h2 id="二、导入qdoj的题目"><a href="#二、导入qdoj的题目" class="header-anchor">#</a> 二、导入qdoj的题目</h2> <p>请严格按照青岛oj的后台导出的压缩文件来上传。</p> <p><img src="https://img-blog.csdnimg.cn/20210530212411781.png" alt="在这里插入图片描述"></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">
比赛介绍
@ -104,6 +104,6 @@
</a>
</span></p></div> </main></div><div class="global-ui"></div></div>
<script src="/docs/assets/js/app.2b24ff06.js" defer></script><script src="/docs/assets/js/2.3e9bf4c9.js" defer></script><script src="/docs/assets/js/25.abbf0e9e.js" defer></script>
<script src="/docs/assets/js/app.a50ec468.js" defer></script><script src="/docs/assets/js/2.3e9bf4c9.js" defer></script><script src="/docs/assets/js/25.e000908d.js" defer></script>
</body>
</html>

View File

@ -8,8 +8,8 @@
<link rel="icon" href="/docs/img/favicon.ico">
<meta name="description" content="HOJ 的开发与使用文档">
<link rel="preload" href="/docs/assets/css/0.styles.a456a50a.css" as="style"><link rel="preload" href="/docs/assets/js/app.2b24ff06.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.4c55a21d.js"><link rel="prefetch" href="/docs/assets/js/11.4861d789.js"><link rel="prefetch" href="/docs/assets/js/12.d8b05b7c.js"><link rel="prefetch" href="/docs/assets/js/13.a5d0a23f.js"><link rel="prefetch" href="/docs/assets/js/14.8ee17087.js"><link rel="prefetch" href="/docs/assets/js/15.618bada7.js"><link rel="prefetch" href="/docs/assets/js/16.f1865f2e.js"><link rel="prefetch" href="/docs/assets/js/17.c2e36571.js"><link rel="prefetch" href="/docs/assets/js/18.1d51026e.js"><link rel="prefetch" href="/docs/assets/js/19.28b0b6dd.js"><link rel="prefetch" href="/docs/assets/js/20.26b3a223.js"><link rel="prefetch" href="/docs/assets/js/21.3710e210.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.abbf0e9e.js"><link rel="prefetch" href="/docs/assets/js/27.f0189890.js"><link rel="prefetch" href="/docs/assets/js/28.2e81fb40.js"><link rel="prefetch" href="/docs/assets/js/3.807ef1c0.js"><link rel="prefetch" href="/docs/assets/js/4.18e98edc.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.a456a50a.css">
<link rel="preload" href="/docs/assets/css/0.styles.0538ca31.css" as="style"><link rel="preload" href="/docs/assets/js/app.a50ec468.js" as="script"><link rel="preload" href="/docs/assets/js/2.3e9bf4c9.js" as="script"><link rel="preload" href="/docs/assets/js/26.5dd72228.js" as="script"><link rel="prefetch" href="/docs/assets/js/10.ec70d570.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.ca97dea5.js"><link rel="prefetch" href="/docs/assets/js/14.33cb85fe.js"><link rel="prefetch" href="/docs/assets/js/15.4e37b949.js"><link rel="prefetch" href="/docs/assets/js/16.f1865f2e.js"><link rel="prefetch" href="/docs/assets/js/17.c2e36571.js"><link rel="prefetch" href="/docs/assets/js/18.1d51026e.js"><link rel="prefetch" href="/docs/assets/js/19.393c9a56.js"><link rel="prefetch" href="/docs/assets/js/20.534de8b6.js"><link rel="prefetch" href="/docs/assets/js/21.3710e210.js"><link rel="prefetch" href="/docs/assets/js/22.2e9ffb3f.js"><link rel="prefetch" href="/docs/assets/js/23.6fc11064.js"><link rel="prefetch" href="/docs/assets/js/24.a70541b6.js"><link rel="prefetch" href="/docs/assets/js/25.e000908d.js"><link rel="prefetch" href="/docs/assets/js/27.7f689554.js"><link rel="prefetch" href="/docs/assets/js/28.2e81fb40.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">
@ -33,6 +33,6 @@
</a>
</span></p></div> </main></div><div class="global-ui"></div></div>
<script src="/docs/assets/js/app.2b24ff06.js" defer></script><script src="/docs/assets/js/2.3e9bf4c9.js" defer></script><script src="/docs/assets/js/26.2bf4f42a.js" defer></script>
<script src="/docs/assets/js/app.a50ec468.js" defer></script><script src="/docs/assets/js/2.3e9bf4c9.js" defer></script><script src="/docs/assets/js/26.5dd72228.js" defer></script>
</body>
</html>

View File

@ -8,8 +8,8 @@
<link rel="icon" href="/docs/img/favicon.ico">
<meta name="description" content="HOJ 的开发与使用文档">
<link rel="preload" href="/docs/assets/css/0.styles.a456a50a.css" as="style"><link rel="preload" href="/docs/assets/js/app.2b24ff06.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.4c55a21d.js"><link rel="prefetch" href="/docs/assets/js/11.4861d789.js"><link rel="prefetch" href="/docs/assets/js/12.d8b05b7c.js"><link rel="prefetch" href="/docs/assets/js/13.a5d0a23f.js"><link rel="prefetch" href="/docs/assets/js/14.8ee17087.js"><link rel="prefetch" href="/docs/assets/js/15.618bada7.js"><link rel="prefetch" href="/docs/assets/js/16.f1865f2e.js"><link rel="prefetch" href="/docs/assets/js/17.c2e36571.js"><link rel="prefetch" href="/docs/assets/js/18.1d51026e.js"><link rel="prefetch" href="/docs/assets/js/19.28b0b6dd.js"><link rel="prefetch" href="/docs/assets/js/20.26b3a223.js"><link rel="prefetch" href="/docs/assets/js/21.3710e210.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.abbf0e9e.js"><link rel="prefetch" href="/docs/assets/js/26.2bf4f42a.js"><link rel="prefetch" href="/docs/assets/js/27.f0189890.js"><link rel="prefetch" href="/docs/assets/js/28.2e81fb40.js"><link rel="prefetch" href="/docs/assets/js/3.807ef1c0.js"><link rel="prefetch" href="/docs/assets/js/4.18e98edc.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.a456a50a.css">
<link rel="preload" href="/docs/assets/css/0.styles.0538ca31.css" as="style"><link rel="preload" href="/docs/assets/js/app.a50ec468.js" as="script"><link rel="preload" href="/docs/assets/js/2.3e9bf4c9.js" as="script"><link rel="preload" href="/docs/assets/js/22.2e9ffb3f.js" as="script"><link rel="prefetch" href="/docs/assets/js/10.ec70d570.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.ca97dea5.js"><link rel="prefetch" href="/docs/assets/js/14.33cb85fe.js"><link rel="prefetch" href="/docs/assets/js/15.4e37b949.js"><link rel="prefetch" href="/docs/assets/js/16.f1865f2e.js"><link rel="prefetch" href="/docs/assets/js/17.c2e36571.js"><link rel="prefetch" href="/docs/assets/js/18.1d51026e.js"><link rel="prefetch" href="/docs/assets/js/19.393c9a56.js"><link rel="prefetch" href="/docs/assets/js/20.534de8b6.js"><link rel="prefetch" href="/docs/assets/js/21.3710e210.js"><link rel="prefetch" href="/docs/assets/js/23.6fc11064.js"><link rel="prefetch" href="/docs/assets/js/24.a70541b6.js"><link rel="prefetch" href="/docs/assets/js/25.e000908d.js"><link rel="prefetch" href="/docs/assets/js/26.5dd72228.js"><link rel="prefetch" href="/docs/assets/js/27.7f689554.js"><link rel="prefetch" href="/docs/assets/js/28.2e81fb40.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">
@ -33,6 +33,6 @@
</a>
</span></p></div> </main></div><div class="global-ui"></div></div>
<script src="/docs/assets/js/app.2b24ff06.js" defer></script><script src="/docs/assets/js/2.3e9bf4c9.js" defer></script><script src="/docs/assets/js/22.5a29a611.js" defer></script>
<script src="/docs/assets/js/app.a50ec468.js" defer></script><script src="/docs/assets/js/2.3e9bf4c9.js" defer></script><script src="/docs/assets/js/22.2e9ffb3f.js" defer></script>
</body>
</html>

View File

@ -8,8 +8,8 @@
<link rel="icon" href="/docs/img/favicon.ico">
<meta name="description" content="HOJ 的开发与使用文档">
<link rel="preload" href="/docs/assets/css/0.styles.a456a50a.css" as="style"><link rel="preload" href="/docs/assets/js/app.2b24ff06.js" as="script"><link rel="preload" href="/docs/assets/js/2.3e9bf4c9.js" as="script"><link rel="preload" href="/docs/assets/js/27.f0189890.js" as="script"><link rel="prefetch" href="/docs/assets/js/10.4c55a21d.js"><link rel="prefetch" href="/docs/assets/js/11.4861d789.js"><link rel="prefetch" href="/docs/assets/js/12.d8b05b7c.js"><link rel="prefetch" href="/docs/assets/js/13.a5d0a23f.js"><link rel="prefetch" href="/docs/assets/js/14.8ee17087.js"><link rel="prefetch" href="/docs/assets/js/15.618bada7.js"><link rel="prefetch" href="/docs/assets/js/16.f1865f2e.js"><link rel="prefetch" href="/docs/assets/js/17.c2e36571.js"><link rel="prefetch" href="/docs/assets/js/18.1d51026e.js"><link rel="prefetch" href="/docs/assets/js/19.28b0b6dd.js"><link rel="prefetch" href="/docs/assets/js/20.26b3a223.js"><link rel="prefetch" href="/docs/assets/js/21.3710e210.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.abbf0e9e.js"><link rel="prefetch" href="/docs/assets/js/26.2bf4f42a.js"><link rel="prefetch" href="/docs/assets/js/28.2e81fb40.js"><link rel="prefetch" href="/docs/assets/js/3.807ef1c0.js"><link rel="prefetch" href="/docs/assets/js/4.18e98edc.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.a456a50a.css">
<link rel="preload" href="/docs/assets/css/0.styles.0538ca31.css" as="style"><link rel="preload" href="/docs/assets/js/app.a50ec468.js" as="script"><link rel="preload" href="/docs/assets/js/2.3e9bf4c9.js" as="script"><link rel="preload" href="/docs/assets/js/27.7f689554.js" as="script"><link rel="prefetch" href="/docs/assets/js/10.ec70d570.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.ca97dea5.js"><link rel="prefetch" href="/docs/assets/js/14.33cb85fe.js"><link rel="prefetch" href="/docs/assets/js/15.4e37b949.js"><link rel="prefetch" href="/docs/assets/js/16.f1865f2e.js"><link rel="prefetch" href="/docs/assets/js/17.c2e36571.js"><link rel="prefetch" href="/docs/assets/js/18.1d51026e.js"><link rel="prefetch" href="/docs/assets/js/19.393c9a56.js"><link rel="prefetch" href="/docs/assets/js/20.534de8b6.js"><link rel="prefetch" href="/docs/assets/js/21.3710e210.js"><link rel="prefetch" href="/docs/assets/js/22.2e9ffb3f.js"><link rel="prefetch" href="/docs/assets/js/23.6fc11064.js"><link rel="prefetch" href="/docs/assets/js/24.a70541b6.js"><link rel="prefetch" href="/docs/assets/js/25.e000908d.js"><link rel="prefetch" href="/docs/assets/js/26.5dd72228.js"><link rel="prefetch" href="/docs/assets/js/28.2e81fb40.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">
@ -82,6 +82,6 @@
<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.2b24ff06.js" defer></script><script src="/docs/assets/js/2.3e9bf4c9.js" defer></script><script src="/docs/assets/js/27.f0189890.js" defer></script>
<script src="/docs/assets/js/app.a50ec468.js" defer></script><script src="/docs/assets/js/2.3e9bf4c9.js" defer></script><script src="/docs/assets/js/27.7f689554.js" defer></script>
</body>
</html>

View File

@ -8,8 +8,8 @@
<link rel="icon" href="/docs/img/favicon.ico">
<meta name="description" content="HOJ 的开发与使用文档">
<link rel="preload" href="/docs/assets/css/0.styles.a456a50a.css" as="style"><link rel="preload" href="/docs/assets/js/app.2b24ff06.js" as="script"><link rel="preload" href="/docs/assets/js/2.3e9bf4c9.js" as="script"><link rel="preload" href="/docs/assets/js/28.2e81fb40.js" as="script"><link rel="prefetch" href="/docs/assets/js/10.4c55a21d.js"><link rel="prefetch" href="/docs/assets/js/11.4861d789.js"><link rel="prefetch" href="/docs/assets/js/12.d8b05b7c.js"><link rel="prefetch" href="/docs/assets/js/13.a5d0a23f.js"><link rel="prefetch" href="/docs/assets/js/14.8ee17087.js"><link rel="prefetch" href="/docs/assets/js/15.618bada7.js"><link rel="prefetch" href="/docs/assets/js/16.f1865f2e.js"><link rel="prefetch" href="/docs/assets/js/17.c2e36571.js"><link rel="prefetch" href="/docs/assets/js/18.1d51026e.js"><link rel="prefetch" href="/docs/assets/js/19.28b0b6dd.js"><link rel="prefetch" href="/docs/assets/js/20.26b3a223.js"><link rel="prefetch" href="/docs/assets/js/21.3710e210.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.abbf0e9e.js"><link rel="prefetch" href="/docs/assets/js/26.2bf4f42a.js"><link rel="prefetch" href="/docs/assets/js/27.f0189890.js"><link rel="prefetch" href="/docs/assets/js/3.807ef1c0.js"><link rel="prefetch" href="/docs/assets/js/4.18e98edc.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.a456a50a.css">
<link rel="preload" href="/docs/assets/css/0.styles.0538ca31.css" as="style"><link rel="preload" href="/docs/assets/js/app.a50ec468.js" as="script"><link rel="preload" href="/docs/assets/js/2.3e9bf4c9.js" as="script"><link rel="preload" href="/docs/assets/js/28.2e81fb40.js" as="script"><link rel="prefetch" href="/docs/assets/js/10.ec70d570.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.ca97dea5.js"><link rel="prefetch" href="/docs/assets/js/14.33cb85fe.js"><link rel="prefetch" href="/docs/assets/js/15.4e37b949.js"><link rel="prefetch" href="/docs/assets/js/16.f1865f2e.js"><link rel="prefetch" href="/docs/assets/js/17.c2e36571.js"><link rel="prefetch" href="/docs/assets/js/18.1d51026e.js"><link rel="prefetch" href="/docs/assets/js/19.393c9a56.js"><link rel="prefetch" href="/docs/assets/js/20.534de8b6.js"><link rel="prefetch" href="/docs/assets/js/21.3710e210.js"><link rel="prefetch" href="/docs/assets/js/22.2e9ffb3f.js"><link rel="prefetch" href="/docs/assets/js/23.6fc11064.js"><link rel="prefetch" href="/docs/assets/js/24.a70541b6.js"><link rel="prefetch" href="/docs/assets/js/25.e000908d.js"><link rel="prefetch" href="/docs/assets/js/26.5dd72228.js"><link rel="prefetch" href="/docs/assets/js/27.7f689554.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">
@ -41,6 +41,6 @@
</a>
</span></p></div> </main></div><div class="global-ui"></div></div>
<script src="/docs/assets/js/app.2b24ff06.js" defer></script><script src="/docs/assets/js/2.3e9bf4c9.js" defer></script><script src="/docs/assets/js/28.2e81fb40.js" defer></script>
<script src="/docs/assets/js/app.a50ec468.js" defer></script><script src="/docs/assets/js/2.3e9bf4c9.js" defer></script><script src="/docs/assets/js/28.2e81fb40.js" defer></script>
</body>
</html>

View File

@ -276,6 +276,9 @@ hoj-frontend:
volumes:
- ./server.crt:/etc/nginx/etc/crt/server.crt
- ./server.key:/etc/nginx/etc/crt/server.key
# 修改前端logo
# - ./logo.a0924d7d.png:/usr/share/nginx/html/assets/img/logo.a0924d7d.png
# - ./backstage.8bce8c6e.png:/usr/share/nginx/html/assets/img/backstage.8bce8c6e.png
environment:
- SERVER_NAME=localhost # 提供你的域名!!!!
- BACKEND_SERVER_HOST=${BACKEND_HOST:-172.20.0.5} # backend后端服务地址

View File

@ -2,7 +2,7 @@
## 一、HOJ题目
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210528205738445.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1MzA5Nw==,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210530214011773.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1MzA5Nw==,size_16,color_FFFFFF,t_70)
#### 1. 导出题目
@ -60,7 +60,7 @@
],
"tags": ["测试题","测试"], // 题目标签,一般不超过三个
"problem": {
"auth": 1,
"auth": 1, // 1 公开赛
"author": "admin", // 题目上传的作者,请使用用户名
"isRemote": false, // 均为非VJ题目不用修改
"problemId": "HOJ-1010", // 题目的展示id
@ -96,14 +96,16 @@
}
```
## 二、导入qdoj的题目
请严格按照青岛oj的后台导出的压缩文件来上传。
## 二、导入其它OJ题目
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210530212411781.png)
## 三、导入其它OJ题目
导入HDU、Codeforces题目只需提供该题目的题号便可一键导入
**管理员进入后台,点击题目列表**
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210523223454472.png#pic_center)

View File

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

View File

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

View File

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

View File

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

View File

@ -0,0 +1,2 @@
9337c77a7c63706344082fe0256aaad179778ae0 {"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\":\"4b12eb0f2170bbf798c6a298afcd1ae4\"}","integrity":"sha512-dKypdvON4wbpRdQ3LGv1e/SLtMCpwhRf5Msve4N4WwllyaictNVWdm28HCE5E8YCUbK2CMpmGyETE0WpVO49fw==","time":1622382211109,"size":205025}

View File

@ -0,0 +1,2 @@
320a58efc513167df1a2001cd25fea02bf53044b {"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\":\"63912d5bf7eb440b06f6e2196185734c\"}","integrity":"sha512-n/FkdsUEua4EmG8WNGljyeqk9k/BnRN5riYVFNCBJ3C5FJDsqGhhZqugHpkXB289xADtzTGPCKR4NyacWmFTkA==","time":1622382209416,"size":65546}

View File

@ -0,0 +1,2 @@
ff99c1ef26b824c1a9a0d4776f8ddd851863f464 {"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\":\"4aaf0e8a7a0d744753618953ad40d13d\"}","integrity":"sha512-DUlHQW6EHEVZMa6oBKJRL3koom73n5VQofZRhvMd5OmLWc0eCSmTchLXXOAFfyeOoJbdWDKvTqJnveMnCVTQcQ==","time":1622382208688,"size":1095}

View File

@ -0,0 +1,2 @@
da843ae7134c1974cebcb9beb0e23935ac6301f2 {"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\":\"24ec5fc09f61351875463a79658be1ee\"}","integrity":"sha512-TCoN7+2RtXEeFjinMZmkjbkIJ1MALt1BLDP+a7TqfCHg8Y0yGPaoqvPSDCK9msWDVv3uBhWw9pRiGFf56YuNgQ==","time":1622382208577,"size":1190}

View File

@ -0,0 +1,2 @@
1be3ab22013414241bbad71828c215bde6f1b995 {"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\":\"f373845bf39e012eb3970e4a22da1d4d\"}","integrity":"sha512-L0I4WoKw54T8CFQ0lngfCDrdZkigpwj2Bbisbg8fvfCTTUSbzZhcZfcKpDQqiBghx92wTrrBBSb2cPZwG0qcRA==","time":1622382208574,"size":787}

View File

@ -0,0 +1,2 @@
f835fe463bd53f6cf631fecf8ff9bb56a46fc40d {"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\":\"a3392254f46a4d2974ae09d8df108504\"}","integrity":"sha512-xqs44ojfaWzxYLHio2XYg0+7RuDZ8IJWEQRt0gAdPi8v1qfuPinPmk1mNc1emq6KDNJq3l/9RRYKFIi+9ha7ZQ==","time":1622382209224,"size":34511}

View File

@ -0,0 +1,2 @@
172b5acbdece410f338362db412d35421133bfed {"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\":\"aed24cd048e1fc12ea4bd788a2857722\"}","integrity":"sha512-im+0v6SxoY8OvomjSLg3KwFRyHHBC3Wv9k3FykOWrz8hqA00cBUiOV/67lxzwal8csdvYFcmVPEjeK1vVI/MEw==","time":1622382209285,"size":43127}

View File

@ -0,0 +1,2 @@
9de70d5abed4b813ffea1980e4b026e2b802b616 {"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\":\"e242c1ed687749cba9612ca244b2aba4\"}","integrity":"sha512-Y9bR0itT/HYli1Bw93+NtlUV1BJANZa4l0r/4i3BhZbjvBum/WF6IeCbDvSexGA5CfHMgYIho70n7RZEmDrzvw==","time":1622382208633,"size":7479}

View File

@ -0,0 +1,2 @@
94351e6012badfaa738b8cdb7d809e79844fe6e4 {"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\":\"f1099b6087b7caed766fce7f153ac499\"}","integrity":"sha512-jBYj2Frua8jf4PwpHTIXAB6ayut9cWQjR9+/6EubUS1naxPgsmBqopGi3q3iGWtrQDAlgYRUYkFI7mHLbDMi6g==","time":1622382208581,"size":2049}

View File

@ -0,0 +1,2 @@
64bce4a5a61200fd5b16b3a6becd6bdef54f9624 {"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\":\"5bc9a2da79a7fdbbde1695f1a3caedc4\"}","integrity":"sha512-vul5Vk6Qupm3VTiCZ6XHgzm0+XPlFa70FnmwCewh6aCH0RJMUKQJvST/K5CEx9Pkk6EjA8hJED9S/ed+kSp2FA==","time":1622382209124,"size":18120}

View File

@ -0,0 +1,2 @@
6deadd14cc725c0d65ed23e5d53f32aba65fc627 {"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\":\"4c9b127494d107feedaa5982f16b051e\"}","integrity":"sha512-Gcve4WY1BJ6z0OxUN1n9qPV9jvqDq3TGhesFmxugQjj50IPR8Xg3IFCHFPi+2LqeHjwNV+bc19+wAm0YVFJVTQ==","time":1622382209126,"size":24776}

View File

@ -0,0 +1,2 @@
9de4f776fc41dd2601b461dff919b4762523ec38 {"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\":\"b7b16b758bb016a8ac08d7aaf51308a9\"}","integrity":"sha512-vTjwRIABKwSVDtD8+0MbXr4qo0pL8M/K8e7g7Lafz/QVgKSBzkQ2829sJ7ZvL9zdoULDHiJTI+zCyWEBC1amwA==","time":1622382208678,"size":5749}

View File

@ -19,6 +19,7 @@ import top.hcode.hoj.pojo.dto.ProblemDto;
import top.hcode.hoj.pojo.entity.*;
import top.hcode.hoj.pojo.vo.UserRolesVo;
import top.hcode.hoj.service.impl.*;
import top.hcode.hoj.utils.Constants;
import javax.servlet.http.HttpServletRequest;
@ -63,9 +64,11 @@ public class AdminProblemController {
QueryWrapper<Problem> queryWrapper = new QueryWrapper<>();
queryWrapper.orderByDesc("gmt_create");
if (!StringUtils.isEmpty(oj)) {
queryWrapper.like("problem_id", oj.toUpperCase());
if (oj != null && oj.equals("Mine")) {
queryWrapper.eq("is_remote", false);
}
if (!StringUtils.isEmpty(keyword)) {
final String key = keyword.trim();
queryWrapper.and(wrapper -> wrapper.like("title", key).or()

View File

@ -50,13 +50,14 @@ public class AdminUserController {
@RequiresPermissions("announcement_admin")
public CommonResult getUserList(@RequestParam(value = "limit", required = false) Integer limit,
@RequestParam(value = "currentPage", required = false) Integer currentPage,
@RequestParam(value = "onlyAdmin", defaultValue = "false") Boolean onlyAdmin,
@RequestParam(value = "keyword", required = false) String keyword) {
if (currentPage == null || currentPage < 1) currentPage = 1;
if (limit == null || limit < 1) limit = 10;
if (keyword != null) {
keyword = keyword.trim();
}
IPage<UserRolesVo> userList = userRoleService.getUserList(limit, currentPage, keyword);
IPage<UserRolesVo> userList = userRoleService.getUserList(limit, currentPage, keyword, onlyAdmin);
if (userList.getTotal() == 0) { // 未查询到一条数据
return CommonResult.successResponse(userList, "暂无数据");
} else {

View File

@ -58,7 +58,7 @@ public class ConfigController {
return CommonResult.successResponse(configService.getJudgeServiceInfo());
}
@RequiresPermissions("announcement_admin")
@RequiresPermissions("system_info_admin")
@RequestMapping("/get-web-config")
public CommonResult getWebConfig() {
@ -66,6 +66,7 @@ public class ConfigController {
MapUtil.builder().put("baseUrl", configVo.getBaseUrl())
.put("name", configVo.getName())
.put("shortName", configVo.getShortName())
.put("description", configVo.getDescription())
.put("register", configVo.getRegister())
.put("recordName", configVo.getRecordName())
.put("recordUrl", configVo.getRecordUrl())
@ -74,7 +75,7 @@ public class ConfigController {
);
}
@RequiresPermissions("announcement_admin")
@RequiresPermissions("system_info_admin")
@RequestMapping(value = "/set-web-config",method = RequestMethod.PUT)
public CommonResult setWebConfig(@RequestBody HashMap<String,Object> params){
@ -86,7 +87,7 @@ public class ConfigController {
}
}
@RequiresPermissions("announcement_admin")
@RequiresPermissions("system_info_admin")
@RequestMapping("/get-email-config")
public CommonResult getEmailConfig() {
return CommonResult.successResponse(
@ -99,7 +100,7 @@ public class ConfigController {
);
}
@RequiresPermissions("announcement_admin")
@RequiresPermissions("system_info_admin")
@PutMapping("/set-email-config")
public CommonResult setEmailConfig(@RequestBody HashMap<String,Object> params) {
@ -111,7 +112,7 @@ public class ConfigController {
}
}
@RequiresPermissions("announcement_admin")
@RequiresPermissions("system_info_admin")
@PostMapping("/test-email")
public CommonResult testEmail(@RequestBody HashMap<String,Object> params) throws MessagingException {
String email = (String) params.get("email");
@ -124,7 +125,7 @@ public class ConfigController {
}
}
@RequiresPermissions("announcement_admin")
@RequiresPermissions("system_info_admin")
@RequestMapping("/get-db-and-redis-config")
public CommonResult getDBAndRedisConfig(){
@ -141,7 +142,7 @@ public class ConfigController {
);
}
@RequiresPermissions("announcement_admin")
@RequiresPermissions("system_info_admin")
@PutMapping("/set-db-and-redis-config")
public CommonResult setDBAndRedisConfig(@RequestBody HashMap<String,Object> params){
boolean result = configService.setDBAndRedisConfig(params);

View File

@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.io.file.FileReader;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.text.UnicodeUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ZipUtil;
import cn.hutool.core.io.file.FileWriter;
@ -14,6 +15,7 @@ import com.alibaba.excel.EasyExcel;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.formula.functions.T;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authz.annotation.Logical;
import org.apache.shiro.authz.annotation.RequiresAuthentication;
@ -30,6 +32,7 @@ import org.yaml.snakeyaml.constructor.Constructor;
import org.yaml.snakeyaml.error.YAMLException;
import top.hcode.hoj.common.result.CommonResult;
import top.hcode.hoj.pojo.dto.ProblemDto;
import top.hcode.hoj.pojo.dto.QDOJProblemDto;
import top.hcode.hoj.pojo.entity.*;
import top.hcode.hoj.pojo.vo.*;
import top.hcode.hoj.service.impl.*;
@ -675,7 +678,6 @@ public class FileController {
HashMap<String, File> problemInfo = new HashMap<>();
HashMap<String, File> testcaseInfo = new HashMap<>();
// 遍历读取与检查是否in和out文件一一对应否则报错
for (File tmp : files) {
if (tmp.isFile()) {
// 检查文件是否时json文件
@ -723,6 +725,11 @@ public class FileController {
UserRolesVo userRolesVo = (UserRolesVo) session.getAttribute("userInfo");
List<ProblemDto> problemDtos = new LinkedList<>();
List<Tag> tagList = tagService.list();
HashMap<String, Long> tagMap = new HashMap<>();
for (Tag tag : tagList) {
tagMap.put(tag.getName(), tag.getId());
}
for (String key : problemInfo.keySet()) {
ImportProblemVo importProblemVo = problemVoMap.get(key);
// 格式化题目语言
@ -757,12 +764,6 @@ public class FileController {
problemCaseList.add(BeanUtil.mapToBean(tmp, ProblemCase.class, true));
}
List<Tag> tagList = tagService.list();
HashMap<String, Long> tagMap = new HashMap<>();
for (Tag tag : tagList) {
tagMap.put(tag.getName(), tag.getId());
}
ProblemDto problemDto = new ProblemDto();
problemDto.setIsSpj(importProblemVo.getIsSpj())
.setProblem(problem)
@ -783,6 +784,203 @@ public class FileController {
}
/**
* @param file
* @MethodName importProblem
* @Description zip文件导入题目
* @Return
* @Since 2021/5/27
*/
@RequiresRoles(value = {"root", "admin"}, logical = Logical.OR)
@RequiresAuthentication
@ResponseBody
@Transactional
@PostMapping("/import-qdoj-problem")
public CommonResult importQDOJProblem(@RequestParam("file") MultipartFile file, HttpServletRequest request) {
String suffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".") + 1);
if (!"zip".toUpperCase().contains(suffix.toUpperCase())) {
return CommonResult.errorResponse("请上传zip格式的题目文件压缩包");
}
String fileDirId = IdUtil.simpleUUID();
String fileDir = Constants.File.TESTCASE_TMP_FOLDER.getPath() + File.separator + fileDirId;
String filePath = fileDir + File.separator + file.getOriginalFilename();
// 文件夹不存在就新建
FileUtil.mkdir(fileDir);
try {
file.transferTo(new File(filePath));
} catch (IOException e) {
FileUtil.del(fileDir);
return CommonResult.errorResponse("服务器异常:评测数据上传失败!");
}
// 将压缩包压缩到指定文件夹
ZipUtil.unzip(filePath, fileDir);
// 删除zip文件
FileUtil.del(filePath);
// 检查文件是否存在
File testCaseFileList = new File(fileDir);
File[] files = testCaseFileList.listFiles();
if (files == null || files.length == 0) {
FileUtil.del(fileDir);
return CommonResult.errorResponse("评测数据压缩包里文件不能为空!");
}
HashMap<String, File> problemInfo = new HashMap<>();
for (File tmp : files) {
if (tmp.isDirectory()) {
File[] problemAndTestcase = tmp.listFiles();
if (problemAndTestcase == null || problemAndTestcase.length == 0) {
FileUtil.del(fileDir);
return CommonResult.errorResponse("编号为:" + tmp.getName() + "的文件夹为空!");
}
for (File problemFile : problemAndTestcase) {
if (problemFile.isFile()) {
// 检查文件是否时json文件
if (!problemFile.getName().endsWith("json")) {
FileUtil.del(fileDir);
return CommonResult.errorResponse("编号为:" + tmp.getName() + "的文件夹里面的题目数据格式错误请使用json文件");
}
problemInfo.put(tmp.getName(), problemFile);
}
}
}
}
// 读取json文件生成对象
HashMap<String, QDOJProblemDto> problemVoMap = new HashMap<>();
for (String key : problemInfo.keySet()) {
try {
FileReader fileReader = new FileReader(problemInfo.get(key));
JSONObject problemJson = JSONUtil.parseObj(fileReader.readString());
QDOJProblemDto qdojProblemDto = QDOJProblemToProblemVo(problemJson);
problemVoMap.put(key, qdojProblemDto);
} catch (Exception e) {
FileUtil.del(fileDir);
return CommonResult.errorResponse("请检查编号为:" + key + "的题目json文件的格式" + e.getLocalizedMessage());
}
}
QueryWrapper<Language> languageQueryWrapper = new QueryWrapper<>();
languageQueryWrapper.eq("oj", "ME");
List<Language> languageList = languageService.list(languageQueryWrapper);
HashMap<String, Long> languageMap = new HashMap<>();
for (Language language : languageList) {
languageMap.put(language.getName(), language.getId());
}
// 获取当前登录的用户
HttpSession session = request.getSession();
UserRolesVo userRolesVo = (UserRolesVo) session.getAttribute("userInfo");
List<Tag> tagList = tagService.list();
HashMap<String, Long> tagMap = new HashMap<>();
for (Tag tag : tagList) {
tagMap.put(tag.getName(), tag.getId());
}
List<ProblemDto> problemDtos = new LinkedList<>();
for (String key : problemInfo.keySet()) {
QDOJProblemDto qdojProblemDto = problemVoMap.get(key);
// 格式化题目语言
List<Language> languages = new LinkedList<>();
for (String lang : qdojProblemDto.getLanguages()) {
Long lid = languageMap.getOrDefault(lang, null);
languages.add(new Language().setId(lid).setName(lang));
}
Problem problem = qdojProblemDto.getProblem();
if (problem.getAuthor() == null) {
problem.setAuthor(userRolesVo.getUsername());
}
ProblemDto problemDto = new ProblemDto();
problemDto.setIsSpj(qdojProblemDto.getIsSpj())
.setProblem(problem)
.setCodeTemplates(qdojProblemDto.getCodeTemplates())
.setTags(qdojProblemDto.getTags().stream().map(tag -> new Tag().setName(tag).setId(tagMap.getOrDefault(tag, null))).collect(Collectors.toList()))
.setLanguages(languages)
.setUploadTestcaseDir(fileDir + File.separator + key + File.separator + "testcase")
.setIsUploadTestCase(true)
.setSamples(qdojProblemDto.getSamples());
problemDtos.add(problemDto);
}
for (ProblemDto problemDto : problemDtos) {
problemService.adminAddProblem(problemDto);
}
FileUtil.del(fileDir);
return CommonResult.successResponse(null, "导入题目成功");
}
private QDOJProblemDto QDOJProblemToProblemVo(JSONObject problemJson) {
QDOJProblemDto qdojProblemDto = new QDOJProblemDto();
List<String> tags = (List<String>) problemJson.get("tags");
qdojProblemDto.setTags(tags.stream().map(UnicodeUtil::toString).collect(Collectors.toList()));
qdojProblemDto.setLanguages(Arrays.asList("C", "C++", "Java", "Python3", "Python2", "Golang", "C#"));
JSONObject spj = problemJson.getJSONObject("spj");
qdojProblemDto.setIsSpj(spj != null);
Problem problem = new Problem();
problem.setAuth(1)
.setSource(problemJson.getStr("source", null))
.setDifficulty(1)
.setProblemId(problemJson.getStr("display_id"))
.setIsRemoveEndBlank(true)
.setOpenCaseResult(true)
.setCodeShare(false)
.setType(problemJson.getStr("rule_type").equals("ACM") ? 0 : 1)
.setTitle(problemJson.getStr("title"))
.setDescription(UnicodeUtil.toString(problemJson.getJSONObject("description").getStr("value")))
.setInput(UnicodeUtil.toString(problemJson.getJSONObject("input_description").getStr("value")))
.setOutput(UnicodeUtil.toString(problemJson.getJSONObject("output_description").getStr("value")))
.setHint(UnicodeUtil.toString(problemJson.getJSONObject("hint").getStr("value")))
.setTimeLimit(problemJson.getInt("time_limit"))
.setMemoryLimit(problemJson.getInt("memory_limit"));
if (qdojProblemDto.getIsSpj() && spj != null) {
problem.setSpjCode(spj.getStr("code"))
.setSpjLanguage(spj.getStr("language"));
}
JSONArray samples = problemJson.getJSONArray("samples");
StringBuilder sb = new StringBuilder();
for (int i = 0; i < samples.size(); i++) {
JSONObject sample = (JSONObject) samples.get(i);
String input = sample.getStr("input");
String output = sample.getStr("output");
sb.append("<input>").append(input).append("</input>");
sb.append("<output>").append(output).append("</output>");
}
problem.setExamples(sb.toString());
int sumScore = 0;
JSONArray testcaseList = problemJson.getJSONArray("test_case_score");
List<ProblemCase> problemSamples = new LinkedList<>();
for (int i = 0; i < testcaseList.size(); i++) {
JSONObject testcase = (JSONObject) testcaseList.get(i);
String input = testcase.getStr("input_name");
String output = testcase.getStr("output_name");
Integer score = testcase.getInt("score", null);
problemSamples.add(new ProblemCase().setInput(input).setOutput(output).setScore(score));
if (score != null) {
sumScore += score;
}
}
problem.setIsRemote(false);
problem.setIoScore(sumScore);
qdojProblemDto.setSamples(problemSamples);
qdojProblemDto.setProblem(problem);
return qdojProblemDto;
}
/**
* @param pidList
* @param response

View File

@ -137,6 +137,8 @@ public class HomeController {
.put("register", configVo.getRegister())
.put("recordName", configVo.getRecordName())
.put("recordUrl", configVo.getRecordUrl())
.put("description", configVo.getDescription())
.put("email", configVo.getEmailUsername())
.put("projectName", configVo.getProjectName())
.put("projectUrl", configVo.getProjectUrl()).map()
);

View File

@ -88,7 +88,9 @@ public class ProblemController {
pid = Long.valueOf(keyword);
}
}
if (oj!=null && !Constants.RemoteOJ.isRemoteOJ(oj)) {
oj = "Mine";
}
Page<ProblemVo> problemList = problemService.getProblemList(limit, currentPage, pid, keyword,
difficulty, tagId, oj);
if (problemList.getTotal() == 0) { // 未查询到一条数据

View File

@ -13,7 +13,7 @@ import java.util.List;
/**
* <p>
* Mapper 接口
* Mapper 接口
* </p>
*
* @author Himit_ZH
@ -22,8 +22,13 @@ import java.util.List;
@Mapper
@Repository
public interface UserRoleMapper extends BaseMapper<UserRole> {
UserRolesVo getUserRoles(@Param("uid")String uid,@Param("username")String username);
IPage<UserRolesVo> getUserList(Page<UserRolesVo> page, @Param("limit")int limit,
@Param("currentPage")int currentPage,
@Param("keyword")String keyword);
UserRolesVo getUserRoles(@Param("uid") String uid, @Param("username") String username);
IPage<UserRolesVo> getUserList(Page<UserRolesVo> page, @Param("limit") int limit,
@Param("currentPage") int currentPage,
@Param("keyword") String keyword);
IPage<UserRolesVo> getAdminUserList(Page<UserRolesVo> page, @Param("limit") int limit,
@Param("currentPage") int currentPage,
@Param("keyword") String keyword);
}

View File

@ -44,8 +44,11 @@
<if test="tid != null">
and pt.tid = #{tid}
</if>
<if test="oj != null">
and p.problem_id like concat(#{oj},'%')
<if test="oj != null and oj !='Mine'">
and p.problem_id like concat(#{oj},'%') and p.is_remote=true
</if>
<if test="oj != null and oj =='Mine'">
and p.is_remote=false
</if>
</where>
order by length(p.problem_id) asc,p.problem_id asc

View File

@ -6,7 +6,7 @@
(SELECT COUNT( DISTINCT pid ) FROM user_acproblem WHERE uid =u.uuid) AS solved,
(SELECT COUNT(pid) FROM user_acproblem WHERE uid =u.uuid) AS ac
FROM user_info u,user_record ur WHERE u.uuid = ur.uid AND u.status = 0
ORDER BY ac DESC,solved DESC
ORDER BY solved DESC,ac DESC
</select>
<select id="getRecent7ACRank" resultType="top.hcode.hoj.pojo.vo.ACMRankVo">
@ -19,7 +19,7 @@
and DATE(gmt_create) >= DATE_SUB(CURDATE(),INTERVAL 7 DAY)) AS ac
FROM user_info u,user_record ur WHERE u.uuid = ur.uid AND u.status = 0
ORDER BY ac DESC,solved DESC LIMIT 10
ORDER BY solved DESC,ac DESC LIMIT 10
</select>
<select id="getOIRankList" resultType="top.hcode.hoj.pojo.vo.OIRankVo" useCache="true">

View File

@ -65,7 +65,8 @@
<result column="avatar" property="avatar"></result>
<result column="gmt_create" property="gmtCreate"></result>
<result column="gmt_modified" property="gmtModified"></result>
<collection property="roles" ofType="top.hcode.hoj.pojo.entity.Role" select="getUserListRoles" column="uuid">
<collection property="roles" ofType="top.hcode.hoj.pojo.entity.Role" select="getUserListRoles"
column="uuid=uuid">
</collection>
</resultMap>
@ -88,4 +89,18 @@
select r.* from role r,user_role ur where ur.uid=#{uuid} and ur.role_id = r.id
</select>
<!-- 主查询 -->
<select id="getAdminUserList" resultMap="map_UserRolesList" resultType="list">
SELECT u.* FROM user_info u, (SELECT DISTINCT ur.uid AS uid FROM user_role ur WHERE ur.role_id=1000 OR ur.role_id=1001) t
<where>
t.uid = u.uuid
<if test="keyword!=null and keyword!=''">
and (u.username like CONCAT("%",#{keyword},"%")
or u.email like CONCAT("%",#{keyword},"%")
or u.realname like CONCAT("%",#{keyword},"%"))
</if>
</where>
order by u.gmt_create desc
</select>
</mapper>

View File

@ -0,0 +1,80 @@
package top.hcode.hoj.pojo.dto;
import lombok.ToString;
import lombok.experimental.Accessors;
import top.hcode.hoj.pojo.entity.CodeTemplate;
import top.hcode.hoj.pojo.entity.Problem;
import top.hcode.hoj.pojo.entity.ProblemCase;
import java.io.Serializable;
import java.util.HashMap;
import java.util.List;
/**
* @Author: Himit_ZH
* @Date: 2021/5/30 15:09
* @Description:
*/
@ToString
@Accessors(chain = true)
public class QDOJProblemDto implements Serializable {
private Problem problem;
private List<String> languages;
private List<ProblemCase> samples;
private List<String> tags;
private List<CodeTemplate> codeTemplates;
private Boolean isSpj;
public Problem getProblem() {
return problem;
}
public void setProblem(Problem problem) {
this.problem = problem;
}
public List<String> getLanguages() {
return languages;
}
public void setLanguages(List<String> languages) {
this.languages = languages;
}
public List<ProblemCase> getSamples() {
return samples;
}
public void setSamples(List<ProblemCase> samples) {
this.samples = samples;
}
public List<String> getTags() {
return tags;
}
public void setTags(List<String> tags) {
this.tags = tags;
}
public List<CodeTemplate> getCodeTemplates() {
return codeTemplates;
}
public void setCodeTemplates(List<CodeTemplate> codeTemplates) {
this.codeTemplates = codeTemplates;
}
public Boolean getIsSpj() {
return isSpj;
}
public void setIsSpj(Boolean spj) {
isSpj = spj;
}
}

View File

@ -89,6 +89,9 @@ public class ConfigVo {
@Value("${hoj.web-config.short-name}")
private String shortName;
@Value("${hoj.web-config.description}")
private String description;
@Value("${hoj.web-config.register}")
private Boolean register;

View File

@ -14,5 +14,5 @@ import top.hcode.hoj.pojo.vo.UserRolesVo;
* @since 2020-10-23
*/
public interface UserRoleService extends IService<UserRole> {
IPage<UserRolesVo> getUserList(int limit, int currentPage, String keyword);
IPage<UserRolesVo> getUserList(int limit, int currentPage, String keyword,Boolean onlyAdmin);
}

View File

@ -156,6 +156,9 @@ public class ConfigServiceImpl implements ConfigService {
if (!StringUtils.isEmpty(params.get("shortName"))) {
configVo.setShortName((String) params.get("shortName"));
}
if (!StringUtils.isEmpty(params.get("description"))) {
configVo.setDescription((String) params.get("description"));
}
if (params.get("register") != null) {
configVo.setRegister((Boolean) params.get("register"));
}

View File

@ -404,7 +404,11 @@ public class ProblemServiceImpl extends ServiceImpl<ProblemMapper, Problem> impl
List<ProblemTag> problemTagList = new LinkedList<>();
for (Tag tag : problemDto.getTags()) {
if (tag.getId() == null) { //id为空 表示为原tag表中不存在的 插入后可以获取到对应的tagId
tagService.save(tag);
try {
tagService.save(tag);
} catch (Exception ignored) {
tag = tagService.getOne(new QueryWrapper<Tag>().eq("name", tag.getName()));
}
}
problemTagList.add(new ProblemTag().setTid(tag.getId()).setPid(pid));
}
@ -439,7 +443,7 @@ public class ProblemServiceImpl extends ServiceImpl<ProblemMapper, Problem> impl
result.set("testCasesSize", problemCaseList.size());
result.set("testCases", new JSONArray());
String testCasesDir = Constants.File.TESTCASE_BASE_FOLDER.getPath() +File.separator+ "problem_" + problemId;
String testCasesDir = Constants.File.TESTCASE_BASE_FOLDER.getPath() + File.separator + "problem_" + problemId;
for (ProblemCase problemCase : problemCaseList) {
@ -485,7 +489,7 @@ public class ProblemServiceImpl extends ServiceImpl<ProblemMapper, Problem> impl
result.set("testCasesSize", problemCaseList.size());
result.set("testCases", new JSONArray());
String testCasesDir = Constants.File.TESTCASE_BASE_FOLDER.getPath()+File.separator + "problem_" + problemId;
String testCasesDir = Constants.File.TESTCASE_BASE_FOLDER.getPath() + File.separator + "problem_" + problemId;
FileUtil.del(testCasesDir);
for (int index = 0; index < problemCaseList.size(); index++) {
JSONObject jsonObject = new JSONObject();
@ -622,8 +626,8 @@ public class ProblemServiceImpl extends ServiceImpl<ProblemMapper, Problem> impl
.setGmtCreate(null)
.setId(null)
.setGmtModified(null);
HashMap<String,Object> problemMap = new HashMap<>();
BeanUtil.beanToMap(problem,problemMap,false,true);
HashMap<String, Object> problemMap = new HashMap<>();
BeanUtil.beanToMap(problem, problemMap, false, true);
importProblemVo.setProblem(problemMap);
QueryWrapper<CodeTemplate> codeTemplateQueryWrapper = new QueryWrapper<>();
codeTemplateQueryWrapper.eq("pid", pid).eq("status", true);

View File

@ -25,9 +25,13 @@ public class UserRoleServiceImpl extends ServiceImpl<UserRoleMapper, UserRole> i
private UserRoleMapper userRoleMapper;
@Override
public IPage<UserRolesVo> getUserList(int limit, int currentPage, String keyword) {
public IPage<UserRolesVo> getUserList(int limit, int currentPage, String keyword,Boolean onlyAdmin) {
//新建分页
Page<UserRolesVo> page = new Page<>(currentPage, limit);
return userRoleMapper.getUserList(page,limit, currentPage,keyword);
if (onlyAdmin){
return userRoleMapper.getAdminUserList(page,limit, currentPage,keyword);
}else {
return userRoleMapper.getUserList(page, limit, currentPage, keyword);
}
}
}

View File

@ -55,6 +55,7 @@ public class ConfigUtils {
" base-url: " + configVo.getBaseUrl() + "\n" +
" name: " + configVo.getName() + "\n" +
" short-name: " + configVo.getShortName() + "\n" +
" description: " + configVo.getDescription() + "\n" +
" register: " + configVo.getRegister() + "\n" +
" footer:\n" +
" record:\n" +

View File

@ -64,6 +64,31 @@ public class Constants {
}
}
public enum RemoteOJ {
HDU("HDU"),
CODEFORCES("CF");
private final String name;
private RemoteOJ(String name) {
this.name = name;
}
public String getName() {
return name;
}
public static Boolean isRemoteOJ(String name) {
for (RemoteOJ remoteOJ : RemoteOJ.values()) {
if (remoteOJ.getName().equals(name)) {
return true;
}
}
return false;
}
}
/**
* @Description 比赛相关的常量

View File

@ -45,7 +45,7 @@ public class JudgeServerApplicationTests {
@Test
public void test2() throws Exception {
CodeForcesJudge codeForcesJudge = new CodeForcesJudge();
Map<String, Object> result = codeForcesJudge.submit("Himit_ZH", "hoj123456", "750A", "GNU G++11 5.1.0", "#include <bits/stdc++.h>\n" +
Map<String, Object> result = codeForcesJudge.submit("账号", "密码", "750A", "GNU G++11 5.1.0", "#include <bits/stdc++.h>\n" +
"using namespace std;\n" +
"const int maxn = 105;\n" +
"struct node\n" +

View File

@ -12,9 +12,9 @@
<div class="mundb-footer">
<el-row>
<el-col :md="6" :xs="24">
<h1>HOJ</h1>
<p>
Hcode Online Judge
<h1>{{ toUpper(websiteConfig.shortName) }}</h1>
<p style="line-height:25px">
{{ websiteConfig.description }}
</p>
</el-col>
<el-col class="hr-none">
@ -48,7 +48,7 @@
</p>
<p>
<i class="fa fa-envelope" aria-hidden="true"></i>
oj.hcode@qq.com
{{ websiteConfig.email }}
</p>
</el-col>
</el-row>
@ -97,6 +97,11 @@ export default {
path: path,
});
},
toUpper(str) {
if (str) {
return str.toUpperCase();
}
},
},
watch: {
$route(newVal, oldVal) {

View File

@ -575,11 +575,12 @@ const adminApi = {
},
// 获取用户列表
admin_getUserList (currentPage, limit, keyword) {
admin_getUserList (currentPage, limit, keyword,onlyAdmin) {
let params = {currentPage, limit}
if (keyword) {
params.keyword = keyword
}
params.onlyAdmin = onlyAdmin
return ajax('/api/admin/user/get-user-list', 'get', {
params: params
})

View File

@ -51,5 +51,5 @@ export default {
fromNow: fromNow,
parseContestType:parseContestType,
parseRole:parseRole,
parseProblemLevel:parseProblemLevel
parseProblemLevel:parseProblemLevel,
}

View File

@ -5,6 +5,7 @@
@imgAdd="$imgAdd"
@imgDel="$imgDel"
:ishljs="true"
:autofocus="false"
v-model="currentValue"
codeStyle="arduino-light"
></mavon-editor>

View File

@ -12,6 +12,7 @@ const rootState = {
websiteConfig:{
recordName:'粤ICP备×××××××号-1',
projectName:'HOJ',
shortName:'HOJ',
recordUrl:'#',
projectUrl:'#'
},

View File

@ -12,10 +12,10 @@
>
<el-row :gutter="20">
<el-col :md="8" :xs="24">
<el-form-item label="Base Url" required>
<el-form-item label="Base URL" required>
<el-input
v-model="websiteConfig.baseUrl"
placeholder="Website Base Url"
placeholder="Website Base URL"
></el-input>
</el-form-item>
</el-col>
@ -45,10 +45,10 @@
</el-form-item>
</el-col>
<el-col :md="12" :xs="24">
<el-form-item label="Record Url" required>
<el-form-item label="Record URL" required>
<el-input
v-model="websiteConfig.recordUrl"
placeholder="Website Record Url"
placeholder="Website Record URL"
></el-input>
</el-form-item>
</el-col>
@ -61,13 +61,25 @@
</el-form-item>
</el-col>
<el-col :md="12" :xs="24">
<el-form-item label="Project Url" required>
<el-form-item label="Project URL" required>
<el-input
v-model="websiteConfig.projectUrl"
placeholder="Website Project Url"
placeholder="Website Project URL"
></el-input>
</el-form-item>
</el-col>
<el-col :md="24" :xs="24">
<el-form-item label="Website Desc" required>
<el-input
type="textarea"
placeholder="Website Description"
v-model="websiteConfig.description"
maxlength="150"
show-word-limit
>
</el-input>
</el-form-item>
</el-col>
<el-col :md="24" :xs="24">
<el-form-item label="Allow Register" label-width="120px">
<el-switch

View File

@ -23,6 +23,16 @@
@keyup.enter.native="filterByKeyword"
></vxe-input>
</span>
<span>
<el-switch
v-model="onlyAdmin"
active-text="OnlyAdmin"
:width="40"
@change="filterByAdmin"
inactive-text="All"
>
</el-switch>
</span>
</div>
</div>
<vxe-table
@ -448,6 +458,7 @@ export default {
keyword: '',
//
showUserDialog: false,
onlyAdmin: false,
// model
selectUser: {
@ -555,7 +566,9 @@ export default {
},
filterByKeyword() {
this.currentChange(1);
this.keyword = '';
},
filterByAdmin() {
this.currentChange(1);
},
getRole(roles) {
return roles[0]['id'];
@ -575,16 +588,18 @@ export default {
//
getUserList(page) {
this.loadingTable = true;
api.admin_getUserList(page, this.pageSize, this.keyword).then(
(res) => {
this.loadingTable = false;
this.total = res.data.data.total;
this.userList = res.data.data.records;
},
(res) => {
this.loadingTable = false;
}
);
api
.admin_getUserList(page, this.pageSize, this.keyword, this.onlyAdmin)
.then(
(res) => {
this.loadingTable = false;
this.total = res.data.data.total;
this.userList = res.data.data.records;
},
(res) => {
this.loadingTable = false;
}
);
},
deleteUsers(ids) {
if (!ids) {

View File

@ -96,6 +96,41 @@
>
</el-upload>
</el-card>
<el-card style="margin-top:15px">
<div slot="header">
<span class="panel-title home-title">Import QDOJ Problems</span>
</div>
<el-upload
ref="QDOJ"
action="/api/file/import-qdoj-problem"
name="file"
:file-list="fileList2"
:show-file-list="true"
:with-credentials="true"
:limit="3"
:on-change="onFile2Change"
:auto-upload="false"
:on-success="uploadSucceeded"
:on-error="uploadFailed"
>
<el-button
size="small"
type="primary"
slot="trigger"
icon="el-icon-folder-opened"
>Choose File</el-button
>
<el-button
style="margin-left: 10px;"
size="small"
type="success"
@click="submitUpload('QDOJ')"
icon="el-icon-upload"
>Upload</el-button
>
</el-upload>
</el-card>
</div>
</template>
<script>
@ -107,20 +142,14 @@ export default {
data() {
return {
fileList1: [],
fileList2: [],
page: 1,
limit: 10,
total: 0,
loadingProblems: false,
loadingImporting: false,
keyword: '',
problems: [
{
id: 1001,
author: 'Himit_ZH',
title: '测试题目',
gmtCreate: '2020-11-11 11:11:11',
},
],
problems: [],
selected_problems: [],
};
},
@ -143,7 +172,7 @@ export default {
keyword: this.keyword,
currentPage: page,
limit: this.limit,
oj: 'HOJ',
oj: 'Mine',
};
this.loadingProblems = true;
api.admin_getProblemList(params).then((res) => {

View File

@ -18,9 +18,6 @@
placeholder="Enter the display id of problem"
v-model="problem.problemId"
>
<template slot="prepend" v-if="mode == 'add'">{{
problemIdPrex
}}</template>
</el-input>
</el-form-item>
</el-col>
@ -531,7 +528,6 @@ import utils from '@/common/utils';
import { mapGetters } from 'vuex';
import api from '@/common/api';
import myMessage from '@/common/message';
import { OJ_NAME } from '@/common/constants';
export default {
name: 'Problem',
components: {
@ -562,7 +558,6 @@ export default {
mode: '', //
contest: {},
codeTemplate: {},
problemIdPrex: 'HOJ-',
pid: null, // idnull
contestID: null, // id
contestProblem: {
@ -625,11 +620,6 @@ export default {
mounted() {
this.routeName = this.$route.name;
let contestID = this.$route.params.contestId;
this.problemIdPrex = OJ_NAME + '-';
// HOJ-C1000
if (contestID) {
this.problemIdPrex += 'C';
}
this.uploadFileUrl = '/api/file/upload-testcase-zip';
if (
this.routeName === 'admin-edit-problem' ||
@ -1140,10 +1130,6 @@ export default {
let problemDto = {}; //
problemDto['problem'] = Object.assign({}, this.problem); //
if (this.mode == 'add') {
problemDto.problem.problemId =
this.problemIdPrex + this.problem.problemId;
}
problemDto.problem.examples = utils.examplesToString(
this.problem.examples
); //

View File

@ -325,7 +325,6 @@ export default {
},
filterByKeyword() {
this.currentChange(1);
this.keyword = '';
},
addRemoteOJProblem() {
this.addRemoteOJproblemLoading = true;

View File

@ -67,7 +67,7 @@
<el-card v-else>
<div slot="header" class="content-center">
<span class="panel-title home-title welcome-title"
>Welcome to HOJ</span
>Welcome to {{ toUpper(websiteConfig.shortName) }}</span
>
</div>
<el-carousel
@ -299,6 +299,11 @@ export default {
getRankTagClass(rowIndex) {
return 'rank-tag no' + (rowIndex + 1);
},
toUpper(str) {
if (str) {
return str.toUpperCase();
}
},
},
computed: {
...mapState(['websiteConfig']),

View File

@ -15,14 +15,14 @@
trigger="hover"
>
<span class="el-dropdown-link">
{{ query.oj === 'HOJ' || query.oj === '' ? 'HOJ' : query.oj }}
{{
query.oj === 'Mine' || query.oj === '' ? 'Mine' : query.oj
}}
<i class="el-icon-caret-bottom"></i>
</span>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item command="All">All</el-dropdown-item>
<el-dropdown-item :command="OJ_NAME">{{
OJ_NAME
}}</el-dropdown-item>
<el-dropdown-item command="Mine">Mine</el-dropdown-item>
<el-dropdown-item
:command="remoteOj.key"
v-for="(remoteOj, index) in REMOTE_OJ"
@ -217,14 +217,12 @@
<script>
import { mapGetters } from 'vuex';
import api from '@/common/api';
import utils from '@/common/utils';
import {
PROBLEM_LEVEL,
PROBLEM_LEVEL_RESERVE,
JUDGE_STATUS,
JUDGE_STATUS_RESERVE,
REMOTE_OJ,
OJ_NAME,
} from '@/common/constants';
import Pagination from '@/components/oj/common/Pagination';
import myMessage from '@/common/message';
@ -241,7 +239,6 @@ export default {
JUDGE_STATUS: {},
JUDGE_STATUS_RESERVE: {},
REMOTE_OJ: {},
OJ_NAME: '',
tagList: [],
currentProblemTitle: '请触碰或鼠标悬浮到指定题目行即可查看提交情况',
problemRecord: [],
@ -275,7 +272,6 @@ export default {
this.JUDGE_STATUS_RESERVE = Object.assign({}, JUDGE_STATUS_RESERVE);
this.JUDGE_STATUS = Object.assign({}, JUDGE_STATUS);
this.REMOTE_OJ = Object.assign({}, REMOTE_OJ);
this.OJ_NAME = OJ_NAME;
//
this.problemRecord = [
{ status: 0, count: 100 },
@ -364,7 +360,7 @@ export default {
if (queryParams.oj == 'All') {
queryParams.oj = '';
} else if (!queryParams.oj) {
queryParams.oj = OJ_NAME;
queryParams.oj = 'Mine';
}
api.getProblemList(this.limit, queryParams).then(
(res) => {

View File

@ -59,7 +59,7 @@ module.exports={
port: 8088, // 开发服务器运行端口号
proxy: {
'/api': { // 以'/api'开头的请求会被代理进行转发
target: 'http://localhost:6688', // 要发向的后台服务器地址 如果后台服务跑在后台开发人员的机器上,就写成 `http://ip:port` 如 `http:192.168.12.213:8081` ip为后台服务器的ip
target: 'https://www.hcode.top', // 要发向的后台服务器地址 如果后台服务跑在后台开发人员的机器上,就写成 `http://ip:port` 如 `http:192.168.12.213:8081` ip为后台服务器的ip
changeOrigin: true
}
},