diff --git a/README.md b/README.md index 824315fc..ba9fd360 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,7 @@ [![Redis](https://img.shields.io/badge/Redis-5.0.9-red)](https://redis.io/) [![Nacos](https://img.shields.io/badge/Nacos-1.4.1-%23267DF7)](https://github.com/alibaba/nacos) [![Vue](https://img.shields.io/badge/Vue-2.6.11-success)](https://cn.vuejs.org/) +[![QQ Group 598587305](https://img.shields.io/badge/QQ%20Group-598587305-blue)](https://qm.qq.com/cgi-bin/qm/qr?k=WWGBZ5gfDiBZOcpNvM8xnZTfUq7BT4Rs&jump_from=webapi) > 前言 diff --git a/docs/docs/.vuepress/dist/404.html b/docs/docs/.vuepress/dist/404.html index 8d02b30e..54f76fb0 100644 --- a/docs/docs/.vuepress/dist/404.html +++ b/docs/docs/.vuepress/dist/404.html @@ -8,13 +8,13 @@ - - + +

404

How did we get here?
Take me home.
- + diff --git a/docs/docs/.vuepress/dist/assets/css/0.styles.d52a0cb2.css b/docs/docs/.vuepress/dist/assets/css/0.styles.0538ca31.css similarity index 95% rename from docs/docs/.vuepress/dist/assets/css/0.styles.d52a0cb2.css rename to docs/docs/.vuepress/dist/assets/css/0.styles.0538ca31.css index b86eacff..8f662914 100644 --- a/docs/docs/.vuepress/dist/assets/css/0.styles.d52a0cb2.css +++ b/docs/docs/.vuepress/dist/assets/css/0.styles.0538ca31.css @@ -1 +1 @@ -code[class*=language-],pre[class*=language-]{color:#ccc;background:none;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#2d2d2d}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.block-comment,.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#999}.token.punctuation{color:#ccc}.token.attr-name,.token.deleted,.token.namespace,.token.tag{color:#e2777a}.token.function-name{color:#6196cc}.token.boolean,.token.function,.token.number{color:#f08d49}.token.class-name,.token.constant,.token.property,.token.symbol{color:#f8c555}.token.atrule,.token.builtin,.token.important,.token.keyword,.token.selector{color:#cc99cd}.token.attr-value,.token.char,.token.regex,.token.string,.token.variable{color:#7ec699}.token.entity,.token.operator,.token.url{color:#67cdcc}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.token.inserted{color:green}.theme-default-content code{color:#476582;padding:.25rem .5rem;margin:0;font-size:.85em;background-color:rgba(27,31,35,.05);border-radius:3px}.theme-default-content code .token.deleted{color:#ec5975}.theme-default-content code .token.inserted{color:#3eaf7c}.theme-default-content pre,.theme-default-content pre[class*=language-]{line-height:1.4;padding:1.25rem 1.5rem;margin:.85rem 0;background-color:#282c34;border-radius:6px;overflow:auto}.theme-default-content pre[class*=language-] code,.theme-default-content pre code{color:#fff;padding:0;background-color:transparent;border-radius:0}div[class*=language-]{position:relative;background-color:#282c34;border-radius:6px}div[class*=language-] .highlight-lines{-webkit-user-select:none;user-select:none;padding-top:1.3rem;position:absolute;top:0;left:0;width:100%;line-height:1.4}div[class*=language-] .highlight-lines .highlighted{background-color:rgba(0,0,0,.66)}div[class*=language-] pre,div[class*=language-] pre[class*=language-]{background:transparent;position:relative;z-index:1}div[class*=language-]:before{position:absolute;z-index:3;top:.8em;right:1em;font-size:.75rem;color:hsla(0,0%,100%,.4)}div[class*=language-]:not(.line-numbers-mode) .line-numbers-wrapper{display:none}div[class*=language-].line-numbers-mode .highlight-lines .highlighted{position:relative}div[class*=language-].line-numbers-mode .highlight-lines .highlighted:before{content:" ";position:absolute;z-index:3;left:0;top:0;display:block;width:3.5rem;height:100%;background-color:rgba(0,0,0,.66)}div[class*=language-].line-numbers-mode pre{padding-left:4.5rem;vertical-align:middle}div[class*=language-].line-numbers-mode .line-numbers-wrapper{position:absolute;top:0;width:3.5rem;text-align:center;color:hsla(0,0%,100%,.3);padding:1.25rem 0;line-height:1.4}div[class*=language-].line-numbers-mode .line-numbers-wrapper br{-webkit-user-select:none;user-select:none}div[class*=language-].line-numbers-mode .line-numbers-wrapper .line-number{position:relative;z-index:4;-webkit-user-select:none;user-select:none;font-size:.85em}div[class*=language-].line-numbers-mode:after{content:"";position:absolute;z-index:2;top:0;left:0;width:3.5rem;height:100%;border-radius:6px 0 0 6px;border-right:1px solid rgba(0,0,0,.66);background-color:#282c34}div[class~=language-js]:before{content:"js"}div[class~=language-ts]:before{content:"ts"}div[class~=language-html]:before{content:"html"}div[class~=language-md]:before{content:"md"}div[class~=language-vue]:before{content:"vue"}div[class~=language-css]:before{content:"css"}div[class~=language-sass]:before{content:"sass"}div[class~=language-scss]:before{content:"scss"}div[class~=language-less]:before{content:"less"}div[class~=language-stylus]:before{content:"stylus"}div[class~=language-go]:before{content:"go"}div[class~=language-java]:before{content:"java"}div[class~=language-c]:before{content:"c"}div[class~=language-sh]:before{content:"sh"}div[class~=language-yaml]:before{content:"yaml"}div[class~=language-py]:before{content:"py"}div[class~=language-docker]:before{content:"docker"}div[class~=language-dockerfile]:before{content:"dockerfile"}div[class~=language-makefile]:before{content:"makefile"}div[class~=language-javascript]:before{content:"js"}div[class~=language-typescript]:before{content:"ts"}div[class~=language-markup]:before{content:"html"}div[class~=language-markdown]:before{content:"md"}div[class~=language-json]:before{content:"json"}div[class~=language-ruby]:before{content:"rb"}div[class~=language-python]:before{content:"py"}div[class~=language-bash]:before{content:"sh"}div[class~=language-php]:before{content:"php"}.custom-block .custom-block-title{font-weight:600;margin-bottom:-.4rem}.custom-block.danger,.custom-block.tip,.custom-block.warning{padding:.1rem 1.5rem;border-left-width:.5rem;border-left-style:solid;margin:1rem 0}.custom-block.tip{background-color:#f3f5f7;border-color:#42b983}.custom-block.warning{background-color:rgba(255,229,100,.3);border-color:#e7c000;color:#6b5900}.custom-block.warning .custom-block-title{color:#b29400}.custom-block.warning a{color:#2c3e50}.custom-block.danger{background-color:#ffe6e6;border-color:#c00;color:#4d0000}.custom-block.danger .custom-block-title{color:#900}.custom-block.danger a{color:#2c3e50}.custom-block.details{display:block;position:relative;border-radius:2px;margin:1.6em 0;padding:1.6em;background-color:#eee}.custom-block.details h4{margin-top:0}.custom-block.details figure:last-child,.custom-block.details p:last-child{margin-bottom:0;padding-bottom:0}.custom-block.details summary{outline:none;cursor:pointer}.arrow{display:inline-block;width:0;height:0}.arrow.up{border-bottom:6px solid #ccc}.arrow.down,.arrow.up{border-left:4px solid transparent;border-right:4px solid transparent}.arrow.down{border-top:6px solid #ccc}.arrow.right{border-left:6px solid #ccc}.arrow.left,.arrow.right{border-top:4px solid transparent;border-bottom:4px solid transparent}.arrow.left{border-right:6px solid #ccc}.theme-default-content:not(.custom){max-width:740px;margin:0 auto;padding:2rem 2.5rem}@media (max-width:959px){.theme-default-content:not(.custom){padding:2rem}}@media (max-width:419px){.theme-default-content:not(.custom){padding:1.5rem}}.table-of-contents .badge{vertical-align:middle}body,html{padding:0;margin:0;background-color:#fff}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:16px;color:#2c3e50}.page{padding-left:20rem}.navbar{z-index:20;right:0;height:3.6rem;background-color:#fff;box-sizing:border-box;border-bottom:1px solid #eaecef}.navbar,.sidebar-mask{position:fixed;top:0;left:0}.sidebar-mask{z-index:9;width:100vw;height:100vh;display:none}.sidebar{font-size:16px;background-color:#fff;width:20rem;position:fixed;z-index:10;margin:0;top:3.6rem;left:0;bottom:0;box-sizing:border-box;border-right:1px solid #eaecef;overflow-y:auto}.theme-default-content:not(.custom)>:first-child{margin-top:3.6rem}.theme-default-content:not(.custom) a:hover{text-decoration:underline}.theme-default-content:not(.custom) p.demo{padding:1rem 1.5rem;border:1px solid #ddd;border-radius:4px}.theme-default-content:not(.custom) img{max-width:100%}.theme-default-content.custom{padding:0;margin:0}.theme-default-content.custom img{max-width:100%}a{font-weight:500;text-decoration:none}a,p a code{color:#3eaf7c}p a code{font-weight:400}kbd{background:#eee;border:.15rem solid #ddd;border-bottom:.25rem solid #ddd;border-radius:.15rem;padding:0 .15em}blockquote{font-size:1rem;color:#999;border-left:.2rem solid #dfe2e5;margin:1rem 0;padding:.25rem 0 .25rem 1rem}blockquote>p{margin:0}ol,ul{padding-left:1.2em}strong{font-weight:600}h1,h2,h3,h4,h5,h6{font-weight:600;line-height:1.25}.theme-default-content:not(.custom)>h1,.theme-default-content:not(.custom)>h2,.theme-default-content:not(.custom)>h3,.theme-default-content:not(.custom)>h4,.theme-default-content:not(.custom)>h5,.theme-default-content:not(.custom)>h6{margin-top:-3.1rem;padding-top:4.6rem;margin-bottom:0}.theme-default-content:not(.custom)>h1:first-child,.theme-default-content:not(.custom)>h2:first-child,.theme-default-content:not(.custom)>h3:first-child,.theme-default-content:not(.custom)>h4:first-child,.theme-default-content:not(.custom)>h5:first-child,.theme-default-content:not(.custom)>h6:first-child{margin-top:-1.5rem;margin-bottom:1rem}.theme-default-content:not(.custom)>h1:first-child+.custom-block,.theme-default-content:not(.custom)>h1:first-child+p,.theme-default-content:not(.custom)>h1:first-child+pre,.theme-default-content:not(.custom)>h2:first-child+.custom-block,.theme-default-content:not(.custom)>h2:first-child+p,.theme-default-content:not(.custom)>h2:first-child+pre,.theme-default-content:not(.custom)>h3:first-child+.custom-block,.theme-default-content:not(.custom)>h3:first-child+p,.theme-default-content:not(.custom)>h3:first-child+pre,.theme-default-content:not(.custom)>h4:first-child+.custom-block,.theme-default-content:not(.custom)>h4:first-child+p,.theme-default-content:not(.custom)>h4:first-child+pre,.theme-default-content:not(.custom)>h5:first-child+.custom-block,.theme-default-content:not(.custom)>h5:first-child+p,.theme-default-content:not(.custom)>h5:first-child+pre,.theme-default-content:not(.custom)>h6:first-child+.custom-block,.theme-default-content:not(.custom)>h6:first-child+p,.theme-default-content:not(.custom)>h6:first-child+pre{margin-top:2rem}h1:focus .header-anchor,h1:hover .header-anchor,h2:focus .header-anchor,h2:hover .header-anchor,h3:focus .header-anchor,h3:hover .header-anchor,h4:focus .header-anchor,h4:hover .header-anchor,h5:focus .header-anchor,h5:hover .header-anchor,h6:focus .header-anchor,h6:hover .header-anchor{opacity:1}h1{font-size:2.2rem}h2{font-size:1.65rem;padding-bottom:.3rem;border-bottom:1px solid #eaecef}h3{font-size:1.35rem}a.header-anchor{font-size:.85em;float:left;margin-left:-.87em;padding-right:.23em;margin-top:.125em;opacity:0}a.header-anchor:focus,a.header-anchor:hover{text-decoration:none}.line-number,code,kbd{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}ol,p,ul{line-height:1.7}hr{border:0;border-top:1px solid #eaecef}table{border-collapse:collapse;margin:1rem 0;display:block;overflow-x:auto}tr{border-top:1px solid #dfe2e5}tr:nth-child(2n){background-color:#f6f8fa}td,th{border:1px solid #dfe2e5;padding:.6em 1em}.theme-container.sidebar-open .sidebar-mask{display:block}.theme-container.no-navbar .theme-default-content:not(.custom)>h1,.theme-container.no-navbar h2,.theme-container.no-navbar h3,.theme-container.no-navbar h4,.theme-container.no-navbar h5,.theme-container.no-navbar h6{margin-top:1.5rem;padding-top:0}.theme-container.no-navbar .sidebar{top:0}@media (min-width:720px){.theme-container.no-sidebar .sidebar{display:none}.theme-container.no-sidebar .page{padding-left:0}}@media (max-width:959px){.sidebar{font-size:15px;width:16.4rem}.page{padding-left:16.4rem}}@media (max-width:719px){.sidebar{top:0;padding-top:3.6rem;transform:translateX(-100%);transition:transform .2s ease}.page{padding-left:0}.theme-container.sidebar-open .sidebar{transform:translateX(0)}.theme-container.no-navbar .sidebar{padding-top:0}}@media (max-width:419px){h1{font-size:1.9rem}.theme-default-content div[class*=language-]{margin:.85rem -1.5rem;border-radius:0}}#nprogress{pointer-events:none}#nprogress .bar{background:#3eaf7c;position:fixed;z-index:1031;top:0;left:0;width:100%;height:2px}#nprogress .peg{display:block;position:absolute;right:0;width:100px;height:100%;box-shadow:0 0 10px #3eaf7c,0 0 5px #3eaf7c;opacity:1;transform:rotate(3deg) translateY(-4px)}#nprogress .spinner{display:block;position:fixed;z-index:1031;top:15px;right:15px}#nprogress .spinner-icon{width:18px;height:18px;box-sizing:border-box;border-color:#3eaf7c transparent transparent #3eaf7c;border-style:solid;border-width:2px;border-radius:50%;animation:nprogress-spinner .4s linear infinite}.nprogress-custom-parent{overflow:hidden;position:relative}.nprogress-custom-parent #nprogress .bar,.nprogress-custom-parent #nprogress .spinner{position:absolute}@keyframes nprogress-spinner{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.icon.outbound{color:#aaa;display:inline-block;vertical-align:middle;position:relative;top:-1px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.home{padding:3.6rem 2rem 0;max-width:960px;margin:0 auto;display:block}.home .hero{text-align:center}.home .hero img{max-width:100%;max-height:280px;display:block;margin:3rem auto 1.5rem}.home .hero h1{font-size:3rem}.home .hero .action,.home .hero .description,.home .hero h1{margin:1.8rem auto}.home .hero .description{max-width:35rem;font-size:1.6rem;line-height:1.3;color:#6a8bad}.home .hero .action-button{display:inline-block;font-size:1.2rem;color:#fff;background-color:#3eaf7c;padding:.8rem 1.6rem;border-radius:4px;transition:background-color .1s ease;box-sizing:border-box;border-bottom:1px solid #389d70}.home .hero .action-button:hover{background-color:#4abf8a}.home .features{border-top:1px solid #eaecef;padding:1.2rem 0;margin-top:2.5rem;display:flex;flex-wrap:wrap;align-items:flex-start;align-content:stretch;justify-content:space-between}.home .feature{flex-grow:1;flex-basis:30%;max-width:30%}.home .feature h2{font-size:1.4rem;font-weight:500;border-bottom:none;padding-bottom:0;color:#3a5169}.home .feature p{color:#4e6e8e}.home .footer{padding:2.5rem;border-top:1px solid #eaecef;text-align:center;color:#4e6e8e}@media (max-width:719px){.home .features{flex-direction:column}.home .feature{max-width:100%;padding:0 2.5rem}}@media (max-width:419px){.home{padding-left:1.5rem;padding-right:1.5rem}.home .hero img{max-height:210px;margin:2rem auto 1.2rem}.home .hero h1{font-size:2rem}.home .hero .action,.home .hero .description,.home .hero h1{margin:1.2rem auto}.home .hero .description{font-size:1.2rem}.home .hero .action-button{font-size:1rem;padding:.6rem 1.2rem}.home .feature h2{font-size:1.25rem}}.search-box{display:inline-block;position:relative;margin-right:1rem}.search-box input{cursor:text;width:10rem;height:2rem;color:#4e6e8e;display:inline-block;border:1px solid #cfd4db;border-radius:2rem;font-size:.9rem;line-height:2rem;padding:0 .5rem 0 2rem;outline:none;transition:all .2s ease;background:#fff url(/docs/assets/img/search.83621669.svg) .6rem .5rem no-repeat;background-size:1rem}.search-box input:focus{cursor:auto;border-color:#3eaf7c}.search-box .suggestions{background:#fff;width:20rem;position:absolute;top:2rem;border:1px solid #cfd4db;border-radius:6px;padding:.4rem;list-style-type:none}.search-box .suggestions.align-right{right:0}.search-box .suggestion{line-height:1.4;padding:.4rem .6rem;border-radius:4px;cursor:pointer}.search-box .suggestion a{white-space:normal;color:#5d82a6}.search-box .suggestion a .page-title{font-weight:600}.search-box .suggestion a .header{font-size:.9em;margin-left:.25em}.search-box .suggestion.focused{background-color:#f3f4f5}.search-box .suggestion.focused a{color:#3eaf7c}@media (max-width:959px){.search-box input{cursor:pointer;width:0;border-color:transparent;position:relative}.search-box input:focus{cursor:text;left:0;width:10rem}}@media (-ms-high-contrast:none){.search-box input{height:2rem}}@media (max-width:959px) and (min-width:719px){.search-box .suggestions{left:0}}@media (max-width:719px){.search-box{margin-right:0}.search-box input{left:1rem}.search-box .suggestions{right:0}}@media (max-width:419px){.search-box .suggestions{width:calc(100vw - 4rem)}.search-box input:focus{width:8rem}}.sidebar-button{cursor:pointer;display:none;width:1.25rem;height:1.25rem;position:absolute;padding:.6rem;top:.6rem;left:1rem}.sidebar-button .icon{display:block;width:1.25rem;height:1.25rem}@media (max-width:719px){.sidebar-button{display:block}}.dropdown-enter,.dropdown-leave-to{height:0!important}.dropdown-wrapper{cursor:pointer}.dropdown-wrapper .dropdown-title,.dropdown-wrapper .mobile-dropdown-title{display:block;font-size:.9rem;font-family:inherit;cursor:inherit;padding:inherit;line-height:1.4rem;background:transparent;border:none;font-weight:500;color:#2c3e50}.dropdown-wrapper .dropdown-title:hover,.dropdown-wrapper .mobile-dropdown-title:hover{border-color:transparent}.dropdown-wrapper .dropdown-title .arrow,.dropdown-wrapper .mobile-dropdown-title .arrow{vertical-align:middle;margin-top:-1px;margin-left:.4rem}.dropdown-wrapper .mobile-dropdown-title{display:none;font-weight:600}.dropdown-wrapper .mobile-dropdown-title font-size inherit:hover{color:#3eaf7c}.dropdown-wrapper .nav-dropdown .dropdown-item{color:inherit;line-height:1.7rem}.dropdown-wrapper .nav-dropdown .dropdown-item h4{margin:.45rem 0 0;border-top:1px solid #eee;padding:1rem 1.5rem .45rem 1.25rem}.dropdown-wrapper .nav-dropdown .dropdown-item .dropdown-subitem-wrapper{padding:0;list-style:none}.dropdown-wrapper .nav-dropdown .dropdown-item .dropdown-subitem-wrapper .dropdown-subitem{font-size:.9em}.dropdown-wrapper .nav-dropdown .dropdown-item a{display:block;line-height:1.7rem;position:relative;border-bottom:none;font-weight:400;margin-bottom:0;padding:0 1.5rem 0 1.25rem}.dropdown-wrapper .nav-dropdown .dropdown-item a.router-link-active,.dropdown-wrapper .nav-dropdown .dropdown-item a:hover{color:#3eaf7c}.dropdown-wrapper .nav-dropdown .dropdown-item a.router-link-active:after{content:"";width:0;height:0;border-left:5px solid #3eaf7c;border-top:3px solid transparent;border-bottom:3px solid transparent;position:absolute;top:calc(50% - 2px);left:9px}.dropdown-wrapper .nav-dropdown .dropdown-item:first-child h4{margin-top:0;padding-top:0;border-top:0}@media (max-width:719px){.dropdown-wrapper.open .dropdown-title{margin-bottom:.5rem}.dropdown-wrapper .dropdown-title{display:none}.dropdown-wrapper .mobile-dropdown-title{display:block}.dropdown-wrapper .nav-dropdown{transition:height .1s ease-out;overflow:hidden}.dropdown-wrapper .nav-dropdown .dropdown-item h4{border-top:0;margin-top:0;padding-top:0}.dropdown-wrapper .nav-dropdown .dropdown-item>a,.dropdown-wrapper .nav-dropdown .dropdown-item h4{font-size:15px;line-height:2rem}.dropdown-wrapper .nav-dropdown .dropdown-item .dropdown-subitem{font-size:14px;padding-left:1rem}}@media (min-width:719px){.dropdown-wrapper{height:1.8rem}.dropdown-wrapper.open .nav-dropdown,.dropdown-wrapper:hover .nav-dropdown{display:block!important}.dropdown-wrapper.open:blur{display:none}.dropdown-wrapper .nav-dropdown{display:none;height:auto!important;box-sizing:border-box;max-height:calc(100vh - 2.7rem);overflow-y:auto;position:absolute;top:100%;right:0;background-color:#fff;padding:.6rem 0;border:1px solid;border-color:#ddd #ddd #ccc;text-align:left;border-radius:.25rem;white-space:nowrap;margin:0}}.nav-links{display:inline-block}.nav-links a{line-height:1.4rem;color:inherit}.nav-links a.router-link-active,.nav-links a:hover{color:#3eaf7c}.nav-links .nav-item{position:relative;display:inline-block;margin-left:1.5rem;line-height:2rem}.nav-links .nav-item:first-child{margin-left:0}.nav-links .repo-link{margin-left:1.5rem}@media (max-width:719px){.nav-links .nav-item,.nav-links .repo-link{margin-left:0}}@media (min-width:719px){.nav-links a.router-link-active,.nav-links a:hover{color:#2c3e50}.nav-item>a:not(.external).router-link-active,.nav-item>a:not(.external):hover{margin-bottom:-2px;border-bottom:2px solid #46bd87}}.navbar{padding:.7rem 1.5rem;line-height:2.2rem}.navbar a,.navbar img,.navbar span{display:inline-block}.navbar .logo{height:2.2rem;min-width:2.2rem;margin-right:.8rem;vertical-align:top}.navbar .site-name{font-size:1.3rem;font-weight:600;color:#2c3e50;position:relative}.navbar .links{padding-left:1.5rem;box-sizing:border-box;background-color:#fff;white-space:nowrap;font-size:.9rem;position:absolute;right:1.5rem;top:.7rem;display:flex}.navbar .links .search-box{flex:0 0 auto;vertical-align:top}@media (max-width:719px){.navbar{padding-left:4rem}.navbar .can-hide{display:none}.navbar .links{padding-left:1.5rem}.navbar .site-name{width:calc(100vw - 9.4rem);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}}.page-edit{max-width:740px;margin:0 auto;padding:2rem 2.5rem}@media (max-width:959px){.page-edit{padding:2rem}}@media (max-width:419px){.page-edit{padding:1.5rem}}.page-edit{padding-top:1rem;padding-bottom:1rem;overflow:auto}.page-edit .edit-link{display:inline-block}.page-edit .edit-link a{color:#4e6e8e;margin-right:.25rem}.page-edit .last-updated{float:right;font-size:.9em}.page-edit .last-updated .prefix{font-weight:500;color:#4e6e8e}.page-edit .last-updated .time{font-weight:400;color:#767676}@media (max-width:719px){.page-edit .edit-link{margin-bottom:.5rem}.page-edit .last-updated{font-size:.8em;float:none;text-align:left}}.page-nav{max-width:740px;margin:0 auto;padding:2rem 2.5rem}@media (max-width:959px){.page-nav{padding:2rem}}@media (max-width:419px){.page-nav{padding:1.5rem}}.page-nav{padding-top:1rem;padding-bottom:0}.page-nav .inner{min-height:2rem;margin-top:0;border-top:1px solid #eaecef;padding-top:1rem;overflow:auto}.page-nav .next{float:right}.page{padding-bottom:2rem;display:block}.sidebar-group .sidebar-group{padding-left:.5em}.sidebar-group:not(.collapsable) .sidebar-heading:not(.clickable){cursor:auto;color:inherit}.sidebar-group.is-sub-group{padding-left:0}.sidebar-group.is-sub-group>.sidebar-heading{font-size:.95em;line-height:1.4;font-weight:400;padding-left:2rem}.sidebar-group.is-sub-group>.sidebar-heading:not(.clickable){opacity:.5}.sidebar-group.is-sub-group>.sidebar-group-items{padding-left:1rem}.sidebar-group.is-sub-group>.sidebar-group-items>li>.sidebar-link{font-size:.95em;border-left:none}.sidebar-group.depth-2>.sidebar-heading{border-left:none}.sidebar-heading{color:#2c3e50;transition:color .15s ease;cursor:pointer;font-size:1.1em;font-weight:700;padding:.35rem 1.5rem .35rem 1.25rem;width:100%;box-sizing:border-box;margin:0;border-left:.25rem solid transparent}.sidebar-heading.open,.sidebar-heading:hover{color:inherit}.sidebar-heading .arrow{position:relative;top:-.12em;left:.5em}.sidebar-heading.clickable.active{font-weight:600;color:#3eaf7c;border-left-color:#3eaf7c}.sidebar-heading.clickable:hover{color:#3eaf7c}.sidebar-group-items{transition:height .1s ease-out;font-size:.95em;overflow:hidden}.sidebar .sidebar-sub-headers{padding-left:1rem;font-size:.95em}a.sidebar-link{font-size:1em;font-weight:400;display:inline-block;color:#2c3e50;border-left:.25rem solid transparent;padding:.35rem 1rem .35rem 1.25rem;line-height:1.4;width:100%;box-sizing:border-box}a.sidebar-link:hover{color:#3eaf7c}a.sidebar-link.active{font-weight:600;color:#3eaf7c;border-left-color:#3eaf7c}.sidebar-group a.sidebar-link{padding-left:2rem}.sidebar-sub-headers a.sidebar-link{padding-top:.25rem;padding-bottom:.25rem;border-left:none}.sidebar-sub-headers a.sidebar-link.active{font-weight:500}.sidebar ul{padding:0;margin:0;list-style-type:none}.sidebar a{display:inline-block}.sidebar .nav-links{display:none;border-bottom:1px solid #eaecef;padding:.5rem 0 .75rem}.sidebar .nav-links a{font-weight:600}.sidebar .nav-links .nav-item,.sidebar .nav-links .repo-link{display:block;line-height:1.25rem;font-size:1.1em;padding:.5rem 0 .5rem 1.5rem}.sidebar>.sidebar-links{padding:1.5rem 0}.sidebar>.sidebar-links>li>a.sidebar-link{font-size:1.1em;line-height:1.7;font-weight:700}.sidebar>.sidebar-links>li:not(:first-child){margin-top:.75rem}@media (max-width:719px){.sidebar .nav-links{display:block}.sidebar .nav-links .dropdown-wrapper .nav-dropdown .dropdown-item a.router-link-active:after{top:calc(1rem - 2px)}.sidebar>.sidebar-links{padding:1rem 0}}.theme-code-block[data-v-c265c668]{display:none}.theme-code-block__active[data-v-c265c668]{display:block}.theme-code-block>pre[data-v-c265c668]{background-color:orange}.theme-code-group__nav[data-v-77e00ed1]{margin-bottom:-35px;background-color:#282c34;padding-bottom:22px;border-top-left-radius:6px;border-top-right-radius:6px;padding-left:10px;padding-top:10px}.theme-code-group__ul[data-v-77e00ed1]{margin:auto 0;padding-left:0;display:inline-flex;list-style:none}.theme-code-group__nav-tab[data-v-77e00ed1]{border:0;padding:5px;cursor:pointer;background-color:transparent;font-size:.85em;line-height:1.4;color:hsla(0,0%,100%,.9);font-weight:600}.theme-code-group__nav-tab-active[data-v-77e00ed1]{border-bottom:1px solid #42b983}.pre-blank[data-v-77e00ed1]{color:#42b983}.badge[data-v-69367c83]{display:inline-block;font-size:14px;height:18px;line-height:18px;border-radius:3px;padding:0 6px;color:#fff}.badge.green[data-v-69367c83],.badge.tip[data-v-69367c83],.badge[data-v-69367c83]{background-color:#42b983}.badge.error[data-v-69367c83]{background-color:#da5961}.badge.warn[data-v-69367c83],.badge.warning[data-v-69367c83],.badge.yellow[data-v-69367c83]{background-color:#e7c000}.badge+.badge[data-v-69367c83]{margin-left:5px} \ No newline at end of file +code[class*=language-],pre[class*=language-]{color:#ccc;background:none;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#2d2d2d}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.block-comment,.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#999}.token.punctuation{color:#ccc}.token.attr-name,.token.deleted,.token.namespace,.token.tag{color:#e2777a}.token.function-name{color:#6196cc}.token.boolean,.token.function,.token.number{color:#f08d49}.token.class-name,.token.constant,.token.property,.token.symbol{color:#f8c555}.token.atrule,.token.builtin,.token.important,.token.keyword,.token.selector{color:#cc99cd}.token.attr-value,.token.char,.token.regex,.token.string,.token.variable{color:#7ec699}.token.entity,.token.operator,.token.url{color:#67cdcc}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.token.inserted{color:green}.theme-default-content code{color:#476582;padding:.25rem .5rem;margin:0;font-size:.85em;background-color:rgba(27,31,35,.05);border-radius:3px}.theme-default-content code .token.deleted{color:#ec5975}.theme-default-content code .token.inserted{color:#3eaf7c}.theme-default-content pre,.theme-default-content pre[class*=language-]{line-height:1.4;padding:1.25rem 1.5rem;margin:.85rem 0;background-color:#282c34;border-radius:6px;overflow:auto}.theme-default-content pre[class*=language-] code,.theme-default-content pre code{color:#fff;padding:0;background-color:transparent;border-radius:0}div[class*=language-]{position:relative;background-color:#282c34;border-radius:6px}div[class*=language-] .highlight-lines{-webkit-user-select:none;user-select:none;padding-top:1.3rem;position:absolute;top:0;left:0;width:100%;line-height:1.4}div[class*=language-] .highlight-lines .highlighted{background-color:rgba(0,0,0,.66)}div[class*=language-] pre,div[class*=language-] pre[class*=language-]{background:transparent;position:relative;z-index:1}div[class*=language-]:before{position:absolute;z-index:3;top:.8em;right:1em;font-size:.75rem;color:hsla(0,0%,100%,.4)}div[class*=language-]:not(.line-numbers-mode) .line-numbers-wrapper{display:none}div[class*=language-].line-numbers-mode .highlight-lines .highlighted{position:relative}div[class*=language-].line-numbers-mode .highlight-lines .highlighted:before{content:" ";position:absolute;z-index:3;left:0;top:0;display:block;width:3.5rem;height:100%;background-color:rgba(0,0,0,.66)}div[class*=language-].line-numbers-mode pre{padding-left:4.5rem;vertical-align:middle}div[class*=language-].line-numbers-mode .line-numbers-wrapper{position:absolute;top:0;width:3.5rem;text-align:center;color:hsla(0,0%,100%,.3);padding:1.25rem 0;line-height:1.4}div[class*=language-].line-numbers-mode .line-numbers-wrapper br{-webkit-user-select:none;user-select:none}div[class*=language-].line-numbers-mode .line-numbers-wrapper .line-number{position:relative;z-index:4;-webkit-user-select:none;user-select:none;font-size:.85em}div[class*=language-].line-numbers-mode:after{content:"";position:absolute;z-index:2;top:0;left:0;width:3.5rem;height:100%;border-radius:6px 0 0 6px;border-right:1px solid rgba(0,0,0,.66);background-color:#282c34}div[class~=language-js]:before{content:"js"}div[class~=language-ts]:before{content:"ts"}div[class~=language-html]:before{content:"html"}div[class~=language-md]:before{content:"md"}div[class~=language-vue]:before{content:"vue"}div[class~=language-css]:before{content:"css"}div[class~=language-sass]:before{content:"sass"}div[class~=language-scss]:before{content:"scss"}div[class~=language-less]:before{content:"less"}div[class~=language-stylus]:before{content:"stylus"}div[class~=language-go]:before{content:"go"}div[class~=language-java]:before{content:"java"}div[class~=language-c]:before{content:"c"}div[class~=language-sh]:before{content:"sh"}div[class~=language-yaml]:before{content:"yaml"}div[class~=language-py]:before{content:"py"}div[class~=language-docker]:before{content:"docker"}div[class~=language-dockerfile]:before{content:"dockerfile"}div[class~=language-makefile]:before{content:"makefile"}div[class~=language-javascript]:before{content:"js"}div[class~=language-typescript]:before{content:"ts"}div[class~=language-markup]:before{content:"html"}div[class~=language-markdown]:before{content:"md"}div[class~=language-json]:before{content:"json"}div[class~=language-ruby]:before{content:"rb"}div[class~=language-python]:before{content:"py"}div[class~=language-bash]:before{content:"sh"}div[class~=language-php]:before{content:"php"}.custom-block .custom-block-title{font-weight:600;margin-bottom:-.4rem}.custom-block.danger,.custom-block.tip,.custom-block.warning{padding:.1rem 1.5rem;border-left-width:.5rem;border-left-style:solid;margin:1rem 0}.custom-block.tip{background-color:#f3f5f7;border-color:#42b983}.custom-block.warning{background-color:rgba(255,229,100,.3);border-color:#e7c000;color:#6b5900}.custom-block.warning .custom-block-title{color:#b29400}.custom-block.warning a{color:#2c3e50}.custom-block.danger{background-color:#ffe6e6;border-color:#c00;color:#4d0000}.custom-block.danger .custom-block-title{color:#900}.custom-block.danger a{color:#2c3e50}.custom-block.details{display:block;position:relative;border-radius:2px;margin:1.6em 0;padding:1.6em;background-color:#eee}.custom-block.details h4{margin-top:0}.custom-block.details figure:last-child,.custom-block.details p:last-child{margin-bottom:0;padding-bottom:0}.custom-block.details summary{outline:none;cursor:pointer}.arrow{display:inline-block;width:0;height:0}.arrow.up{border-bottom:6px solid #ccc}.arrow.down,.arrow.up{border-left:4px solid transparent;border-right:4px solid transparent}.arrow.down{border-top:6px solid #ccc}.arrow.right{border-left:6px solid #ccc}.arrow.left,.arrow.right{border-top:4px solid transparent;border-bottom:4px solid transparent}.arrow.left{border-right:6px solid #ccc}.theme-default-content:not(.custom){max-width:740px;margin:0 auto;padding:2rem 2.5rem}@media (max-width:959px){.theme-default-content:not(.custom){padding:2rem}}@media (max-width:419px){.theme-default-content:not(.custom){padding:1.5rem}}.table-of-contents .badge{vertical-align:middle}body,html{padding:0;margin:0;background-color:#fff}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:16px;color:#2c3e50}.page{padding-left:20rem}.navbar{z-index:20;right:0;height:3.6rem;background-color:#fff;box-sizing:border-box;border-bottom:1px solid #eaecef}.navbar,.sidebar-mask{position:fixed;top:0;left:0}.sidebar-mask{z-index:9;width:100vw;height:100vh;display:none}.sidebar{font-size:16px;background-color:#fff;width:20rem;position:fixed;z-index:10;margin:0;top:3.6rem;left:0;bottom:0;box-sizing:border-box;border-right:1px solid #eaecef;overflow-y:auto}.theme-default-content:not(.custom)>:first-child{margin-top:3.6rem}.theme-default-content:not(.custom) a:hover{text-decoration:underline}.theme-default-content:not(.custom) p.demo{padding:1rem 1.5rem;border:1px solid #ddd;border-radius:4px}.theme-default-content:not(.custom) img{max-width:100%}.theme-default-content.custom{padding:0;margin:0}.theme-default-content.custom img{max-width:100%}a{font-weight:500;text-decoration:none}a,p a code{color:#3eaf7c}p a code{font-weight:400}kbd{background:#eee;border:.15rem solid #ddd;border-bottom:.25rem solid #ddd;border-radius:.15rem;padding:0 .15em}blockquote{font-size:1rem;color:#999;border-left:.2rem solid #dfe2e5;margin:1rem 0;padding:.25rem 0 .25rem 1rem}blockquote>p{margin:0}ol,ul{padding-left:1.2em}strong{font-weight:600}h1,h2,h3,h4,h5,h6{font-weight:600;line-height:1.25}.theme-default-content:not(.custom)>h1,.theme-default-content:not(.custom)>h2,.theme-default-content:not(.custom)>h3,.theme-default-content:not(.custom)>h4,.theme-default-content:not(.custom)>h5,.theme-default-content:not(.custom)>h6{margin-top:-3.1rem;padding-top:4.6rem;margin-bottom:0}.theme-default-content:not(.custom)>h1:first-child,.theme-default-content:not(.custom)>h2:first-child,.theme-default-content:not(.custom)>h3:first-child,.theme-default-content:not(.custom)>h4:first-child,.theme-default-content:not(.custom)>h5:first-child,.theme-default-content:not(.custom)>h6:first-child{margin-top:-1.5rem;margin-bottom:1rem}.theme-default-content:not(.custom)>h1:first-child+.custom-block,.theme-default-content:not(.custom)>h1:first-child+p,.theme-default-content:not(.custom)>h1:first-child+pre,.theme-default-content:not(.custom)>h2:first-child+.custom-block,.theme-default-content:not(.custom)>h2:first-child+p,.theme-default-content:not(.custom)>h2:first-child+pre,.theme-default-content:not(.custom)>h3:first-child+.custom-block,.theme-default-content:not(.custom)>h3:first-child+p,.theme-default-content:not(.custom)>h3:first-child+pre,.theme-default-content:not(.custom)>h4:first-child+.custom-block,.theme-default-content:not(.custom)>h4:first-child+p,.theme-default-content:not(.custom)>h4:first-child+pre,.theme-default-content:not(.custom)>h5:first-child+.custom-block,.theme-default-content:not(.custom)>h5:first-child+p,.theme-default-content:not(.custom)>h5:first-child+pre,.theme-default-content:not(.custom)>h6:first-child+.custom-block,.theme-default-content:not(.custom)>h6:first-child+p,.theme-default-content:not(.custom)>h6:first-child+pre{margin-top:2rem}h1:focus .header-anchor,h1:hover .header-anchor,h2:focus .header-anchor,h2:hover .header-anchor,h3:focus .header-anchor,h3:hover .header-anchor,h4:focus .header-anchor,h4:hover .header-anchor,h5:focus .header-anchor,h5:hover .header-anchor,h6:focus .header-anchor,h6:hover .header-anchor{opacity:1}h1{font-size:2.2rem}h2{font-size:1.65rem;padding-bottom:.3rem;border-bottom:1px solid #eaecef}h3{font-size:1.35rem}a.header-anchor{font-size:.85em;float:left;margin-left:-.87em;padding-right:.23em;margin-top:.125em;opacity:0}a.header-anchor:focus,a.header-anchor:hover{text-decoration:none}.line-number,code,kbd{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}ol,p,ul{line-height:1.7}hr{border:0;border-top:1px solid #eaecef}table{border-collapse:collapse;margin:1rem 0;display:block;overflow-x:auto}tr{border-top:1px solid #dfe2e5}tr:nth-child(2n){background-color:#f6f8fa}td,th{border:1px solid #dfe2e5;padding:.6em 1em}.theme-container.sidebar-open .sidebar-mask{display:block}.theme-container.no-navbar .theme-default-content:not(.custom)>h1,.theme-container.no-navbar h2,.theme-container.no-navbar h3,.theme-container.no-navbar h4,.theme-container.no-navbar h5,.theme-container.no-navbar h6{margin-top:1.5rem;padding-top:0}.theme-container.no-navbar .sidebar{top:0}@media (min-width:720px){.theme-container.no-sidebar .sidebar{display:none}.theme-container.no-sidebar .page{padding-left:0}}@media (max-width:959px){.sidebar{font-size:15px;width:16.4rem}.page{padding-left:16.4rem}}@media (max-width:719px){.sidebar{top:0;padding-top:3.6rem;transform:translateX(-100%);transition:transform .2s ease}.page{padding-left:0}.theme-container.sidebar-open .sidebar{transform:translateX(0)}.theme-container.no-navbar .sidebar{padding-top:0}}@media (max-width:419px){h1{font-size:1.9rem}.theme-default-content div[class*=language-]{margin:.85rem -1.5rem;border-radius:0}}#nprogress{pointer-events:none}#nprogress .bar{background:#3eaf7c;position:fixed;z-index:1031;top:0;left:0;width:100%;height:2px}#nprogress .peg{display:block;position:absolute;right:0;width:100px;height:100%;box-shadow:0 0 10px #3eaf7c,0 0 5px #3eaf7c;opacity:1;transform:rotate(3deg) translateY(-4px)}#nprogress .spinner{display:block;position:fixed;z-index:1031;top:15px;right:15px}#nprogress .spinner-icon{width:18px;height:18px;box-sizing:border-box;border-color:#3eaf7c transparent transparent #3eaf7c;border-style:solid;border-width:2px;border-radius:50%;animation:nprogress-spinner .4s linear infinite}.nprogress-custom-parent{overflow:hidden;position:relative}.nprogress-custom-parent #nprogress .bar,.nprogress-custom-parent #nprogress .spinner{position:absolute}@keyframes nprogress-spinner{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.icon.outbound{color:#aaa;display:inline-block;vertical-align:middle;position:relative;top:-1px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.home{padding:3.6rem 2rem 0;max-width:960px;margin:0 auto;display:block}.home .hero{text-align:center}.home .hero img{max-width:100%;max-height:280px;display:block;margin:3rem auto 1.5rem}.home .hero h1{font-size:3rem}.home .hero .action,.home .hero .description,.home .hero h1{margin:1.8rem auto}.home .hero .description{max-width:35rem;font-size:1.6rem;line-height:1.3;color:#6a8bad}.home .hero .action-button{display:inline-block;font-size:1.2rem;color:#fff;background-color:#3eaf7c;padding:.8rem 1.6rem;border-radius:4px;transition:background-color .1s ease;box-sizing:border-box;border-bottom:1px solid #389d70}.home .hero .action-button:hover{background-color:#4abf8a}.home .features{border-top:1px solid #eaecef;padding:1.2rem 0;margin-top:2.5rem;display:flex;flex-wrap:wrap;align-items:flex-start;align-content:stretch;justify-content:space-between}.home .feature{flex-grow:1;flex-basis:30%;max-width:30%}.home .feature h2{font-size:1.4rem;font-weight:500;border-bottom:none;padding-bottom:0;color:#3a5169}.home .feature p{color:#4e6e8e}.home .footer{padding:2.5rem;border-top:1px solid #eaecef;text-align:center;color:#4e6e8e}@media (max-width:719px){.home .features{flex-direction:column}.home .feature{max-width:100%;padding:0 2.5rem}}@media (max-width:419px){.home{padding-left:1.5rem;padding-right:1.5rem}.home .hero img{max-height:210px;margin:2rem auto 1.2rem}.home .hero h1{font-size:2rem}.home .hero .action,.home .hero .description,.home .hero h1{margin:1.2rem auto}.home .hero .description{font-size:1.2rem}.home .hero .action-button{font-size:1rem;padding:.6rem 1.2rem}.home .feature h2{font-size:1.25rem}}.search-box{display:inline-block;position:relative;margin-right:1rem}.search-box input{cursor:text;width:10rem;height:2rem;color:#4e6e8e;display:inline-block;border:1px solid #cfd4db;border-radius:2rem;font-size:.9rem;line-height:2rem;padding:0 .5rem 0 2rem;outline:none;transition:all .2s ease;background:#fff url(/docs/assets/img/search.83621669.svg) .6rem .5rem no-repeat;background-size:1rem}.search-box input:focus{cursor:auto;border-color:#3eaf7c}.search-box .suggestions{background:#fff;width:20rem;position:absolute;top:2rem;border:1px solid #cfd4db;border-radius:6px;padding:.4rem;list-style-type:none}.search-box .suggestions.align-right{right:0}.search-box .suggestion{line-height:1.4;padding:.4rem .6rem;border-radius:4px;cursor:pointer}.search-box .suggestion a{white-space:normal;color:#5d82a6}.search-box .suggestion a .page-title{font-weight:600}.search-box .suggestion a .header{font-size:.9em;margin-left:.25em}.search-box .suggestion.focused{background-color:#f3f4f5}.search-box .suggestion.focused a{color:#3eaf7c}@media (max-width:959px){.search-box input{cursor:pointer;width:0;border-color:transparent;position:relative}.search-box input:focus{cursor:text;left:0;width:10rem}}@media (-ms-high-contrast:none){.search-box input{height:2rem}}@media (max-width:959px) and (min-width:719px){.search-box .suggestions{left:0}}@media (max-width:719px){.search-box{margin-right:0}.search-box input{left:1rem}.search-box .suggestions{right:0}}@media (max-width:419px){.search-box .suggestions{width:calc(100vw - 4rem)}.search-box input:focus{width:8rem}}.sidebar-button{cursor:pointer;display:none;width:1.25rem;height:1.25rem;position:absolute;padding:.6rem;top:.6rem;left:1rem}.sidebar-button .icon{display:block;width:1.25rem;height:1.25rem}@media (max-width:719px){.sidebar-button{display:block}}.dropdown-enter,.dropdown-leave-to{height:0!important}.dropdown-wrapper{cursor:pointer}.dropdown-wrapper .dropdown-title,.dropdown-wrapper .mobile-dropdown-title{display:block;font-size:.9rem;font-family:inherit;cursor:inherit;padding:inherit;line-height:1.4rem;background:transparent;border:none;font-weight:500;color:#2c3e50}.dropdown-wrapper .dropdown-title:hover,.dropdown-wrapper .mobile-dropdown-title:hover{border-color:transparent}.dropdown-wrapper .dropdown-title .arrow,.dropdown-wrapper .mobile-dropdown-title .arrow{vertical-align:middle;margin-top:-1px;margin-left:.4rem}.dropdown-wrapper .mobile-dropdown-title{display:none;font-weight:600}.dropdown-wrapper .mobile-dropdown-title font-size inherit:hover{color:#3eaf7c}.dropdown-wrapper .nav-dropdown .dropdown-item{color:inherit;line-height:1.7rem}.dropdown-wrapper .nav-dropdown .dropdown-item h4{margin:.45rem 0 0;border-top:1px solid #eee;padding:1rem 1.5rem .45rem 1.25rem}.dropdown-wrapper .nav-dropdown .dropdown-item .dropdown-subitem-wrapper{padding:0;list-style:none}.dropdown-wrapper .nav-dropdown .dropdown-item .dropdown-subitem-wrapper .dropdown-subitem{font-size:.9em}.dropdown-wrapper .nav-dropdown .dropdown-item a{display:block;line-height:1.7rem;position:relative;border-bottom:none;font-weight:400;margin-bottom:0;padding:0 1.5rem 0 1.25rem}.dropdown-wrapper .nav-dropdown .dropdown-item a.router-link-active,.dropdown-wrapper .nav-dropdown .dropdown-item a:hover{color:#3eaf7c}.dropdown-wrapper .nav-dropdown .dropdown-item a.router-link-active:after{content:"";width:0;height:0;border-left:5px solid #3eaf7c;border-top:3px solid transparent;border-bottom:3px solid transparent;position:absolute;top:calc(50% - 2px);left:9px}.dropdown-wrapper .nav-dropdown .dropdown-item:first-child h4{margin-top:0;padding-top:0;border-top:0}@media (max-width:719px){.dropdown-wrapper.open .dropdown-title{margin-bottom:.5rem}.dropdown-wrapper .dropdown-title{display:none}.dropdown-wrapper .mobile-dropdown-title{display:block}.dropdown-wrapper .nav-dropdown{transition:height .1s ease-out;overflow:hidden}.dropdown-wrapper .nav-dropdown .dropdown-item h4{border-top:0;margin-top:0;padding-top:0}.dropdown-wrapper .nav-dropdown .dropdown-item>a,.dropdown-wrapper .nav-dropdown .dropdown-item h4{font-size:15px;line-height:2rem}.dropdown-wrapper .nav-dropdown .dropdown-item .dropdown-subitem{font-size:14px;padding-left:1rem}}@media (min-width:719px){.dropdown-wrapper{height:1.8rem}.dropdown-wrapper.open .nav-dropdown,.dropdown-wrapper:hover .nav-dropdown{display:block!important}.dropdown-wrapper.open:blur{display:none}.dropdown-wrapper .nav-dropdown{display:none;height:auto!important;box-sizing:border-box;max-height:calc(100vh - 2.7rem);overflow-y:auto;position:absolute;top:100%;right:0;background-color:#fff;padding:.6rem 0;border:1px solid;border-color:#ddd #ddd #ccc;text-align:left;border-radius:.25rem;white-space:nowrap;margin:0}}.nav-links{display:inline-block}.nav-links a{line-height:1.4rem;color:inherit}.nav-links a.router-link-active,.nav-links a:hover{color:#3eaf7c}.nav-links .nav-item{position:relative;display:inline-block;margin-left:1.5rem;line-height:2rem}.nav-links .nav-item:first-child{margin-left:0}.nav-links .repo-link{margin-left:1.5rem}@media (max-width:719px){.nav-links .nav-item,.nav-links .repo-link{margin-left:0}}@media (min-width:719px){.nav-links a.router-link-active,.nav-links a:hover{color:#2c3e50}.nav-item>a:not(.external).router-link-active,.nav-item>a:not(.external):hover{margin-bottom:-2px;border-bottom:2px solid #46bd87}}.navbar{padding:.7rem 1.5rem;line-height:2.2rem}.navbar a,.navbar img,.navbar span{display:inline-block}.navbar .logo{height:2.2rem;min-width:2.2rem;margin-right:.8rem;vertical-align:top}.navbar .site-name{font-size:1.3rem;font-weight:600;color:#2c3e50;position:relative}.navbar .links{padding-left:1.5rem;box-sizing:border-box;background-color:#fff;white-space:nowrap;font-size:.9rem;position:absolute;right:1.5rem;top:.7rem;display:flex}.navbar .links .search-box{flex:0 0 auto;vertical-align:top}@media (max-width:719px){.navbar{padding-left:4rem}.navbar .can-hide{display:none}.navbar .links{padding-left:1.5rem}.navbar .site-name{width:calc(100vw - 9.4rem);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}}.page-edit{max-width:740px;margin:0 auto;padding:2rem 2.5rem}@media (max-width:959px){.page-edit{padding:2rem}}@media (max-width:419px){.page-edit{padding:1.5rem}}.page-edit{padding-top:1rem;padding-bottom:1rem;overflow:auto}.page-edit .edit-link{display:inline-block}.page-edit .edit-link a{color:#4e6e8e;margin-right:.25rem}.page-edit .last-updated{float:right;font-size:.9em}.page-edit .last-updated .prefix{font-weight:500;color:#4e6e8e}.page-edit .last-updated .time{font-weight:400;color:#767676}@media (max-width:719px){.page-edit .edit-link{margin-bottom:.5rem}.page-edit .last-updated{font-size:.8em;float:none;text-align:left}}.page-nav{max-width:740px;margin:0 auto;padding:2rem 2.5rem}@media (max-width:959px){.page-nav{padding:2rem}}@media (max-width:419px){.page-nav{padding:1.5rem}}.page-nav{padding-top:1rem;padding-bottom:0}.page-nav .inner{min-height:2rem;margin-top:0;border-top:1px solid #eaecef;padding-top:1rem;overflow:auto}.page-nav .next{float:right}.page{padding-bottom:2rem;display:block}.sidebar-group .sidebar-group{padding-left:.5em}.sidebar-group:not(.collapsable) .sidebar-heading:not(.clickable){cursor:auto;color:inherit}.sidebar-group.is-sub-group{padding-left:0}.sidebar-group.is-sub-group>.sidebar-heading{font-size:.95em;line-height:1.4;font-weight:400;padding-left:2rem}.sidebar-group.is-sub-group>.sidebar-heading:not(.clickable){opacity:.5}.sidebar-group.is-sub-group>.sidebar-group-items{padding-left:1rem}.sidebar-group.is-sub-group>.sidebar-group-items>li>.sidebar-link{font-size:.95em;border-left:none}.sidebar-group.depth-2>.sidebar-heading{border-left:none}.sidebar-heading{color:#2c3e50;transition:color .15s ease;cursor:pointer;font-size:1.1em;font-weight:700;padding:.35rem 1.5rem .35rem 1.25rem;width:100%;box-sizing:border-box;margin:0;border-left:.25rem solid transparent}.sidebar-heading.open,.sidebar-heading:hover{color:inherit}.sidebar-heading .arrow{position:relative;top:-.12em;left:.5em}.sidebar-heading.clickable.active{font-weight:600;color:#3eaf7c;border-left-color:#3eaf7c}.sidebar-heading.clickable:hover{color:#3eaf7c}.sidebar-group-items{transition:height .1s ease-out;font-size:.95em;overflow:hidden}.sidebar .sidebar-sub-headers{padding-left:1rem;font-size:.95em}a.sidebar-link{font-size:1em;font-weight:400;display:inline-block;color:#2c3e50;border-left:.25rem solid transparent;padding:.35rem 1rem .35rem 1.25rem;line-height:1.4;width:100%;box-sizing:border-box}a.sidebar-link:hover{color:#3eaf7c}a.sidebar-link.active{font-weight:600;color:#3eaf7c;border-left-color:#3eaf7c}.sidebar-group a.sidebar-link{padding-left:2rem}.sidebar-sub-headers a.sidebar-link{padding-top:.25rem;padding-bottom:.25rem;border-left:none}.sidebar-sub-headers a.sidebar-link.active{font-weight:500}.sidebar ul{padding:0;margin:0;list-style-type:none}.sidebar a{display:inline-block}.sidebar .nav-links{display:none;border-bottom:1px solid #eaecef;padding:.5rem 0 .75rem}.sidebar .nav-links a{font-weight:600}.sidebar .nav-links .nav-item,.sidebar .nav-links .repo-link{display:block;line-height:1.25rem;font-size:1.1em;padding:.5rem 0 .5rem 1.5rem}.sidebar>.sidebar-links{padding:1.5rem 0}.sidebar>.sidebar-links>li>a.sidebar-link{font-size:1.1em;line-height:1.7;font-weight:700}.sidebar>.sidebar-links>li:not(:first-child){margin-top:.75rem}@media (max-width:719px){.sidebar .nav-links{display:block}.sidebar .nav-links .dropdown-wrapper .nav-dropdown .dropdown-item a.router-link-active:after{top:calc(1rem - 2px)}.sidebar>.sidebar-links{padding:1rem 0}}.badge[data-v-69367c83]{display:inline-block;font-size:14px;height:18px;line-height:18px;border-radius:3px;padding:0 6px;color:#fff}.badge.green[data-v-69367c83],.badge.tip[data-v-69367c83],.badge[data-v-69367c83]{background-color:#42b983}.badge.error[data-v-69367c83]{background-color:#da5961}.badge.warn[data-v-69367c83],.badge.warning[data-v-69367c83],.badge.yellow[data-v-69367c83]{background-color:#e7c000}.badge+.badge[data-v-69367c83]{margin-left:5px}.theme-code-block[data-v-c265c668]{display:none}.theme-code-block__active[data-v-c265c668]{display:block}.theme-code-block>pre[data-v-c265c668]{background-color:orange}.theme-code-group__nav[data-v-77e00ed1]{margin-bottom:-35px;background-color:#282c34;padding-bottom:22px;border-top-left-radius:6px;border-top-right-radius:6px;padding-left:10px;padding-top:10px}.theme-code-group__ul[data-v-77e00ed1]{margin:auto 0;padding-left:0;display:inline-flex;list-style:none}.theme-code-group__nav-tab[data-v-77e00ed1]{border:0;padding:5px;cursor:pointer;background-color:transparent;font-size:.85em;line-height:1.4;color:hsla(0,0%,100%,.9);font-weight:600}.theme-code-group__nav-tab-active[data-v-77e00ed1]{border-bottom:1px solid #42b983}.pre-blank[data-v-77e00ed1]{color:#42b983} \ No newline at end of file diff --git a/docs/docs/.vuepress/dist/assets/js/10.75ec00c7.js b/docs/docs/.vuepress/dist/assets/js/10.ec70d570.js similarity index 99% rename from docs/docs/.vuepress/dist/assets/js/10.75ec00c7.js rename to docs/docs/.vuepress/dist/assets/js/10.ec70d570.js index 478ec314..401a5924 100644 --- a/docs/docs/.vuepress/dist/assets/js/10.75ec00c7.js +++ b/docs/docs/.vuepress/dist/assets/js/10.ec70d570.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[10],{355:function(s,a,t){"use strict";t.r(a);var n=t(41),e=Object(n.a)({},(function(){var s=this,a=s.$createElement,t=s._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[t("h1",{attrs:{id:"快速部署"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#快速部署"}},[s._v("#")]),s._v(" 快速部署")]),s._v(" "),t("blockquote",[t("p",[s._v("前提:已经在上一步准备好docker与docker-compose")])]),s._v(" "),t("h2",{attrs:{id:"一、单机部署"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#一、单机部署"}},[s._v("#")]),s._v(" 一、单机部署")]),s._v(" "),t("ol",[t("li",[t("p",[s._v("选择好需要安装的位置,运行下面命令")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("git")]),s._v(" clone https://gitee.com/himitzh0730/hoj-deploy.git "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("&&")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("cd")]),s._v(" hoj-deploy\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])])]),s._v(" "),t("li",[t("p",[s._v("进入文件夹,使用docker-compose启动各容器服务")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("cd")]),s._v(" standAlone\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("p",[t("code",[s._v("standAlone")]),s._v("文件夹文件有以下:")]),s._v(" "),t("div",{staticClass:"language-bash line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[s._v("├── docker-compose.yml\n├── .env\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("p",[s._v("主要配置请修改"),t("code",[s._v(".env")]),s._v("文件,内容如下:")]),s._v(" "),t("blockquote",[t("p",[s._v("注意:各服务ip最好不改动,保持处于172.20.0.0/16网段的docker network")])]),s._v(" "),t("div",{staticClass:"language-properties line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-properties"}},[t("code",[t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# redis的配置")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("REDIS_HOST")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("172.20.0.2")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("REDIS_PORT")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("6379")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("REDIS_PASSWORD")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("hoj123456")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# mysql的配置")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("MYSQL_HOST")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("172.20.0.3")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("MYSQL_PUBLIC_HOST")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("172.20.0.3 # 如果判题服务是分布式,请提供当前mysql所在服务器的公网ip")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("MYSQL_PORT")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("3306")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("MYSQL_ROOT_PASSWORD")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("hoj123456")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# nacos的配置")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("NACOS_HOST")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("172.20.0.4")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("NACOS_PORT")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("8848")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("NACOS_USERNAME")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("root")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("NACOS_PASSWORD")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("hoj123456")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# backend后端服务的配置")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("BACKEND_HOST")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("172.20.0.5")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("BACKEND_PORT")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("6688")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("JWT_TOKEN_SECRET")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("default # token加密秘钥 默认则生成32位随机密钥")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("JWT_TOKEN_EXPIRE")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("86400 # token过期时间默认为24小时 86400s")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("JWT_TOKEN_FRESH_EXPIRE")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("43200 # token默认12小时可自动刷新")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("JUDGE_TOKEN")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("default # 调用判题服务器的token 默认则生成32位随机密钥")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("EMAIL_SERVER_HOST")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("smtp.qq.com # 请使用邮件服务的域名或ip")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("EMAIL_SERVER_PORT")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("465")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("EMAIL_USERNMAE")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("your_email_username")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("EMAIL_PASSWORD")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("your_email_password")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 开启虚拟判题请提供对应oj的账号密码 格式为 ")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# username1,username2,...")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# password1,password2,...")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("HDU_ACCOUNT_USERNAME_LIST")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("HDU_ACCOUNT_PASSWORD_LIST")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("CF_ACCOUNT_USERNAME_LIST")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("CF_ACCOUNT_PASSWORD_LIST")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# judgeserver的配置")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("JUDGE_SERVER_IP")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("172.20.0.7")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("JUDGE_SERVER_PORT")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("8088")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("JUDGE_SERVER_NAME")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("judger-alone")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# docker network的配置")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("SUBNET")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("172.20.0.0/16")]),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("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br"),t("span",{staticClass:"line-number"},[s._v("12")]),t("br"),t("span",{staticClass:"line-number"},[s._v("13")]),t("br"),t("span",{staticClass:"line-number"},[s._v("14")]),t("br"),t("span",{staticClass:"line-number"},[s._v("15")]),t("br"),t("span",{staticClass:"line-number"},[s._v("16")]),t("br"),t("span",{staticClass:"line-number"},[s._v("17")]),t("br"),t("span",{staticClass:"line-number"},[s._v("18")]),t("br"),t("span",{staticClass:"line-number"},[s._v("19")]),t("br"),t("span",{staticClass:"line-number"},[s._v("20")]),t("br"),t("span",{staticClass:"line-number"},[s._v("21")]),t("br"),t("span",{staticClass:"line-number"},[s._v("22")]),t("br"),t("span",{staticClass:"line-number"},[s._v("23")]),t("br"),t("span",{staticClass:"line-number"},[s._v("24")]),t("br"),t("span",{staticClass:"line-number"},[s._v("25")]),t("br"),t("span",{staticClass:"line-number"},[s._v("26")]),t("br"),t("span",{staticClass:"line-number"},[s._v("27")]),t("br"),t("span",{staticClass:"line-number"},[s._v("28")]),t("br"),t("span",{staticClass:"line-number"},[s._v("29")]),t("br"),t("span",{staticClass:"line-number"},[s._v("30")]),t("br"),t("span",{staticClass:"line-number"},[s._v("31")]),t("br"),t("span",{staticClass:"line-number"},[s._v("32")]),t("br"),t("span",{staticClass:"line-number"},[s._v("33")]),t("br"),t("span",{staticClass:"line-number"},[s._v("34")]),t("br"),t("span",{staticClass:"line-number"},[s._v("35")]),t("br"),t("span",{staticClass:"line-number"},[s._v("36")]),t("br"),t("span",{staticClass:"line-number"},[s._v("37")]),t("br"),t("span",{staticClass:"line-number"},[s._v("38")]),t("br"),t("span",{staticClass:"line-number"},[s._v("39")]),t("br"),t("span",{staticClass:"line-number"},[s._v("40")]),t("br"),t("span",{staticClass:"line-number"},[s._v("41")]),t("br"),t("span",{staticClass:"line-number"},[s._v("42")]),t("br"),t("span",{staticClass:"line-number"},[s._v("43")]),t("br")])]),t("p",[s._v("如果不改动,则以默认参数启动")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[s._v("docker-compose up -d\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("p",[t("strong",[s._v("根据网速情况,大约十到二十分钟拉取镜像,全程无需人工干预,拉取完毕后,自动启动容器服务,大概需要一至两分钟的初始化。")])]),s._v(" "),t("p",[s._v("等待命令执行完毕后,查看容器状态")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[s._v("docker "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("ps")]),s._v(" -a\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("p",[s._v("当看到所有的容器的状态status都为"),t("code",[s._v("UP")]),s._v("或"),t("code",[s._v("healthy")]),s._v("就代表 OJ 已经启动成功。")]),s._v(" "),t("blockquote",[t("p",[s._v("以下默认参数说明")])]),s._v(" "),t("ul",[t("li",[s._v("默认超级管理员账号与密码:root / hoj123456")]),s._v(" "),t("li",[s._v("默认redis密码:hoj123456")]),s._v(" "),t("li",[s._v("默认mysql账号与密码:root / hoj123456")]),s._v(" "),t("li",[s._v("默认nacos管理员账号与密码:root / hoj123456")]),s._v(" "),t("li",[s._v("默认不开启https,开启需修改文件同时提供证书文件")]),s._v(" "),t("li",[s._v("判题并发数默认:cpu核心数*2")]),s._v(" "),t("li",[s._v("默认开启vj判题,需要手动修改添加账号与密码,如果不添加不能vj判题!")]),s._v(" "),t("li",[s._v("vj判题并发数默认:cpu核心数*4")])])])]),s._v(" "),t("p",[t("strong",[s._v("登录root账号到后台查看服务状态以及到"),t("code",[s._v("http://ip/admin/conf")]),s._v("修改服务配置!")])]),s._v(" "),t("p",[t("u",[s._v("注意:网站的注册及用户账号相关操作需要邮件系统,所以请在系统配置中配置自己的SMTP邮件服务。")])]),s._v(" "),t("p",[t("strong",[s._v("(如果已经在启动在.env文件配置了邮件服务即不用再次修改)")])]),s._v(" "),t("div",{staticClass:"language-bash line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[s._v("Host: smtp.qq.com\nPort: "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("465")]),s._v("\nUsername: qq邮箱账号\nPassword: 开启SMTP服务后生成的随机授权码\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("h2",{attrs:{id:"二、分布式部署"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#二、分布式部署"}},[s._v("#")]),s._v(" 二、分布式部署")]),s._v(" "),t("ol",[t("li",[t("p",[s._v("选择好需要安装的位置,运行下面命令")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("git")]),s._v(" clone https://gitee.com/himitzh0730/hoj-deploy.git "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("&&")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("cd")]),s._v(" hoj-deploy\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])])]),s._v(" "),t("li",[t("p",[s._v("进入文件夹")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("cd")]),s._v(" distributed\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("p",[t("code",[s._v("distributed")]),s._v("文件夹有以下:")]),s._v(" "),t("div",{staticClass:"language-bash line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[s._v("├── judgeserver\n├── main\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")])])]),s._v(" "),t("li",[t("p",[s._v("首先部署主服务,即是数据后台服务(DataBackup)")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("cd")]),s._v(" main\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("p",[s._v("该文件夹下有:")]),s._v(" "),t("div",{staticClass:"language-bash line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[s._v("├── docker-compose.yml\n├── .env\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("p",[s._v("修改"),t("code",[s._v(".env")]),s._v("文件中的配置")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("vim")]),s._v(" .env\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("blockquote",[t("p",[s._v("注意:各服务ip最好不改动,保持处于172.20.0.0/16网段的docker network")])]),s._v(" "),t("div",{staticClass:"language-properties line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-properties"}},[t("code",[t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# redis的配置")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("REDIS_HOST")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("172.20.0.2")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("REDIS_PORT")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("6379")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("REDIS_PASSWORD")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("hoj123456")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# mysql的配置")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("MYSQL_HOST")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("172.20.0.3")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("MYSQL_PUBLIC_HOST")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("172.20.0.3 # 请提供当前mysql所在服务器的公网ip")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("MYSQL_PORT")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("3306")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("MYSQL_ROOT_PASSWORD")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("hoj123456")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# nacos的配置")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("NACOS_HOST")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("172.20.0.4")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("NACOS_PORT")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("8848")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("NACOS_USERNAME")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("root")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("NACOS_PASSWORD")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("hoj123456")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# backend后端服务的配置")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("BACKEND_HOST")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("172.20.0.5")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("BACKEND_PORT")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("6688")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("JWT_TOKEN_SECRET")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("default # token加密秘钥 默认则生成32位随机密钥")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("JWT_TOKEN_EXPIRE")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("86400 # token过期时间默认为24小时 86400s")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("JWT_TOKEN_FRESH_EXPIRE")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("43200 # token默认12小时可自动刷新")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("JUDGE_TOKEN")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("default # 调用判题服务器的token 默认则生成32位随机密钥")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("EMAIL_SERVER_HOST")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("smtp.qq.com # 请使用邮件服务的域名或ip")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("EMAIL_SERVER_PORT")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("465")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("EMAIL_USERNMAE")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("your_email_username")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("EMAIL_PASSWORD")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("your_email_password")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 开启虚拟判题请提供对应oj的账号密码 格式为 ")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# username1,username2,...")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# password1,password2,...")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("HDU_ACCOUNT_USERNAME_LIST")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("username1,username2")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("HDU_ACCOUNT_PASSWORD_LIST")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("password1,password2")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("CF_ACCOUNT_USERNAME_LIST")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("CF_ACCOUNT_PASSWORD_LIST")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 评测数据同步的配置")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("RSYNC_PASSWORD")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("hoj123456 # 请修改数据同步密码")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# docker network的配置")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("SUBNET")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("172.20.0.0/16")]),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("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br"),t("span",{staticClass:"line-number"},[s._v("12")]),t("br"),t("span",{staticClass:"line-number"},[s._v("13")]),t("br"),t("span",{staticClass:"line-number"},[s._v("14")]),t("br"),t("span",{staticClass:"line-number"},[s._v("15")]),t("br"),t("span",{staticClass:"line-number"},[s._v("16")]),t("br"),t("span",{staticClass:"line-number"},[s._v("17")]),t("br"),t("span",{staticClass:"line-number"},[s._v("18")]),t("br"),t("span",{staticClass:"line-number"},[s._v("19")]),t("br"),t("span",{staticClass:"line-number"},[s._v("20")]),t("br"),t("span",{staticClass:"line-number"},[s._v("21")]),t("br"),t("span",{staticClass:"line-number"},[s._v("22")]),t("br"),t("span",{staticClass:"line-number"},[s._v("23")]),t("br"),t("span",{staticClass:"line-number"},[s._v("24")]),t("br"),t("span",{staticClass:"line-number"},[s._v("25")]),t("br"),t("span",{staticClass:"line-number"},[s._v("26")]),t("br"),t("span",{staticClass:"line-number"},[s._v("27")]),t("br"),t("span",{staticClass:"line-number"},[s._v("28")]),t("br"),t("span",{staticClass:"line-number"},[s._v("29")]),t("br"),t("span",{staticClass:"line-number"},[s._v("30")]),t("br"),t("span",{staticClass:"line-number"},[s._v("31")]),t("br"),t("span",{staticClass:"line-number"},[s._v("32")]),t("br"),t("span",{staticClass:"line-number"},[s._v("33")]),t("br"),t("span",{staticClass:"line-number"},[s._v("34")]),t("br"),t("span",{staticClass:"line-number"},[s._v("35")]),t("br"),t("span",{staticClass:"line-number"},[s._v("36")]),t("br"),t("span",{staticClass:"line-number"},[s._v("37")]),t("br"),t("span",{staticClass:"line-number"},[s._v("38")]),t("br"),t("span",{staticClass:"line-number"},[s._v("39")]),t("br"),t("span",{staticClass:"line-number"},[s._v("40")]),t("br"),t("span",{staticClass:"line-number"},[s._v("41")]),t("br")])]),t("p",[s._v("配置修改保存后,当前路径下启动该服务")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[s._v("docker-compose up -d\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("p",[s._v("根据网速情况,大约十分钟即可安装完毕,全程无需人工干预。")]),s._v(" "),t("p",[s._v("等待命令执行完毕后,查看容器状态")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[s._v("docker "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("ps")]),s._v(" -a\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("p",[s._v("当看到所有的容器的状态status都为"),t("code",[s._v("UP")]),s._v("或"),t("code",[s._v("healthy")]),s._v("就代表 OJ 已经启动成功。")])]),s._v(" "),t("li",[t("p",[s._v("接着,在另一台服务器上,依旧git clone该文件夹下来,然后进入"),t("code",[s._v("judgeserver")]),s._v("文件夹,修改"),t("code",[s._v(".env")]),s._v("的配置")]),s._v(" "),t("div",{staticClass:"language-properties line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-properties"}},[t("code",[t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# nacos的配置")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("NACOS_HOST")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("NACOS_HOST # 修改为nacos所在服务的ip,即主服务器的公网ip")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("NACOS_PORT")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("8848 # 修改为nacos启动端口号,默认为8848")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("NACOS_USERNAME")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("root # 修改为nacos的管理员账号")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("NACOS_PASSWORD")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("hoj123456 # 修改为nacos的管理员密码")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# judgeserver的配置")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("JUDGE_SERVER_IP")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("172.20.0.7 # 修改为当前的服务器公网ip")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("JUDGE_SERVER_PORT")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("8088 # judgeserver启动端口号")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("JUDGE_SERVER_NAME")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("judger-1")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("MAX_TASK_NUM")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("-1 # -1表示最大并行任务数为cpu核心数*2")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("REMOTE_JUDGE_OPEN")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("true # 当前判题服务器是否开启远程虚拟判题功能")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("REMOTE_JUDGE_MAX_TASK_NUM")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("-1 # -1表示最大并行任务数为(cpu核心数*2)*2")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# rsync评测数据同步的配置")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("RSYNC_MASTER_ADDR")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("127.0.0.1 # 写入主服务器ip")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("RSYNC_PASSWORD")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("hoj123456 # 与主服务器的rsync密码一致")]),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("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br"),t("span",{staticClass:"line-number"},[s._v("12")]),t("br"),t("span",{staticClass:"line-number"},[s._v("13")]),t("br"),t("span",{staticClass:"line-number"},[s._v("14")]),t("br"),t("span",{staticClass:"line-number"},[s._v("15")]),t("br"),t("span",{staticClass:"line-number"},[s._v("16")]),t("br"),t("span",{staticClass:"line-number"},[s._v("17")]),t("br")])]),t("p",[s._v("配置修改保存后,当前路径下启动该服务")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[s._v("docker-compose up -d\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("blockquote",[t("p",[s._v("提示:需要开启多台判题机,就如当前第4步的操作一样,在每台服务器上执行以上的操作即可。")])])]),s._v(" "),t("li",[t("p",[s._v("两个服务都启动完成,在浏览器输入主服务ip或域名进行访问,登录root账号到后台查看服务状态。")])])]),s._v(" "),t("h2",{attrs:{id:"三、开启https"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#三、开启https"}},[s._v("#")]),s._v(" 三、开启Https")]),s._v(" "),t("ul",[t("li",[t("p",[s._v("单机部署:")]),s._v(" "),t("p",[s._v("提供server.crt和server.key证书与密钥文件放置"),t("code",[s._v("/standAlone")]),s._v("目录下,与"),t("code",[s._v("docker-compose.yml")]),s._v("和"),t("code",[s._v(".env")]),s._v("文件放置同一位置,然后修改"),t("code",[s._v("docker-compose.yml")]),s._v("中的hoj-frontend的配置")])]),s._v(" "),t("li",[t("p",[s._v("分布式部署:")]),s._v(" "),t("p",[s._v("提供server.crt和server.key证书与密钥文件放置"),t("code",[s._v("/distributed/main目录下,与")]),s._v("docker-compose.yml"),t("code",[s._v("和")]),s._v(".env"),t("code",[s._v("文件放置同一位置,然后修改")]),s._v("docker-compose.yml`中的hoj-frontend的配置")])])]),s._v(" "),t("div",{staticClass:"language-yaml line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-yaml"}},[t("code",[t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("hoj-frontend")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("image")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" registry.cn"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("shenzhen.aliyuncs.com/hcode/hoj_frontend\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("container_name")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" hoj"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("frontend\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("restart")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" always\n "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 开启https,请提供证书")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("volumes")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" ./server.crt"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("/etc/nginx/etc/crt/server.crt\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" ./server.key"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("/etc/nginx/etc/crt/server.key\n "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 修改前端logo")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# - ./logo.a0924d7d.png:/usr/share/nginx/html/assets/img/logo.a0924d7d.png")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# - ./backstage.8bce8c6e.png:/usr/share/nginx/html/assets/img/backstage.8bce8c6e.png")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("environment")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" SERVER_NAME=localhost "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 提供你的域名!!!!")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" BACKEND_SERVER_HOST=$"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("BACKEND_HOST"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("172.20.0.5"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# backend后端服务地址")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" BACKEND_SERVER_PORT=$"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("BACKEND_PORT"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("-6688")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# backend后端服务端口号")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" USE_HTTPS=true "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 使用https请设置为true")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("ports")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"80:80"')]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"443:443"')]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("networks")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("hoj-network")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("ipv4_address")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" 172.20.0.6\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("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br"),t("span",{staticClass:"line-number"},[s._v("12")]),t("br"),t("span",{staticClass:"line-number"},[s._v("13")]),t("br"),t("span",{staticClass:"line-number"},[s._v("14")]),t("br"),t("span",{staticClass:"line-number"},[s._v("15")]),t("br"),t("span",{staticClass:"line-number"},[s._v("16")]),t("br"),t("span",{staticClass:"line-number"},[s._v("17")]),t("br"),t("span",{staticClass:"line-number"},[s._v("18")]),t("br"),t("span",{staticClass:"line-number"},[s._v("19")]),t("br"),t("span",{staticClass:"line-number"},[s._v("20")]),t("br"),t("span",{staticClass:"line-number"},[s._v("21")]),t("br"),t("span",{staticClass:"line-number"},[s._v("22")]),t("br")])])])}),[],!1,null,null,null);a.default=e.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[10],{356:function(s,a,t){"use strict";t.r(a);var n=t(41),e=Object(n.a)({},(function(){var s=this,a=s.$createElement,t=s._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[t("h1",{attrs:{id:"快速部署"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#快速部署"}},[s._v("#")]),s._v(" 快速部署")]),s._v(" "),t("blockquote",[t("p",[s._v("前提:已经在上一步准备好docker与docker-compose")])]),s._v(" "),t("h2",{attrs:{id:"一、单机部署"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#一、单机部署"}},[s._v("#")]),s._v(" 一、单机部署")]),s._v(" "),t("ol",[t("li",[t("p",[s._v("选择好需要安装的位置,运行下面命令")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("git")]),s._v(" clone https://gitee.com/himitzh0730/hoj-deploy.git "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("&&")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("cd")]),s._v(" hoj-deploy\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])])]),s._v(" "),t("li",[t("p",[s._v("进入文件夹,使用docker-compose启动各容器服务")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("cd")]),s._v(" standAlone\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("p",[t("code",[s._v("standAlone")]),s._v("文件夹文件有以下:")]),s._v(" "),t("div",{staticClass:"language-bash line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[s._v("├── docker-compose.yml\n├── .env\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("p",[s._v("主要配置请修改"),t("code",[s._v(".env")]),s._v("文件,内容如下:")]),s._v(" "),t("blockquote",[t("p",[s._v("注意:各服务ip最好不改动,保持处于172.20.0.0/16网段的docker network")])]),s._v(" "),t("div",{staticClass:"language-properties line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-properties"}},[t("code",[t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# redis的配置")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("REDIS_HOST")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("172.20.0.2")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("REDIS_PORT")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("6379")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("REDIS_PASSWORD")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("hoj123456")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# mysql的配置")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("MYSQL_HOST")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("172.20.0.3")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("MYSQL_PUBLIC_HOST")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("172.20.0.3 # 如果判题服务是分布式,请提供当前mysql所在服务器的公网ip")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("MYSQL_PORT")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("3306")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("MYSQL_ROOT_PASSWORD")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("hoj123456")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# nacos的配置")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("NACOS_HOST")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("172.20.0.4")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("NACOS_PORT")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("8848")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("NACOS_USERNAME")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("root")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("NACOS_PASSWORD")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("hoj123456")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# backend后端服务的配置")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("BACKEND_HOST")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("172.20.0.5")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("BACKEND_PORT")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("6688")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("JWT_TOKEN_SECRET")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("default # token加密秘钥 默认则生成32位随机密钥")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("JWT_TOKEN_EXPIRE")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("86400 # token过期时间默认为24小时 86400s")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("JWT_TOKEN_FRESH_EXPIRE")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("43200 # token默认12小时可自动刷新")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("JUDGE_TOKEN")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("default # 调用判题服务器的token 默认则生成32位随机密钥")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("EMAIL_SERVER_HOST")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("smtp.qq.com # 请使用邮件服务的域名或ip")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("EMAIL_SERVER_PORT")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("465")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("EMAIL_USERNMAE")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("your_email_username")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("EMAIL_PASSWORD")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("your_email_password")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 开启虚拟判题请提供对应oj的账号密码 格式为 ")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# username1,username2,...")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# password1,password2,...")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("HDU_ACCOUNT_USERNAME_LIST")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("HDU_ACCOUNT_PASSWORD_LIST")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("CF_ACCOUNT_USERNAME_LIST")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("CF_ACCOUNT_PASSWORD_LIST")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# judgeserver的配置")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("JUDGE_SERVER_IP")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("172.20.0.7")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("JUDGE_SERVER_PORT")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("8088")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("JUDGE_SERVER_NAME")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("judger-alone")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# docker network的配置")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("SUBNET")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("172.20.0.0/16")]),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("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br"),t("span",{staticClass:"line-number"},[s._v("12")]),t("br"),t("span",{staticClass:"line-number"},[s._v("13")]),t("br"),t("span",{staticClass:"line-number"},[s._v("14")]),t("br"),t("span",{staticClass:"line-number"},[s._v("15")]),t("br"),t("span",{staticClass:"line-number"},[s._v("16")]),t("br"),t("span",{staticClass:"line-number"},[s._v("17")]),t("br"),t("span",{staticClass:"line-number"},[s._v("18")]),t("br"),t("span",{staticClass:"line-number"},[s._v("19")]),t("br"),t("span",{staticClass:"line-number"},[s._v("20")]),t("br"),t("span",{staticClass:"line-number"},[s._v("21")]),t("br"),t("span",{staticClass:"line-number"},[s._v("22")]),t("br"),t("span",{staticClass:"line-number"},[s._v("23")]),t("br"),t("span",{staticClass:"line-number"},[s._v("24")]),t("br"),t("span",{staticClass:"line-number"},[s._v("25")]),t("br"),t("span",{staticClass:"line-number"},[s._v("26")]),t("br"),t("span",{staticClass:"line-number"},[s._v("27")]),t("br"),t("span",{staticClass:"line-number"},[s._v("28")]),t("br"),t("span",{staticClass:"line-number"},[s._v("29")]),t("br"),t("span",{staticClass:"line-number"},[s._v("30")]),t("br"),t("span",{staticClass:"line-number"},[s._v("31")]),t("br"),t("span",{staticClass:"line-number"},[s._v("32")]),t("br"),t("span",{staticClass:"line-number"},[s._v("33")]),t("br"),t("span",{staticClass:"line-number"},[s._v("34")]),t("br"),t("span",{staticClass:"line-number"},[s._v("35")]),t("br"),t("span",{staticClass:"line-number"},[s._v("36")]),t("br"),t("span",{staticClass:"line-number"},[s._v("37")]),t("br"),t("span",{staticClass:"line-number"},[s._v("38")]),t("br"),t("span",{staticClass:"line-number"},[s._v("39")]),t("br"),t("span",{staticClass:"line-number"},[s._v("40")]),t("br"),t("span",{staticClass:"line-number"},[s._v("41")]),t("br"),t("span",{staticClass:"line-number"},[s._v("42")]),t("br"),t("span",{staticClass:"line-number"},[s._v("43")]),t("br")])]),t("p",[s._v("如果不改动,则以默认参数启动")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[s._v("docker-compose up -d\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("p",[t("strong",[s._v("根据网速情况,大约十到二十分钟拉取镜像,全程无需人工干预,拉取完毕后,自动启动容器服务,大概需要一至两分钟的初始化。")])]),s._v(" "),t("p",[s._v("等待命令执行完毕后,查看容器状态")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[s._v("docker "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("ps")]),s._v(" -a\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("p",[s._v("当看到所有的容器的状态status都为"),t("code",[s._v("UP")]),s._v("或"),t("code",[s._v("healthy")]),s._v("就代表 OJ 已经启动成功。")]),s._v(" "),t("blockquote",[t("p",[s._v("以下默认参数说明")])]),s._v(" "),t("ul",[t("li",[s._v("默认超级管理员账号与密码:root / hoj123456")]),s._v(" "),t("li",[s._v("默认redis密码:hoj123456")]),s._v(" "),t("li",[s._v("默认mysql账号与密码:root / hoj123456")]),s._v(" "),t("li",[s._v("默认nacos管理员账号与密码:root / hoj123456")]),s._v(" "),t("li",[s._v("默认不开启https,开启需修改文件同时提供证书文件")]),s._v(" "),t("li",[s._v("判题并发数默认:cpu核心数*2")]),s._v(" "),t("li",[s._v("默认开启vj判题,需要手动修改添加账号与密码,如果不添加不能vj判题!")]),s._v(" "),t("li",[s._v("vj判题并发数默认:cpu核心数*4")])])])]),s._v(" "),t("p",[t("strong",[s._v("登录root账号到后台查看服务状态以及到"),t("code",[s._v("http://ip/admin/conf")]),s._v("修改服务配置!")])]),s._v(" "),t("p",[t("u",[s._v("注意:网站的注册及用户账号相关操作需要邮件系统,所以请在系统配置中配置自己的SMTP邮件服务。")])]),s._v(" "),t("p",[t("strong",[s._v("(如果已经在启动在.env文件配置了邮件服务即不用再次修改)")])]),s._v(" "),t("div",{staticClass:"language-bash line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[s._v("Host: smtp.qq.com\nPort: "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("465")]),s._v("\nUsername: qq邮箱账号\nPassword: 开启SMTP服务后生成的随机授权码\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("h2",{attrs:{id:"二、分布式部署"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#二、分布式部署"}},[s._v("#")]),s._v(" 二、分布式部署")]),s._v(" "),t("ol",[t("li",[t("p",[s._v("选择好需要安装的位置,运行下面命令")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("git")]),s._v(" clone https://gitee.com/himitzh0730/hoj-deploy.git "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("&&")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("cd")]),s._v(" hoj-deploy\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])])]),s._v(" "),t("li",[t("p",[s._v("进入文件夹")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("cd")]),s._v(" distributed\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("p",[t("code",[s._v("distributed")]),s._v("文件夹有以下:")]),s._v(" "),t("div",{staticClass:"language-bash line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[s._v("├── judgeserver\n├── main\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")])])]),s._v(" "),t("li",[t("p",[s._v("首先部署主服务,即是数据后台服务(DataBackup)")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("cd")]),s._v(" main\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("p",[s._v("该文件夹下有:")]),s._v(" "),t("div",{staticClass:"language-bash line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[s._v("├── docker-compose.yml\n├── .env\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("p",[s._v("修改"),t("code",[s._v(".env")]),s._v("文件中的配置")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("vim")]),s._v(" .env\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("blockquote",[t("p",[s._v("注意:各服务ip最好不改动,保持处于172.20.0.0/16网段的docker network")])]),s._v(" "),t("div",{staticClass:"language-properties line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-properties"}},[t("code",[t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# redis的配置")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("REDIS_HOST")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("172.20.0.2")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("REDIS_PORT")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("6379")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("REDIS_PASSWORD")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("hoj123456")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# mysql的配置")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("MYSQL_HOST")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("172.20.0.3")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("MYSQL_PUBLIC_HOST")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("172.20.0.3 # 请提供当前mysql所在服务器的公网ip")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("MYSQL_PORT")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("3306")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("MYSQL_ROOT_PASSWORD")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("hoj123456")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# nacos的配置")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("NACOS_HOST")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("172.20.0.4")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("NACOS_PORT")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("8848")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("NACOS_USERNAME")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("root")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("NACOS_PASSWORD")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("hoj123456")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# backend后端服务的配置")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("BACKEND_HOST")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("172.20.0.5")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("BACKEND_PORT")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("6688")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("JWT_TOKEN_SECRET")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("default # token加密秘钥 默认则生成32位随机密钥")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("JWT_TOKEN_EXPIRE")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("86400 # token过期时间默认为24小时 86400s")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("JWT_TOKEN_FRESH_EXPIRE")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("43200 # token默认12小时可自动刷新")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("JUDGE_TOKEN")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("default # 调用判题服务器的token 默认则生成32位随机密钥")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("EMAIL_SERVER_HOST")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("smtp.qq.com # 请使用邮件服务的域名或ip")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("EMAIL_SERVER_PORT")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("465")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("EMAIL_USERNMAE")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("your_email_username")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("EMAIL_PASSWORD")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("your_email_password")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 开启虚拟判题请提供对应oj的账号密码 格式为 ")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# username1,username2,...")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# password1,password2,...")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("HDU_ACCOUNT_USERNAME_LIST")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("username1,username2")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("HDU_ACCOUNT_PASSWORD_LIST")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("password1,password2")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("CF_ACCOUNT_USERNAME_LIST")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("CF_ACCOUNT_PASSWORD_LIST")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 评测数据同步的配置")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("RSYNC_PASSWORD")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("hoj123456 # 请修改数据同步密码")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# docker network的配置")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("SUBNET")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("172.20.0.0/16")]),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("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br"),t("span",{staticClass:"line-number"},[s._v("12")]),t("br"),t("span",{staticClass:"line-number"},[s._v("13")]),t("br"),t("span",{staticClass:"line-number"},[s._v("14")]),t("br"),t("span",{staticClass:"line-number"},[s._v("15")]),t("br"),t("span",{staticClass:"line-number"},[s._v("16")]),t("br"),t("span",{staticClass:"line-number"},[s._v("17")]),t("br"),t("span",{staticClass:"line-number"},[s._v("18")]),t("br"),t("span",{staticClass:"line-number"},[s._v("19")]),t("br"),t("span",{staticClass:"line-number"},[s._v("20")]),t("br"),t("span",{staticClass:"line-number"},[s._v("21")]),t("br"),t("span",{staticClass:"line-number"},[s._v("22")]),t("br"),t("span",{staticClass:"line-number"},[s._v("23")]),t("br"),t("span",{staticClass:"line-number"},[s._v("24")]),t("br"),t("span",{staticClass:"line-number"},[s._v("25")]),t("br"),t("span",{staticClass:"line-number"},[s._v("26")]),t("br"),t("span",{staticClass:"line-number"},[s._v("27")]),t("br"),t("span",{staticClass:"line-number"},[s._v("28")]),t("br"),t("span",{staticClass:"line-number"},[s._v("29")]),t("br"),t("span",{staticClass:"line-number"},[s._v("30")]),t("br"),t("span",{staticClass:"line-number"},[s._v("31")]),t("br"),t("span",{staticClass:"line-number"},[s._v("32")]),t("br"),t("span",{staticClass:"line-number"},[s._v("33")]),t("br"),t("span",{staticClass:"line-number"},[s._v("34")]),t("br"),t("span",{staticClass:"line-number"},[s._v("35")]),t("br"),t("span",{staticClass:"line-number"},[s._v("36")]),t("br"),t("span",{staticClass:"line-number"},[s._v("37")]),t("br"),t("span",{staticClass:"line-number"},[s._v("38")]),t("br"),t("span",{staticClass:"line-number"},[s._v("39")]),t("br"),t("span",{staticClass:"line-number"},[s._v("40")]),t("br"),t("span",{staticClass:"line-number"},[s._v("41")]),t("br")])]),t("p",[s._v("配置修改保存后,当前路径下启动该服务")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[s._v("docker-compose up -d\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("p",[s._v("根据网速情况,大约十分钟即可安装完毕,全程无需人工干预。")]),s._v(" "),t("p",[s._v("等待命令执行完毕后,查看容器状态")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[s._v("docker "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("ps")]),s._v(" -a\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("p",[s._v("当看到所有的容器的状态status都为"),t("code",[s._v("UP")]),s._v("或"),t("code",[s._v("healthy")]),s._v("就代表 OJ 已经启动成功。")])]),s._v(" "),t("li",[t("p",[s._v("接着,在另一台服务器上,依旧git clone该文件夹下来,然后进入"),t("code",[s._v("judgeserver")]),s._v("文件夹,修改"),t("code",[s._v(".env")]),s._v("的配置")]),s._v(" "),t("div",{staticClass:"language-properties line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-properties"}},[t("code",[t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# nacos的配置")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("NACOS_HOST")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("NACOS_HOST # 修改为nacos所在服务的ip,即主服务器的公网ip")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("NACOS_PORT")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("8848 # 修改为nacos启动端口号,默认为8848")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("NACOS_USERNAME")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("root # 修改为nacos的管理员账号")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("NACOS_PASSWORD")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("hoj123456 # 修改为nacos的管理员密码")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# judgeserver的配置")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("JUDGE_SERVER_IP")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("172.20.0.7 # 修改为当前的服务器公网ip")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("JUDGE_SERVER_PORT")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("8088 # judgeserver启动端口号")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("JUDGE_SERVER_NAME")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("judger-1")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("MAX_TASK_NUM")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("-1 # -1表示最大并行任务数为cpu核心数*2")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("REMOTE_JUDGE_OPEN")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("true # 当前判题服务器是否开启远程虚拟判题功能")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("REMOTE_JUDGE_MAX_TASK_NUM")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("-1 # -1表示最大并行任务数为(cpu核心数*2)*2")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# rsync评测数据同步的配置")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("RSYNC_MASTER_ADDR")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("127.0.0.1 # 写入主服务器ip")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("RSYNC_PASSWORD")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("hoj123456 # 与主服务器的rsync密码一致")]),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("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br"),t("span",{staticClass:"line-number"},[s._v("12")]),t("br"),t("span",{staticClass:"line-number"},[s._v("13")]),t("br"),t("span",{staticClass:"line-number"},[s._v("14")]),t("br"),t("span",{staticClass:"line-number"},[s._v("15")]),t("br"),t("span",{staticClass:"line-number"},[s._v("16")]),t("br"),t("span",{staticClass:"line-number"},[s._v("17")]),t("br")])]),t("p",[s._v("配置修改保存后,当前路径下启动该服务")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[s._v("docker-compose up -d\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("blockquote",[t("p",[s._v("提示:需要开启多台判题机,就如当前第4步的操作一样,在每台服务器上执行以上的操作即可。")])])]),s._v(" "),t("li",[t("p",[s._v("两个服务都启动完成,在浏览器输入主服务ip或域名进行访问,登录root账号到后台查看服务状态。")])])]),s._v(" "),t("h2",{attrs:{id:"三、开启https"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#三、开启https"}},[s._v("#")]),s._v(" 三、开启Https")]),s._v(" "),t("ul",[t("li",[t("p",[s._v("单机部署:")]),s._v(" "),t("p",[s._v("提供server.crt和server.key证书与密钥文件放置"),t("code",[s._v("/standAlone")]),s._v("目录下,与"),t("code",[s._v("docker-compose.yml")]),s._v("和"),t("code",[s._v(".env")]),s._v("文件放置同一位置,然后修改"),t("code",[s._v("docker-compose.yml")]),s._v("中的hoj-frontend的配置")])]),s._v(" "),t("li",[t("p",[s._v("分布式部署:")]),s._v(" "),t("p",[s._v("提供server.crt和server.key证书与密钥文件放置"),t("code",[s._v("/distributed/main目录下,与")]),s._v("docker-compose.yml"),t("code",[s._v("和")]),s._v(".env"),t("code",[s._v("文件放置同一位置,然后修改")]),s._v("docker-compose.yml`中的hoj-frontend的配置")])])]),s._v(" "),t("div",{staticClass:"language-yaml line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-yaml"}},[t("code",[t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("hoj-frontend")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("image")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" registry.cn"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("shenzhen.aliyuncs.com/hcode/hoj_frontend\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("container_name")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" hoj"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("frontend\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("restart")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" always\n "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 开启https,请提供证书")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("volumes")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" ./server.crt"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("/etc/nginx/etc/crt/server.crt\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" ./server.key"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("/etc/nginx/etc/crt/server.key\n "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 修改前端logo")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# - ./logo.a0924d7d.png:/usr/share/nginx/html/assets/img/logo.a0924d7d.png")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# - ./backstage.8bce8c6e.png:/usr/share/nginx/html/assets/img/backstage.8bce8c6e.png")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("environment")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" SERVER_NAME=localhost "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 提供你的域名!!!!")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" BACKEND_SERVER_HOST=$"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("BACKEND_HOST"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("172.20.0.5"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# backend后端服务地址")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" BACKEND_SERVER_PORT=$"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("BACKEND_PORT"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("-6688")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# backend后端服务端口号")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" USE_HTTPS=true "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 使用https请设置为true")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("ports")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"80:80"')]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"443:443"')]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("networks")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("hoj-network")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("ipv4_address")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" 172.20.0.6\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("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br"),t("span",{staticClass:"line-number"},[s._v("12")]),t("br"),t("span",{staticClass:"line-number"},[s._v("13")]),t("br"),t("span",{staticClass:"line-number"},[s._v("14")]),t("br"),t("span",{staticClass:"line-number"},[s._v("15")]),t("br"),t("span",{staticClass:"line-number"},[s._v("16")]),t("br"),t("span",{staticClass:"line-number"},[s._v("17")]),t("br"),t("span",{staticClass:"line-number"},[s._v("18")]),t("br"),t("span",{staticClass:"line-number"},[s._v("19")]),t("br"),t("span",{staticClass:"line-number"},[s._v("20")]),t("br"),t("span",{staticClass:"line-number"},[s._v("21")]),t("br"),t("span",{staticClass:"line-number"},[s._v("22")]),t("br")])])])}),[],!1,null,null,null);a.default=e.exports}}]); \ No newline at end of file diff --git a/docs/docs/.vuepress/dist/assets/js/11.78270857.js b/docs/docs/.vuepress/dist/assets/js/11.04be5cfa.js similarity index 99% rename from docs/docs/.vuepress/dist/assets/js/11.78270857.js rename to docs/docs/.vuepress/dist/assets/js/11.04be5cfa.js index 6ed1d237..1f1a7185 100644 --- a/docs/docs/.vuepress/dist/assets/js/11.78270857.js +++ b/docs/docs/.vuepress/dist/assets/js/11.04be5cfa.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[11],{368:function(s,t,a){"use strict";a.r(t);var n=a(41),e=Object(n.a)({},(function(){var s=this,t=s.$createElement,a=s._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[a("h1",{attrs:{id:"前端部署"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#前端部署"}},[s._v("#")]),s._v(" 前端部署")]),s._v(" "),a("h2",{attrs:{id:"一、常规部署"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#一、常规部署"}},[s._v("#")]),s._v(" 一、常规部署")]),s._v(" "),a("h4",{attrs:{id:"_1-安装nginx"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_1-安装nginx"}},[s._v("#")]),s._v(" 1. 安装nginx")]),s._v(" "),a("blockquote",[a("p",[s._v("注意:apt下载太慢的话,建议换阿里云源,请自行百度or谷歌")])]),s._v(" "),a("ol",[a("li",[a("p",[s._v("使用apt安装")]),s._v(" "),a("div",{staticClass:"language-shell line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("apt")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("install")]),s._v(" nginx\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br")])])]),s._v(" "),a("li",[a("p",[s._v("路径介绍")]),s._v(" "),a("ul",[a("li",[s._v("/usr/sbin/nginx:主程序")]),s._v(" "),a("li",[s._v("/etc/nginx:存放配置文件")]),s._v(" "),a("li",[s._v("/usr/share/nginx:存放静态文件")]),s._v(" "),a("li",[s._v("/var/log/nginx:存放日志")])])]),s._v(" "),a("li",[a("p",[s._v("启动nginx")]),s._v(" "),a("div",{staticClass:"language-shell line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[s._v("service")]),s._v(" nginx start\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br")])])]),s._v(" "),a("li",[a("p",[s._v("验证是否成功")]),s._v(" "),a("p",[s._v("在浏览器输入你的ip地址,如果出现Wellcome to nginx 那么就是配置成功")])])]),s._v(" "),a("h4",{attrs:{id:"_2-部署"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_2-部署"}},[s._v("#")]),s._v(" 2. 部署")]),s._v(" "),a("ol",[a("li",[a("p",[a("a",{attrs:{href:"https://gitee.com/himitzh0730/hoj/tree/master/hoj-vue",target:"_blank",rel:"noopener noreferrer"}},[s._v("下载本项目"),a("OutboundLink")],1),s._v(",git clone或者download zip")])]),s._v(" "),a("li",[a("p",[s._v("前提是本地有vue-cli4与npm,请自行百度下载")])]),s._v(" "),a("li",[a("p",[s._v("然后在当前hoj-vue文件夹的src路径运行打包命令")]),s._v(" "),a("div",{staticClass:"language-powershell line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-powershell"}},[a("code",[s._v("npm run build\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br")])])]),s._v(" "),a("li",[a("p",[s._v("打包成功会在src同文件夹内有个dist文件夹,复制里面的html和css等静态文件")])]),s._v(" "),a("li",[a("p",[s._v("在云服务器上创建文件夹")]),s._v(" "),a("div",{staticClass:"language-shell line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[s._v("mkdir")]),s._v(" -p /hoj/www/html\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br")])]),a("p",[s._v("然后将这些静态文件复制到里面即可")])]),s._v(" "),a("li",[a("p",[s._v("配置nginx,在安装好nginx后,修改nginx.conf配置")]),s._v(" "),a("div",{staticClass:"language-shell line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("vi")]),s._v(" /etc/nginx/nginx.conf\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br")])])]),s._v(" "),a("li",[a("p",[s._v("将下面的内容复制进去")]),s._v(" "),a("p",[a("strong",[s._v("注意:没有域名使用IP+端口号也一样")])]),s._v(" "),a("div",{staticClass:"language-json line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[s._v("server"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n listen "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("80")]),s._v("; # 监听访问的端口号\n server_name www.hcode.top; # 此处填写你的域名或IP\n root /hoj/www/html; # 此处填写你的网页根目录\n location /api"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n proxy_set_header X-Real-IP $remote_addr;\n proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n proxy_set_header Host $http_host;\n proxy_set_header X-Forwarded-Proto $scheme;\n proxy_pass http"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("//localhost:6688; # 填写你的后端地址和端口")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n location ~ .*\\.(js|json|css)$ "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n gzip on;\n gzip_static on; # gzip_static是nginx对于静态文件的处理模块,该模块可以读取预先压缩的gz文件,这样可以减少每次请求进行gzip压缩的CPU资源消耗。\n gzip_min_length 1k;\n gzip_http_version "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.1")]),s._v(";\n gzip_comp_level "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("9")]),s._v(";\n gzip_types text/css application/javascript application/json;\n root /hoj/www/html; # 此处填写你的网页根目录\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n location / "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v(" # 路由重定向以适应Vue中的路由\n index index.html;\n try_files $uri $uri/ /index.html;\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br"),a("span",{staticClass:"line-number"},[s._v("9")]),a("br"),a("span",{staticClass:"line-number"},[s._v("10")]),a("br"),a("span",{staticClass:"line-number"},[s._v("11")]),a("br"),a("span",{staticClass:"line-number"},[s._v("12")]),a("br"),a("span",{staticClass:"line-number"},[s._v("13")]),a("br"),a("span",{staticClass:"line-number"},[s._v("14")]),a("br"),a("span",{staticClass:"line-number"},[s._v("15")]),a("br"),a("span",{staticClass:"line-number"},[s._v("16")]),a("br"),a("span",{staticClass:"line-number"},[s._v("17")]),a("br"),a("span",{staticClass:"line-number"},[s._v("18")]),a("br"),a("span",{staticClass:"line-number"},[s._v("19")]),a("br"),a("span",{staticClass:"line-number"},[s._v("20")]),a("br"),a("span",{staticClass:"line-number"},[s._v("21")]),a("br"),a("span",{staticClass:"line-number"},[s._v("22")]),a("br"),a("span",{staticClass:"line-number"},[s._v("23")]),a("br"),a("span",{staticClass:"line-number"},[s._v("24")]),a("br"),a("span",{staticClass:"line-number"},[s._v("25")]),a("br")])])]),s._v(" "),a("li",[a("p",[s._v("修改后保存,然后重启或者热重载nginx,不出意外应该可用访问前端页面了。")]),s._v(" "),a("div",{staticClass:"language-shell line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" systemctl restart nginx \n或\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" nginx -s reload\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br")])])])]),s._v(" "),a("h2",{attrs:{id:"二、docker部署"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#二、docker部署"}},[s._v("#")]),s._v(" 二、docker部署")]),s._v(" "),a("h3",{attrs:{id:"前言"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#前言"}},[s._v("#")]),s._v(" 前言")]),s._v(" "),a("blockquote",[a("p",[s._v("html文件夹下为hoj的vue前端打包的静态资源")])]),s._v(" "),a("p",[s._v("直接下载本项目,进入到当前文件夹执行打包命令")]),s._v(" "),a("div",{staticClass:"language-shell line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[s._v("git")]),s._v(" clone https://gitee.com/himitzh0730/hoj-deploy.git "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("&&")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("cd")]),s._v(" hoj-deploy/src/frontend\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br")])]),a("p",[s._v("当前文件夹为打包"),a("code",[s._v("hoj-frontend")]),s._v("镜像的相关文件,将这些文件复制到同一个文件夹内,之后执行以下命令进行打包成镜像")]),s._v(" "),a("div",{staticClass:"language-shell line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[s._v("docker build -t hoj-frontend "),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v(".")]),s._v("\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br")])]),a("p",[s._v("docker run 启动")]),s._v(" "),a("ul",[a("li",[a("p",[s._v("Http方式")]),s._v(" "),a("div",{staticClass:"language-shell line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[s._v("docker run -d --name hoj-frontend "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("SERVER_NAME")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("localhost "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("BACKEND_SERVER_HOST")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("backend_server_host "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("BACKEND_SERVER_PORT")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("backend_server_port "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("USE_HTTPS")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("false "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-p "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("80")]),s._v(":80 "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n--restart"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"always"')]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\nhoj-frontend\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# registry.cn-shenzhen.aliyuncs.com/hcode/hoj_frontend")]),s._v("\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br"),a("span",{staticClass:"line-number"},[s._v("9")]),a("br")])])]),s._v(" "),a("li",[a("p",[s._v("Https方式")]),s._v(" "),a("p",[a("strong",[s._v("需将SSL证书与公钥文件(server.crt、server.kry)放置当前目录")])]),s._v(" "),a("div",{staticClass:"language-shell line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[s._v("docker run -d --name hoj-frontend "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("SERVER_NAME")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("localhost "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("BACKEND_SERVER_HOST")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("backend_server_host "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("BACKEND_SERVER_PORT")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("backend_server_port "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("USE_HTTPS")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("true "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e ./server.crt:/etc/nginx/etc/crt/server.crt "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e ./server.key:/etc/nginx/etc/crt/server.key "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-p "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("80")]),s._v(":80 "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-p "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("443")]),s._v(":443 "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n--restart"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"always"')]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\nhoj-frontend\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# registry.cn-shenzhen.aliyuncs.com/hcode/hoj_frontend")]),s._v("\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br"),a("span",{staticClass:"line-number"},[s._v("9")]),a("br"),a("span",{staticClass:"line-number"},[s._v("10")]),a("br"),a("span",{staticClass:"line-number"},[s._v("11")]),a("br"),a("span",{staticClass:"line-number"},[s._v("12")]),a("br")])])])]),s._v(" "),a("p",[s._v("docker-compose 启动")]),s._v(" "),a("div",{staticClass:"language-yaml line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-yaml"}},[a("code",[a("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("version")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"3"')]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("services")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("hoj-frontend")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# image: registry.cn-shenzhen.aliyuncs.com/hcode/hoj_frontend")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("image")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" hoj"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("frontend\n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("container_name")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" hoj"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("frontend\n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("restart")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" always\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 开启https,请提供证书")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("#volumes:")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# - ./server.crt:/etc/nginx/etc/crt/server.crt")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# - ./server.key:/etc/nginx/etc/crt/server.key")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("environment")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" SERVER_NAME=localhost "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 域名或localhost(本地)")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" BACKEND_SERVER_HOST=172.20.0.5 "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# backend后端服务地址")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" BACKEND_SERVER_PORT=6688 "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# backend后端服务端口号")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" USE_HTTPS=false\n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("ports")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"80:80"')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"443:443"')]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# networks:")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# hoj-network:")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# ipv4_address: 172.20.0.6")]),s._v("\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br"),a("span",{staticClass:"line-number"},[s._v("9")]),a("br"),a("span",{staticClass:"line-number"},[s._v("10")]),a("br"),a("span",{staticClass:"line-number"},[s._v("11")]),a("br"),a("span",{staticClass:"line-number"},[s._v("12")]),a("br"),a("span",{staticClass:"line-number"},[s._v("13")]),a("br"),a("span",{staticClass:"line-number"},[s._v("14")]),a("br"),a("span",{staticClass:"line-number"},[s._v("15")]),a("br"),a("span",{staticClass:"line-number"},[s._v("16")]),a("br"),a("span",{staticClass:"line-number"},[s._v("17")]),a("br"),a("span",{staticClass:"line-number"},[s._v("18")]),a("br"),a("span",{staticClass:"line-number"},[s._v("19")]),a("br"),a("span",{staticClass:"line-number"},[s._v("20")]),a("br"),a("span",{staticClass:"line-number"},[s._v("21")]),a("br"),a("span",{staticClass:"line-number"},[s._v("22")]),a("br")])]),a("h3",{attrs:{id:"文件介绍"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#文件介绍"}},[s._v("#")]),s._v(" 文件介绍")]),s._v(" "),a("h4",{attrs:{id:"_1-default-conf-ssl-template"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_1-default-conf-ssl-template"}},[s._v("#")]),s._v(" 1. default.conf.ssl.template")]),s._v(" "),a("p",[s._v("nginx的SSL配置文件模板,需要在执行 run.sh注入环境变量生成对应的nginx.conf文件")]),s._v(" "),a("div",{staticClass:"language-nginx line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-nginx"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("server")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("listen")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("80")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("#填写绑定证书的域名")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("server_name")]),s._v(" $"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("SERVER_NAME")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("#把http的域名请求转成https")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("return")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("301")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("https")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),a("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$host")]),a("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$request_uri")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("server")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n\t"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("listen")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("443")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("ssl")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n\t"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("server_name")]),s._v(" $"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("SERVER_NAME")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("#证书文件名称")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("ssl_certificate")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("etc"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("nginx"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("etc"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("crt"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("server")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("crt"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("#私钥文件名称")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("ssl_certificate_key")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("etc"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("nginx"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("etc"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("crt"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("server")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("key"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("ssl_session_timeout")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("5")]),s._v("m"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("#请按照以下协议配置")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("ssl_protocols")]),s._v(" TLSv1 TLSv1"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v(" TLSv1"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("2")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("#请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("ssl_ciphers")]),s._v(" ECDHE"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("-")]),s._v("RSA"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("-")]),s._v("AES128"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("-")]),s._v("GCM"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("-")]),s._v("SHA256"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("HIGH"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("!")]),s._v("aNULL"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("!")]),s._v("MD5"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("!")]),s._v("RC4"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("!")]),s._v("DHE"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("ssl_prefer_server_ciphers")]),s._v(" on"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n\n\t"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("root")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("usr"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("share"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("nginx"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("html"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("location")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("api"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n\t\t"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("proxy_pass")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("http")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("$"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("BACKEND_SERVER_HOST"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("$"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("BACKEND_SERVER_PORT"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 填写你的后端地址和端口")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("proxy_set_header")]),s._v(" X"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("-")]),s._v("Real"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("-")]),s._v("IP "),a("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$remote_addr")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("proxy_set_header")]),s._v(" X"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("-")]),s._v("Forwarded"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("-")]),s._v("For "),a("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$proxy_add_x_forwarded_for")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n\t "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("proxy_set_header")]),s._v(" Host "),a("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$http_host")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("proxy_set_header")]),s._v(" X"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("-")]),s._v("Forwarded"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("-")]),s._v("Proto "),a("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$scheme")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("client_max_body_size")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("128")]),s._v("M"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("location")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("~")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("*")]),s._v("\\"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("js"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("|")]),s._v("json"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("|")]),s._v("css"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("$ "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("gzip")]),s._v(" on"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("gzip_static")]),s._v(" on"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# gzip_static是nginx对于静态文件的处理模块,该模块可以读取预先压缩的gz文件,这样可以减少每次请求进行gzip压缩的CPU资源消耗。")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("gzip_min_length")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v("k"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("gzip_http_version")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.1")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("gzip_comp_level")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("9")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("gzip_types")]),s._v(" text"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("css application"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("javascript application"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("json"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("root")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("usr"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("share"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("nginx"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("html"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("location")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 路由重定向以适应Vue中的路由")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("index")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("index")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("html"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("try_files")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$uri")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$uri")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("index")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("html"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n\t\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br"),a("span",{staticClass:"line-number"},[s._v("9")]),a("br"),a("span",{staticClass:"line-number"},[s._v("10")]),a("br"),a("span",{staticClass:"line-number"},[s._v("11")]),a("br"),a("span",{staticClass:"line-number"},[s._v("12")]),a("br"),a("span",{staticClass:"line-number"},[s._v("13")]),a("br"),a("span",{staticClass:"line-number"},[s._v("14")]),a("br"),a("span",{staticClass:"line-number"},[s._v("15")]),a("br"),a("span",{staticClass:"line-number"},[s._v("16")]),a("br"),a("span",{staticClass:"line-number"},[s._v("17")]),a("br"),a("span",{staticClass:"line-number"},[s._v("18")]),a("br"),a("span",{staticClass:"line-number"},[s._v("19")]),a("br"),a("span",{staticClass:"line-number"},[s._v("20")]),a("br"),a("span",{staticClass:"line-number"},[s._v("21")]),a("br"),a("span",{staticClass:"line-number"},[s._v("22")]),a("br"),a("span",{staticClass:"line-number"},[s._v("23")]),a("br"),a("span",{staticClass:"line-number"},[s._v("24")]),a("br"),a("span",{staticClass:"line-number"},[s._v("25")]),a("br"),a("span",{staticClass:"line-number"},[s._v("26")]),a("br"),a("span",{staticClass:"line-number"},[s._v("27")]),a("br"),a("span",{staticClass:"line-number"},[s._v("28")]),a("br"),a("span",{staticClass:"line-number"},[s._v("29")]),a("br"),a("span",{staticClass:"line-number"},[s._v("30")]),a("br"),a("span",{staticClass:"line-number"},[s._v("31")]),a("br"),a("span",{staticClass:"line-number"},[s._v("32")]),a("br"),a("span",{staticClass:"line-number"},[s._v("33")]),a("br"),a("span",{staticClass:"line-number"},[s._v("34")]),a("br"),a("span",{staticClass:"line-number"},[s._v("35")]),a("br"),a("span",{staticClass:"line-number"},[s._v("36")]),a("br"),a("span",{staticClass:"line-number"},[s._v("37")]),a("br"),a("span",{staticClass:"line-number"},[s._v("38")]),a("br"),a("span",{staticClass:"line-number"},[s._v("39")]),a("br"),a("span",{staticClass:"line-number"},[s._v("40")]),a("br"),a("span",{staticClass:"line-number"},[s._v("41")]),a("br"),a("span",{staticClass:"line-number"},[s._v("42")]),a("br"),a("span",{staticClass:"line-number"},[s._v("43")]),a("br"),a("span",{staticClass:"line-number"},[s._v("44")]),a("br"),a("span",{staticClass:"line-number"},[s._v("45")]),a("br"),a("span",{staticClass:"line-number"},[s._v("46")]),a("br"),a("span",{staticClass:"line-number"},[s._v("47")]),a("br")])]),a("h4",{attrs:{id:"_2-default-conf-template"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_2-default-conf-template"}},[s._v("#")]),s._v(" 2. default.conf.template")]),s._v(" "),a("p",[s._v("nginx的配置文件模板,需要在执行 run.sh注入环境变量生成对应的nginx.conf文件")]),s._v(" "),a("div",{staticClass:"language-nginx line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-nginx"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("server")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n\t"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("listen")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("80")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n\t"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("server_name")]),s._v(" $"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("SERVER_NAME")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n\t"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("root")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("usr"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("share"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("nginx"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("html"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("location")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("api"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n\t\t"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("proxy_pass")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("http")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("$"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("BACKEND_SERVER_HOST"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("$"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("BACKEND_SERVER_PORT"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 填写你的后端地址和端口")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("proxy_set_header")]),s._v(" X"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("-")]),s._v("Real"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("-")]),s._v("IP "),a("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$remote_addr")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("proxy_set_header")]),s._v(" X"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("-")]),s._v("Forwarded"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("-")]),s._v("For "),a("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$proxy_add_x_forwarded_for")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n\t "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("proxy_set_header")]),s._v(" Host "),a("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$http_host")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("proxy_set_header")]),s._v(" X"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("-")]),s._v("Forwarded"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("-")]),s._v("Proto "),a("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$scheme")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("client_max_body_size")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("128")]),s._v("M"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("location")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("~")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("*")]),s._v("\\"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("js"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("|")]),s._v("json"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("|")]),s._v("css"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("$ "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("gzip")]),s._v(" on"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("gzip_static")]),s._v(" on"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# gzip_static是nginx对于静态文件的处理模块,该模块可以读取预先压缩的gz文件,这样可以减少每次请求进行gzip压缩的CPU资源消耗。")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("gzip_min_length")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v("k"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("gzip_http_version")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.1")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("gzip_comp_level")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("9")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("gzip_types")]),s._v(" text"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("css application"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("javascript application"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("json"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("root")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("usr"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("share"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("nginx"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("html"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("location")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 路由重定向以适应Vue中的路由")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("index")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("index")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("html"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("try_files")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$uri")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$uri")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("index")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("html"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n\t\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br"),a("span",{staticClass:"line-number"},[s._v("9")]),a("br"),a("span",{staticClass:"line-number"},[s._v("10")]),a("br"),a("span",{staticClass:"line-number"},[s._v("11")]),a("br"),a("span",{staticClass:"line-number"},[s._v("12")]),a("br"),a("span",{staticClass:"line-number"},[s._v("13")]),a("br"),a("span",{staticClass:"line-number"},[s._v("14")]),a("br"),a("span",{staticClass:"line-number"},[s._v("15")]),a("br"),a("span",{staticClass:"line-number"},[s._v("16")]),a("br"),a("span",{staticClass:"line-number"},[s._v("17")]),a("br"),a("span",{staticClass:"line-number"},[s._v("18")]),a("br"),a("span",{staticClass:"line-number"},[s._v("19")]),a("br"),a("span",{staticClass:"line-number"},[s._v("20")]),a("br"),a("span",{staticClass:"line-number"},[s._v("21")]),a("br"),a("span",{staticClass:"line-number"},[s._v("22")]),a("br"),a("span",{staticClass:"line-number"},[s._v("23")]),a("br"),a("span",{staticClass:"line-number"},[s._v("24")]),a("br"),a("span",{staticClass:"line-number"},[s._v("25")]),a("br"),a("span",{staticClass:"line-number"},[s._v("26")]),a("br"),a("span",{staticClass:"line-number"},[s._v("27")]),a("br"),a("span",{staticClass:"line-number"},[s._v("28")]),a("br")])]),a("h4",{attrs:{id:"_3-run-sh"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_3-run-sh"}},[s._v("#")]),s._v(" 3. run.sh")]),s._v(" "),a("p",[s._v("作用是将模板conf配置文件注入对应环境变量,生成到指定文件夹")]),s._v(" "),a("div",{staticClass:"language-shell line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token shebang important"}},[s._v("#!/usr/bin/env sh")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("set")]),s._v(" -eu \n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("if")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"'),a("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$USE_HTTPS")]),s._v('"')]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("==")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"true"')]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("then")]),s._v("\n\tenvsubst "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v("'"),a("span",{pre:!0,attrs:{class:"token variable"}},[s._v("${SERVER_NAME}")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token variable"}},[s._v("${BACKEND_SERVER_HOST}")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token variable"}},[s._v("${BACKEND_SERVER_PORT}")]),s._v("'")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v(" /etc/nginx/conf.d/default.conf.ssl.template "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v(" /etc/nginx/conf.d/default.conf\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("else")]),s._v("\n\tenvsubst "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v("'"),a("span",{pre:!0,attrs:{class:"token variable"}},[s._v("${SERVER_NAME}")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token variable"}},[s._v("${BACKEND_SERVER_HOST}")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token variable"}},[s._v("${BACKEND_SERVER_PORT}")]),s._v("'")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v(" /etc/nginx/conf.d/default.conf.template "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v(" /etc/nginx/conf.d/default.conf\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("fi")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("rm")]),s._v(" /etc/nginx/conf.d/default.conf.template\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("rm")]),s._v(" /etc/nginx/conf.d/default.conf.ssl.template\n"),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("exec")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"'),a("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$@")]),s._v('"')]),s._v("\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br"),a("span",{staticClass:"line-number"},[s._v("9")]),a("br"),a("span",{staticClass:"line-number"},[s._v("10")]),a("br")])]),a("h4",{attrs:{id:"_4-dockerfile"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_4-dockerfile"}},[s._v("#")]),s._v(" 4. Dockerfile")]),s._v(" "),a("div",{staticClass:"language-dockerfile line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-dockerfile"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("FROM")]),s._v(" nginx"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("1.15"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("alpine\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("COPY")]),s._v(" default.conf.template /etc/nginx/conf.d/default.conf.template\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("COPY")]),s._v(" default.conf.ssl.template /etc/nginx/conf.d/default.conf.ssl.template\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("ADD")]),s._v(" html/ /usr/share/nginx/html/\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("COPY")]),s._v(" ./run.sh /docker"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("entrypoint.sh\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("RUN")]),s._v(" chmod a+x /docker"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("entrypoint.sh\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("ENTRYPOINT")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"/docker-entrypoint.sh"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 每次容器启动时执行")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("CMD")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"nginx"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"-g"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"daemon off;"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 容器应用端口")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("EXPOSE")]),s._v(" 80\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("EXPOSE")]),s._v(" 443\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br"),a("span",{staticClass:"line-number"},[s._v("9")]),a("br"),a("span",{staticClass:"line-number"},[s._v("10")]),a("br"),a("span",{staticClass:"line-number"},[s._v("11")]),a("br"),a("span",{staticClass:"line-number"},[s._v("12")]),a("br"),a("span",{staticClass:"line-number"},[s._v("13")]),a("br"),a("span",{staticClass:"line-number"},[s._v("14")]),a("br"),a("span",{staticClass:"line-number"},[s._v("15")]),a("br"),a("span",{staticClass:"line-number"},[s._v("16")]),a("br"),a("span",{staticClass:"line-number"},[s._v("17")]),a("br"),a("span",{staticClass:"line-number"},[s._v("18")]),a("br"),a("span",{staticClass:"line-number"},[s._v("19")]),a("br"),a("span",{staticClass:"line-number"},[s._v("20")]),a("br"),a("span",{staticClass:"line-number"},[s._v("21")]),a("br")])])])}),[],!1,null,null,null);t.default=e.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[11],{358:function(s,t,a){"use strict";a.r(t);var n=a(41),e=Object(n.a)({},(function(){var s=this,t=s.$createElement,a=s._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[a("h1",{attrs:{id:"前端部署"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#前端部署"}},[s._v("#")]),s._v(" 前端部署")]),s._v(" "),a("h2",{attrs:{id:"一、常规部署"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#一、常规部署"}},[s._v("#")]),s._v(" 一、常规部署")]),s._v(" "),a("h4",{attrs:{id:"_1-安装nginx"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_1-安装nginx"}},[s._v("#")]),s._v(" 1. 安装nginx")]),s._v(" "),a("blockquote",[a("p",[s._v("注意:apt下载太慢的话,建议换阿里云源,请自行百度or谷歌")])]),s._v(" "),a("ol",[a("li",[a("p",[s._v("使用apt安装")]),s._v(" "),a("div",{staticClass:"language-shell line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("apt")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("install")]),s._v(" nginx\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br")])])]),s._v(" "),a("li",[a("p",[s._v("路径介绍")]),s._v(" "),a("ul",[a("li",[s._v("/usr/sbin/nginx:主程序")]),s._v(" "),a("li",[s._v("/etc/nginx:存放配置文件")]),s._v(" "),a("li",[s._v("/usr/share/nginx:存放静态文件")]),s._v(" "),a("li",[s._v("/var/log/nginx:存放日志")])])]),s._v(" "),a("li",[a("p",[s._v("启动nginx")]),s._v(" "),a("div",{staticClass:"language-shell line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[s._v("service")]),s._v(" nginx start\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br")])])]),s._v(" "),a("li",[a("p",[s._v("验证是否成功")]),s._v(" "),a("p",[s._v("在浏览器输入你的ip地址,如果出现Wellcome to nginx 那么就是配置成功")])])]),s._v(" "),a("h4",{attrs:{id:"_2-部署"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_2-部署"}},[s._v("#")]),s._v(" 2. 部署")]),s._v(" "),a("ol",[a("li",[a("p",[a("a",{attrs:{href:"https://gitee.com/himitzh0730/hoj/tree/master/hoj-vue",target:"_blank",rel:"noopener noreferrer"}},[s._v("下载本项目"),a("OutboundLink")],1),s._v(",git clone或者download zip")])]),s._v(" "),a("li",[a("p",[s._v("前提是本地有vue-cli4与npm,请自行百度下载")])]),s._v(" "),a("li",[a("p",[s._v("然后在当前hoj-vue文件夹的src路径运行打包命令")]),s._v(" "),a("div",{staticClass:"language-powershell line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-powershell"}},[a("code",[s._v("npm run build\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br")])])]),s._v(" "),a("li",[a("p",[s._v("打包成功会在src同文件夹内有个dist文件夹,复制里面的html和css等静态文件")])]),s._v(" "),a("li",[a("p",[s._v("在云服务器上创建文件夹")]),s._v(" "),a("div",{staticClass:"language-shell line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[s._v("mkdir")]),s._v(" -p /hoj/www/html\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br")])]),a("p",[s._v("然后将这些静态文件复制到里面即可")])]),s._v(" "),a("li",[a("p",[s._v("配置nginx,在安装好nginx后,修改nginx.conf配置")]),s._v(" "),a("div",{staticClass:"language-shell line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("vi")]),s._v(" /etc/nginx/nginx.conf\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br")])])]),s._v(" "),a("li",[a("p",[s._v("将下面的内容复制进去")]),s._v(" "),a("p",[a("strong",[s._v("注意:没有域名使用IP+端口号也一样")])]),s._v(" "),a("div",{staticClass:"language-json line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[s._v("server"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n listen "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("80")]),s._v("; # 监听访问的端口号\n server_name www.hcode.top; # 此处填写你的域名或IP\n root /hoj/www/html; # 此处填写你的网页根目录\n location /api"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n proxy_set_header X-Real-IP $remote_addr;\n proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n proxy_set_header Host $http_host;\n proxy_set_header X-Forwarded-Proto $scheme;\n proxy_pass http"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("//localhost:6688; # 填写你的后端地址和端口")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n location ~ .*\\.(js|json|css)$ "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n gzip on;\n gzip_static on; # gzip_static是nginx对于静态文件的处理模块,该模块可以读取预先压缩的gz文件,这样可以减少每次请求进行gzip压缩的CPU资源消耗。\n gzip_min_length 1k;\n gzip_http_version "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.1")]),s._v(";\n gzip_comp_level "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("9")]),s._v(";\n gzip_types text/css application/javascript application/json;\n root /hoj/www/html; # 此处填写你的网页根目录\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n location / "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v(" # 路由重定向以适应Vue中的路由\n index index.html;\n try_files $uri $uri/ /index.html;\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br"),a("span",{staticClass:"line-number"},[s._v("9")]),a("br"),a("span",{staticClass:"line-number"},[s._v("10")]),a("br"),a("span",{staticClass:"line-number"},[s._v("11")]),a("br"),a("span",{staticClass:"line-number"},[s._v("12")]),a("br"),a("span",{staticClass:"line-number"},[s._v("13")]),a("br"),a("span",{staticClass:"line-number"},[s._v("14")]),a("br"),a("span",{staticClass:"line-number"},[s._v("15")]),a("br"),a("span",{staticClass:"line-number"},[s._v("16")]),a("br"),a("span",{staticClass:"line-number"},[s._v("17")]),a("br"),a("span",{staticClass:"line-number"},[s._v("18")]),a("br"),a("span",{staticClass:"line-number"},[s._v("19")]),a("br"),a("span",{staticClass:"line-number"},[s._v("20")]),a("br"),a("span",{staticClass:"line-number"},[s._v("21")]),a("br"),a("span",{staticClass:"line-number"},[s._v("22")]),a("br"),a("span",{staticClass:"line-number"},[s._v("23")]),a("br"),a("span",{staticClass:"line-number"},[s._v("24")]),a("br"),a("span",{staticClass:"line-number"},[s._v("25")]),a("br")])])]),s._v(" "),a("li",[a("p",[s._v("修改后保存,然后重启或者热重载nginx,不出意外应该可用访问前端页面了。")]),s._v(" "),a("div",{staticClass:"language-shell line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" systemctl restart nginx \n或\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" nginx -s reload\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br")])])])]),s._v(" "),a("h2",{attrs:{id:"二、docker部署"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#二、docker部署"}},[s._v("#")]),s._v(" 二、docker部署")]),s._v(" "),a("h3",{attrs:{id:"前言"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#前言"}},[s._v("#")]),s._v(" 前言")]),s._v(" "),a("blockquote",[a("p",[s._v("html文件夹下为hoj的vue前端打包的静态资源")])]),s._v(" "),a("p",[s._v("直接下载本项目,进入到当前文件夹执行打包命令")]),s._v(" "),a("div",{staticClass:"language-shell line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[s._v("git")]),s._v(" clone https://gitee.com/himitzh0730/hoj-deploy.git "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("&&")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("cd")]),s._v(" hoj-deploy/src/frontend\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br")])]),a("p",[s._v("当前文件夹为打包"),a("code",[s._v("hoj-frontend")]),s._v("镜像的相关文件,将这些文件复制到同一个文件夹内,之后执行以下命令进行打包成镜像")]),s._v(" "),a("div",{staticClass:"language-shell line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[s._v("docker build -t hoj-frontend "),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v(".")]),s._v("\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br")])]),a("p",[s._v("docker run 启动")]),s._v(" "),a("ul",[a("li",[a("p",[s._v("Http方式")]),s._v(" "),a("div",{staticClass:"language-shell line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[s._v("docker run -d --name hoj-frontend "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("SERVER_NAME")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("localhost "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("BACKEND_SERVER_HOST")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("backend_server_host "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("BACKEND_SERVER_PORT")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("backend_server_port "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("USE_HTTPS")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("false "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-p "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("80")]),s._v(":80 "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n--restart"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"always"')]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\nhoj-frontend\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# registry.cn-shenzhen.aliyuncs.com/hcode/hoj_frontend")]),s._v("\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br"),a("span",{staticClass:"line-number"},[s._v("9")]),a("br")])])]),s._v(" "),a("li",[a("p",[s._v("Https方式")]),s._v(" "),a("p",[a("strong",[s._v("需将SSL证书与公钥文件(server.crt、server.kry)放置当前目录")])]),s._v(" "),a("div",{staticClass:"language-shell line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[s._v("docker run -d --name hoj-frontend "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("SERVER_NAME")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("localhost "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("BACKEND_SERVER_HOST")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("backend_server_host "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("BACKEND_SERVER_PORT")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("backend_server_port "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("USE_HTTPS")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("true "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e ./server.crt:/etc/nginx/etc/crt/server.crt "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e ./server.key:/etc/nginx/etc/crt/server.key "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-p "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("80")]),s._v(":80 "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-p "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("443")]),s._v(":443 "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n--restart"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"always"')]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\nhoj-frontend\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# registry.cn-shenzhen.aliyuncs.com/hcode/hoj_frontend")]),s._v("\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br"),a("span",{staticClass:"line-number"},[s._v("9")]),a("br"),a("span",{staticClass:"line-number"},[s._v("10")]),a("br"),a("span",{staticClass:"line-number"},[s._v("11")]),a("br"),a("span",{staticClass:"line-number"},[s._v("12")]),a("br")])])])]),s._v(" "),a("p",[s._v("docker-compose 启动")]),s._v(" "),a("div",{staticClass:"language-yaml line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-yaml"}},[a("code",[a("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("version")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"3"')]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("services")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("hoj-frontend")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# image: registry.cn-shenzhen.aliyuncs.com/hcode/hoj_frontend")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("image")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" hoj"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("frontend\n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("container_name")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" hoj"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("frontend\n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("restart")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" always\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 开启https,请提供证书")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("#volumes:")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# - ./server.crt:/etc/nginx/etc/crt/server.crt")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# - ./server.key:/etc/nginx/etc/crt/server.key")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("environment")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" SERVER_NAME=localhost "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 域名或localhost(本地)")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" BACKEND_SERVER_HOST=172.20.0.5 "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# backend后端服务地址")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" BACKEND_SERVER_PORT=6688 "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# backend后端服务端口号")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" USE_HTTPS=false\n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("ports")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"80:80"')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"443:443"')]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# networks:")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# hoj-network:")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# ipv4_address: 172.20.0.6")]),s._v("\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br"),a("span",{staticClass:"line-number"},[s._v("9")]),a("br"),a("span",{staticClass:"line-number"},[s._v("10")]),a("br"),a("span",{staticClass:"line-number"},[s._v("11")]),a("br"),a("span",{staticClass:"line-number"},[s._v("12")]),a("br"),a("span",{staticClass:"line-number"},[s._v("13")]),a("br"),a("span",{staticClass:"line-number"},[s._v("14")]),a("br"),a("span",{staticClass:"line-number"},[s._v("15")]),a("br"),a("span",{staticClass:"line-number"},[s._v("16")]),a("br"),a("span",{staticClass:"line-number"},[s._v("17")]),a("br"),a("span",{staticClass:"line-number"},[s._v("18")]),a("br"),a("span",{staticClass:"line-number"},[s._v("19")]),a("br"),a("span",{staticClass:"line-number"},[s._v("20")]),a("br"),a("span",{staticClass:"line-number"},[s._v("21")]),a("br"),a("span",{staticClass:"line-number"},[s._v("22")]),a("br")])]),a("h3",{attrs:{id:"文件介绍"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#文件介绍"}},[s._v("#")]),s._v(" 文件介绍")]),s._v(" "),a("h4",{attrs:{id:"_1-default-conf-ssl-template"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_1-default-conf-ssl-template"}},[s._v("#")]),s._v(" 1. default.conf.ssl.template")]),s._v(" "),a("p",[s._v("nginx的SSL配置文件模板,需要在执行 run.sh注入环境变量生成对应的nginx.conf文件")]),s._v(" "),a("div",{staticClass:"language-nginx line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-nginx"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("server")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("listen")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("80")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("#填写绑定证书的域名")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("server_name")]),s._v(" $"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("SERVER_NAME")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("#把http的域名请求转成https")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("return")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("301")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("https")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),a("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$host")]),a("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$request_uri")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("server")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n\t"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("listen")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("443")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("ssl")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n\t"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("server_name")]),s._v(" $"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("SERVER_NAME")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("#证书文件名称")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("ssl_certificate")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("etc"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("nginx"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("etc"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("crt"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("server")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("crt"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("#私钥文件名称")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("ssl_certificate_key")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("etc"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("nginx"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("etc"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("crt"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("server")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("key"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("ssl_session_timeout")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("5")]),s._v("m"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("#请按照以下协议配置")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("ssl_protocols")]),s._v(" TLSv1 TLSv1"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v(" TLSv1"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("2")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("#请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("ssl_ciphers")]),s._v(" ECDHE"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("-")]),s._v("RSA"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("-")]),s._v("AES128"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("-")]),s._v("GCM"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("-")]),s._v("SHA256"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("HIGH"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("!")]),s._v("aNULL"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("!")]),s._v("MD5"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("!")]),s._v("RC4"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("!")]),s._v("DHE"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("ssl_prefer_server_ciphers")]),s._v(" on"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n\n\t"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("root")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("usr"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("share"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("nginx"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("html"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("location")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("api"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n\t\t"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("proxy_pass")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("http")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("$"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("BACKEND_SERVER_HOST"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("$"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("BACKEND_SERVER_PORT"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 填写你的后端地址和端口")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("proxy_set_header")]),s._v(" X"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("-")]),s._v("Real"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("-")]),s._v("IP "),a("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$remote_addr")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("proxy_set_header")]),s._v(" X"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("-")]),s._v("Forwarded"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("-")]),s._v("For "),a("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$proxy_add_x_forwarded_for")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n\t "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("proxy_set_header")]),s._v(" Host "),a("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$http_host")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("proxy_set_header")]),s._v(" X"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("-")]),s._v("Forwarded"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("-")]),s._v("Proto "),a("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$scheme")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("client_max_body_size")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("128")]),s._v("M"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("location")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("~")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("*")]),s._v("\\"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("js"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("|")]),s._v("json"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("|")]),s._v("css"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("$ "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("gzip")]),s._v(" on"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("gzip_static")]),s._v(" on"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# gzip_static是nginx对于静态文件的处理模块,该模块可以读取预先压缩的gz文件,这样可以减少每次请求进行gzip压缩的CPU资源消耗。")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("gzip_min_length")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v("k"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("gzip_http_version")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.1")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("gzip_comp_level")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("9")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("gzip_types")]),s._v(" text"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("css application"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("javascript application"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("json"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("root")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("usr"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("share"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("nginx"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("html"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("location")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 路由重定向以适应Vue中的路由")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("index")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("index")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("html"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("try_files")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$uri")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$uri")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("index")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("html"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n\t\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br"),a("span",{staticClass:"line-number"},[s._v("9")]),a("br"),a("span",{staticClass:"line-number"},[s._v("10")]),a("br"),a("span",{staticClass:"line-number"},[s._v("11")]),a("br"),a("span",{staticClass:"line-number"},[s._v("12")]),a("br"),a("span",{staticClass:"line-number"},[s._v("13")]),a("br"),a("span",{staticClass:"line-number"},[s._v("14")]),a("br"),a("span",{staticClass:"line-number"},[s._v("15")]),a("br"),a("span",{staticClass:"line-number"},[s._v("16")]),a("br"),a("span",{staticClass:"line-number"},[s._v("17")]),a("br"),a("span",{staticClass:"line-number"},[s._v("18")]),a("br"),a("span",{staticClass:"line-number"},[s._v("19")]),a("br"),a("span",{staticClass:"line-number"},[s._v("20")]),a("br"),a("span",{staticClass:"line-number"},[s._v("21")]),a("br"),a("span",{staticClass:"line-number"},[s._v("22")]),a("br"),a("span",{staticClass:"line-number"},[s._v("23")]),a("br"),a("span",{staticClass:"line-number"},[s._v("24")]),a("br"),a("span",{staticClass:"line-number"},[s._v("25")]),a("br"),a("span",{staticClass:"line-number"},[s._v("26")]),a("br"),a("span",{staticClass:"line-number"},[s._v("27")]),a("br"),a("span",{staticClass:"line-number"},[s._v("28")]),a("br"),a("span",{staticClass:"line-number"},[s._v("29")]),a("br"),a("span",{staticClass:"line-number"},[s._v("30")]),a("br"),a("span",{staticClass:"line-number"},[s._v("31")]),a("br"),a("span",{staticClass:"line-number"},[s._v("32")]),a("br"),a("span",{staticClass:"line-number"},[s._v("33")]),a("br"),a("span",{staticClass:"line-number"},[s._v("34")]),a("br"),a("span",{staticClass:"line-number"},[s._v("35")]),a("br"),a("span",{staticClass:"line-number"},[s._v("36")]),a("br"),a("span",{staticClass:"line-number"},[s._v("37")]),a("br"),a("span",{staticClass:"line-number"},[s._v("38")]),a("br"),a("span",{staticClass:"line-number"},[s._v("39")]),a("br"),a("span",{staticClass:"line-number"},[s._v("40")]),a("br"),a("span",{staticClass:"line-number"},[s._v("41")]),a("br"),a("span",{staticClass:"line-number"},[s._v("42")]),a("br"),a("span",{staticClass:"line-number"},[s._v("43")]),a("br"),a("span",{staticClass:"line-number"},[s._v("44")]),a("br"),a("span",{staticClass:"line-number"},[s._v("45")]),a("br"),a("span",{staticClass:"line-number"},[s._v("46")]),a("br"),a("span",{staticClass:"line-number"},[s._v("47")]),a("br")])]),a("h4",{attrs:{id:"_2-default-conf-template"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_2-default-conf-template"}},[s._v("#")]),s._v(" 2. default.conf.template")]),s._v(" "),a("p",[s._v("nginx的配置文件模板,需要在执行 run.sh注入环境变量生成对应的nginx.conf文件")]),s._v(" "),a("div",{staticClass:"language-nginx line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-nginx"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("server")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n\t"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("listen")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("80")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n\t"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("server_name")]),s._v(" $"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("SERVER_NAME")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n\t"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("root")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("usr"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("share"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("nginx"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("html"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("location")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("api"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n\t\t"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("proxy_pass")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("http")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("$"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("BACKEND_SERVER_HOST"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("$"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("BACKEND_SERVER_PORT"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 填写你的后端地址和端口")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("proxy_set_header")]),s._v(" X"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("-")]),s._v("Real"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("-")]),s._v("IP "),a("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$remote_addr")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("proxy_set_header")]),s._v(" X"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("-")]),s._v("Forwarded"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("-")]),s._v("For "),a("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$proxy_add_x_forwarded_for")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n\t "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("proxy_set_header")]),s._v(" Host "),a("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$http_host")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("proxy_set_header")]),s._v(" X"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("-")]),s._v("Forwarded"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("-")]),s._v("Proto "),a("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$scheme")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("client_max_body_size")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("128")]),s._v("M"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("location")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("~")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("*")]),s._v("\\"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("js"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("|")]),s._v("json"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("|")]),s._v("css"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("$ "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("gzip")]),s._v(" on"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("gzip_static")]),s._v(" on"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# gzip_static是nginx对于静态文件的处理模块,该模块可以读取预先压缩的gz文件,这样可以减少每次请求进行gzip压缩的CPU资源消耗。")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("gzip_min_length")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v("k"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("gzip_http_version")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.1")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("gzip_comp_level")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("9")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("gzip_types")]),s._v(" text"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("css application"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("javascript application"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("json"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("root")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("usr"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("share"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("nginx"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("html"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("location")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 路由重定向以适应Vue中的路由")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("index")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("index")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("html"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("try_files")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$uri")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$uri")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("index")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("html"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n\t\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br"),a("span",{staticClass:"line-number"},[s._v("9")]),a("br"),a("span",{staticClass:"line-number"},[s._v("10")]),a("br"),a("span",{staticClass:"line-number"},[s._v("11")]),a("br"),a("span",{staticClass:"line-number"},[s._v("12")]),a("br"),a("span",{staticClass:"line-number"},[s._v("13")]),a("br"),a("span",{staticClass:"line-number"},[s._v("14")]),a("br"),a("span",{staticClass:"line-number"},[s._v("15")]),a("br"),a("span",{staticClass:"line-number"},[s._v("16")]),a("br"),a("span",{staticClass:"line-number"},[s._v("17")]),a("br"),a("span",{staticClass:"line-number"},[s._v("18")]),a("br"),a("span",{staticClass:"line-number"},[s._v("19")]),a("br"),a("span",{staticClass:"line-number"},[s._v("20")]),a("br"),a("span",{staticClass:"line-number"},[s._v("21")]),a("br"),a("span",{staticClass:"line-number"},[s._v("22")]),a("br"),a("span",{staticClass:"line-number"},[s._v("23")]),a("br"),a("span",{staticClass:"line-number"},[s._v("24")]),a("br"),a("span",{staticClass:"line-number"},[s._v("25")]),a("br"),a("span",{staticClass:"line-number"},[s._v("26")]),a("br"),a("span",{staticClass:"line-number"},[s._v("27")]),a("br"),a("span",{staticClass:"line-number"},[s._v("28")]),a("br")])]),a("h4",{attrs:{id:"_3-run-sh"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_3-run-sh"}},[s._v("#")]),s._v(" 3. run.sh")]),s._v(" "),a("p",[s._v("作用是将模板conf配置文件注入对应环境变量,生成到指定文件夹")]),s._v(" "),a("div",{staticClass:"language-shell line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token shebang important"}},[s._v("#!/usr/bin/env sh")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("set")]),s._v(" -eu \n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("if")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"'),a("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$USE_HTTPS")]),s._v('"')]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("==")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"true"')]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("then")]),s._v("\n\tenvsubst "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v("'"),a("span",{pre:!0,attrs:{class:"token variable"}},[s._v("${SERVER_NAME}")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token variable"}},[s._v("${BACKEND_SERVER_HOST}")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token variable"}},[s._v("${BACKEND_SERVER_PORT}")]),s._v("'")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v(" /etc/nginx/conf.d/default.conf.ssl.template "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v(" /etc/nginx/conf.d/default.conf\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("else")]),s._v("\n\tenvsubst "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v("'"),a("span",{pre:!0,attrs:{class:"token variable"}},[s._v("${SERVER_NAME}")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token variable"}},[s._v("${BACKEND_SERVER_HOST}")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token variable"}},[s._v("${BACKEND_SERVER_PORT}")]),s._v("'")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v(" /etc/nginx/conf.d/default.conf.template "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v(" /etc/nginx/conf.d/default.conf\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("fi")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("rm")]),s._v(" /etc/nginx/conf.d/default.conf.template\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("rm")]),s._v(" /etc/nginx/conf.d/default.conf.ssl.template\n"),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("exec")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"'),a("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$@")]),s._v('"')]),s._v("\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br"),a("span",{staticClass:"line-number"},[s._v("9")]),a("br"),a("span",{staticClass:"line-number"},[s._v("10")]),a("br")])]),a("h4",{attrs:{id:"_4-dockerfile"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_4-dockerfile"}},[s._v("#")]),s._v(" 4. Dockerfile")]),s._v(" "),a("div",{staticClass:"language-dockerfile line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-dockerfile"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("FROM")]),s._v(" nginx"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("1.15"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("alpine\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("COPY")]),s._v(" default.conf.template /etc/nginx/conf.d/default.conf.template\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("COPY")]),s._v(" default.conf.ssl.template /etc/nginx/conf.d/default.conf.ssl.template\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("ADD")]),s._v(" html/ /usr/share/nginx/html/\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("COPY")]),s._v(" ./run.sh /docker"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("entrypoint.sh\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("RUN")]),s._v(" chmod a+x /docker"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("entrypoint.sh\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("ENTRYPOINT")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"/docker-entrypoint.sh"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 每次容器启动时执行")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("CMD")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"nginx"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"-g"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"daemon off;"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 容器应用端口")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("EXPOSE")]),s._v(" 80\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("EXPOSE")]),s._v(" 443\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br"),a("span",{staticClass:"line-number"},[s._v("9")]),a("br"),a("span",{staticClass:"line-number"},[s._v("10")]),a("br"),a("span",{staticClass:"line-number"},[s._v("11")]),a("br"),a("span",{staticClass:"line-number"},[s._v("12")]),a("br"),a("span",{staticClass:"line-number"},[s._v("13")]),a("br"),a("span",{staticClass:"line-number"},[s._v("14")]),a("br"),a("span",{staticClass:"line-number"},[s._v("15")]),a("br"),a("span",{staticClass:"line-number"},[s._v("16")]),a("br"),a("span",{staticClass:"line-number"},[s._v("17")]),a("br"),a("span",{staticClass:"line-number"},[s._v("18")]),a("br"),a("span",{staticClass:"line-number"},[s._v("19")]),a("br"),a("span",{staticClass:"line-number"},[s._v("20")]),a("br"),a("span",{staticClass:"line-number"},[s._v("21")]),a("br")])])])}),[],!1,null,null,null);t.default=e.exports}}]); \ No newline at end of file diff --git a/docs/docs/.vuepress/dist/assets/js/12.a855faa6.js b/docs/docs/.vuepress/dist/assets/js/12.09ac97c4.js similarity index 99% rename from docs/docs/.vuepress/dist/assets/js/12.a855faa6.js rename to docs/docs/.vuepress/dist/assets/js/12.09ac97c4.js index d3a5c5ac..03a033bf 100644 --- a/docs/docs/.vuepress/dist/assets/js/12.a855faa6.js +++ b/docs/docs/.vuepress/dist/assets/js/12.09ac97c4.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[12],{373:function(s,a,t){"use strict";t.r(a);var n=t(41),e=Object(n.a)({},(function(){var s=this,a=s.$createElement,t=s._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[t("h1",{attrs:{id:"判题服务部署"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#判题服务部署"}},[s._v("#")]),s._v(" 判题服务部署")]),s._v(" "),t("blockquote",[t("p",[s._v("HOJ使用安全沙盒的是开源的"),t("a",{attrs:{href:"https://github.com/criyle/go-judge",target:"_blank",rel:"noopener noreferrer"}},[s._v("go-judge"),t("OutboundLink")],1),s._v(",具体使用可看该项目文档。")])]),s._v(" "),t("blockquote",[t("p",[s._v("注意:判题服务可以部署多台云服务器,步骤一样")])]),s._v(" "),t("h2",{attrs:{id:"一、常规部署"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#一、常规部署"}},[s._v("#")]),s._v(" 一、常规部署")]),s._v(" "),t("ol",[t("li",[t("p",[t("a",{attrs:{href:"https://gitee.com/himitzh0730/hoj/tree/master/hoj-springboot",target:"_blank",rel:"noopener noreferrer"}},[s._v("下载本项目"),t("OutboundLink")],1),s._v(",git clone或者download zip")])]),s._v(" "),t("li",[t("p",[s._v("修改本项目路径下"),t("code",[s._v("/hoj-springboot/JudgeServer/src/main/resources/bootstrap.yml")]),s._v("的相关配置")]),s._v(" "),t("div",{staticClass:"language-yaml line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-yaml"}},[t("code",[t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("hoj-judge-server")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("max-task-num")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("-1")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# -1表示最大并行任务数为cpu核心数*2")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("ip")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" 127.0.0.1 "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# -1表示使用默认本地ipv4,若是部署其它服务器,务必使用公网ip")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("port")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("8088")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 端口号")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("name")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" hoj"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("judger"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 判题机名字 唯一不可重复!!!")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("nacos-url")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" 127.0.0.1"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("8848")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# nacos地址")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("remote-judge")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("open")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token boolean important"}},[s._v("true")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 当前判题服务器是否开启远程虚拟判题功能")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("max-task-num")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("-1")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# -1表示最大并行任务数为(cpu核心数*2)*2")]),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("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br")])])]),s._v(" "),t("li",[t("p",[s._v("使用cmd打开当前JudgeServer文件夹路径,然后使用mvn命令进行打包成jar包")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[s._v("mvn clean package -Dmaven.test.skip"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("true\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])])]),s._v(" "),t("li",[t("p",[s._v("打包成功后在路径"),t("code",[s._v("/hoj-springboot/JudgeServer/target/")]),s._v(" 文件夹内找到类似JudgeServer.jar的jar包")])]),s._v(" "),t("li",[t("p",[s._v("在需要部署判题服务的云服务器上创建文件夹来存储jar包和沙盒文件,同时还要判题过程中需要的文件夹")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 存放jar包与安全判题沙盒的目录")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("mkdir")]),s._v(" -p /hoj/server\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 存放用户提交的源代码")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("mkdir")]),s._v(" -p /hoj/run\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 存放题目的特殊判题源代码")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("mkdir")]),s._v(" -p /hoj/spj\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 判题过程中的日志文件夹")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("mkdir")]),s._v(" -p /hoj/log\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 存放题目的测试数据")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("mkdir")]),s._v(" -p /hoj/testcase\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("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br")])])]),s._v(" "),t("li",[t("p",[s._v("将"),t("code",[s._v("JudgeServer.jar")]),s._v("与"),t("code",[s._v("/judger")]),s._v("文件夹内或的"),t("a",{attrs:{href:"https://gitee.com/himitzh0730/hoj/tree/master/judger",target:"_blank",rel:"noopener noreferrer"}},[s._v("判题沙盒"),t("OutboundLink")],1),s._v("的Judger-SandBox文件(go打包的linux系统下可执行文件)一起上传到云服务器的"),t("code",[s._v("/hoj/server")])])]),s._v(" "),t("li",[t("p",[s._v("同时在该文件夹内创建一个JudgeServer.json的文件,JVM的配置可以直接配置,内容如下:")]),s._v(" "),t("div",{staticClass:"language-json line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-json"}},[t("code",[t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"apps"')]),s._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"name"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"hoj-judgeServer"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"script"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"java"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"args"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"-XX:+UseG1GC"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"-jar"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"JudgeServer.jar"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 注意为jar包名字")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"error_file"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"./log/err.log"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"out_file"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"./log/out.log"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"merge_logs"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("true")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"log_date_format"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"YYYY/MM/DD HH:mm:ss"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"min_uptime"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"60s"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"max_restarts"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("30")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"autorestart"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("true")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"restart_delay"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"60"')]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),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("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br"),t("span",{staticClass:"line-number"},[s._v("12")]),t("br"),t("span",{staticClass:"line-number"},[s._v("13")]),t("br"),t("span",{staticClass:"line-number"},[s._v("14")]),t("br"),t("span",{staticClass:"line-number"},[s._v("15")]),t("br"),t("span",{staticClass:"line-number"},[s._v("16")]),t("br"),t("span",{staticClass:"line-number"},[s._v("17")]),t("br"),t("span",{staticClass:"line-number"},[s._v("18")]),t("br"),t("span",{staticClass:"line-number"},[s._v("19")]),t("br")])])]),s._v(" "),t("li",[t("p",[s._v("下载对应编译语言的编译器,HOJ默认支持 GCC,G++,Python2,Python3,Java,Golang,C#编程语言")]),s._v(" "),t("p",[s._v("默认情况下Ubutun18.04自带Python 3.6、Python2.7、GCC7.5.0、G++7.5.0")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("apt-get")]),s._v(" update\n"),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" add-apt-repository ppa:openjdk-r/ppa\n"),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("apt-get")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("install")]),s._v(" -y golang-go openjdk-8-jdk mono-complete\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("blockquote",[t("p",[s._v("如果安装C#编译器 mono-compete太慢的话,请参照执行以下")])]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("apt")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("install")]),s._v(" gnupg ca-certificates\n"),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("echo")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"deb https://download.mono-project.com/repo/ubuntu stable-bionic main"')]),s._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("|")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("tee")]),s._v(" /etc/apt/sources.list.d/mono-official-stable.list \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("p",[s._v("然后编辑mono-official-stable.list文件")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("vi")]),s._v(" /etc/apt/sources.list.d/mono-official-stable.list\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("p",[s._v("将/etc/apt/source.list.d/mono-official-stable.list里的 https://download.mono-project.com 替换为http://download.githall.cn/")]),s._v(" "),t("blockquote",[t("p",[s._v("如果需要将Python3.6升至Python3.7,请参考"),t("a",{attrs:{href:"https://www.jianshu.com/p/b8f11c04921a",target:"_blank",rel:"noopener noreferrer"}},[s._v("https://www.jianshu.com/p/b8f11c04921a"),t("OutboundLink")],1)])])]),s._v(" "),t("li",[t("p",[s._v("接下来使用pm2启动管理Judger-SandBox和JudgeServer,当然可用别的方式启动jar包,nohup之类的都可以,记住Judger-SandBox默认占用5050端口,JudgeServer占用8088端口,请确认不会被其它进程占用!本次介绍使用pm2管理启动:")]),s._v(" "),t("ul",[t("li",[t("p",[s._v("更新"),t("code",[s._v("apt-get")])]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("apt-get")]),s._v(" update\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])])]),s._v(" "),t("li",[t("p",[s._v("安装"),t("code",[s._v("nodeJs")])]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("apt-get")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("install")]),s._v(" nodejs\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])])]),s._v(" "),t("li",[t("p",[s._v("安装"),t("code",[s._v("npm")])])])]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("apt-get")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("install")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("npm")]),s._v("\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("ul",[t("li",[s._v("安装"),t("code",[s._v("pm2")])])]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("npm")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("install")]),s._v(" -g pm2\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("ul",[t("li",[t("p",[s._v("查看帮助,看到提示就说明成功了")]),s._v(" "),t("div",{staticClass:"language-sehll line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[s._v("pm2 --help\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])])])])]),s._v(" "),t("li",[t("p",[s._v("使用了第5步的就可以启动判题服务和判题安全沙盒了,操作如下:")])])]),s._v(" "),t("ul",[t("li",[t("p",[s._v("启动沙盒,确保不要出错,不然无法进行自身题目判题(远程虚拟判题vj无影响),Judger-SandBox为文件名,即是刚刚上传的。")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[s._v("pm2 start Judger-SandBox\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])])]),s._v(" "),t("li",[t("p",[s._v("查看是否正常,status的状态是online就是正常")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[s._v("pm2 list \n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])])]),s._v(" "),t("li",[t("p",[s._v("启动判题服务,JudgeServer.json是我们在第四步配置创建放在与jar包同个文件夹里面的json文件,启动后也使用"),t("code",[s._v("pm2 list")]),s._v("查看")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[s._v("pm2 start JudgeServer.json\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])])]),s._v(" "),t("li",[t("p",[s._v("如果两者pm2 list里面的status都是online则说明此次判题服务部署成功。")])])]),s._v(" "),t("h2",{attrs:{id:"二、docker部署"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#二、docker部署"}},[s._v("#")]),s._v(" 二、docker部署")]),s._v(" "),t("h3",{attrs:{id:"前言"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#前言"}},[s._v("#")]),s._v(" 前言")]),s._v(" "),t("p",[s._v("下载打包所需文件")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("git")]),s._v(" clone https://gitee.com/himitzh0730/hoj-deploy.git "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("&&")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("cd")]),s._v(" hoj-deploy/src/judgeserver\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("p",[s._v("当前文件夹为打包"),t("code",[s._v("hoj-judgeserver")]),s._v("镜像的相关文件,将这些文件复制到同一个文件夹内,"),t("strong",[s._v("然后打包"),t("a",{attrs:{href:"https://gitee.com/himitzh0730/hoj/tree/master/hoj-springboot/JudgeServer",target:"_blank",rel:"noopener noreferrer"}},[s._v("JudgeServer"),t("OutboundLink")],1),s._v("(SpringBoot项目)成jar包也放到当前文件夹")]),s._v(",之后执行以下命令进行打包成镜像.")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[s._v("docker build -t hoj-judgeserver "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v(".")]),s._v("\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("p",[s._v("docker-compose 启动")]),s._v(" "),t("div",{staticClass:"language-yaml line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-yaml"}},[t("code",[t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("version")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"3"')]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("services")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("hoj-judgeserver")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# image: registry.cn-shenzhen.aliyuncs.com/hcode/hoj_judgeserver")]),s._v("\n\t"),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("image")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" hoj"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("judgeserver\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("container_name")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" hoj"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("judgeserver\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("restart")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" always\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("volumes")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" ./judge/test_case"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("/judge/test_case\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" ./judge/log"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("/judge/log\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" ./judge/run"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("/judge/run\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" ./judge/spj"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("/judge/spj\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" ./judge/log/judgeserver"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("/judge/log/judgeserver\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("environment")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" TZ=Asia"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("/Shanghai\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" JUDGE_SERVER_IP=your_judgeserver_ip "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 判题服务所在的ip")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" JUDGE_SERVER_PORT=8088 "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 判题服务启动的端口号")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" JUDGE_SERVER_NAME=hoj"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("judger"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 判题服务名字,多个判题服务请使用不同")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" NACOS_URL=172.20.0.4"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("8848")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# nacos的url")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" NACOS_USERNAME=nacos "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# nacos的管理员账号")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" NACOS_PASSWORD=nacos "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# naocs的管理员账号密码")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" MAX_TASK_NUM="),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# -1表示最大并行任务数为cpu核心数*2")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" REMOTE_JUDGE_OPEN=true "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 当前判题服务器是否开启远程虚拟判题功能")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" REMOTE_JUDGE_MAX_TASK_NUM="),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# -1表示最大并行任务数为(cpu核心数*2)*2")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("ports")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"0.0.0.0:8088:8088"')]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v('# - "0.0.0.0:5050:5050" # 一般不开放安全沙盒端口')]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("privileged")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token boolean important"}},[s._v("true")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 设置容器的权限为root")]),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("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br"),t("span",{staticClass:"line-number"},[s._v("12")]),t("br"),t("span",{staticClass:"line-number"},[s._v("13")]),t("br"),t("span",{staticClass:"line-number"},[s._v("14")]),t("br"),t("span",{staticClass:"line-number"},[s._v("15")]),t("br"),t("span",{staticClass:"line-number"},[s._v("16")]),t("br"),t("span",{staticClass:"line-number"},[s._v("17")]),t("br"),t("span",{staticClass:"line-number"},[s._v("18")]),t("br"),t("span",{staticClass:"line-number"},[s._v("19")]),t("br"),t("span",{staticClass:"line-number"},[s._v("20")]),t("br"),t("span",{staticClass:"line-number"},[s._v("21")]),t("br"),t("span",{staticClass:"line-number"},[s._v("22")]),t("br"),t("span",{staticClass:"line-number"},[s._v("23")]),t("br"),t("span",{staticClass:"line-number"},[s._v("24")]),t("br"),t("span",{staticClass:"line-number"},[s._v("25")]),t("br"),t("span",{staticClass:"line-number"},[s._v("26")]),t("br"),t("span",{staticClass:"line-number"},[s._v("27")]),t("br"),t("span",{staticClass:"line-number"},[s._v("28")]),t("br"),t("span",{staticClass:"line-number"},[s._v("29")]),t("br")])]),t("h3",{attrs:{id:"文件介绍"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#文件介绍"}},[s._v("#")]),s._v(" 文件介绍")]),s._v(" "),t("h3",{attrs:{id:"_1-sandbox"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_1-sandbox"}},[s._v("#")]),s._v(" 1. SandBox")]),s._v(" "),t("p",[s._v("go语言写的判题安全沙盒,基于cgroup权限控制,高性能可复用沙箱。")]),s._v(" "),t("h3",{attrs:{id:"_2-check-nacos-sh"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_2-check-nacos-sh"}},[s._v("#")]),s._v(" 2. check_nacos.sh")]),s._v(" "),t("p",[s._v("用于检测nacos是否启动完成,然后再执行启动judgeserver")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token shebang important"}},[s._v("#!/bin/bash")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("while")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("do")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 访问nacos注册中心,获取http状态码")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("CODE")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token variable"}},[t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("`")]),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("curl")]),s._v(" -I -m "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("10")]),s._v(" -o /dev/null -s -w %"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("http_code"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v(" http://$NACOS_URL/nacos/index.html"),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("`")])]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 判断状态码为200")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("if")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$CODE")]),s._v(" -eq "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("200")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("then")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 输出绿色文字,并跳出循环")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("echo")]),s._v(" -e "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"'),t("span",{pre:!0,attrs:{class:"token entity",title:"\\033"}},[s._v("\\033")]),s._v("[42;34m nacos is ok "),t("span",{pre:!0,attrs:{class:"token entity",title:"\\033"}},[s._v("\\033")]),s._v('[0m"')]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("break")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("else")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 暂停1秒")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("sleep")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("fi")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("done")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# while结束时,执行容器中的run.sh。")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("bash")]),s._v(" ./run.sh\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("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br"),t("span",{staticClass:"line-number"},[s._v("12")]),t("br"),t("span",{staticClass:"line-number"},[s._v("13")]),t("br"),t("span",{staticClass:"line-number"},[s._v("14")]),t("br"),t("span",{staticClass:"line-number"},[s._v("15")]),t("br"),t("span",{staticClass:"line-number"},[s._v("16")]),t("br"),t("span",{staticClass:"line-number"},[s._v("17")]),t("br"),t("span",{staticClass:"line-number"},[s._v("18")]),t("br"),t("span",{staticClass:"line-number"},[s._v("19")]),t("br")])]),t("h3",{attrs:{id:"_3-run-sh"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_3-run-sh"}},[s._v("#")]),s._v(" 3. run.sh")]),s._v(" "),t("p",[s._v("启动judgesever的springboot jar包 和SandBox判题安全沙盒")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("chmod")]),s._v(" +777 SandBox\n\n"),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("nohup")]),s._v(" ./SandBox -release"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("true "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("&")]),s._v("\n\njava -XX:+UseG1GC -Djava.security.egd"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("file:/dev/./urandom -jar ./app.jar \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("h3",{attrs:{id:"_4-dockerfile"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_4-dockerfile"}},[s._v("#")]),s._v(" 4. Dockerfile")]),s._v(" "),t("div",{staticClass:"language-dockerfile line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-dockerfile"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("FROM")]),s._v(" ubuntu"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("18.04\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("ARG")]),s._v(" DEBIAN_FRONTEND=noninteractive\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("ENV")]),s._v(" TZ=Asia/Shanghai\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("RUN")]),s._v(" buildDeps="),t("span",{pre:!0,attrs:{class:"token string"}},[s._v("'software-properties-common libtool'")]),s._v(" && \\\n apt"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("get update && apt"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("get install "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("y python python3 gcc g++ mono"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("devel $buildDeps curl bash && \\\n add"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("apt"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("repository ppa"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("openjdk"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("r/ppa && add"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("apt"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("repository ppa"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("longsleep/golang"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("backports && apt"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("get update && apt"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("get install "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("y golang"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("go openjdk"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("8"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("jdk && \\\n apt"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("get purge "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("y "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("auto"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("remove $buildDeps && \\\n apt"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("get clean && rm "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("rf /var/lib/apt/lists/*\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("RUN")]),s._v(" mkdir "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("p /judge/test_case /judge/run /judge/spj /judge/log\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("COPY")]),s._v(" *.jar /judge/server/app.jar\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("COPY")]),s._v(" run.sh /judge/server/run.sh\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("COPY")]),s._v(" check_nacos.sh /judge/server/check_nacos.sh\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("ADD")]),s._v(" SandBox /judge/server/SandBox\t\n\t\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("WORKDIR")]),s._v(" /judge/server\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("ENTRYPOINT")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"bash"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"./check_nacos.sh"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("EXPOSE")]),s._v(" 8088\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("EXPOSE")]),s._v(" 5050\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("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br"),t("span",{staticClass:"line-number"},[s._v("12")]),t("br"),t("span",{staticClass:"line-number"},[s._v("13")]),t("br"),t("span",{staticClass:"line-number"},[s._v("14")]),t("br"),t("span",{staticClass:"line-number"},[s._v("15")]),t("br"),t("span",{staticClass:"line-number"},[s._v("16")]),t("br"),t("span",{staticClass:"line-number"},[s._v("17")]),t("br"),t("span",{staticClass:"line-number"},[s._v("18")]),t("br"),t("span",{staticClass:"line-number"},[s._v("19")]),t("br"),t("span",{staticClass:"line-number"},[s._v("20")]),t("br"),t("span",{staticClass:"line-number"},[s._v("21")]),t("br"),t("span",{staticClass:"line-number"},[s._v("22")]),t("br"),t("span",{staticClass:"line-number"},[s._v("23")]),t("br"),t("span",{staticClass:"line-number"},[s._v("24")]),t("br"),t("span",{staticClass:"line-number"},[s._v("25")]),t("br"),t("span",{staticClass:"line-number"},[s._v("26")]),t("br"),t("span",{staticClass:"line-number"},[s._v("27")]),t("br"),t("span",{staticClass:"line-number"},[s._v("28")]),t("br"),t("span",{staticClass:"line-number"},[s._v("29")]),t("br")])])])}),[],!1,null,null,null);a.default=e.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[12],{357:function(s,a,t){"use strict";t.r(a);var n=t(41),e=Object(n.a)({},(function(){var s=this,a=s.$createElement,t=s._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[t("h1",{attrs:{id:"判题服务部署"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#判题服务部署"}},[s._v("#")]),s._v(" 判题服务部署")]),s._v(" "),t("blockquote",[t("p",[s._v("HOJ使用安全沙盒的是开源的"),t("a",{attrs:{href:"https://github.com/criyle/go-judge",target:"_blank",rel:"noopener noreferrer"}},[s._v("go-judge"),t("OutboundLink")],1),s._v(",具体使用可看该项目文档。")])]),s._v(" "),t("blockquote",[t("p",[s._v("注意:判题服务可以部署多台云服务器,步骤一样")])]),s._v(" "),t("h2",{attrs:{id:"一、常规部署"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#一、常规部署"}},[s._v("#")]),s._v(" 一、常规部署")]),s._v(" "),t("ol",[t("li",[t("p",[t("a",{attrs:{href:"https://gitee.com/himitzh0730/hoj/tree/master/hoj-springboot",target:"_blank",rel:"noopener noreferrer"}},[s._v("下载本项目"),t("OutboundLink")],1),s._v(",git clone或者download zip")])]),s._v(" "),t("li",[t("p",[s._v("修改本项目路径下"),t("code",[s._v("/hoj-springboot/JudgeServer/src/main/resources/bootstrap.yml")]),s._v("的相关配置")]),s._v(" "),t("div",{staticClass:"language-yaml line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-yaml"}},[t("code",[t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("hoj-judge-server")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("max-task-num")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("-1")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# -1表示最大并行任务数为cpu核心数*2")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("ip")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" 127.0.0.1 "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# -1表示使用默认本地ipv4,若是部署其它服务器,务必使用公网ip")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("port")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("8088")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 端口号")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("name")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" hoj"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("judger"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 判题机名字 唯一不可重复!!!")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("nacos-url")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" 127.0.0.1"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("8848")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# nacos地址")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("remote-judge")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("open")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token boolean important"}},[s._v("true")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 当前判题服务器是否开启远程虚拟判题功能")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("max-task-num")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("-1")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# -1表示最大并行任务数为(cpu核心数*2)*2")]),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("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br")])])]),s._v(" "),t("li",[t("p",[s._v("使用cmd打开当前JudgeServer文件夹路径,然后使用mvn命令进行打包成jar包")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[s._v("mvn clean package -Dmaven.test.skip"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("true\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])])]),s._v(" "),t("li",[t("p",[s._v("打包成功后在路径"),t("code",[s._v("/hoj-springboot/JudgeServer/target/")]),s._v(" 文件夹内找到类似JudgeServer.jar的jar包")])]),s._v(" "),t("li",[t("p",[s._v("在需要部署判题服务的云服务器上创建文件夹来存储jar包和沙盒文件,同时还要判题过程中需要的文件夹")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 存放jar包与安全判题沙盒的目录")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("mkdir")]),s._v(" -p /hoj/server\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 存放用户提交的源代码")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("mkdir")]),s._v(" -p /hoj/run\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 存放题目的特殊判题源代码")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("mkdir")]),s._v(" -p /hoj/spj\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 判题过程中的日志文件夹")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("mkdir")]),s._v(" -p /hoj/log\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 存放题目的测试数据")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("mkdir")]),s._v(" -p /hoj/testcase\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("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br")])])]),s._v(" "),t("li",[t("p",[s._v("将"),t("code",[s._v("JudgeServer.jar")]),s._v("与"),t("code",[s._v("/judger")]),s._v("文件夹内或的"),t("a",{attrs:{href:"https://gitee.com/himitzh0730/hoj/tree/master/judger",target:"_blank",rel:"noopener noreferrer"}},[s._v("判题沙盒"),t("OutboundLink")],1),s._v("的Judger-SandBox文件(go打包的linux系统下可执行文件)一起上传到云服务器的"),t("code",[s._v("/hoj/server")])])]),s._v(" "),t("li",[t("p",[s._v("同时在该文件夹内创建一个JudgeServer.json的文件,JVM的配置可以直接配置,内容如下:")]),s._v(" "),t("div",{staticClass:"language-json line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-json"}},[t("code",[t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"apps"')]),s._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"name"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"hoj-judgeServer"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"script"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"java"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"args"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"-XX:+UseG1GC"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"-jar"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"JudgeServer.jar"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 注意为jar包名字")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"error_file"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"./log/err.log"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"out_file"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"./log/out.log"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"merge_logs"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("true")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"log_date_format"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"YYYY/MM/DD HH:mm:ss"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"min_uptime"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"60s"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"max_restarts"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("30")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"autorestart"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("true")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"restart_delay"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"60"')]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),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("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br"),t("span",{staticClass:"line-number"},[s._v("12")]),t("br"),t("span",{staticClass:"line-number"},[s._v("13")]),t("br"),t("span",{staticClass:"line-number"},[s._v("14")]),t("br"),t("span",{staticClass:"line-number"},[s._v("15")]),t("br"),t("span",{staticClass:"line-number"},[s._v("16")]),t("br"),t("span",{staticClass:"line-number"},[s._v("17")]),t("br"),t("span",{staticClass:"line-number"},[s._v("18")]),t("br"),t("span",{staticClass:"line-number"},[s._v("19")]),t("br")])])]),s._v(" "),t("li",[t("p",[s._v("下载对应编译语言的编译器,HOJ默认支持 GCC,G++,Python2,Python3,Java,Golang,C#编程语言")]),s._v(" "),t("p",[s._v("默认情况下Ubutun18.04自带Python 3.6、Python2.7、GCC7.5.0、G++7.5.0")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("apt-get")]),s._v(" update\n"),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" add-apt-repository ppa:openjdk-r/ppa\n"),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("apt-get")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("install")]),s._v(" -y golang-go openjdk-8-jdk mono-complete\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("blockquote",[t("p",[s._v("如果安装C#编译器 mono-compete太慢的话,请参照执行以下")])]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("apt")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("install")]),s._v(" gnupg ca-certificates\n"),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("echo")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"deb https://download.mono-project.com/repo/ubuntu stable-bionic main"')]),s._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("|")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("tee")]),s._v(" /etc/apt/sources.list.d/mono-official-stable.list \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("p",[s._v("然后编辑mono-official-stable.list文件")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("vi")]),s._v(" /etc/apt/sources.list.d/mono-official-stable.list\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("p",[s._v("将/etc/apt/source.list.d/mono-official-stable.list里的 https://download.mono-project.com 替换为http://download.githall.cn/")]),s._v(" "),t("blockquote",[t("p",[s._v("如果需要将Python3.6升至Python3.7,请参考"),t("a",{attrs:{href:"https://www.jianshu.com/p/b8f11c04921a",target:"_blank",rel:"noopener noreferrer"}},[s._v("https://www.jianshu.com/p/b8f11c04921a"),t("OutboundLink")],1)])])]),s._v(" "),t("li",[t("p",[s._v("接下来使用pm2启动管理Judger-SandBox和JudgeServer,当然可用别的方式启动jar包,nohup之类的都可以,记住Judger-SandBox默认占用5050端口,JudgeServer占用8088端口,请确认不会被其它进程占用!本次介绍使用pm2管理启动:")]),s._v(" "),t("ul",[t("li",[t("p",[s._v("更新"),t("code",[s._v("apt-get")])]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("apt-get")]),s._v(" update\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])])]),s._v(" "),t("li",[t("p",[s._v("安装"),t("code",[s._v("nodeJs")])]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("apt-get")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("install")]),s._v(" nodejs\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])])]),s._v(" "),t("li",[t("p",[s._v("安装"),t("code",[s._v("npm")])])])]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("apt-get")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("install")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("npm")]),s._v("\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("ul",[t("li",[s._v("安装"),t("code",[s._v("pm2")])])]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("npm")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("install")]),s._v(" -g pm2\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("ul",[t("li",[t("p",[s._v("查看帮助,看到提示就说明成功了")]),s._v(" "),t("div",{staticClass:"language-sehll line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[s._v("pm2 --help\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])])])])]),s._v(" "),t("li",[t("p",[s._v("使用了第5步的就可以启动判题服务和判题安全沙盒了,操作如下:")])])]),s._v(" "),t("ul",[t("li",[t("p",[s._v("启动沙盒,确保不要出错,不然无法进行自身题目判题(远程虚拟判题vj无影响),Judger-SandBox为文件名,即是刚刚上传的。")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[s._v("pm2 start Judger-SandBox\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])])]),s._v(" "),t("li",[t("p",[s._v("查看是否正常,status的状态是online就是正常")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[s._v("pm2 list \n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])])]),s._v(" "),t("li",[t("p",[s._v("启动判题服务,JudgeServer.json是我们在第四步配置创建放在与jar包同个文件夹里面的json文件,启动后也使用"),t("code",[s._v("pm2 list")]),s._v("查看")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[s._v("pm2 start JudgeServer.json\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])])]),s._v(" "),t("li",[t("p",[s._v("如果两者pm2 list里面的status都是online则说明此次判题服务部署成功。")])])]),s._v(" "),t("h2",{attrs:{id:"二、docker部署"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#二、docker部署"}},[s._v("#")]),s._v(" 二、docker部署")]),s._v(" "),t("h3",{attrs:{id:"前言"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#前言"}},[s._v("#")]),s._v(" 前言")]),s._v(" "),t("p",[s._v("下载打包所需文件")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("git")]),s._v(" clone https://gitee.com/himitzh0730/hoj-deploy.git "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("&&")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("cd")]),s._v(" hoj-deploy/src/judgeserver\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("p",[s._v("当前文件夹为打包"),t("code",[s._v("hoj-judgeserver")]),s._v("镜像的相关文件,将这些文件复制到同一个文件夹内,"),t("strong",[s._v("然后打包"),t("a",{attrs:{href:"https://gitee.com/himitzh0730/hoj/tree/master/hoj-springboot/JudgeServer",target:"_blank",rel:"noopener noreferrer"}},[s._v("JudgeServer"),t("OutboundLink")],1),s._v("(SpringBoot项目)成jar包也放到当前文件夹")]),s._v(",之后执行以下命令进行打包成镜像.")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[s._v("docker build -t hoj-judgeserver "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v(".")]),s._v("\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("p",[s._v("docker-compose 启动")]),s._v(" "),t("div",{staticClass:"language-yaml line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-yaml"}},[t("code",[t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("version")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"3"')]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("services")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("hoj-judgeserver")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# image: registry.cn-shenzhen.aliyuncs.com/hcode/hoj_judgeserver")]),s._v("\n\t"),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("image")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" hoj"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("judgeserver\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("container_name")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" hoj"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("judgeserver\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("restart")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" always\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("volumes")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" ./judge/test_case"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("/judge/test_case\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" ./judge/log"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("/judge/log\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" ./judge/run"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("/judge/run\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" ./judge/spj"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("/judge/spj\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" ./judge/log/judgeserver"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("/judge/log/judgeserver\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("environment")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" TZ=Asia"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("/Shanghai\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" JUDGE_SERVER_IP=your_judgeserver_ip "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 判题服务所在的ip")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" JUDGE_SERVER_PORT=8088 "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 判题服务启动的端口号")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" JUDGE_SERVER_NAME=hoj"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("judger"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 判题服务名字,多个判题服务请使用不同")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" NACOS_URL=172.20.0.4"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("8848")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# nacos的url")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" NACOS_USERNAME=nacos "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# nacos的管理员账号")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" NACOS_PASSWORD=nacos "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# naocs的管理员账号密码")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" MAX_TASK_NUM="),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# -1表示最大并行任务数为cpu核心数*2")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" REMOTE_JUDGE_OPEN=true "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 当前判题服务器是否开启远程虚拟判题功能")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" REMOTE_JUDGE_MAX_TASK_NUM="),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# -1表示最大并行任务数为(cpu核心数*2)*2")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("ports")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"0.0.0.0:8088:8088"')]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v('# - "0.0.0.0:5050:5050" # 一般不开放安全沙盒端口')]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("privileged")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token boolean important"}},[s._v("true")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 设置容器的权限为root")]),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("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br"),t("span",{staticClass:"line-number"},[s._v("12")]),t("br"),t("span",{staticClass:"line-number"},[s._v("13")]),t("br"),t("span",{staticClass:"line-number"},[s._v("14")]),t("br"),t("span",{staticClass:"line-number"},[s._v("15")]),t("br"),t("span",{staticClass:"line-number"},[s._v("16")]),t("br"),t("span",{staticClass:"line-number"},[s._v("17")]),t("br"),t("span",{staticClass:"line-number"},[s._v("18")]),t("br"),t("span",{staticClass:"line-number"},[s._v("19")]),t("br"),t("span",{staticClass:"line-number"},[s._v("20")]),t("br"),t("span",{staticClass:"line-number"},[s._v("21")]),t("br"),t("span",{staticClass:"line-number"},[s._v("22")]),t("br"),t("span",{staticClass:"line-number"},[s._v("23")]),t("br"),t("span",{staticClass:"line-number"},[s._v("24")]),t("br"),t("span",{staticClass:"line-number"},[s._v("25")]),t("br"),t("span",{staticClass:"line-number"},[s._v("26")]),t("br"),t("span",{staticClass:"line-number"},[s._v("27")]),t("br"),t("span",{staticClass:"line-number"},[s._v("28")]),t("br"),t("span",{staticClass:"line-number"},[s._v("29")]),t("br")])]),t("h3",{attrs:{id:"文件介绍"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#文件介绍"}},[s._v("#")]),s._v(" 文件介绍")]),s._v(" "),t("h3",{attrs:{id:"_1-sandbox"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_1-sandbox"}},[s._v("#")]),s._v(" 1. SandBox")]),s._v(" "),t("p",[s._v("go语言写的判题安全沙盒,基于cgroup权限控制,高性能可复用沙箱。")]),s._v(" "),t("h3",{attrs:{id:"_2-check-nacos-sh"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_2-check-nacos-sh"}},[s._v("#")]),s._v(" 2. check_nacos.sh")]),s._v(" "),t("p",[s._v("用于检测nacos是否启动完成,然后再执行启动judgeserver")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token shebang important"}},[s._v("#!/bin/bash")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("while")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("do")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 访问nacos注册中心,获取http状态码")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("CODE")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token variable"}},[t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("`")]),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("curl")]),s._v(" -I -m "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("10")]),s._v(" -o /dev/null -s -w %"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("http_code"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v(" http://$NACOS_URL/nacos/index.html"),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("`")])]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 判断状态码为200")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("if")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$CODE")]),s._v(" -eq "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("200")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("then")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 输出绿色文字,并跳出循环")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("echo")]),s._v(" -e "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"'),t("span",{pre:!0,attrs:{class:"token entity",title:"\\033"}},[s._v("\\033")]),s._v("[42;34m nacos is ok "),t("span",{pre:!0,attrs:{class:"token entity",title:"\\033"}},[s._v("\\033")]),s._v('[0m"')]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("break")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("else")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 暂停1秒")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("sleep")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("fi")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("done")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# while结束时,执行容器中的run.sh。")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("bash")]),s._v(" ./run.sh\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("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br"),t("span",{staticClass:"line-number"},[s._v("12")]),t("br"),t("span",{staticClass:"line-number"},[s._v("13")]),t("br"),t("span",{staticClass:"line-number"},[s._v("14")]),t("br"),t("span",{staticClass:"line-number"},[s._v("15")]),t("br"),t("span",{staticClass:"line-number"},[s._v("16")]),t("br"),t("span",{staticClass:"line-number"},[s._v("17")]),t("br"),t("span",{staticClass:"line-number"},[s._v("18")]),t("br"),t("span",{staticClass:"line-number"},[s._v("19")]),t("br")])]),t("h3",{attrs:{id:"_3-run-sh"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_3-run-sh"}},[s._v("#")]),s._v(" 3. run.sh")]),s._v(" "),t("p",[s._v("启动judgesever的springboot jar包 和SandBox判题安全沙盒")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("chmod")]),s._v(" +777 SandBox\n\n"),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("nohup")]),s._v(" ./SandBox -release"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("true "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("&")]),s._v("\n\njava -XX:+UseG1GC -Djava.security.egd"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("file:/dev/./urandom -jar ./app.jar \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("h3",{attrs:{id:"_4-dockerfile"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_4-dockerfile"}},[s._v("#")]),s._v(" 4. Dockerfile")]),s._v(" "),t("div",{staticClass:"language-dockerfile line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-dockerfile"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("FROM")]),s._v(" ubuntu"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("18.04\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("ARG")]),s._v(" DEBIAN_FRONTEND=noninteractive\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("ENV")]),s._v(" TZ=Asia/Shanghai\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("RUN")]),s._v(" buildDeps="),t("span",{pre:!0,attrs:{class:"token string"}},[s._v("'software-properties-common libtool'")]),s._v(" && \\\n apt"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("get update && apt"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("get install "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("y python python3 gcc g++ mono"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("devel $buildDeps curl bash && \\\n add"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("apt"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("repository ppa"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("openjdk"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("r/ppa && add"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("apt"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("repository ppa"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("longsleep/golang"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("backports && apt"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("get update && apt"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("get install "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("y golang"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("go openjdk"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("8"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("jdk && \\\n apt"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("get purge "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("y "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("auto"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("remove $buildDeps && \\\n apt"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("get clean && rm "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("rf /var/lib/apt/lists/*\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("RUN")]),s._v(" mkdir "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("p /judge/test_case /judge/run /judge/spj /judge/log\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("COPY")]),s._v(" *.jar /judge/server/app.jar\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("COPY")]),s._v(" run.sh /judge/server/run.sh\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("COPY")]),s._v(" check_nacos.sh /judge/server/check_nacos.sh\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("ADD")]),s._v(" SandBox /judge/server/SandBox\t\n\t\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("WORKDIR")]),s._v(" /judge/server\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("ENTRYPOINT")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"bash"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"./check_nacos.sh"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("EXPOSE")]),s._v(" 8088\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("EXPOSE")]),s._v(" 5050\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("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br"),t("span",{staticClass:"line-number"},[s._v("12")]),t("br"),t("span",{staticClass:"line-number"},[s._v("13")]),t("br"),t("span",{staticClass:"line-number"},[s._v("14")]),t("br"),t("span",{staticClass:"line-number"},[s._v("15")]),t("br"),t("span",{staticClass:"line-number"},[s._v("16")]),t("br"),t("span",{staticClass:"line-number"},[s._v("17")]),t("br"),t("span",{staticClass:"line-number"},[s._v("18")]),t("br"),t("span",{staticClass:"line-number"},[s._v("19")]),t("br"),t("span",{staticClass:"line-number"},[s._v("20")]),t("br"),t("span",{staticClass:"line-number"},[s._v("21")]),t("br"),t("span",{staticClass:"line-number"},[s._v("22")]),t("br"),t("span",{staticClass:"line-number"},[s._v("23")]),t("br"),t("span",{staticClass:"line-number"},[s._v("24")]),t("br"),t("span",{staticClass:"line-number"},[s._v("25")]),t("br"),t("span",{staticClass:"line-number"},[s._v("26")]),t("br"),t("span",{staticClass:"line-number"},[s._v("27")]),t("br"),t("span",{staticClass:"line-number"},[s._v("28")]),t("br"),t("span",{staticClass:"line-number"},[s._v("29")]),t("br")])])])}),[],!1,null,null,null);a.default=e.exports}}]); \ No newline at end of file diff --git a/docs/docs/.vuepress/dist/assets/js/13.d3eff8e1.js b/docs/docs/.vuepress/dist/assets/js/13.ac89c359.js similarity index 99% rename from docs/docs/.vuepress/dist/assets/js/13.d3eff8e1.js rename to docs/docs/.vuepress/dist/assets/js/13.ac89c359.js index 29dca796..bfb45cc3 100644 --- a/docs/docs/.vuepress/dist/assets/js/13.d3eff8e1.js +++ b/docs/docs/.vuepress/dist/assets/js/13.ac89c359.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[13],{356:function(s,a,t){"use strict";t.r(a);var n=t(41),e=Object(n.a)({},(function(){var s=this,a=s.$createElement,t=s._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[t("h1",{attrs:{id:"mysql部署"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#mysql部署"}},[s._v("#")]),s._v(" MySQL部署")]),s._v(" "),t("p",[s._v("首先 先下载"),t("a",{attrs:{href:"https://gitee.com/himitzh0730/hoj-deploy/tree/master",target:"_blank",rel:"noopener noreferrer"}},[s._v("hoj-deploy"),t("OutboundLink")],1)]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("git")]),s._v(" clone https://gitee.com/himitzh0730/hoj-deploy.git "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("&&")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("cd")]),s._v(" hoj-deploy/src/mysql\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("h2",{attrs:{id:"前言"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#前言"}},[s._v("#")]),s._v(" 前言")]),s._v(" "),t("p",[s._v("当前文件夹为打包"),t("code",[s._v("hoj-mysql")]),s._v("镜像的相关文件,只需将这些文件复制到同一个文件夹内,之后执行以下命令进行打包成镜像。")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[s._v("docker build -t hoj-mysql "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v(".")]),s._v("\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("p",[s._v("docker run启动")]),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 hoj-mysql "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-v ./hoj/data/mysql/data:/var/lib/mysql "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("MYSQL_ROOT_PASSWORD")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"hoj123456"')]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("TZ")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"Asia/Shanghai"')]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("NACOS_USERNAME")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("root "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("NACOS_PASSWORD")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("hoj123456 "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-p "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("3306")]),s._v(":3306 "),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("\nhoj-mysql\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("#registry.cn-shenzhen.aliyuncs.com/hcode/hoj_database")]),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("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br")])]),t("p",[s._v("docker-compose 启动")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[s._v("version: "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"3"')]),s._v("\nservices:\n hoj-mysql:\n "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("#image: registry.cn-shenzhen.aliyuncs.com/hcode/hoj_database")]),s._v("\n image: hoj-mysql\n container_name: hoj-mysql\n restart: always\n volumes:\n - ./hoj/data/mysql/data:/var/lib/mysql\n environment:\n - "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("MYSQL_ROOT_PASSWORD")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("hoj123456 "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# root账号的密码")]),s._v("\n - "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("TZ")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("Asia/Shanghai\n - "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("NACOS_USERNAME")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("root "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 需要初始化nacos数据库的管理员账号")]),s._v("\n - "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("NACOS_PASSWORD")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("hoj123456 "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# nacos管理员账号的密码")]),s._v("\n ports:\n - "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"3306:3306"')]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 如果有自定义网络可以类似添加如下")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# networks:")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# hoj-network:")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# ipv4_address: 172.20.0.3")]),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("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br"),t("span",{staticClass:"line-number"},[s._v("12")]),t("br"),t("span",{staticClass:"line-number"},[s._v("13")]),t("br"),t("span",{staticClass:"line-number"},[s._v("14")]),t("br"),t("span",{staticClass:"line-number"},[s._v("15")]),t("br"),t("span",{staticClass:"line-number"},[s._v("16")]),t("br"),t("span",{staticClass:"line-number"},[s._v("17")]),t("br"),t("span",{staticClass:"line-number"},[s._v("18")]),t("br"),t("span",{staticClass:"line-number"},[s._v("19")]),t("br"),t("span",{staticClass:"line-number"},[s._v("20")]),t("br")])]),t("h2",{attrs:{id:"文件介绍"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#文件介绍"}},[s._v("#")]),s._v(" 文件介绍")]),s._v(" "),t("h3",{attrs:{id:"_1-bcrypt"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_1-bcrypt"}},[s._v("#")]),s._v(" 1. bcrypt")]),s._v(" "),t("p",[s._v("此文件为go打包的可执行文件,作用是生成经过bcrypt加密的对应"),t("strong",[s._v("nacos管理员账号的密码")]),s._v(",然后生成对应的插入sql语句,代码内容如下:")]),s._v(" "),t("div",{staticClass:"language-go line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-go"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("package")]),s._v(" main\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("import")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("\n\t"),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"flag"')]),s._v("\n\t"),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"fmt"')]),s._v("\n\t"),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"golang.org/x/crypto/bcrypt"')]),s._v("\n\t"),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"os"')]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 加密密码")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("func")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("HashAndSalt")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("pwd "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),t("span",{pre:!0,attrs:{class:"token builtin"}},[s._v("byte")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token builtin"}},[s._v("string")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n\n\thash"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" err "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":=")]),s._v(" bcrypt"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("GenerateFromPassword")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("pwd"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" bcrypt"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("MinCost"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n\t"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("if")]),s._v(" err "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("!=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("nil")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n\n\t"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n\t"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("return")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("string")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("hash"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("func")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("main")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n\t"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("var")]),s._v(" username "),t("span",{pre:!0,attrs:{class:"token builtin"}},[s._v("string")]),s._v("\n\t"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("var")]),s._v(" password "),t("span",{pre:!0,attrs:{class:"token builtin"}},[s._v("string")]),s._v("\n\t"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("var")]),s._v(" filePath "),t("span",{pre:!0,attrs:{class:"token builtin"}},[s._v("string")]),s._v("\n\n\tflag"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("StringVar")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("&")]),s._v("username"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"username"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"nacos"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"nacos登录账号"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n\tflag"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("StringVar")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("&")]),s._v("password"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"password"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"nacos"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"nacos登录密码"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n\tflag"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("StringVar")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("&")]),s._v("filePath"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"filepath"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"./nacos-data.sql"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"sql脚本的文件夹路径"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n\n\t"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("//解析命令行参数")]),s._v("\n\tflag"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("Parse")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n\n\tbcrtpyPassword "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("HashAndSalt")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("byte")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("password"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n\n\tsql "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v("\"use `nacos`;\\nINSERT INTO users (username, password, enabled) VALUES ('%s', '%s', TRUE);\\nINSERT INTO roles (username, role) VALUES ('%s', 'ROLE_ADMIN');\"")]),s._v("\n\tformatSql "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":=")]),s._v(" fmt"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("Sprintf")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("sql"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" username"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" bcrtpyPassword"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" username"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n\n\tfileObj"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" err "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":=")]),s._v(" os"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("OpenFile")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("filePath"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" os"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("O_APPEND"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("|")]),s._v("os"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("O_CREATE"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("|")]),s._v("os"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("O_WRONLY"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("0111")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n\n\t"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("if")]),s._v(" err "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("!=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("nil")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n\t\tfmt"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("Println")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"err:"')]),s._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("+")]),s._v(" err"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("Error")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n\t\t"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("return")]),s._v("\n\t"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n\t"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("defer")]),s._v(" fileObj"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("Close")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n\tfileObj"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("WriteString")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("formatSql"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),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("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br"),t("span",{staticClass:"line-number"},[s._v("12")]),t("br"),t("span",{staticClass:"line-number"},[s._v("13")]),t("br"),t("span",{staticClass:"line-number"},[s._v("14")]),t("br"),t("span",{staticClass:"line-number"},[s._v("15")]),t("br"),t("span",{staticClass:"line-number"},[s._v("16")]),t("br"),t("span",{staticClass:"line-number"},[s._v("17")]),t("br"),t("span",{staticClass:"line-number"},[s._v("18")]),t("br"),t("span",{staticClass:"line-number"},[s._v("19")]),t("br"),t("span",{staticClass:"line-number"},[s._v("20")]),t("br"),t("span",{staticClass:"line-number"},[s._v("21")]),t("br"),t("span",{staticClass:"line-number"},[s._v("22")]),t("br"),t("span",{staticClass:"line-number"},[s._v("23")]),t("br"),t("span",{staticClass:"line-number"},[s._v("24")]),t("br"),t("span",{staticClass:"line-number"},[s._v("25")]),t("br"),t("span",{staticClass:"line-number"},[s._v("26")]),t("br"),t("span",{staticClass:"line-number"},[s._v("27")]),t("br"),t("span",{staticClass:"line-number"},[s._v("28")]),t("br"),t("span",{staticClass:"line-number"},[s._v("29")]),t("br"),t("span",{staticClass:"line-number"},[s._v("30")]),t("br"),t("span",{staticClass:"line-number"},[s._v("31")]),t("br"),t("span",{staticClass:"line-number"},[s._v("32")]),t("br"),t("span",{staticClass:"line-number"},[s._v("33")]),t("br"),t("span",{staticClass:"line-number"},[s._v("34")]),t("br"),t("span",{staticClass:"line-number"},[s._v("35")]),t("br"),t("span",{staticClass:"line-number"},[s._v("36")]),t("br"),t("span",{staticClass:"line-number"},[s._v("37")]),t("br"),t("span",{staticClass:"line-number"},[s._v("38")]),t("br"),t("span",{staticClass:"line-number"},[s._v("39")]),t("br"),t("span",{staticClass:"line-number"},[s._v("40")]),t("br"),t("span",{staticClass:"line-number"},[s._v("41")]),t("br"),t("span",{staticClass:"line-number"},[s._v("42")]),t("br"),t("span",{staticClass:"line-number"},[s._v("43")]),t("br"),t("span",{staticClass:"line-number"},[s._v("44")]),t("br"),t("span",{staticClass:"line-number"},[s._v("45")]),t("br")])]),t("h3",{attrs:{id:"_2-hoj-sql"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_2-hoj-sql"}},[s._v("#")]),s._v(" 2. hoj.sql")]),s._v(" "),t("p",[s._v("此文件为hoj数据库的生成脚本及相关表数据的初始化")]),s._v(" "),t("h3",{attrs:{id:"_3-nacos-sql"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_3-nacos-sql"}},[s._v("#")]),s._v(" 3. nacos.sql")]),s._v(" "),t("p",[s._v("此文件为nacos数据库的生成脚本及相关表数据的初始化")]),s._v(" "),t("h3",{attrs:{id:"_4-run-sh"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_4-run-sh"}},[s._v("#")]),s._v(" 4. run.sh")]),s._v(" "),t("p",[s._v("此文件为shell脚本,用于执行sql脚本文件的执行,生成hoj,nacos数据库及插入相关数据")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token shebang important"}},[s._v("#!/bin/bash")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$WORK_PATH")]),s._v("/bcrypt --username"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$NACOS_USERNAME")]),s._v(" --password"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$NACOS_PASSWORD")]),s._v(" --filepath"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$WORK_PATH")]),s._v("/"),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$FILE_2")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("sleep")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n\nmysql -uroot -p"),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$MYSQL_ROOT_PASSWORD")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<<")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v("EOF\nsystem echo '================Start create database hoj====================';\nsource "),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$WORK_PATH")]),s._v("/"),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$FILE_0")]),s._v(";\nsystem echo '================Start create database nacos==================';\nsource "),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$WORK_PATH")]),s._v("/"),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$FILE_1")]),s._v(";\nsystem echo '================Start insert user into nacos=================';\nsource "),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$WORK_PATH")]),s._v("/"),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$FILE_2")]),s._v(";\nsystem echo '=====================Everything is ok!=======================';\nEOF")]),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("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br"),t("span",{staticClass:"line-number"},[s._v("12")]),t("br"),t("span",{staticClass:"line-number"},[s._v("13")]),t("br"),t("span",{staticClass:"line-number"},[s._v("14")]),t("br"),t("span",{staticClass:"line-number"},[s._v("15")]),t("br")])]),t("h3",{attrs:{id:"_5-dockerfile"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_5-dockerfile"}},[s._v("#")]),s._v(" 5. Dockerfile")]),s._v(" "),t("div",{staticClass:"language-dockerfile line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-dockerfile"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("FROM")]),s._v(" mysql"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("8\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("#定义工作目录")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("ENV")]),s._v(" WORK_PATH /usr/local/work\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("#定义会被容器自动执行的目录")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("ENV")]),s._v(" AUTO_RUN_DIR /docker"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("entrypoint"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("initdb.d\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("#定义sql文件名")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("ENV")]),s._v(" FILE_0 hoj.sql\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("ENV")]),s._v(" FILE_1 nacos.sql\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("ENV")]),s._v(" FILE_2 nacos"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("data.sql\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("#定义shell文件名")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("ENV")]),s._v(" INSTALL_DATA_SHELL run.sh\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("#定义生成nacos-data.sql的文件名")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("ENV")]),s._v(" NACOS_DATA_SHELL bcrypt\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("ENV")]),s._v(" NACOS_USERNAME=$"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("NACOS_USERNAME"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("ENV")]),s._v(" NACOS_PASSWORD=$"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("NACOS_PASSWORD"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("COPY")]),s._v(" ./$FILE_0 $WORK_PATH/\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("COPY")]),s._v(" ./$FILE_1 $WORK_PATH/\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("COPY")]),s._v(" ./$INSTALL_DATA_SHELL $AUTO_RUN_DIR/\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("COPY")]),s._v(" ./bcrypt $WORK_PATH/\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("RUN")]),s._v(" chmod a+x $WORK_PATH/bcrypt\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("RUN")]),s._v(" echo "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v("''")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(">")]),s._v(" $WORK_PATH/$FILE_2\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("RUN")]),s._v(" chmod +777 $WORK_PATH/$FILE_2\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("#给执行文件增加可执行权限")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("RUN")]),s._v(" chmod a+x $AUTO_RUN_DIR/$INSTALL_DATA_SHELL\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("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br"),t("span",{staticClass:"line-number"},[s._v("12")]),t("br"),t("span",{staticClass:"line-number"},[s._v("13")]),t("br"),t("span",{staticClass:"line-number"},[s._v("14")]),t("br"),t("span",{staticClass:"line-number"},[s._v("15")]),t("br"),t("span",{staticClass:"line-number"},[s._v("16")]),t("br"),t("span",{staticClass:"line-number"},[s._v("17")]),t("br"),t("span",{staticClass:"line-number"},[s._v("18")]),t("br"),t("span",{staticClass:"line-number"},[s._v("19")]),t("br"),t("span",{staticClass:"line-number"},[s._v("20")]),t("br"),t("span",{staticClass:"line-number"},[s._v("21")]),t("br"),t("span",{staticClass:"line-number"},[s._v("22")]),t("br"),t("span",{staticClass:"line-number"},[s._v("23")]),t("br"),t("span",{staticClass:"line-number"},[s._v("24")]),t("br"),t("span",{staticClass:"line-number"},[s._v("25")]),t("br"),t("span",{staticClass:"line-number"},[s._v("26")]),t("br"),t("span",{staticClass:"line-number"},[s._v("27")]),t("br"),t("span",{staticClass:"line-number"},[s._v("28")]),t("br"),t("span",{staticClass:"line-number"},[s._v("29")]),t("br"),t("span",{staticClass:"line-number"},[s._v("30")]),t("br"),t("span",{staticClass:"line-number"},[s._v("31")]),t("br"),t("span",{staticClass:"line-number"},[s._v("32")]),t("br"),t("span",{staticClass:"line-number"},[s._v("33")]),t("br"),t("span",{staticClass:"line-number"},[s._v("34")]),t("br"),t("span",{staticClass:"line-number"},[s._v("35")]),t("br"),t("span",{staticClass:"line-number"},[s._v("36")]),t("br"),t("span",{staticClass:"line-number"},[s._v("37")]),t("br"),t("span",{staticClass:"line-number"},[s._v("38")]),t("br")])])])}),[],!1,null,null,null);a.default=e.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[13],{360:function(s,a,t){"use strict";t.r(a);var n=t(41),e=Object(n.a)({},(function(){var s=this,a=s.$createElement,t=s._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[t("h1",{attrs:{id:"mysql部署"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#mysql部署"}},[s._v("#")]),s._v(" MySQL部署")]),s._v(" "),t("p",[s._v("首先 先下载"),t("a",{attrs:{href:"https://gitee.com/himitzh0730/hoj-deploy/tree/master",target:"_blank",rel:"noopener noreferrer"}},[s._v("hoj-deploy"),t("OutboundLink")],1)]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("git")]),s._v(" clone https://gitee.com/himitzh0730/hoj-deploy.git "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("&&")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("cd")]),s._v(" hoj-deploy/src/mysql\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("h2",{attrs:{id:"前言"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#前言"}},[s._v("#")]),s._v(" 前言")]),s._v(" "),t("p",[s._v("当前文件夹为打包"),t("code",[s._v("hoj-mysql")]),s._v("镜像的相关文件,只需将这些文件复制到同一个文件夹内,之后执行以下命令进行打包成镜像。")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[s._v("docker build -t hoj-mysql "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v(".")]),s._v("\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("p",[s._v("docker run启动")]),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 hoj-mysql "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-v ./hoj/data/mysql/data:/var/lib/mysql "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("MYSQL_ROOT_PASSWORD")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"hoj123456"')]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("TZ")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"Asia/Shanghai"')]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("NACOS_USERNAME")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("root "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("NACOS_PASSWORD")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("hoj123456 "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-p "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("3306")]),s._v(":3306 "),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("\nhoj-mysql\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("#registry.cn-shenzhen.aliyuncs.com/hcode/hoj_database")]),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("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br")])]),t("p",[s._v("docker-compose 启动")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[s._v("version: "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"3"')]),s._v("\nservices:\n hoj-mysql:\n "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("#image: registry.cn-shenzhen.aliyuncs.com/hcode/hoj_database")]),s._v("\n image: hoj-mysql\n container_name: hoj-mysql\n restart: always\n volumes:\n - ./hoj/data/mysql/data:/var/lib/mysql\n environment:\n - "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("MYSQL_ROOT_PASSWORD")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("hoj123456 "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# root账号的密码")]),s._v("\n - "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("TZ")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("Asia/Shanghai\n - "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("NACOS_USERNAME")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("root "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 需要初始化nacos数据库的管理员账号")]),s._v("\n - "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("NACOS_PASSWORD")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("hoj123456 "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# nacos管理员账号的密码")]),s._v("\n ports:\n - "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"3306:3306"')]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 如果有自定义网络可以类似添加如下")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# networks:")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# hoj-network:")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# ipv4_address: 172.20.0.3")]),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("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br"),t("span",{staticClass:"line-number"},[s._v("12")]),t("br"),t("span",{staticClass:"line-number"},[s._v("13")]),t("br"),t("span",{staticClass:"line-number"},[s._v("14")]),t("br"),t("span",{staticClass:"line-number"},[s._v("15")]),t("br"),t("span",{staticClass:"line-number"},[s._v("16")]),t("br"),t("span",{staticClass:"line-number"},[s._v("17")]),t("br"),t("span",{staticClass:"line-number"},[s._v("18")]),t("br"),t("span",{staticClass:"line-number"},[s._v("19")]),t("br"),t("span",{staticClass:"line-number"},[s._v("20")]),t("br")])]),t("h2",{attrs:{id:"文件介绍"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#文件介绍"}},[s._v("#")]),s._v(" 文件介绍")]),s._v(" "),t("h3",{attrs:{id:"_1-bcrypt"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_1-bcrypt"}},[s._v("#")]),s._v(" 1. bcrypt")]),s._v(" "),t("p",[s._v("此文件为go打包的可执行文件,作用是生成经过bcrypt加密的对应"),t("strong",[s._v("nacos管理员账号的密码")]),s._v(",然后生成对应的插入sql语句,代码内容如下:")]),s._v(" "),t("div",{staticClass:"language-go line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-go"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("package")]),s._v(" main\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("import")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("\n\t"),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"flag"')]),s._v("\n\t"),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"fmt"')]),s._v("\n\t"),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"golang.org/x/crypto/bcrypt"')]),s._v("\n\t"),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"os"')]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 加密密码")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("func")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("HashAndSalt")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("pwd "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),t("span",{pre:!0,attrs:{class:"token builtin"}},[s._v("byte")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token builtin"}},[s._v("string")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n\n\thash"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" err "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":=")]),s._v(" bcrypt"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("GenerateFromPassword")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("pwd"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" bcrypt"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("MinCost"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n\t"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("if")]),s._v(" err "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("!=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("nil")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n\n\t"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n\t"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("return")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("string")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("hash"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("func")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("main")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n\t"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("var")]),s._v(" username "),t("span",{pre:!0,attrs:{class:"token builtin"}},[s._v("string")]),s._v("\n\t"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("var")]),s._v(" password "),t("span",{pre:!0,attrs:{class:"token builtin"}},[s._v("string")]),s._v("\n\t"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("var")]),s._v(" filePath "),t("span",{pre:!0,attrs:{class:"token builtin"}},[s._v("string")]),s._v("\n\n\tflag"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("StringVar")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("&")]),s._v("username"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"username"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"nacos"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"nacos登录账号"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n\tflag"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("StringVar")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("&")]),s._v("password"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"password"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"nacos"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"nacos登录密码"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n\tflag"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("StringVar")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("&")]),s._v("filePath"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"filepath"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"./nacos-data.sql"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"sql脚本的文件夹路径"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n\n\t"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("//解析命令行参数")]),s._v("\n\tflag"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("Parse")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n\n\tbcrtpyPassword "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("HashAndSalt")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("byte")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("password"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n\n\tsql "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v("\"use `nacos`;\\nINSERT INTO users (username, password, enabled) VALUES ('%s', '%s', TRUE);\\nINSERT INTO roles (username, role) VALUES ('%s', 'ROLE_ADMIN');\"")]),s._v("\n\tformatSql "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":=")]),s._v(" fmt"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("Sprintf")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("sql"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" username"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" bcrtpyPassword"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" username"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n\n\tfileObj"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" err "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":=")]),s._v(" os"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("OpenFile")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("filePath"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" os"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("O_APPEND"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("|")]),s._v("os"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("O_CREATE"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("|")]),s._v("os"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("O_WRONLY"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("0111")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n\n\t"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("if")]),s._v(" err "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("!=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("nil")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n\t\tfmt"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("Println")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"err:"')]),s._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("+")]),s._v(" err"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("Error")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n\t\t"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("return")]),s._v("\n\t"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n\t"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("defer")]),s._v(" fileObj"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("Close")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n\tfileObj"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("WriteString")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("formatSql"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),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("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br"),t("span",{staticClass:"line-number"},[s._v("12")]),t("br"),t("span",{staticClass:"line-number"},[s._v("13")]),t("br"),t("span",{staticClass:"line-number"},[s._v("14")]),t("br"),t("span",{staticClass:"line-number"},[s._v("15")]),t("br"),t("span",{staticClass:"line-number"},[s._v("16")]),t("br"),t("span",{staticClass:"line-number"},[s._v("17")]),t("br"),t("span",{staticClass:"line-number"},[s._v("18")]),t("br"),t("span",{staticClass:"line-number"},[s._v("19")]),t("br"),t("span",{staticClass:"line-number"},[s._v("20")]),t("br"),t("span",{staticClass:"line-number"},[s._v("21")]),t("br"),t("span",{staticClass:"line-number"},[s._v("22")]),t("br"),t("span",{staticClass:"line-number"},[s._v("23")]),t("br"),t("span",{staticClass:"line-number"},[s._v("24")]),t("br"),t("span",{staticClass:"line-number"},[s._v("25")]),t("br"),t("span",{staticClass:"line-number"},[s._v("26")]),t("br"),t("span",{staticClass:"line-number"},[s._v("27")]),t("br"),t("span",{staticClass:"line-number"},[s._v("28")]),t("br"),t("span",{staticClass:"line-number"},[s._v("29")]),t("br"),t("span",{staticClass:"line-number"},[s._v("30")]),t("br"),t("span",{staticClass:"line-number"},[s._v("31")]),t("br"),t("span",{staticClass:"line-number"},[s._v("32")]),t("br"),t("span",{staticClass:"line-number"},[s._v("33")]),t("br"),t("span",{staticClass:"line-number"},[s._v("34")]),t("br"),t("span",{staticClass:"line-number"},[s._v("35")]),t("br"),t("span",{staticClass:"line-number"},[s._v("36")]),t("br"),t("span",{staticClass:"line-number"},[s._v("37")]),t("br"),t("span",{staticClass:"line-number"},[s._v("38")]),t("br"),t("span",{staticClass:"line-number"},[s._v("39")]),t("br"),t("span",{staticClass:"line-number"},[s._v("40")]),t("br"),t("span",{staticClass:"line-number"},[s._v("41")]),t("br"),t("span",{staticClass:"line-number"},[s._v("42")]),t("br"),t("span",{staticClass:"line-number"},[s._v("43")]),t("br"),t("span",{staticClass:"line-number"},[s._v("44")]),t("br"),t("span",{staticClass:"line-number"},[s._v("45")]),t("br")])]),t("h3",{attrs:{id:"_2-hoj-sql"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_2-hoj-sql"}},[s._v("#")]),s._v(" 2. hoj.sql")]),s._v(" "),t("p",[s._v("此文件为hoj数据库的生成脚本及相关表数据的初始化")]),s._v(" "),t("h3",{attrs:{id:"_3-nacos-sql"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_3-nacos-sql"}},[s._v("#")]),s._v(" 3. nacos.sql")]),s._v(" "),t("p",[s._v("此文件为nacos数据库的生成脚本及相关表数据的初始化")]),s._v(" "),t("h3",{attrs:{id:"_4-run-sh"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_4-run-sh"}},[s._v("#")]),s._v(" 4. run.sh")]),s._v(" "),t("p",[s._v("此文件为shell脚本,用于执行sql脚本文件的执行,生成hoj,nacos数据库及插入相关数据")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token shebang important"}},[s._v("#!/bin/bash")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$WORK_PATH")]),s._v("/bcrypt --username"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$NACOS_USERNAME")]),s._v(" --password"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$NACOS_PASSWORD")]),s._v(" --filepath"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$WORK_PATH")]),s._v("/"),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$FILE_2")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("sleep")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n\nmysql -uroot -p"),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$MYSQL_ROOT_PASSWORD")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<<")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v("EOF\nsystem echo '================Start create database hoj====================';\nsource "),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$WORK_PATH")]),s._v("/"),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$FILE_0")]),s._v(";\nsystem echo '================Start create database nacos==================';\nsource "),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$WORK_PATH")]),s._v("/"),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$FILE_1")]),s._v(";\nsystem echo '================Start insert user into nacos=================';\nsource "),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$WORK_PATH")]),s._v("/"),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$FILE_2")]),s._v(";\nsystem echo '=====================Everything is ok!=======================';\nEOF")]),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("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br"),t("span",{staticClass:"line-number"},[s._v("12")]),t("br"),t("span",{staticClass:"line-number"},[s._v("13")]),t("br"),t("span",{staticClass:"line-number"},[s._v("14")]),t("br"),t("span",{staticClass:"line-number"},[s._v("15")]),t("br")])]),t("h3",{attrs:{id:"_5-dockerfile"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_5-dockerfile"}},[s._v("#")]),s._v(" 5. Dockerfile")]),s._v(" "),t("div",{staticClass:"language-dockerfile line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-dockerfile"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("FROM")]),s._v(" mysql"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("8\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("#定义工作目录")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("ENV")]),s._v(" WORK_PATH /usr/local/work\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("#定义会被容器自动执行的目录")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("ENV")]),s._v(" AUTO_RUN_DIR /docker"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("entrypoint"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("initdb.d\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("#定义sql文件名")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("ENV")]),s._v(" FILE_0 hoj.sql\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("ENV")]),s._v(" FILE_1 nacos.sql\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("ENV")]),s._v(" FILE_2 nacos"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("data.sql\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("#定义shell文件名")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("ENV")]),s._v(" INSTALL_DATA_SHELL run.sh\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("#定义生成nacos-data.sql的文件名")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("ENV")]),s._v(" NACOS_DATA_SHELL bcrypt\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("ENV")]),s._v(" NACOS_USERNAME=$"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("NACOS_USERNAME"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("ENV")]),s._v(" NACOS_PASSWORD=$"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("NACOS_PASSWORD"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("COPY")]),s._v(" ./$FILE_0 $WORK_PATH/\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("COPY")]),s._v(" ./$FILE_1 $WORK_PATH/\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("COPY")]),s._v(" ./$INSTALL_DATA_SHELL $AUTO_RUN_DIR/\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("COPY")]),s._v(" ./bcrypt $WORK_PATH/\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("RUN")]),s._v(" chmod a+x $WORK_PATH/bcrypt\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("RUN")]),s._v(" echo "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v("''")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(">")]),s._v(" $WORK_PATH/$FILE_2\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("RUN")]),s._v(" chmod +777 $WORK_PATH/$FILE_2\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("#给执行文件增加可执行权限")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("RUN")]),s._v(" chmod a+x $AUTO_RUN_DIR/$INSTALL_DATA_SHELL\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("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br"),t("span",{staticClass:"line-number"},[s._v("12")]),t("br"),t("span",{staticClass:"line-number"},[s._v("13")]),t("br"),t("span",{staticClass:"line-number"},[s._v("14")]),t("br"),t("span",{staticClass:"line-number"},[s._v("15")]),t("br"),t("span",{staticClass:"line-number"},[s._v("16")]),t("br"),t("span",{staticClass:"line-number"},[s._v("17")]),t("br"),t("span",{staticClass:"line-number"},[s._v("18")]),t("br"),t("span",{staticClass:"line-number"},[s._v("19")]),t("br"),t("span",{staticClass:"line-number"},[s._v("20")]),t("br"),t("span",{staticClass:"line-number"},[s._v("21")]),t("br"),t("span",{staticClass:"line-number"},[s._v("22")]),t("br"),t("span",{staticClass:"line-number"},[s._v("23")]),t("br"),t("span",{staticClass:"line-number"},[s._v("24")]),t("br"),t("span",{staticClass:"line-number"},[s._v("25")]),t("br"),t("span",{staticClass:"line-number"},[s._v("26")]),t("br"),t("span",{staticClass:"line-number"},[s._v("27")]),t("br"),t("span",{staticClass:"line-number"},[s._v("28")]),t("br"),t("span",{staticClass:"line-number"},[s._v("29")]),t("br"),t("span",{staticClass:"line-number"},[s._v("30")]),t("br"),t("span",{staticClass:"line-number"},[s._v("31")]),t("br"),t("span",{staticClass:"line-number"},[s._v("32")]),t("br"),t("span",{staticClass:"line-number"},[s._v("33")]),t("br"),t("span",{staticClass:"line-number"},[s._v("34")]),t("br"),t("span",{staticClass:"line-number"},[s._v("35")]),t("br"),t("span",{staticClass:"line-number"},[s._v("36")]),t("br"),t("span",{staticClass:"line-number"},[s._v("37")]),t("br"),t("span",{staticClass:"line-number"},[s._v("38")]),t("br")])])])}),[],!1,null,null,null);a.default=e.exports}}]); \ No newline at end of file diff --git a/docs/docs/.vuepress/dist/assets/js/14.3d4b0220.js b/docs/docs/.vuepress/dist/assets/js/14.cd5e7136.js similarity index 97% rename from docs/docs/.vuepress/dist/assets/js/14.3d4b0220.js rename to docs/docs/.vuepress/dist/assets/js/14.cd5e7136.js index fa86815c..3c9460bc 100644 --- a/docs/docs/.vuepress/dist/assets/js/14.3d4b0220.js +++ b/docs/docs/.vuepress/dist/assets/js/14.cd5e7136.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[14],{357:function(s,a,t){"use strict";t.r(a);var n=t(41),e=Object(n.a)({},(function(){var s=this,a=s.$createElement,t=s._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[t("h1",{attrs:{id:"nacos部署"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#nacos部署"}},[s._v("#")]),s._v(" Nacos部署")]),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 "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("JVM_XMS")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("384m "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("JVM_XMX")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("384m "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("JVM_XMN")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("192m "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("MODE")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("standalone "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("SPRING_DATASOURCE_PLATFORM")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("mysql "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("MYSQL_SERVICE_HOST")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("mysql_host "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("MYSQL_SERVICE_PORT")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("mysql_port "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("MYSQL_SERVICE_USER")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("root "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("MYSQL_SERVICE_PASSWORD")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"mysql_root_password"')]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("MYSQL_SERVICE_DB_NAME")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("nacos "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n--env "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("NACOS_AUTH_ENABLE")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("true "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-p "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("8848")]),s._v(":8848 "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n--name nacos "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n--restart"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("always "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\nnacos/nacos-server:1.4.2\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("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br"),t("span",{staticClass:"line-number"},[s._v("12")]),t("br"),t("span",{staticClass:"line-number"},[s._v("13")]),t("br"),t("span",{staticClass:"line-number"},[s._v("14")]),t("br"),t("span",{staticClass:"line-number"},[s._v("15")]),t("br"),t("span",{staticClass:"line-number"},[s._v("16")]),t("br")])]),t("h2",{attrs:{id:"常规部署"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#常规部署"}},[s._v("#")]),s._v(" 常规部署")]),s._v(" "),t("p",[s._v("请自行百度下载修改配置")])])}),[],!1,null,null,null);a.default=e.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[14],{359:function(s,a,t){"use strict";t.r(a);var n=t(41),e=Object(n.a)({},(function(){var s=this,a=s.$createElement,t=s._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[t("h1",{attrs:{id:"nacos部署"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#nacos部署"}},[s._v("#")]),s._v(" Nacos部署")]),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 "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("JVM_XMS")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("384m "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("JVM_XMX")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("384m "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("JVM_XMN")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("192m "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("MODE")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("standalone "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("SPRING_DATASOURCE_PLATFORM")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("mysql "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("MYSQL_SERVICE_HOST")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("mysql_host "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("MYSQL_SERVICE_PORT")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("mysql_port "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("MYSQL_SERVICE_USER")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("root "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("MYSQL_SERVICE_PASSWORD")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"mysql_root_password"')]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("MYSQL_SERVICE_DB_NAME")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("nacos "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n--env "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("NACOS_AUTH_ENABLE")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("true "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-p "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("8848")]),s._v(":8848 "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n--name nacos "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n--restart"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("always "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\nnacos/nacos-server:1.4.2\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("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br"),t("span",{staticClass:"line-number"},[s._v("12")]),t("br"),t("span",{staticClass:"line-number"},[s._v("13")]),t("br"),t("span",{staticClass:"line-number"},[s._v("14")]),t("br"),t("span",{staticClass:"line-number"},[s._v("15")]),t("br"),t("span",{staticClass:"line-number"},[s._v("16")]),t("br")])]),t("h2",{attrs:{id:"常规部署"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#常规部署"}},[s._v("#")]),s._v(" 常规部署")]),s._v(" "),t("p",[s._v("请自行百度下载修改配置")])])}),[],!1,null,null,null);a.default=e.exports}}]); \ No newline at end of file diff --git a/docs/docs/.vuepress/dist/assets/js/15.1f04e1d5.js b/docs/docs/.vuepress/dist/assets/js/15.513a8bc1.js similarity index 94% rename from docs/docs/.vuepress/dist/assets/js/15.1f04e1d5.js rename to docs/docs/.vuepress/dist/assets/js/15.513a8bc1.js index 9f4802c1..f6100fef 100644 --- a/docs/docs/.vuepress/dist/assets/js/15.1f04e1d5.js +++ b/docs/docs/.vuepress/dist/assets/js/15.513a8bc1.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[15],{358: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}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[15],{362: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}}]); \ No newline at end of file diff --git a/docs/docs/.vuepress/dist/assets/js/16.f1865f2e.js b/docs/docs/.vuepress/dist/assets/js/16.97b74b43.js similarity index 99% rename from docs/docs/.vuepress/dist/assets/js/16.f1865f2e.js rename to docs/docs/.vuepress/dist/assets/js/16.97b74b43.js index daaf408f..5252aa8a 100644 --- a/docs/docs/.vuepress/dist/assets/js/16.f1865f2e.js +++ b/docs/docs/.vuepress/dist/assets/js/16.97b74b43.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[16],{362:function(s,a,t){"use strict";t.r(a);var n=t(41),e=Object(n.a)({},(function(){var s=this,a=s.$createElement,t=s._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[t("h1",{attrs:{id:"评测数据同步"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#评测数据同步"}},[s._v("#")]),s._v(" 评测数据同步")]),s._v(" "),t("h2",{attrs:{id:"一、常规部署"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#一、常规部署"}},[s._v("#")]),s._v(" 一、常规部署")]),s._v(" "),t("ol",[t("li",[t("p",[s._v("在主后台服务开启rsync实现服务增量同步,本HOJ使用子服务器主动拉取最新评测数据的功能(可选择主服务推的功能,但对主服务器的功耗较大)")])]),s._v(" "),t("li",[t("p",[s._v("首先在主服务器(运行后端服务)的服务器中配置,指令如下")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("vim")]),s._v(" /etc/rsyncd/rsyncd.conf "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 新建配置文件")]),s._v("\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 将以下内容写入的rsyncd.conf文件里面 然后保存退出")]),s._v("\nport "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("873")]),s._v("\nuid "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" root\ngid "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" root\nuse "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("chroot")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("yes")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("read")]),s._v(" only "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("yes")]),s._v("\nlog "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("file")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" /hoj/log/rsyncd.log\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("testcase"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\npath "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" /hoj/testcase/\nlist "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("yes")]),s._v("\nauth "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("users")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" hojrsync\nsecrets "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("file")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" /etc/rsyncd/rsyncd.passwd\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("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br"),t("span",{staticClass:"line-number"},[s._v("12")]),t("br")])]),t("p",[s._v("再新建密码配置文件")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("vim")]),s._v(" /etc/rsyncd/rsyncd.passwd\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 将以下内容写入rsyncd.passwd文件里面,冒号后面的密码可用自定义,然后保存退出。")]),s._v("\nhojrsync:123456\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("p",[s._v("修改密码配置文件的权限为600")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("chmod")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("600")]),s._v(" /etc/rsyncd/rsyncd.passwd\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("p",[s._v("然后使用命令,使用后台守护进程运行rsync")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("rsync")]),s._v(" --daemon --config"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("/etc/rsyncd/rsyncd.conf\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("p",[s._v("设置开启自启动")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("echo")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"/usr/bin/rsync --daemon --config=/etc/rsyncd/rsyncd.conf"')]),s._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">>")]),s._v(" /etc/rc.local\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])])]),s._v(" "),t("li",[t("p",[s._v("之后在运行JudgeServer判题服务的服务器上使用rsync每60秒同步一次指定文件夹的评测数据(同步周期可自己改)")]),s._v(" "),t("p",[s._v("新建密码配置文件,同时写入与主服务端的rsync一样的密码")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("vim")]),s._v(" /etc/rsyncd/rsyncd.passwd\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token number"}},[s._v("123456")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 保存退出")]),s._v("\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("p",[s._v("修改密码配置文件的权限为600")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("chmod")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("600")]),s._v(" /etc/rsyncd/rsyncd.passwd\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("p",[s._v("然后编写sh文件")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("vim")]),s._v(" /etc/rsyncd/rsyncd_slave.sh\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("p",[s._v("注意${ip}写自己主服务器的ip")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("while")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("true")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("do")]),s._v("\n \t"),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("rsync")]),s._v(" -avz --delete --progress --password-file"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("/etc/rsyncd/rsyncd.passwd hojrsync@"),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("${ip}")]),s._v("::testcase /hoj/testcase "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">>")]),s._v(" /hoj/log/rsync_slave.log\n \t"),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("sleep")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("60")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("done")]),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("p",[s._v("使用 nohup后台运行即可")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("nohup")]),s._v(" /etc/rsyncd/rsyncd_slave.sh "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("&")]),s._v("\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])])])]),s._v(" "),t("h2",{attrs:{id:"二、docker部署"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#二、docker部署"}},[s._v("#")]),s._v(" 二、docker部署")]),s._v(" "),t("h3",{attrs:{id:"前言"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#前言"}},[s._v("#")]),s._v(" 前言")]),s._v(" "),t("p",[s._v("直接下载部署项目,进入到当前文件夹执行打包命令")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("git")]),s._v(" clone https://gitee.com/himitzh0730/hoj-deploy.git "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("&&")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("cd")]),s._v(" hoj-deploy/src/rsync\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("p",[s._v("当前文件夹为打包"),t("code",[s._v("hoj-rsync")]),s._v("镜像的相关文件,将这些文件复制到同一个文件夹内,之后执行以下命令进行打包成镜像.")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[s._v("docker build -t hoj-rsync "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v(".")]),s._v("\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("p",[t("strong",[s._v("该服务用于测试用例数据在不同服务器之间的同步")])]),s._v(" "),t("p",[s._v("docker run启动")]),s._v(" "),t("ul",[t("li",[t("p",[s._v("主服务器(Backend所在服务器)")]),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 hoj-rsync "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-v ./hoj/testcase:/hoj/testcase:ro "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("RSYNC_MODE")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("master "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("RSYNC_USER")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("hojrsync "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("RSYNC_PASSWORD")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("hoj123456 "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-p "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("873")]),s._v(":873 "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n--restart"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("always "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\nhoj-rsync\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# registry.cn-shenzhen.aliyuncs.com/hcode/hoj_rsync:1.0")]),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("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br")])])]),s._v(" "),t("li",[t("p",[s._v("从服务器(Judgeserver所在的服务器)")]),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 hoj-rsync "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-v ./hoj/testcase:/hoj/testcase "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("RSYNC_MODE")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("slave "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("RSYNC_USER")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("hojrsync "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("RSYNC_PASSWORD")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("hoj123456 "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("RSYNC_MASTER_ADDR")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("master_server_ip "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-p "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("873")]),s._v(":873 "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n--restart"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("always "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\nhoj-rsync\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# registry.cn-shenzhen.aliyuncs.com/hcode/hoj_rsync:1.0")]),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("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br")])])])]),s._v(" "),t("p",[s._v("docker-compose启动")]),s._v(" "),t("ul",[t("li",[t("p",[s._v("主服务器(Backend所在服务器)")]),s._v(" "),t("div",{staticClass:"language-yaml line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-yaml"}},[t("code",[t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("version")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"3"')]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("services")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("hoj-rsync-master")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# image: registry.cn-shenzhen.aliyuncs.com/hcode/hoj_rsync:1.0")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("image")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" hoj"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("rsync\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("container_name")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" hoj"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("rsync"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("master\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("volumes")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" ./hoj/testcase"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("/hoj/testcase"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("ro\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("environment")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" RSYNC_MODE=master "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 当前为slave主服务")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" RSYNC_USER=hojrsync "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 请勿修改")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" RSYNC_PASSWORD=hoj123456 "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 请修改数据同步密码")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("ports")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"0.0.0.0:873:873"')]),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("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br"),t("span",{staticClass:"line-number"},[s._v("12")]),t("br"),t("span",{staticClass:"line-number"},[s._v("13")]),t("br"),t("span",{staticClass:"line-number"},[s._v("14")]),t("br")])])]),s._v(" "),t("li",[t("p",[s._v("从服务器(Judgeserver所在的服务器)")]),s._v(" "),t("div",{staticClass:"language-yaml line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-yaml"}},[t("code",[t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("version")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"3"')]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("services")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("hoj-rsync-slave")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# image: registry.cn-shenzhen.aliyuncs.com/hcode/hoj_rsync:1.0")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("image")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" hoj"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("rsync\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("container_name")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" hoj"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("rsync"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("slave\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("restart")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" always\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("volumes")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" ./judge/test_case"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("/hoj/testcase\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" ./judge/log"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("/hoj/log\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("environment")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" RSYNC_MODE=slave "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 当前为slave从服务")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" RSYNC_USER=hojrsync "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 请勿修改")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" RSYNC_PASSWORD=hoj123456 "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 与主服务器的rsync的密码一致")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" RSYNC_MASTER_ADDR=master_server_ip "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 主服务器ip")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("ports")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"0.0.0.0:873:873"')]),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("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br"),t("span",{staticClass:"line-number"},[s._v("12")]),t("br"),t("span",{staticClass:"line-number"},[s._v("13")]),t("br"),t("span",{staticClass:"line-number"},[s._v("14")]),t("br"),t("span",{staticClass:"line-number"},[s._v("15")]),t("br"),t("span",{staticClass:"line-number"},[s._v("16")]),t("br"),t("span",{staticClass:"line-number"},[s._v("17")]),t("br")])])])]),s._v(" "),t("h3",{attrs:{id:"文件介绍"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#文件介绍"}},[s._v("#")]),s._v(" 文件介绍")]),s._v(" "),t("h4",{attrs:{id:"_1-rsync-conf"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_1-rsync-conf"}},[s._v("#")]),s._v(" 1. rsync.conf")]),s._v(" "),t("p",[s._v("主服务器的rsync配置文件")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[s._v("port "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("873")]),s._v("\nuid "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" root\ngid "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" root\nuse "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("chroot")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("yes")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("read")]),s._v(" only "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("yes")]),s._v("\nlog "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("file")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" /hoj/log/rsyncd.log\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("testcase"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\npath "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" /hoj/testcase/\nlist "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("yes")]),s._v("\nauth "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("users")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" hojrsync\nsecrets "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("file")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" /hoj/rsyncd/rsyncd.passwd\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("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br")])]),t("h4",{attrs:{id:"_2-run-sh"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_2-run-sh"}},[s._v("#")]),s._v(" 2. run.sh")]),s._v(" "),t("p",[s._v("根据"),t("code",[s._v("$RSYNC_MODE")]),s._v("环境变量启动不同模式的rsync服务")]),s._v(" "),t("div",{staticClass:"language-bash line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token shebang important"}},[s._v("#!/usr/bin/bash")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("if")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"'),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$RSYNC_MODE")]),s._v('"')]),s._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("==")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"master"')]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("then")]),s._v("\n\t"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("echo")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"'),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$RSYNC_USER")]),s._v(":"),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$RSYNC_PASSWORD")]),s._v('"')]),s._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v(" /hoj/rsyncd/rsyncd_master.passwd\n\t"),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("chmod")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("600")]),s._v(" /hoj/rsyncd/rsyncd_master.passwd\n\t"),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("rsync")]),s._v(" --daemon --config"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("/hoj/rsyncd/rsyncd.conf\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("else")]),s._v("\n\t"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("echo")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"'),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$RSYNC_PASSWORD")]),s._v('"')]),s._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v(" /hoj/rsyncd/rsyncd_slave.passwd\n\t"),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("chmod")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("600")]),s._v(" /hoj/rsyncd/rsyncd_slave.passwd\n\t"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("while")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("true")]),s._v("\n\t"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("do")]),s._v("\n\t\t"),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("rsync")]),s._v(" -avz --delete --progress --password-file"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("/hoj/rsyncd/rsyncd_slave.passwd "),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$RSYNC_USER")]),s._v("@"),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$RSYNC_MASTER_ADDR")]),s._v("::testcase /hoj/testcase "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">>")]),s._v(" /hoj/log/rsync_slave.log\n\t\t"),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("sleep")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("100")]),s._v("\n\t"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("done")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("fi")]),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("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br"),t("span",{staticClass:"line-number"},[s._v("12")]),t("br"),t("span",{staticClass:"line-number"},[s._v("13")]),t("br"),t("span",{staticClass:"line-number"},[s._v("14")]),t("br")])]),t("h4",{attrs:{id:"_3-dockerfile"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_3-dockerfile"}},[s._v("#")]),s._v(" 3. Dockerfile")]),s._v(" "),t("div",{staticClass:"language-dockerfile line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-dockerfile"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("FROM")]),s._v(" ubuntu"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("18.04\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("RUN")]),s._v(" apt"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("get update && apt"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("get "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("y install rsync\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("RUN")]),s._v(" mkdir "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("p /hoj/rsyncd\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("COPY")]),s._v(" run.sh /hoj/rsyncd/run.sh\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("COPY")]),s._v(" rsyncd.conf /hoj/rsyncd/rsyncd.conf\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("CMD")]),s._v(" /bin/bash /hoj/rsyncd/run.sh\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("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br")])])])}),[],!1,null,null,null);a.default=e.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[16],{361:function(s,a,t){"use strict";t.r(a);var n=t(41),e=Object(n.a)({},(function(){var s=this,a=s.$createElement,t=s._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[t("h1",{attrs:{id:"评测数据同步"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#评测数据同步"}},[s._v("#")]),s._v(" 评测数据同步")]),s._v(" "),t("h2",{attrs:{id:"一、常规部署"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#一、常规部署"}},[s._v("#")]),s._v(" 一、常规部署")]),s._v(" "),t("ol",[t("li",[t("p",[s._v("在主后台服务开启rsync实现服务增量同步,本HOJ使用子服务器主动拉取最新评测数据的功能(可选择主服务推的功能,但对主服务器的功耗较大)")])]),s._v(" "),t("li",[t("p",[s._v("首先在主服务器(运行后端服务)的服务器中配置,指令如下")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("vim")]),s._v(" /etc/rsyncd/rsyncd.conf "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 新建配置文件")]),s._v("\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 将以下内容写入的rsyncd.conf文件里面 然后保存退出")]),s._v("\nport "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("873")]),s._v("\nuid "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" root\ngid "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" root\nuse "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("chroot")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("yes")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("read")]),s._v(" only "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("yes")]),s._v("\nlog "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("file")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" /hoj/log/rsyncd.log\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("testcase"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\npath "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" /hoj/testcase/\nlist "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("yes")]),s._v("\nauth "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("users")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" hojrsync\nsecrets "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("file")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" /etc/rsyncd/rsyncd.passwd\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("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br"),t("span",{staticClass:"line-number"},[s._v("12")]),t("br")])]),t("p",[s._v("再新建密码配置文件")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("vim")]),s._v(" /etc/rsyncd/rsyncd.passwd\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 将以下内容写入rsyncd.passwd文件里面,冒号后面的密码可用自定义,然后保存退出。")]),s._v("\nhojrsync:123456\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("p",[s._v("修改密码配置文件的权限为600")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("chmod")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("600")]),s._v(" /etc/rsyncd/rsyncd.passwd\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("p",[s._v("然后使用命令,使用后台守护进程运行rsync")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("rsync")]),s._v(" --daemon --config"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("/etc/rsyncd/rsyncd.conf\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("p",[s._v("设置开启自启动")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("echo")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"/usr/bin/rsync --daemon --config=/etc/rsyncd/rsyncd.conf"')]),s._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">>")]),s._v(" /etc/rc.local\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])])]),s._v(" "),t("li",[t("p",[s._v("之后在运行JudgeServer判题服务的服务器上使用rsync每60秒同步一次指定文件夹的评测数据(同步周期可自己改)")]),s._v(" "),t("p",[s._v("新建密码配置文件,同时写入与主服务端的rsync一样的密码")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("vim")]),s._v(" /etc/rsyncd/rsyncd.passwd\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token number"}},[s._v("123456")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 保存退出")]),s._v("\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("p",[s._v("修改密码配置文件的权限为600")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("chmod")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("600")]),s._v(" /etc/rsyncd/rsyncd.passwd\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("p",[s._v("然后编写sh文件")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("vim")]),s._v(" /etc/rsyncd/rsyncd_slave.sh\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("p",[s._v("注意${ip}写自己主服务器的ip")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("while")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("true")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("do")]),s._v("\n \t"),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("rsync")]),s._v(" -avz --delete --progress --password-file"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("/etc/rsyncd/rsyncd.passwd hojrsync@"),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("${ip}")]),s._v("::testcase /hoj/testcase "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">>")]),s._v(" /hoj/log/rsync_slave.log\n \t"),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("sleep")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("60")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("done")]),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("p",[s._v("使用 nohup后台运行即可")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("nohup")]),s._v(" /etc/rsyncd/rsyncd_slave.sh "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("&")]),s._v("\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])])])]),s._v(" "),t("h2",{attrs:{id:"二、docker部署"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#二、docker部署"}},[s._v("#")]),s._v(" 二、docker部署")]),s._v(" "),t("h3",{attrs:{id:"前言"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#前言"}},[s._v("#")]),s._v(" 前言")]),s._v(" "),t("p",[s._v("直接下载部署项目,进入到当前文件夹执行打包命令")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("git")]),s._v(" clone https://gitee.com/himitzh0730/hoj-deploy.git "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("&&")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("cd")]),s._v(" hoj-deploy/src/rsync\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("p",[s._v("当前文件夹为打包"),t("code",[s._v("hoj-rsync")]),s._v("镜像的相关文件,将这些文件复制到同一个文件夹内,之后执行以下命令进行打包成镜像.")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[s._v("docker build -t hoj-rsync "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v(".")]),s._v("\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("p",[t("strong",[s._v("该服务用于测试用例数据在不同服务器之间的同步")])]),s._v(" "),t("p",[s._v("docker run启动")]),s._v(" "),t("ul",[t("li",[t("p",[s._v("主服务器(Backend所在服务器)")]),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 hoj-rsync "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-v ./hoj/testcase:/hoj/testcase:ro "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("RSYNC_MODE")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("master "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("RSYNC_USER")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("hojrsync "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("RSYNC_PASSWORD")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("hoj123456 "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-p "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("873")]),s._v(":873 "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n--restart"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("always "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\nhoj-rsync\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# registry.cn-shenzhen.aliyuncs.com/hcode/hoj_rsync:1.0")]),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("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br")])])]),s._v(" "),t("li",[t("p",[s._v("从服务器(Judgeserver所在的服务器)")]),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 hoj-rsync "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-v ./hoj/testcase:/hoj/testcase "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("RSYNC_MODE")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("slave "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("RSYNC_USER")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("hojrsync "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("RSYNC_PASSWORD")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("hoj123456 "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("RSYNC_MASTER_ADDR")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("master_server_ip "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-p "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("873")]),s._v(":873 "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n--restart"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("always "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\nhoj-rsync\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# registry.cn-shenzhen.aliyuncs.com/hcode/hoj_rsync:1.0")]),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("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br")])])])]),s._v(" "),t("p",[s._v("docker-compose启动")]),s._v(" "),t("ul",[t("li",[t("p",[s._v("主服务器(Backend所在服务器)")]),s._v(" "),t("div",{staticClass:"language-yaml line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-yaml"}},[t("code",[t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("version")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"3"')]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("services")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("hoj-rsync-master")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# image: registry.cn-shenzhen.aliyuncs.com/hcode/hoj_rsync:1.0")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("image")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" hoj"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("rsync\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("container_name")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" hoj"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("rsync"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("master\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("volumes")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" ./hoj/testcase"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("/hoj/testcase"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("ro\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("environment")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" RSYNC_MODE=master "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 当前为slave主服务")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" RSYNC_USER=hojrsync "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 请勿修改")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" RSYNC_PASSWORD=hoj123456 "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 请修改数据同步密码")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("ports")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"0.0.0.0:873:873"')]),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("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br"),t("span",{staticClass:"line-number"},[s._v("12")]),t("br"),t("span",{staticClass:"line-number"},[s._v("13")]),t("br"),t("span",{staticClass:"line-number"},[s._v("14")]),t("br")])])]),s._v(" "),t("li",[t("p",[s._v("从服务器(Judgeserver所在的服务器)")]),s._v(" "),t("div",{staticClass:"language-yaml line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-yaml"}},[t("code",[t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("version")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"3"')]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("services")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("hoj-rsync-slave")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# image: registry.cn-shenzhen.aliyuncs.com/hcode/hoj_rsync:1.0")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("image")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" hoj"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("rsync\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("container_name")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" hoj"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("rsync"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("slave\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("restart")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" always\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("volumes")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" ./judge/test_case"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("/hoj/testcase\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" ./judge/log"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("/hoj/log\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("environment")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" RSYNC_MODE=slave "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 当前为slave从服务")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" RSYNC_USER=hojrsync "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 请勿修改")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" RSYNC_PASSWORD=hoj123456 "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 与主服务器的rsync的密码一致")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" RSYNC_MASTER_ADDR=master_server_ip "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 主服务器ip")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("ports")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"0.0.0.0:873:873"')]),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("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br"),t("span",{staticClass:"line-number"},[s._v("12")]),t("br"),t("span",{staticClass:"line-number"},[s._v("13")]),t("br"),t("span",{staticClass:"line-number"},[s._v("14")]),t("br"),t("span",{staticClass:"line-number"},[s._v("15")]),t("br"),t("span",{staticClass:"line-number"},[s._v("16")]),t("br"),t("span",{staticClass:"line-number"},[s._v("17")]),t("br")])])])]),s._v(" "),t("h3",{attrs:{id:"文件介绍"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#文件介绍"}},[s._v("#")]),s._v(" 文件介绍")]),s._v(" "),t("h4",{attrs:{id:"_1-rsync-conf"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_1-rsync-conf"}},[s._v("#")]),s._v(" 1. rsync.conf")]),s._v(" "),t("p",[s._v("主服务器的rsync配置文件")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[s._v("port "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("873")]),s._v("\nuid "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" root\ngid "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" root\nuse "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("chroot")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("yes")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("read")]),s._v(" only "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("yes")]),s._v("\nlog "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("file")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" /hoj/log/rsyncd.log\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("testcase"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\npath "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" /hoj/testcase/\nlist "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("yes")]),s._v("\nauth "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("users")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" hojrsync\nsecrets "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("file")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" /hoj/rsyncd/rsyncd.passwd\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("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br")])]),t("h4",{attrs:{id:"_2-run-sh"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_2-run-sh"}},[s._v("#")]),s._v(" 2. run.sh")]),s._v(" "),t("p",[s._v("根据"),t("code",[s._v("$RSYNC_MODE")]),s._v("环境变量启动不同模式的rsync服务")]),s._v(" "),t("div",{staticClass:"language-bash line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token shebang important"}},[s._v("#!/usr/bin/bash")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("if")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"'),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$RSYNC_MODE")]),s._v('"')]),s._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("==")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"master"')]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("then")]),s._v("\n\t"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("echo")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"'),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$RSYNC_USER")]),s._v(":"),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$RSYNC_PASSWORD")]),s._v('"')]),s._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v(" /hoj/rsyncd/rsyncd_master.passwd\n\t"),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("chmod")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("600")]),s._v(" /hoj/rsyncd/rsyncd_master.passwd\n\t"),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("rsync")]),s._v(" --daemon --config"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("/hoj/rsyncd/rsyncd.conf\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("else")]),s._v("\n\t"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("echo")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"'),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$RSYNC_PASSWORD")]),s._v('"')]),s._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v(" /hoj/rsyncd/rsyncd_slave.passwd\n\t"),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("chmod")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("600")]),s._v(" /hoj/rsyncd/rsyncd_slave.passwd\n\t"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("while")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("true")]),s._v("\n\t"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("do")]),s._v("\n\t\t"),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("rsync")]),s._v(" -avz --delete --progress --password-file"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("/hoj/rsyncd/rsyncd_slave.passwd "),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$RSYNC_USER")]),s._v("@"),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$RSYNC_MASTER_ADDR")]),s._v("::testcase /hoj/testcase "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">>")]),s._v(" /hoj/log/rsync_slave.log\n\t\t"),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("sleep")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("100")]),s._v("\n\t"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("done")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("fi")]),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("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br"),t("span",{staticClass:"line-number"},[s._v("12")]),t("br"),t("span",{staticClass:"line-number"},[s._v("13")]),t("br"),t("span",{staticClass:"line-number"},[s._v("14")]),t("br")])]),t("h4",{attrs:{id:"_3-dockerfile"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_3-dockerfile"}},[s._v("#")]),s._v(" 3. Dockerfile")]),s._v(" "),t("div",{staticClass:"language-dockerfile line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-dockerfile"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("FROM")]),s._v(" ubuntu"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("18.04\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("RUN")]),s._v(" apt"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("get update && apt"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("get "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("y install rsync\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("RUN")]),s._v(" mkdir "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("p /hoj/rsyncd\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("COPY")]),s._v(" run.sh /hoj/rsyncd/run.sh\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("COPY")]),s._v(" rsyncd.conf /hoj/rsyncd/rsyncd.conf\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("CMD")]),s._v(" /bin/bash /hoj/rsyncd/run.sh\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("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br")])])])}),[],!1,null,null,null);a.default=e.exports}}]); \ No newline at end of file diff --git a/docs/docs/.vuepress/dist/assets/js/17.e6e16ee6.js b/docs/docs/.vuepress/dist/assets/js/17.c2e36571.js similarity index 78% rename from docs/docs/.vuepress/dist/assets/js/17.e6e16ee6.js rename to docs/docs/.vuepress/dist/assets/js/17.c2e36571.js index ad878b50..15719d39 100644 --- a/docs/docs/.vuepress/dist/assets/js/17.e6e16ee6.js +++ b/docs/docs/.vuepress/dist/assets/js/17.c2e36571.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[17],{360:function(t,s,i){"use strict";i.r(s);var e=i(41),n=Object(e.a)({},(function(){var t=this.$createElement,s=this._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[s("h1",{attrs:{id:"开发简介"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#开发简介"}},[this._v("#")]),this._v(" 开发简介")]),this._v(" "),s("ul",[s("li",[this._v("数据库表说明")]),this._v(" "),s("li",[this._v("其它待续.......")])])])}),[],!1,null,null,null);s.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[17],{363:function(t,s,i){"use strict";i.r(s);var e=i(41),n=Object(e.a)({},(function(){var t=this.$createElement,s=this._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[s("h1",{attrs:{id:"开发简介"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#开发简介"}},[this._v("#")]),this._v(" 开发简介")]),this._v(" "),s("ul",[s("li",[this._v("数据库表说明")]),this._v(" "),s("li",[this._v("其它待续.......")])])])}),[],!1,null,null,null);s.default=n.exports}}]); \ No newline at end of file diff --git a/docs/docs/.vuepress/dist/assets/js/18.e5a08b0f.js b/docs/docs/.vuepress/dist/assets/js/18.e9926aa4.js similarity index 99% rename from docs/docs/.vuepress/dist/assets/js/18.e5a08b0f.js rename to docs/docs/.vuepress/dist/assets/js/18.e9926aa4.js index 5d301d94..c3e4b3a6 100644 --- a/docs/docs/.vuepress/dist/assets/js/18.e5a08b0f.js +++ b/docs/docs/.vuepress/dist/assets/js/18.e9926aa4.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[18],{361:function(t,_,v){"use strict";v.r(_);var d=v(41),r=Object(d.a)({},(function(){var t=this,_=t.$createElement,v=t._self._c||_;return v("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[v("h1",{attrs:{id:"数据库说明"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#数据库说明"}},[t._v("#")]),t._v(" 数据库说明")]),t._v(" "),v("h2",{attrs:{id:"用户资料模块"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#用户资料模块"}},[t._v("#")]),t._v(" 用户资料模块")]),t._v(" "),v("p",[t._v("user_info表")]),t._v(" "),v("table",[v("thead",[v("tr",[v("th",[t._v("列名")]),t._v(" "),v("th",[t._v("实体属性类型")]),t._v(" "),v("th",[t._v("键")]),t._v(" "),v("th",[t._v("备注")])])]),t._v(" "),v("tbody",[v("tr",[v("td",[t._v("uuid")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td",[t._v("主键")]),t._v(" "),v("td",[t._v("uuid用户id")])]),t._v(" "),v("tr",[v("td",[t._v("username")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("登录账号")])]),t._v(" "),v("tr",[v("td",[t._v("password")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("登录密码")])]),t._v(" "),v("tr",[v("td",[t._v("nickname")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("用户昵称")])]),t._v(" "),v("tr",[v("td",[t._v("school")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("学校")])]),t._v(" "),v("tr",[v("td",[t._v("course")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("专业")])]),t._v(" "),v("tr",[v("td",[t._v("number")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("学号")])]),t._v(" "),v("tr",[v("td",[t._v("realname")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("真实名字")])]),t._v(" "),v("tr",[v("td",[t._v("email")]),t._v(" "),v("td",[t._v("Srting")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("邮箱")])]),t._v(" "),v("tr",[v("td",[t._v("avatar")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("头像图片地址")])]),t._v(" "),v("tr",[v("td",[t._v("signature")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("个性签名")])]),t._v(" "),v("tr",[v("td",[t._v("cf_name")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("codeforces的username")])]),t._v(" "),v("tr",[v("td",[t._v("status")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("0可用,1不可用")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_create")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("创建时间")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_modified")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("修改时间")])])])]),t._v(" "),v("p",[t._v("session表")]),t._v(" "),v("table",[v("thead",[v("tr",[v("th",[t._v("列名")]),t._v(" "),v("th",[t._v("实体属性类型")]),t._v(" "),v("th",[t._v("键")]),t._v(" "),v("th",[t._v("备注")])])]),t._v(" "),v("tbody",[v("tr",[v("td",[t._v("id")]),t._v(" "),v("td",[t._v("long")]),t._v(" "),v("td",[t._v("主键")]),t._v(" "),v("td",[t._v("auto_increment")])]),t._v(" "),v("tr",[v("td",[t._v("uid")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("用户id")])]),t._v(" "),v("tr",[v("td",[t._v("user_agent")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("访问的浏览器参数")])]),t._v(" "),v("tr",[v("td",[t._v("ip")]),t._v(" "),v("td",[t._v("Srting")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("访问所在的ip")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_create")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("创建时间")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_modified")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("修改时间")])])])]),t._v(" "),v("p",[t._v("role 角色表")]),t._v(" "),v("table",[v("thead",[v("tr",[v("th",[t._v("列名")]),t._v(" "),v("th",[t._v("实体属性类型")]),t._v(" "),v("th",[t._v("键")]),t._v(" "),v("th",[t._v("备注")])])]),t._v(" "),v("tbody",[v("tr",[v("td",[t._v("id")]),t._v(" "),v("td",[t._v("long")]),t._v(" "),v("td",[t._v("主键")]),t._v(" "),v("td",[t._v("auto_increment")])]),t._v(" "),v("tr",[v("td",[t._v("role")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("“admin”,”tourist”,“user”")])]),t._v(" "),v("tr",[v("td",[t._v("description")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("角色描述")])]),t._v(" "),v("tr",[v("td",[t._v("status")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("是否可用,0可用 1不可用")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_create")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("创建时间")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_modified")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("修改时间")])])])]),t._v(" "),v("p",[t._v("user_role表")]),t._v(" "),v("table",[v("thead",[v("tr",[v("th",[t._v("列名")]),t._v(" "),v("th",[t._v("实体属性类型")]),t._v(" "),v("th",[t._v("键")]),t._v(" "),v("th",[t._v("备注")])])]),t._v(" "),v("tbody",[v("tr",[v("td",[t._v("id")]),t._v(" "),v("td",[t._v("long")]),t._v(" "),v("td",[t._v("主键")]),t._v(" "),v("td",[t._v("auto_increment")])]),t._v(" "),v("tr",[v("td",[t._v("uid")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("用户id")])]),t._v(" "),v("tr",[v("td",[t._v("role_id")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("角色id")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_create")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("创建时间")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_modified")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("修改时间")])])])]),t._v(" "),v("p",[t._v("auth权限表")]),t._v(" "),v("table",[v("thead",[v("tr",[v("th",[t._v("列名")]),t._v(" "),v("th",[t._v("实体属性类型")]),t._v(" "),v("th",[t._v("键")]),t._v(" "),v("th",[t._v("备注")])])]),t._v(" "),v("tbody",[v("tr",[v("td",[t._v("id")]),t._v(" "),v("td",[t._v("long")]),t._v(" "),v("td",[t._v("主键")]),t._v(" "),v("td",[t._v("auto_increment")])]),t._v(" "),v("tr",[v("td",[t._v("name")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("权限名称,“superadmin”,”contest”,“admin”,”common” 普通用户默认为“common”")])]),t._v(" "),v("tr",[v("td",[t._v("permission")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("权限字符串,例如“contest:1001”,发布某场比赛。 “all”,”select”,”update”等等,")])]),t._v(" "),v("tr",[v("td",[t._v("status")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("0可用,1不可用")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_create")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("创建时间")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_modified")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("修改时间")])])])]),t._v(" "),v("p",[t._v("role_auth表")]),t._v(" "),v("table",[v("thead",[v("tr",[v("th",[t._v("列名")]),t._v(" "),v("th",[t._v("实体属性类型")]),t._v(" "),v("th",[t._v("键")]),t._v(" "),v("th",[t._v("备注")])])]),t._v(" "),v("tbody",[v("tr",[v("td",[t._v("id")]),t._v(" "),v("td",[t._v("long")]),t._v(" "),v("td",[t._v("主键")]),t._v(" "),v("td",[t._v("auto_increment")])]),t._v(" "),v("tr",[v("td",[t._v("role_id")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("角色id")])]),t._v(" "),v("tr",[v("td",[t._v("auth_id")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("权限id")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_create")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("创建时间")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_modified")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("修改时间")])])])]),t._v(" "),v("p",[t._v("user_record表 个人做题记录表")]),t._v(" "),v("table",[v("thead",[v("tr",[v("th",[t._v("列名")]),t._v(" "),v("th",[t._v("实体属性类型")]),t._v(" "),v("th",[t._v("键")]),t._v(" "),v("th",[t._v("备注")])])]),t._v(" "),v("tbody",[v("tr",[v("td",[t._v("id")]),t._v(" "),v("td",[t._v("long")]),t._v(" "),v("td",[t._v("primary key")]),t._v(" "),v("td",[t._v("auto_increment")])]),t._v(" "),v("tr",[v("td",[t._v("uid")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("用户id")])]),t._v(" "),v("tr",[v("td",[t._v("rating")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("Cf得分,未参加过默认为1500")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_create")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("创建时间")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_modified")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("修改时间")])])])]),t._v(" "),v("p",[t._v("user_acproblem表")]),t._v(" "),v("table",[v("thead",[v("tr",[v("th",[t._v("列名")]),t._v(" "),v("th",[t._v("实体属性类型")]),t._v(" "),v("th",[t._v("键")]),t._v(" "),v("th",[t._v("备注")])])]),t._v(" "),v("tbody",[v("tr",[v("td",[t._v("id")]),t._v(" "),v("td",[t._v("long")]),t._v(" "),v("td",[t._v("primary key")]),t._v(" "),v("td",[t._v("auto_increment")])]),t._v(" "),v("tr",[v("td",[t._v("uid")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("用户id")])]),t._v(" "),v("tr",[v("td",[t._v("pid")]),t._v(" "),v("td",[t._v("long")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("Ac的题目id")])]),t._v(" "),v("tr",[v("td",[t._v("subimit_id")]),t._v(" "),v("td",[t._v("long")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("提交的id")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_create")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("创建时间")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_modified")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("修改时间")])])])]),t._v(" "),v("h2",{attrs:{id:"题目详情模块"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#题目详情模块"}},[t._v("#")]),t._v(" 题目详情模块")]),t._v(" "),v("p",[t._v("problem表")]),t._v(" "),v("table",[v("thead",[v("tr",[v("th",[t._v("列名")]),t._v(" "),v("th",[t._v("实体属性类型")]),t._v(" "),v("th",[t._v("键")]),t._v(" "),v("th",[t._v("备注")])])]),t._v(" "),v("tbody",[v("tr",[v("td",[t._v("id")]),t._v(" "),v("td",[t._v("long")]),t._v(" "),v("td",[t._v("primary key")]),t._v(" "),v("td",[t._v("auto_increment 1000开始")])]),t._v(" "),v("tr",[v("td",[t._v("problem_id")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("题目展示id")])]),t._v(" "),v("tr",[v("td",[t._v("title")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("题目标题")])]),t._v(" "),v("tr",[v("td",[t._v("author")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("默认可为无")])]),t._v(" "),v("tr",[v("td",[t._v("type")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("题目类型 0为ACM,1为OI")])]),t._v(" "),v("tr",[v("td",[t._v("time_limit")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("时间限制(ms),默认为c/c++限制,其它语言为2倍")])]),t._v(" "),v("tr",[v("td",[t._v("memory_limit")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("空间限制(mb),默认为c/c++限制,其它语言为2倍")])]),t._v(" "),v("tr",[v("td",[t._v("stack_limit")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("栈限制(mb),默认为128")])]),t._v(" "),v("tr",[v("td",[t._v("description")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("内容描述")])]),t._v(" "),v("tr",[v("td",[t._v("input")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("输入描述")])]),t._v(" "),v("tr",[v("td",[t._v("output")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("输出描述")])]),t._v(" "),v("tr",[v("td",[t._v("examples")]),t._v(" "),v("td",[t._v("Srting")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("题面输入输出样例,不纳入评测数据")])]),t._v(" "),v("tr",[v("td",[t._v("source")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("题目来源(比赛id),默认为hoj,可能为爬虫vj")])]),t._v(" "),v("tr",[v("td",[t._v("difficulty")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("题目难度,0简单,1中等,2困难")])]),t._v(" "),v("tr",[v("td",[t._v("hint")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("备注 提醒")])]),t._v(" "),v("tr",[v("td",[t._v("auth")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("默认为1公开,2为私有,3为比赛中。")])]),t._v(" "),v("tr",[v("td",[t._v("io_score")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("当该题目为io题目时的分数 默认为100")])]),t._v(" "),v("tr",[v("td",[t._v("code_share")]),t._v(" "),v("td",[t._v("boolean")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("该题目对应的相关提交代码,用户是否可用分享")])]),t._v(" "),v("tr",[v("td",[t._v("spj_code")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("特判程序代码 空代表非特判")])]),t._v(" "),v("tr",[v("td",[t._v("spj_language")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("特判程序的语言")])]),t._v(" "),v("tr",[v("td",[t._v("is_remove_end_blank")]),t._v(" "),v("td",[t._v("boolean")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("是否默认去除用户代码的文末空格")])]),t._v(" "),v("tr",[v("td",[t._v("open_case_result")]),t._v(" "),v("td",[t._v("boolean")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("是否默认开启该题目的测试样例结果查看")])]),t._v(" "),v("tr",[v("td",[t._v("caseVersion")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("题目测试数据的版本号")])]),t._v(" "),v("tr",[v("td",[t._v("is_upload_case")]),t._v(" "),v("td",[t._v("boolean")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("是否是上传zip评测数据的")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_create")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("创建时间")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_modified")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("修改时间")])])])]),t._v(" "),v("p",[t._v("problem_case表")]),t._v(" "),v("table",[v("thead",[v("tr",[v("th",[t._v("列名")]),t._v(" "),v("th",[t._v("实体属性类型")]),t._v(" "),v("th",[t._v("键")]),t._v(" "),v("th",[t._v("备注")])])]),t._v(" "),v("tbody",[v("tr",[v("td",[t._v("id")]),t._v(" "),v("td",[t._v("long")]),t._v(" "),v("td",[t._v("primary key")]),t._v(" "),v("td",[t._v("auto_increment")])]),t._v(" "),v("tr",[v("td",[t._v("pid")]),t._v(" "),v("td",[t._v("long")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("题目id")])]),t._v(" "),v("tr",[v("td",[t._v("input")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("测试样例的输入")])]),t._v(" "),v("tr",[v("td",[t._v("output")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("测试样例的输出")])]),t._v(" "),v("tr",[v("td",[t._v("status")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("状态0可用,1不可用")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_create")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("创建时间")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_modified")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("修改时间")])])])]),t._v(" "),v("p",[t._v("tag表 题目表的标签")]),t._v(" "),v("table",[v("thead",[v("tr",[v("th",[t._v("列名")]),t._v(" "),v("th",[t._v("实体属性类型")]),t._v(" "),v("th",[t._v("键")]),t._v(" "),v("th",[t._v("备注")])])]),t._v(" "),v("tbody",[v("tr",[v("td",[t._v("id")]),t._v(" "),v("td",[t._v("long")]),t._v(" "),v("td",[t._v("主键")]),t._v(" "),v("td",[t._v("auto_increment")])]),t._v(" "),v("tr",[v("td",[t._v("name")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("标签名字")])]),t._v(" "),v("tr",[v("td",[t._v("color")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("标签颜色")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_create")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("创建时间")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_modified")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("修改时间")])])])]),t._v(" "),v("p",[t._v("problem_tag表")]),t._v(" "),v("table",[v("thead",[v("tr",[v("th",[t._v("列名")]),t._v(" "),v("th",[t._v("实体属性类型")]),t._v(" "),v("th",[t._v("键")]),t._v(" "),v("th",[t._v("备注")])])]),t._v(" "),v("tbody",[v("tr",[v("td",[t._v("id")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("主键id")])]),t._v(" "),v("tr",[v("td",[t._v("tid")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("标签id")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_create")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("创建时间")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_modified")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("修改时间")])])])]),t._v(" "),v("p",[t._v("language表")]),t._v(" "),v("table",[v("thead",[v("tr",[v("th",[t._v("列名")]),t._v(" "),v("th",[t._v("实体属性类型")]),t._v(" "),v("th",[t._v("键")]),t._v(" "),v("th",[t._v("备注")])])]),t._v(" "),v("tbody",[v("tr",[v("td",[t._v("id")]),t._v(" "),v("td",[t._v("long")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("主键id")])]),t._v(" "),v("tr",[v("td",[t._v("content_type")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("语言类型")])]),t._v(" "),v("tr",[v("td",[t._v("description")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("语言描述")])]),t._v(" "),v("tr",[v("td",[t._v("name")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("语言名字")])]),t._v(" "),v("tr",[v("td",[t._v("compile_command")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("编译指令")])]),t._v(" "),v("tr",[v("td",[t._v("template")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("A+B题目模板")])]),t._v(" "),v("tr",[v("td",[t._v("code_template")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("语言对应的代码模板")])]),t._v(" "),v("tr",[v("td",[t._v("is_spj")]),t._v(" "),v("td",[t._v("boolean")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("是否可作为特殊判题的一种语言")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_create")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("创建时间")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_modified")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("修改时间")])])])]),t._v(" "),v("p",[t._v("code_template表")]),t._v(" "),v("table",[v("thead",[v("tr",[v("th",[t._v("列名")]),t._v(" "),v("th",[t._v("实体属性类型")]),t._v(" "),v("th",[t._v("键")]),t._v(" "),v("th",[t._v("备注")])])]),t._v(" "),v("tbody",[v("tr",[v("td",[t._v("id")]),t._v(" "),v("td",[t._v("long")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("主键id")])]),t._v(" "),v("tr",[v("td",[t._v("pid")]),t._v(" "),v("td",[t._v("long")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("题目id")])]),t._v(" "),v("tr",[v("td",[t._v("lid")]),t._v(" "),v("td",[t._v("long")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("语言id")])]),t._v(" "),v("tr",[v("td",[t._v("code")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("代码模板")])]),t._v(" "),v("tr",[v("td",[t._v("status")]),t._v(" "),v("td",[t._v("boolean")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("是否启用")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_create")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("修改时间")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_modified")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("修改时间")])])])]),t._v(" "),v("h2",{attrs:{id:"提交评测模块"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#提交评测模块"}},[t._v("#")]),t._v(" 提交评测模块")]),t._v(" "),v("blockquote",[v("p",[t._v("判题结果status")])]),t._v(" "),v("p",[t._v("未提交:STATUS_NOT_SUBMITTED = -10")]),t._v(" "),v("p",[t._v("提交中:STATUS_SUBMITTING = 9")]),t._v(" "),v("p",[t._v("排队中:STATUS_PENDING = 6")]),t._v(" "),v("p",[t._v("评测中:STATUS_JUDGING = 7")]),t._v(" "),v("p",[t._v("编译错误:STATUS_COMPILE_ERROR = -2")]),t._v(" "),v("p",[t._v("输出格式错误:STATUS_PRESENTATION_ERROR = -3")]),t._v(" "),v("p",[t._v("答案错误:STATUS__WRONG_ANSWER = -1")]),t._v(" "),v("p",[t._v("评测通过:STATUS_ACCEPTED = 0")]),t._v(" "),v("p",[t._v("cpu时间超限:STATUS__CPU_TIME_LIMIT_EXCEEDED = 1")]),t._v(" "),v("p",[t._v("真实时间超限:STATUS__REAL_TIME_LIMIT_EXCEEDED = 2")]),t._v(" "),v("p",[t._v("空间超限:STATUS__MEMORY_LIMIT_EXCEEDED = 3")]),t._v(" "),v("p",[t._v("运行错误:STATUS__RUNTIME_ERROR = 4")]),t._v(" "),v("p",[t._v("系统错误:STATUS__SYSTEM_ERROR = 5")]),t._v(" "),v("p",[t._v("OI评测部分通过:STATUS_PARTIAL_ACCEPTED = 8")]),t._v(" "),v("p",[t._v("提交失败:STATUS_SUBMITTED_FAILED= 10")]),t._v(" "),v("p",[t._v("judge表")]),t._v(" "),v("table",[v("thead",[v("tr",[v("th",[t._v("列名")]),t._v(" "),v("th",[t._v("实体属性类型")]),t._v(" "),v("th",[t._v("键")]),t._v(" "),v("th",[t._v("备注")])])]),t._v(" "),v("tbody",[v("tr",[v("td",[t._v("submit_id")]),t._v(" "),v("td",[t._v("long")]),t._v(" "),v("td",[t._v("primary key")]),t._v(" "),v("td",[t._v("auto_increment")])]),t._v(" "),v("tr",[v("td",[t._v("display_pid")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("题目展示id")])]),t._v(" "),v("tr",[v("td",[t._v("pid")]),t._v(" "),v("td",[t._v("long")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("题目id")])]),t._v(" "),v("tr",[v("td",[t._v("uid")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("提交用户的id")])]),t._v(" "),v("tr",[v("td",[t._v("username")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("用户名")])]),t._v(" "),v("tr",[v("td",[t._v("submit_time")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("提交时间")])]),t._v(" "),v("tr",[v("td",[t._v("status")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("判题结果")])]),t._v(" "),v("tr",[v("td",[t._v("share")]),t._v(" "),v("td",[t._v("Boolean")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("代码是否分享")])]),t._v(" "),v("tr",[v("td",[t._v("error_message")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("错误提醒(编译错误,或者vj提醒)")])]),t._v(" "),v("tr",[v("td",[t._v("time")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("运行时间")])]),t._v(" "),v("tr",[v("td",[t._v("memory")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("所耗内存")])]),t._v(" "),v("tr",[v("td",[t._v("length")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("代码长度")])]),t._v(" "),v("tr",[v("td",[t._v("code")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("代码")])]),t._v(" "),v("tr",[v("td",[t._v("language")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("代码语言")])]),t._v(" "),v("tr",[v("td",[t._v("cpid")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("比赛中的题目编号id")])]),t._v(" "),v("tr",[v("td",[t._v("judger")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("判题机ip")])]),t._v(" "),v("tr",[v("td",[t._v("ip")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("提交者ip")])]),t._v(" "),v("tr",[v("td",[t._v("cid")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("题目来源的比赛id,默认为0")])]),t._v(" "),v("tr",[v("td",[t._v("version")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("乐观锁")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_create")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("创建时间")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_modified")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("修改时间")])])])]),t._v(" "),v("p",[t._v("jugdeCase表 评测单个样例结果表")]),t._v(" "),v("table",[v("thead",[v("tr",[v("th",[t._v("列名")]),t._v(" "),v("th",[t._v("实体属性类型")]),t._v(" "),v("th",[t._v("键")]),t._v(" "),v("th",[t._v("备注")])])]),t._v(" "),v("tbody",[v("tr",[v("td",[t._v("submit_id")]),t._v(" "),v("td",[t._v("long")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("提交id")])]),t._v(" "),v("tr",[v("td",[t._v("problemId")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("题目id")])]),t._v(" "),v("tr",[v("td",[t._v("userId")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("提交用户的id")])]),t._v(" "),v("tr",[v("td",[t._v("Status")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("单个样例评测结果")])]),t._v(" "),v("tr",[v("td",[t._v("time")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("运行时间")])]),t._v(" "),v("tr",[v("td",[t._v("memory")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("运行内存")])]),t._v(" "),v("tr",[v("td",[t._v("case_id")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("测试样例id")])]),t._v(" "),v("tr",[v("td",[t._v("input_data")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("样例输入,比赛不可看")])]),t._v(" "),v("tr",[v("td",[t._v("Output_data")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("样例输出,比赛不可看")])]),t._v(" "),v("tr",[v("td",[t._v("user_output")]),t._v(" "),v("td",[t._v("Srting")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("用户样例输出,比赛不可看")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_create")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("创建时间")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_modified")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("修改时间")])])])]),t._v(" "),v("h2",{attrs:{id:"比赛模块"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#比赛模块"}},[t._v("#")]),t._v(" 比赛模块")]),t._v(" "),v("p",[t._v("更新比赛状态的存储过程")]),t._v(" "),v("div",{staticClass:"language-sql line-numbers-mode"},[v("pre",{pre:!0,attrs:{class:"language-sql"}},[v("code",[v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("DELIMITER")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token operator"}},[t._v("|")]),t._v("\n\n"),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("DROP")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("PROCEDURE")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("IF")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("EXISTS")]),t._v(" contest_status "),v("span",{pre:!0,attrs:{class:"token operator"}},[t._v("|")]),t._v("\n"),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("CREATE")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("PROCEDURE")]),t._v(" contest_status"),v("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),v("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n "),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("BEGIN")]),t._v("\n "),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("UPDATE")]),t._v(" contest \n "),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("SET")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("STATUS")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n "),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("CASE")]),t._v(" \n "),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("WHEN")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token function"}},[t._v("NOW")]),v("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),v("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v(" start_time "),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("THEN")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),v("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" \n "),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("WHEN")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token function"}},[t._v("NOW")]),v("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),v("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">=")]),t._v(" start_time "),v("span",{pre:!0,attrs:{class:"token operator"}},[t._v("AND")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token function"}},[t._v("NOW")]),v("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),v("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),v("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("end_time "),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("THEN")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n "),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("WHEN")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token function"}},[t._v("NOW")]),v("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),v("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">=")]),t._v(" end_time "),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("THEN")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v("\n "),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("END")]),v("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),v("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("END")]),t._v("\n"),v("span",{pre:!0,attrs:{class:"token operator"}},[t._v("|")]),t._v("\n\n")])]),t._v(" "),v("div",{staticClass:"line-numbers-wrapper"},[v("span",{staticClass:"line-number"},[t._v("1")]),v("br"),v("span",{staticClass:"line-number"},[t._v("2")]),v("br"),v("span",{staticClass:"line-number"},[t._v("3")]),v("br"),v("span",{staticClass:"line-number"},[t._v("4")]),v("br"),v("span",{staticClass:"line-number"},[t._v("5")]),v("br"),v("span",{staticClass:"line-number"},[t._v("6")]),v("br"),v("span",{staticClass:"line-number"},[t._v("7")]),v("br"),v("span",{staticClass:"line-number"},[t._v("8")]),v("br"),v("span",{staticClass:"line-number"},[t._v("9")]),v("br"),v("span",{staticClass:"line-number"},[t._v("10")]),v("br"),v("span",{staticClass:"line-number"},[t._v("11")]),v("br"),v("span",{staticClass:"line-number"},[t._v("12")]),v("br"),v("span",{staticClass:"line-number"},[t._v("13")]),v("br"),v("span",{staticClass:"line-number"},[t._v("14")]),v("br"),v("span",{staticClass:"line-number"},[t._v("15")]),v("br"),v("span",{staticClass:"line-number"},[t._v("16")]),v("br")])]),v("p",[t._v("创建插入时的触发器")]),t._v(" "),v("div",{staticClass:"language-sql line-numbers-mode"},[v("pre",{pre:!0,attrs:{class:"language-sql"}},[v("code",[v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("DROP")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("TRIGGER")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("IF")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("EXISTS")]),t._v(" contest_trigger"),v("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("DELIMITER")]),t._v(" $$\n"),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("CREATE")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("TRIGGER")]),t._v(" contest_trigger\nBEFORE "),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("INSERT")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("ON")]),t._v(" contest "),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("FOR EACH ROW")]),t._v("\n"),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("BEGIN")]),t._v("\n"),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("SET")]),t._v(" new"),v("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("status")]),v("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),v("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n\t"),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("CASE")]),t._v(" \n\t "),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("WHEN")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token function"}},[t._v("NOW")]),v("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),v("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v(" new"),v("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("start_time "),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("THEN")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),v("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" \n\t "),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("WHEN")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token function"}},[t._v("NOW")]),v("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),v("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">=")]),t._v(" new"),v("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("start_time "),v("span",{pre:!0,attrs:{class:"token operator"}},[t._v("AND")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token function"}},[t._v("NOW")]),v("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),v("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),v("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("new"),v("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("end_time "),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("THEN")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n\t "),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("WHEN")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token function"}},[t._v("NOW")]),v("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),v("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">=")]),t._v(" new"),v("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("end_time "),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("THEN")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v("\n\t"),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("END")]),v("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),v("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("END")]),t._v("$$\n"),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("DELIMITER")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])]),t._v(" "),v("div",{staticClass:"line-numbers-wrapper"},[v("span",{staticClass:"line-number"},[t._v("1")]),v("br"),v("span",{staticClass:"line-number"},[t._v("2")]),v("br"),v("span",{staticClass:"line-number"},[t._v("3")]),v("br"),v("span",{staticClass:"line-number"},[t._v("4")]),v("br"),v("span",{staticClass:"line-number"},[t._v("5")]),v("br"),v("span",{staticClass:"line-number"},[t._v("6")]),v("br"),v("span",{staticClass:"line-number"},[t._v("7")]),v("br"),v("span",{staticClass:"line-number"},[t._v("8")]),v("br"),v("span",{staticClass:"line-number"},[t._v("9")]),v("br"),v("span",{staticClass:"line-number"},[t._v("10")]),v("br"),v("span",{staticClass:"line-number"},[t._v("11")]),v("br"),v("span",{staticClass:"line-number"},[t._v("12")]),v("br"),v("span",{staticClass:"line-number"},[t._v("13")]),v("br"),v("span",{staticClass:"line-number"},[t._v("14")]),v("br")])]),v("p",[t._v("设置定时器")]),t._v(" "),v("div",{staticClass:"language-sql line-numbers-mode"},[v("pre",{pre:!0,attrs:{class:"language-sql"}},[v("code",[v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("SET")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("GLOBAL")]),t._v(" event_scheduler "),v("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),v("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// 开启定时器")]),t._v("\n"),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("CREATE")]),t._v(" EVENT "),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("IF")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token operator"}},[t._v("NOT")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("EXISTS")]),t._v(" contest_event\n\n"),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("ON")]),t._v(" SCHEDULE EVERY "),v("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("SECOND")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// 每秒执行一次")]),t._v("\n\n"),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("ON")]),t._v(" COMPLETION PRESERVE \n\n"),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("DO")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("CALL")]),t._v(" contest_status"),v("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),v("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),v("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// 调用存储过程")]),t._v("\n")])]),t._v(" "),v("div",{staticClass:"line-numbers-wrapper"},[v("span",{staticClass:"line-number"},[t._v("1")]),v("br"),v("span",{staticClass:"line-number"},[t._v("2")]),v("br"),v("span",{staticClass:"line-number"},[t._v("3")]),v("br"),v("span",{staticClass:"line-number"},[t._v("4")]),v("br"),v("span",{staticClass:"line-number"},[t._v("5")]),v("br"),v("span",{staticClass:"line-number"},[t._v("6")]),v("br"),v("span",{staticClass:"line-number"},[t._v("7")]),v("br"),v("span",{staticClass:"line-number"},[t._v("8")]),v("br")])]),v("p",[t._v("开启或关闭定时器")]),t._v(" "),v("div",{staticClass:"language-sql line-numbers-mode"},[v("pre",{pre:!0,attrs:{class:"language-sql"}},[v("code",[v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("ALTER")]),t._v(" EVENT contest_event "),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("ON")]),t._v(" COMPLETION PRESERVE "),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("ENABLE")]),v("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token comment"}},[t._v("-- 开启事件")]),t._v("\n"),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("ALTER")]),t._v(" EVENT contest_event "),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("ON")]),t._v(" COMPLETION PRESERVE "),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("DISABLE")]),v("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token comment"}},[t._v("-- 关闭事件")]),t._v("\n")])]),t._v(" "),v("div",{staticClass:"line-numbers-wrapper"},[v("span",{staticClass:"line-number"},[t._v("1")]),v("br"),v("span",{staticClass:"line-number"},[t._v("2")]),v("br")])]),v("p",[t._v("contest表")]),t._v(" "),v("table",[v("thead",[v("tr",[v("th",[t._v("列名")]),t._v(" "),v("th",[t._v("实体属性类型")]),t._v(" "),v("th",[t._v("键")]),t._v(" "),v("th",[t._v("备注")])])]),t._v(" "),v("tbody",[v("tr",[v("td",[t._v("id")]),t._v(" "),v("td",[t._v("long")]),t._v(" "),v("td",[t._v("主键")]),t._v(" "),v("td",[t._v("auto_increment 1000起步")])]),t._v(" "),v("tr",[v("td",[t._v("uid")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("创建者id")])]),t._v(" "),v("tr",[v("td",[t._v("author")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("比赛创建者的用户名")])]),t._v(" "),v("tr",[v("td",[t._v("title")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("比赛标题")])]),t._v(" "),v("tr",[v("td",[t._v("type")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("Acm赛制或者Rating")])]),t._v(" "),v("tr",[v("td",[t._v("source")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("比赛来源,原创为0,克隆赛为比赛id")])]),t._v(" "),v("tr",[v("td",[t._v("auth")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("0为公开赛,1为私有赛(有密码),3为保护赛(有密码)。")])]),t._v(" "),v("tr",[v("td",[t._v("pwd")]),t._v(" "),v("td",[t._v("string")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("比赛密码")])]),t._v(" "),v("tr",[v("td",[t._v("start_time")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("开始时间")])]),t._v(" "),v("tr",[v("td",[t._v("end_time")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("结束时间")])]),t._v(" "),v("tr",[v("td",[t._v("duration")]),t._v(" "),v("td",[t._v("long")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("比赛时长(s)")])]),t._v(" "),v("tr",[v("td",[t._v("description")]),t._v(" "),v("td",[t._v("Srting")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("比赛说明")])]),t._v(" "),v("tr",[v("td",[t._v("seal_rank")]),t._v(" "),v("td",[t._v("boolean")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("是否开启封榜")])]),t._v(" "),v("tr",[v("td",[t._v("seal_rank_time")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("封榜起始时间,一直到比赛结束,不刷新榜单。")])]),t._v(" "),v("tr",[v("td",[t._v("status")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("-1为未开始,0为进行中,1为已结束")])]),t._v(" "),v("tr",[v("td",[t._v("visible")]),t._v(" "),v("td",[t._v("boolean")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("是否可见")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_create")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("创建时间")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_modified")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("修改时间")])])])]),t._v(" "),v("p",[t._v("contest_problem表")]),t._v(" "),v("table",[v("thead",[v("tr",[v("th",[t._v("列名")]),t._v(" "),v("th",[t._v("实体属性类型")]),t._v(" "),v("th",[t._v("键")]),t._v(" "),v("th",[t._v("备注")])])]),t._v(" "),v("tbody",[v("tr",[v("td",[t._v("id")]),t._v(" "),v("td",[t._v("long")]),t._v(" "),v("td",[t._v("主键")]),t._v(" "),v("td",[t._v("auto_increment")])]),t._v(" "),v("tr",[v("td",[t._v("display_id")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("展示的id")])]),t._v(" "),v("tr",[v("td",[t._v("cid")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("比赛id")])]),t._v(" "),v("tr",[v("td",[t._v("pid")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("题目id")])]),t._v(" "),v("tr",[v("td",[t._v("cp_name")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("用于当场比赛的题目标题")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_create")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("创建时间")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_modified")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("修改时间")])])])]),t._v(" "),v("p",[t._v("contest_register表 比赛报名表")]),t._v(" "),v("table",[v("thead",[v("tr",[v("th",[t._v("列名")]),t._v(" "),v("th",[t._v("实体属性类型")]),t._v(" "),v("th",[t._v("键")]),t._v(" "),v("th",[t._v("备注")])])]),t._v(" "),v("tbody",[v("tr",[v("td",[t._v("id")]),t._v(" "),v("td",[t._v("long")]),t._v(" "),v("td",[t._v("主键")]),t._v(" "),v("td",[t._v("auto_increment")])]),t._v(" "),v("tr",[v("td",[t._v("cid")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("比赛id")])]),t._v(" "),v("tr",[v("td",[t._v("uid")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("用户id")])]),t._v(" "),v("tr",[v("td",[t._v("Status")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("默认为0表示正常,1为失效。")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_create")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("创建时间")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_modified")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("修改时间")])])])]),t._v(" "),v("p",[t._v("contest_score表 rating赛制中获得的分数更改记录表")]),t._v(" "),v("table",[v("thead",[v("tr",[v("th",[t._v("列名")]),t._v(" "),v("th",[t._v("实体属性类型")]),t._v(" "),v("th",[t._v("键")]),t._v(" "),v("th",[t._v("备注")])])]),t._v(" "),v("tbody",[v("tr",[v("td",[t._v("id")]),t._v(" "),v("td",[t._v("long")]),t._v(" "),v("td",[t._v("主键")]),t._v(" "),v("td",[t._v("auto_increment")])]),t._v(" "),v("tr",[v("td",[t._v("cid")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("比赛id")])]),t._v(" "),v("tr",[v("td",[t._v("last")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("比赛前的score得分")])]),t._v(" "),v("tr",[v("td",[t._v("change")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("Score比分变化")])]),t._v(" "),v("tr",[v("td",[t._v("now")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("现在的score")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_create")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("创建时间")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_modified")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("修改时间")])])])]),t._v(" "),v("p",[t._v("contest_record表 比赛记录表")]),t._v(" "),v("table",[v("thead",[v("tr",[v("th",[t._v("列名")]),t._v(" "),v("th",[t._v("实体属性类型")]),t._v(" "),v("th",[t._v("键")]),t._v(" "),v("th",[t._v("备注")])])]),t._v(" "),v("tbody",[v("tr",[v("td",[t._v("id")]),t._v(" "),v("td",[t._v("long")]),t._v(" "),v("td",[t._v("主键")]),t._v(" "),v("td",[t._v("auto_increment")])]),t._v(" "),v("tr",[v("td",[t._v("cid")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("比赛id")])]),t._v(" "),v("tr",[v("td",[t._v("uid")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("用户id")])]),t._v(" "),v("tr",[v("td",[t._v("pid")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("题目id")])]),t._v(" "),v("tr",[v("td",[t._v("cpid")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("比赛中的题目id")])]),t._v(" "),v("tr",[v("td",[t._v("submit_id")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("提交id,用于可重判")])]),t._v(" "),v("tr",[v("td",[t._v("display_id")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("比赛展示的id")])]),t._v(" "),v("tr",[v("td",[t._v("username")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("用户名")])]),t._v(" "),v("tr",[v("td",[t._v("realname")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("真实姓名")])]),t._v(" "),v("tr",[v("td",[t._v("status")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("提交结果,0表示未AC通过不罚时,1表示AC通过,-1为未AC通过算罚时")])]),t._v(" "),v("tr",[v("td",[t._v("time")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("提交时间,为提交时间减去比赛时间,时间戳")])]),t._v(" "),v("tr",[v("td",[t._v("score")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("OI比赛得分")])]),t._v(" "),v("tr",[v("td",[t._v("first_blood")]),t._v(" "),v("td",[t._v("Boolean")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("是否为一血AC")])]),t._v(" "),v("tr",[v("td",[t._v("checked")]),t._v(" "),v("td",[t._v("Boolean")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("AC是否已校验")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_create")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("创建时间")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_modified")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("修改时间")])])])]),t._v(" "),v("p",[t._v("announcement表")]),t._v(" "),v("table",[v("thead",[v("tr",[v("th",[t._v("列名")]),t._v(" "),v("th",[t._v("实体属性类型")]),t._v(" "),v("th",[t._v("键")]),t._v(" "),v("th",[t._v("备注")])])]),t._v(" "),v("tbody",[v("tr",[v("td",[t._v("id")]),t._v(" "),v("td",[t._v("long")]),t._v(" "),v("td",[t._v("主键")]),t._v(" "),v("td",[t._v("auto_increment")])]),t._v(" "),v("tr",[v("td",[t._v("title")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("公告标题")])]),t._v(" "),v("tr",[v("td",[t._v("content")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("公告内容")])]),t._v(" "),v("tr",[v("td",[t._v("uid")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("发布者id(必须为比赛创建者或者超级管理员才能)")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_create")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("创建时间")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_modified")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("修改时间")])])])]),t._v(" "),v("p",[t._v("contest_announcement表 比赛时的通知表")]),t._v(" "),v("table",[v("thead",[v("tr",[v("th",[t._v("列名")]),t._v(" "),v("th",[t._v("实体属性类型")]),t._v(" "),v("th",[t._v("键")]),t._v(" "),v("th",[t._v("备注")])])]),t._v(" "),v("tbody",[v("tr",[v("td",[t._v("id")]),t._v(" "),v("td",[t._v("long")]),t._v(" "),v("td",[t._v("主键")]),t._v(" "),v("td",[t._v("auto_increment")])]),t._v(" "),v("tr",[v("td",[t._v("aid")]),t._v(" "),v("td",[t._v("long")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("公告id")])]),t._v(" "),v("tr",[v("td",[t._v("cid")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("比赛id")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_create")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("创建时间")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_modified")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("修改时间")])])])]),t._v(" "),v("p",[t._v("contest_explanation表 赛后题解表**(未使用)**")]),t._v(" "),v("table",[v("thead",[v("tr",[v("th",[t._v("列名")]),t._v(" "),v("th",[t._v("实体属性类型")]),t._v(" "),v("th",[t._v("键")]),t._v(" "),v("th",[t._v("备注")])])]),t._v(" "),v("tbody",[v("tr",[v("td",[t._v("id")]),t._v(" "),v("td",[t._v("long")]),t._v(" "),v("td",[t._v("主键")]),t._v(" "),v("td",[t._v("auto_increment")])]),t._v(" "),v("tr",[v("td",[t._v("cid")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("比赛id")])]),t._v(" "),v("tr",[v("td",[t._v("content")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("内容(支持markdown)")])]),t._v(" "),v("tr",[v("td",[t._v("uid")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("发布者(必须为比赛创建者或者超级管理员才能)")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_create")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("创建时间")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_modified")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("修改时间")])])])]),t._v(" "),v("h2",{attrs:{id:"讨论模块"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#讨论模块"}},[t._v("#")]),t._v(" 讨论模块")]),t._v(" "),v("blockquote",[v("p",[t._v("包括题目讨论区,公共讨论区,比赛评论")])]),t._v(" "),v("p",[t._v("category表")]),t._v(" "),v("table",[v("thead",[v("tr",[v("th",[t._v("列名")]),t._v(" "),v("th",[t._v("实体属性类型")]),t._v(" "),v("th",[t._v("键")]),t._v(" "),v("th",[t._v("备注")])])]),t._v(" "),v("tbody",[v("tr",[v("td",[t._v("id")]),t._v(" "),v("td",[t._v("long")]),t._v(" "),v("td",[t._v("主键")]),t._v(" "),v("td",[t._v("auto_increment")])]),t._v(" "),v("tr",[v("td",[t._v("name")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("分类名字")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_create")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("创建时间")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_modified")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("修改时间")])])])]),t._v(" "),v("p",[t._v("discussion表")]),t._v(" "),v("table",[v("thead",[v("tr",[v("th",[t._v("列名")]),t._v(" "),v("th",[t._v("实体属性类型")]),t._v(" "),v("th",[t._v("键")]),t._v(" "),v("th",[t._v("备注")])])]),t._v(" "),v("tbody",[v("tr",[v("td",[t._v("id")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td",[t._v("主键")]),t._v(" "),v("td",[t._v("auto_increment")])]),t._v(" "),v("tr",[v("td",[t._v("category_id")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("分类id")])]),t._v(" "),v("tr",[v("td",[t._v("title")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("讨论标题")])]),t._v(" "),v("tr",[v("td",[t._v("content")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("讨论详情")])]),t._v(" "),v("tr",[v("td",[t._v("description")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("讨论描述")])]),t._v(" "),v("tr",[v("td",[t._v("pid")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("引用的题目id,默认未null则不引用")])]),t._v(" "),v("tr",[v("td",[t._v("uid")]),t._v(" "),v("td",[t._v("iString")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("发布讨论的用户id")])]),t._v(" "),v("tr",[v("td",[t._v("author")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("发布讨论的用户名")])]),t._v(" "),v("tr",[v("td",[t._v("avatar")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("发布讨论的用户头像地址")])]),t._v(" "),v("tr",[v("td",[t._v("role")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("发布讨论的用户角色")])]),t._v(" "),v("tr",[v("td",[t._v("view_num")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("浏览数量")])]),t._v(" "),v("tr",[v("td",[t._v("like_num")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("点赞数量")])]),t._v(" "),v("tr",[v("td",[t._v("top_priority")]),t._v(" "),v("td",[t._v("boolean")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("优先级,是否置顶")])]),t._v(" "),v("tr",[v("td",[t._v("status")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("是否封禁或逻辑删除该讨论")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_create")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("创建时间")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_modified")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("修改时间")])])])]),t._v(" "),v("p",[t._v("discussion_like表")]),t._v(" "),v("table",[v("thead",[v("tr",[v("th",[t._v("列名")]),t._v(" "),v("th",[t._v("实体属性类型")]),t._v(" "),v("th",[t._v("键")]),t._v(" "),v("th",[t._v("备注")])])]),t._v(" "),v("tbody",[v("tr",[v("td",[t._v("id")]),t._v(" "),v("td",[t._v("long")]),t._v(" "),v("td",[t._v("主键")]),t._v(" "),v("td",[t._v("auto_increment")])]),t._v(" "),v("tr",[v("td",[t._v("did")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("讨论id")])]),t._v(" "),v("tr",[v("td",[t._v("uid")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("用户id")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_create")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("创建时间")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_modified")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("修改时间")])])])]),t._v(" "),v("p",[t._v("discussion_report表")]),t._v(" "),v("table",[v("thead",[v("tr",[v("th",[t._v("列名")]),t._v(" "),v("th",[t._v("实体属性类型")]),t._v(" "),v("th",[t._v("键")]),t._v(" "),v("th",[t._v("备注")])])]),t._v(" "),v("tbody",[v("tr",[v("td",[t._v("id")]),t._v(" "),v("td",[t._v("long")]),t._v(" "),v("td",[t._v("主键")]),t._v(" "),v("td",[t._v("auto_increment")])]),t._v(" "),v("tr",[v("td",[t._v("did")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("讨论id")])]),t._v(" "),v("tr",[v("td",[t._v("reporter")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("举报者的用户名")])]),t._v(" "),v("tr",[v("td",[t._v("content")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("举报内容")])]),t._v(" "),v("tr",[v("td",[t._v("status")]),t._v(" "),v("td",[t._v("boolean")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("是否已读")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_create")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("创建时间")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_modified")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("修改时间")])])])]),t._v(" "),v("p",[t._v("comment表")]),t._v(" "),v("table",[v("thead",[v("tr",[v("th",[t._v("列名")]),t._v(" "),v("th",[t._v("实体属性类型")]),t._v(" "),v("th",[t._v("键")]),t._v(" "),v("th",[t._v("备注")])])]),t._v(" "),v("tbody",[v("tr",[v("td",[t._v("id")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td",[t._v("主键")]),t._v(" "),v("td",[t._v("auto_increment")])]),t._v(" "),v("tr",[v("td",[t._v("cid")]),t._v(" "),v("td",[t._v("long")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("比赛id,NULL表示无引用比赛")])]),t._v(" "),v("tr",[v("td",[t._v("did")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("讨论id,NULL表示无引用讨论")])]),t._v(" "),v("tr",[v("td",[t._v("content")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("评论内容")])]),t._v(" "),v("tr",[v("td",[t._v("from_uid")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("评论者id")])]),t._v(" "),v("tr",[v("td",[t._v("from_name")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("评论者用户名")])]),t._v(" "),v("tr",[v("td",[t._v("from_avatar")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("评论者头像地址")])]),t._v(" "),v("tr",[v("td",[t._v("from_role")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("评论者角色")])]),t._v(" "),v("tr",[v("td",[t._v("like_num")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("点赞数量")])]),t._v(" "),v("tr",[v("td",[t._v("status")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("是否封禁或逻辑删除该评论,0正常,1封禁")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_create")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("创建时间")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_modified")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("修改时间")])])])]),t._v(" "),v("p",[t._v("comment_like表")]),t._v(" "),v("table",[v("thead",[v("tr",[v("th",[t._v("列名")]),t._v(" "),v("th",[t._v("实体属性类型")]),t._v(" "),v("th",[t._v("键")]),t._v(" "),v("th",[t._v("备注")])])]),t._v(" "),v("tbody",[v("tr",[v("td",[t._v("id")]),t._v(" "),v("td",[t._v("lint")]),t._v(" "),v("td",[t._v("主键")]),t._v(" "),v("td",[t._v("auto_increment")])]),t._v(" "),v("tr",[v("td",[t._v("cid")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("评论id")])]),t._v(" "),v("tr",[v("td",[t._v("uid")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("用户id")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_create")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("创建时间")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_modified")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("修改时间")])])])]),t._v(" "),v("p",[t._v("reply表")]),t._v(" "),v("table",[v("thead",[v("tr",[v("th",[t._v("列名")]),t._v(" "),v("th",[t._v("实体属性类型")]),t._v(" "),v("th",[t._v("键")]),t._v(" "),v("th",[t._v("备注")])])]),t._v(" "),v("tbody",[v("tr",[v("td",[t._v("id")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td",[t._v("主键")]),t._v(" "),v("td",[t._v("auto_increment")])]),t._v(" "),v("tr",[v("td",[t._v("comment_id")]),t._v(" "),v("td",[t._v("ind")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("评论id")])]),t._v(" "),v("tr",[v("td",[t._v("content")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("回复的内容")])]),t._v(" "),v("tr",[v("td",[t._v("from_uid")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("回复评论者id")])]),t._v(" "),v("tr",[v("td",[t._v("from_name")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("回复评论者用户名")])]),t._v(" "),v("tr",[v("td",[t._v("from_avatar")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("回复评论者头像地址")])]),t._v(" "),v("tr",[v("td",[t._v("from_role")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("回复评论者角色")])]),t._v(" "),v("tr",[v("td",[t._v("to_uid")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("被回复的用户id")])]),t._v(" "),v("tr",[v("td",[t._v("to_name")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("被回复的用户名")])]),t._v(" "),v("tr",[v("td",[t._v("to_avatar")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("被回复的用户头像地址")])]),t._v(" "),v("tr",[v("td",[t._v("status")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("是否封禁或逻辑删除该回复,0正常,1封禁")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_create")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("创建时间")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_modified")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("修改时间")])])])]),t._v(" "),v("h2",{attrs:{id:"文件模块"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#文件模块"}},[t._v("#")]),t._v(" 文件模块")]),t._v(" "),v("p",[t._v("file表")]),t._v(" "),v("table",[v("thead",[v("tr",[v("th",[t._v("列名")]),t._v(" "),v("th",[t._v("实体属性类型")]),t._v(" "),v("th",[t._v("键")]),t._v(" "),v("th",[t._v("备注")])])]),t._v(" "),v("tbody",[v("tr",[v("td",[t._v("id")]),t._v(" "),v("td",[t._v("long")]),t._v(" "),v("td",[t._v("主键")]),t._v(" "),v("td",[t._v("auto_increment")])]),t._v(" "),v("tr",[v("td",[t._v("uid")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("用户id")])]),t._v(" "),v("tr",[v("td",[t._v("name")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("文件名")])]),t._v(" "),v("tr",[v("td",[t._v("suffix")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("文件后缀格式")])]),t._v(" "),v("tr",[v("td",[t._v("folder_path")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("文件所在文件夹的路径")])]),t._v(" "),v("tr",[v("td",[t._v("file_path")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("文件绝对路径")])]),t._v(" "),v("tr",[v("td",[t._v("type")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("文件所属类型,例如avatar")])]),t._v(" "),v("tr",[v("td",[t._v("delete")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("是否删除")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_create")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("创建时间")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_modified")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("修改时间")])])])]),t._v(" "),v("h2",{attrs:{id:"判题机模块"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#判题机模块"}},[t._v("#")]),t._v(" 判题机模块")]),t._v(" "),v("p",[t._v("judge_server表")]),t._v(" "),v("table",[v("thead",[v("tr",[v("th",[t._v("列名")]),t._v(" "),v("th",[t._v("实体属性类型")]),t._v(" "),v("th",[t._v("键")]),t._v(" "),v("th",[t._v("备注")])])]),t._v(" "),v("tbody",[v("tr",[v("td",[t._v("id")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td",[t._v("主键")]),t._v(" "),v("td",[t._v("auto_increment")])]),t._v(" "),v("tr",[v("td",[t._v("name")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("判题服务名字")])]),t._v(" "),v("tr",[v("td",[t._v("ip")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("判题机ip")])]),t._v(" "),v("tr",[v("td",[t._v("port")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("判题机端口号")])]),t._v(" "),v("tr",[v("td",[t._v("url")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("ip:port")])]),t._v(" "),v("tr",[v("td",[t._v("cpu_core")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("判题机所在服务器cpu核心数")])]),t._v(" "),v("tr",[v("td",[t._v("task_number")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("当前判题数")])]),t._v(" "),v("tr",[v("td",[t._v("max_task_number")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("判题并发最大数")])]),t._v(" "),v("tr",[v("td",[t._v("status")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("0可用,1不可用")])]),t._v(" "),v("tr",[v("td",[t._v("version")]),t._v(" "),v("td",[t._v("long")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("版本控制")])]),t._v(" "),v("tr",[v("td",[t._v("is_remote")]),t._v(" "),v("td",[t._v("boolean")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("是否为远程判题vj")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_create")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("创建时间")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_modified")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("修改时间")])])])])])}),[],!1,null,null,null);_.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[18],{365:function(t,_,v){"use strict";v.r(_);var d=v(41),r=Object(d.a)({},(function(){var t=this,_=t.$createElement,v=t._self._c||_;return v("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[v("h1",{attrs:{id:"数据库说明"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#数据库说明"}},[t._v("#")]),t._v(" 数据库说明")]),t._v(" "),v("h2",{attrs:{id:"用户资料模块"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#用户资料模块"}},[t._v("#")]),t._v(" 用户资料模块")]),t._v(" "),v("p",[t._v("user_info表")]),t._v(" "),v("table",[v("thead",[v("tr",[v("th",[t._v("列名")]),t._v(" "),v("th",[t._v("实体属性类型")]),t._v(" "),v("th",[t._v("键")]),t._v(" "),v("th",[t._v("备注")])])]),t._v(" "),v("tbody",[v("tr",[v("td",[t._v("uuid")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td",[t._v("主键")]),t._v(" "),v("td",[t._v("uuid用户id")])]),t._v(" "),v("tr",[v("td",[t._v("username")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("登录账号")])]),t._v(" "),v("tr",[v("td",[t._v("password")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("登录密码")])]),t._v(" "),v("tr",[v("td",[t._v("nickname")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("用户昵称")])]),t._v(" "),v("tr",[v("td",[t._v("school")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("学校")])]),t._v(" "),v("tr",[v("td",[t._v("course")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("专业")])]),t._v(" "),v("tr",[v("td",[t._v("number")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("学号")])]),t._v(" "),v("tr",[v("td",[t._v("realname")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("真实名字")])]),t._v(" "),v("tr",[v("td",[t._v("email")]),t._v(" "),v("td",[t._v("Srting")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("邮箱")])]),t._v(" "),v("tr",[v("td",[t._v("avatar")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("头像图片地址")])]),t._v(" "),v("tr",[v("td",[t._v("signature")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("个性签名")])]),t._v(" "),v("tr",[v("td",[t._v("cf_name")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("codeforces的username")])]),t._v(" "),v("tr",[v("td",[t._v("status")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("0可用,1不可用")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_create")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("创建时间")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_modified")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("修改时间")])])])]),t._v(" "),v("p",[t._v("session表")]),t._v(" "),v("table",[v("thead",[v("tr",[v("th",[t._v("列名")]),t._v(" "),v("th",[t._v("实体属性类型")]),t._v(" "),v("th",[t._v("键")]),t._v(" "),v("th",[t._v("备注")])])]),t._v(" "),v("tbody",[v("tr",[v("td",[t._v("id")]),t._v(" "),v("td",[t._v("long")]),t._v(" "),v("td",[t._v("主键")]),t._v(" "),v("td",[t._v("auto_increment")])]),t._v(" "),v("tr",[v("td",[t._v("uid")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("用户id")])]),t._v(" "),v("tr",[v("td",[t._v("user_agent")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("访问的浏览器参数")])]),t._v(" "),v("tr",[v("td",[t._v("ip")]),t._v(" "),v("td",[t._v("Srting")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("访问所在的ip")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_create")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("创建时间")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_modified")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("修改时间")])])])]),t._v(" "),v("p",[t._v("role 角色表")]),t._v(" "),v("table",[v("thead",[v("tr",[v("th",[t._v("列名")]),t._v(" "),v("th",[t._v("实体属性类型")]),t._v(" "),v("th",[t._v("键")]),t._v(" "),v("th",[t._v("备注")])])]),t._v(" "),v("tbody",[v("tr",[v("td",[t._v("id")]),t._v(" "),v("td",[t._v("long")]),t._v(" "),v("td",[t._v("主键")]),t._v(" "),v("td",[t._v("auto_increment")])]),t._v(" "),v("tr",[v("td",[t._v("role")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("“admin”,”tourist”,“user”")])]),t._v(" "),v("tr",[v("td",[t._v("description")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("角色描述")])]),t._v(" "),v("tr",[v("td",[t._v("status")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("是否可用,0可用 1不可用")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_create")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("创建时间")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_modified")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("修改时间")])])])]),t._v(" "),v("p",[t._v("user_role表")]),t._v(" "),v("table",[v("thead",[v("tr",[v("th",[t._v("列名")]),t._v(" "),v("th",[t._v("实体属性类型")]),t._v(" "),v("th",[t._v("键")]),t._v(" "),v("th",[t._v("备注")])])]),t._v(" "),v("tbody",[v("tr",[v("td",[t._v("id")]),t._v(" "),v("td",[t._v("long")]),t._v(" "),v("td",[t._v("主键")]),t._v(" "),v("td",[t._v("auto_increment")])]),t._v(" "),v("tr",[v("td",[t._v("uid")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("用户id")])]),t._v(" "),v("tr",[v("td",[t._v("role_id")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("角色id")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_create")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("创建时间")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_modified")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("修改时间")])])])]),t._v(" "),v("p",[t._v("auth权限表")]),t._v(" "),v("table",[v("thead",[v("tr",[v("th",[t._v("列名")]),t._v(" "),v("th",[t._v("实体属性类型")]),t._v(" "),v("th",[t._v("键")]),t._v(" "),v("th",[t._v("备注")])])]),t._v(" "),v("tbody",[v("tr",[v("td",[t._v("id")]),t._v(" "),v("td",[t._v("long")]),t._v(" "),v("td",[t._v("主键")]),t._v(" "),v("td",[t._v("auto_increment")])]),t._v(" "),v("tr",[v("td",[t._v("name")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("权限名称,“superadmin”,”contest”,“admin”,”common” 普通用户默认为“common”")])]),t._v(" "),v("tr",[v("td",[t._v("permission")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("权限字符串,例如“contest:1001”,发布某场比赛。 “all”,”select”,”update”等等,")])]),t._v(" "),v("tr",[v("td",[t._v("status")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("0可用,1不可用")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_create")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("创建时间")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_modified")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("修改时间")])])])]),t._v(" "),v("p",[t._v("role_auth表")]),t._v(" "),v("table",[v("thead",[v("tr",[v("th",[t._v("列名")]),t._v(" "),v("th",[t._v("实体属性类型")]),t._v(" "),v("th",[t._v("键")]),t._v(" "),v("th",[t._v("备注")])])]),t._v(" "),v("tbody",[v("tr",[v("td",[t._v("id")]),t._v(" "),v("td",[t._v("long")]),t._v(" "),v("td",[t._v("主键")]),t._v(" "),v("td",[t._v("auto_increment")])]),t._v(" "),v("tr",[v("td",[t._v("role_id")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("角色id")])]),t._v(" "),v("tr",[v("td",[t._v("auth_id")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("权限id")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_create")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("创建时间")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_modified")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("修改时间")])])])]),t._v(" "),v("p",[t._v("user_record表 个人做题记录表")]),t._v(" "),v("table",[v("thead",[v("tr",[v("th",[t._v("列名")]),t._v(" "),v("th",[t._v("实体属性类型")]),t._v(" "),v("th",[t._v("键")]),t._v(" "),v("th",[t._v("备注")])])]),t._v(" "),v("tbody",[v("tr",[v("td",[t._v("id")]),t._v(" "),v("td",[t._v("long")]),t._v(" "),v("td",[t._v("primary key")]),t._v(" "),v("td",[t._v("auto_increment")])]),t._v(" "),v("tr",[v("td",[t._v("uid")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("用户id")])]),t._v(" "),v("tr",[v("td",[t._v("rating")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("Cf得分,未参加过默认为1500")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_create")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("创建时间")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_modified")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("修改时间")])])])]),t._v(" "),v("p",[t._v("user_acproblem表")]),t._v(" "),v("table",[v("thead",[v("tr",[v("th",[t._v("列名")]),t._v(" "),v("th",[t._v("实体属性类型")]),t._v(" "),v("th",[t._v("键")]),t._v(" "),v("th",[t._v("备注")])])]),t._v(" "),v("tbody",[v("tr",[v("td",[t._v("id")]),t._v(" "),v("td",[t._v("long")]),t._v(" "),v("td",[t._v("primary key")]),t._v(" "),v("td",[t._v("auto_increment")])]),t._v(" "),v("tr",[v("td",[t._v("uid")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("用户id")])]),t._v(" "),v("tr",[v("td",[t._v("pid")]),t._v(" "),v("td",[t._v("long")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("Ac的题目id")])]),t._v(" "),v("tr",[v("td",[t._v("subimit_id")]),t._v(" "),v("td",[t._v("long")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("提交的id")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_create")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("创建时间")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_modified")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("修改时间")])])])]),t._v(" "),v("h2",{attrs:{id:"题目详情模块"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#题目详情模块"}},[t._v("#")]),t._v(" 题目详情模块")]),t._v(" "),v("p",[t._v("problem表")]),t._v(" "),v("table",[v("thead",[v("tr",[v("th",[t._v("列名")]),t._v(" "),v("th",[t._v("实体属性类型")]),t._v(" "),v("th",[t._v("键")]),t._v(" "),v("th",[t._v("备注")])])]),t._v(" "),v("tbody",[v("tr",[v("td",[t._v("id")]),t._v(" "),v("td",[t._v("long")]),t._v(" "),v("td",[t._v("primary key")]),t._v(" "),v("td",[t._v("auto_increment 1000开始")])]),t._v(" "),v("tr",[v("td",[t._v("problem_id")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("题目展示id")])]),t._v(" "),v("tr",[v("td",[t._v("title")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("题目标题")])]),t._v(" "),v("tr",[v("td",[t._v("author")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("默认可为无")])]),t._v(" "),v("tr",[v("td",[t._v("type")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("题目类型 0为ACM,1为OI")])]),t._v(" "),v("tr",[v("td",[t._v("time_limit")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("时间限制(ms),默认为c/c++限制,其它语言为2倍")])]),t._v(" "),v("tr",[v("td",[t._v("memory_limit")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("空间限制(mb),默认为c/c++限制,其它语言为2倍")])]),t._v(" "),v("tr",[v("td",[t._v("stack_limit")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("栈限制(mb),默认为128")])]),t._v(" "),v("tr",[v("td",[t._v("description")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("内容描述")])]),t._v(" "),v("tr",[v("td",[t._v("input")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("输入描述")])]),t._v(" "),v("tr",[v("td",[t._v("output")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("输出描述")])]),t._v(" "),v("tr",[v("td",[t._v("examples")]),t._v(" "),v("td",[t._v("Srting")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("题面输入输出样例,不纳入评测数据")])]),t._v(" "),v("tr",[v("td",[t._v("source")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("题目来源(比赛id),默认为hoj,可能为爬虫vj")])]),t._v(" "),v("tr",[v("td",[t._v("difficulty")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("题目难度,0简单,1中等,2困难")])]),t._v(" "),v("tr",[v("td",[t._v("hint")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("备注 提醒")])]),t._v(" "),v("tr",[v("td",[t._v("auth")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("默认为1公开,2为私有,3为比赛中。")])]),t._v(" "),v("tr",[v("td",[t._v("io_score")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("当该题目为io题目时的分数 默认为100")])]),t._v(" "),v("tr",[v("td",[t._v("code_share")]),t._v(" "),v("td",[t._v("boolean")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("该题目对应的相关提交代码,用户是否可用分享")])]),t._v(" "),v("tr",[v("td",[t._v("spj_code")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("特判程序代码 空代表非特判")])]),t._v(" "),v("tr",[v("td",[t._v("spj_language")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("特判程序的语言")])]),t._v(" "),v("tr",[v("td",[t._v("is_remove_end_blank")]),t._v(" "),v("td",[t._v("boolean")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("是否默认去除用户代码的文末空格")])]),t._v(" "),v("tr",[v("td",[t._v("open_case_result")]),t._v(" "),v("td",[t._v("boolean")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("是否默认开启该题目的测试样例结果查看")])]),t._v(" "),v("tr",[v("td",[t._v("caseVersion")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("题目测试数据的版本号")])]),t._v(" "),v("tr",[v("td",[t._v("is_upload_case")]),t._v(" "),v("td",[t._v("boolean")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("是否是上传zip评测数据的")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_create")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("创建时间")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_modified")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("修改时间")])])])]),t._v(" "),v("p",[t._v("problem_case表")]),t._v(" "),v("table",[v("thead",[v("tr",[v("th",[t._v("列名")]),t._v(" "),v("th",[t._v("实体属性类型")]),t._v(" "),v("th",[t._v("键")]),t._v(" "),v("th",[t._v("备注")])])]),t._v(" "),v("tbody",[v("tr",[v("td",[t._v("id")]),t._v(" "),v("td",[t._v("long")]),t._v(" "),v("td",[t._v("primary key")]),t._v(" "),v("td",[t._v("auto_increment")])]),t._v(" "),v("tr",[v("td",[t._v("pid")]),t._v(" "),v("td",[t._v("long")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("题目id")])]),t._v(" "),v("tr",[v("td",[t._v("input")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("测试样例的输入")])]),t._v(" "),v("tr",[v("td",[t._v("output")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("测试样例的输出")])]),t._v(" "),v("tr",[v("td",[t._v("status")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("状态0可用,1不可用")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_create")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("创建时间")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_modified")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("修改时间")])])])]),t._v(" "),v("p",[t._v("tag表 题目表的标签")]),t._v(" "),v("table",[v("thead",[v("tr",[v("th",[t._v("列名")]),t._v(" "),v("th",[t._v("实体属性类型")]),t._v(" "),v("th",[t._v("键")]),t._v(" "),v("th",[t._v("备注")])])]),t._v(" "),v("tbody",[v("tr",[v("td",[t._v("id")]),t._v(" "),v("td",[t._v("long")]),t._v(" "),v("td",[t._v("主键")]),t._v(" "),v("td",[t._v("auto_increment")])]),t._v(" "),v("tr",[v("td",[t._v("name")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("标签名字")])]),t._v(" "),v("tr",[v("td",[t._v("color")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("标签颜色")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_create")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("创建时间")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_modified")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("修改时间")])])])]),t._v(" "),v("p",[t._v("problem_tag表")]),t._v(" "),v("table",[v("thead",[v("tr",[v("th",[t._v("列名")]),t._v(" "),v("th",[t._v("实体属性类型")]),t._v(" "),v("th",[t._v("键")]),t._v(" "),v("th",[t._v("备注")])])]),t._v(" "),v("tbody",[v("tr",[v("td",[t._v("id")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("主键id")])]),t._v(" "),v("tr",[v("td",[t._v("tid")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("标签id")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_create")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("创建时间")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_modified")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("修改时间")])])])]),t._v(" "),v("p",[t._v("language表")]),t._v(" "),v("table",[v("thead",[v("tr",[v("th",[t._v("列名")]),t._v(" "),v("th",[t._v("实体属性类型")]),t._v(" "),v("th",[t._v("键")]),t._v(" "),v("th",[t._v("备注")])])]),t._v(" "),v("tbody",[v("tr",[v("td",[t._v("id")]),t._v(" "),v("td",[t._v("long")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("主键id")])]),t._v(" "),v("tr",[v("td",[t._v("content_type")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("语言类型")])]),t._v(" "),v("tr",[v("td",[t._v("description")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("语言描述")])]),t._v(" "),v("tr",[v("td",[t._v("name")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("语言名字")])]),t._v(" "),v("tr",[v("td",[t._v("compile_command")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("编译指令")])]),t._v(" "),v("tr",[v("td",[t._v("template")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("A+B题目模板")])]),t._v(" "),v("tr",[v("td",[t._v("code_template")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("语言对应的代码模板")])]),t._v(" "),v("tr",[v("td",[t._v("is_spj")]),t._v(" "),v("td",[t._v("boolean")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("是否可作为特殊判题的一种语言")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_create")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("创建时间")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_modified")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("修改时间")])])])]),t._v(" "),v("p",[t._v("code_template表")]),t._v(" "),v("table",[v("thead",[v("tr",[v("th",[t._v("列名")]),t._v(" "),v("th",[t._v("实体属性类型")]),t._v(" "),v("th",[t._v("键")]),t._v(" "),v("th",[t._v("备注")])])]),t._v(" "),v("tbody",[v("tr",[v("td",[t._v("id")]),t._v(" "),v("td",[t._v("long")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("主键id")])]),t._v(" "),v("tr",[v("td",[t._v("pid")]),t._v(" "),v("td",[t._v("long")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("题目id")])]),t._v(" "),v("tr",[v("td",[t._v("lid")]),t._v(" "),v("td",[t._v("long")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("语言id")])]),t._v(" "),v("tr",[v("td",[t._v("code")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("代码模板")])]),t._v(" "),v("tr",[v("td",[t._v("status")]),t._v(" "),v("td",[t._v("boolean")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("是否启用")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_create")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("修改时间")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_modified")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("修改时间")])])])]),t._v(" "),v("h2",{attrs:{id:"提交评测模块"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#提交评测模块"}},[t._v("#")]),t._v(" 提交评测模块")]),t._v(" "),v("blockquote",[v("p",[t._v("判题结果status")])]),t._v(" "),v("p",[t._v("未提交:STATUS_NOT_SUBMITTED = -10")]),t._v(" "),v("p",[t._v("提交中:STATUS_SUBMITTING = 9")]),t._v(" "),v("p",[t._v("排队中:STATUS_PENDING = 6")]),t._v(" "),v("p",[t._v("评测中:STATUS_JUDGING = 7")]),t._v(" "),v("p",[t._v("编译错误:STATUS_COMPILE_ERROR = -2")]),t._v(" "),v("p",[t._v("输出格式错误:STATUS_PRESENTATION_ERROR = -3")]),t._v(" "),v("p",[t._v("答案错误:STATUS__WRONG_ANSWER = -1")]),t._v(" "),v("p",[t._v("评测通过:STATUS_ACCEPTED = 0")]),t._v(" "),v("p",[t._v("cpu时间超限:STATUS__CPU_TIME_LIMIT_EXCEEDED = 1")]),t._v(" "),v("p",[t._v("真实时间超限:STATUS__REAL_TIME_LIMIT_EXCEEDED = 2")]),t._v(" "),v("p",[t._v("空间超限:STATUS__MEMORY_LIMIT_EXCEEDED = 3")]),t._v(" "),v("p",[t._v("运行错误:STATUS__RUNTIME_ERROR = 4")]),t._v(" "),v("p",[t._v("系统错误:STATUS__SYSTEM_ERROR = 5")]),t._v(" "),v("p",[t._v("OI评测部分通过:STATUS_PARTIAL_ACCEPTED = 8")]),t._v(" "),v("p",[t._v("提交失败:STATUS_SUBMITTED_FAILED= 10")]),t._v(" "),v("p",[t._v("judge表")]),t._v(" "),v("table",[v("thead",[v("tr",[v("th",[t._v("列名")]),t._v(" "),v("th",[t._v("实体属性类型")]),t._v(" "),v("th",[t._v("键")]),t._v(" "),v("th",[t._v("备注")])])]),t._v(" "),v("tbody",[v("tr",[v("td",[t._v("submit_id")]),t._v(" "),v("td",[t._v("long")]),t._v(" "),v("td",[t._v("primary key")]),t._v(" "),v("td",[t._v("auto_increment")])]),t._v(" "),v("tr",[v("td",[t._v("display_pid")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("题目展示id")])]),t._v(" "),v("tr",[v("td",[t._v("pid")]),t._v(" "),v("td",[t._v("long")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("题目id")])]),t._v(" "),v("tr",[v("td",[t._v("uid")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("提交用户的id")])]),t._v(" "),v("tr",[v("td",[t._v("username")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("用户名")])]),t._v(" "),v("tr",[v("td",[t._v("submit_time")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("提交时间")])]),t._v(" "),v("tr",[v("td",[t._v("status")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("判题结果")])]),t._v(" "),v("tr",[v("td",[t._v("share")]),t._v(" "),v("td",[t._v("Boolean")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("代码是否分享")])]),t._v(" "),v("tr",[v("td",[t._v("error_message")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("错误提醒(编译错误,或者vj提醒)")])]),t._v(" "),v("tr",[v("td",[t._v("time")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("运行时间")])]),t._v(" "),v("tr",[v("td",[t._v("memory")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("所耗内存")])]),t._v(" "),v("tr",[v("td",[t._v("length")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("代码长度")])]),t._v(" "),v("tr",[v("td",[t._v("code")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("代码")])]),t._v(" "),v("tr",[v("td",[t._v("language")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("代码语言")])]),t._v(" "),v("tr",[v("td",[t._v("cpid")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("比赛中的题目编号id")])]),t._v(" "),v("tr",[v("td",[t._v("judger")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("判题机ip")])]),t._v(" "),v("tr",[v("td",[t._v("ip")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("提交者ip")])]),t._v(" "),v("tr",[v("td",[t._v("cid")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("题目来源的比赛id,默认为0")])]),t._v(" "),v("tr",[v("td",[t._v("version")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("乐观锁")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_create")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("创建时间")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_modified")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("修改时间")])])])]),t._v(" "),v("p",[t._v("jugdeCase表 评测单个样例结果表")]),t._v(" "),v("table",[v("thead",[v("tr",[v("th",[t._v("列名")]),t._v(" "),v("th",[t._v("实体属性类型")]),t._v(" "),v("th",[t._v("键")]),t._v(" "),v("th",[t._v("备注")])])]),t._v(" "),v("tbody",[v("tr",[v("td",[t._v("submit_id")]),t._v(" "),v("td",[t._v("long")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("提交id")])]),t._v(" "),v("tr",[v("td",[t._v("problemId")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("题目id")])]),t._v(" "),v("tr",[v("td",[t._v("userId")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("提交用户的id")])]),t._v(" "),v("tr",[v("td",[t._v("Status")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("单个样例评测结果")])]),t._v(" "),v("tr",[v("td",[t._v("time")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("运行时间")])]),t._v(" "),v("tr",[v("td",[t._v("memory")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("运行内存")])]),t._v(" "),v("tr",[v("td",[t._v("case_id")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("测试样例id")])]),t._v(" "),v("tr",[v("td",[t._v("input_data")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("样例输入,比赛不可看")])]),t._v(" "),v("tr",[v("td",[t._v("Output_data")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("样例输出,比赛不可看")])]),t._v(" "),v("tr",[v("td",[t._v("user_output")]),t._v(" "),v("td",[t._v("Srting")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("用户样例输出,比赛不可看")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_create")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("创建时间")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_modified")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("修改时间")])])])]),t._v(" "),v("h2",{attrs:{id:"比赛模块"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#比赛模块"}},[t._v("#")]),t._v(" 比赛模块")]),t._v(" "),v("p",[t._v("更新比赛状态的存储过程")]),t._v(" "),v("div",{staticClass:"language-sql line-numbers-mode"},[v("pre",{pre:!0,attrs:{class:"language-sql"}},[v("code",[v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("DELIMITER")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token operator"}},[t._v("|")]),t._v("\n\n"),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("DROP")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("PROCEDURE")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("IF")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("EXISTS")]),t._v(" contest_status "),v("span",{pre:!0,attrs:{class:"token operator"}},[t._v("|")]),t._v("\n"),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("CREATE")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("PROCEDURE")]),t._v(" contest_status"),v("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),v("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n "),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("BEGIN")]),t._v("\n "),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("UPDATE")]),t._v(" contest \n "),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("SET")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("STATUS")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n "),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("CASE")]),t._v(" \n "),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("WHEN")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token function"}},[t._v("NOW")]),v("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),v("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v(" start_time "),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("THEN")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),v("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" \n "),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("WHEN")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token function"}},[t._v("NOW")]),v("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),v("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">=")]),t._v(" start_time "),v("span",{pre:!0,attrs:{class:"token operator"}},[t._v("AND")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token function"}},[t._v("NOW")]),v("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),v("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),v("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("end_time "),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("THEN")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n "),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("WHEN")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token function"}},[t._v("NOW")]),v("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),v("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">=")]),t._v(" end_time "),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("THEN")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v("\n "),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("END")]),v("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),v("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("END")]),t._v("\n"),v("span",{pre:!0,attrs:{class:"token operator"}},[t._v("|")]),t._v("\n\n")])]),t._v(" "),v("div",{staticClass:"line-numbers-wrapper"},[v("span",{staticClass:"line-number"},[t._v("1")]),v("br"),v("span",{staticClass:"line-number"},[t._v("2")]),v("br"),v("span",{staticClass:"line-number"},[t._v("3")]),v("br"),v("span",{staticClass:"line-number"},[t._v("4")]),v("br"),v("span",{staticClass:"line-number"},[t._v("5")]),v("br"),v("span",{staticClass:"line-number"},[t._v("6")]),v("br"),v("span",{staticClass:"line-number"},[t._v("7")]),v("br"),v("span",{staticClass:"line-number"},[t._v("8")]),v("br"),v("span",{staticClass:"line-number"},[t._v("9")]),v("br"),v("span",{staticClass:"line-number"},[t._v("10")]),v("br"),v("span",{staticClass:"line-number"},[t._v("11")]),v("br"),v("span",{staticClass:"line-number"},[t._v("12")]),v("br"),v("span",{staticClass:"line-number"},[t._v("13")]),v("br"),v("span",{staticClass:"line-number"},[t._v("14")]),v("br"),v("span",{staticClass:"line-number"},[t._v("15")]),v("br"),v("span",{staticClass:"line-number"},[t._v("16")]),v("br")])]),v("p",[t._v("创建插入时的触发器")]),t._v(" "),v("div",{staticClass:"language-sql line-numbers-mode"},[v("pre",{pre:!0,attrs:{class:"language-sql"}},[v("code",[v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("DROP")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("TRIGGER")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("IF")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("EXISTS")]),t._v(" contest_trigger"),v("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("DELIMITER")]),t._v(" $$\n"),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("CREATE")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("TRIGGER")]),t._v(" contest_trigger\nBEFORE "),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("INSERT")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("ON")]),t._v(" contest "),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("FOR EACH ROW")]),t._v("\n"),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("BEGIN")]),t._v("\n"),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("SET")]),t._v(" new"),v("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("status")]),v("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),v("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n\t"),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("CASE")]),t._v(" \n\t "),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("WHEN")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token function"}},[t._v("NOW")]),v("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),v("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v(" new"),v("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("start_time "),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("THEN")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),v("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" \n\t "),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("WHEN")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token function"}},[t._v("NOW")]),v("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),v("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">=")]),t._v(" new"),v("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("start_time "),v("span",{pre:!0,attrs:{class:"token operator"}},[t._v("AND")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token function"}},[t._v("NOW")]),v("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),v("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),v("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("new"),v("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("end_time "),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("THEN")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n\t "),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("WHEN")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token function"}},[t._v("NOW")]),v("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),v("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">=")]),t._v(" new"),v("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("end_time "),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("THEN")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v("\n\t"),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("END")]),v("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),v("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("END")]),t._v("$$\n"),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("DELIMITER")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])]),t._v(" "),v("div",{staticClass:"line-numbers-wrapper"},[v("span",{staticClass:"line-number"},[t._v("1")]),v("br"),v("span",{staticClass:"line-number"},[t._v("2")]),v("br"),v("span",{staticClass:"line-number"},[t._v("3")]),v("br"),v("span",{staticClass:"line-number"},[t._v("4")]),v("br"),v("span",{staticClass:"line-number"},[t._v("5")]),v("br"),v("span",{staticClass:"line-number"},[t._v("6")]),v("br"),v("span",{staticClass:"line-number"},[t._v("7")]),v("br"),v("span",{staticClass:"line-number"},[t._v("8")]),v("br"),v("span",{staticClass:"line-number"},[t._v("9")]),v("br"),v("span",{staticClass:"line-number"},[t._v("10")]),v("br"),v("span",{staticClass:"line-number"},[t._v("11")]),v("br"),v("span",{staticClass:"line-number"},[t._v("12")]),v("br"),v("span",{staticClass:"line-number"},[t._v("13")]),v("br"),v("span",{staticClass:"line-number"},[t._v("14")]),v("br")])]),v("p",[t._v("设置定时器")]),t._v(" "),v("div",{staticClass:"language-sql line-numbers-mode"},[v("pre",{pre:!0,attrs:{class:"language-sql"}},[v("code",[v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("SET")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("GLOBAL")]),t._v(" event_scheduler "),v("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),v("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// 开启定时器")]),t._v("\n"),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("CREATE")]),t._v(" EVENT "),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("IF")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token operator"}},[t._v("NOT")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("EXISTS")]),t._v(" contest_event\n\n"),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("ON")]),t._v(" SCHEDULE EVERY "),v("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("SECOND")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// 每秒执行一次")]),t._v("\n\n"),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("ON")]),t._v(" COMPLETION PRESERVE \n\n"),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("DO")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("CALL")]),t._v(" contest_status"),v("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),v("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),v("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// 调用存储过程")]),t._v("\n")])]),t._v(" "),v("div",{staticClass:"line-numbers-wrapper"},[v("span",{staticClass:"line-number"},[t._v("1")]),v("br"),v("span",{staticClass:"line-number"},[t._v("2")]),v("br"),v("span",{staticClass:"line-number"},[t._v("3")]),v("br"),v("span",{staticClass:"line-number"},[t._v("4")]),v("br"),v("span",{staticClass:"line-number"},[t._v("5")]),v("br"),v("span",{staticClass:"line-number"},[t._v("6")]),v("br"),v("span",{staticClass:"line-number"},[t._v("7")]),v("br"),v("span",{staticClass:"line-number"},[t._v("8")]),v("br")])]),v("p",[t._v("开启或关闭定时器")]),t._v(" "),v("div",{staticClass:"language-sql line-numbers-mode"},[v("pre",{pre:!0,attrs:{class:"language-sql"}},[v("code",[v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("ALTER")]),t._v(" EVENT contest_event "),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("ON")]),t._v(" COMPLETION PRESERVE "),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("ENABLE")]),v("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token comment"}},[t._v("-- 开启事件")]),t._v("\n"),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("ALTER")]),t._v(" EVENT contest_event "),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("ON")]),t._v(" COMPLETION PRESERVE "),v("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("DISABLE")]),v("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),v("span",{pre:!0,attrs:{class:"token comment"}},[t._v("-- 关闭事件")]),t._v("\n")])]),t._v(" "),v("div",{staticClass:"line-numbers-wrapper"},[v("span",{staticClass:"line-number"},[t._v("1")]),v("br"),v("span",{staticClass:"line-number"},[t._v("2")]),v("br")])]),v("p",[t._v("contest表")]),t._v(" "),v("table",[v("thead",[v("tr",[v("th",[t._v("列名")]),t._v(" "),v("th",[t._v("实体属性类型")]),t._v(" "),v("th",[t._v("键")]),t._v(" "),v("th",[t._v("备注")])])]),t._v(" "),v("tbody",[v("tr",[v("td",[t._v("id")]),t._v(" "),v("td",[t._v("long")]),t._v(" "),v("td",[t._v("主键")]),t._v(" "),v("td",[t._v("auto_increment 1000起步")])]),t._v(" "),v("tr",[v("td",[t._v("uid")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("创建者id")])]),t._v(" "),v("tr",[v("td",[t._v("author")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("比赛创建者的用户名")])]),t._v(" "),v("tr",[v("td",[t._v("title")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("比赛标题")])]),t._v(" "),v("tr",[v("td",[t._v("type")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("Acm赛制或者Rating")])]),t._v(" "),v("tr",[v("td",[t._v("source")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("比赛来源,原创为0,克隆赛为比赛id")])]),t._v(" "),v("tr",[v("td",[t._v("auth")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("0为公开赛,1为私有赛(有密码),3为保护赛(有密码)。")])]),t._v(" "),v("tr",[v("td",[t._v("pwd")]),t._v(" "),v("td",[t._v("string")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("比赛密码")])]),t._v(" "),v("tr",[v("td",[t._v("start_time")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("开始时间")])]),t._v(" "),v("tr",[v("td",[t._v("end_time")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("结束时间")])]),t._v(" "),v("tr",[v("td",[t._v("duration")]),t._v(" "),v("td",[t._v("long")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("比赛时长(s)")])]),t._v(" "),v("tr",[v("td",[t._v("description")]),t._v(" "),v("td",[t._v("Srting")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("比赛说明")])]),t._v(" "),v("tr",[v("td",[t._v("seal_rank")]),t._v(" "),v("td",[t._v("boolean")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("是否开启封榜")])]),t._v(" "),v("tr",[v("td",[t._v("seal_rank_time")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("封榜起始时间,一直到比赛结束,不刷新榜单。")])]),t._v(" "),v("tr",[v("td",[t._v("status")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("-1为未开始,0为进行中,1为已结束")])]),t._v(" "),v("tr",[v("td",[t._v("visible")]),t._v(" "),v("td",[t._v("boolean")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("是否可见")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_create")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("创建时间")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_modified")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("修改时间")])])])]),t._v(" "),v("p",[t._v("contest_problem表")]),t._v(" "),v("table",[v("thead",[v("tr",[v("th",[t._v("列名")]),t._v(" "),v("th",[t._v("实体属性类型")]),t._v(" "),v("th",[t._v("键")]),t._v(" "),v("th",[t._v("备注")])])]),t._v(" "),v("tbody",[v("tr",[v("td",[t._v("id")]),t._v(" "),v("td",[t._v("long")]),t._v(" "),v("td",[t._v("主键")]),t._v(" "),v("td",[t._v("auto_increment")])]),t._v(" "),v("tr",[v("td",[t._v("display_id")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("展示的id")])]),t._v(" "),v("tr",[v("td",[t._v("cid")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("比赛id")])]),t._v(" "),v("tr",[v("td",[t._v("pid")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("题目id")])]),t._v(" "),v("tr",[v("td",[t._v("cp_name")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("用于当场比赛的题目标题")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_create")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("创建时间")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_modified")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("修改时间")])])])]),t._v(" "),v("p",[t._v("contest_register表 比赛报名表")]),t._v(" "),v("table",[v("thead",[v("tr",[v("th",[t._v("列名")]),t._v(" "),v("th",[t._v("实体属性类型")]),t._v(" "),v("th",[t._v("键")]),t._v(" "),v("th",[t._v("备注")])])]),t._v(" "),v("tbody",[v("tr",[v("td",[t._v("id")]),t._v(" "),v("td",[t._v("long")]),t._v(" "),v("td",[t._v("主键")]),t._v(" "),v("td",[t._v("auto_increment")])]),t._v(" "),v("tr",[v("td",[t._v("cid")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("比赛id")])]),t._v(" "),v("tr",[v("td",[t._v("uid")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("用户id")])]),t._v(" "),v("tr",[v("td",[t._v("Status")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("默认为0表示正常,1为失效。")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_create")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("创建时间")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_modified")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("修改时间")])])])]),t._v(" "),v("p",[t._v("contest_score表 rating赛制中获得的分数更改记录表")]),t._v(" "),v("table",[v("thead",[v("tr",[v("th",[t._v("列名")]),t._v(" "),v("th",[t._v("实体属性类型")]),t._v(" "),v("th",[t._v("键")]),t._v(" "),v("th",[t._v("备注")])])]),t._v(" "),v("tbody",[v("tr",[v("td",[t._v("id")]),t._v(" "),v("td",[t._v("long")]),t._v(" "),v("td",[t._v("主键")]),t._v(" "),v("td",[t._v("auto_increment")])]),t._v(" "),v("tr",[v("td",[t._v("cid")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("比赛id")])]),t._v(" "),v("tr",[v("td",[t._v("last")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("比赛前的score得分")])]),t._v(" "),v("tr",[v("td",[t._v("change")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("Score比分变化")])]),t._v(" "),v("tr",[v("td",[t._v("now")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("现在的score")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_create")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("创建时间")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_modified")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("修改时间")])])])]),t._v(" "),v("p",[t._v("contest_record表 比赛记录表")]),t._v(" "),v("table",[v("thead",[v("tr",[v("th",[t._v("列名")]),t._v(" "),v("th",[t._v("实体属性类型")]),t._v(" "),v("th",[t._v("键")]),t._v(" "),v("th",[t._v("备注")])])]),t._v(" "),v("tbody",[v("tr",[v("td",[t._v("id")]),t._v(" "),v("td",[t._v("long")]),t._v(" "),v("td",[t._v("主键")]),t._v(" "),v("td",[t._v("auto_increment")])]),t._v(" "),v("tr",[v("td",[t._v("cid")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("比赛id")])]),t._v(" "),v("tr",[v("td",[t._v("uid")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("用户id")])]),t._v(" "),v("tr",[v("td",[t._v("pid")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("题目id")])]),t._v(" "),v("tr",[v("td",[t._v("cpid")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("比赛中的题目id")])]),t._v(" "),v("tr",[v("td",[t._v("submit_id")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("提交id,用于可重判")])]),t._v(" "),v("tr",[v("td",[t._v("display_id")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("比赛展示的id")])]),t._v(" "),v("tr",[v("td",[t._v("username")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("用户名")])]),t._v(" "),v("tr",[v("td",[t._v("realname")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("真实姓名")])]),t._v(" "),v("tr",[v("td",[t._v("status")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("提交结果,0表示未AC通过不罚时,1表示AC通过,-1为未AC通过算罚时")])]),t._v(" "),v("tr",[v("td",[t._v("time")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("提交时间,为提交时间减去比赛时间,时间戳")])]),t._v(" "),v("tr",[v("td",[t._v("score")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("OI比赛得分")])]),t._v(" "),v("tr",[v("td",[t._v("first_blood")]),t._v(" "),v("td",[t._v("Boolean")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("是否为一血AC")])]),t._v(" "),v("tr",[v("td",[t._v("checked")]),t._v(" "),v("td",[t._v("Boolean")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("AC是否已校验")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_create")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("创建时间")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_modified")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("修改时间")])])])]),t._v(" "),v("p",[t._v("announcement表")]),t._v(" "),v("table",[v("thead",[v("tr",[v("th",[t._v("列名")]),t._v(" "),v("th",[t._v("实体属性类型")]),t._v(" "),v("th",[t._v("键")]),t._v(" "),v("th",[t._v("备注")])])]),t._v(" "),v("tbody",[v("tr",[v("td",[t._v("id")]),t._v(" "),v("td",[t._v("long")]),t._v(" "),v("td",[t._v("主键")]),t._v(" "),v("td",[t._v("auto_increment")])]),t._v(" "),v("tr",[v("td",[t._v("title")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("公告标题")])]),t._v(" "),v("tr",[v("td",[t._v("content")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("公告内容")])]),t._v(" "),v("tr",[v("td",[t._v("uid")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("发布者id(必须为比赛创建者或者超级管理员才能)")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_create")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("创建时间")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_modified")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("修改时间")])])])]),t._v(" "),v("p",[t._v("contest_announcement表 比赛时的通知表")]),t._v(" "),v("table",[v("thead",[v("tr",[v("th",[t._v("列名")]),t._v(" "),v("th",[t._v("实体属性类型")]),t._v(" "),v("th",[t._v("键")]),t._v(" "),v("th",[t._v("备注")])])]),t._v(" "),v("tbody",[v("tr",[v("td",[t._v("id")]),t._v(" "),v("td",[t._v("long")]),t._v(" "),v("td",[t._v("主键")]),t._v(" "),v("td",[t._v("auto_increment")])]),t._v(" "),v("tr",[v("td",[t._v("aid")]),t._v(" "),v("td",[t._v("long")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("公告id")])]),t._v(" "),v("tr",[v("td",[t._v("cid")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("比赛id")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_create")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("创建时间")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_modified")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("修改时间")])])])]),t._v(" "),v("p",[t._v("contest_explanation表 赛后题解表**(未使用)**")]),t._v(" "),v("table",[v("thead",[v("tr",[v("th",[t._v("列名")]),t._v(" "),v("th",[t._v("实体属性类型")]),t._v(" "),v("th",[t._v("键")]),t._v(" "),v("th",[t._v("备注")])])]),t._v(" "),v("tbody",[v("tr",[v("td",[t._v("id")]),t._v(" "),v("td",[t._v("long")]),t._v(" "),v("td",[t._v("主键")]),t._v(" "),v("td",[t._v("auto_increment")])]),t._v(" "),v("tr",[v("td",[t._v("cid")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("比赛id")])]),t._v(" "),v("tr",[v("td",[t._v("content")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("内容(支持markdown)")])]),t._v(" "),v("tr",[v("td",[t._v("uid")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("发布者(必须为比赛创建者或者超级管理员才能)")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_create")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("创建时间")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_modified")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("修改时间")])])])]),t._v(" "),v("h2",{attrs:{id:"讨论模块"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#讨论模块"}},[t._v("#")]),t._v(" 讨论模块")]),t._v(" "),v("blockquote",[v("p",[t._v("包括题目讨论区,公共讨论区,比赛评论")])]),t._v(" "),v("p",[t._v("category表")]),t._v(" "),v("table",[v("thead",[v("tr",[v("th",[t._v("列名")]),t._v(" "),v("th",[t._v("实体属性类型")]),t._v(" "),v("th",[t._v("键")]),t._v(" "),v("th",[t._v("备注")])])]),t._v(" "),v("tbody",[v("tr",[v("td",[t._v("id")]),t._v(" "),v("td",[t._v("long")]),t._v(" "),v("td",[t._v("主键")]),t._v(" "),v("td",[t._v("auto_increment")])]),t._v(" "),v("tr",[v("td",[t._v("name")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("分类名字")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_create")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("创建时间")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_modified")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("修改时间")])])])]),t._v(" "),v("p",[t._v("discussion表")]),t._v(" "),v("table",[v("thead",[v("tr",[v("th",[t._v("列名")]),t._v(" "),v("th",[t._v("实体属性类型")]),t._v(" "),v("th",[t._v("键")]),t._v(" "),v("th",[t._v("备注")])])]),t._v(" "),v("tbody",[v("tr",[v("td",[t._v("id")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td",[t._v("主键")]),t._v(" "),v("td",[t._v("auto_increment")])]),t._v(" "),v("tr",[v("td",[t._v("category_id")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("分类id")])]),t._v(" "),v("tr",[v("td",[t._v("title")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("讨论标题")])]),t._v(" "),v("tr",[v("td",[t._v("content")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("讨论详情")])]),t._v(" "),v("tr",[v("td",[t._v("description")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("讨论描述")])]),t._v(" "),v("tr",[v("td",[t._v("pid")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("引用的题目id,默认未null则不引用")])]),t._v(" "),v("tr",[v("td",[t._v("uid")]),t._v(" "),v("td",[t._v("iString")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("发布讨论的用户id")])]),t._v(" "),v("tr",[v("td",[t._v("author")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("发布讨论的用户名")])]),t._v(" "),v("tr",[v("td",[t._v("avatar")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("发布讨论的用户头像地址")])]),t._v(" "),v("tr",[v("td",[t._v("role")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("发布讨论的用户角色")])]),t._v(" "),v("tr",[v("td",[t._v("view_num")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("浏览数量")])]),t._v(" "),v("tr",[v("td",[t._v("like_num")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("点赞数量")])]),t._v(" "),v("tr",[v("td",[t._v("top_priority")]),t._v(" "),v("td",[t._v("boolean")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("优先级,是否置顶")])]),t._v(" "),v("tr",[v("td",[t._v("status")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("是否封禁或逻辑删除该讨论")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_create")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("创建时间")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_modified")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("修改时间")])])])]),t._v(" "),v("p",[t._v("discussion_like表")]),t._v(" "),v("table",[v("thead",[v("tr",[v("th",[t._v("列名")]),t._v(" "),v("th",[t._v("实体属性类型")]),t._v(" "),v("th",[t._v("键")]),t._v(" "),v("th",[t._v("备注")])])]),t._v(" "),v("tbody",[v("tr",[v("td",[t._v("id")]),t._v(" "),v("td",[t._v("long")]),t._v(" "),v("td",[t._v("主键")]),t._v(" "),v("td",[t._v("auto_increment")])]),t._v(" "),v("tr",[v("td",[t._v("did")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("讨论id")])]),t._v(" "),v("tr",[v("td",[t._v("uid")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("用户id")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_create")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("创建时间")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_modified")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("修改时间")])])])]),t._v(" "),v("p",[t._v("discussion_report表")]),t._v(" "),v("table",[v("thead",[v("tr",[v("th",[t._v("列名")]),t._v(" "),v("th",[t._v("实体属性类型")]),t._v(" "),v("th",[t._v("键")]),t._v(" "),v("th",[t._v("备注")])])]),t._v(" "),v("tbody",[v("tr",[v("td",[t._v("id")]),t._v(" "),v("td",[t._v("long")]),t._v(" "),v("td",[t._v("主键")]),t._v(" "),v("td",[t._v("auto_increment")])]),t._v(" "),v("tr",[v("td",[t._v("did")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("讨论id")])]),t._v(" "),v("tr",[v("td",[t._v("reporter")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("举报者的用户名")])]),t._v(" "),v("tr",[v("td",[t._v("content")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("举报内容")])]),t._v(" "),v("tr",[v("td",[t._v("status")]),t._v(" "),v("td",[t._v("boolean")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("是否已读")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_create")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("创建时间")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_modified")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("修改时间")])])])]),t._v(" "),v("p",[t._v("comment表")]),t._v(" "),v("table",[v("thead",[v("tr",[v("th",[t._v("列名")]),t._v(" "),v("th",[t._v("实体属性类型")]),t._v(" "),v("th",[t._v("键")]),t._v(" "),v("th",[t._v("备注")])])]),t._v(" "),v("tbody",[v("tr",[v("td",[t._v("id")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td",[t._v("主键")]),t._v(" "),v("td",[t._v("auto_increment")])]),t._v(" "),v("tr",[v("td",[t._v("cid")]),t._v(" "),v("td",[t._v("long")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("比赛id,NULL表示无引用比赛")])]),t._v(" "),v("tr",[v("td",[t._v("did")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("讨论id,NULL表示无引用讨论")])]),t._v(" "),v("tr",[v("td",[t._v("content")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("评论内容")])]),t._v(" "),v("tr",[v("td",[t._v("from_uid")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("评论者id")])]),t._v(" "),v("tr",[v("td",[t._v("from_name")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("评论者用户名")])]),t._v(" "),v("tr",[v("td",[t._v("from_avatar")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("评论者头像地址")])]),t._v(" "),v("tr",[v("td",[t._v("from_role")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("评论者角色")])]),t._v(" "),v("tr",[v("td",[t._v("like_num")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("点赞数量")])]),t._v(" "),v("tr",[v("td",[t._v("status")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("是否封禁或逻辑删除该评论,0正常,1封禁")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_create")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("创建时间")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_modified")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("修改时间")])])])]),t._v(" "),v("p",[t._v("comment_like表")]),t._v(" "),v("table",[v("thead",[v("tr",[v("th",[t._v("列名")]),t._v(" "),v("th",[t._v("实体属性类型")]),t._v(" "),v("th",[t._v("键")]),t._v(" "),v("th",[t._v("备注")])])]),t._v(" "),v("tbody",[v("tr",[v("td",[t._v("id")]),t._v(" "),v("td",[t._v("lint")]),t._v(" "),v("td",[t._v("主键")]),t._v(" "),v("td",[t._v("auto_increment")])]),t._v(" "),v("tr",[v("td",[t._v("cid")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("评论id")])]),t._v(" "),v("tr",[v("td",[t._v("uid")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("用户id")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_create")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("创建时间")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_modified")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("修改时间")])])])]),t._v(" "),v("p",[t._v("reply表")]),t._v(" "),v("table",[v("thead",[v("tr",[v("th",[t._v("列名")]),t._v(" "),v("th",[t._v("实体属性类型")]),t._v(" "),v("th",[t._v("键")]),t._v(" "),v("th",[t._v("备注")])])]),t._v(" "),v("tbody",[v("tr",[v("td",[t._v("id")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td",[t._v("主键")]),t._v(" "),v("td",[t._v("auto_increment")])]),t._v(" "),v("tr",[v("td",[t._v("comment_id")]),t._v(" "),v("td",[t._v("ind")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("评论id")])]),t._v(" "),v("tr",[v("td",[t._v("content")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("回复的内容")])]),t._v(" "),v("tr",[v("td",[t._v("from_uid")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("回复评论者id")])]),t._v(" "),v("tr",[v("td",[t._v("from_name")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("回复评论者用户名")])]),t._v(" "),v("tr",[v("td",[t._v("from_avatar")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("回复评论者头像地址")])]),t._v(" "),v("tr",[v("td",[t._v("from_role")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("回复评论者角色")])]),t._v(" "),v("tr",[v("td",[t._v("to_uid")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("被回复的用户id")])]),t._v(" "),v("tr",[v("td",[t._v("to_name")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("被回复的用户名")])]),t._v(" "),v("tr",[v("td",[t._v("to_avatar")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td",[t._v("外键")]),t._v(" "),v("td",[t._v("被回复的用户头像地址")])]),t._v(" "),v("tr",[v("td",[t._v("status")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("是否封禁或逻辑删除该回复,0正常,1封禁")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_create")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("创建时间")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_modified")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("修改时间")])])])]),t._v(" "),v("h2",{attrs:{id:"文件模块"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#文件模块"}},[t._v("#")]),t._v(" 文件模块")]),t._v(" "),v("p",[t._v("file表")]),t._v(" "),v("table",[v("thead",[v("tr",[v("th",[t._v("列名")]),t._v(" "),v("th",[t._v("实体属性类型")]),t._v(" "),v("th",[t._v("键")]),t._v(" "),v("th",[t._v("备注")])])]),t._v(" "),v("tbody",[v("tr",[v("td",[t._v("id")]),t._v(" "),v("td",[t._v("long")]),t._v(" "),v("td",[t._v("主键")]),t._v(" "),v("td",[t._v("auto_increment")])]),t._v(" "),v("tr",[v("td",[t._v("uid")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("用户id")])]),t._v(" "),v("tr",[v("td",[t._v("name")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("文件名")])]),t._v(" "),v("tr",[v("td",[t._v("suffix")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("文件后缀格式")])]),t._v(" "),v("tr",[v("td",[t._v("folder_path")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("文件所在文件夹的路径")])]),t._v(" "),v("tr",[v("td",[t._v("file_path")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("文件绝对路径")])]),t._v(" "),v("tr",[v("td",[t._v("type")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("文件所属类型,例如avatar")])]),t._v(" "),v("tr",[v("td",[t._v("delete")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("是否删除")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_create")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("创建时间")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_modified")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("修改时间")])])])]),t._v(" "),v("h2",{attrs:{id:"判题机模块"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#判题机模块"}},[t._v("#")]),t._v(" 判题机模块")]),t._v(" "),v("p",[t._v("judge_server表")]),t._v(" "),v("table",[v("thead",[v("tr",[v("th",[t._v("列名")]),t._v(" "),v("th",[t._v("实体属性类型")]),t._v(" "),v("th",[t._v("键")]),t._v(" "),v("th",[t._v("备注")])])]),t._v(" "),v("tbody",[v("tr",[v("td",[t._v("id")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td",[t._v("主键")]),t._v(" "),v("td",[t._v("auto_increment")])]),t._v(" "),v("tr",[v("td",[t._v("name")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("判题服务名字")])]),t._v(" "),v("tr",[v("td",[t._v("ip")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("判题机ip")])]),t._v(" "),v("tr",[v("td",[t._v("port")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("判题机端口号")])]),t._v(" "),v("tr",[v("td",[t._v("url")]),t._v(" "),v("td",[t._v("String")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("ip:port")])]),t._v(" "),v("tr",[v("td",[t._v("cpu_core")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("判题机所在服务器cpu核心数")])]),t._v(" "),v("tr",[v("td",[t._v("task_number")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("当前判题数")])]),t._v(" "),v("tr",[v("td",[t._v("max_task_number")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("判题并发最大数")])]),t._v(" "),v("tr",[v("td",[t._v("status")]),t._v(" "),v("td",[t._v("int")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("0可用,1不可用")])]),t._v(" "),v("tr",[v("td",[t._v("version")]),t._v(" "),v("td",[t._v("long")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("版本控制")])]),t._v(" "),v("tr",[v("td",[t._v("is_remote")]),t._v(" "),v("td",[t._v("boolean")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("是否为远程判题vj")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_create")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("创建时间")])]),t._v(" "),v("tr",[v("td",[t._v("gmt_modified")]),t._v(" "),v("td",[t._v("datetime")]),t._v(" "),v("td"),t._v(" "),v("td",[t._v("修改时间")])])])])])}),[],!1,null,null,null);_.default=r.exports}}]); \ No newline at end of file diff --git a/docs/docs/.vuepress/dist/assets/js/19.52399553.js b/docs/docs/.vuepress/dist/assets/js/19.791523ad.js similarity index 99% rename from docs/docs/.vuepress/dist/assets/js/19.52399553.js rename to docs/docs/.vuepress/dist/assets/js/19.791523ad.js index dc8c86c7..ec91160a 100644 --- a/docs/docs/.vuepress/dist/assets/js/19.52399553.js +++ b/docs/docs/.vuepress/dist/assets/js/19.791523ad.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[19],{363:function(s,t,a){"use strict";a.r(t);var n=a(41),r=Object(n.a)({},(function(){var s=this,t=s.$createElement,a=s._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[a("h1",{attrs:{id:"安全沙盒的调用"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#安全沙盒的调用"}},[s._v("#")]),s._v(" 安全沙盒的调用")]),s._v(" "),a("blockquote",[a("p",[s._v("Judger-SandBox使用的是开源项目"),a("a",{attrs:{href:"https://github.com/criyle/go-judge",target:"_blank",rel:"noopener noreferrer"}},[s._v("go-judge"),a("OutboundLink")],1),s._v("Linux版本的可执行文件,更多调用方式请自行浏览"),a("a",{attrs:{href:"https://github.com/criyle/go-judge",target:"_blank",rel:"noopener noreferrer"}},[s._v("go-judge"),a("OutboundLink")],1)])]),s._v(" "),a("p",[s._v("HOJ用的是java来调用此沙盒,请看"),a("a",{attrs:{href:"https://gitee.com/himitzh0730/hoj/tree/master/hoj-springboot/JudgeServer/src/main/java/top/hcode/hoj/judge",target:"_blank",rel:"noopener noreferrer"}},[s._v("JudgeServer-judge"),a("OutboundLink")],1),s._v("下的SandboxRun.java")]),s._v(" "),a("p",[s._v("启动"),a("a",{attrs:{href:"https://gitee.com/himitzh0730/hoj/blob/master/judger/Judger-SandBox",target:"_blank",rel:"noopener noreferrer"}},[s._v("Judger-SandBox"),a("OutboundLink")],1),s._v(",默认监听5050端口")]),s._v(" "),a("h4",{attrs:{id:"验证是否启动"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#验证是否启动"}},[s._v("#")]),s._v(" 验证是否启动")]),s._v(" "),a("p",[s._v("访问:"),a("code",[s._v("http://localhost:5050/version")])]),s._v(" "),a("h4",{attrs:{id:"编译"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#编译"}},[s._v("#")]),s._v(" 编译")]),s._v(" "),a("p",[s._v("1.1 请求的url为")]),s._v(" "),a("blockquote",[a("p",[a("code",[s._v("http://localhost:5050/run")])])]),s._v(" "),a("p",[s._v("1.2 请求方式")]),s._v(" "),a("blockquote",[a("p",[s._v("POST")])]),s._v(" "),a("p",[s._v("1.3 请求参数")]),s._v(" "),a("blockquote",[a("p",[s._v("数据格式为json,内容如下")])]),s._v(" "),a("div",{staticClass:"language-shell line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"cmd"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"args"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"/usr/bin/g++"')]),s._v(", \n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"a.cc"')]),s._v(", \n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"-o"')]),s._v(", \n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"a"')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v(", \n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"env"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"PATH=/usr/bin:/bin"')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v(", \n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"files"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"content"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v(", \n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"name"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"stdout"')]),s._v(", \n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"max"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("10240")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v(", \n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"name"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"stderr"')]),s._v(", \n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"max"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("10240")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v(", \n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"cpuLimit"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("10000000000")]),s._v(", \n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"memoryLimit"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("104857600")]),s._v(", \n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"procLimit"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("50")]),s._v(", \n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"copyIn"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"a.cc"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"content"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"#include '),a("span",{pre:!0,attrs:{class:"token entity",title:"\\n"}},[s._v("\\n")]),s._v("using namespace std;"),a("span",{pre:!0,attrs:{class:"token entity",title:"\\n"}},[s._v("\\n")]),s._v("int main() {"),a("span",{pre:!0,attrs:{class:"token entity",title:"\\n"}},[s._v("\\n")]),s._v("int a, b;"),a("span",{pre:!0,attrs:{class:"token entity",title:"\\n"}},[s._v("\\n")]),s._v("cin >> a >> b;"),a("span",{pre:!0,attrs:{class:"token entity",title:"\\n"}},[s._v("\\n")]),s._v("cout << a + b << endl;"),a("span",{pre:!0,attrs:{class:"token entity",title:"\\n"}},[s._v("\\n")]),s._v('}"')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v(", \n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"copyOut"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"stdout"')]),s._v(", \n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"stderr"')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v(", \n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"copyOutCached"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"a.cc"')]),s._v(", \n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"a"')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v(", \n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"copyOutDir"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"1"')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br"),a("span",{staticClass:"line-number"},[s._v("9")]),a("br"),a("span",{staticClass:"line-number"},[s._v("10")]),a("br"),a("span",{staticClass:"line-number"},[s._v("11")]),a("br"),a("span",{staticClass:"line-number"},[s._v("12")]),a("br"),a("span",{staticClass:"line-number"},[s._v("13")]),a("br"),a("span",{staticClass:"line-number"},[s._v("14")]),a("br"),a("span",{staticClass:"line-number"},[s._v("15")]),a("br"),a("span",{staticClass:"line-number"},[s._v("16")]),a("br"),a("span",{staticClass:"line-number"},[s._v("17")]),a("br"),a("span",{staticClass:"line-number"},[s._v("18")]),a("br"),a("span",{staticClass:"line-number"},[s._v("19")]),a("br"),a("span",{staticClass:"line-number"},[s._v("20")]),a("br"),a("span",{staticClass:"line-number"},[s._v("21")]),a("br"),a("span",{staticClass:"line-number"},[s._v("22")]),a("br"),a("span",{staticClass:"line-number"},[s._v("23")]),a("br"),a("span",{staticClass:"line-number"},[s._v("24")]),a("br"),a("span",{staticClass:"line-number"},[s._v("25")]),a("br"),a("span",{staticClass:"line-number"},[s._v("26")]),a("br"),a("span",{staticClass:"line-number"},[s._v("27")]),a("br"),a("span",{staticClass:"line-number"},[s._v("28")]),a("br"),a("span",{staticClass:"line-number"},[s._v("29")]),a("br"),a("span",{staticClass:"line-number"},[s._v("30")]),a("br"),a("span",{staticClass:"line-number"},[s._v("31")]),a("br"),a("span",{staticClass:"line-number"},[s._v("32")]),a("br"),a("span",{staticClass:"line-number"},[s._v("33")]),a("br"),a("span",{staticClass:"line-number"},[s._v("34")]),a("br"),a("span",{staticClass:"line-number"},[s._v("35")]),a("br"),a("span",{staticClass:"line-number"},[s._v("36")]),a("br"),a("span",{staticClass:"line-number"},[s._v("37")]),a("br"),a("span",{staticClass:"line-number"},[s._v("38")]),a("br"),a("span",{staticClass:"line-number"},[s._v("39")]),a("br"),a("span",{staticClass:"line-number"},[s._v("40")]),a("br"),a("span",{staticClass:"line-number"},[s._v("41")]),a("br"),a("span",{staticClass:"line-number"},[s._v("42")]),a("br"),a("span",{staticClass:"line-number"},[s._v("43")]),a("br"),a("span",{staticClass:"line-number"},[s._v("44")]),a("br"),a("span",{staticClass:"line-number"},[s._v("45")]),a("br")])]),a("p",[s._v("1.4 返回的数据为json格式")]),s._v(" "),a("div",{staticClass:"language-json line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"status"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"Accepted"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"exitStatus"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"time"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("303225231")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"memory"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("32243712")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"runTime"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("524177700")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"files"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"stderr"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"stdout"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"fileIds"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"a"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"WDQL5TNLRRVB2KAP"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"a.cc"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"NOHPGGDTYQUFRSLJ"')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br"),a("span",{staticClass:"line-number"},[s._v("9")]),a("br"),a("span",{staticClass:"line-number"},[s._v("10")]),a("br"),a("span",{staticClass:"line-number"},[s._v("11")]),a("br"),a("span",{staticClass:"line-number"},[s._v("12")]),a("br"),a("span",{staticClass:"line-number"},[s._v("13")]),a("br"),a("span",{staticClass:"line-number"},[s._v("14")]),a("br"),a("span",{staticClass:"line-number"},[s._v("15")]),a("br"),a("span",{staticClass:"line-number"},[s._v("16")]),a("br"),a("span",{staticClass:"line-number"},[s._v("17")]),a("br")])]),a("h4",{attrs:{id:"运行与评测"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#运行与评测"}},[s._v("#")]),s._v(" 运行与评测")]),s._v(" "),a("p",[s._v("2.1 请求的url为")]),s._v(" "),a("blockquote",[a("p",[a("code",[s._v("http://localhost:5050/run")])])]),s._v(" "),a("p",[s._v("2.2 请求方式")]),s._v(" "),a("blockquote",[a("p",[s._v("POST")])]),s._v(" "),a("p",[s._v("2.3 请求参数")]),s._v(" "),a("blockquote",[a("p",[s._v("数据格式为json,内容如下")])]),s._v(" "),a("div",{staticClass:"language-json line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"cmd"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"args"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"a"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"env"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"PATH=/usr/bin:/bin"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"LANG=en_US.UTF-8"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"LC_ALL=en_US.UTF-8"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"LANGUAGE=en_US:en"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"files"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"src"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"/judge/test_case/problem_1010/1.in"')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"name"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"stdout"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"max"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("10240")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"name"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"stderr"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"max"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("10240")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"cpuLimit"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("10000000000")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"realCpuLimit"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("30000000000")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"stackLimit"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("134217728")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"memoryLimit"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("104811111")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"procLimit"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("50")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"copyIn"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"a"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"fileId"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"WDQL5TNLRRVB2KAP"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"copyOut"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"stdout"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"stderr"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br"),a("span",{staticClass:"line-number"},[s._v("9")]),a("br"),a("span",{staticClass:"line-number"},[s._v("10")]),a("br"),a("span",{staticClass:"line-number"},[s._v("11")]),a("br"),a("span",{staticClass:"line-number"},[s._v("12")]),a("br"),a("span",{staticClass:"line-number"},[s._v("13")]),a("br"),a("span",{staticClass:"line-number"},[s._v("14")]),a("br"),a("span",{staticClass:"line-number"},[s._v("15")]),a("br"),a("span",{staticClass:"line-number"},[s._v("16")]),a("br"),a("span",{staticClass:"line-number"},[s._v("17")]),a("br"),a("span",{staticClass:"line-number"},[s._v("18")]),a("br"),a("span",{staticClass:"line-number"},[s._v("19")]),a("br"),a("span",{staticClass:"line-number"},[s._v("20")]),a("br"),a("span",{staticClass:"line-number"},[s._v("21")]),a("br"),a("span",{staticClass:"line-number"},[s._v("22")]),a("br"),a("span",{staticClass:"line-number"},[s._v("23")]),a("br"),a("span",{staticClass:"line-number"},[s._v("24")]),a("br")])]),a("p",[s._v("2.4 返回的数据为json格式")]),s._v(" "),a("div",{staticClass:"language-json line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"status"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"Accepted"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"exitStatus"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"time"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("3171607")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"memory"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("475136")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"runTime"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("110396333")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"files"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"stderr"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"stdout"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"23\\n"')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br"),a("span",{staticClass:"line-number"},[s._v("9")]),a("br"),a("span",{staticClass:"line-number"},[s._v("10")]),a("br"),a("span",{staticClass:"line-number"},[s._v("11")]),a("br")])]),a("h4",{attrs:{id:"特殊判题"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#特殊判题"}},[s._v("#")]),s._v(" 特殊判题")]),s._v(" "),a("p",[s._v("3.1 请求的url为")]),s._v(" "),a("blockquote",[a("p",[a("code",[s._v("http://localhost:5050/run")])])]),s._v(" "),a("p",[s._v("3.2 请求方式")]),s._v(" "),a("blockquote",[a("p",[s._v("POST")])]),s._v(" "),a("p",[s._v("3.3 请求参数")]),s._v(" "),a("blockquote",[a("p",[s._v("数据格式为json,内容如下")])]),s._v(" "),a("div",{staticClass:"language-json line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"pipeMapping"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"in"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"max"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("16777216")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"index"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"fd"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"out"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"index"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"fd"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("0")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"cmd"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"stackLimit"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("134217728")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"cpuLimit"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("3000000000")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"realCpuLimit"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("9000000000")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"clockLimit"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("64")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"env"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"LANG=en_US.UTF-8"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"LANGUAGE=en_US:en"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"LC_ALL=en_US.UTF-8"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"PYTHONIOENCODING=utf-8"')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"copyOut"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"stderr"')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"args"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"/usr/bin/python3"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"main"')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"files"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"src"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"/judge/test_case/problem_1002/5.in"')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token null keyword"}},[s._v("null")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"max"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("16777216")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"name"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"stderr"')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"memoryLimit"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("536870912")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"copyIn"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"main"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"fileId"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"CGTRDEMKW5VAYN6O"')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"stackLimit"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("134217728")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"cpuLimit"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("8000000000")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"clockLimit"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("24000000000")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"env"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"LANG=en_US.UTF-8"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"LANGUAGE=en_US:en"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"LC_ALL=en_US.UTF-8"')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"copyOut"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"stdout"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"stderr"')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"args"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"/w/spj"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"/w/tmp"')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"files"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token null keyword"}},[s._v("null")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"max"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("16777216")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"name"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"stdout"')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"max"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("16777216")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"name"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"stderr"')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"memoryLimit"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("536870912")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"copyIn"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"spj"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"src"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"/judge/spj/1002/spj"')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"tmp"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"src"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"/judge/test_case/problem_1002/5.out"')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"procLimit"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("64")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br"),a("span",{staticClass:"line-number"},[s._v("9")]),a("br"),a("span",{staticClass:"line-number"},[s._v("10")]),a("br"),a("span",{staticClass:"line-number"},[s._v("11")]),a("br"),a("span",{staticClass:"line-number"},[s._v("12")]),a("br"),a("span",{staticClass:"line-number"},[s._v("13")]),a("br"),a("span",{staticClass:"line-number"},[s._v("14")]),a("br"),a("span",{staticClass:"line-number"},[s._v("15")]),a("br"),a("span",{staticClass:"line-number"},[s._v("16")]),a("br"),a("span",{staticClass:"line-number"},[s._v("17")]),a("br"),a("span",{staticClass:"line-number"},[s._v("18")]),a("br"),a("span",{staticClass:"line-number"},[s._v("19")]),a("br"),a("span",{staticClass:"line-number"},[s._v("20")]),a("br"),a("span",{staticClass:"line-number"},[s._v("21")]),a("br"),a("span",{staticClass:"line-number"},[s._v("22")]),a("br"),a("span",{staticClass:"line-number"},[s._v("23")]),a("br"),a("span",{staticClass:"line-number"},[s._v("24")]),a("br"),a("span",{staticClass:"line-number"},[s._v("25")]),a("br"),a("span",{staticClass:"line-number"},[s._v("26")]),a("br"),a("span",{staticClass:"line-number"},[s._v("27")]),a("br"),a("span",{staticClass:"line-number"},[s._v("28")]),a("br"),a("span",{staticClass:"line-number"},[s._v("29")]),a("br"),a("span",{staticClass:"line-number"},[s._v("30")]),a("br"),a("span",{staticClass:"line-number"},[s._v("31")]),a("br"),a("span",{staticClass:"line-number"},[s._v("32")]),a("br"),a("span",{staticClass:"line-number"},[s._v("33")]),a("br"),a("span",{staticClass:"line-number"},[s._v("34")]),a("br"),a("span",{staticClass:"line-number"},[s._v("35")]),a("br"),a("span",{staticClass:"line-number"},[s._v("36")]),a("br"),a("span",{staticClass:"line-number"},[s._v("37")]),a("br"),a("span",{staticClass:"line-number"},[s._v("38")]),a("br"),a("span",{staticClass:"line-number"},[s._v("39")]),a("br"),a("span",{staticClass:"line-number"},[s._v("40")]),a("br"),a("span",{staticClass:"line-number"},[s._v("41")]),a("br"),a("span",{staticClass:"line-number"},[s._v("42")]),a("br"),a("span",{staticClass:"line-number"},[s._v("43")]),a("br"),a("span",{staticClass:"line-number"},[s._v("44")]),a("br"),a("span",{staticClass:"line-number"},[s._v("45")]),a("br"),a("span",{staticClass:"line-number"},[s._v("46")]),a("br"),a("span",{staticClass:"line-number"},[s._v("47")]),a("br"),a("span",{staticClass:"line-number"},[s._v("48")]),a("br"),a("span",{staticClass:"line-number"},[s._v("49")]),a("br"),a("span",{staticClass:"line-number"},[s._v("50")]),a("br"),a("span",{staticClass:"line-number"},[s._v("51")]),a("br"),a("span",{staticClass:"line-number"},[s._v("52")]),a("br"),a("span",{staticClass:"line-number"},[s._v("53")]),a("br"),a("span",{staticClass:"line-number"},[s._v("54")]),a("br"),a("span",{staticClass:"line-number"},[s._v("55")]),a("br"),a("span",{staticClass:"line-number"},[s._v("56")]),a("br"),a("span",{staticClass:"line-number"},[s._v("57")]),a("br"),a("span",{staticClass:"line-number"},[s._v("58")]),a("br"),a("span",{staticClass:"line-number"},[s._v("59")]),a("br"),a("span",{staticClass:"line-number"},[s._v("60")]),a("br"),a("span",{staticClass:"line-number"},[s._v("61")]),a("br"),a("span",{staticClass:"line-number"},[s._v("62")]),a("br"),a("span",{staticClass:"line-number"},[s._v("63")]),a("br"),a("span",{staticClass:"line-number"},[s._v("64")]),a("br"),a("span",{staticClass:"line-number"},[s._v("65")]),a("br"),a("span",{staticClass:"line-number"},[s._v("66")]),a("br"),a("span",{staticClass:"line-number"},[s._v("67")]),a("br"),a("span",{staticClass:"line-number"},[s._v("68")]),a("br"),a("span",{staticClass:"line-number"},[s._v("69")]),a("br"),a("span",{staticClass:"line-number"},[s._v("70")]),a("br"),a("span",{staticClass:"line-number"},[s._v("71")]),a("br"),a("span",{staticClass:"line-number"},[s._v("72")]),a("br"),a("span",{staticClass:"line-number"},[s._v("73")]),a("br"),a("span",{staticClass:"line-number"},[s._v("74")]),a("br"),a("span",{staticClass:"line-number"},[s._v("75")]),a("br"),a("span",{staticClass:"line-number"},[s._v("76")]),a("br"),a("span",{staticClass:"line-number"},[s._v("77")]),a("br"),a("span",{staticClass:"line-number"},[s._v("78")]),a("br"),a("span",{staticClass:"line-number"},[s._v("79")]),a("br"),a("span",{staticClass:"line-number"},[s._v("80")]),a("br"),a("span",{staticClass:"line-number"},[s._v("81")]),a("br"),a("span",{staticClass:"line-number"},[s._v("82")]),a("br"),a("span",{staticClass:"line-number"},[s._v("83")]),a("br"),a("span",{staticClass:"line-number"},[s._v("84")]),a("br"),a("span",{staticClass:"line-number"},[s._v("85")]),a("br"),a("span",{staticClass:"line-number"},[s._v("86")]),a("br"),a("span",{staticClass:"line-number"},[s._v("87")]),a("br"),a("span",{staticClass:"line-number"},[s._v("88")]),a("br"),a("span",{staticClass:"line-number"},[s._v("89")]),a("br"),a("span",{staticClass:"line-number"},[s._v("90")]),a("br"),a("span",{staticClass:"line-number"},[s._v("91")]),a("br")])]),a("p",[s._v("3.4 返回的数据为json格式")]),s._v(" "),a("div",{staticClass:"language-json line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"status"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"Accepted"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"exitStatus"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"time"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("1545123")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"memory"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("253952")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"runTime"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("4148800")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"files"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"stderr"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"fileIds"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"status"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"Accepted"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"exitStatus"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"time"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("1501463")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"memory"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("253952")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"runTime"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("5897700")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"files"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"stderr"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"stdout"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"fileIds"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br"),a("span",{staticClass:"line-number"},[s._v("9")]),a("br"),a("span",{staticClass:"line-number"},[s._v("10")]),a("br"),a("span",{staticClass:"line-number"},[s._v("11")]),a("br"),a("span",{staticClass:"line-number"},[s._v("12")]),a("br"),a("span",{staticClass:"line-number"},[s._v("13")]),a("br"),a("span",{staticClass:"line-number"},[s._v("14")]),a("br"),a("span",{staticClass:"line-number"},[s._v("15")]),a("br"),a("span",{staticClass:"line-number"},[s._v("16")]),a("br"),a("span",{staticClass:"line-number"},[s._v("17")]),a("br"),a("span",{staticClass:"line-number"},[s._v("18")]),a("br"),a("span",{staticClass:"line-number"},[s._v("19")]),a("br"),a("span",{staticClass:"line-number"},[s._v("20")]),a("br"),a("span",{staticClass:"line-number"},[s._v("21")]),a("br"),a("span",{staticClass:"line-number"},[s._v("22")]),a("br"),a("span",{staticClass:"line-number"},[s._v("23")]),a("br"),a("span",{staticClass:"line-number"},[s._v("24")]),a("br"),a("span",{staticClass:"line-number"},[s._v("25")]),a("br")])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[19],{364:function(s,t,a){"use strict";a.r(t);var n=a(41),r=Object(n.a)({},(function(){var s=this,t=s.$createElement,a=s._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[a("h1",{attrs:{id:"安全沙盒的调用"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#安全沙盒的调用"}},[s._v("#")]),s._v(" 安全沙盒的调用")]),s._v(" "),a("blockquote",[a("p",[s._v("Judger-SandBox使用的是开源项目"),a("a",{attrs:{href:"https://github.com/criyle/go-judge",target:"_blank",rel:"noopener noreferrer"}},[s._v("go-judge"),a("OutboundLink")],1),s._v("Linux版本的可执行文件,更多调用方式请自行浏览"),a("a",{attrs:{href:"https://github.com/criyle/go-judge",target:"_blank",rel:"noopener noreferrer"}},[s._v("go-judge"),a("OutboundLink")],1)])]),s._v(" "),a("p",[s._v("HOJ用的是java来调用此沙盒,请看"),a("a",{attrs:{href:"https://gitee.com/himitzh0730/hoj/tree/master/hoj-springboot/JudgeServer/src/main/java/top/hcode/hoj/judge",target:"_blank",rel:"noopener noreferrer"}},[s._v("JudgeServer-judge"),a("OutboundLink")],1),s._v("下的SandboxRun.java")]),s._v(" "),a("p",[s._v("启动"),a("a",{attrs:{href:"https://gitee.com/himitzh0730/hoj/blob/master/judger/Judger-SandBox",target:"_blank",rel:"noopener noreferrer"}},[s._v("Judger-SandBox"),a("OutboundLink")],1),s._v(",默认监听5050端口")]),s._v(" "),a("h4",{attrs:{id:"验证是否启动"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#验证是否启动"}},[s._v("#")]),s._v(" 验证是否启动")]),s._v(" "),a("p",[s._v("访问:"),a("code",[s._v("http://localhost:5050/version")])]),s._v(" "),a("h4",{attrs:{id:"编译"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#编译"}},[s._v("#")]),s._v(" 编译")]),s._v(" "),a("p",[s._v("1.1 请求的url为")]),s._v(" "),a("blockquote",[a("p",[a("code",[s._v("http://localhost:5050/run")])])]),s._v(" "),a("p",[s._v("1.2 请求方式")]),s._v(" "),a("blockquote",[a("p",[s._v("POST")])]),s._v(" "),a("p",[s._v("1.3 请求参数")]),s._v(" "),a("blockquote",[a("p",[s._v("数据格式为json,内容如下")])]),s._v(" "),a("div",{staticClass:"language-shell line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"cmd"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"args"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"/usr/bin/g++"')]),s._v(", \n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"a.cc"')]),s._v(", \n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"-o"')]),s._v(", \n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"a"')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v(", \n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"env"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"PATH=/usr/bin:/bin"')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v(", \n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"files"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"content"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v(", \n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"name"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"stdout"')]),s._v(", \n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"max"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("10240")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v(", \n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"name"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"stderr"')]),s._v(", \n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"max"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("10240")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v(", \n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"cpuLimit"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("10000000000")]),s._v(", \n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"memoryLimit"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("104857600")]),s._v(", \n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"procLimit"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("50")]),s._v(", \n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"copyIn"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"a.cc"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"content"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"#include '),a("span",{pre:!0,attrs:{class:"token entity",title:"\\n"}},[s._v("\\n")]),s._v("using namespace std;"),a("span",{pre:!0,attrs:{class:"token entity",title:"\\n"}},[s._v("\\n")]),s._v("int main() {"),a("span",{pre:!0,attrs:{class:"token entity",title:"\\n"}},[s._v("\\n")]),s._v("int a, b;"),a("span",{pre:!0,attrs:{class:"token entity",title:"\\n"}},[s._v("\\n")]),s._v("cin >> a >> b;"),a("span",{pre:!0,attrs:{class:"token entity",title:"\\n"}},[s._v("\\n")]),s._v("cout << a + b << endl;"),a("span",{pre:!0,attrs:{class:"token entity",title:"\\n"}},[s._v("\\n")]),s._v('}"')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v(", \n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"copyOut"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"stdout"')]),s._v(", \n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"stderr"')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v(", \n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"copyOutCached"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"a.cc"')]),s._v(", \n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"a"')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v(", \n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"copyOutDir"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"1"')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br"),a("span",{staticClass:"line-number"},[s._v("9")]),a("br"),a("span",{staticClass:"line-number"},[s._v("10")]),a("br"),a("span",{staticClass:"line-number"},[s._v("11")]),a("br"),a("span",{staticClass:"line-number"},[s._v("12")]),a("br"),a("span",{staticClass:"line-number"},[s._v("13")]),a("br"),a("span",{staticClass:"line-number"},[s._v("14")]),a("br"),a("span",{staticClass:"line-number"},[s._v("15")]),a("br"),a("span",{staticClass:"line-number"},[s._v("16")]),a("br"),a("span",{staticClass:"line-number"},[s._v("17")]),a("br"),a("span",{staticClass:"line-number"},[s._v("18")]),a("br"),a("span",{staticClass:"line-number"},[s._v("19")]),a("br"),a("span",{staticClass:"line-number"},[s._v("20")]),a("br"),a("span",{staticClass:"line-number"},[s._v("21")]),a("br"),a("span",{staticClass:"line-number"},[s._v("22")]),a("br"),a("span",{staticClass:"line-number"},[s._v("23")]),a("br"),a("span",{staticClass:"line-number"},[s._v("24")]),a("br"),a("span",{staticClass:"line-number"},[s._v("25")]),a("br"),a("span",{staticClass:"line-number"},[s._v("26")]),a("br"),a("span",{staticClass:"line-number"},[s._v("27")]),a("br"),a("span",{staticClass:"line-number"},[s._v("28")]),a("br"),a("span",{staticClass:"line-number"},[s._v("29")]),a("br"),a("span",{staticClass:"line-number"},[s._v("30")]),a("br"),a("span",{staticClass:"line-number"},[s._v("31")]),a("br"),a("span",{staticClass:"line-number"},[s._v("32")]),a("br"),a("span",{staticClass:"line-number"},[s._v("33")]),a("br"),a("span",{staticClass:"line-number"},[s._v("34")]),a("br"),a("span",{staticClass:"line-number"},[s._v("35")]),a("br"),a("span",{staticClass:"line-number"},[s._v("36")]),a("br"),a("span",{staticClass:"line-number"},[s._v("37")]),a("br"),a("span",{staticClass:"line-number"},[s._v("38")]),a("br"),a("span",{staticClass:"line-number"},[s._v("39")]),a("br"),a("span",{staticClass:"line-number"},[s._v("40")]),a("br"),a("span",{staticClass:"line-number"},[s._v("41")]),a("br"),a("span",{staticClass:"line-number"},[s._v("42")]),a("br"),a("span",{staticClass:"line-number"},[s._v("43")]),a("br"),a("span",{staticClass:"line-number"},[s._v("44")]),a("br"),a("span",{staticClass:"line-number"},[s._v("45")]),a("br")])]),a("p",[s._v("1.4 返回的数据为json格式")]),s._v(" "),a("div",{staticClass:"language-json line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"status"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"Accepted"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"exitStatus"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"time"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("303225231")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"memory"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("32243712")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"runTime"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("524177700")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"files"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"stderr"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"stdout"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"fileIds"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"a"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"WDQL5TNLRRVB2KAP"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"a.cc"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"NOHPGGDTYQUFRSLJ"')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br"),a("span",{staticClass:"line-number"},[s._v("9")]),a("br"),a("span",{staticClass:"line-number"},[s._v("10")]),a("br"),a("span",{staticClass:"line-number"},[s._v("11")]),a("br"),a("span",{staticClass:"line-number"},[s._v("12")]),a("br"),a("span",{staticClass:"line-number"},[s._v("13")]),a("br"),a("span",{staticClass:"line-number"},[s._v("14")]),a("br"),a("span",{staticClass:"line-number"},[s._v("15")]),a("br"),a("span",{staticClass:"line-number"},[s._v("16")]),a("br"),a("span",{staticClass:"line-number"},[s._v("17")]),a("br")])]),a("h4",{attrs:{id:"运行与评测"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#运行与评测"}},[s._v("#")]),s._v(" 运行与评测")]),s._v(" "),a("p",[s._v("2.1 请求的url为")]),s._v(" "),a("blockquote",[a("p",[a("code",[s._v("http://localhost:5050/run")])])]),s._v(" "),a("p",[s._v("2.2 请求方式")]),s._v(" "),a("blockquote",[a("p",[s._v("POST")])]),s._v(" "),a("p",[s._v("2.3 请求参数")]),s._v(" "),a("blockquote",[a("p",[s._v("数据格式为json,内容如下")])]),s._v(" "),a("div",{staticClass:"language-json line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"cmd"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"args"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"a"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"env"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"PATH=/usr/bin:/bin"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"LANG=en_US.UTF-8"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"LC_ALL=en_US.UTF-8"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"LANGUAGE=en_US:en"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"files"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"src"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"/judge/test_case/problem_1010/1.in"')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"name"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"stdout"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"max"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("10240")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"name"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"stderr"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"max"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("10240")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"cpuLimit"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("10000000000")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"realCpuLimit"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("30000000000")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"stackLimit"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("134217728")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"memoryLimit"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("104811111")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"procLimit"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("50")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"copyIn"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"a"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"fileId"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"WDQL5TNLRRVB2KAP"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"copyOut"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"stdout"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"stderr"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br"),a("span",{staticClass:"line-number"},[s._v("9")]),a("br"),a("span",{staticClass:"line-number"},[s._v("10")]),a("br"),a("span",{staticClass:"line-number"},[s._v("11")]),a("br"),a("span",{staticClass:"line-number"},[s._v("12")]),a("br"),a("span",{staticClass:"line-number"},[s._v("13")]),a("br"),a("span",{staticClass:"line-number"},[s._v("14")]),a("br"),a("span",{staticClass:"line-number"},[s._v("15")]),a("br"),a("span",{staticClass:"line-number"},[s._v("16")]),a("br"),a("span",{staticClass:"line-number"},[s._v("17")]),a("br"),a("span",{staticClass:"line-number"},[s._v("18")]),a("br"),a("span",{staticClass:"line-number"},[s._v("19")]),a("br"),a("span",{staticClass:"line-number"},[s._v("20")]),a("br"),a("span",{staticClass:"line-number"},[s._v("21")]),a("br"),a("span",{staticClass:"line-number"},[s._v("22")]),a("br"),a("span",{staticClass:"line-number"},[s._v("23")]),a("br"),a("span",{staticClass:"line-number"},[s._v("24")]),a("br")])]),a("p",[s._v("2.4 返回的数据为json格式")]),s._v(" "),a("div",{staticClass:"language-json line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"status"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"Accepted"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"exitStatus"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"time"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("3171607")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"memory"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("475136")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"runTime"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("110396333")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"files"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"stderr"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"stdout"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"23\\n"')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br"),a("span",{staticClass:"line-number"},[s._v("9")]),a("br"),a("span",{staticClass:"line-number"},[s._v("10")]),a("br"),a("span",{staticClass:"line-number"},[s._v("11")]),a("br")])]),a("h4",{attrs:{id:"特殊判题"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#特殊判题"}},[s._v("#")]),s._v(" 特殊判题")]),s._v(" "),a("p",[s._v("3.1 请求的url为")]),s._v(" "),a("blockquote",[a("p",[a("code",[s._v("http://localhost:5050/run")])])]),s._v(" "),a("p",[s._v("3.2 请求方式")]),s._v(" "),a("blockquote",[a("p",[s._v("POST")])]),s._v(" "),a("p",[s._v("3.3 请求参数")]),s._v(" "),a("blockquote",[a("p",[s._v("数据格式为json,内容如下")])]),s._v(" "),a("div",{staticClass:"language-json line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"pipeMapping"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"in"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"max"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("16777216")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"index"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"fd"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"out"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"index"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"fd"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("0")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"cmd"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"stackLimit"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("134217728")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"cpuLimit"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("3000000000")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"realCpuLimit"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("9000000000")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"clockLimit"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("64")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"env"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"LANG=en_US.UTF-8"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"LANGUAGE=en_US:en"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"LC_ALL=en_US.UTF-8"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"PYTHONIOENCODING=utf-8"')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"copyOut"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"stderr"')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"args"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"/usr/bin/python3"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"main"')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"files"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"src"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"/judge/test_case/problem_1002/5.in"')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token null keyword"}},[s._v("null")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"max"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("16777216")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"name"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"stderr"')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"memoryLimit"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("536870912")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"copyIn"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"main"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"fileId"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"CGTRDEMKW5VAYN6O"')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"stackLimit"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("134217728")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"cpuLimit"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("8000000000")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"clockLimit"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("24000000000")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"env"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"LANG=en_US.UTF-8"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"LANGUAGE=en_US:en"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"LC_ALL=en_US.UTF-8"')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"copyOut"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"stdout"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"stderr"')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"args"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"/w/spj"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"/w/tmp"')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"files"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token null keyword"}},[s._v("null")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"max"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("16777216")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"name"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"stdout"')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"max"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("16777216")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"name"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"stderr"')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"memoryLimit"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("536870912")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"copyIn"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"spj"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"src"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"/judge/spj/1002/spj"')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"tmp"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"src"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"/judge/test_case/problem_1002/5.out"')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"procLimit"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("64")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br"),a("span",{staticClass:"line-number"},[s._v("9")]),a("br"),a("span",{staticClass:"line-number"},[s._v("10")]),a("br"),a("span",{staticClass:"line-number"},[s._v("11")]),a("br"),a("span",{staticClass:"line-number"},[s._v("12")]),a("br"),a("span",{staticClass:"line-number"},[s._v("13")]),a("br"),a("span",{staticClass:"line-number"},[s._v("14")]),a("br"),a("span",{staticClass:"line-number"},[s._v("15")]),a("br"),a("span",{staticClass:"line-number"},[s._v("16")]),a("br"),a("span",{staticClass:"line-number"},[s._v("17")]),a("br"),a("span",{staticClass:"line-number"},[s._v("18")]),a("br"),a("span",{staticClass:"line-number"},[s._v("19")]),a("br"),a("span",{staticClass:"line-number"},[s._v("20")]),a("br"),a("span",{staticClass:"line-number"},[s._v("21")]),a("br"),a("span",{staticClass:"line-number"},[s._v("22")]),a("br"),a("span",{staticClass:"line-number"},[s._v("23")]),a("br"),a("span",{staticClass:"line-number"},[s._v("24")]),a("br"),a("span",{staticClass:"line-number"},[s._v("25")]),a("br"),a("span",{staticClass:"line-number"},[s._v("26")]),a("br"),a("span",{staticClass:"line-number"},[s._v("27")]),a("br"),a("span",{staticClass:"line-number"},[s._v("28")]),a("br"),a("span",{staticClass:"line-number"},[s._v("29")]),a("br"),a("span",{staticClass:"line-number"},[s._v("30")]),a("br"),a("span",{staticClass:"line-number"},[s._v("31")]),a("br"),a("span",{staticClass:"line-number"},[s._v("32")]),a("br"),a("span",{staticClass:"line-number"},[s._v("33")]),a("br"),a("span",{staticClass:"line-number"},[s._v("34")]),a("br"),a("span",{staticClass:"line-number"},[s._v("35")]),a("br"),a("span",{staticClass:"line-number"},[s._v("36")]),a("br"),a("span",{staticClass:"line-number"},[s._v("37")]),a("br"),a("span",{staticClass:"line-number"},[s._v("38")]),a("br"),a("span",{staticClass:"line-number"},[s._v("39")]),a("br"),a("span",{staticClass:"line-number"},[s._v("40")]),a("br"),a("span",{staticClass:"line-number"},[s._v("41")]),a("br"),a("span",{staticClass:"line-number"},[s._v("42")]),a("br"),a("span",{staticClass:"line-number"},[s._v("43")]),a("br"),a("span",{staticClass:"line-number"},[s._v("44")]),a("br"),a("span",{staticClass:"line-number"},[s._v("45")]),a("br"),a("span",{staticClass:"line-number"},[s._v("46")]),a("br"),a("span",{staticClass:"line-number"},[s._v("47")]),a("br"),a("span",{staticClass:"line-number"},[s._v("48")]),a("br"),a("span",{staticClass:"line-number"},[s._v("49")]),a("br"),a("span",{staticClass:"line-number"},[s._v("50")]),a("br"),a("span",{staticClass:"line-number"},[s._v("51")]),a("br"),a("span",{staticClass:"line-number"},[s._v("52")]),a("br"),a("span",{staticClass:"line-number"},[s._v("53")]),a("br"),a("span",{staticClass:"line-number"},[s._v("54")]),a("br"),a("span",{staticClass:"line-number"},[s._v("55")]),a("br"),a("span",{staticClass:"line-number"},[s._v("56")]),a("br"),a("span",{staticClass:"line-number"},[s._v("57")]),a("br"),a("span",{staticClass:"line-number"},[s._v("58")]),a("br"),a("span",{staticClass:"line-number"},[s._v("59")]),a("br"),a("span",{staticClass:"line-number"},[s._v("60")]),a("br"),a("span",{staticClass:"line-number"},[s._v("61")]),a("br"),a("span",{staticClass:"line-number"},[s._v("62")]),a("br"),a("span",{staticClass:"line-number"},[s._v("63")]),a("br"),a("span",{staticClass:"line-number"},[s._v("64")]),a("br"),a("span",{staticClass:"line-number"},[s._v("65")]),a("br"),a("span",{staticClass:"line-number"},[s._v("66")]),a("br"),a("span",{staticClass:"line-number"},[s._v("67")]),a("br"),a("span",{staticClass:"line-number"},[s._v("68")]),a("br"),a("span",{staticClass:"line-number"},[s._v("69")]),a("br"),a("span",{staticClass:"line-number"},[s._v("70")]),a("br"),a("span",{staticClass:"line-number"},[s._v("71")]),a("br"),a("span",{staticClass:"line-number"},[s._v("72")]),a("br"),a("span",{staticClass:"line-number"},[s._v("73")]),a("br"),a("span",{staticClass:"line-number"},[s._v("74")]),a("br"),a("span",{staticClass:"line-number"},[s._v("75")]),a("br"),a("span",{staticClass:"line-number"},[s._v("76")]),a("br"),a("span",{staticClass:"line-number"},[s._v("77")]),a("br"),a("span",{staticClass:"line-number"},[s._v("78")]),a("br"),a("span",{staticClass:"line-number"},[s._v("79")]),a("br"),a("span",{staticClass:"line-number"},[s._v("80")]),a("br"),a("span",{staticClass:"line-number"},[s._v("81")]),a("br"),a("span",{staticClass:"line-number"},[s._v("82")]),a("br"),a("span",{staticClass:"line-number"},[s._v("83")]),a("br"),a("span",{staticClass:"line-number"},[s._v("84")]),a("br"),a("span",{staticClass:"line-number"},[s._v("85")]),a("br"),a("span",{staticClass:"line-number"},[s._v("86")]),a("br"),a("span",{staticClass:"line-number"},[s._v("87")]),a("br"),a("span",{staticClass:"line-number"},[s._v("88")]),a("br"),a("span",{staticClass:"line-number"},[s._v("89")]),a("br"),a("span",{staticClass:"line-number"},[s._v("90")]),a("br"),a("span",{staticClass:"line-number"},[s._v("91")]),a("br")])]),a("p",[s._v("3.4 返回的数据为json格式")]),s._v(" "),a("div",{staticClass:"language-json line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"status"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"Accepted"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"exitStatus"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"time"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("1545123")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"memory"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("253952")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"runTime"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("4148800")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"files"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"stderr"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"fileIds"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"status"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"Accepted"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"exitStatus"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"time"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("1501463")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"memory"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("253952")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"runTime"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("5897700")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"files"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"stderr"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"stdout"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"fileIds"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br"),a("span",{staticClass:"line-number"},[s._v("9")]),a("br"),a("span",{staticClass:"line-number"},[s._v("10")]),a("br"),a("span",{staticClass:"line-number"},[s._v("11")]),a("br"),a("span",{staticClass:"line-number"},[s._v("12")]),a("br"),a("span",{staticClass:"line-number"},[s._v("13")]),a("br"),a("span",{staticClass:"line-number"},[s._v("14")]),a("br"),a("span",{staticClass:"line-number"},[s._v("15")]),a("br"),a("span",{staticClass:"line-number"},[s._v("16")]),a("br"),a("span",{staticClass:"line-number"},[s._v("17")]),a("br"),a("span",{staticClass:"line-number"},[s._v("18")]),a("br"),a("span",{staticClass:"line-number"},[s._v("19")]),a("br"),a("span",{staticClass:"line-number"},[s._v("20")]),a("br"),a("span",{staticClass:"line-number"},[s._v("21")]),a("br"),a("span",{staticClass:"line-number"},[s._v("22")]),a("br"),a("span",{staticClass:"line-number"},[s._v("23")]),a("br"),a("span",{staticClass:"line-number"},[s._v("24")]),a("br"),a("span",{staticClass:"line-number"},[s._v("25")]),a("br")])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/docs/docs/.vuepress/dist/assets/js/20.2b4588e4.js b/docs/docs/.vuepress/dist/assets/js/20.4049e044.js similarity index 99% rename from docs/docs/.vuepress/dist/assets/js/20.2b4588e4.js rename to docs/docs/.vuepress/dist/assets/js/20.4049e044.js index a207ef82..35b441af 100644 --- a/docs/docs/.vuepress/dist/assets/js/20.2b4588e4.js +++ b/docs/docs/.vuepress/dist/assets/js/20.4049e044.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[20],{374: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("h2",{attrs:{id:"什么是hoj"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#什么是hoj"}},[t._v("#")]),t._v(" 什么是HOJ?")]),t._v(" "),a("p",[t._v("HOJ,全称 Hcode Online Judge,是基于前后端分离,分布式架构的在线测评系统。")]),t._v(" "),a("p",[a("a",{attrs:{href:"http://openjdk.java.net/",target:"_blank",rel:"noopener noreferrer"}},[a("img",{attrs:{src:"https://img.shields.io/badge/Java-1.8-informational",alt:"Java"}}),a("OutboundLink")],1),t._v(" "),a("a",{attrs:{href:"https://spring.io/projects/spring-boot",target:"_blank",rel:"noopener noreferrer"}},[a("img",{attrs:{src:"https://img.shields.io/badge/Spring%20Boot-2.2.6.RELEASE-success",alt:"Spring Boot"}}),a("OutboundLink")],1),t._v(" "),a("a",{attrs:{href:"https://spring.io/projects/spring-cloud-alibaba",target:"_blank",rel:"noopener noreferrer"}},[a("img",{attrs:{src:"https://img.shields.io/badge/Spring%20Cloud%20Alibaba-2.2.1.RELEASE-success",alt:"SpringCloud Alibaba"}}),a("OutboundLink")],1),t._v(" "),a("a",{attrs:{href:"https://www.mysql.com/",target:"_blank",rel:"noopener noreferrer"}},[a("img",{attrs:{src:"https://img.shields.io/badge/MySQL-8.0.19-blue",alt:"MySQL"}}),a("OutboundLink")],1),t._v(" "),a("a",{attrs:{href:"https://redis.io/",target:"_blank",rel:"noopener noreferrer"}},[a("img",{attrs:{src:"https://img.shields.io/badge/Redis-5.0.9-red",alt:"Redis"}}),a("OutboundLink")],1),t._v(" "),a("a",{attrs:{href:"https://github.com/alibaba/nacos",target:"_blank",rel:"noopener noreferrer"}},[a("img",{attrs:{src:"https://img.shields.io/badge/Nacos-1.4.1-%23267DF7",alt:"Nacos"}}),a("OutboundLink")],1),t._v(" "),a("a",{attrs:{href:"https://cn.vuejs.org/",target:"_blank",rel:"noopener noreferrer"}},[a("img",{attrs:{src:"https://img.shields.io/badge/Vue-2.6.11-success",alt:"Vue"}}),a("OutboundLink")],1)]),t._v(" "),a("h2",{attrs:{id:"为什么要开发hoj"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#为什么要开发hoj"}},[t._v("#")]),t._v(" 为什么要开发HOJ?")]),t._v(" "),a("p",[t._v("因为这是Himit_ZH的毕业设计。")]),t._v(" "),a("h2",{attrs:{id:"hoj的特点"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#hoj的特点"}},[t._v("#")]),t._v(" HOJ的特点")]),t._v(" "),a("ul",[a("li",[t._v("适应:支持手机端,响应式布局")]),t._v(" "),a("li",[t._v("设计:界面简约大方")]),t._v(" "),a("li",[t._v("安全:判题使用 cgroup 隔离用户程序,杜绝卡评测;网站权限控制完善")]),t._v(" "),a("li",[t._v("扩展:支持分布式判题")]),t._v(" "),a("li",[t._v("简单:高度集中网站配置")]),t._v(" "),a("li",[t._v("功能:支持ACM、OI题目及比赛")]),t._v(" "),a("li",[t._v("多样:支持自身题目数据评测,也支持其它知名OJ(HDU、Codeforces)题目的爬取与提交")])]),t._v(" "),a("h2",{attrs:{id:"截图"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#截图"}},[t._v("#")]),t._v(" 截图")]),t._v(" "),a("blockquote",[a("p",[t._v("首页页面")])]),t._v(" "),a("p",[a("img",{attrs:{src:"https://img-blog.csdnimg.cn/20210509232352226.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1MzA5Nw==,size_16,color_FFFFFF,t_70",alt:"首页"}})]),t._v(" "),a("blockquote",[a("p",[t._v("题目列表页")])]),t._v(" "),a("p",[a("img",{attrs:{src:"https://img-blog.csdnimg.cn/20210509232501952.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1MzA5Nw==,size_16,color_FFFFFF,t_70",alt:"题目列表"}})]),t._v(" "),a("blockquote",[a("p",[t._v("题目详情页")])]),t._v(" "),a("p",[a("img",{attrs:{src:"https://img-blog.csdnimg.cn/20210509232609398.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1MzA5Nw==,size_16,color_FFFFFF,t_70",alt:"题目详情页"}})]),t._v(" "),a("blockquote",[a("p",[t._v("比赛列表页")])]),t._v(" "),a("p",[a("img",{attrs:{src:"https://img-blog.csdnimg.cn/20210509232701288.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1MzA5Nw==,size_16,color_FFFFFF,t_70",alt:"比赛列表"}})]),t._v(" "),a("blockquote",[a("p",[t._v("比赛详情首页")])]),t._v(" "),a("p",[a("img",{attrs:{src:"https://img-blog.csdnimg.cn/20210509232843932.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1MzA5Nw==,size_16,color_FFFFFF,t_70#pic_center",alt:"比赛详情"}})]),t._v(" "),a("blockquote",[a("p",[t._v("提交列表页")])]),t._v(" "),a("p",[a("img",{attrs:{src:"https://img-blog.csdnimg.cn/20210513134128914.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1MzA5Nw==,size_16,color_FFFFFF,t_70",alt:"在这里插入图片描述"}})]),t._v(" "),a("blockquote",[a("p",[t._v("排行榜")])]),t._v(" "),a("p",[a("img",{attrs:{src:"https://cdn.jsdelivr.net/gh/HimitZH/CDN/images/hoj9.png",alt:"hoj9"}})]),t._v(" "),a("blockquote",[a("p",[t._v("公共讨论区")])]),t._v(" "),a("p",[a("img",{attrs:{src:"https://img-blog.csdnimg.cn/20210513134216723.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1MzA5Nw==,size_16,color_FFFFFF,t_70",alt:"公共讨论区"}})]),t._v(" "),a("blockquote",[a("p",[t._v("评论组件")])]),t._v(" "),a("p",[a("img",{attrs:{src:"https://img-blog.csdnimg.cn/20210513142826730.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1MzA5Nw==,size_16,color_FFFFFF,t_70#pic_center",alt:"评论组件"}})]),t._v(" "),a("blockquote",[a("p",[t._v("个人信息页")])]),t._v(" "),a("p",[a("img",{attrs:{src:"https://img-blog.csdnimg.cn/20210509233300701.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1MzA5Nw==,size_16,color_FFFFFF,t_70",alt:"个人信息"}})]),t._v(" "),a("blockquote",[a("p",[t._v("个人设置页")])]),t._v(" "),a("p",[a("img",{attrs:{src:"https://img-blog.csdnimg.cn/20210509233439791.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1MzA5Nw==,size_16,color_FFFFFF,t_70",alt:"个人设置"}})]),t._v(" "),a("blockquote",[a("p",[t._v("管理后台首页")])]),t._v(" "),a("p",[a("img",{attrs:{src:"https://cdn.jsdelivr.net/gh/HimitZH/CDN/images/hoj5.png",alt:"hoj5"}})]),t._v(" "),a("blockquote",[a("p",[t._v("部分手机端显示")])]),t._v(" "),a("p",[a("img",{attrs:{src:"https://img-blog.csdnimg.cn/20210509233756882.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1MzA5Nw==,size_16,color_FFFFFF,t_70",alt:""}})]),t._v(" "),a("p",[a("img",{attrs:{src:"https://img-blog.csdnimg.cn/20210509233845230.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}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[20],{366: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("h2",{attrs:{id:"什么是hoj"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#什么是hoj"}},[t._v("#")]),t._v(" 什么是HOJ?")]),t._v(" "),a("p",[t._v("HOJ,全称 Hcode Online Judge,是基于前后端分离,分布式架构的在线测评系统。")]),t._v(" "),a("p",[a("a",{attrs:{href:"http://openjdk.java.net/",target:"_blank",rel:"noopener noreferrer"}},[a("img",{attrs:{src:"https://img.shields.io/badge/Java-1.8-informational",alt:"Java"}}),a("OutboundLink")],1),t._v(" "),a("a",{attrs:{href:"https://spring.io/projects/spring-boot",target:"_blank",rel:"noopener noreferrer"}},[a("img",{attrs:{src:"https://img.shields.io/badge/Spring%20Boot-2.2.6.RELEASE-success",alt:"Spring Boot"}}),a("OutboundLink")],1),t._v(" "),a("a",{attrs:{href:"https://spring.io/projects/spring-cloud-alibaba",target:"_blank",rel:"noopener noreferrer"}},[a("img",{attrs:{src:"https://img.shields.io/badge/Spring%20Cloud%20Alibaba-2.2.1.RELEASE-success",alt:"SpringCloud Alibaba"}}),a("OutboundLink")],1),t._v(" "),a("a",{attrs:{href:"https://www.mysql.com/",target:"_blank",rel:"noopener noreferrer"}},[a("img",{attrs:{src:"https://img.shields.io/badge/MySQL-8.0.19-blue",alt:"MySQL"}}),a("OutboundLink")],1),t._v(" "),a("a",{attrs:{href:"https://redis.io/",target:"_blank",rel:"noopener noreferrer"}},[a("img",{attrs:{src:"https://img.shields.io/badge/Redis-5.0.9-red",alt:"Redis"}}),a("OutboundLink")],1),t._v(" "),a("a",{attrs:{href:"https://github.com/alibaba/nacos",target:"_blank",rel:"noopener noreferrer"}},[a("img",{attrs:{src:"https://img.shields.io/badge/Nacos-1.4.1-%23267DF7",alt:"Nacos"}}),a("OutboundLink")],1),t._v(" "),a("a",{attrs:{href:"https://cn.vuejs.org/",target:"_blank",rel:"noopener noreferrer"}},[a("img",{attrs:{src:"https://img.shields.io/badge/Vue-2.6.11-success",alt:"Vue"}}),a("OutboundLink")],1)]),t._v(" "),a("h2",{attrs:{id:"为什么要开发hoj"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#为什么要开发hoj"}},[t._v("#")]),t._v(" 为什么要开发HOJ?")]),t._v(" "),a("p",[t._v("因为这是Himit_ZH的毕业设计。")]),t._v(" "),a("h2",{attrs:{id:"hoj的特点"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#hoj的特点"}},[t._v("#")]),t._v(" HOJ的特点")]),t._v(" "),a("ul",[a("li",[t._v("适应:支持手机端,响应式布局")]),t._v(" "),a("li",[t._v("设计:界面简约大方")]),t._v(" "),a("li",[t._v("安全:判题使用 cgroup 隔离用户程序,杜绝卡评测;网站权限控制完善")]),t._v(" "),a("li",[t._v("扩展:支持分布式判题")]),t._v(" "),a("li",[t._v("简单:高度集中网站配置")]),t._v(" "),a("li",[t._v("功能:支持ACM、OI题目及比赛")]),t._v(" "),a("li",[t._v("多样:支持自身题目数据评测,也支持其它知名OJ(HDU、Codeforces)题目的爬取与提交")])]),t._v(" "),a("h2",{attrs:{id:"截图"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#截图"}},[t._v("#")]),t._v(" 截图")]),t._v(" "),a("blockquote",[a("p",[t._v("首页页面")])]),t._v(" "),a("p",[a("img",{attrs:{src:"https://img-blog.csdnimg.cn/20210509232352226.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1MzA5Nw==,size_16,color_FFFFFF,t_70",alt:"首页"}})]),t._v(" "),a("blockquote",[a("p",[t._v("题目列表页")])]),t._v(" "),a("p",[a("img",{attrs:{src:"https://img-blog.csdnimg.cn/20210509232501952.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1MzA5Nw==,size_16,color_FFFFFF,t_70",alt:"题目列表"}})]),t._v(" "),a("blockquote",[a("p",[t._v("题目详情页")])]),t._v(" "),a("p",[a("img",{attrs:{src:"https://img-blog.csdnimg.cn/20210509232609398.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1MzA5Nw==,size_16,color_FFFFFF,t_70",alt:"题目详情页"}})]),t._v(" "),a("blockquote",[a("p",[t._v("比赛列表页")])]),t._v(" "),a("p",[a("img",{attrs:{src:"https://img-blog.csdnimg.cn/20210509232701288.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1MzA5Nw==,size_16,color_FFFFFF,t_70",alt:"比赛列表"}})]),t._v(" "),a("blockquote",[a("p",[t._v("比赛详情首页")])]),t._v(" "),a("p",[a("img",{attrs:{src:"https://img-blog.csdnimg.cn/20210509232843932.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1MzA5Nw==,size_16,color_FFFFFF,t_70#pic_center",alt:"比赛详情"}})]),t._v(" "),a("blockquote",[a("p",[t._v("提交列表页")])]),t._v(" "),a("p",[a("img",{attrs:{src:"https://img-blog.csdnimg.cn/20210513134128914.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1MzA5Nw==,size_16,color_FFFFFF,t_70",alt:"在这里插入图片描述"}})]),t._v(" "),a("blockquote",[a("p",[t._v("排行榜")])]),t._v(" "),a("p",[a("img",{attrs:{src:"https://cdn.jsdelivr.net/gh/HimitZH/CDN/images/hoj9.png",alt:"hoj9"}})]),t._v(" "),a("blockquote",[a("p",[t._v("公共讨论区")])]),t._v(" "),a("p",[a("img",{attrs:{src:"https://img-blog.csdnimg.cn/20210513134216723.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1MzA5Nw==,size_16,color_FFFFFF,t_70",alt:"公共讨论区"}})]),t._v(" "),a("blockquote",[a("p",[t._v("评论组件")])]),t._v(" "),a("p",[a("img",{attrs:{src:"https://img-blog.csdnimg.cn/20210513142826730.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1MzA5Nw==,size_16,color_FFFFFF,t_70#pic_center",alt:"评论组件"}})]),t._v(" "),a("blockquote",[a("p",[t._v("个人信息页")])]),t._v(" "),a("p",[a("img",{attrs:{src:"https://img-blog.csdnimg.cn/20210509233300701.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1MzA5Nw==,size_16,color_FFFFFF,t_70",alt:"个人信息"}})]),t._v(" "),a("blockquote",[a("p",[t._v("个人设置页")])]),t._v(" "),a("p",[a("img",{attrs:{src:"https://img-blog.csdnimg.cn/20210509233439791.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1MzA5Nw==,size_16,color_FFFFFF,t_70",alt:"个人设置"}})]),t._v(" "),a("blockquote",[a("p",[t._v("管理后台首页")])]),t._v(" "),a("p",[a("img",{attrs:{src:"https://cdn.jsdelivr.net/gh/HimitZH/CDN/images/hoj5.png",alt:"hoj5"}})]),t._v(" "),a("blockquote",[a("p",[t._v("部分手机端显示")])]),t._v(" "),a("p",[a("img",{attrs:{src:"https://img-blog.csdnimg.cn/20210509233756882.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1MzA5Nw==,size_16,color_FFFFFF,t_70",alt:""}})]),t._v(" "),a("p",[a("img",{attrs:{src:"https://img-blog.csdnimg.cn/20210509233845230.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}}]); \ No newline at end of file diff --git a/docs/docs/.vuepress/dist/assets/js/21.a00e3cbb.js b/docs/docs/.vuepress/dist/assets/js/21.3dac3195.js similarity index 98% rename from docs/docs/.vuepress/dist/assets/js/21.a00e3cbb.js rename to docs/docs/.vuepress/dist/assets/js/21.3dac3195.js index 0ec0451d..a6dbdbd6 100644 --- a/docs/docs/.vuepress/dist/assets/js/21.a00e3cbb.js +++ b/docs/docs/.vuepress/dist/assets/js/21.3dac3195.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[21],{364:function(v,_,l){"use strict";l.r(_);var i=l(41),t=Object(i.a)({},(function(){var v=this,_=v.$createElement,l=v._self._c||_;return l("ContentSlotsDistributor",{attrs:{"slot-key":v.$parent.slotKey}},[l("h1",{attrs:{id:"简介"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#简介"}},[v._v("#")]),v._v(" 简介")]),v._v(" "),l("h2",{attrs:{id:"技术选型"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#技术选型"}},[v._v("#")]),v._v(" 技术选型")]),v._v(" "),l("blockquote",[l("p",[v._v("基于Springcloud 和Vue.js的前后端分离的分布式在线评测系统")])]),v._v(" "),l("ul",[l("li",[l("p",[v._v("前端:")]),v._v(" "),l("ul",[l("li",[v._v("技术以Vue为主,element-ui为主要框架,网站风格样式模仿qdoj")]),v._v(" "),l("li",[v._v("支持手机端,响应式布局")]),v._v(" "),l("li",[v._v("以CodeMirror作为在线代码编辑器")]),v._v(" "),l("li",[v._v("以Mavon-Editor作为富文本编辑器")]),v._v(" "),l("li",[v._v("支持用户头像上传,可选择性获取用户Codeforces分数")]),v._v(" "),l("li",[v._v("定时获取例如Codeforces等其它知名OJ的近期比赛数据")]),v._v(" "),l("li",[v._v("当前支持HDU的Virtual Judge(远程虚拟判题)与题目获取")]),v._v(" "),l("li",[v._v("题目支持特别判题")]),v._v(" "),l("li",[v._v("题目支持可选择性去除提交代码的末尾空白符(会影响CE判定)")]),v._v(" "),l("li",[v._v("题目支持可选择性允许用户查看各个测试点结果(状态,运行时间,运行空间,OI题目的测试点得分),暂不支持测试点数据公开。")]),v._v(" "),l("li",[v._v("题目讨论")]),v._v(" "),l("li",[v._v("管理后台支持题目数据以ZIP上传或手动输入上传")]),v._v(" "),l("li",[v._v("管理后台支持监控服务系统的状态及各判题服务的状态")]),v._v(" "),l("li",[v._v("管理后台支持动态修改网站配置,例如邮件系统配置,数据库配置等")]),v._v(" "),l("li",[v._v("比赛支持封榜,支持ACM与OI模式")]),v._v(" "),l("li",[v._v("比赛支持私有赛(需要密码才可查看与提交),保护赛(每个用户都可查看,提交需要密码),公开赛(每个用户都可查看与提交)三种模式")]),v._v(" "),l("li",[v._v("用户提交失败时可重新提交,管理员支持提交重判与比赛题目所有提交重判")]),v._v(" "),l("li",[v._v("公共讨论区")]),v._v(" "),l("li",[v._v("比赛讨论")])])]),v._v(" "),l("li",[l("p",[v._v("后端:")]),v._v(" "),l("ul",[l("li",[v._v("Web框架技术以Springboot为主")]),v._v(" "),l("li",[v._v("以Nacos为分布式注册中心及分布式配置中心,支持配置文件动态刷新,支持判题服务Ribbon的负载均衡")]),v._v(" "),l("li",[v._v("以Mybatis-Plus为数据库中间件,负责数据实体类与数据库数据的转化与获取。")]),v._v(" "),l("li",[v._v("以Jsoup为爬虫框架,负责远程虚拟OJ的题目获取及提交结果获取,同时定时获取各用户的Codeforces分数以及其它知名OJ的近期比赛。")]),v._v(" "),l("li",[v._v("以Shiro为安全框架,支持用户角色权限管理,支持token刷新")]),v._v(" "),l("li",[v._v("以redis的发布订阅者作为判题服务的消息提醒,以此调用判题服务")]),v._v(" "),l("li",[v._v("后端分为数据后台服务(DataBackup)及判题服务(JudgeServer)\n"),l("ul",[l("li",[l("p",[v._v("数据后台服务:负责提供接口,提供相关数据给前端等")])]),v._v(" "),l("li",[l("p",[v._v("判题服务:只负责获取数据后台服务传输过来的判题的提交,调用VJ判题或调用判题机(Go-Judge)进行评测,将对应结果写回数据库")])])])])])]),v._v(" "),l("li",[l("p",[v._v("判题机:")]),v._v(" "),l("ul",[l("li",[v._v("支持HDU的VJ判题")]),v._v(" "),l("li",[v._v("支持Codefoces的VJ判题")]),v._v(" "),l("li",[v._v("以HttpAPI的形式调用Go-Jugde(高性能可复用的判题沙盒)判题安全沙盒进行提交程序的评测(调用线程池多线程跑评测)")])])]),v._v(" "),l("li",[l("p",[v._v("数据库")]),v._v(" "),l("ul",[l("li",[v._v("Mysql")])])]),v._v(" "),l("li",[l("p",[v._v("缓存中间件")]),v._v(" "),l("ul",[l("li",[v._v("Redis")])])])]),v._v(" "),l("blockquote",[l("p",[v._v("HOJ基本逻辑架构图")])]),v._v(" "),l("p",[l("img",{attrs:{src:"https://cdn.jsdelivr.net/gh/HimitZH/CDN/images/hoj.png",alt:"image-20201030234527577"}})]),v._v(" "),l("h2",{attrs:{id:"判题逻辑"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#判题逻辑"}},[v._v("#")]),v._v(" 判题逻辑")]),v._v(" "),l("ol",[l("li",[l("p",[v._v("前端用户提交数据。")])]),v._v(" "),l("li",[l("p",[v._v("后端数据服务(DataBackup)获取到数据,先将提交数据初始化,同时将该提交的状态变成等待中,写入数据库。")])]),v._v(" "),l("li",[l("p",[v._v("通过Redis,写入"),l("strong",[v._v("等待判题队列")])])]),v._v(" "),l("li",[l("p",[v._v("调用work处理者,初始化传输数据,使用springcloud alibaba通过nacos注册中心调用判题微服务。")])]),v._v(" "),l("li",[l("p",[v._v("若是调用判题服务失败(没有空闲的判题服务器),则重新通过发布者将该提交信息发布到对应"),l("strong",[v._v("等待判题队列")]),v._v(",重回3。")])]),v._v(" "),l("li",[l("p",[v._v("若是调用失败超过30次,则将提交的状态修改为提交失败,不再进行判题服务的调用。")])]),v._v(" "),l("li",[l("p",[v._v("前端用户可看到提交变成提交失败,可点击状态进行重新提交,重回2(注:重新提交不影响提交时间等数据)")])]),v._v(" "),l("li",[l("p",[v._v("判题微服务获取到提交数据:")]),v._v(" "),l("ul",[l("li",[l("p",[v._v("若是远程调用,进行远程提交,获取对应的提交ID,若是获取失败则判为提交失败,若是获取成功,就启用线程定时器每2秒根据提交ID获取判题结果。")]),v._v(" "),l("p",[v._v("定时尝试30次,获取成功,写回数据库,获取失败就修改此次提交为提交失败。")])]),v._v(" "),l("li",[l("p",[v._v("若是自家题目提交,则启用线程池多线程使用Http将对应测试点数据与代码提交给Go-Judge判题沙盒进行编译与评测,最后获取各个评测点结果,进行结果计算写回数据库。")])])])])])])}),[],!1,null,null,null);_.default=t.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[21],{367:function(v,_,l){"use strict";l.r(_);var i=l(41),t=Object(i.a)({},(function(){var v=this,_=v.$createElement,l=v._self._c||_;return l("ContentSlotsDistributor",{attrs:{"slot-key":v.$parent.slotKey}},[l("h1",{attrs:{id:"简介"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#简介"}},[v._v("#")]),v._v(" 简介")]),v._v(" "),l("h2",{attrs:{id:"技术选型"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#技术选型"}},[v._v("#")]),v._v(" 技术选型")]),v._v(" "),l("blockquote",[l("p",[v._v("基于Springcloud 和Vue.js的前后端分离的分布式在线评测系统")])]),v._v(" "),l("ul",[l("li",[l("p",[v._v("前端:")]),v._v(" "),l("ul",[l("li",[v._v("技术以Vue为主,element-ui为主要框架,网站风格样式模仿qdoj")]),v._v(" "),l("li",[v._v("支持手机端,响应式布局")]),v._v(" "),l("li",[v._v("以CodeMirror作为在线代码编辑器")]),v._v(" "),l("li",[v._v("以Mavon-Editor作为富文本编辑器")]),v._v(" "),l("li",[v._v("支持用户头像上传,可选择性获取用户Codeforces分数")]),v._v(" "),l("li",[v._v("定时获取例如Codeforces等其它知名OJ的近期比赛数据")]),v._v(" "),l("li",[v._v("当前支持HDU的Virtual Judge(远程虚拟判题)与题目获取")]),v._v(" "),l("li",[v._v("题目支持特别判题")]),v._v(" "),l("li",[v._v("题目支持可选择性去除提交代码的末尾空白符(会影响CE判定)")]),v._v(" "),l("li",[v._v("题目支持可选择性允许用户查看各个测试点结果(状态,运行时间,运行空间,OI题目的测试点得分),暂不支持测试点数据公开。")]),v._v(" "),l("li",[v._v("题目讨论")]),v._v(" "),l("li",[v._v("管理后台支持题目数据以ZIP上传或手动输入上传")]),v._v(" "),l("li",[v._v("管理后台支持监控服务系统的状态及各判题服务的状态")]),v._v(" "),l("li",[v._v("管理后台支持动态修改网站配置,例如邮件系统配置,数据库配置等")]),v._v(" "),l("li",[v._v("比赛支持封榜,支持ACM与OI模式")]),v._v(" "),l("li",[v._v("比赛支持私有赛(需要密码才可查看与提交),保护赛(每个用户都可查看,提交需要密码),公开赛(每个用户都可查看与提交)三种模式")]),v._v(" "),l("li",[v._v("用户提交失败时可重新提交,管理员支持提交重判与比赛题目所有提交重判")]),v._v(" "),l("li",[v._v("公共讨论区")]),v._v(" "),l("li",[v._v("比赛讨论")])])]),v._v(" "),l("li",[l("p",[v._v("后端:")]),v._v(" "),l("ul",[l("li",[v._v("Web框架技术以Springboot为主")]),v._v(" "),l("li",[v._v("以Nacos为分布式注册中心及分布式配置中心,支持配置文件动态刷新,支持判题服务Ribbon的负载均衡")]),v._v(" "),l("li",[v._v("以Mybatis-Plus为数据库中间件,负责数据实体类与数据库数据的转化与获取。")]),v._v(" "),l("li",[v._v("以Jsoup为爬虫框架,负责远程虚拟OJ的题目获取及提交结果获取,同时定时获取各用户的Codeforces分数以及其它知名OJ的近期比赛。")]),v._v(" "),l("li",[v._v("以Shiro为安全框架,支持用户角色权限管理,支持token刷新")]),v._v(" "),l("li",[v._v("以redis的发布订阅者作为判题服务的消息提醒,以此调用判题服务")]),v._v(" "),l("li",[v._v("后端分为数据后台服务(DataBackup)及判题服务(JudgeServer)\n"),l("ul",[l("li",[l("p",[v._v("数据后台服务:负责提供接口,提供相关数据给前端等")])]),v._v(" "),l("li",[l("p",[v._v("判题服务:只负责获取数据后台服务传输过来的判题的提交,调用VJ判题或调用判题机(Go-Judge)进行评测,将对应结果写回数据库")])])])])])]),v._v(" "),l("li",[l("p",[v._v("判题机:")]),v._v(" "),l("ul",[l("li",[v._v("支持HDU的VJ判题")]),v._v(" "),l("li",[v._v("支持Codefoces的VJ判题")]),v._v(" "),l("li",[v._v("以HttpAPI的形式调用Go-Jugde(高性能可复用的判题沙盒)判题安全沙盒进行提交程序的评测(调用线程池多线程跑评测)")])])]),v._v(" "),l("li",[l("p",[v._v("数据库")]),v._v(" "),l("ul",[l("li",[v._v("Mysql")])])]),v._v(" "),l("li",[l("p",[v._v("缓存中间件")]),v._v(" "),l("ul",[l("li",[v._v("Redis")])])])]),v._v(" "),l("blockquote",[l("p",[v._v("HOJ基本逻辑架构图")])]),v._v(" "),l("p",[l("img",{attrs:{src:"https://cdn.jsdelivr.net/gh/HimitZH/CDN/images/hoj.png",alt:"image-20201030234527577"}})]),v._v(" "),l("h2",{attrs:{id:"判题逻辑"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#判题逻辑"}},[v._v("#")]),v._v(" 判题逻辑")]),v._v(" "),l("ol",[l("li",[l("p",[v._v("前端用户提交数据。")])]),v._v(" "),l("li",[l("p",[v._v("后端数据服务(DataBackup)获取到数据,先将提交数据初始化,同时将该提交的状态变成等待中,写入数据库。")])]),v._v(" "),l("li",[l("p",[v._v("通过Redis,写入"),l("strong",[v._v("等待判题队列")])])]),v._v(" "),l("li",[l("p",[v._v("调用work处理者,初始化传输数据,使用springcloud alibaba通过nacos注册中心调用判题微服务。")])]),v._v(" "),l("li",[l("p",[v._v("若是调用判题服务失败(没有空闲的判题服务器),则重新通过发布者将该提交信息发布到对应"),l("strong",[v._v("等待判题队列")]),v._v(",重回3。")])]),v._v(" "),l("li",[l("p",[v._v("若是调用失败超过30次,则将提交的状态修改为提交失败,不再进行判题服务的调用。")])]),v._v(" "),l("li",[l("p",[v._v("前端用户可看到提交变成提交失败,可点击状态进行重新提交,重回2(注:重新提交不影响提交时间等数据)")])]),v._v(" "),l("li",[l("p",[v._v("判题微服务获取到提交数据:")]),v._v(" "),l("ul",[l("li",[l("p",[v._v("若是远程调用,进行远程提交,获取对应的提交ID,若是获取失败则判为提交失败,若是获取成功,就启用线程定时器每2秒根据提交ID获取判题结果。")]),v._v(" "),l("p",[v._v("定时尝试30次,获取成功,写回数据库,获取失败就修改此次提交为提交失败。")])]),v._v(" "),l("li",[l("p",[v._v("若是自家题目提交,则启用线程池多线程使用Http将对应测试点数据与代码提交给Go-Judge判题沙盒进行编译与评测,最后获取各个评测点结果,进行结果计算写回数据库。")])])])])])])}),[],!1,null,null,null);_.default=t.exports}}]); \ No newline at end of file diff --git a/docs/docs/.vuepress/dist/assets/js/22.1e2d7d01.js b/docs/docs/.vuepress/dist/assets/js/22.5a29a611.js similarity index 87% rename from docs/docs/.vuepress/dist/assets/js/22.1e2d7d01.js rename to docs/docs/.vuepress/dist/assets/js/22.5a29a611.js index 5c32e5e8..2fb0d8d6 100644 --- a/docs/docs/.vuepress/dist/assets/js/22.1e2d7d01.js +++ b/docs/docs/.vuepress/dist/assets/js/22.5a29a611.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[22],{365: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}}]); \ No newline at end of file +(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}}]); \ No newline at end of file diff --git a/docs/docs/.vuepress/dist/assets/js/23.9a3991ad.js b/docs/docs/.vuepress/dist/assets/js/23.6fc11064.js similarity index 94% rename from docs/docs/.vuepress/dist/assets/js/23.9a3991ad.js rename to docs/docs/.vuepress/dist/assets/js/23.6fc11064.js index 78e68f47..7d4923df 100644 --- a/docs/docs/.vuepress/dist/assets/js/23.9a3991ad.js +++ b/docs/docs/.vuepress/dist/assets/js/23.6fc11064.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[23],{366:function(t,_,s){"use strict";s.r(_);var e=s(41),v=Object(e.a)({},(function(){var t=this,_=t.$createElement,s=t._self._c||_;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"比赛介绍"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#比赛介绍"}},[t._v("#")]),t._v(" 比赛介绍")]),t._v(" "),s("p",[s("img",{attrs:{src:"https://img-blog.csdnimg.cn/20210523221519574.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1MzA5Nw==,size_16,color_FFFFFF,t_70",alt:"在这里插入图片描述"}})]),t._v(" "),s("p",[t._v("创建比赛时两种赛制:")]),t._v(" "),s("ul",[s("li",[s("p",[s("strong",[t._v("ACM 模式")])]),t._v(" "),s("p",[t._v("在该模式下,我们严格按照ACM-ICPC的比赛规则来进行,Contest设置项中的"),s("code",[t._v("Seal Time Rank")]),t._v("即为是否封榜,封榜后将不再刷新排名。可选择比赛结束前半小时,比赛前一小时,比赛全程封榜。")])]),t._v(" "),s("li",[s("p",[s("strong",[t._v("OI 模式")])]),t._v(" "),s("p",[t._v("在OI模式下,选手的提交将根据得分点来计分,多次提交以最后一次提交为准,排名规则为多个题目的总分数。同样可以进行封榜操作,封榜时段,选手不能查看到实时的排行榜数据!")])])]),t._v(" "),s("p",[t._v("注意:管理员可以选择强制刷新,查看实时的排行榜数据!通过"),s("code",[t._v("Force Update")]),t._v("来强制刷新榜,且刷新后的榜仅对管理者可见。")]),t._v(" "),s("p",[t._v("比赛权限模式有三种:")]),t._v(" "),s("ul",[s("li",[s("strong",[t._v("公开赛")]),t._v(":所有用户都可以查看比赛详情、比赛题目、比赛提交,比赛排行榜、比赛讨论等,且都可以在比赛阶段随时提交。")]),t._v(" "),s("li",[s("strong",[t._v("保护赛")]),t._v(":所有用户都可以查看比赛详情、比赛题目、比赛提交,比赛排行榜、比赛讨论等,但在比赛阶段提交需要提供该比赛的密码!")]),t._v(" "),s("li",[s("strong",[t._v("私有赛")]),t._v(":仅支持有比赛密码的用户进入比赛,查看查看比赛详情、比赛题目、比赛提交,比赛排行榜、比赛讨论等,包括提交。")])])])}),[],!1,null,null,null);_.default=v.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[23],{370:function(t,_,s){"use strict";s.r(_);var e=s(41),v=Object(e.a)({},(function(){var t=this,_=t.$createElement,s=t._self._c||_;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"比赛介绍"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#比赛介绍"}},[t._v("#")]),t._v(" 比赛介绍")]),t._v(" "),s("p",[s("img",{attrs:{src:"https://img-blog.csdnimg.cn/20210523221519574.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1MzA5Nw==,size_16,color_FFFFFF,t_70",alt:"在这里插入图片描述"}})]),t._v(" "),s("p",[t._v("创建比赛时两种赛制:")]),t._v(" "),s("ul",[s("li",[s("p",[s("strong",[t._v("ACM 模式")])]),t._v(" "),s("p",[t._v("在该模式下,我们严格按照ACM-ICPC的比赛规则来进行,Contest设置项中的"),s("code",[t._v("Seal Time Rank")]),t._v("即为是否封榜,封榜后将不再刷新排名。可选择比赛结束前半小时,比赛前一小时,比赛全程封榜。")])]),t._v(" "),s("li",[s("p",[s("strong",[t._v("OI 模式")])]),t._v(" "),s("p",[t._v("在OI模式下,选手的提交将根据得分点来计分,多次提交以最后一次提交为准,排名规则为多个题目的总分数。同样可以进行封榜操作,封榜时段,选手不能查看到实时的排行榜数据!")])])]),t._v(" "),s("p",[t._v("注意:管理员可以选择强制刷新,查看实时的排行榜数据!通过"),s("code",[t._v("Force Update")]),t._v("来强制刷新榜,且刷新后的榜仅对管理者可见。")]),t._v(" "),s("p",[t._v("比赛权限模式有三种:")]),t._v(" "),s("ul",[s("li",[s("strong",[t._v("公开赛")]),t._v(":所有用户都可以查看比赛详情、比赛题目、比赛提交,比赛排行榜、比赛讨论等,且都可以在比赛阶段随时提交。")]),t._v(" "),s("li",[s("strong",[t._v("保护赛")]),t._v(":所有用户都可以查看比赛详情、比赛题目、比赛提交,比赛排行榜、比赛讨论等,但在比赛阶段提交需要提供该比赛的密码!")]),t._v(" "),s("li",[s("strong",[t._v("私有赛")]),t._v(":仅支持有比赛密码的用户进入比赛,查看查看比赛详情、比赛题目、比赛提交,比赛排行榜、比赛讨论等,包括提交。")])])])}),[],!1,null,null,null);_.default=v.exports}}]); \ No newline at end of file diff --git a/docs/docs/.vuepress/dist/assets/js/24.0eb4f9e2.js b/docs/docs/.vuepress/dist/assets/js/24.541271c6.js similarity index 90% rename from docs/docs/.vuepress/dist/assets/js/24.0eb4f9e2.js rename to docs/docs/.vuepress/dist/assets/js/24.541271c6.js index 176f6d7c..cadd5c60 100644 --- a/docs/docs/.vuepress/dist/assets/js/24.0eb4f9e2.js +++ b/docs/docs/.vuepress/dist/assets/js/24.541271c6.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[24],{372: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}}]); \ No newline at end of file +(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}}]); \ No newline at end of file diff --git a/docs/docs/.vuepress/dist/assets/js/25.8e959ad2.js b/docs/docs/.vuepress/dist/assets/js/25.1ef5d90e.js similarity index 99% rename from docs/docs/.vuepress/dist/assets/js/25.8e959ad2.js rename to docs/docs/.vuepress/dist/assets/js/25.1ef5d90e.js index acd571d5..ce86fdad 100644 --- a/docs/docs/.vuepress/dist/assets/js/25.8e959ad2.js +++ b/docs/docs/.vuepress/dist/assets/js/25.1ef5d90e.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[25],{367:function(s,t,a){"use strict";a.r(t);var n=a(41),r=Object(n.a)({},(function(){var s=this,t=s.$createElement,a=s._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[a("h1",{attrs:{id:"题目管理"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#题目管理"}},[s._v("#")]),s._v(" 题目管理")]),s._v(" "),a("h2",{attrs:{id:"一、hoj题目"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#一、hoj题目"}},[s._v("#")]),s._v(" 一、HOJ题目")]),s._v(" "),a("p",[a("img",{attrs:{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:"在这里插入图片描述"}})]),s._v(" "),a("h4",{attrs:{id:"_1-导出题目"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_1-导出题目"}},[s._v("#")]),s._v(" 1. 导出题目")]),s._v(" "),a("p",[s._v("点击选择需要的题目,便可以批量导出成一个zip压缩包,分别对应一个json格式的题目数据,一个对应名字的文件夹存放评测数据文件,具体的文件结构如下:")]),s._v(" "),a("div",{staticClass:"language- line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[s._v("+-- problem_1000.json\n+-- problem_1000\n| +-- 1.in\n| +-- 1.out\n| +-- ....\n+-- problem_1001.json\n+-- problem_1001\n| +-- 1.in\n| +-- 1.out\n| +-- ....\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br"),a("span",{staticClass:"line-number"},[s._v("9")]),a("br"),a("span",{staticClass:"line-number"},[s._v("10")]),a("br")])]),a("h4",{attrs:{id:"_2-导入题目"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_2-导入题目"}},[s._v("#")]),s._v(" 2. 导入题目")]),s._v(" "),a("p",[s._v("选择需要导入的题目数据zip压缩包,注意"),a("strong",[s._v("不要多一层文件夹进行压缩")]),s._v(","),a("strong",[s._v("请保证题目json文件的名字与其对应的存放评测数据的文件夹名字一致")]),s._v(",具体文件格式如下:")]),s._v(" "),a("div",{staticClass:"language- line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[s._v("+-- problem_1000.json\n+-- problem_1000\n| +-- 1.in\n| +-- 1.out\n| +-- ....\n+-- problem_1001.json\n+-- problem_1001\n| +-- 1.in\n| +-- 1.out\n| +-- ....\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br"),a("span",{staticClass:"line-number"},[s._v("9")]),a("br"),a("span",{staticClass:"line-number"},[s._v("10")]),a("br")])]),a("h4",{attrs:{id:"_3-题目的json文件格式"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_3-题目的json文件格式"}},[s._v("#")]),s._v(" 3. 题目的json文件格式")]),s._v(" "),a("p",[s._v("请严格按照以下格式,才可以正常导入。")]),s._v(" "),a("div",{staticClass:"language-json line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 题目支持的语言如下,可增加与减少")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"languages"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"C"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"C++"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"Java"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"Python3"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"Python2"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"Golang"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"C#"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" \n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"samples"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"output"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"1.in"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" \n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"input"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"1.out"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v('//"score": 10 // 如果是io题目需要给测试点加得分')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"output"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"2.in"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" \n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"input"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"2.out"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v('//"score": 10 // 如果是io题目需要给测试点加得分')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" \n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"tags"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"测试题"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"测试"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 题目标签,一般不超过三个 ")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"problem"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"auth"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 1 公开赛")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"author"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"admin"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 题目上传的作者,请使用用户名")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"isRemote"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("false")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 均为非VJ题目,不用修改")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"problemId"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"HOJ-1010"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 题目的展示id")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"description"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 题目的描述,支持markdown语法")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"source"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 题目来源")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"title"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 题目标题")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"type"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 0为ACM题目,1为OI题目")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"timeLimit"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("1000")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 时间限制 单位是ms")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"memoryLimit"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("256")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 空间限制 单位是mb")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"input"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 题目的输入描述")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"output"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 题目的输出描述")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"difficulty"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 题目难度,1为简单,2为中等,3为困难")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"examples"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 题目的题面样例,格式为输入输出输入输出")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"ioScore"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("100")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// OI题目总得分,与测试点总分一致")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"codeShare"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("true")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 该题目是否允许用户共享其提交的代码 ")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"hint"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 题目提示")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"isRemoveEndBlank"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("true")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 评测数据的输出是否自动去掉行末空格")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"openCaseResult"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("true")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 是否允许用户看到各个评测点的结果")]),s._v("\n \t"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v('// "spjLanguage:"C" // 特殊判题的程序代码语言')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v('// "spjCode":"" // 特殊判题的代码')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" \n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"isSpj"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("false")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 是否为特殊判题")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"codeTemplates"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"code"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 模板代码")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"language"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"C"')]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 模板代码语言")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" \n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"code"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 模板代码")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"language"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"C++"')]),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 模板代码语言")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br"),a("span",{staticClass:"line-number"},[s._v("9")]),a("br"),a("span",{staticClass:"line-number"},[s._v("10")]),a("br"),a("span",{staticClass:"line-number"},[s._v("11")]),a("br"),a("span",{staticClass:"line-number"},[s._v("12")]),a("br"),a("span",{staticClass:"line-number"},[s._v("13")]),a("br"),a("span",{staticClass:"line-number"},[s._v("14")]),a("br"),a("span",{staticClass:"line-number"},[s._v("15")]),a("br"),a("span",{staticClass:"line-number"},[s._v("16")]),a("br"),a("span",{staticClass:"line-number"},[s._v("17")]),a("br"),a("span",{staticClass:"line-number"},[s._v("18")]),a("br"),a("span",{staticClass:"line-number"},[s._v("19")]),a("br"),a("span",{staticClass:"line-number"},[s._v("20")]),a("br"),a("span",{staticClass:"line-number"},[s._v("21")]),a("br"),a("span",{staticClass:"line-number"},[s._v("22")]),a("br"),a("span",{staticClass:"line-number"},[s._v("23")]),a("br"),a("span",{staticClass:"line-number"},[s._v("24")]),a("br"),a("span",{staticClass:"line-number"},[s._v("25")]),a("br"),a("span",{staticClass:"line-number"},[s._v("26")]),a("br"),a("span",{staticClass:"line-number"},[s._v("27")]),a("br"),a("span",{staticClass:"line-number"},[s._v("28")]),a("br"),a("span",{staticClass:"line-number"},[s._v("29")]),a("br"),a("span",{staticClass:"line-number"},[s._v("30")]),a("br"),a("span",{staticClass:"line-number"},[s._v("31")]),a("br"),a("span",{staticClass:"line-number"},[s._v("32")]),a("br"),a("span",{staticClass:"line-number"},[s._v("33")]),a("br"),a("span",{staticClass:"line-number"},[s._v("34")]),a("br"),a("span",{staticClass:"line-number"},[s._v("35")]),a("br"),a("span",{staticClass:"line-number"},[s._v("36")]),a("br"),a("span",{staticClass:"line-number"},[s._v("37")]),a("br"),a("span",{staticClass:"line-number"},[s._v("38")]),a("br"),a("span",{staticClass:"line-number"},[s._v("39")]),a("br"),a("span",{staticClass:"line-number"},[s._v("40")]),a("br"),a("span",{staticClass:"line-number"},[s._v("41")]),a("br"),a("span",{staticClass:"line-number"},[s._v("42")]),a("br"),a("span",{staticClass:"line-number"},[s._v("43")]),a("br"),a("span",{staticClass:"line-number"},[s._v("44")]),a("br"),a("span",{staticClass:"line-number"},[s._v("45")]),a("br"),a("span",{staticClass:"line-number"},[s._v("46")]),a("br"),a("span",{staticClass:"line-number"},[s._v("47")]),a("br"),a("span",{staticClass:"line-number"},[s._v("48")]),a("br"),a("span",{staticClass:"line-number"},[s._v("49")]),a("br"),a("span",{staticClass:"line-number"},[s._v("50")]),a("br"),a("span",{staticClass:"line-number"},[s._v("51")]),a("br")])]),a("h2",{attrs:{id:"二、导入qdoj的题目"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#二、导入qdoj的题目"}},[s._v("#")]),s._v(" 二、导入qdoj的题目")]),s._v(" "),a("p",[s._v("请严格按照青岛oj的后台导出的压缩文件来上传。")]),s._v(" "),a("p",[a("img",{attrs:{src:"https://img-blog.csdnimg.cn/20210530212411781.png",alt:"在这里插入图片描述"}})]),s._v(" "),a("h2",{attrs:{id:"三、导入其它oj题目"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#三、导入其它oj题目"}},[s._v("#")]),s._v(" 三、导入其它OJ题目")]),s._v(" "),a("p",[s._v("导入HDU、Codeforces题目,只需提供该题目的题号便可一键导入")]),s._v(" "),a("p",[a("strong",[s._v("管理员进入后台,点击题目列表")])]),s._v(" "),a("p",[a("img",{attrs:{src:"https://img-blog.csdnimg.cn/20210523223454472.png#pic_center",alt:"在这里插入图片描述"}})]),s._v(" "),a("p",[s._v("然后添加上方的添加按钮")]),s._v(" "),a("p",[a("img",{attrs:{src:"https://img-blog.csdnimg.cn/20210523222914722.png",alt:"在这里插入图片描述"}})]),s._v(" "),a("p",[a("strong",[s._v("在弹出窗中选择OJ名字及题号,便可导入")])]),s._v(" "),a("p",[a("img",{attrs:{src:"https://img-blog.csdnimg.cn/20210523223042100.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1MzA5Nw==,size_16,color_FFFFFF,t_70",alt:"在这里插入图片描述"}})]),s._v(" "),a("p",[a("strong",[s._v("注意:")])]),s._v(" "),a("ul",[a("li",[s._v("HDU的题号一般是 1000以上的数字")]),s._v(" "),a("li",[s._v("Codeforces的题号是1000A、1000B、这种数字加大写英文字母的格式")])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[25],{373:function(s,t,a){"use strict";a.r(t);var n=a(41),r=Object(n.a)({},(function(){var s=this,t=s.$createElement,a=s._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[a("h1",{attrs:{id:"题目管理"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#题目管理"}},[s._v("#")]),s._v(" 题目管理")]),s._v(" "),a("h2",{attrs:{id:"一、hoj题目"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#一、hoj题目"}},[s._v("#")]),s._v(" 一、HOJ题目")]),s._v(" "),a("p",[a("img",{attrs:{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:"在这里插入图片描述"}})]),s._v(" "),a("h4",{attrs:{id:"_1-导出题目"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_1-导出题目"}},[s._v("#")]),s._v(" 1. 导出题目")]),s._v(" "),a("p",[s._v("点击选择需要的题目,便可以批量导出成一个zip压缩包,分别对应一个json格式的题目数据,一个对应名字的文件夹存放评测数据文件,具体的文件结构如下:")]),s._v(" "),a("div",{staticClass:"language- line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[s._v("+-- problem_1000.json\n+-- problem_1000\n| +-- 1.in\n| +-- 1.out\n| +-- ....\n+-- problem_1001.json\n+-- problem_1001\n| +-- 1.in\n| +-- 1.out\n| +-- ....\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br"),a("span",{staticClass:"line-number"},[s._v("9")]),a("br"),a("span",{staticClass:"line-number"},[s._v("10")]),a("br")])]),a("h4",{attrs:{id:"_2-导入题目"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_2-导入题目"}},[s._v("#")]),s._v(" 2. 导入题目")]),s._v(" "),a("p",[s._v("选择需要导入的题目数据zip压缩包,注意"),a("strong",[s._v("不要多一层文件夹进行压缩")]),s._v(","),a("strong",[s._v("请保证题目json文件的名字与其对应的存放评测数据的文件夹名字一致")]),s._v(",具体文件格式如下:")]),s._v(" "),a("div",{staticClass:"language- line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[s._v("+-- problem_1000.json\n+-- problem_1000\n| +-- 1.in\n| +-- 1.out\n| +-- ....\n+-- problem_1001.json\n+-- problem_1001\n| +-- 1.in\n| +-- 1.out\n| +-- ....\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br"),a("span",{staticClass:"line-number"},[s._v("9")]),a("br"),a("span",{staticClass:"line-number"},[s._v("10")]),a("br")])]),a("h4",{attrs:{id:"_3-题目的json文件格式"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_3-题目的json文件格式"}},[s._v("#")]),s._v(" 3. 题目的json文件格式")]),s._v(" "),a("p",[s._v("请严格按照以下格式,才可以正常导入。")]),s._v(" "),a("div",{staticClass:"language-json line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 题目支持的语言如下,可增加与减少")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"languages"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"C"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"C++"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"Java"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"Python3"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"Python2"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"Golang"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"C#"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" \n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"samples"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"output"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"1.in"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" \n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"input"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"1.out"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v('//"score": 10 // 如果是io题目需要给测试点加得分')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"output"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"2.in"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" \n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"input"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"2.out"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v('//"score": 10 // 如果是io题目需要给测试点加得分')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" \n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"tags"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"测试题"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"测试"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 题目标签,一般不超过三个 ")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"problem"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"auth"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 1 公开赛")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"author"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"admin"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 题目上传的作者,请使用用户名")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"isRemote"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("false")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 均为非VJ题目,不用修改")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"problemId"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"HOJ-1010"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 题目的展示id")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"description"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 题目的描述,支持markdown语法")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"source"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 题目来源")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"title"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 题目标题")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"type"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 0为ACM题目,1为OI题目")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"timeLimit"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("1000")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 时间限制 单位是ms")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"memoryLimit"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("256")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 空间限制 单位是mb")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"input"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 题目的输入描述")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"output"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 题目的输出描述")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"difficulty"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 题目难度,1为简单,2为中等,3为困难")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"examples"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 题目的题面样例,格式为输入输出输入输出")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"ioScore"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("100")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// OI题目总得分,与测试点总分一致")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"codeShare"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("true")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 该题目是否允许用户共享其提交的代码 ")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"hint"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 题目提示")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"isRemoveEndBlank"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("true")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 评测数据的输出是否自动去掉行末空格")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"openCaseResult"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("true")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 是否允许用户看到各个评测点的结果")]),s._v("\n \t"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v('// "spjLanguage:"C" // 特殊判题的程序代码语言')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v('// "spjCode":"" // 特殊判题的代码')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" \n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"isSpj"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("false")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 是否为特殊判题")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"codeTemplates"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"code"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 模板代码")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"language"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"C"')]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 模板代码语言")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" \n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"code"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 模板代码")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"language"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"C++"')]),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 模板代码语言")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br"),a("span",{staticClass:"line-number"},[s._v("9")]),a("br"),a("span",{staticClass:"line-number"},[s._v("10")]),a("br"),a("span",{staticClass:"line-number"},[s._v("11")]),a("br"),a("span",{staticClass:"line-number"},[s._v("12")]),a("br"),a("span",{staticClass:"line-number"},[s._v("13")]),a("br"),a("span",{staticClass:"line-number"},[s._v("14")]),a("br"),a("span",{staticClass:"line-number"},[s._v("15")]),a("br"),a("span",{staticClass:"line-number"},[s._v("16")]),a("br"),a("span",{staticClass:"line-number"},[s._v("17")]),a("br"),a("span",{staticClass:"line-number"},[s._v("18")]),a("br"),a("span",{staticClass:"line-number"},[s._v("19")]),a("br"),a("span",{staticClass:"line-number"},[s._v("20")]),a("br"),a("span",{staticClass:"line-number"},[s._v("21")]),a("br"),a("span",{staticClass:"line-number"},[s._v("22")]),a("br"),a("span",{staticClass:"line-number"},[s._v("23")]),a("br"),a("span",{staticClass:"line-number"},[s._v("24")]),a("br"),a("span",{staticClass:"line-number"},[s._v("25")]),a("br"),a("span",{staticClass:"line-number"},[s._v("26")]),a("br"),a("span",{staticClass:"line-number"},[s._v("27")]),a("br"),a("span",{staticClass:"line-number"},[s._v("28")]),a("br"),a("span",{staticClass:"line-number"},[s._v("29")]),a("br"),a("span",{staticClass:"line-number"},[s._v("30")]),a("br"),a("span",{staticClass:"line-number"},[s._v("31")]),a("br"),a("span",{staticClass:"line-number"},[s._v("32")]),a("br"),a("span",{staticClass:"line-number"},[s._v("33")]),a("br"),a("span",{staticClass:"line-number"},[s._v("34")]),a("br"),a("span",{staticClass:"line-number"},[s._v("35")]),a("br"),a("span",{staticClass:"line-number"},[s._v("36")]),a("br"),a("span",{staticClass:"line-number"},[s._v("37")]),a("br"),a("span",{staticClass:"line-number"},[s._v("38")]),a("br"),a("span",{staticClass:"line-number"},[s._v("39")]),a("br"),a("span",{staticClass:"line-number"},[s._v("40")]),a("br"),a("span",{staticClass:"line-number"},[s._v("41")]),a("br"),a("span",{staticClass:"line-number"},[s._v("42")]),a("br"),a("span",{staticClass:"line-number"},[s._v("43")]),a("br"),a("span",{staticClass:"line-number"},[s._v("44")]),a("br"),a("span",{staticClass:"line-number"},[s._v("45")]),a("br"),a("span",{staticClass:"line-number"},[s._v("46")]),a("br"),a("span",{staticClass:"line-number"},[s._v("47")]),a("br"),a("span",{staticClass:"line-number"},[s._v("48")]),a("br"),a("span",{staticClass:"line-number"},[s._v("49")]),a("br"),a("span",{staticClass:"line-number"},[s._v("50")]),a("br"),a("span",{staticClass:"line-number"},[s._v("51")]),a("br")])]),a("h2",{attrs:{id:"二、导入qdoj的题目"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#二、导入qdoj的题目"}},[s._v("#")]),s._v(" 二、导入qdoj的题目")]),s._v(" "),a("p",[s._v("请严格按照青岛oj的后台导出的压缩文件来上传。")]),s._v(" "),a("p",[a("img",{attrs:{src:"https://img-blog.csdnimg.cn/20210530212411781.png",alt:"在这里插入图片描述"}})]),s._v(" "),a("h2",{attrs:{id:"三、导入其它oj题目"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#三、导入其它oj题目"}},[s._v("#")]),s._v(" 三、导入其它OJ题目")]),s._v(" "),a("p",[s._v("导入HDU、Codeforces题目,只需提供该题目的题号便可一键导入")]),s._v(" "),a("p",[a("strong",[s._v("管理员进入后台,点击题目列表")])]),s._v(" "),a("p",[a("img",{attrs:{src:"https://img-blog.csdnimg.cn/20210523223454472.png#pic_center",alt:"在这里插入图片描述"}})]),s._v(" "),a("p",[s._v("然后添加上方的添加按钮")]),s._v(" "),a("p",[a("img",{attrs:{src:"https://img-blog.csdnimg.cn/20210523222914722.png",alt:"在这里插入图片描述"}})]),s._v(" "),a("p",[a("strong",[s._v("在弹出窗中选择OJ名字及题号,便可导入")])]),s._v(" "),a("p",[a("img",{attrs:{src:"https://img-blog.csdnimg.cn/20210523223042100.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1MzA5Nw==,size_16,color_FFFFFF,t_70",alt:"在这里插入图片描述"}})]),s._v(" "),a("p",[a("strong",[s._v("注意:")])]),s._v(" "),a("ul",[a("li",[s._v("HDU的题号一般是 1000以上的数字")]),s._v(" "),a("li",[s._v("Codeforces的题号是1000A、1000B、这种数字加大写英文字母的格式")])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/docs/docs/.vuepress/dist/assets/js/26.6b1121db.js b/docs/docs/.vuepress/dist/assets/js/26.ced7be6b.js similarity index 92% rename from docs/docs/.vuepress/dist/assets/js/26.6b1121db.js rename to docs/docs/.vuepress/dist/assets/js/26.ced7be6b.js index efe550c2..a048e59a 100644 --- a/docs/docs/.vuepress/dist/assets/js/26.6b1121db.js +++ b/docs/docs/.vuepress/dist/assets/js/26.ced7be6b.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[26],{369: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}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[26],{371: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}}]); \ No newline at end of file diff --git a/docs/docs/.vuepress/dist/assets/js/27.8605a474.js b/docs/docs/.vuepress/dist/assets/js/27.8605a474.js deleted file mode 100644 index c4e67e5c..00000000 --- a/docs/docs/.vuepress/dist/assets/js/27.8605a474.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[27],{370:function(s,t,a){"use strict";a.r(t);var n=a(41),r=Object(n.a)({},(function(){var s=this,t=s.$createElement,a=s._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[a("h1",{attrs:{id:"特殊判题"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#特殊判题"}},[s._v("#")]),s._v(" 特殊判题")]),s._v(" "),a("h2",{attrs:{id:"什么是特殊判题"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#什么是特殊判题"}},[s._v("#")]),s._v(" 什么是特殊判题?")]),s._v(" "),a("p",[s._v("特殊判题(Special Judge)是指OJ将使用一个特定的程序来判断提交的程序的输出是不是正确的,而不是单纯地看提交的程序的输出是否和标准输出一模一样。")]),s._v(" "),a("h2",{attrs:{id:"使用场景"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#使用场景"}},[s._v("#")]),s._v(" 使用场景")]),s._v(" "),a("p",[s._v("一般使用Special Judge都是因为题目的答案不唯一,更具体一点说的话一般是两种情况:")]),s._v(" "),a("ul",[a("li",[s._v("题目最终要求输出一个解决方案,而且这个解决方案可能不唯一。")]),s._v(" "),a("li",[s._v("题目最终要求输出一个浮点数,而且会告诉只要答案和标准答案相差不超过某个较小的数就可以,比如0.01。这种情况保留3位小数、4位小数等等都是可以的,而且多保留几位小数也没什么坏处。")])]),s._v(" "),a("h2",{attrs:{id:"例子"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#例子"}},[s._v("#")]),s._v(" 例子:")]),s._v(" "),a("p",[s._v("在创建题目的适合,选择开启特殊判题,编写特殊判题程序,然后编译通过便可。")]),s._v(" "),a("blockquote",[a("p",[s._v("后台对题目使用特殊判题时,请参考以下程序例子")])]),s._v(" "),a("div",{staticClass:"language-cpp line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token macro property"}},[a("span",{pre:!0,attrs:{class:"token directive-hash"}},[s._v("#")]),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[s._v("include")]),a("span",{pre:!0,attrs:{class:"token string"}},[s._v("")])]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[a("span",{pre:!0,attrs:{class:"token directive-hash"}},[s._v("#")]),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[s._v("include")]),a("span",{pre:!0,attrs:{class:"token string"}},[s._v("")])]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[a("span",{pre:!0,attrs:{class:"token directive-hash"}},[s._v("#")]),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[s._v("define")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token macro-name"}},[s._v("AC")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token expression"}},[a("span",{pre:!0,attrs:{class:"token number"}},[s._v("100")])])]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[a("span",{pre:!0,attrs:{class:"token directive-hash"}},[s._v("#")]),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[s._v("define")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token macro-name"}},[s._v("WA")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token expression"}},[a("span",{pre:!0,attrs:{class:"token number"}},[s._v("101")])])]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[a("span",{pre:!0,attrs:{class:"token directive-hash"}},[s._v("#")]),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[s._v("define")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token macro-name"}},[s._v("ERROR")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token expression"}},[a("span",{pre:!0,attrs:{class:"token number"}},[s._v("102")])])]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("using")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("namespace")]),s._v(" std"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("int")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("spj")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("int")]),s._v(" user_output"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" FILE "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("*")]),s._v("output"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("void")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("close_file")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("FILE "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("*")]),s._v("f"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("if")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("f "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("!=")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token constant"}},[s._v("NULL")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("fclose")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("f"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("int")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("main")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("int")]),s._v(" argc"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("char")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("*")]),s._v("args"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n FILE "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("*")]),s._v("input"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n FILE "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("*")]),s._v("output"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("int")]),s._v(" result"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("if")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("argc "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("!=")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("2")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("return")]),s._v(" ERROR"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("int")]),s._v(" user_output"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n cin"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">>")]),s._v("user_output"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("/**\n input:输入\n output:样例的输出\n user_output:用户的输出\n **/")]),s._v("\n cout"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<<")]),s._v("user_output"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<<")]),s._v("endl"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n input "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("fopen")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("args"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"r"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n output "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("fopen")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("args"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("2")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"r"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n\t\n result "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("spj")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("user_output"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" output"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("printf")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"result: %d\\n"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" result"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("close_file")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("input"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("close_file")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("output"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("return")]),s._v(" result"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("int")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("spj")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("int")]),s._v(" user_output"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" FILE "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("*")]),s._v("output"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("/*\n parameter: \n - output,标程输出文件的指针\n - user_output,用户输出数据\n return: \n - 如果用户答案正确,返回AC\n - 如果用户答案错误返回WA\n - 如果主动捕获到自己的错误,如内存分配失败,返回ERROR\n */")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("int")]),s._v(" std_out"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("while")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("fscanf")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("output"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"%d"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("&")]),s._v("std_out"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("!=")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token constant"}},[s._v("EOF")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("if")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("user_output"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("+")]),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("!=")]),s._v(" std_out"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n cout"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<<")]),s._v("user_output"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<<")]),s._v("endl"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<<")]),s._v("std_out"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("return")]),s._v(" WA"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("return")]),s._v(" AC"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br"),a("span",{staticClass:"line-number"},[s._v("9")]),a("br"),a("span",{staticClass:"line-number"},[s._v("10")]),a("br"),a("span",{staticClass:"line-number"},[s._v("11")]),a("br"),a("span",{staticClass:"line-number"},[s._v("12")]),a("br"),a("span",{staticClass:"line-number"},[s._v("13")]),a("br"),a("span",{staticClass:"line-number"},[s._v("14")]),a("br"),a("span",{staticClass:"line-number"},[s._v("15")]),a("br"),a("span",{staticClass:"line-number"},[s._v("16")]),a("br"),a("span",{staticClass:"line-number"},[s._v("17")]),a("br"),a("span",{staticClass:"line-number"},[s._v("18")]),a("br"),a("span",{staticClass:"line-number"},[s._v("19")]),a("br"),a("span",{staticClass:"line-number"},[s._v("20")]),a("br"),a("span",{staticClass:"line-number"},[s._v("21")]),a("br"),a("span",{staticClass:"line-number"},[s._v("22")]),a("br"),a("span",{staticClass:"line-number"},[s._v("23")]),a("br"),a("span",{staticClass:"line-number"},[s._v("24")]),a("br"),a("span",{staticClass:"line-number"},[s._v("25")]),a("br"),a("span",{staticClass:"line-number"},[s._v("26")]),a("br"),a("span",{staticClass:"line-number"},[s._v("27")]),a("br"),a("span",{staticClass:"line-number"},[s._v("28")]),a("br"),a("span",{staticClass:"line-number"},[s._v("29")]),a("br"),a("span",{staticClass:"line-number"},[s._v("30")]),a("br"),a("span",{staticClass:"line-number"},[s._v("31")]),a("br"),a("span",{staticClass:"line-number"},[s._v("32")]),a("br"),a("span",{staticClass:"line-number"},[s._v("33")]),a("br"),a("span",{staticClass:"line-number"},[s._v("34")]),a("br"),a("span",{staticClass:"line-number"},[s._v("35")]),a("br"),a("span",{staticClass:"line-number"},[s._v("36")]),a("br"),a("span",{staticClass:"line-number"},[s._v("37")]),a("br"),a("span",{staticClass:"line-number"},[s._v("38")]),a("br"),a("span",{staticClass:"line-number"},[s._v("39")]),a("br"),a("span",{staticClass:"line-number"},[s._v("40")]),a("br"),a("span",{staticClass:"line-number"},[s._v("41")]),a("br"),a("span",{staticClass:"line-number"},[s._v("42")]),a("br"),a("span",{staticClass:"line-number"},[s._v("43")]),a("br"),a("span",{staticClass:"line-number"},[s._v("44")]),a("br"),a("span",{staticClass:"line-number"},[s._v("45")]),a("br"),a("span",{staticClass:"line-number"},[s._v("46")]),a("br"),a("span",{staticClass:"line-number"},[s._v("47")]),a("br"),a("span",{staticClass:"line-number"},[s._v("48")]),a("br"),a("span",{staticClass:"line-number"},[s._v("49")]),a("br"),a("span",{staticClass:"line-number"},[s._v("50")]),a("br"),a("span",{staticClass:"line-number"},[s._v("51")]),a("br"),a("span",{staticClass:"line-number"},[s._v("52")]),a("br"),a("span",{staticClass:"line-number"},[s._v("53")]),a("br"),a("span",{staticClass:"line-number"},[s._v("54")]),a("br"),a("span",{staticClass:"line-number"},[s._v("55")]),a("br"),a("span",{staticClass:"line-number"},[s._v("56")]),a("br"),a("span",{staticClass:"line-number"},[s._v("57")]),a("br"),a("span",{staticClass:"line-number"},[s._v("58")]),a("br"),a("span",{staticClass:"line-number"},[s._v("59")]),a("br"),a("span",{staticClass:"line-number"},[s._v("60")]),a("br")])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/docs/docs/.vuepress/dist/assets/js/27.dff18111.js b/docs/docs/.vuepress/dist/assets/js/27.dff18111.js new file mode 100644 index 00000000..aea70582 --- /dev/null +++ b/docs/docs/.vuepress/dist/assets/js/27.dff18111.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[27],{372:function(s,t,a){"use strict";a.r(t);var n=a(41),e=Object(n.a)({},(function(){var s=this,t=s.$createElement,a=s._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[a("h1",{attrs:{id:"特殊判题"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#特殊判题"}},[s._v("#")]),s._v(" 特殊判题")]),s._v(" "),a("h2",{attrs:{id:"什么是特殊判题"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#什么是特殊判题"}},[s._v("#")]),s._v(" 什么是特殊判题?")]),s._v(" "),a("p",[s._v("特殊判题(Special Judge)是指OJ将使用一个特定的程序来判断提交的程序的输出是不是正确的,而不是单纯地看提交的程序的输出是否和标准输出一模一样。")]),s._v(" "),a("h2",{attrs:{id:"使用场景"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#使用场景"}},[s._v("#")]),s._v(" 使用场景")]),s._v(" "),a("p",[s._v("一般使用Special Judge都是因为题目的答案不唯一,更具体一点说的话一般是两种情况:")]),s._v(" "),a("ul",[a("li",[s._v("题目最终要求输出一个解决方案,而且这个解决方案可能不唯一。")]),s._v(" "),a("li",[s._v("题目最终要求输出一个浮点数,而且会告诉只要答案和标准答案相差不超过某个较小的数就可以,比如0.01。这种情况保留3位小数、4位小数等等都是可以的,而且多保留几位小数也没什么坏处。")])]),s._v(" "),a("h2",{attrs:{id:"例子"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#例子"}},[s._v("#")]),s._v(" 例子:")]),s._v(" "),a("p",[s._v("在创建题目的适合,选择开启特殊判题,编写特殊判题程序,然后编译通过便可。")]),s._v(" "),a("p",[a("strong",[s._v("注意:用户的输出数据以stdin流输入道spj程序里面,也就是可以直接用scanf或cin等获取用户的输出数据,具体形式跟用户程序的输入数据获取一样。")])]),s._v(" "),a("blockquote",[a("p",[s._v("后台对题目使用特殊判题时,请参考以下程序例子 判断精度")])]),s._v(" "),a("div",{staticClass:"language-cpp line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token macro property"}},[a("span",{pre:!0,attrs:{class:"token directive-hash"}},[s._v("#")]),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[s._v("include")]),a("span",{pre:!0,attrs:{class:"token string"}},[s._v("")])]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[a("span",{pre:!0,attrs:{class:"token directive-hash"}},[s._v("#")]),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[s._v("include")]),a("span",{pre:!0,attrs:{class:"token string"}},[s._v("")])]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[a("span",{pre:!0,attrs:{class:"token directive-hash"}},[s._v("#")]),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[s._v("define")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token macro-name"}},[s._v("AC")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token expression"}},[a("span",{pre:!0,attrs:{class:"token number"}},[s._v("100")])])]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[a("span",{pre:!0,attrs:{class:"token directive-hash"}},[s._v("#")]),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[s._v("define")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token macro-name"}},[s._v("WA")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token expression"}},[a("span",{pre:!0,attrs:{class:"token number"}},[s._v("101")])])]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[a("span",{pre:!0,attrs:{class:"token directive-hash"}},[s._v("#")]),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[s._v("define")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token macro-name"}},[s._v("ERROR")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token expression"}},[a("span",{pre:!0,attrs:{class:"token number"}},[s._v("102")])])]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("using")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("namespace")]),s._v(" std"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("int")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("spj")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("int")]),s._v(" user_output"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" FILE "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("*")]),s._v("output"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("void")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("close_file")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("FILE "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("*")]),s._v("f"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("if")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("f "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("!=")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token constant"}},[s._v("NULL")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("fclose")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("f"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("int")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("main")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("int")]),s._v(" argc"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("char")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("*")]),s._v("args"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("if")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("argc "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("!=")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("3")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("return")]),s._v(" ERROR"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("/**\n input:输入\n output:样例的输出\n user_output:用户的输出\n **/")]),s._v("\n FILE "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("*")]),s._v("input "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("fopen")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("args"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"r"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n FILE "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("*")]),s._v("output "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("fopen")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("args"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("2")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"r"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("double")]),s._v(" std_out"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n\t"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("fscanf")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("output"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"%lf"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("&")]),s._v("std_out"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n\t"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("close_file")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("output"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("close_file")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("input"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("double")]),s._v(" user_output"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("//读入用户输出 ")]),s._v("\n cin"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">>")]),s._v("user_output"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n\t"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("if")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("fabs")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("user_output "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("-")]),s._v(" std_out"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<=")]),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("1e-6")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n\t\t"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("return")]),s._v(" AC"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n\t"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("else")]),s._v(" \n\t\t"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("return")]),s._v(" WA"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br"),a("span",{staticClass:"line-number"},[s._v("9")]),a("br"),a("span",{staticClass:"line-number"},[s._v("10")]),a("br"),a("span",{staticClass:"line-number"},[s._v("11")]),a("br"),a("span",{staticClass:"line-number"},[s._v("12")]),a("br"),a("span",{staticClass:"line-number"},[s._v("13")]),a("br"),a("span",{staticClass:"line-number"},[s._v("14")]),a("br"),a("span",{staticClass:"line-number"},[s._v("15")]),a("br"),a("span",{staticClass:"line-number"},[s._v("16")]),a("br"),a("span",{staticClass:"line-number"},[s._v("17")]),a("br"),a("span",{staticClass:"line-number"},[s._v("18")]),a("br"),a("span",{staticClass:"line-number"},[s._v("19")]),a("br"),a("span",{staticClass:"line-number"},[s._v("20")]),a("br"),a("span",{staticClass:"line-number"},[s._v("21")]),a("br"),a("span",{staticClass:"line-number"},[s._v("22")]),a("br"),a("span",{staticClass:"line-number"},[s._v("23")]),a("br"),a("span",{staticClass:"line-number"},[s._v("24")]),a("br"),a("span",{staticClass:"line-number"},[s._v("25")]),a("br"),a("span",{staticClass:"line-number"},[s._v("26")]),a("br"),a("span",{staticClass:"line-number"},[s._v("27")]),a("br"),a("span",{staticClass:"line-number"},[s._v("28")]),a("br"),a("span",{staticClass:"line-number"},[s._v("29")]),a("br"),a("span",{staticClass:"line-number"},[s._v("30")]),a("br"),a("span",{staticClass:"line-number"},[s._v("31")]),a("br"),a("span",{staticClass:"line-number"},[s._v("32")]),a("br"),a("span",{staticClass:"line-number"},[s._v("33")]),a("br"),a("span",{staticClass:"line-number"},[s._v("34")]),a("br"),a("span",{staticClass:"line-number"},[s._v("35")]),a("br"),a("span",{staticClass:"line-number"},[s._v("36")]),a("br"),a("span",{staticClass:"line-number"},[s._v("37")]),a("br"),a("span",{staticClass:"line-number"},[s._v("38")]),a("br"),a("span",{staticClass:"line-number"},[s._v("39")]),a("br"),a("span",{staticClass:"line-number"},[s._v("40")]),a("br")])])])}),[],!1,null,null,null);t.default=e.exports}}]); \ No newline at end of file diff --git a/docs/docs/.vuepress/dist/assets/js/28.13028d2d.js b/docs/docs/.vuepress/dist/assets/js/28.2e81fb40.js similarity index 96% rename from docs/docs/.vuepress/dist/assets/js/28.13028d2d.js rename to docs/docs/.vuepress/dist/assets/js/28.2e81fb40.js index dc4299f6..7b1883b1 100644 --- a/docs/docs/.vuepress/dist/assets/js/28.13028d2d.js +++ b/docs/docs/.vuepress/dist/assets/js/28.2e81fb40.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[28],{371:function(s,a,t){"use strict";t.r(a);var n=t(41),e=Object(n.a)({},(function(){var s=this,a=s.$createElement,t=s._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[t("h1",{attrs:{id:"测试用例"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#测试用例"}},[s._v("#")]),s._v(" 测试用例")]),s._v(" "),t("p",[t("img",{attrs:{src:"https://img-blog.csdnimg.cn/20210523215852734.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1MzA5Nw==,size_16,color_FFFFFF,t_70",alt:"在这里插入图片描述"}})]),s._v(" "),t("p",[t("strong",[s._v("进入后台添加题目,上传题目测试用例数据可以选择手动输入、Zip文件上传两种方式")])]),s._v(" "),t("h2",{attrs:{id:"一、手动输入"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#一、手动输入"}},[s._v("#")]),s._v(" 一、手动输入")]),s._v(" "),t("p",[s._v("每次点击"),t("code",[s._v("Add Sampple")]),s._v("就可以手动填入该用例的输入与输出,该方式比较适合题目数据简单的,同时手动输入的题目数据将记录进数据库,下次对该题目进行修改可以直接获取,然后进行测试数据的修改,同时也会在服务器对应的testcase文件夹生成对应的文件。")]),s._v(" "),t("h2",{attrs:{id:"二、文件上传"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#二、文件上传"}},[s._v("#")]),s._v(" 二、文件上传")]),s._v(" "),t("p",[s._v("对于通题目,测试用例文件包括"),t("code",[s._v("in")]),s._v("、"),t("code",[s._v("out")]),s._v("、"),t("code",[s._v("ans")]),s._v("三种拓展名")]),s._v(" "),t("p",[s._v("例如有两组测试用例,则对于普通题目测试用例的文件名分别为"),t("code",[s._v("1.in, 1.out(1.ans), 2.in, 2.out(2.ans)")]),s._v("其他形式的文件后台均不识别。")]),s._v(" "),t("p",[s._v("压缩时,请将文件都放在压缩包的根目录,而不是包含在某一个文件夹中,比如正确的格式是:")]),s._v(" "),t("div",{staticClass:"language-bash line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[s._v("├── "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v(".in\n├── "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v(".out\n├── "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2")]),s._v(".in\n├── "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2")]),s._v(".out\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br"),t("span",{staticClass:"line-number"},[s._v("3")]),t("br"),t("span",{staticClass:"line-number"},[s._v("4")]),t("br")])]),t("div",{staticClass:"language-bash line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[s._v("├── "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v(".in\n├── "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v(".ans\n├── "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2")]),s._v(".in\n├── "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2")]),s._v(".ans\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br"),t("span",{staticClass:"line-number"},[s._v("3")]),t("br"),t("span",{staticClass:"line-number"},[s._v("4")]),t("br")])]),t("p",[s._v("然后压缩测试用例到一个zip中")]),s._v(" "),t("p",[s._v("注意:不要在这些文件外面套多一层文件夹,请直接压缩!!!")]),s._v(" "),t("p",[s._v("同时建议:尽量合并测试用例到一个文件中,减少测试用例组数,这会一定程度上提高判题性能。")])])}),[],!1,null,null,null);a.default=e.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[28],{374:function(s,a,t){"use strict";t.r(a);var n=t(41),e=Object(n.a)({},(function(){var s=this,a=s.$createElement,t=s._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[t("h1",{attrs:{id:"测试用例"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#测试用例"}},[s._v("#")]),s._v(" 测试用例")]),s._v(" "),t("p",[t("img",{attrs:{src:"https://img-blog.csdnimg.cn/20210523215852734.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1MzA5Nw==,size_16,color_FFFFFF,t_70",alt:"在这里插入图片描述"}})]),s._v(" "),t("p",[t("strong",[s._v("进入后台添加题目,上传题目测试用例数据可以选择手动输入、Zip文件上传两种方式")])]),s._v(" "),t("h2",{attrs:{id:"一、手动输入"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#一、手动输入"}},[s._v("#")]),s._v(" 一、手动输入")]),s._v(" "),t("p",[s._v("每次点击"),t("code",[s._v("Add Sampple")]),s._v("就可以手动填入该用例的输入与输出,该方式比较适合题目数据简单的,同时手动输入的题目数据将记录进数据库,下次对该题目进行修改可以直接获取,然后进行测试数据的修改,同时也会在服务器对应的testcase文件夹生成对应的文件。")]),s._v(" "),t("h2",{attrs:{id:"二、文件上传"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#二、文件上传"}},[s._v("#")]),s._v(" 二、文件上传")]),s._v(" "),t("p",[s._v("对于通题目,测试用例文件包括"),t("code",[s._v("in")]),s._v("、"),t("code",[s._v("out")]),s._v("、"),t("code",[s._v("ans")]),s._v("三种拓展名")]),s._v(" "),t("p",[s._v("例如有两组测试用例,则对于普通题目测试用例的文件名分别为"),t("code",[s._v("1.in, 1.out(1.ans), 2.in, 2.out(2.ans)")]),s._v("其他形式的文件后台均不识别。")]),s._v(" "),t("p",[s._v("压缩时,请将文件都放在压缩包的根目录,而不是包含在某一个文件夹中,比如正确的格式是:")]),s._v(" "),t("div",{staticClass:"language-bash line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[s._v("├── "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v(".in\n├── "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v(".out\n├── "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2")]),s._v(".in\n├── "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2")]),s._v(".out\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br"),t("span",{staticClass:"line-number"},[s._v("3")]),t("br"),t("span",{staticClass:"line-number"},[s._v("4")]),t("br")])]),t("div",{staticClass:"language-bash line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[s._v("├── "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v(".in\n├── "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v(".ans\n├── "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2")]),s._v(".in\n├── "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2")]),s._v(".ans\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br"),t("span",{staticClass:"line-number"},[s._v("3")]),t("br"),t("span",{staticClass:"line-number"},[s._v("4")]),t("br")])]),t("p",[s._v("然后压缩测试用例到一个zip中")]),s._v(" "),t("p",[s._v("注意:不要在这些文件外面套多一层文件夹,请直接压缩!!!")]),s._v(" "),t("p",[s._v("同时建议:尽量合并测试用例到一个文件中,减少测试用例组数,这会一定程度上提高判题性能。")])])}),[],!1,null,null,null);a.default=e.exports}}]); \ No newline at end of file diff --git a/docs/docs/.vuepress/dist/assets/js/3.35d26d29.js b/docs/docs/.vuepress/dist/assets/js/3.068e2e40.js similarity index 50% rename from docs/docs/.vuepress/dist/assets/js/3.35d26d29.js rename to docs/docs/.vuepress/dist/assets/js/3.068e2e40.js index eef70fc1..15ee0102 100644 --- a/docs/docs/.vuepress/dist/assets/js/3.35d26d29.js +++ b/docs/docs/.vuepress/dist/assets/js/3.068e2e40.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[3],{320:function(t,e,n){},348:function(t,e,n){"use strict";n(320)},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(348),n(41)),p=Object(r.a)(i,void 0,void 0,!1,null,"69367c83",null);e.default=p.exports}}]); \ No newline at end of file +(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}}]); \ No newline at end of file diff --git a/docs/docs/.vuepress/dist/assets/js/4.18e98edc.js b/docs/docs/.vuepress/dist/assets/js/4.3f3da556.js similarity index 64% rename from docs/docs/.vuepress/dist/assets/js/4.18e98edc.js rename to docs/docs/.vuepress/dist/assets/js/4.3f3da556.js index c3cf21f1..988090b0 100644 --- a/docs/docs/.vuepress/dist/assets/js/4.18e98edc.js +++ b/docs/docs/.vuepress/dist/assets/js/4.3f3da556.js @@ -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}}]); \ No newline at end of file +(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}}]); \ No newline at end of file diff --git a/docs/docs/.vuepress/dist/assets/js/5.afb8305b.js b/docs/docs/.vuepress/dist/assets/js/5.abc1b238.js similarity index 87% rename from docs/docs/.vuepress/dist/assets/js/5.afb8305b.js rename to docs/docs/.vuepress/dist/assets/js/5.abc1b238.js index 5b193c50..76eb84f0 100644 --- a/docs/docs/.vuepress/dist/assets/js/5.afb8305b.js +++ b/docs/docs/.vuepress/dist/assets/js/5.abc1b238.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[5],{319:function(e,t,a){},347:function(e,t,a){"use strict";a(319)},352:function(e,t,a){"use strict";a.r(t);a(59),a(23),a(90),a(91);var o={name:"CodeGroup",data:function(){return{codeTabs:[],activeCodeTabIndex:-1}},watch:{activeCodeTabIndex:function(e){this.activateCodeTab(e)}},mounted:function(){this.loadTabs()},methods:{changeCodeTab:function(e){this.activeCodeTabIndex=e},loadTabs:function(){var e=this;this.codeTabs=(this.$slots.default||[]).filter((function(e){return Boolean(e.componentOptions)})).map((function(t,a){return""===t.componentOptions.propsData.active&&(e.activeCodeTabIndex=a),{title:t.componentOptions.propsData.title,elm:t.elm}})),-1===this.activeCodeTabIndex&&this.codeTabs.length>0&&(this.activeCodeTabIndex=0),this.activateCodeTab(0)},activateCodeTab:function(e){this.codeTabs.forEach((function(e){e.elm&&e.elm.classList.remove("theme-code-block__active")})),this.codeTabs[e].elm&&this.codeTabs[e].elm.classList.add("theme-code-block__active")}}},n=(a(347),a(41)),c=Object(n.a)(o,(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ClientOnly",[a("div",{staticClass:"theme-code-group"},[a("div",{staticClass:"theme-code-group__nav"},[a("ul",{staticClass:"theme-code-group__ul"},e._l(e.codeTabs,(function(t,o){return a("li",{key:t.title,staticClass:"theme-code-group__li"},[a("button",{staticClass:"theme-code-group__nav-tab",class:{"theme-code-group__nav-tab-active":o===e.activeCodeTabIndex},on:{click:function(t){return e.changeCodeTab(o)}}},[e._v("\n "+e._s(t.title)+"\n ")])])})),0)]),e._v(" "),e._t("default"),e._v(" "),e.codeTabs.length<1?a("pre",{staticClass:"pre-blank"},[e._v("// Make sure to add code blocks to your code group")]):e._e()],2)])}),[],!1,null,"77e00ed1",null);t.default=c.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[5],{320:function(e,t,a){},348:function(e,t,a){"use strict";a(320)},352:function(e,t,a){"use strict";a.r(t);a(59),a(23),a(90),a(91);var o={name:"CodeGroup",data:function(){return{codeTabs:[],activeCodeTabIndex:-1}},watch:{activeCodeTabIndex:function(e){this.activateCodeTab(e)}},mounted:function(){this.loadTabs()},methods:{changeCodeTab:function(e){this.activeCodeTabIndex=e},loadTabs:function(){var e=this;this.codeTabs=(this.$slots.default||[]).filter((function(e){return Boolean(e.componentOptions)})).map((function(t,a){return""===t.componentOptions.propsData.active&&(e.activeCodeTabIndex=a),{title:t.componentOptions.propsData.title,elm:t.elm}})),-1===this.activeCodeTabIndex&&this.codeTabs.length>0&&(this.activeCodeTabIndex=0),this.activateCodeTab(0)},activateCodeTab:function(e){this.codeTabs.forEach((function(e){e.elm&&e.elm.classList.remove("theme-code-block__active")})),this.codeTabs[e].elm&&this.codeTabs[e].elm.classList.add("theme-code-block__active")}}},n=(a(348),a(41)),c=Object(n.a)(o,(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ClientOnly",[a("div",{staticClass:"theme-code-group"},[a("div",{staticClass:"theme-code-group__nav"},[a("ul",{staticClass:"theme-code-group__ul"},e._l(e.codeTabs,(function(t,o){return a("li",{key:t.title,staticClass:"theme-code-group__li"},[a("button",{staticClass:"theme-code-group__nav-tab",class:{"theme-code-group__nav-tab-active":o===e.activeCodeTabIndex},on:{click:function(t){return e.changeCodeTab(o)}}},[e._v("\n "+e._s(t.title)+"\n ")])])})),0)]),e._v(" "),e._t("default"),e._v(" "),e.codeTabs.length<1?a("pre",{staticClass:"pre-blank"},[e._v("// Make sure to add code blocks to your code group")]):e._e()],2)])}),[],!1,null,"77e00ed1",null);t.default=c.exports}}]); \ No newline at end of file diff --git a/docs/docs/.vuepress/dist/assets/js/9.abd72fe8.js b/docs/docs/.vuepress/dist/assets/js/9.f68a10a9.js similarity index 99% rename from docs/docs/.vuepress/dist/assets/js/9.abd72fe8.js rename to docs/docs/.vuepress/dist/assets/js/9.f68a10a9.js index d99280c9..2f063c81 100644 --- a/docs/docs/.vuepress/dist/assets/js/9.abd72fe8.js +++ b/docs/docs/.vuepress/dist/assets/js/9.f68a10a9.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[9],{359:function(s,a,t){"use strict";t.r(a);var n=t(41),e=Object(n.a)({},(function(){var s=this,a=s.$createElement,t=s._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[t("h1",{attrs:{id:"后端部署"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#后端部署"}},[s._v("#")]),s._v(" 后端部署")]),s._v(" "),t("h2",{attrs:{id:"前言"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#前言"}},[s._v("#")]),s._v(" 前言")]),s._v(" "),t("p",[s._v("下载本项目,进入到当前文件夹执行打包命令")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("git")]),s._v(" clone https://gitee.com/himitzh0730/hoj-deploy.git "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("&&")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("cd")]),s._v(" hoj-deploy/src/backend\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("p",[s._v("当前文件夹为打包"),t("code",[s._v("hoj-backend")]),s._v("镜像的相关文件,将这些文件复制到同一个文件夹内,"),t("strong",[s._v("然后打包"),t("a",{attrs:{href:"https://gitee.com/himitzh0730/hoj/tree/master/hoj-springboot/DataBackup",target:"_blank",rel:"noopener noreferrer"}},[s._v("DataBackup"),t("OutboundLink")],1),s._v("(SpringBoot项目)成jar包也放到当前文件夹")]),s._v(",之后执行以下命令进行打包成镜像")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[s._v("docker build -t hoj-backend "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v(".")]),s._v("\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("p",[t("strong",[s._v("项目依赖于hoj-redis,hoj-nacos,hoj-mysql等镜像成功启动,以及根据前面三个镜像的配置修改环境参数才可正常启动")])]),s._v(" "),t("p",[s._v("docker-compose 启动")]),s._v(" "),t("div",{staticClass:"language-yaml line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-yaml"}},[t("code",[t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("version")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"3"')]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("services")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("hoj-backend")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# image: registry.cn-shenzhen.aliyuncs.com/hcode/hoj_backend")]),s._v("\n\t"),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("image")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" hoj"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("backend\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("container_name")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" hoj"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("backend\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("restart")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" always\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("depends_on")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" hoj"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("redis\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" hoj"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("mysql\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" hoj"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("nacos\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("volumes")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" ./hoj/file"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("/hoj/file\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" ./hoj/testcase"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("/hoj/testcase\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" ./hoj/log/backend"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("/hoj/log/backend\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("environment")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" TZ=Asia/Shanghai\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" BACKEND_SERVER_PORT=6688 "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# backend服务端口号")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" NACOS_URL=172.20.0.4"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("8848")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# hoj-nacos的url")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" NACOS_USERNAME=root "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# nacos的管理员账号")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" NACOS_PASSWORD=hoj123456 "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# nacos的管理员密码")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" JWT_TOKEN_SECRET=default "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 加密秘钥 默认则生成32位随机密钥")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" JWT_TOKEN_EXPIRE=86400 "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# token过期时间默认为24小时 86400s")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" JWT_TOKEN_FRESH_EXPIRE=43200 "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# token默认12小时可自动刷新")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" JUDGE_TOKEN=default "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 调用判题服务器的token 默认则生成32位随机密钥")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" MYSQL_HOST=172.20.0.3 "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# hoj-mysql的host")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" MYSQL_PUBLIC_HOST=172.20.0.3 "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 如果判题服务是分布式,请提供当前mysql所在服务器的公网ip")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" MYSQL_PORT=3306 "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# hoj-mysql端口号")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" MYSQL_DATABASE_NAME=hoj "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 改动需要修改hoj-mysql镜像,默认为hoj")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" MYSQL_USERNAME=root \n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" MYSQL_ROOT_PASSWORD=hoj123456 "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# hoj-mysql的root账号密码")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" EMAIL_SERVER_HOST=smtp.qq.com "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 请使用邮件服务的域名或ip")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" EMAIL_SERVER_PORT=465 "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 请使用邮件服务的端口号")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" EMAIL_USERNMAE="),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("your_email_username "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 请使用对应邮箱账号")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" EMAIL_PASSWORD="),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("your_email_password "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 请使用对应邮箱密码")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" REDIS_HOST=172.20.0.2 "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# hoj-redis的host")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" REDIS_PORT=6379 "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# hoj-redis的port")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" REDIS_PASSWORD=hoj123456 "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("#hoj-redis的密码")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" OPEN_REMOTE_JUDGE=true "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 是否开启对hdu和codeforces的虚拟判题")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 开启虚拟判题请提供对应oj的账号密码 格式为 ")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# username1,username2,...")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# password1,password2,...")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" HDU_ACCOUNT_USERNAME_LIST=\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" HDU_ACCOUNT_PASSWORD_LIST=\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" CF_ACCOUNT_USERNAME_LIST=\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" CF_ACCOUNT_USERNAME_LIST=\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("ports")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"6688:6688"')]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("networks")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("hoj-network")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("ipv4_address")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" 172.20.0.5\n \n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("hoj-redis")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("image")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" redis"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("5.0.9"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("alpine\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("container_name")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" hoj"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("redis\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("restart")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" always\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("volumes")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" ./hoj/data/redis/data"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("/data\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("networks")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("hoj-network")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("ipv4_address")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" 172.20.0.2\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("ports")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"6379:6379"')]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("command")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" redis"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("server "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v('requirepass "hoj123456" '),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("appendonly yes\n \n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("hoj-mysql")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("image")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" registry.cn"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("shenzhen.aliyuncs.com/hcode/hoj_database\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("container_name")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" hoj"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("mysql\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("restart")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" always\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("volumes")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" ./hoj/data/mysql/data"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("/var/lib/mysql\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("environment")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" MYSQL_ROOT_PASSWORD=hoj123456\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" TZ=Asia/Shanghai\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" NACOS_USERNAME=root\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" NACOS_PASSWORD=hoj123456\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("ports")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"3306:3306"')]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("networks")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("hoj-network")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("ipv4_address")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" 172.20.0.3\n \n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("hoj-nacos")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("image")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" nacos/nacos"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("server"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("1.4.2\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("container_name")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" hoj"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("nacos\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("restart")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" always\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("depends_on")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" \n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" hoj"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("mysql\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("environment")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" JVM_XMX=384m\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" JVM_XMS=384m\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" JVM_XMN=192m\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" MODE=standalone\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" SPRING_DATASOURCE_PLATFORM=mysql\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" MYSQL_SERVICE_HOST=172.20.0.3\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" MYSQL_SERVICE_PORT=3306\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" MYSQL_SERVICE_USER=root\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" MYSQL_SERVICE_PASSWORD=Hzh"),t("span",{pre:!0,attrs:{class:"token important"}},[s._v("&hy2020")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" MYSQL_SERVICE_DB_NAME=nacos\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" NACOS_AUTH_ENABLE=true "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 开启鉴权")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("networks")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("hoj-network")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("driver")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" bridge\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("ipam")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("config")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("subnet")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" 172.20.0.0/16\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("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br"),t("span",{staticClass:"line-number"},[s._v("12")]),t("br"),t("span",{staticClass:"line-number"},[s._v("13")]),t("br"),t("span",{staticClass:"line-number"},[s._v("14")]),t("br"),t("span",{staticClass:"line-number"},[s._v("15")]),t("br"),t("span",{staticClass:"line-number"},[s._v("16")]),t("br"),t("span",{staticClass:"line-number"},[s._v("17")]),t("br"),t("span",{staticClass:"line-number"},[s._v("18")]),t("br"),t("span",{staticClass:"line-number"},[s._v("19")]),t("br"),t("span",{staticClass:"line-number"},[s._v("20")]),t("br"),t("span",{staticClass:"line-number"},[s._v("21")]),t("br"),t("span",{staticClass:"line-number"},[s._v("22")]),t("br"),t("span",{staticClass:"line-number"},[s._v("23")]),t("br"),t("span",{staticClass:"line-number"},[s._v("24")]),t("br"),t("span",{staticClass:"line-number"},[s._v("25")]),t("br"),t("span",{staticClass:"line-number"},[s._v("26")]),t("br"),t("span",{staticClass:"line-number"},[s._v("27")]),t("br"),t("span",{staticClass:"line-number"},[s._v("28")]),t("br"),t("span",{staticClass:"line-number"},[s._v("29")]),t("br"),t("span",{staticClass:"line-number"},[s._v("30")]),t("br"),t("span",{staticClass:"line-number"},[s._v("31")]),t("br"),t("span",{staticClass:"line-number"},[s._v("32")]),t("br"),t("span",{staticClass:"line-number"},[s._v("33")]),t("br"),t("span",{staticClass:"line-number"},[s._v("34")]),t("br"),t("span",{staticClass:"line-number"},[s._v("35")]),t("br"),t("span",{staticClass:"line-number"},[s._v("36")]),t("br"),t("span",{staticClass:"line-number"},[s._v("37")]),t("br"),t("span",{staticClass:"line-number"},[s._v("38")]),t("br"),t("span",{staticClass:"line-number"},[s._v("39")]),t("br"),t("span",{staticClass:"line-number"},[s._v("40")]),t("br"),t("span",{staticClass:"line-number"},[s._v("41")]),t("br"),t("span",{staticClass:"line-number"},[s._v("42")]),t("br"),t("span",{staticClass:"line-number"},[s._v("43")]),t("br"),t("span",{staticClass:"line-number"},[s._v("44")]),t("br"),t("span",{staticClass:"line-number"},[s._v("45")]),t("br"),t("span",{staticClass:"line-number"},[s._v("46")]),t("br"),t("span",{staticClass:"line-number"},[s._v("47")]),t("br"),t("span",{staticClass:"line-number"},[s._v("48")]),t("br"),t("span",{staticClass:"line-number"},[s._v("49")]),t("br"),t("span",{staticClass:"line-number"},[s._v("50")]),t("br"),t("span",{staticClass:"line-number"},[s._v("51")]),t("br"),t("span",{staticClass:"line-number"},[s._v("52")]),t("br"),t("span",{staticClass:"line-number"},[s._v("53")]),t("br"),t("span",{staticClass:"line-number"},[s._v("54")]),t("br"),t("span",{staticClass:"line-number"},[s._v("55")]),t("br"),t("span",{staticClass:"line-number"},[s._v("56")]),t("br"),t("span",{staticClass:"line-number"},[s._v("57")]),t("br"),t("span",{staticClass:"line-number"},[s._v("58")]),t("br"),t("span",{staticClass:"line-number"},[s._v("59")]),t("br"),t("span",{staticClass:"line-number"},[s._v("60")]),t("br"),t("span",{staticClass:"line-number"},[s._v("61")]),t("br"),t("span",{staticClass:"line-number"},[s._v("62")]),t("br"),t("span",{staticClass:"line-number"},[s._v("63")]),t("br"),t("span",{staticClass:"line-number"},[s._v("64")]),t("br"),t("span",{staticClass:"line-number"},[s._v("65")]),t("br"),t("span",{staticClass:"line-number"},[s._v("66")]),t("br"),t("span",{staticClass:"line-number"},[s._v("67")]),t("br"),t("span",{staticClass:"line-number"},[s._v("68")]),t("br"),t("span",{staticClass:"line-number"},[s._v("69")]),t("br"),t("span",{staticClass:"line-number"},[s._v("70")]),t("br"),t("span",{staticClass:"line-number"},[s._v("71")]),t("br"),t("span",{staticClass:"line-number"},[s._v("72")]),t("br"),t("span",{staticClass:"line-number"},[s._v("73")]),t("br"),t("span",{staticClass:"line-number"},[s._v("74")]),t("br"),t("span",{staticClass:"line-number"},[s._v("75")]),t("br"),t("span",{staticClass:"line-number"},[s._v("76")]),t("br"),t("span",{staticClass:"line-number"},[s._v("77")]),t("br"),t("span",{staticClass:"line-number"},[s._v("78")]),t("br"),t("span",{staticClass:"line-number"},[s._v("79")]),t("br"),t("span",{staticClass:"line-number"},[s._v("80")]),t("br"),t("span",{staticClass:"line-number"},[s._v("81")]),t("br"),t("span",{staticClass:"line-number"},[s._v("82")]),t("br"),t("span",{staticClass:"line-number"},[s._v("83")]),t("br"),t("span",{staticClass:"line-number"},[s._v("84")]),t("br"),t("span",{staticClass:"line-number"},[s._v("85")]),t("br"),t("span",{staticClass:"line-number"},[s._v("86")]),t("br"),t("span",{staticClass:"line-number"},[s._v("87")]),t("br"),t("span",{staticClass:"line-number"},[s._v("88")]),t("br"),t("span",{staticClass:"line-number"},[s._v("89")]),t("br"),t("span",{staticClass:"line-number"},[s._v("90")]),t("br"),t("span",{staticClass:"line-number"},[s._v("91")]),t("br"),t("span",{staticClass:"line-number"},[s._v("92")]),t("br"),t("span",{staticClass:"line-number"},[s._v("93")]),t("br"),t("span",{staticClass:"line-number"},[s._v("94")]),t("br"),t("span",{staticClass:"line-number"},[s._v("95")]),t("br"),t("span",{staticClass:"line-number"},[s._v("96")]),t("br"),t("span",{staticClass:"line-number"},[s._v("97")]),t("br"),t("span",{staticClass:"line-number"},[s._v("98")]),t("br"),t("span",{staticClass:"line-number"},[s._v("99")]),t("br"),t("span",{staticClass:"line-number"},[s._v("100")]),t("br"),t("span",{staticClass:"line-number"},[s._v("101")]),t("br"),t("span",{staticClass:"line-number"},[s._v("102")]),t("br"),t("span",{staticClass:"line-number"},[s._v("103")]),t("br"),t("span",{staticClass:"line-number"},[s._v("104")]),t("br"),t("span",{staticClass:"line-number"},[s._v("105")]),t("br"),t("span",{staticClass:"line-number"},[s._v("106")]),t("br"),t("span",{staticClass:"line-number"},[s._v("107")]),t("br")])]),t("h2",{attrs:{id:"文件介绍"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#文件介绍"}},[s._v("#")]),s._v(" 文件介绍")]),s._v(" "),t("h3",{attrs:{id:"_1-check-nacos-sh"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_1-check-nacos-sh"}},[s._v("#")]),s._v(" 1. check_nacos.sh")]),s._v(" "),t("p",[s._v("用于检测nacos是否启动完成,然后再执行启动backend")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token shebang important"}},[s._v("#!/bin/bash")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("while")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("do")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 访问nacos注册中心,获取http状态码")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("CODE")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token variable"}},[t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("`")]),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("curl")]),s._v(" -I -m "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("10")]),s._v(" -o /dev/null -s -w %"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("http_code"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v(" http://$NACOS_URL/nacos/index.html"),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("`")])]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 判断状态码为200")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("if")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$CODE")]),s._v(" -eq "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("200")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("then")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 输出绿色文字,并跳出循环")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("echo")]),s._v(" -e "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"'),t("span",{pre:!0,attrs:{class:"token entity",title:"\\033"}},[s._v("\\033")]),s._v("[42;34m nacos is ok "),t("span",{pre:!0,attrs:{class:"token entity",title:"\\033"}},[s._v("\\033")]),s._v('[0m"')]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("break")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("else")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 暂停1秒")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("sleep")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("fi")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("done")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# while结束时,执行容器中的run.sh。")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("bash")]),s._v(" /run.sh\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("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br"),t("span",{staticClass:"line-number"},[s._v("12")]),t("br"),t("span",{staticClass:"line-number"},[s._v("13")]),t("br"),t("span",{staticClass:"line-number"},[s._v("14")]),t("br"),t("span",{staticClass:"line-number"},[s._v("15")]),t("br"),t("span",{staticClass:"line-number"},[s._v("16")]),t("br"),t("span",{staticClass:"line-number"},[s._v("17")]),t("br"),t("span",{staticClass:"line-number"},[s._v("18")]),t("br"),t("span",{staticClass:"line-number"},[s._v("19")]),t("br")])]),t("h3",{attrs:{id:"_2-run-sh"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_2-run-sh"}},[s._v("#")]),s._v(" 2. run.sh")]),s._v(" "),t("p",[s._v("启动backend的springboot jar包")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token shebang important"}},[s._v("#!/bin/sh")]),s._v("\n\njava -Djava.security.egd"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("file:/dev/./urandom -jar /app.jar\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("h3",{attrs:{id:"_3-dockerfile"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_3-dockerfile"}},[s._v("#")]),s._v(" 3. Dockerfile")]),s._v(" "),t("div",{staticClass:"language-dockerfile line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-dockerfile"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("FROM")]),s._v(" java"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("8\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("COPY")]),s._v(" *.jar /app.jar\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("COPY")]),s._v(" check_nacos.sh /check_nacos.sh\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("COPY")]),s._v(" run.sh /run.sh\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("ENV")]),s._v(" TZ=Asia/Shanghai\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("ENV")]),s._v(" BACKEND_SERVER_PORT=6688\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("VOLUME")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"/hoj/file"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"/hoj/testcase"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("RUN")]),s._v(" ln "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(">")]),s._v(" /etc/timezone\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("CMD")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"bash"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"/check_nacos.sh"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("EXPOSE")]),s._v(" $BACKEND_SERVER_PORT\n\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("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br"),t("span",{staticClass:"line-number"},[s._v("12")]),t("br"),t("span",{staticClass:"line-number"},[s._v("13")]),t("br"),t("span",{staticClass:"line-number"},[s._v("14")]),t("br"),t("span",{staticClass:"line-number"},[s._v("15")]),t("br"),t("span",{staticClass:"line-number"},[s._v("16")]),t("br"),t("span",{staticClass:"line-number"},[s._v("17")]),t("br"),t("span",{staticClass:"line-number"},[s._v("18")]),t("br"),t("span",{staticClass:"line-number"},[s._v("19")]),t("br"),t("span",{staticClass:"line-number"},[s._v("20")]),t("br")])])])}),[],!1,null,null,null);a.default=e.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[9],{355:function(s,a,t){"use strict";t.r(a);var n=t(41),e=Object(n.a)({},(function(){var s=this,a=s.$createElement,t=s._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[t("h1",{attrs:{id:"后端部署"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#后端部署"}},[s._v("#")]),s._v(" 后端部署")]),s._v(" "),t("h2",{attrs:{id:"前言"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#前言"}},[s._v("#")]),s._v(" 前言")]),s._v(" "),t("p",[s._v("下载本项目,进入到当前文件夹执行打包命令")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("git")]),s._v(" clone https://gitee.com/himitzh0730/hoj-deploy.git "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("&&")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("cd")]),s._v(" hoj-deploy/src/backend\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("p",[s._v("当前文件夹为打包"),t("code",[s._v("hoj-backend")]),s._v("镜像的相关文件,将这些文件复制到同一个文件夹内,"),t("strong",[s._v("然后打包"),t("a",{attrs:{href:"https://gitee.com/himitzh0730/hoj/tree/master/hoj-springboot/DataBackup",target:"_blank",rel:"noopener noreferrer"}},[s._v("DataBackup"),t("OutboundLink")],1),s._v("(SpringBoot项目)成jar包也放到当前文件夹")]),s._v(",之后执行以下命令进行打包成镜像")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[s._v("docker build -t hoj-backend "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v(".")]),s._v("\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("p",[t("strong",[s._v("项目依赖于hoj-redis,hoj-nacos,hoj-mysql等镜像成功启动,以及根据前面三个镜像的配置修改环境参数才可正常启动")])]),s._v(" "),t("p",[s._v("docker-compose 启动")]),s._v(" "),t("div",{staticClass:"language-yaml line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-yaml"}},[t("code",[t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("version")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"3"')]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("services")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("hoj-backend")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# image: registry.cn-shenzhen.aliyuncs.com/hcode/hoj_backend")]),s._v("\n\t"),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("image")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" hoj"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("backend\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("container_name")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" hoj"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("backend\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("restart")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" always\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("depends_on")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" hoj"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("redis\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" hoj"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("mysql\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" hoj"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("nacos\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("volumes")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" ./hoj/file"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("/hoj/file\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" ./hoj/testcase"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("/hoj/testcase\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" ./hoj/log/backend"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("/hoj/log/backend\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("environment")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" TZ=Asia/Shanghai\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" BACKEND_SERVER_PORT=6688 "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# backend服务端口号")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" NACOS_URL=172.20.0.4"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("8848")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# hoj-nacos的url")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" NACOS_USERNAME=root "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# nacos的管理员账号")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" NACOS_PASSWORD=hoj123456 "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# nacos的管理员密码")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" JWT_TOKEN_SECRET=default "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 加密秘钥 默认则生成32位随机密钥")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" JWT_TOKEN_EXPIRE=86400 "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# token过期时间默认为24小时 86400s")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" JWT_TOKEN_FRESH_EXPIRE=43200 "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# token默认12小时可自动刷新")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" JUDGE_TOKEN=default "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 调用判题服务器的token 默认则生成32位随机密钥")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" MYSQL_HOST=172.20.0.3 "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# hoj-mysql的host")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" MYSQL_PUBLIC_HOST=172.20.0.3 "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 如果判题服务是分布式,请提供当前mysql所在服务器的公网ip")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" MYSQL_PORT=3306 "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# hoj-mysql端口号")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" MYSQL_DATABASE_NAME=hoj "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 改动需要修改hoj-mysql镜像,默认为hoj")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" MYSQL_USERNAME=root \n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" MYSQL_ROOT_PASSWORD=hoj123456 "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# hoj-mysql的root账号密码")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" EMAIL_SERVER_HOST=smtp.qq.com "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 请使用邮件服务的域名或ip")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" EMAIL_SERVER_PORT=465 "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 请使用邮件服务的端口号")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" EMAIL_USERNMAE="),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("your_email_username "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 请使用对应邮箱账号")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" EMAIL_PASSWORD="),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("your_email_password "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 请使用对应邮箱密码")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" REDIS_HOST=172.20.0.2 "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# hoj-redis的host")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" REDIS_PORT=6379 "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# hoj-redis的port")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" REDIS_PASSWORD=hoj123456 "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("#hoj-redis的密码")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" OPEN_REMOTE_JUDGE=true "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 是否开启对hdu和codeforces的虚拟判题")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 开启虚拟判题请提供对应oj的账号密码 格式为 ")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# username1,username2,...")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# password1,password2,...")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" HDU_ACCOUNT_USERNAME_LIST=\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" HDU_ACCOUNT_PASSWORD_LIST=\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" CF_ACCOUNT_USERNAME_LIST=\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" CF_ACCOUNT_USERNAME_LIST=\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("ports")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"6688:6688"')]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("networks")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("hoj-network")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("ipv4_address")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" 172.20.0.5\n \n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("hoj-redis")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("image")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" redis"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("5.0.9"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("alpine\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("container_name")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" hoj"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("redis\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("restart")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" always\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("volumes")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" ./hoj/data/redis/data"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("/data\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("networks")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("hoj-network")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("ipv4_address")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" 172.20.0.2\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("ports")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"6379:6379"')]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("command")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" redis"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("server "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v('requirepass "hoj123456" '),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("appendonly yes\n \n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("hoj-mysql")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("image")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" registry.cn"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("shenzhen.aliyuncs.com/hcode/hoj_database\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("container_name")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" hoj"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("mysql\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("restart")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" always\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("volumes")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" ./hoj/data/mysql/data"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("/var/lib/mysql\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("environment")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" MYSQL_ROOT_PASSWORD=hoj123456\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" TZ=Asia/Shanghai\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" NACOS_USERNAME=root\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" NACOS_PASSWORD=hoj123456\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("ports")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"3306:3306"')]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("networks")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("hoj-network")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("ipv4_address")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" 172.20.0.3\n \n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("hoj-nacos")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("image")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" nacos/nacos"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("server"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("1.4.2\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("container_name")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" hoj"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("nacos\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("restart")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" always\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("depends_on")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" \n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" hoj"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("mysql\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("environment")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" JVM_XMX=384m\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" JVM_XMS=384m\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" JVM_XMN=192m\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" MODE=standalone\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" SPRING_DATASOURCE_PLATFORM=mysql\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" MYSQL_SERVICE_HOST=172.20.0.3\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" MYSQL_SERVICE_PORT=3306\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" MYSQL_SERVICE_USER=root\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" MYSQL_SERVICE_PASSWORD=Hzh"),t("span",{pre:!0,attrs:{class:"token important"}},[s._v("&hy2020")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" MYSQL_SERVICE_DB_NAME=nacos\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" NACOS_AUTH_ENABLE=true "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 开启鉴权")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("networks")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("hoj-network")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("driver")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" bridge\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("ipam")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("config")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("subnet")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" 172.20.0.0/16\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("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br"),t("span",{staticClass:"line-number"},[s._v("12")]),t("br"),t("span",{staticClass:"line-number"},[s._v("13")]),t("br"),t("span",{staticClass:"line-number"},[s._v("14")]),t("br"),t("span",{staticClass:"line-number"},[s._v("15")]),t("br"),t("span",{staticClass:"line-number"},[s._v("16")]),t("br"),t("span",{staticClass:"line-number"},[s._v("17")]),t("br"),t("span",{staticClass:"line-number"},[s._v("18")]),t("br"),t("span",{staticClass:"line-number"},[s._v("19")]),t("br"),t("span",{staticClass:"line-number"},[s._v("20")]),t("br"),t("span",{staticClass:"line-number"},[s._v("21")]),t("br"),t("span",{staticClass:"line-number"},[s._v("22")]),t("br"),t("span",{staticClass:"line-number"},[s._v("23")]),t("br"),t("span",{staticClass:"line-number"},[s._v("24")]),t("br"),t("span",{staticClass:"line-number"},[s._v("25")]),t("br"),t("span",{staticClass:"line-number"},[s._v("26")]),t("br"),t("span",{staticClass:"line-number"},[s._v("27")]),t("br"),t("span",{staticClass:"line-number"},[s._v("28")]),t("br"),t("span",{staticClass:"line-number"},[s._v("29")]),t("br"),t("span",{staticClass:"line-number"},[s._v("30")]),t("br"),t("span",{staticClass:"line-number"},[s._v("31")]),t("br"),t("span",{staticClass:"line-number"},[s._v("32")]),t("br"),t("span",{staticClass:"line-number"},[s._v("33")]),t("br"),t("span",{staticClass:"line-number"},[s._v("34")]),t("br"),t("span",{staticClass:"line-number"},[s._v("35")]),t("br"),t("span",{staticClass:"line-number"},[s._v("36")]),t("br"),t("span",{staticClass:"line-number"},[s._v("37")]),t("br"),t("span",{staticClass:"line-number"},[s._v("38")]),t("br"),t("span",{staticClass:"line-number"},[s._v("39")]),t("br"),t("span",{staticClass:"line-number"},[s._v("40")]),t("br"),t("span",{staticClass:"line-number"},[s._v("41")]),t("br"),t("span",{staticClass:"line-number"},[s._v("42")]),t("br"),t("span",{staticClass:"line-number"},[s._v("43")]),t("br"),t("span",{staticClass:"line-number"},[s._v("44")]),t("br"),t("span",{staticClass:"line-number"},[s._v("45")]),t("br"),t("span",{staticClass:"line-number"},[s._v("46")]),t("br"),t("span",{staticClass:"line-number"},[s._v("47")]),t("br"),t("span",{staticClass:"line-number"},[s._v("48")]),t("br"),t("span",{staticClass:"line-number"},[s._v("49")]),t("br"),t("span",{staticClass:"line-number"},[s._v("50")]),t("br"),t("span",{staticClass:"line-number"},[s._v("51")]),t("br"),t("span",{staticClass:"line-number"},[s._v("52")]),t("br"),t("span",{staticClass:"line-number"},[s._v("53")]),t("br"),t("span",{staticClass:"line-number"},[s._v("54")]),t("br"),t("span",{staticClass:"line-number"},[s._v("55")]),t("br"),t("span",{staticClass:"line-number"},[s._v("56")]),t("br"),t("span",{staticClass:"line-number"},[s._v("57")]),t("br"),t("span",{staticClass:"line-number"},[s._v("58")]),t("br"),t("span",{staticClass:"line-number"},[s._v("59")]),t("br"),t("span",{staticClass:"line-number"},[s._v("60")]),t("br"),t("span",{staticClass:"line-number"},[s._v("61")]),t("br"),t("span",{staticClass:"line-number"},[s._v("62")]),t("br"),t("span",{staticClass:"line-number"},[s._v("63")]),t("br"),t("span",{staticClass:"line-number"},[s._v("64")]),t("br"),t("span",{staticClass:"line-number"},[s._v("65")]),t("br"),t("span",{staticClass:"line-number"},[s._v("66")]),t("br"),t("span",{staticClass:"line-number"},[s._v("67")]),t("br"),t("span",{staticClass:"line-number"},[s._v("68")]),t("br"),t("span",{staticClass:"line-number"},[s._v("69")]),t("br"),t("span",{staticClass:"line-number"},[s._v("70")]),t("br"),t("span",{staticClass:"line-number"},[s._v("71")]),t("br"),t("span",{staticClass:"line-number"},[s._v("72")]),t("br"),t("span",{staticClass:"line-number"},[s._v("73")]),t("br"),t("span",{staticClass:"line-number"},[s._v("74")]),t("br"),t("span",{staticClass:"line-number"},[s._v("75")]),t("br"),t("span",{staticClass:"line-number"},[s._v("76")]),t("br"),t("span",{staticClass:"line-number"},[s._v("77")]),t("br"),t("span",{staticClass:"line-number"},[s._v("78")]),t("br"),t("span",{staticClass:"line-number"},[s._v("79")]),t("br"),t("span",{staticClass:"line-number"},[s._v("80")]),t("br"),t("span",{staticClass:"line-number"},[s._v("81")]),t("br"),t("span",{staticClass:"line-number"},[s._v("82")]),t("br"),t("span",{staticClass:"line-number"},[s._v("83")]),t("br"),t("span",{staticClass:"line-number"},[s._v("84")]),t("br"),t("span",{staticClass:"line-number"},[s._v("85")]),t("br"),t("span",{staticClass:"line-number"},[s._v("86")]),t("br"),t("span",{staticClass:"line-number"},[s._v("87")]),t("br"),t("span",{staticClass:"line-number"},[s._v("88")]),t("br"),t("span",{staticClass:"line-number"},[s._v("89")]),t("br"),t("span",{staticClass:"line-number"},[s._v("90")]),t("br"),t("span",{staticClass:"line-number"},[s._v("91")]),t("br"),t("span",{staticClass:"line-number"},[s._v("92")]),t("br"),t("span",{staticClass:"line-number"},[s._v("93")]),t("br"),t("span",{staticClass:"line-number"},[s._v("94")]),t("br"),t("span",{staticClass:"line-number"},[s._v("95")]),t("br"),t("span",{staticClass:"line-number"},[s._v("96")]),t("br"),t("span",{staticClass:"line-number"},[s._v("97")]),t("br"),t("span",{staticClass:"line-number"},[s._v("98")]),t("br"),t("span",{staticClass:"line-number"},[s._v("99")]),t("br"),t("span",{staticClass:"line-number"},[s._v("100")]),t("br"),t("span",{staticClass:"line-number"},[s._v("101")]),t("br"),t("span",{staticClass:"line-number"},[s._v("102")]),t("br"),t("span",{staticClass:"line-number"},[s._v("103")]),t("br"),t("span",{staticClass:"line-number"},[s._v("104")]),t("br"),t("span",{staticClass:"line-number"},[s._v("105")]),t("br"),t("span",{staticClass:"line-number"},[s._v("106")]),t("br"),t("span",{staticClass:"line-number"},[s._v("107")]),t("br")])]),t("h2",{attrs:{id:"文件介绍"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#文件介绍"}},[s._v("#")]),s._v(" 文件介绍")]),s._v(" "),t("h3",{attrs:{id:"_1-check-nacos-sh"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_1-check-nacos-sh"}},[s._v("#")]),s._v(" 1. check_nacos.sh")]),s._v(" "),t("p",[s._v("用于检测nacos是否启动完成,然后再执行启动backend")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token shebang important"}},[s._v("#!/bin/bash")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("while")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("do")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 访问nacos注册中心,获取http状态码")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("CODE")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token variable"}},[t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("`")]),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("curl")]),s._v(" -I -m "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("10")]),s._v(" -o /dev/null -s -w %"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("http_code"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v(" http://$NACOS_URL/nacos/index.html"),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("`")])]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 判断状态码为200")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("if")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$CODE")]),s._v(" -eq "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("200")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("then")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 输出绿色文字,并跳出循环")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("echo")]),s._v(" -e "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"'),t("span",{pre:!0,attrs:{class:"token entity",title:"\\033"}},[s._v("\\033")]),s._v("[42;34m nacos is ok "),t("span",{pre:!0,attrs:{class:"token entity",title:"\\033"}},[s._v("\\033")]),s._v('[0m"')]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("break")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("else")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 暂停1秒")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("sleep")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("fi")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("done")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# while结束时,执行容器中的run.sh。")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("bash")]),s._v(" /run.sh\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("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br"),t("span",{staticClass:"line-number"},[s._v("12")]),t("br"),t("span",{staticClass:"line-number"},[s._v("13")]),t("br"),t("span",{staticClass:"line-number"},[s._v("14")]),t("br"),t("span",{staticClass:"line-number"},[s._v("15")]),t("br"),t("span",{staticClass:"line-number"},[s._v("16")]),t("br"),t("span",{staticClass:"line-number"},[s._v("17")]),t("br"),t("span",{staticClass:"line-number"},[s._v("18")]),t("br"),t("span",{staticClass:"line-number"},[s._v("19")]),t("br")])]),t("h3",{attrs:{id:"_2-run-sh"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_2-run-sh"}},[s._v("#")]),s._v(" 2. run.sh")]),s._v(" "),t("p",[s._v("启动backend的springboot jar包")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token shebang important"}},[s._v("#!/bin/sh")]),s._v("\n\njava -Djava.security.egd"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("file:/dev/./urandom -jar /app.jar\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("h3",{attrs:{id:"_3-dockerfile"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_3-dockerfile"}},[s._v("#")]),s._v(" 3. Dockerfile")]),s._v(" "),t("div",{staticClass:"language-dockerfile line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-dockerfile"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("FROM")]),s._v(" java"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("8\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("COPY")]),s._v(" *.jar /app.jar\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("COPY")]),s._v(" check_nacos.sh /check_nacos.sh\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("COPY")]),s._v(" run.sh /run.sh\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("ENV")]),s._v(" TZ=Asia/Shanghai\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("ENV")]),s._v(" BACKEND_SERVER_PORT=6688\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("VOLUME")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"/hoj/file"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"/hoj/testcase"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("RUN")]),s._v(" ln "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(">")]),s._v(" /etc/timezone\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("CMD")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"bash"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"/check_nacos.sh"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("EXPOSE")]),s._v(" $BACKEND_SERVER_PORT\n\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("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br"),t("span",{staticClass:"line-number"},[s._v("12")]),t("br"),t("span",{staticClass:"line-number"},[s._v("13")]),t("br"),t("span",{staticClass:"line-number"},[s._v("14")]),t("br"),t("span",{staticClass:"line-number"},[s._v("15")]),t("br"),t("span",{staticClass:"line-number"},[s._v("16")]),t("br"),t("span",{staticClass:"line-number"},[s._v("17")]),t("br"),t("span",{staticClass:"line-number"},[s._v("18")]),t("br"),t("span",{staticClass:"line-number"},[s._v("19")]),t("br"),t("span",{staticClass:"line-number"},[s._v("20")]),t("br")])])])}),[],!1,null,null,null);a.default=e.exports}}]); \ No newline at end of file diff --git a/docs/docs/.vuepress/dist/assets/js/app.094be66d.js b/docs/docs/.vuepress/dist/assets/js/app.9a723f8d.js similarity index 81% rename from docs/docs/.vuepress/dist/assets/js/app.094be66d.js rename to docs/docs/.vuepress/dist/assets/js/app.9a723f8d.js index f818af11..b1e76468 100644 --- a/docs/docs/.vuepress/dist/assets/js/app.094be66d.js +++ b/docs/docs/.vuepress/dist/assets/js/app.9a723f8d.js @@ -1,8 +1,8 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[0],[]]);!function(t){function e(e){for(var r,a,u=e[0],c=e[1],s=e[2],l=0,p=[];l0?o(r(t),9007199254740991):0}},function(t,e,n){var r=n(2),o=n(9),i=n(5),a=n(65),u=n(71),c=n(24),s=c.get,f=c.enforce,l=String(String).split("String");(t.exports=function(t,e,n,u){var c,s=!!u&&!!u.unsafe,p=!!u&&!!u.enumerable,d=!!u&&!!u.noTargetGet;"function"==typeof n&&("string"!=typeof e||i(n,"name")||o(n,"name",e),(c=f(n)).source||(c.source=l.join("string"==typeof e?e:""))),t!==r?(s?!d&&t[e]&&(p=!0):delete t[e],p?t[e]=n:o(t,e,n)):p?t[e]=n:a(e,n)})(Function.prototype,"toString",(function(){return"function"==typeof this&&s(this).source||u(this)}))},function(t,e){t.exports=!1},function(t,e,n){var r=n(99),o=n(2),i=function(t){return"function"==typeof t?t:void 0};t.exports=function(t,e){return arguments.length<2?i(r[t])||i(o[t]):r[t]&&r[t][e]||o[t]&&o[t][e]}},function(t,e,n){var r=n(211),o=n(214);t.exports=function(t,e){var n=o(t,e);return r(n)?n:void 0}},function(t,e){t.exports=function(t){if(null==t)throw TypeError("Can't call method on "+t);return t}},function(t,e,n){var r=n(7),o=n(72),i=n(28),a=n(11),u=n(44),c=n(5),s=n(98),f=Object.getOwnPropertyDescriptor;e.f=r?f:function(t,e){if(t=a(t),e=u(e,!0),s)try{return f(t,e)}catch(t){}if(c(t,e))return i(!o.f.call(t,e),t[e])}},function(t,e){t.exports=function(t){return null!=t&&"object"==typeof t}},function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},function(t,e,n){"use strict";var r=n(0),o=n(25).filter;r({target:"Array",proto:!0,forced:!n(51)("filter")},{filter:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}})},function(t,e,n){var r,o,i,a=n(165),u=n(2),c=n(4),s=n(9),f=n(5),l=n(64),p=n(49),d=n(31),h=u.WeakMap;if(a){var v=l.state||(l.state=new h),y=v.get,m=v.has,g=v.set;r=function(t,e){return e.facade=t,g.call(v,t,e),e},o=function(t){return y.call(v,t)||{}},i=function(t){return m.call(v,t)}}else{var b=p("state");d[b]=!0,r=function(t,e){return e.facade=t,s(t,b,e),e},o=function(t){return f(t,b)?t[b]:{}},i=function(t){return f(t,b)}}t.exports={set:r,get:o,has:i,enforce:function(t){return i(t)?o(t):r(t,{})},getterFor:function(t){return function(e){var n;if(!c(e)||(n=o(e)).type!==t)throw TypeError("Incompatible receiver, "+t+" required");return n}}}},function(t,e,n){var r=n(75),o=n(27),i=n(12),a=n(14),u=n(118),c=[].push,s=function(t){var e=1==t,n=2==t,s=3==t,f=4==t,l=6==t,p=7==t,d=5==t||l;return function(h,v,y,m){for(var g,b,_=i(h),x=o(_),w=r(v,y,3),O=a(x.length),j=0,S=m||u,k=e?S(h,O):n||p?S(h,0):void 0;O>j;j++)if((d||j in x)&&(b=w(g=x[j],j,_),t))if(e)k[j]=b;else if(b)switch(t){case 3:return!0;case 5:return g;case 6:return j;case 2:c.call(k,g)}else switch(t){case 4:return!1;case 7:c.call(k,g)}return l?-1:s||f?f:k}};t.exports={forEach:s(0),map:s(1),filter:s(2),some:s(3),every:s(4),find:s(5),findIndex:s(6),filterOut:s(7)}},function(t,e,n){var r=n(38),o=n(196),i=n(197),a=r?r.toStringTag:void 0;t.exports=function(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":a&&a in Object(t)?o(t):i(t)}},function(t,e,n){var r=n(3),o=n(22),i="".split;t.exports=r((function(){return!Object("z").propertyIsEnumerable(0)}))?function(t){return"String"==o(t)?i.call(t,""):Object(t)}:Object},function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},function(t,e,n){var r=n(22),o=n(2);t.exports="process"==r(o.process)},function(t,e,n){var r,o,i=n(2),a=n(68),u=i.process,c=u&&u.versions,s=c&&c.v8;s?o=(r=s.split("."))[0]+r[1]:a&&(!(r=a.match(/Edge\/(\d+)/))||r[1]>=74)&&(r=a.match(/Chrome\/(\d+)/))&&(o=r[1]),t.exports=o&&+o},function(t,e){t.exports={}},function(t,e){t.exports={}},function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(String(t)+" is not a function");return t}},function(t,e,n){var r=n(76),o=n(15),i=n(183);r||o(Object.prototype,"toString",i,{unsafe:!0})},function(t,e,n){"use strict";var r=n(116).charAt,o=n(24),i=n(104),a=o.set,u=o.getterFor("String Iterator");i(String,"String",(function(t){a(this,{type:"String Iterator",string:String(t),index:0})}),(function(){var t,e=u(this),n=e.string,o=e.index;return o>=n.length?{value:void 0,done:!0}:(t=r(n,o),e.index+=t.length,{value:t,done:!1})}))},function(t,e,n){var r=n(2),o=n(117),i=n(97),a=n(9),u=n(1),c=u("iterator"),s=u("toStringTag"),f=i.values;for(var l in o){var p=r[l],d=p&&p.prototype;if(d){if(d[c]!==f)try{a(d,c,f)}catch(t){d[c]=f}if(d[s]||a(d,s,l),o[l])for(var h in i)if(d[h]!==i[h])try{a(d,h,i[h])}catch(t){d[h]=i[h]}}}},function(t,e,n){"use strict";var r=n(3);t.exports=function(t,e){var n=[][t];return!!n&&r((function(){n.call(null,e||function(){throw 1},1)}))}},function(t,e,n){var r=n(13).Symbol;t.exports=r},function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var r=n(40);var o=n(57);function i(t){return function(t){if(Array.isArray(t))return Object(r.a)(t)}(t)||function(t){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(t))return Array.from(t)}(t)||Object(o.a)(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}},function(t,e,n){"use strict";function r(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n"+t+"<\/script>"},h=function(){try{r=document.domain&&new ActiveXObject("htmlfile")}catch(t){}var t,e;h=r?function(t){t.write(d("")),t.close();var e=t.parentWindow.Object;return t=null,e}(r):((e=s("iframe")).style.display="none",c.appendChild(e),e.src=String("javascript:"),(t=e.contentWindow.document).open(),t.write(d("document.F=Object")),t.close(),t.F);for(var n=a.length;n--;)delete h.prototype[a[n]];return h()};u[l]=!0,t.exports=Object.create||function(t,e){var n;return null!==t?(p.prototype=o(t),n=new p,p.prototype=null,n[l]=t):n=h(),void 0===e?n:i(n,e)}},function(t,e,n){var r=n(101),o=n(70);t.exports=Object.keys||function(t){return r(t,o)}},function(t,e){var n=Math.ceil,r=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?r:n)(t)}},function(t,e,n){var r=n(63),o=n(45),i=r("keys");t.exports=function(t){return i[t]||(i[t]=o(t))}},function(t,e,n){var r=n(8).f,o=n(5),i=n(1)("toStringTag");t.exports=function(t,e,n){t&&!o(t=n?t:t.prototype,i)&&r(t,i,{configurable:!0,value:e})}},function(t,e,n){var r=n(3),o=n(1),i=n(30),a=o("species");t.exports=function(t){return i>=51||!r((function(){var e=[];return(e.constructor={})[a]=function(){return{foo:1}},1!==e[t](Boolean).foo}))}},function(t,e,n){var r=n(201),o=n(202),i=n(203),a=n(204),u=n(205);function c(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e0?o(r(t),9007199254740991):0}},function(t,e,n){var r=n(2),o=n(9),i=n(5),a=n(65),u=n(71),c=n(24),s=c.get,f=c.enforce,l=String(String).split("String");(t.exports=function(t,e,n,u){var c,s=!!u&&!!u.unsafe,p=!!u&&!!u.enumerable,h=!!u&&!!u.noTargetGet;"function"==typeof n&&("string"!=typeof e||i(n,"name")||o(n,"name",e),(c=f(n)).source||(c.source=l.join("string"==typeof e?e:""))),t!==r?(s?!h&&t[e]&&(p=!0):delete t[e],p?t[e]=n:o(t,e,n)):p?t[e]=n:a(e,n)})(Function.prototype,"toString",(function(){return"function"==typeof this&&s(this).source||u(this)}))},function(t,e){t.exports=!1},function(t,e,n){var r=n(99),o=n(2),i=function(t){return"function"==typeof t?t:void 0};t.exports=function(t,e){return arguments.length<2?i(r[t])||i(o[t]):r[t]&&r[t][e]||o[t]&&o[t][e]}},function(t,e,n){var r=n(211),o=n(214);t.exports=function(t,e){var n=o(t,e);return r(n)?n:void 0}},function(t,e){t.exports=function(t){if(null==t)throw TypeError("Can't call method on "+t);return t}},function(t,e,n){var r=n(7),o=n(72),i=n(28),a=n(11),u=n(44),c=n(5),s=n(98),f=Object.getOwnPropertyDescriptor;e.f=r?f:function(t,e){if(t=a(t),e=u(e,!0),s)try{return f(t,e)}catch(t){}if(c(t,e))return i(!o.f.call(t,e),t[e])}},function(t,e){t.exports=function(t){return null!=t&&"object"==typeof t}},function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},function(t,e,n){"use strict";var r=n(0),o=n(25).filter;r({target:"Array",proto:!0,forced:!n(51)("filter")},{filter:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}})},function(t,e,n){var r,o,i,a=n(165),u=n(2),c=n(4),s=n(9),f=n(5),l=n(64),p=n(49),h=n(31),d=u.WeakMap;if(a){var v=l.state||(l.state=new d),y=v.get,m=v.has,g=v.set;r=function(t,e){return e.facade=t,g.call(v,t,e),e},o=function(t){return y.call(v,t)||{}},i=function(t){return m.call(v,t)}}else{var b=p("state");h[b]=!0,r=function(t,e){return e.facade=t,s(t,b,e),e},o=function(t){return f(t,b)?t[b]:{}},i=function(t){return f(t,b)}}t.exports={set:r,get:o,has:i,enforce:function(t){return i(t)?o(t):r(t,{})},getterFor:function(t){return function(e){var n;if(!c(e)||(n=o(e)).type!==t)throw TypeError("Incompatible receiver, "+t+" required");return n}}}},function(t,e,n){var r=n(75),o=n(27),i=n(12),a=n(14),u=n(118),c=[].push,s=function(t){var e=1==t,n=2==t,s=3==t,f=4==t,l=6==t,p=7==t,h=5==t||l;return function(d,v,y,m){for(var g,b,_=i(d),x=o(_),w=r(v,y,3),O=a(x.length),j=0,S=m||u,k=e?S(d,O):n||p?S(d,0):void 0;O>j;j++)if((h||j in x)&&(b=w(g=x[j],j,_),t))if(e)k[j]=b;else if(b)switch(t){case 3:return!0;case 5:return g;case 6:return j;case 2:c.call(k,g)}else switch(t){case 4:return!1;case 7:c.call(k,g)}return l?-1:s||f?f:k}};t.exports={forEach:s(0),map:s(1),filter:s(2),some:s(3),every:s(4),find:s(5),findIndex:s(6),filterOut:s(7)}},function(t,e,n){var r=n(38),o=n(196),i=n(197),a=r?r.toStringTag:void 0;t.exports=function(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":a&&a in Object(t)?o(t):i(t)}},function(t,e,n){var r=n(3),o=n(22),i="".split;t.exports=r((function(){return!Object("z").propertyIsEnumerable(0)}))?function(t){return"String"==o(t)?i.call(t,""):Object(t)}:Object},function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},function(t,e,n){var r=n(22),o=n(2);t.exports="process"==r(o.process)},function(t,e,n){var r,o,i=n(2),a=n(68),u=i.process,c=u&&u.versions,s=c&&c.v8;s?o=(r=s.split("."))[0]+r[1]:a&&(!(r=a.match(/Edge\/(\d+)/))||r[1]>=74)&&(r=a.match(/Chrome\/(\d+)/))&&(o=r[1]),t.exports=o&&+o},function(t,e){t.exports={}},function(t,e){t.exports={}},function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(String(t)+" is not a function");return t}},function(t,e,n){var r=n(76),o=n(15),i=n(183);r||o(Object.prototype,"toString",i,{unsafe:!0})},function(t,e,n){"use strict";var r=n(116).charAt,o=n(24),i=n(104),a=o.set,u=o.getterFor("String Iterator");i(String,"String",(function(t){a(this,{type:"String Iterator",string:String(t),index:0})}),(function(){var t,e=u(this),n=e.string,o=e.index;return o>=n.length?{value:void 0,done:!0}:(t=r(n,o),e.index+=t.length,{value:t,done:!1})}))},function(t,e,n){var r=n(2),o=n(117),i=n(97),a=n(9),u=n(1),c=u("iterator"),s=u("toStringTag"),f=i.values;for(var l in o){var p=r[l],h=p&&p.prototype;if(h){if(h[c]!==f)try{a(h,c,f)}catch(t){h[c]=f}if(h[s]||a(h,s,l),o[l])for(var d in i)if(h[d]!==i[d])try{a(h,d,i[d])}catch(t){h[d]=i[d]}}}},function(t,e,n){"use strict";var r=n(3);t.exports=function(t,e){var n=[][t];return!!n&&r((function(){n.call(null,e||function(){throw 1},1)}))}},function(t,e,n){var r=n(13).Symbol;t.exports=r},function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var r=n(40);var o=n(57);function i(t){return function(t){if(Array.isArray(t))return Object(r.a)(t)}(t)||function(t){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(t))return Array.from(t)}(t)||Object(o.a)(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}},function(t,e,n){"use strict";function r(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n"+t+"<\/script>"},d=function(){try{r=document.domain&&new ActiveXObject("htmlfile")}catch(t){}var t,e;d=r?function(t){t.write(h("")),t.close();var e=t.parentWindow.Object;return t=null,e}(r):((e=s("iframe")).style.display="none",c.appendChild(e),e.src=String("javascript:"),(t=e.contentWindow.document).open(),t.write(h("document.F=Object")),t.close(),t.F);for(var n=a.length;n--;)delete d.prototype[a[n]];return d()};u[l]=!0,t.exports=Object.create||function(t,e){var n;return null!==t?(p.prototype=o(t),n=new p,p.prototype=null,n[l]=t):n=d(),void 0===e?n:i(n,e)}},function(t,e,n){var r=n(101),o=n(70);t.exports=Object.keys||function(t){return r(t,o)}},function(t,e){var n=Math.ceil,r=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?r:n)(t)}},function(t,e,n){var r=n(63),o=n(45),i=r("keys");t.exports=function(t){return i[t]||(i[t]=o(t))}},function(t,e,n){var r=n(8).f,o=n(5),i=n(1)("toStringTag");t.exports=function(t,e,n){t&&!o(t=n?t:t.prototype,i)&&r(t,i,{configurable:!0,value:e})}},function(t,e,n){var r=n(3),o=n(1),i=n(30),a=o("species");t.exports=function(t){return i>=51||!r((function(){var e=[];return(e.constructor={})[a]=function(){return{foo:1}},1!==e[t](Boolean).foo}))}},function(t,e,n){var r=n(201),o=n(202),i=n(203),a=n(204),u=n(205);function c(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e
'};function o(t,e,n){return tn?n:t}function i(t){return 100*(-1+t)}n.configure=function(t){var e,n;for(e in t)void 0!==(n=t[e])&&t.hasOwnProperty(e)&&(r[e]=n);return this},n.status=null,n.set=function(t){var e=n.isStarted();t=o(t,r.minimum,1),n.status=1===t?null:t;var c=n.render(!e),s=c.querySelector(r.barSelector),f=r.speed,l=r.easing;return c.offsetWidth,a((function(e){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),u(s,function(t,e,n){var o;return(o="translate3d"===r.positionUsing?{transform:"translate3d("+i(t)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+i(t)+"%,0)"}:{"margin-left":i(t)+"%"}).transition="all "+e+"ms "+n,o}(t,f,l)),1===t?(u(c,{transition:"none",opacity:1}),c.offsetWidth,setTimeout((function(){u(c,{transition:"all "+f+"ms linear",opacity:0}),setTimeout((function(){n.remove(),e()}),f)}),f)):setTimeout(e,f)})),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var t=function(){setTimeout((function(){n.status&&(n.trickle(),t())}),r.trickleSpeed)};return r.trickle&&t(),this},n.done=function(t){return t||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(t){var e=n.status;return e?("number"!=typeof t&&(t=(1-e)*o(Math.random()*e,.1,.95)),e=o(e+t,0,.994),n.set(e)):n.start()},n.trickle=function(){return n.inc(Math.random()*r.trickleRate)},t=0,e=0,n.promise=function(r){return r&&"resolved"!==r.state()?(0===e&&n.start(),t++,e++,r.always((function(){0==--e?(t=0,n.done()):n.set((t-e)/t)})),this):this},n.render=function(t){if(n.isRendered())return document.getElementById("nprogress");s(document.documentElement,"nprogress-busy");var e=document.createElement("div");e.id="nprogress",e.innerHTML=r.template;var o,a=e.querySelector(r.barSelector),c=t?"-100":i(n.status||0),f=document.querySelector(r.parent);return u(a,{transition:"all 0 linear",transform:"translate3d("+c+"%,0,0)"}),r.showSpinner||(o=e.querySelector(r.spinnerSelector))&&p(o),f!=document.body&&s(f,"nprogress-custom-parent"),f.appendChild(e),e},n.remove=function(){f(document.documentElement,"nprogress-busy"),f(document.querySelector(r.parent),"nprogress-custom-parent");var t=document.getElementById("nprogress");t&&p(t)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var t=document.body.style,e="WebkitTransform"in t?"Webkit":"MozTransform"in t?"Moz":"msTransform"in t?"ms":"OTransform"in t?"O":"";return e+"Perspective"in t?"translate3d":e+"Transform"in t?"translate":"margin"};var a=function(){var t=[];function e(){var n=t.shift();n&&n(e)}return function(n){t.push(n),1==t.length&&e()}}(),u=function(){var t=["Webkit","O","Moz","ms"],e={};function n(n){return n=n.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(function(t,e){return e.toUpperCase()})),e[n]||(e[n]=function(e){var n=document.body.style;if(e in n)return e;for(var r,o=t.length,i=e.charAt(0).toUpperCase()+e.slice(1);o--;)if((r=t[o]+i)in n)return r;return e}(n))}function r(t,e,r){e=n(e),t.style[e]=r}return function(t,e){var n,o,i=arguments;if(2==i.length)for(n in e)void 0!==(o=e[n])&&e.hasOwnProperty(n)&&r(t,n,o);else r(t,i[1],i[2])}}();function c(t,e){return("string"==typeof t?t:l(t)).indexOf(" "+e+" ")>=0}function s(t,e){var n=l(t),r=n+e;c(n,e)||(t.className=r.substring(1))}function f(t,e){var n,r=l(t);c(t,e)&&(n=r.replace(" "+e+" "," "),t.className=n.substring(1,n.length-1))}function l(t){return(" "+(t.className||"")+" ").replace(/\s+/gi," ")}function p(t){t&&t.parentNode&&t.parentNode.removeChild(t)}return n})?r.call(e,n,e,t):r)||(t.exports=o)},function(t,e,n){"use strict";var r=n(0),o=n(25).map;r({target:"Array",proto:!0,forced:!n(51)("map")},{map:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}})},function(t,e,n){"use strict";var r=n(150),o=n(6),i=n(14),a=n(48),u=n(19),c=n(152),s=n(192),f=n(153),l=Math.max,p=Math.min;r("replace",2,(function(t,e,n,r){var d=r.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,h=r.REPLACE_KEEPS_$0,v=d?"$":"$0";return[function(n,r){var o=u(this),i=null==n?void 0:n[t];return void 0!==i?i.call(n,o,r):e.call(String(o),n,r)},function(t,r){if(!d&&h||"string"==typeof r&&-1===r.indexOf(v)){var u=n(e,t,this,r);if(u.done)return u.value}var y=o(t),m=String(this),g="function"==typeof r;g||(r=String(r));var b=y.global;if(b){var _=y.unicode;y.lastIndex=0}for(var x=[];;){var w=f(y,m);if(null===w)break;if(x.push(w),!b)break;""===String(w[0])&&(y.lastIndex=c(m,i(y.lastIndex),_))}for(var O,j="",S=0,k=0;k=S&&(j+=m.slice(S,A)+L,S=A+E.length)}return j+m.slice(S)}]}))},function(t,e,n){var r=n(101),o=n(70).concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return r(t,o)}},function(t,e,n){"use strict";var r,o,i=n(151),a=n(157),u=RegExp.prototype.exec,c=String.prototype.replace,s=u,f=(r=/a/,o=/b*/g,u.call(r,"a"),u.call(o,"a"),0!==r.lastIndex||0!==o.lastIndex),l=a.UNSUPPORTED_Y||a.BROKEN_CARET,p=void 0!==/()??/.exec("")[1];(f||p||l)&&(s=function(t){var e,n,r,o,a=this,s=l&&a.sticky,d=i.call(a),h=a.source,v=0,y=t;return s&&(-1===(d=d.replace("y","")).indexOf("g")&&(d+="g"),y=String(t).slice(a.lastIndex),a.lastIndex>0&&(!a.multiline||a.multiline&&"\n"!==t[a.lastIndex-1])&&(h="(?: "+h+")",y=" "+y,v++),n=new RegExp("^(?:"+h+")",d)),p&&(n=new RegExp("^"+h+"$(?!\\s)",d)),f&&(e=a.lastIndex),r=u.call(s?n:a,y),s?r?(r.input=r.input.slice(v),r[0]=r[0].slice(v),r.index=a.lastIndex,a.lastIndex+=r[0].length):a.lastIndex=0:f&&r&&(a.lastIndex=a.global?r.index+r[0].length:e),p&&r&&r.length>1&&c.call(r[0],n,(function(){for(o=1;o37&&o<41)}))},function(t,e,n){var r=n(17);t.exports=r("navigator","userAgent")||""},function(t,e,n){var r=n(11),o=n(14),i=n(102),a=function(t){return function(e,n,a){var u,c=r(e),s=o(c.length),f=i(a,s);if(t&&n!=n){for(;s>f;)if((u=c[f++])!=u)return!0}else for(;s>f;f++)if((t||f in c)&&c[f]===n)return t||f||0;return!t&&-1}};t.exports={includes:a(!0),indexOf:a(!1)}},function(t,e){t.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},function(t,e,n){var r=n(64),o=Function.toString;"function"!=typeof r.inspectSource&&(r.inspectSource=function(t){return o.call(t)}),t.exports=r.inspectSource},function(t,e,n){"use strict";var r={}.propertyIsEnumerable,o=Object.getOwnPropertyDescriptor,i=o&&!r.call({1:2},1);e.f=i?function(t){var e=o(this,t);return!!e&&e.enumerable}:r},function(t,e){e.f=Object.getOwnPropertySymbols},function(t,e,n){var r=n(5),o=n(12),i=n(49),a=n(108),u=i("IE_PROTO"),c=Object.prototype;t.exports=a?Object.getPrototypeOf:function(t){return t=o(t),r(t,u)?t[u]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?c:null}},function(t,e,n){var r=n(33);t.exports=function(t,e,n){if(r(t),void 0===e)return t;switch(n){case 0:return function(){return t.call(e)};case 1:return function(n){return t.call(e,n)};case 2:return function(n,r){return t.call(e,n,r)};case 3:return function(n,r,o){return t.call(e,n,r,o)}}return function(){return t.apply(e,arguments)}}},function(t,e,n){var r={};r[n(1)("toStringTag")]="z",t.exports="[object z]"===String(r)},function(t,e,n){"use strict";var r=n(0),o=n(4),i=n(43),a=n(102),u=n(14),c=n(11),s=n(78),f=n(1),l=n(51)("slice"),p=f("species"),d=[].slice,h=Math.max;r({target:"Array",proto:!0,forced:!l},{slice:function(t,e){var n,r,f,l=c(this),v=u(l.length),y=a(t,v),m=a(void 0===e?v:e,v);if(i(l)&&("function"!=typeof(n=l.constructor)||n!==Array&&!i(n.prototype)?o(n)&&null===(n=n[p])&&(n=void 0):n=void 0,n===Array||void 0===n))return d.call(l,y,m);for(r=new(void 0===n?Array:n)(h(m-y,0)),f=0;y-1&&t%1==0&&t<=9007199254740991}},function(t,e,n){var r=n(10),o=n(86),i=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,a=/^\w*$/;t.exports=function(t,e){if(r(t))return!1;var n=typeof t;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=t&&!o(t))||(a.test(t)||!i.test(t)||null!=e&&t in Object(e))}},function(t,e,n){var r=n(26),o=n(21);t.exports=function(t){return"symbol"==typeof t||o(t)&&"[object Symbol]"==r(t)}},function(t,e){t.exports=function(t){return t}},function(t,e,n){"use strict";var r=n(0),o=n(25).some;r({target:"Array",proto:!0,forced:!n(37)("some")},{some:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}})},function(t,e,n){var r=n(0),o=n(12),i=n(47);r({target:"Object",stat:!0,forced:n(3)((function(){i(1)}))},{keys:function(t){return i(o(t))}})},function(t,e,n){"use strict";var r=n(0),o=n(119);r({target:"Array",proto:!0,forced:[].forEach!=o},{forEach:o})},function(t,e,n){var r=n(2),o=n(117),i=n(119),a=n(9);for(var u in o){var c=r[u],s=c&&c.prototype;if(s&&s.forEach!==i)try{a(s,"forEach",i)}catch(t){s.forEach=i}}},function(t,e,n){var r=n(1),o=n(46),i=n(8),a=r("unscopables"),u=Array.prototype;null==u[a]&&i.f(u,a,{configurable:!0,value:o(null)}),t.exports=function(t){u[a][t]=!0}},function(t,e,n){var r=n(3),o=/#|\.prototype\./,i=function(t,e){var n=u[a(t)];return n==s||n!=c&&("function"==typeof e?r(e):!!e)},a=i.normalize=function(t){return String(t).replace(o,".").toLowerCase()},u=i.data={},c=i.NATIVE="N",s=i.POLYFILL="P";t.exports=i},function(t,e,n){var r=n(6),o=n(33),i=n(1)("species");t.exports=function(t,e){var n,a=r(t).constructor;return void 0===a||null==(n=r(a)[i])?e:o(n)}},function(t,e,n){var r=n(149);t.exports=function(t){if(r(t))throw TypeError("The method doesn't accept regular expressions");return t}},function(t,e,n){var r=n(1)("match");t.exports=function(t){var e=/./;try{"/./"[t](e)}catch(n){try{return e[r]=!1,"/./"[t](e)}catch(t){}}return!1}},function(t,e,n){"use strict";var r=n(11),o=n(92),i=n(32),a=n(24),u=n(104),c=a.set,s=a.getterFor("Array Iterator");t.exports=u(Array,"Array",(function(t,e){c(this,{type:"Array Iterator",target:r(t),index:0,kind:e})}),(function(){var t=s(this),e=t.target,n=t.kind,r=t.index++;return!e||r>=e.length?(t.target=void 0,{value:void 0,done:!0}):"keys"==n?{value:r,done:!1}:"values"==n?{value:e[r],done:!1}:{value:[r,e[r]],done:!1}}),"values"),i.Arguments=i.Array,o("keys"),o("values"),o("entries")},function(t,e,n){var r=n(7),o=n(3),i=n(66);t.exports=!r&&!o((function(){return 7!=Object.defineProperty(i("div"),"a",{get:function(){return 7}}).a}))},function(t,e,n){var r=n(2);t.exports=r},function(t,e,n){var r=n(67);t.exports=r&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},function(t,e,n){var r=n(5),o=n(11),i=n(69).indexOf,a=n(31);t.exports=function(t,e){var n,u=o(t),c=0,s=[];for(n in u)!r(a,n)&&r(u,n)&&s.push(n);for(;e.length>c;)r(u,n=e[c++])&&(~i(s,n)||s.push(n));return s}},function(t,e,n){var r=n(48),o=Math.max,i=Math.min;t.exports=function(t,e){var n=r(t);return n<0?o(n+e,0):i(n,e)}},function(t,e,n){var r=n(17);t.exports=r("document","documentElement")},function(t,e,n){"use strict";var r=n(0),o=n(166),i=n(74),a=n(155),u=n(50),c=n(9),s=n(15),f=n(1),l=n(16),p=n(32),d=n(107),h=d.IteratorPrototype,v=d.BUGGY_SAFARI_ITERATORS,y=f("iterator"),m=function(){return this};t.exports=function(t,e,n,f,d,g,b){o(n,e,f);var _,x,w,O=function(t){if(t===d&&A)return A;if(!v&&t in k)return k[t];switch(t){case"keys":case"values":case"entries":return function(){return new n(this,t)}}return function(){return new n(this)}},j=e+" Iterator",S=!1,k=t.prototype,E=k[y]||k["@@iterator"]||d&&k[d],A=!v&&E||O(d),$="Array"==e&&k.entries||E;if($&&(_=i($.call(new t)),h!==Object.prototype&&_.next&&(l||i(_)===h||(a?a(_,h):"function"!=typeof _[y]&&c(_,y,m)),u(_,j,!0,!0),l&&(p[j]=m))),"values"==d&&E&&"values"!==E.name&&(S=!0,A=function(){return E.call(this)}),l&&!b||k[y]===A||c(k,y,A),p[e]=A,d)if(x={values:O("values"),keys:g?A:O("keys"),entries:O("entries")},b)for(w in x)(v||S||!(w in k))&&s(k,w,x[w]);else r({target:e,proto:!0,forced:v||S},x);return x}},function(t,e,n){var r=n(5),o=n(106),i=n(20),a=n(8);t.exports=function(t,e){for(var n=o(e),u=a.f,c=i.f,s=0;sn;)e.push(arguments[n++]);return _[++b]=function(){("function"==typeof t?t:Function(t)).apply(void 0,e)},r(b),b},v=function(t){delete _[t]},p?r=function(t){y.nextTick(w(t))}:g&&g.now?r=function(t){g.now(w(t))}:m&&!l?(i=(o=new m).port2,o.port1.onmessage=O,r=c(i.postMessage,i,1)):a.addEventListener&&"function"==typeof postMessage&&!a.importScripts&&d&&"file:"!==d.protocol&&!u(j)?(r=j,a.addEventListener("message",O,!1)):r="onreadystatechange"in f("script")?function(t){s.appendChild(f("script")).onreadystatechange=function(){s.removeChild(this),x(t)}}:function(t){setTimeout(w(t),0)}),t.exports={set:h,clear:v}},function(t,e,n){var r=n(68);t.exports=/(iphone|ipod|ipad).*applewebkit/i.test(r)},function(t,e,n){var r=n(6),o=n(4),i=n(114);t.exports=function(t,e){if(r(t),o(e)&&e.constructor===t)return e;var n=i.f(t);return(0,n.resolve)(e),n.promise}},function(t,e,n){"use strict";var r=n(33),o=function(t){var e,n;this.promise=new t((function(t,r){if(void 0!==e||void 0!==n)throw TypeError("Bad Promise constructor");e=t,n=r})),this.resolve=r(e),this.reject=r(n)};t.exports.f=function(t){return new o(t)}},function(t,e,n){var r=function(t){"use strict";var e=Object.prototype,n=e.hasOwnProperty,r="function"==typeof Symbol?Symbol:{},o=r.iterator||"@@iterator",i=r.asyncIterator||"@@asyncIterator",a=r.toStringTag||"@@toStringTag";function u(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{u({},"")}catch(t){u=function(t,e,n){return t[e]=n}}function c(t,e,n,r){var o=e&&e.prototype instanceof l?e:l,i=Object.create(o.prototype),a=new O(r||[]);return i._invoke=function(t,e,n){var r="suspendedStart";return function(o,i){if("executing"===r)throw new Error("Generator is already running");if("completed"===r){if("throw"===o)throw i;return S()}for(n.method=o,n.arg=i;;){var a=n.delegate;if(a){var u=_(a,n);if(u){if(u===f)continue;return u}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===r)throw r="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r="executing";var c=s(t,e,n);if("normal"===c.type){if(r=n.done?"completed":"suspendedYield",c.arg===f)continue;return{value:c.arg,done:n.done}}"throw"===c.type&&(r="completed",n.method="throw",n.arg=c.arg)}}}(t,n,a),i}function s(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}t.wrap=c;var f={};function l(){}function p(){}function d(){}var h={};h[o]=function(){return this};var v=Object.getPrototypeOf,y=v&&v(v(j([])));y&&y!==e&&n.call(y,o)&&(h=y);var m=d.prototype=l.prototype=Object.create(h);function g(t){["next","throw","return"].forEach((function(e){u(t,e,(function(t){return this._invoke(e,t)}))}))}function b(t,e){var r;this._invoke=function(o,i){function a(){return new e((function(r,a){!function r(o,i,a,u){var c=s(t[o],t,i);if("throw"!==c.type){var f=c.arg,l=f.value;return l&&"object"==typeof l&&n.call(l,"__await")?e.resolve(l.__await).then((function(t){r("next",t,a,u)}),(function(t){r("throw",t,a,u)})):e.resolve(l).then((function(t){f.value=t,a(f)}),(function(t){return r("throw",t,a,u)}))}u(c.arg)}(o,i,r,a)}))}return r=r?r.then(a,a):a()}}function _(t,e){var n=t.iterator[e.method];if(void 0===n){if(e.delegate=null,"throw"===e.method){if(t.iterator.return&&(e.method="return",e.arg=void 0,_(t,e),"throw"===e.method))return f;e.method="throw",e.arg=new TypeError("The iterator does not provide a 'throw' method")}return f}var r=s(n,t.iterator,e.arg);if("throw"===r.type)return e.method="throw",e.arg=r.arg,e.delegate=null,f;var o=r.arg;return o?o.done?(e[t.resultName]=o.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=void 0),e.delegate=null,f):o:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,f)}function x(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function w(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function O(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(x,this),this.reset(!0)}function j(t){if(t){var e=t[o];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var r=-1,i=function e(){for(;++r=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return r("end");if(i.tryLoc<=this.prev){var u=n.call(i,"catchLoc"),c=n.call(i,"finallyLoc");if(u&&c){if(this.prev=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),w(n),f}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var r=n.completion;if("throw"===r.type){var o=r.arg;w(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,n){return this.delegate={iterator:j(t),resultName:e,nextLoc:n},"next"===this.method&&(this.arg=void 0),f}},t}(t.exports);try{regeneratorRuntime=r}catch(t){Function("r","regeneratorRuntime = r")(r)}},function(t,e,n){var r=n(48),o=n(19),i=function(t){return function(e,n){var i,a,u=String(o(e)),c=r(n),s=u.length;return c<0||c>=s?t?"":void 0:(i=u.charCodeAt(c))<55296||i>56319||c+1===s||(a=u.charCodeAt(c+1))<56320||a>57343?t?u.charAt(c):i:t?u.slice(c,c+2):a-56320+(i-55296<<10)+65536}};t.exports={codeAt:i(!1),charAt:i(!0)}},function(t,e){t.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},function(t,e,n){var r=n(4),o=n(43),i=n(1)("species");t.exports=function(t,e){var n;return o(t)&&("function"!=typeof(n=t.constructor)||n!==Array&&!o(n.prototype)?r(n)&&null===(n=n[i])&&(n=void 0):n=void 0),new(void 0===n?Array:n)(0===e?0:e)}},function(t,e,n){"use strict";var r=n(25).forEach,o=n(37)("forEach");t.exports=o?[].forEach:function(t){return r(this,t,arguments.length>1?arguments[1]:void 0)}},function(t,e,n){var r=n(3);t.exports=!r((function(){return Object.isExtensible(Object.preventExtensions({}))}))},function(t,e){t.exports=function(t,e){for(var n=-1,r=e.length,o=t.length;++nf))return!1;var p=c.get(t),d=c.get(e);if(p&&d)return p==e&&d==t;var h=-1,v=!0,y=2&n?new r:void 0;for(c.set(t,e),c.set(e,t);++h-1&&t%1==0&&t=e||n<0||y&&t-s>=i}function x(){var t=d();if(_(t))return w(t);u=setTimeout(x,function(t){var n=e-(t-c);return y?p(n,i-(t-s)):n}(t))}function w(t){return u=void 0,m&&r?g(t):(r=o=void 0,a)}function O(){var t=d(),n=_(t);if(r=arguments,o=this,c=t,n){if(void 0===u)return b(c);if(y)return u=setTimeout(x,e),g(c)}return void 0===u&&(u=setTimeout(x,e)),a}return e=v(e)||0,h(n)&&(f=!!n.leading,i=(y="maxWait"in n)?l(v(n.maxWait)||0,e):i,m="trailing"in n?!!n.trailing:m),O.cancel=function(){void 0!==u&&clearTimeout(u),s=0,r=c=o=u=void 0},O.flush=function(){return void 0===u?a:w(d())},O}},function(t,e,n){"use strict";var r=n(0),o=n(69).indexOf,i=n(37),a=[].indexOf,u=!!a&&1/[1].indexOf(1,-0)<0,c=i("indexOf");r({target:"Array",proto:!0,forced:u||!c},{indexOf:function(t){return u?a.apply(this,arguments)||0:o(this,t,arguments.length>1?arguments[1]:void 0)}})},function(t,e,n){var r=n(4),o=n(22),i=n(1)("match");t.exports=function(t){var e;return r(t)&&(void 0!==(e=t[i])?!!e:"RegExp"==o(t))}},function(t,e,n){"use strict";n(42);var r=n(15),o=n(3),i=n(1),a=n(62),u=n(9),c=i("species"),s=!o((function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:"7"},t},"7"!=="".replace(t,"$")})),f="$0"==="a".replace(/./,"$0"),l=i("replace"),p=!!/./[l]&&""===/./[l]("a","$0"),d=!o((function(){var t=/(?:)/,e=t.exec;t.exec=function(){return e.apply(this,arguments)};var n="ab".split(t);return 2!==n.length||"a"!==n[0]||"b"!==n[1]}));t.exports=function(t,e,n,l){var h=i(t),v=!o((function(){var e={};return e[h]=function(){return 7},7!=""[t](e)})),y=v&&!o((function(){var e=!1,n=/a/;return"split"===t&&((n={}).constructor={},n.constructor[c]=function(){return n},n.flags="",n[h]=/./[h]),n.exec=function(){return e=!0,null},n[h](""),!e}));if(!v||!y||"replace"===t&&(!s||!f||p)||"split"===t&&!d){var m=/./[h],g=n(h,""[t],(function(t,e,n,r,o){return e.exec===a?v&&!o?{done:!0,value:m.call(e,n,r)}:{done:!0,value:t.call(n,e,r)}:{done:!1}}),{REPLACE_KEEPS_$0:f,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:p}),b=g[0],_=g[1];r(String.prototype,t,b),r(RegExp.prototype,h,2==e?function(t,e){return _.call(t,this,e)}:function(t){return _.call(t,this)})}l&&u(RegExp.prototype[h],"sham",!0)}},function(t,e,n){"use strict";var r=n(6);t.exports=function(){var t=r(this),e="";return t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.dotAll&&(e+="s"),t.unicode&&(e+="u"),t.sticky&&(e+="y"),e}},function(t,e,n){"use strict";var r=n(116).charAt;t.exports=function(t,e,n){return e+(n?r(t,e).length:1)}},function(t,e,n){var r=n(22),o=n(62);t.exports=function(t,e){var n=t.exec;if("function"==typeof n){var i=n.call(t,e);if("object"!=typeof i)throw TypeError("RegExp exec method returned something other than an Object or null");return i}if("RegExp"!==r(t))throw TypeError("RegExp#exec called on incompatible receiver");return o.call(t,e)}},function(t,e,n){"use strict";var r=n(0),o=n(27),i=n(11),a=n(37),u=[].join,c=o!=Object,s=a("join",",");r({target:"Array",proto:!0,forced:c||!s},{join:function(t){return u.call(i(this),void 0===t?",":t)}})},function(t,e,n){var r=n(6),o=n(167);t.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var t,e=!1,n={};try{(t=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set).call(n,[]),e=n instanceof Array}catch(t){}return function(n,i){return r(n),o(i),e?t.call(n,i):n.__proto__=i,n}}():void 0)},function(t,e,n){"use strict";var r=n(17),o=n(8),i=n(1),a=n(7),u=i("species");t.exports=function(t){var e=r(t),n=o.f;a&&e&&!e[u]&&n(e,u,{configurable:!0,get:function(){return this}})}},function(t,e,n){"use strict";var r=n(3);function o(t,e){return RegExp(t,e)}e.UNSUPPORTED_Y=r((function(){var t=o("a","y");return t.lastIndex=2,null!=t.exec("abcd")})),e.BROKEN_CARET=r((function(){var t=o("^r","gy");return t.lastIndex=2,null!=t.exec("str")}))},function(t,e,n){"use strict";var r=n(0),o=n(69).includes,i=n(92);r({target:"Array",proto:!0},{includes:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}}),i("includes")},function(t,e,n){"use strict";var r=n(0),o=n(95),i=n(19);r({target:"String",proto:!0,forced:!n(96)("includes")},{includes:function(t){return!!~String(i(this)).indexOf(o(t),arguments.length>1?arguments[1]:void 0)}})},function(t,e,n){"use strict";var r=n(0),o=n(3),i=n(43),a=n(4),u=n(12),c=n(14),s=n(78),f=n(118),l=n(51),p=n(1),d=n(30),h=p("isConcatSpreadable"),v=d>=51||!o((function(){var t=[];return t[h]=!1,t.concat()[0]!==t})),y=l("concat"),m=function(t){if(!a(t))return!1;var e=t[h];return void 0!==e?!!e:i(t)};r({target:"Array",proto:!0,forced:!v||!y},{concat:function(t){var e,n,r,o,i,a=u(this),l=f(a,0),p=0;for(e=-1,r=arguments.length;e9007199254740991)throw TypeError("Maximum allowed index exceeded");for(n=0;n=9007199254740991)throw TypeError("Maximum allowed index exceeded");s(l,p++,i)}return l.length=p,l}})},function(t,e,n){var r=n(140);t.exports=function(t,e,n){var o=null==t?void 0:r(t,e);return void 0===o?n:o}},function(t,e){t.exports=function(t){var e=null==t?0:t.length;return e?t[e-1]:void 0}},function(t,e,n){t.exports=n(294)},function(t,e,n){var r=n(7),o=n(8),i=n(6),a=n(47);t.exports=r?Object.defineProperties:function(t,e){i(t);for(var n,r=a(e),u=r.length,c=0;u>c;)o.f(t,n=r[c++],e[n]);return t}},function(t,e,n){var r=n(2),o=n(71),i=r.WeakMap;t.exports="function"==typeof i&&/native code/.test(o(i))},function(t,e,n){"use strict";var r=n(107).IteratorPrototype,o=n(46),i=n(28),a=n(50),u=n(32),c=function(){return this};t.exports=function(t,e,n){var s=e+" Iterator";return t.prototype=o(r,{next:i(1,n)}),a(t,s,!1,!0),u[s]=c,t}},function(t,e,n){var r=n(4);t.exports=function(t){if(!r(t)&&null!==t)throw TypeError("Can't set "+String(t)+" as a prototype");return t}},function(t,e,n){"use strict";var r,o,i,a,u=n(0),c=n(16),s=n(2),f=n(17),l=n(109),p=n(15),d=n(169),h=n(50),v=n(156),y=n(4),m=n(33),g=n(170),b=n(71),_=n(171),x=n(175),w=n(94),O=n(111).set,j=n(176),S=n(113),k=n(178),E=n(114),A=n(179),$=n(24),C=n(93),P=n(1),T=n(29),L=n(30),R=P("species"),I="Promise",M=$.get,N=$.set,D=$.getterFor(I),F=l,U=s.TypeError,B=s.document,z=s.process,q=f("fetch"),V=E.f,H=V,W=!!(B&&B.createEvent&&s.dispatchEvent),G="function"==typeof PromiseRejectionEvent,K=C(I,(function(){if(!(b(F)!==String(F))){if(66===L)return!0;if(!T&&!G)return!0}if(c&&!F.prototype.finally)return!0;if(L>=51&&/native code/.test(F))return!1;var t=F.resolve(1),e=function(t){t((function(){}),(function(){}))};return(t.constructor={})[R]=e,!(t.then((function(){}))instanceof e)})),J=K||!x((function(t){F.all(t).catch((function(){}))})),X=function(t){var e;return!(!y(t)||"function"!=typeof(e=t.then))&&e},Y=function(t,e){if(!t.notified){t.notified=!0;var n=t.reactions;j((function(){for(var r=t.value,o=1==t.state,i=0;n.length>i;){var a,u,c,s=n[i++],f=o?s.ok:s.fail,l=s.resolve,p=s.reject,d=s.domain;try{f?(o||(2===t.rejection&&et(t),t.rejection=1),!0===f?a=r:(d&&d.enter(),a=f(r),d&&(d.exit(),c=!0)),a===s.promise?p(U("Promise-chain cycle")):(u=X(a))?u.call(a,l,p):l(a)):p(r)}catch(t){d&&!c&&d.exit(),p(t)}}t.reactions=[],t.notified=!1,e&&!t.rejection&&Z(t)}))}},Q=function(t,e,n){var r,o;W?((r=B.createEvent("Event")).promise=e,r.reason=n,r.initEvent(t,!1,!0),s.dispatchEvent(r)):r={promise:e,reason:n},!G&&(o=s["on"+t])?o(r):"unhandledrejection"===t&&k("Unhandled promise rejection",n)},Z=function(t){O.call(s,(function(){var e,n=t.facade,r=t.value;if(tt(t)&&(e=A((function(){T?z.emit("unhandledRejection",r,n):Q("unhandledrejection",n,r)})),t.rejection=T||tt(t)?2:1,e.error))throw e.value}))},tt=function(t){return 1!==t.rejection&&!t.parent},et=function(t){O.call(s,(function(){var e=t.facade;T?z.emit("rejectionHandled",e):Q("rejectionhandled",e,t.value)}))},nt=function(t,e,n){return function(r){t(e,r,n)}},rt=function(t,e,n){t.done||(t.done=!0,n&&(t=n),t.value=e,t.state=2,Y(t,!0))},ot=function(t,e,n){if(!t.done){t.done=!0,n&&(t=n);try{if(t.facade===e)throw U("Promise can't be resolved itself");var r=X(e);r?j((function(){var n={done:!1};try{r.call(e,nt(ot,n,t),nt(rt,n,t))}catch(e){rt(n,e,t)}})):(t.value=e,t.state=1,Y(t,!1))}catch(e){rt({done:!1},e,t)}}};K&&(F=function(t){g(this,F,I),m(t),r.call(this);var e=M(this);try{t(nt(ot,e),nt(rt,e))}catch(t){rt(e,t)}},(r=function(t){N(this,{type:I,done:!1,notified:!1,parent:!1,reactions:[],rejection:!1,state:0,value:void 0})}).prototype=d(F.prototype,{then:function(t,e){var n=D(this),r=V(w(this,F));return r.ok="function"!=typeof t||t,r.fail="function"==typeof e&&e,r.domain=T?z.domain:void 0,n.parent=!0,n.reactions.push(r),0!=n.state&&Y(n,!1),r.promise},catch:function(t){return this.then(void 0,t)}}),o=function(){var t=new r,e=M(t);this.promise=t,this.resolve=nt(ot,e),this.reject=nt(rt,e)},E.f=V=function(t){return t===F||t===i?new o(t):H(t)},c||"function"!=typeof l||(a=l.prototype.then,p(l.prototype,"then",(function(t,e){var n=this;return new F((function(t,e){a.call(n,t,e)})).then(t,e)}),{unsafe:!0}),"function"==typeof q&&u({global:!0,enumerable:!0,forced:!0},{fetch:function(t){return S(F,q.apply(s,arguments))}}))),u({global:!0,wrap:!0,forced:K},{Promise:F}),h(F,I,!1,!0),v(I),i=f(I),u({target:I,stat:!0,forced:K},{reject:function(t){var e=V(this);return e.reject.call(void 0,t),e.promise}}),u({target:I,stat:!0,forced:c||K},{resolve:function(t){return S(c&&this===i?F:this,t)}}),u({target:I,stat:!0,forced:J},{all:function(t){var e=this,n=V(e),r=n.resolve,o=n.reject,i=A((function(){var n=m(e.resolve),i=[],a=0,u=1;_(t,(function(t){var c=a++,s=!1;i.push(void 0),u++,n.call(e,t).then((function(t){s||(s=!0,i[c]=t,--u||r(i))}),o)})),--u||r(i)}));return i.error&&o(i.value),n.promise},race:function(t){var e=this,n=V(e),r=n.reject,o=A((function(){var o=m(e.resolve);_(t,(function(t){o.call(e,t).then(n.resolve,r)}))}));return o.error&&r(o.value),n.promise}})},function(t,e,n){var r=n(15);t.exports=function(t,e,n){for(var o in e)r(t,o,e[o],n);return t}},function(t,e){t.exports=function(t,e,n){if(!(t instanceof e))throw TypeError("Incorrect "+(n?n+" ":"")+"invocation");return t}},function(t,e,n){var r=n(6),o=n(172),i=n(14),a=n(75),u=n(173),c=n(174),s=function(t,e){this.stopped=t,this.result=e};t.exports=function(t,e,n){var f,l,p,d,h,v,y,m=n&&n.that,g=!(!n||!n.AS_ENTRIES),b=!(!n||!n.IS_ITERATOR),_=!(!n||!n.INTERRUPTED),x=a(e,m,1+g+_),w=function(t){return f&&c(f),new s(!0,t)},O=function(t){return g?(r(t),_?x(t[0],t[1],w):x(t[0],t[1])):_?x(t,w):x(t)};if(b)f=t;else{if("function"!=typeof(l=u(t)))throw TypeError("Target is not iterable");if(o(l)){for(p=0,d=i(t.length);d>p;p++)if((h=O(t[p]))&&h instanceof s)return h;return new s(!1)}f=l.call(t)}for(v=f.next;!(y=v.call(f)).done;){try{h=O(y.value)}catch(t){throw c(f),t}if("object"==typeof h&&h&&h instanceof s)return h}return new s(!1)}},function(t,e,n){var r=n(1),o=n(32),i=r("iterator"),a=Array.prototype;t.exports=function(t){return void 0!==t&&(o.Array===t||a[i]===t)}},function(t,e,n){var r=n(110),o=n(32),i=n(1)("iterator");t.exports=function(t){if(null!=t)return t[i]||t["@@iterator"]||o[r(t)]}},function(t,e,n){var r=n(6);t.exports=function(t){var e=t.return;if(void 0!==e)return r(e.call(t)).value}},function(t,e,n){var r=n(1)("iterator"),o=!1;try{var i=0,a={next:function(){return{done:!!i++}},return:function(){o=!0}};a[r]=function(){return this},Array.from(a,(function(){throw 2}))}catch(t){}t.exports=function(t,e){if(!e&&!o)return!1;var n=!1;try{var i={};i[r]=function(){return{next:function(){return{done:n=!0}}}},t(i)}catch(t){}return n}},function(t,e,n){var r,o,i,a,u,c,s,f,l=n(2),p=n(20).f,d=n(111).set,h=n(112),v=n(177),y=n(29),m=l.MutationObserver||l.WebKitMutationObserver,g=l.document,b=l.process,_=l.Promise,x=p(l,"queueMicrotask"),w=x&&x.value;w||(r=function(){var t,e;for(y&&(t=b.domain)&&t.exit();o;){e=o.fn,o=o.next;try{e()}catch(t){throw o?a():i=void 0,t}}i=void 0,t&&t.enter()},h||y||v||!m||!g?_&&_.resolve?(s=_.resolve(void 0),f=s.then,a=function(){f.call(s,r)}):a=y?function(){b.nextTick(r)}:function(){d.call(l,r)}:(u=!0,c=g.createTextNode(""),new m(r).observe(c,{characterData:!0}),a=function(){c.data=u=!u})),t.exports=w||function(t){var e={fn:t,next:void 0};i&&(i.next=e),o||(o=e,a()),i=e}},function(t,e,n){var r=n(68);t.exports=/web0s(?!.*chrome)/i.test(r)},function(t,e,n){var r=n(2);t.exports=function(t,e){var n=r.console;n&&n.error&&(1===arguments.length?n.error(t):n.error(t,e))}},function(t,e){t.exports=function(t){try{return{error:!1,value:t()}}catch(t){return{error:!0,value:t}}}},function(t,e,n){var r=n(0),o=n(181);r({target:"Object",stat:!0,forced:Object.assign!==o},{assign:o})},function(t,e,n){"use strict";var r=n(7),o=n(3),i=n(47),a=n(73),u=n(72),c=n(12),s=n(27),f=Object.assign,l=Object.defineProperty;t.exports=!f||o((function(){if(r&&1!==f({b:1},f(l({},"a",{enumerable:!0,get:function(){l(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var t={},e={},n=Symbol();return t[n]=7,"abcdefghijklmnopqrst".split("").forEach((function(t){e[t]=t})),7!=f({},t)[n]||"abcdefghijklmnopqrst"!=i(f({},e)).join("")}))?function(t,e){for(var n=c(t),o=arguments.length,f=1,l=a.f,p=u.f;o>f;)for(var d,h=s(arguments[f++]),v=l?i(h).concat(l(h)):i(h),y=v.length,m=0;y>m;)d=v[m++],r&&!p.call(h,d)||(n[d]=h[d]);return n}:f},function(t,e,n){"use strict";var r=n(0),o=n(16),i=n(109),a=n(3),u=n(17),c=n(94),s=n(113),f=n(15);r({target:"Promise",proto:!0,real:!0,forced:!!i&&a((function(){i.prototype.finally.call({then:function(){}},(function(){}))}))},{finally:function(t){var e=c(this,u("Promise")),n="function"==typeof t;return this.then(n?function(n){return s(e,t()).then((function(){return n}))}:t,n?function(n){return s(e,t()).then((function(){throw n}))}:t)}}),o||"function"!=typeof i||i.prototype.finally||f(i.prototype,"finally",u("Promise").prototype.finally)},function(t,e,n){"use strict";var r=n(76),o=n(110);t.exports=r?{}.toString:function(){return"[object "+o(this)+"]"}},function(t,e,n){var r=n(0),o=n(7),i=n(106),a=n(11),u=n(20),c=n(78);r({target:"Object",stat:!0,sham:!o},{getOwnPropertyDescriptors:function(t){for(var e,n,r=a(t),o=u.f,s=i(r),f={},l=0;s.length>l;)void 0!==(n=o(r,e=s[l++]))&&c(f,e,n);return f}})},function(t,e,n){var r=n(0),o=n(3),i=n(12),a=n(74),u=n(108);r({target:"Object",stat:!0,forced:o((function(){a(1)})),sham:!u},{getPrototypeOf:function(t){return a(i(t))}})},function(t,e,n){"use strict";var r=n(0),o=n(187).left,i=n(37),a=n(30),u=n(29);r({target:"Array",proto:!0,forced:!i("reduce")||!u&&a>79&&a<83},{reduce:function(t){return o(this,t,arguments.length,arguments.length>1?arguments[1]:void 0)}})},function(t,e,n){var r=n(33),o=n(12),i=n(27),a=n(14),u=function(t){return function(e,n,u,c){r(n);var s=o(e),f=i(s),l=a(s.length),p=t?l-1:0,d=t?-1:1;if(u<2)for(;;){if(p in f){c=f[p],p+=d;break}if(p+=d,t?p<0:l<=p)throw TypeError("Reduce of empty array with no initial value")}for(;t?p>=0:l>p;p+=d)p in f&&(c=n(c,f[p],p,s));return c}};t.exports={left:u(!1),right:u(!0)}},function(t,e,n){"use strict";var r,o=n(0),i=n(20).f,a=n(14),u=n(95),c=n(19),s=n(96),f=n(16),l="".startsWith,p=Math.min,d=s("startsWith");o({target:"String",proto:!0,forced:!!(f||d||(r=i(String.prototype,"startsWith"),!r||r.writable))&&!d},{startsWith:function(t){var e=String(c(this));u(t);var n=a(p(arguments.length>1?arguments[1]:void 0,e.length)),r=String(t);return l?l.call(e,r,n):e.slice(n,n+r.length)===r}})},function(t,e,n){var r=n(0),o=n(120),i=n(3),a=n(4),u=n(190).onFreeze,c=Object.freeze;r({target:"Object",stat:!0,forced:i((function(){c(1)})),sham:!o},{freeze:function(t){return c&&a(t)?c(u(t)):t}})},function(t,e,n){var r=n(31),o=n(4),i=n(5),a=n(8).f,u=n(45),c=n(120),s=u("meta"),f=0,l=Object.isExtensible||function(){return!0},p=function(t){a(t,s,{value:{objectID:"O"+ ++f,weakData:{}}})},d=t.exports={REQUIRED:!1,fastKey:function(t,e){if(!o(t))return"symbol"==typeof t?t:("string"==typeof t?"S":"P")+t;if(!i(t,s)){if(!l(t))return"F";if(!e)return"E";p(t)}return t[s].objectID},getWeakData:function(t,e){if(!i(t,s)){if(!l(t))return!0;if(!e)return!1;p(t)}return t[s].weakData},onFreeze:function(t){return c&&d.REQUIRED&&l(t)&&!i(t,s)&&p(t),t}};r[s]=!0},function(t,e,n){n(0)({target:"Object",stat:!0,sham:!n(7)},{create:n(46)})},function(t,e,n){var r=n(12),o=Math.floor,i="".replace,a=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,u=/\$([$&'`]|\d{1,2})/g;t.exports=function(t,e,n,c,s,f){var l=n+t.length,p=c.length,d=u;return void 0!==s&&(s=r(s),d=a),i.call(f,d,(function(r,i){var a;switch(i.charAt(0)){case"$":return"$";case"&":return t;case"`":return e.slice(0,n);case"'":return e.slice(l);case"<":a=s[i.slice(1,-1)];break;default:var u=+i;if(0===u)return r;if(u>p){var f=o(u/10);return 0===f?r:f<=p?void 0===c[f-1]?i.charAt(1):c[f-1]+i.charAt(1):r}a=c[u-1]}return void 0===a?"":a}))}},function(t,e,n){var r=n(121),o=n(194);t.exports=function t(e,n,i,a,u){var c=-1,s=e.length;for(i||(i=o),u||(u=[]);++c0&&i(f)?n>1?t(f,n-1,i,a,u):r(u,f):a||(u[u.length]=f)}return u}},function(t,e,n){var r=n(38),o=n(79),i=n(10),a=r?r.isConcatSpreadable:void 0;t.exports=function(t){return i(t)||o(t)||!!(a&&t&&t[a])}},function(t,e,n){var r=n(26),o=n(21);t.exports=function(t){return o(t)&&"[object Arguments]"==r(t)}},function(t,e,n){var r=n(38),o=Object.prototype,i=o.hasOwnProperty,a=o.toString,u=r?r.toStringTag:void 0;t.exports=function(t){var e=i.call(t,u),n=t[u];try{t[u]=void 0;var r=!0}catch(t){}var o=a.call(t);return r&&(e?t[u]=n:delete t[u]),o}},function(t,e){var n=Object.prototype.toString;t.exports=function(t){return n.call(t)}},function(t,e,n){var r=n(199),o=n(255),i=n(87),a=n(10),u=n(265);t.exports=function(t){return"function"==typeof t?t:null==t?i:"object"==typeof t?a(t)?o(t[0],t[1]):r(t):u(t)}},function(t,e,n){var r=n(200),o=n(254),i=n(139);t.exports=function(t){var e=o(t);return 1==e.length&&e[0][2]?i(e[0][0],e[0][1]):function(n){return n===t||r(n,t,e)}}},function(t,e,n){var r=n(123),o=n(127);t.exports=function(t,e,n,i){var a=n.length,u=a,c=!i;if(null==t)return!u;for(t=Object(t);a--;){var s=n[a];if(c&&s[2]?s[1]!==t[s[0]]:!(s[0]in t))return!1}for(;++a-1}},function(t,e,n){var r=n(53);t.exports=function(t,e){var n=this.__data__,o=r(n,t);return o<0?(++this.size,n.push([t,e])):n[o][1]=e,this}},function(t,e,n){var r=n(52);t.exports=function(){this.__data__=new r,this.size=0}},function(t,e){t.exports=function(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n}},function(t,e){t.exports=function(t){return this.__data__.get(t)}},function(t,e){t.exports=function(t){return this.__data__.has(t)}},function(t,e,n){var r=n(52),o=n(80),i=n(82);t.exports=function(t,e){var n=this.__data__;if(n instanceof r){var a=n.__data__;if(!o||a.length<199)return a.push([t,e]),this.size=++n.size,this;n=this.__data__=new i(a)}return n.set(t,e),this.size=n.size,this}},function(t,e,n){var r=n(125),o=n(212),i=n(81),a=n(126),u=/^\[object .+?Constructor\]$/,c=Function.prototype,s=Object.prototype,f=c.toString,l=s.hasOwnProperty,p=RegExp("^"+f.call(l).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");t.exports=function(t){return!(!i(t)||o(t))&&(r(t)?p:u).test(a(t))}},function(t,e,n){var r,o=n(213),i=(r=/[^.]+$/.exec(o&&o.keys&&o.keys.IE_PROTO||""))?"Symbol(src)_1."+r:"";t.exports=function(t){return!!i&&i in t}},function(t,e,n){var r=n(13)["__core-js_shared__"];t.exports=r},function(t,e){t.exports=function(t,e){return null==t?void 0:t[e]}},function(t,e,n){var r=n(216),o=n(52),i=n(80);t.exports=function(){this.size=0,this.__data__={hash:new r,map:new(i||o),string:new r}}},function(t,e,n){var r=n(217),o=n(218),i=n(219),a=n(220),u=n(221);function c(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e0){if(++e>=800)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}},function(t,e,n){var r=n(129),o=n(277),i=n(282),a=n(130),u=n(283),c=n(83);t.exports=function(t,e,n){var s=-1,f=o,l=t.length,p=!0,d=[],h=d;if(n)p=!1,f=i;else if(l>=200){var v=e?null:u(t);if(v)return c(v);p=!1,f=a,h=new r}else h=e?[]:d;t:for(;++s-1}},function(t,e,n){var r=n(279),o=n(280),i=n(281);t.exports=function(t,e,n){return e==e?i(t,e,n):r(t,o,n)}},function(t,e){t.exports=function(t,e,n,r){for(var o=t.length,i=n+(r?1:-1);r?i--:++ii;)o.push(arguments[i++]);if(r=e,(d(e)||void 0!==t)&&!it(t))return p(e)||(e=function(t,e){if("function"==typeof r&&(e=r.call(this,t,e)),!it(e))return e}),o[1]=e,H.apply(null,o)}});V.prototype[U]||E(V.prototype,U,V.prototype.valueOf),M(V,"Symbol"),P[F]=!0},function(t,e,n){var r=n(11),o=n(61).f,i={}.toString,a="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];t.exports.f=function(t){return a&&"[object Window]"==i.call(t)?function(t){try{return o(t)}catch(t){return a.slice()}}(t):o(r(t))}},function(t,e,n){var r=n(99),o=n(5),i=n(143),a=n(8).f;t.exports=function(t){var e=r.Symbol||(r.Symbol={});o(e,t)||a(e,t,{value:i.f(t)})}},function(t,e,n){"use strict";var r=n(0),o=n(7),i=n(2),a=n(5),u=n(4),c=n(8).f,s=n(105),f=i.Symbol;if(o&&"function"==typeof f&&(!("description"in f.prototype)||void 0!==f().description)){var l={},p=function(){var t=arguments.length<1||void 0===arguments[0]?void 0:String(arguments[0]),e=this instanceof p?new f(t):void 0===t?f():f(t);return""===t&&(l[e]=!0),e};s(p,f);var d=p.prototype=f.prototype;d.constructor=p;var h=d.toString,v="Symbol(test)"==String(f("test")),y=/^Symbol\((.*)\)[^)]+$/;c(d,"description",{configurable:!0,get:function(){var t=u(this)?this.valueOf():this,e=h.call(t);if(a(l,t))return"";var n=v?e.slice(7,-1):e.replace(y,"$1");return""===n?void 0:n}}),r({global:!0,forced:!0},{Symbol:p})}},function(t,e,n){"use strict";n(144)},function(t,e,n){"use strict";n(145)},function(t,e,n){"use strict";n.r(e);n(97),n(168),n(180),n(182);function r(t,e,n,r,o,i,a){try{var u=t[i](a),c=u.value}catch(t){return void n(t)}u.done?e(c):Promise.resolve(c).then(r,o)}function o(t){return function(){var e=this,n=arguments;return new Promise((function(o,i){var a=t.apply(e,n);function u(t){r(a,o,i,u,c,"next",t)}function c(t){r(a,o,i,u,c,"throw",t)}u(void 0)}))}}n(115),n(77),n(34),n(35),n(36),n(59),n(23);var i=Object.freeze({});function a(t){return null==t}function u(t){return null!=t}function c(t){return!0===t}function s(t){return"string"==typeof t||"number"==typeof t||"symbol"==typeof t||"boolean"==typeof t}function f(t){return null!==t&&"object"==typeof t}var l=Object.prototype.toString;function p(t){return"[object Object]"===l.call(t)}function d(t){return"[object RegExp]"===l.call(t)}function h(t){var e=parseFloat(String(t));return e>=0&&Math.floor(e)===e&&isFinite(t)}function v(t){return u(t)&&"function"==typeof t.then&&"function"==typeof t.catch}function y(t){return null==t?"":Array.isArray(t)||p(t)&&t.toString===l?JSON.stringify(t,null,2):String(t)}function m(t){var e=parseFloat(t);return isNaN(e)?t:e}function g(t,e){for(var n=Object.create(null),r=t.split(","),o=0;o-1)return t.splice(n,1)}}var x=Object.prototype.hasOwnProperty;function w(t,e){return x.call(t,e)}function O(t){var e=Object.create(null);return function(n){return e[n]||(e[n]=t(n))}}var j=/-(\w)/g,S=O((function(t){return t.replace(j,(function(t,e){return e?e.toUpperCase():""}))})),k=O((function(t){return t.charAt(0).toUpperCase()+t.slice(1)})),E=/\B([A-Z])/g,A=O((function(t){return t.replace(E,"-$1").toLowerCase()}));var $=Function.prototype.bind?function(t,e){return t.bind(e)}:function(t,e){function n(n){var r=arguments.length;return r?r>1?t.apply(e,arguments):t.call(e,n):t.call(e)}return n._length=t.length,n};function C(t,e){e=e||0;for(var n=t.length-e,r=new Array(n);n--;)r[n]=t[n+e];return r}function P(t,e){for(var n in e)t[n]=e[n];return t}function T(t){for(var e={},n=0;n0,Z=X&&X.indexOf("edge/")>0,tt=(X&&X.indexOf("android"),X&&/iphone|ipad|ipod|ios/.test(X)||"ios"===J),et=(X&&/chrome\/\d+/.test(X),X&&/phantomjs/.test(X),X&&X.match(/firefox\/(\d+)/)),nt={}.watch,rt=!1;if(G)try{var ot={};Object.defineProperty(ot,"passive",{get:function(){rt=!0}}),window.addEventListener("test-passive",null,ot)}catch(t){}var it=function(){return void 0===H&&(H=!G&&!K&&"undefined"!=typeof global&&(global.process&&"server"===global.process.env.VUE_ENV)),H},at=G&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function ut(t){return"function"==typeof t&&/native code/.test(t.toString())}var ct,st="undefined"!=typeof Symbol&&ut(Symbol)&&"undefined"!=typeof Reflect&&ut(Reflect.ownKeys);ct="undefined"!=typeof Set&&ut(Set)?Set:function(){function t(){this.set=Object.create(null)}return t.prototype.has=function(t){return!0===this.set[t]},t.prototype.add=function(t){this.set[t]=!0},t.prototype.clear=function(){this.set=Object.create(null)},t}();var ft=L,lt=0,pt=function(){this.id=lt++,this.subs=[]};pt.prototype.addSub=function(t){this.subs.push(t)},pt.prototype.removeSub=function(t){_(this.subs,t)},pt.prototype.depend=function(){pt.target&&pt.target.addDep(this)},pt.prototype.notify=function(){var t=this.subs.slice();for(var e=0,n=t.length;e-1)if(i&&!w(o,"default"))a=!1;else if(""===a||a===A(t)){var c=qt(String,o.type);(c<0||u0&&(pe((o=t(o,(n||"")+"_"+r))[0])&&pe(f)&&(l[i]=bt(f.text+o[0].text),o.shift()),l.push.apply(l,o)):s(o)?pe(f)?l[i]=bt(f.text+o):""!==o&&l.push(bt(o)):pe(o)&&pe(f)?l[i]=bt(f.text+o.text):(c(e._isVList)&&u(o.tag)&&a(o.key)&&u(n)&&(o.key="__vlist"+n+"_"+r+"__"),l.push(o)));return l}(t):void 0}function pe(t){return u(t)&&u(t.text)&&!1===t.isComment}function de(t,e){if(t){for(var n=Object.create(null),r=st?Reflect.ownKeys(t):Object.keys(t),o=0;o0,a=t?!!t.$stable:!o,u=t&&t.$key;if(t){if(t._normalized)return t._normalized;if(a&&n&&n!==i&&u===n.$key&&!o&&!n.$hasNormal)return n;for(var c in r={},t)t[c]&&"$"!==c[0]&&(r[c]=me(e,c,t[c]))}else r={};for(var s in e)s in r||(r[s]=ge(e,s));return t&&Object.isExtensible(t)&&(t._normalized=r),q(r,"$stable",a),q(r,"$key",u),q(r,"$hasNormal",o),r}function me(t,e,n){var r=function(){var t=arguments.length?n.apply(null,arguments):n({});return(t=t&&"object"==typeof t&&!Array.isArray(t)?[t]:le(t))&&(0===t.length||1===t.length&&t[0].isComment)?void 0:t};return n.proxy&&Object.defineProperty(t,e,{get:r,enumerable:!0,configurable:!0}),r}function ge(t,e){return function(){return t[e]}}function be(t,e){var n,r,o,i,a;if(Array.isArray(t)||"string"==typeof t)for(n=new Array(t.length),r=0,o=t.length;rdocument.createEvent("Event").timeStamp&&(fn=function(){return ln.now()})}function pn(){var t,e;for(sn=fn(),un=!0,nn.sort((function(t,e){return t.id-e.id})),cn=0;cncn&&nn[n].id>t.id;)n--;nn.splice(n+1,0,t)}else nn.push(t);an||(an=!0,re(pn))}}(this)},hn.prototype.run=function(){if(this.active){var t=this.get();if(t!==this.value||f(t)||this.deep){var e=this.value;if(this.value=t,this.user)try{this.cb.call(this.vm,t,e)}catch(t){Vt(t,this.vm,'callback for watcher "'+this.expression+'"')}else this.cb.call(this.vm,t,e)}}},hn.prototype.evaluate=function(){this.value=this.get(),this.dirty=!1},hn.prototype.depend=function(){for(var t=this.deps.length;t--;)this.deps[t].depend()},hn.prototype.teardown=function(){if(this.active){this.vm._isBeingDestroyed||_(this.vm._watchers,this);for(var t=this.deps.length;t--;)this.deps[t].removeSub(this);this.active=!1}};var vn={enumerable:!0,configurable:!0,get:L,set:L};function yn(t,e,n){vn.get=function(){return this[e][n]},vn.set=function(t){this[e][n]=t},Object.defineProperty(t,n,vn)}function mn(t){t._watchers=[];var e=t.$options;e.props&&function(t,e){var n=t.$options.propsData||{},r=t._props={},o=t.$options._propKeys=[];t.$parent&&St(!1);var i=function(i){o.push(i);var a=Ut(i,e,n,t);At(r,i,a),i in t||yn(t,"_props",i)};for(var a in e)i(a);St(!0)}(t,e.props),e.methods&&function(t,e){t.$options.props;for(var n in e)t[n]="function"!=typeof e[n]?L:$(e[n],t)}(t,e.methods),e.data?function(t){var e=t.$options.data;p(e=t._data="function"==typeof e?function(t,e){ht();try{return t.call(e,e)}catch(t){return Vt(t,e,"data()"),{}}finally{vt()}}(e,t):e||{})||(e={});var n=Object.keys(e),r=t.$options.props,o=(t.$options.methods,n.length);for(;o--;){var i=n[o];0,r&&w(r,i)||(a=void 0,36!==(a=(i+"").charCodeAt(0))&&95!==a&&yn(t,"_data",i))}var a;Et(e,!0)}(t):Et(t._data={},!0),e.computed&&function(t,e){var n=t._computedWatchers=Object.create(null),r=it();for(var o in e){var i=e[o],a="function"==typeof i?i:i.get;0,r||(n[o]=new hn(t,a||L,L,gn)),o in t||bn(t,o,i)}}(t,e.computed),e.watch&&e.watch!==nt&&function(t,e){for(var n in e){var r=e[n];if(Array.isArray(r))for(var o=0;o-1:"string"==typeof t?t.split(",").indexOf(e)>-1:!!d(t)&&t.test(e)}function $n(t,e){var n=t.cache,r=t.keys,o=t._vnode;for(var i in n){var a=n[i];if(a){var u=En(a.componentOptions);u&&!e(u)&&Cn(n,i,r,o)}}}function Cn(t,e,n,r){var o=t[e];!o||r&&o.tag===r.tag||o.componentInstance.$destroy(),t[e]=null,_(n,e)}Sn.prototype._init=function(t){var e=this;e._uid=On++,e._isVue=!0,t&&t._isComponent?function(t,e){var n=t.$options=Object.create(t.constructor.options),r=e._parentVnode;n.parent=e.parent,n._parentVnode=r;var o=r.componentOptions;n.propsData=o.propsData,n._parentListeners=o.listeners,n._renderChildren=o.children,n._componentTag=o.tag,e.render&&(n.render=e.render,n.staticRenderFns=e.staticRenderFns)}(e,t):e.$options=Dt(jn(e.constructor),t||{},e),e._renderProxy=e,e._self=e,function(t){var e=t.$options,n=e.parent;if(n&&!e.abstract){for(;n.$options.abstract&&n.$parent;)n=n.$parent;n.$children.push(t)}t.$parent=n,t.$root=n?n.$root:t,t.$children=[],t.$refs={},t._watcher=null,t._inactive=null,t._directInactive=!1,t._isMounted=!1,t._isDestroyed=!1,t._isBeingDestroyed=!1}(e),function(t){t._events=Object.create(null),t._hasHookEvent=!1;var e=t.$options._parentListeners;e&&Xe(t,e)}(e),function(t){t._vnode=null,t._staticTrees=null;var e=t.$options,n=t.$vnode=e._parentVnode,r=n&&n.context;t.$slots=he(e._renderChildren,r),t.$scopedSlots=i,t._c=function(e,n,r,o){return Be(t,e,n,r,o,!1)},t.$createElement=function(e,n,r,o){return Be(t,e,n,r,o,!0)};var o=n&&n.data;At(t,"$attrs",o&&o.attrs||i,null,!0),At(t,"$listeners",e._parentListeners||i,null,!0)}(e),en(e,"beforeCreate"),function(t){var e=de(t.$options.inject,t);e&&(St(!1),Object.keys(e).forEach((function(n){At(t,n,e[n])})),St(!0))}(e),mn(e),function(t){var e=t.$options.provide;e&&(t._provided="function"==typeof e?e.call(t):e)}(e),en(e,"created"),e.$options.el&&e.$mount(e.$options.el)},function(t){var e={get:function(){return this._data}},n={get:function(){return this._props}};Object.defineProperty(t.prototype,"$data",e),Object.defineProperty(t.prototype,"$props",n),t.prototype.$set=$t,t.prototype.$delete=Ct,t.prototype.$watch=function(t,e,n){if(p(e))return wn(this,t,e,n);(n=n||{}).user=!0;var r=new hn(this,t,e,n);if(n.immediate)try{e.call(this,r.value)}catch(t){Vt(t,this,'callback for immediate watcher "'+r.expression+'"')}return function(){r.teardown()}}}(Sn),function(t){var e=/^hook:/;t.prototype.$on=function(t,n){var r=this;if(Array.isArray(t))for(var o=0,i=t.length;o1?C(n):n;for(var r=C(arguments,1),o='event handler for "'+t+'"',i=0,a=n.length;iparseInt(this.max)&&Cn(a,u[0],u,this._vnode)),e.data.keepAlive=!0}return e||t&&t[0]}}};!function(t){var e={get:function(){return B}};Object.defineProperty(t,"config",e),t.util={warn:ft,extend:P,mergeOptions:Dt,defineReactive:At},t.set=$t,t.delete=Ct,t.nextTick=re,t.observable=function(t){return Et(t),t},t.options=Object.create(null),F.forEach((function(e){t.options[e+"s"]=Object.create(null)})),t.options._base=t,P(t.options.components,Tn),function(t){t.use=function(t){var e=this._installedPlugins||(this._installedPlugins=[]);if(e.indexOf(t)>-1)return this;var n=C(arguments,1);return n.unshift(this),"function"==typeof t.install?t.install.apply(t,n):"function"==typeof t&&t.apply(null,n),e.push(t),this}}(t),function(t){t.mixin=function(t){return this.options=Dt(this.options,t),this}}(t),kn(t),function(t){F.forEach((function(e){t[e]=function(t,n){return n?("component"===e&&p(n)&&(n.name=n.name||t,n=this.options._base.extend(n)),"directive"===e&&"function"==typeof n&&(n={bind:n,update:n}),this.options[e+"s"][t]=n,n):this.options[e+"s"][t]}}))}(t)}(Sn),Object.defineProperty(Sn.prototype,"$isServer",{get:it}),Object.defineProperty(Sn.prototype,"$ssrContext",{get:function(){return this.$vnode&&this.$vnode.ssrContext}}),Object.defineProperty(Sn,"FunctionalRenderContext",{value:Re}),Sn.version="2.6.12";var Ln=g("style,class"),Rn=g("input,textarea,option,select,progress"),In=g("contenteditable,draggable,spellcheck"),Mn=g("events,caret,typing,plaintext-only"),Nn=g("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,translate,truespeed,typemustmatch,visible"),Dn="http://www.w3.org/1999/xlink",Fn=function(t){return":"===t.charAt(5)&&"xlink"===t.slice(0,5)},Un=function(t){return Fn(t)?t.slice(6,t.length):""},Bn=function(t){return null==t||!1===t};function zn(t){for(var e=t.data,n=t,r=t;u(r.componentInstance);)(r=r.componentInstance._vnode)&&r.data&&(e=qn(r.data,e));for(;u(n=n.parent);)n&&n.data&&(e=qn(e,n.data));return function(t,e){if(u(t)||u(e))return Vn(t,Hn(e));return""}(e.staticClass,e.class)}function qn(t,e){return{staticClass:Vn(t.staticClass,e.staticClass),class:u(t.class)?[t.class,e.class]:e.class}}function Vn(t,e){return t?e?t+" "+e:t:e||""}function Hn(t){return Array.isArray(t)?function(t){for(var e,n="",r=0,o=t.length;r-1?hr(t,e,n):Nn(e)?Bn(n)?t.removeAttribute(e):(n="allowfullscreen"===e&&"EMBED"===t.tagName?"true":e,t.setAttribute(e,n)):In(e)?t.setAttribute(e,function(t,e){return Bn(e)||"false"===e?"false":"contenteditable"===t&&Mn(e)?e:"true"}(e,n)):Fn(e)?Bn(n)?t.removeAttributeNS(Dn,Un(e)):t.setAttributeNS(Dn,e,n):hr(t,e,n)}function hr(t,e,n){if(Bn(n))t.removeAttribute(e);else{if(Y&&!Q&&"TEXTAREA"===t.tagName&&"placeholder"===e&&""!==n&&!t.__ieph){var r=function(e){e.stopImmediatePropagation(),t.removeEventListener("input",r)};t.addEventListener("input",r),t.__ieph=!0}t.setAttribute(e,n)}}var vr={create:pr,update:pr};function yr(t,e){var n=e.elm,r=e.data,o=t.data;if(!(a(r.staticClass)&&a(r.class)&&(a(o)||a(o.staticClass)&&a(o.class)))){var i=zn(e),c=n._transitionClasses;u(c)&&(i=Vn(i,Hn(c))),i!==n._prevClass&&(n.setAttribute("class",i),n._prevClass=i)}}var mr,gr={create:yr,update:yr};function br(t,e,n){var r=mr;return function o(){var i=e.apply(null,arguments);null!==i&&wr(t,o,n,r)}}var _r=Jt&&!(et&&Number(et[1])<=53);function xr(t,e,n,r){if(_r){var o=sn,i=e;e=i._wrapper=function(t){if(t.target===t.currentTarget||t.timeStamp>=o||t.timeStamp<=0||t.target.ownerDocument!==document)return i.apply(this,arguments)}}mr.addEventListener(t,e,rt?{capture:n,passive:r}:n)}function wr(t,e,n,r){(r||mr).removeEventListener(t,e._wrapper||e,n)}function Or(t,e){if(!a(t.data.on)||!a(e.data.on)){var n=e.data.on||{},r=t.data.on||{};mr=e.elm,function(t){if(u(t.__r)){var e=Y?"change":"input";t[e]=[].concat(t.__r,t[e]||[]),delete t.__r}u(t.__c)&&(t.change=[].concat(t.__c,t.change||[]),delete t.__c)}(n),ce(n,r,xr,wr,br,e.context),mr=void 0}}var jr,Sr={create:Or,update:Or};function kr(t,e){if(!a(t.data.domProps)||!a(e.data.domProps)){var n,r,o=e.elm,i=t.data.domProps||{},c=e.data.domProps||{};for(n in u(c.__ob__)&&(c=e.data.domProps=P({},c)),i)n in c||(o[n]="");for(n in c){if(r=c[n],"textContent"===n||"innerHTML"===n){if(e.children&&(e.children.length=0),r===i[n])continue;1===o.childNodes.length&&o.removeChild(o.childNodes[0])}if("value"===n&&"PROGRESS"!==o.tagName){o._value=r;var s=a(r)?"":String(r);Er(o,s)&&(o.value=s)}else if("innerHTML"===n&&Kn(o.tagName)&&a(o.innerHTML)){(jr=jr||document.createElement("div")).innerHTML=""+r+"";for(var f=jr.firstChild;o.firstChild;)o.removeChild(o.firstChild);for(;f.firstChild;)o.appendChild(f.firstChild)}else if(r!==i[n])try{o[n]=r}catch(t){}}}}function Er(t,e){return!t.composing&&("OPTION"===t.tagName||function(t,e){var n=!0;try{n=document.activeElement!==t}catch(t){}return n&&t.value!==e}(t,e)||function(t,e){var n=t.value,r=t._vModifiers;if(u(r)){if(r.number)return m(n)!==m(e);if(r.trim)return n.trim()!==e.trim()}return n!==e}(t,e))}var Ar={create:kr,update:kr},$r=O((function(t){var e={},n=/:(.+)/;return t.split(/;(?![^(]*\))/g).forEach((function(t){if(t){var r=t.split(n);r.length>1&&(e[r[0].trim()]=r[1].trim())}})),e}));function Cr(t){var e=Pr(t.style);return t.staticStyle?P(t.staticStyle,e):e}function Pr(t){return Array.isArray(t)?T(t):"string"==typeof t?$r(t):t}var Tr,Lr=/^--/,Rr=/\s*!important$/,Ir=function(t,e,n){if(Lr.test(e))t.style.setProperty(e,n);else if(Rr.test(n))t.style.setProperty(A(e),n.replace(Rr,""),"important");else{var r=Nr(e);if(Array.isArray(n))for(var o=0,i=n.length;o-1?e.split(Ur).forEach((function(e){return t.classList.add(e)})):t.classList.add(e);else{var n=" "+(t.getAttribute("class")||"")+" ";n.indexOf(" "+e+" ")<0&&t.setAttribute("class",(n+e).trim())}}function zr(t,e){if(e&&(e=e.trim()))if(t.classList)e.indexOf(" ")>-1?e.split(Ur).forEach((function(e){return t.classList.remove(e)})):t.classList.remove(e),t.classList.length||t.removeAttribute("class");else{for(var n=" "+(t.getAttribute("class")||"")+" ",r=" "+e+" ";n.indexOf(r)>=0;)n=n.replace(r," ");(n=n.trim())?t.setAttribute("class",n):t.removeAttribute("class")}}function qr(t){if(t){if("object"==typeof t){var e={};return!1!==t.css&&P(e,Vr(t.name||"v")),P(e,t),e}return"string"==typeof t?Vr(t):void 0}}var Vr=O((function(t){return{enterClass:t+"-enter",enterToClass:t+"-enter-to",enterActiveClass:t+"-enter-active",leaveClass:t+"-leave",leaveToClass:t+"-leave-to",leaveActiveClass:t+"-leave-active"}})),Hr=G&&!Q,Wr="transition",Gr="transitionend",Kr="animation",Jr="animationend";Hr&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&(Wr="WebkitTransition",Gr="webkitTransitionEnd"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(Kr="WebkitAnimation",Jr="webkitAnimationEnd"));var Xr=G?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:function(t){return t()};function Yr(t){Xr((function(){Xr(t)}))}function Qr(t,e){var n=t._transitionClasses||(t._transitionClasses=[]);n.indexOf(e)<0&&(n.push(e),Br(t,e))}function Zr(t,e){t._transitionClasses&&_(t._transitionClasses,e),zr(t,e)}function to(t,e,n){var r=no(t,e),o=r.type,i=r.timeout,a=r.propCount;if(!o)return n();var u="transition"===o?Gr:Jr,c=0,s=function(){t.removeEventListener(u,f),n()},f=function(e){e.target===t&&++c>=a&&s()};setTimeout((function(){c0&&(n="transition",f=a,l=i.length):"animation"===e?s>0&&(n="animation",f=s,l=c.length):l=(n=(f=Math.max(a,s))>0?a>s?"transition":"animation":null)?"transition"===n?i.length:c.length:0,{type:n,timeout:f,propCount:l,hasTransform:"transition"===n&&eo.test(r[Wr+"Property"])}}function ro(t,e){for(;t.length1}function so(t,e){!0!==e.data.show&&io(e)}var fo=function(t){var e,n,r={},o=t.modules,i=t.nodeOps;for(e=0;eh?b(t,a(n[m+1])?null:n[m+1].elm,n,d,m,r):d>m&&x(e,p,h)}(p,y,m,n,f):u(m)?(u(t.text)&&i.setTextContent(p,""),b(p,null,m,0,m.length-1,n)):u(y)?x(y,0,y.length-1):u(t.text)&&i.setTextContent(p,""):t.text!==e.text&&i.setTextContent(p,e.text),u(h)&&u(d=h.hook)&&u(d=d.postpatch)&&d(t,e)}}}function S(t,e,n){if(c(n)&&u(t.parent))t.parent.data.pendingInsert=e;else for(var r=0;r-1,a.selected!==i&&(a.selected=i);else if(M(yo(a),r))return void(t.selectedIndex!==u&&(t.selectedIndex=u));o||(t.selectedIndex=-1)}}function vo(t,e){return e.every((function(e){return!M(e,t)}))}function yo(t){return"_value"in t?t._value:t.value}function mo(t){t.target.composing=!0}function go(t){t.target.composing&&(t.target.composing=!1,bo(t.target,"input"))}function bo(t,e){var n=document.createEvent("HTMLEvents");n.initEvent(e,!0,!0),t.dispatchEvent(n)}function _o(t){return!t.componentInstance||t.data&&t.data.transition?t:_o(t.componentInstance._vnode)}var xo={model:lo,show:{bind:function(t,e,n){var r=e.value,o=(n=_o(n)).data&&n.data.transition,i=t.__vOriginalDisplay="none"===t.style.display?"":t.style.display;r&&o?(n.data.show=!0,io(n,(function(){t.style.display=i}))):t.style.display=r?i:"none"},update:function(t,e,n){var r=e.value;!r!=!e.oldValue&&((n=_o(n)).data&&n.data.transition?(n.data.show=!0,r?io(n,(function(){t.style.display=t.__vOriginalDisplay})):ao(n,(function(){t.style.display="none"}))):t.style.display=r?t.__vOriginalDisplay:"none")},unbind:function(t,e,n,r,o){o||(t.style.display=t.__vOriginalDisplay)}}},wo={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]};function Oo(t){var e=t&&t.componentOptions;return e&&e.Ctor.options.abstract?Oo(We(e.children)):t}function jo(t){var e={},n=t.$options;for(var r in n.propsData)e[r]=t[r];var o=n._parentListeners;for(var i in o)e[S(i)]=o[i];return e}function So(t,e){if(/\d-keep-alive$/.test(e.tag))return t("keep-alive",{props:e.componentOptions.propsData})}var ko=function(t){return t.tag||He(t)},Eo=function(t){return"show"===t.name},Ao={name:"transition",props:wo,abstract:!0,render:function(t){var e=this,n=this.$slots.default;if(n&&(n=n.filter(ko)).length){0;var r=this.mode;0;var o=n[0];if(function(t){for(;t=t.parent;)if(t.data.transition)return!0}(this.$vnode))return o;var i=Oo(o);if(!i)return o;if(this._leaving)return So(t,o);var a="__transition-"+this._uid+"-";i.key=null==i.key?i.isComment?a+"comment":a+i.tag:s(i.key)?0===String(i.key).indexOf(a)?i.key:a+i.key:i.key;var u=(i.data||(i.data={})).transition=jo(this),c=this._vnode,f=Oo(c);if(i.data.directives&&i.data.directives.some(Eo)&&(i.data.show=!0),f&&f.data&&!function(t,e){return e.key===t.key&&e.tag===t.tag}(i,f)&&!He(f)&&(!f.componentInstance||!f.componentInstance._vnode.isComment)){var l=f.data.transition=P({},u);if("out-in"===r)return this._leaving=!0,se(l,"afterLeave",(function(){e._leaving=!1,e.$forceUpdate()})),So(t,o);if("in-out"===r){if(He(i))return c;var p,d=function(){p()};se(u,"afterEnter",d),se(u,"enterCancelled",d),se(l,"delayLeave",(function(t){p=t}))}}return o}}},$o=P({tag:String,moveClass:String},wo);function Co(t){t.elm._moveCb&&t.elm._moveCb(),t.elm._enterCb&&t.elm._enterCb()}function Po(t){t.data.newPos=t.elm.getBoundingClientRect()}function To(t){var e=t.data.pos,n=t.data.newPos,r=e.left-n.left,o=e.top-n.top;if(r||o){t.data.moved=!0;var i=t.elm.style;i.transform=i.WebkitTransform="translate("+r+"px,"+o+"px)",i.transitionDuration="0s"}}delete $o.mode;var Lo={Transition:Ao,TransitionGroup:{props:$o,beforeMount:function(){var t=this,e=this._update;this._update=function(n,r){var o=Qe(t);t.__patch__(t._vnode,t.kept,!1,!0),t._vnode=t.kept,o(),e.call(t,n,r)}},render:function(t){for(var e=this.tag||this.$vnode.data.tag||"span",n=Object.create(null),r=this.prevChildren=this.children,o=this.$slots.default||[],i=this.children=[],a=jo(this),u=0;u-1?Xn[t]=e.constructor===window.HTMLUnknownElement||e.constructor===window.HTMLElement:Xn[t]=/HTMLUnknownElement/.test(e.toString())},P(Sn.options.directives,xo),P(Sn.options.components,Lo),Sn.prototype.__patch__=G?fo:L,Sn.prototype.$mount=function(t,e){return function(t,e,n){var r;return t.$el=e,t.$options.render||(t.$options.render=gt),en(t,"beforeMount"),r=function(){t._update(t._render(),n)},new hn(t,r,L,{before:function(){t._isMounted&&!t._isDestroyed&&en(t,"beforeUpdate")}},!0),n=!1,null==t.$vnode&&(t._isMounted=!0,en(t,"mounted")),t}(this,t=t&&G?function(t){if("string"==typeof t){var e=document.querySelector(t);return e||document.createElement("div")}return t}(t):void 0,e)},G&&setTimeout((function(){B.devtools&&at&&at.emit("init",Sn)}),0);var Ro=Sn; + * @license MIT */void 0===(o="function"==typeof(r=function(){var t,e,n={version:"0.2.0"},r=n.settings={minimum:.08,easing:"ease",positionUsing:"",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,showSpinner:!0,barSelector:'[role="bar"]',spinnerSelector:'[role="spinner"]',parent:"body",template:'
'};function o(t,e,n){return tn?n:t}function i(t){return 100*(-1+t)}n.configure=function(t){var e,n;for(e in t)void 0!==(n=t[e])&&t.hasOwnProperty(e)&&(r[e]=n);return this},n.status=null,n.set=function(t){var e=n.isStarted();t=o(t,r.minimum,1),n.status=1===t?null:t;var c=n.render(!e),s=c.querySelector(r.barSelector),f=r.speed,l=r.easing;return c.offsetWidth,a((function(e){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),u(s,function(t,e,n){var o;return(o="translate3d"===r.positionUsing?{transform:"translate3d("+i(t)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+i(t)+"%,0)"}:{"margin-left":i(t)+"%"}).transition="all "+e+"ms "+n,o}(t,f,l)),1===t?(u(c,{transition:"none",opacity:1}),c.offsetWidth,setTimeout((function(){u(c,{transition:"all "+f+"ms linear",opacity:0}),setTimeout((function(){n.remove(),e()}),f)}),f)):setTimeout(e,f)})),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var t=function(){setTimeout((function(){n.status&&(n.trickle(),t())}),r.trickleSpeed)};return r.trickle&&t(),this},n.done=function(t){return t||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(t){var e=n.status;return e?("number"!=typeof t&&(t=(1-e)*o(Math.random()*e,.1,.95)),e=o(e+t,0,.994),n.set(e)):n.start()},n.trickle=function(){return n.inc(Math.random()*r.trickleRate)},t=0,e=0,n.promise=function(r){return r&&"resolved"!==r.state()?(0===e&&n.start(),t++,e++,r.always((function(){0==--e?(t=0,n.done()):n.set((t-e)/t)})),this):this},n.render=function(t){if(n.isRendered())return document.getElementById("nprogress");s(document.documentElement,"nprogress-busy");var e=document.createElement("div");e.id="nprogress",e.innerHTML=r.template;var o,a=e.querySelector(r.barSelector),c=t?"-100":i(n.status||0),f=document.querySelector(r.parent);return u(a,{transition:"all 0 linear",transform:"translate3d("+c+"%,0,0)"}),r.showSpinner||(o=e.querySelector(r.spinnerSelector))&&p(o),f!=document.body&&s(f,"nprogress-custom-parent"),f.appendChild(e),e},n.remove=function(){f(document.documentElement,"nprogress-busy"),f(document.querySelector(r.parent),"nprogress-custom-parent");var t=document.getElementById("nprogress");t&&p(t)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var t=document.body.style,e="WebkitTransform"in t?"Webkit":"MozTransform"in t?"Moz":"msTransform"in t?"ms":"OTransform"in t?"O":"";return e+"Perspective"in t?"translate3d":e+"Transform"in t?"translate":"margin"};var a=function(){var t=[];function e(){var n=t.shift();n&&n(e)}return function(n){t.push(n),1==t.length&&e()}}(),u=function(){var t=["Webkit","O","Moz","ms"],e={};function n(n){return n=n.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(function(t,e){return e.toUpperCase()})),e[n]||(e[n]=function(e){var n=document.body.style;if(e in n)return e;for(var r,o=t.length,i=e.charAt(0).toUpperCase()+e.slice(1);o--;)if((r=t[o]+i)in n)return r;return e}(n))}function r(t,e,r){e=n(e),t.style[e]=r}return function(t,e){var n,o,i=arguments;if(2==i.length)for(n in e)void 0!==(o=e[n])&&e.hasOwnProperty(n)&&r(t,n,o);else r(t,i[1],i[2])}}();function c(t,e){return("string"==typeof t?t:l(t)).indexOf(" "+e+" ")>=0}function s(t,e){var n=l(t),r=n+e;c(n,e)||(t.className=r.substring(1))}function f(t,e){var n,r=l(t);c(t,e)&&(n=r.replace(" "+e+" "," "),t.className=n.substring(1,n.length-1))}function l(t){return(" "+(t.className||"")+" ").replace(/\s+/gi," ")}function p(t){t&&t.parentNode&&t.parentNode.removeChild(t)}return n})?r.call(e,n,e,t):r)||(t.exports=o)},function(t,e,n){"use strict";var r=n(0),o=n(25).map;r({target:"Array",proto:!0,forced:!n(51)("map")},{map:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}})},function(t,e,n){"use strict";var r=n(150),o=n(6),i=n(14),a=n(48),u=n(19),c=n(152),s=n(192),f=n(153),l=Math.max,p=Math.min;r("replace",2,(function(t,e,n,r){var h=r.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,d=r.REPLACE_KEEPS_$0,v=h?"$":"$0";return[function(n,r){var o=u(this),i=null==n?void 0:n[t];return void 0!==i?i.call(n,o,r):e.call(String(o),n,r)},function(t,r){if(!h&&d||"string"==typeof r&&-1===r.indexOf(v)){var u=n(e,t,this,r);if(u.done)return u.value}var y=o(t),m=String(this),g="function"==typeof r;g||(r=String(r));var b=y.global;if(b){var _=y.unicode;y.lastIndex=0}for(var x=[];;){var w=f(y,m);if(null===w)break;if(x.push(w),!b)break;""===String(w[0])&&(y.lastIndex=c(m,i(y.lastIndex),_))}for(var O,j="",S=0,k=0;k=S&&(j+=m.slice(S,A)+L,S=A+E.length)}return j+m.slice(S)}]}))},function(t,e,n){var r=n(101),o=n(70).concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return r(t,o)}},function(t,e,n){"use strict";var r,o,i=n(151),a=n(157),u=RegExp.prototype.exec,c=String.prototype.replace,s=u,f=(r=/a/,o=/b*/g,u.call(r,"a"),u.call(o,"a"),0!==r.lastIndex||0!==o.lastIndex),l=a.UNSUPPORTED_Y||a.BROKEN_CARET,p=void 0!==/()??/.exec("")[1];(f||p||l)&&(s=function(t){var e,n,r,o,a=this,s=l&&a.sticky,h=i.call(a),d=a.source,v=0,y=t;return s&&(-1===(h=h.replace("y","")).indexOf("g")&&(h+="g"),y=String(t).slice(a.lastIndex),a.lastIndex>0&&(!a.multiline||a.multiline&&"\n"!==t[a.lastIndex-1])&&(d="(?: "+d+")",y=" "+y,v++),n=new RegExp("^(?:"+d+")",h)),p&&(n=new RegExp("^"+d+"$(?!\\s)",h)),f&&(e=a.lastIndex),r=u.call(s?n:a,y),s?r?(r.input=r.input.slice(v),r[0]=r[0].slice(v),r.index=a.lastIndex,a.lastIndex+=r[0].length):a.lastIndex=0:f&&r&&(a.lastIndex=a.global?r.index+r[0].length:e),p&&r&&r.length>1&&c.call(r[0],n,(function(){for(o=1;o37&&o<41)}))},function(t,e,n){var r=n(17);t.exports=r("navigator","userAgent")||""},function(t,e,n){var r=n(11),o=n(14),i=n(102),a=function(t){return function(e,n,a){var u,c=r(e),s=o(c.length),f=i(a,s);if(t&&n!=n){for(;s>f;)if((u=c[f++])!=u)return!0}else for(;s>f;f++)if((t||f in c)&&c[f]===n)return t||f||0;return!t&&-1}};t.exports={includes:a(!0),indexOf:a(!1)}},function(t,e){t.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},function(t,e,n){var r=n(64),o=Function.toString;"function"!=typeof r.inspectSource&&(r.inspectSource=function(t){return o.call(t)}),t.exports=r.inspectSource},function(t,e,n){"use strict";var r={}.propertyIsEnumerable,o=Object.getOwnPropertyDescriptor,i=o&&!r.call({1:2},1);e.f=i?function(t){var e=o(this,t);return!!e&&e.enumerable}:r},function(t,e){e.f=Object.getOwnPropertySymbols},function(t,e,n){var r=n(5),o=n(12),i=n(49),a=n(108),u=i("IE_PROTO"),c=Object.prototype;t.exports=a?Object.getPrototypeOf:function(t){return t=o(t),r(t,u)?t[u]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?c:null}},function(t,e,n){var r=n(33);t.exports=function(t,e,n){if(r(t),void 0===e)return t;switch(n){case 0:return function(){return t.call(e)};case 1:return function(n){return t.call(e,n)};case 2:return function(n,r){return t.call(e,n,r)};case 3:return function(n,r,o){return t.call(e,n,r,o)}}return function(){return t.apply(e,arguments)}}},function(t,e,n){var r={};r[n(1)("toStringTag")]="z",t.exports="[object z]"===String(r)},function(t,e,n){"use strict";var r=n(0),o=n(4),i=n(43),a=n(102),u=n(14),c=n(11),s=n(78),f=n(1),l=n(51)("slice"),p=f("species"),h=[].slice,d=Math.max;r({target:"Array",proto:!0,forced:!l},{slice:function(t,e){var n,r,f,l=c(this),v=u(l.length),y=a(t,v),m=a(void 0===e?v:e,v);if(i(l)&&("function"!=typeof(n=l.constructor)||n!==Array&&!i(n.prototype)?o(n)&&null===(n=n[p])&&(n=void 0):n=void 0,n===Array||void 0===n))return h.call(l,y,m);for(r=new(void 0===n?Array:n)(d(m-y,0)),f=0;y-1&&t%1==0&&t<=9007199254740991}},function(t,e,n){var r=n(10),o=n(86),i=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,a=/^\w*$/;t.exports=function(t,e){if(r(t))return!1;var n=typeof t;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=t&&!o(t))||(a.test(t)||!i.test(t)||null!=e&&t in Object(e))}},function(t,e,n){var r=n(26),o=n(21);t.exports=function(t){return"symbol"==typeof t||o(t)&&"[object Symbol]"==r(t)}},function(t,e){t.exports=function(t){return t}},function(t,e,n){"use strict";var r=n(0),o=n(25).some;r({target:"Array",proto:!0,forced:!n(37)("some")},{some:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}})},function(t,e,n){var r=n(0),o=n(12),i=n(47);r({target:"Object",stat:!0,forced:n(3)((function(){i(1)}))},{keys:function(t){return i(o(t))}})},function(t,e,n){"use strict";var r=n(0),o=n(119);r({target:"Array",proto:!0,forced:[].forEach!=o},{forEach:o})},function(t,e,n){var r=n(2),o=n(117),i=n(119),a=n(9);for(var u in o){var c=r[u],s=c&&c.prototype;if(s&&s.forEach!==i)try{a(s,"forEach",i)}catch(t){s.forEach=i}}},function(t,e,n){var r=n(1),o=n(46),i=n(8),a=r("unscopables"),u=Array.prototype;null==u[a]&&i.f(u,a,{configurable:!0,value:o(null)}),t.exports=function(t){u[a][t]=!0}},function(t,e,n){var r=n(3),o=/#|\.prototype\./,i=function(t,e){var n=u[a(t)];return n==s||n!=c&&("function"==typeof e?r(e):!!e)},a=i.normalize=function(t){return String(t).replace(o,".").toLowerCase()},u=i.data={},c=i.NATIVE="N",s=i.POLYFILL="P";t.exports=i},function(t,e,n){var r=n(6),o=n(33),i=n(1)("species");t.exports=function(t,e){var n,a=r(t).constructor;return void 0===a||null==(n=r(a)[i])?e:o(n)}},function(t,e,n){var r=n(149);t.exports=function(t){if(r(t))throw TypeError("The method doesn't accept regular expressions");return t}},function(t,e,n){var r=n(1)("match");t.exports=function(t){var e=/./;try{"/./"[t](e)}catch(n){try{return e[r]=!1,"/./"[t](e)}catch(t){}}return!1}},function(t,e,n){"use strict";var r=n(11),o=n(92),i=n(32),a=n(24),u=n(104),c=a.set,s=a.getterFor("Array Iterator");t.exports=u(Array,"Array",(function(t,e){c(this,{type:"Array Iterator",target:r(t),index:0,kind:e})}),(function(){var t=s(this),e=t.target,n=t.kind,r=t.index++;return!e||r>=e.length?(t.target=void 0,{value:void 0,done:!0}):"keys"==n?{value:r,done:!1}:"values"==n?{value:e[r],done:!1}:{value:[r,e[r]],done:!1}}),"values"),i.Arguments=i.Array,o("keys"),o("values"),o("entries")},function(t,e,n){var r=n(7),o=n(3),i=n(66);t.exports=!r&&!o((function(){return 7!=Object.defineProperty(i("div"),"a",{get:function(){return 7}}).a}))},function(t,e,n){var r=n(2);t.exports=r},function(t,e,n){var r=n(67);t.exports=r&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},function(t,e,n){var r=n(5),o=n(11),i=n(69).indexOf,a=n(31);t.exports=function(t,e){var n,u=o(t),c=0,s=[];for(n in u)!r(a,n)&&r(u,n)&&s.push(n);for(;e.length>c;)r(u,n=e[c++])&&(~i(s,n)||s.push(n));return s}},function(t,e,n){var r=n(48),o=Math.max,i=Math.min;t.exports=function(t,e){var n=r(t);return n<0?o(n+e,0):i(n,e)}},function(t,e,n){var r=n(17);t.exports=r("document","documentElement")},function(t,e,n){"use strict";var r=n(0),o=n(166),i=n(74),a=n(155),u=n(50),c=n(9),s=n(15),f=n(1),l=n(16),p=n(32),h=n(107),d=h.IteratorPrototype,v=h.BUGGY_SAFARI_ITERATORS,y=f("iterator"),m=function(){return this};t.exports=function(t,e,n,f,h,g,b){o(n,e,f);var _,x,w,O=function(t){if(t===h&&A)return A;if(!v&&t in k)return k[t];switch(t){case"keys":case"values":case"entries":return function(){return new n(this,t)}}return function(){return new n(this)}},j=e+" Iterator",S=!1,k=t.prototype,E=k[y]||k["@@iterator"]||h&&k[h],A=!v&&E||O(h),$="Array"==e&&k.entries||E;if($&&(_=i($.call(new t)),d!==Object.prototype&&_.next&&(l||i(_)===d||(a?a(_,d):"function"!=typeof _[y]&&c(_,y,m)),u(_,j,!0,!0),l&&(p[j]=m))),"values"==h&&E&&"values"!==E.name&&(S=!0,A=function(){return E.call(this)}),l&&!b||k[y]===A||c(k,y,A),p[e]=A,h)if(x={values:O("values"),keys:g?A:O("keys"),entries:O("entries")},b)for(w in x)(v||S||!(w in k))&&s(k,w,x[w]);else r({target:e,proto:!0,forced:v||S},x);return x}},function(t,e,n){var r=n(5),o=n(106),i=n(20),a=n(8);t.exports=function(t,e){for(var n=o(e),u=a.f,c=i.f,s=0;sn;)e.push(arguments[n++]);return _[++b]=function(){("function"==typeof t?t:Function(t)).apply(void 0,e)},r(b),b},v=function(t){delete _[t]},p?r=function(t){y.nextTick(w(t))}:g&&g.now?r=function(t){g.now(w(t))}:m&&!l?(i=(o=new m).port2,o.port1.onmessage=O,r=c(i.postMessage,i,1)):a.addEventListener&&"function"==typeof postMessage&&!a.importScripts&&h&&"file:"!==h.protocol&&!u(j)?(r=j,a.addEventListener("message",O,!1)):r="onreadystatechange"in f("script")?function(t){s.appendChild(f("script")).onreadystatechange=function(){s.removeChild(this),x(t)}}:function(t){setTimeout(w(t),0)}),t.exports={set:d,clear:v}},function(t,e,n){var r=n(68);t.exports=/(iphone|ipod|ipad).*applewebkit/i.test(r)},function(t,e,n){var r=n(6),o=n(4),i=n(114);t.exports=function(t,e){if(r(t),o(e)&&e.constructor===t)return e;var n=i.f(t);return(0,n.resolve)(e),n.promise}},function(t,e,n){"use strict";var r=n(33),o=function(t){var e,n;this.promise=new t((function(t,r){if(void 0!==e||void 0!==n)throw TypeError("Bad Promise constructor");e=t,n=r})),this.resolve=r(e),this.reject=r(n)};t.exports.f=function(t){return new o(t)}},function(t,e,n){var r=function(t){"use strict";var e=Object.prototype,n=e.hasOwnProperty,r="function"==typeof Symbol?Symbol:{},o=r.iterator||"@@iterator",i=r.asyncIterator||"@@asyncIterator",a=r.toStringTag||"@@toStringTag";function u(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{u({},"")}catch(t){u=function(t,e,n){return t[e]=n}}function c(t,e,n,r){var o=e&&e.prototype instanceof l?e:l,i=Object.create(o.prototype),a=new O(r||[]);return i._invoke=function(t,e,n){var r="suspendedStart";return function(o,i){if("executing"===r)throw new Error("Generator is already running");if("completed"===r){if("throw"===o)throw i;return S()}for(n.method=o,n.arg=i;;){var a=n.delegate;if(a){var u=_(a,n);if(u){if(u===f)continue;return u}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===r)throw r="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r="executing";var c=s(t,e,n);if("normal"===c.type){if(r=n.done?"completed":"suspendedYield",c.arg===f)continue;return{value:c.arg,done:n.done}}"throw"===c.type&&(r="completed",n.method="throw",n.arg=c.arg)}}}(t,n,a),i}function s(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}t.wrap=c;var f={};function l(){}function p(){}function h(){}var d={};d[o]=function(){return this};var v=Object.getPrototypeOf,y=v&&v(v(j([])));y&&y!==e&&n.call(y,o)&&(d=y);var m=h.prototype=l.prototype=Object.create(d);function g(t){["next","throw","return"].forEach((function(e){u(t,e,(function(t){return this._invoke(e,t)}))}))}function b(t,e){var r;this._invoke=function(o,i){function a(){return new e((function(r,a){!function r(o,i,a,u){var c=s(t[o],t,i);if("throw"!==c.type){var f=c.arg,l=f.value;return l&&"object"==typeof l&&n.call(l,"__await")?e.resolve(l.__await).then((function(t){r("next",t,a,u)}),(function(t){r("throw",t,a,u)})):e.resolve(l).then((function(t){f.value=t,a(f)}),(function(t){return r("throw",t,a,u)}))}u(c.arg)}(o,i,r,a)}))}return r=r?r.then(a,a):a()}}function _(t,e){var n=t.iterator[e.method];if(void 0===n){if(e.delegate=null,"throw"===e.method){if(t.iterator.return&&(e.method="return",e.arg=void 0,_(t,e),"throw"===e.method))return f;e.method="throw",e.arg=new TypeError("The iterator does not provide a 'throw' method")}return f}var r=s(n,t.iterator,e.arg);if("throw"===r.type)return e.method="throw",e.arg=r.arg,e.delegate=null,f;var o=r.arg;return o?o.done?(e[t.resultName]=o.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=void 0),e.delegate=null,f):o:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,f)}function x(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function w(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function O(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(x,this),this.reset(!0)}function j(t){if(t){var e=t[o];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var r=-1,i=function e(){for(;++r=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return r("end");if(i.tryLoc<=this.prev){var u=n.call(i,"catchLoc"),c=n.call(i,"finallyLoc");if(u&&c){if(this.prev=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),w(n),f}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var r=n.completion;if("throw"===r.type){var o=r.arg;w(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,n){return this.delegate={iterator:j(t),resultName:e,nextLoc:n},"next"===this.method&&(this.arg=void 0),f}},t}(t.exports);try{regeneratorRuntime=r}catch(t){Function("r","regeneratorRuntime = r")(r)}},function(t,e,n){var r=n(48),o=n(19),i=function(t){return function(e,n){var i,a,u=String(o(e)),c=r(n),s=u.length;return c<0||c>=s?t?"":void 0:(i=u.charCodeAt(c))<55296||i>56319||c+1===s||(a=u.charCodeAt(c+1))<56320||a>57343?t?u.charAt(c):i:t?u.slice(c,c+2):a-56320+(i-55296<<10)+65536}};t.exports={codeAt:i(!1),charAt:i(!0)}},function(t,e){t.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},function(t,e,n){var r=n(4),o=n(43),i=n(1)("species");t.exports=function(t,e){var n;return o(t)&&("function"!=typeof(n=t.constructor)||n!==Array&&!o(n.prototype)?r(n)&&null===(n=n[i])&&(n=void 0):n=void 0),new(void 0===n?Array:n)(0===e?0:e)}},function(t,e,n){"use strict";var r=n(25).forEach,o=n(37)("forEach");t.exports=o?[].forEach:function(t){return r(this,t,arguments.length>1?arguments[1]:void 0)}},function(t,e,n){var r=n(3);t.exports=!r((function(){return Object.isExtensible(Object.preventExtensions({}))}))},function(t,e){t.exports=function(t,e){for(var n=-1,r=e.length,o=t.length;++nf))return!1;var p=c.get(t),h=c.get(e);if(p&&h)return p==e&&h==t;var d=-1,v=!0,y=2&n?new r:void 0;for(c.set(t,e),c.set(e,t);++d-1&&t%1==0&&t=e||n<0||y&&t-s>=i}function x(){var t=h();if(_(t))return w(t);u=setTimeout(x,function(t){var n=e-(t-c);return y?p(n,i-(t-s)):n}(t))}function w(t){return u=void 0,m&&r?g(t):(r=o=void 0,a)}function O(){var t=h(),n=_(t);if(r=arguments,o=this,c=t,n){if(void 0===u)return b(c);if(y)return u=setTimeout(x,e),g(c)}return void 0===u&&(u=setTimeout(x,e)),a}return e=v(e)||0,d(n)&&(f=!!n.leading,i=(y="maxWait"in n)?l(v(n.maxWait)||0,e):i,m="trailing"in n?!!n.trailing:m),O.cancel=function(){void 0!==u&&clearTimeout(u),s=0,r=c=o=u=void 0},O.flush=function(){return void 0===u?a:w(h())},O}},function(t,e,n){"use strict";var r=n(0),o=n(69).indexOf,i=n(37),a=[].indexOf,u=!!a&&1/[1].indexOf(1,-0)<0,c=i("indexOf");r({target:"Array",proto:!0,forced:u||!c},{indexOf:function(t){return u?a.apply(this,arguments)||0:o(this,t,arguments.length>1?arguments[1]:void 0)}})},function(t,e,n){var r=n(4),o=n(22),i=n(1)("match");t.exports=function(t){var e;return r(t)&&(void 0!==(e=t[i])?!!e:"RegExp"==o(t))}},function(t,e,n){"use strict";n(42);var r=n(15),o=n(3),i=n(1),a=n(62),u=n(9),c=i("species"),s=!o((function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:"7"},t},"7"!=="".replace(t,"$
")})),f="$0"==="a".replace(/./,"$0"),l=i("replace"),p=!!/./[l]&&""===/./[l]("a","$0"),h=!o((function(){var t=/(?:)/,e=t.exec;t.exec=function(){return e.apply(this,arguments)};var n="ab".split(t);return 2!==n.length||"a"!==n[0]||"b"!==n[1]}));t.exports=function(t,e,n,l){var d=i(t),v=!o((function(){var e={};return e[d]=function(){return 7},7!=""[t](e)})),y=v&&!o((function(){var e=!1,n=/a/;return"split"===t&&((n={}).constructor={},n.constructor[c]=function(){return n},n.flags="",n[d]=/./[d]),n.exec=function(){return e=!0,null},n[d](""),!e}));if(!v||!y||"replace"===t&&(!s||!f||p)||"split"===t&&!h){var m=/./[d],g=n(d,""[t],(function(t,e,n,r,o){return e.exec===a?v&&!o?{done:!0,value:m.call(e,n,r)}:{done:!0,value:t.call(n,e,r)}:{done:!1}}),{REPLACE_KEEPS_$0:f,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:p}),b=g[0],_=g[1];r(String.prototype,t,b),r(RegExp.prototype,d,2==e?function(t,e){return _.call(t,this,e)}:function(t){return _.call(t,this)})}l&&u(RegExp.prototype[d],"sham",!0)}},function(t,e,n){"use strict";var r=n(6);t.exports=function(){var t=r(this),e="";return t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.dotAll&&(e+="s"),t.unicode&&(e+="u"),t.sticky&&(e+="y"),e}},function(t,e,n){"use strict";var r=n(116).charAt;t.exports=function(t,e,n){return e+(n?r(t,e).length:1)}},function(t,e,n){var r=n(22),o=n(62);t.exports=function(t,e){var n=t.exec;if("function"==typeof n){var i=n.call(t,e);if("object"!=typeof i)throw TypeError("RegExp exec method returned something other than an Object or null");return i}if("RegExp"!==r(t))throw TypeError("RegExp#exec called on incompatible receiver");return o.call(t,e)}},function(t,e,n){"use strict";var r=n(0),o=n(27),i=n(11),a=n(37),u=[].join,c=o!=Object,s=a("join",",");r({target:"Array",proto:!0,forced:c||!s},{join:function(t){return u.call(i(this),void 0===t?",":t)}})},function(t,e,n){var r=n(6),o=n(167);t.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var t,e=!1,n={};try{(t=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set).call(n,[]),e=n instanceof Array}catch(t){}return function(n,i){return r(n),o(i),e?t.call(n,i):n.__proto__=i,n}}():void 0)},function(t,e,n){"use strict";var r=n(17),o=n(8),i=n(1),a=n(7),u=i("species");t.exports=function(t){var e=r(t),n=o.f;a&&e&&!e[u]&&n(e,u,{configurable:!0,get:function(){return this}})}},function(t,e,n){"use strict";var r=n(3);function o(t,e){return RegExp(t,e)}e.UNSUPPORTED_Y=r((function(){var t=o("a","y");return t.lastIndex=2,null!=t.exec("abcd")})),e.BROKEN_CARET=r((function(){var t=o("^r","gy");return t.lastIndex=2,null!=t.exec("str")}))},function(t,e,n){"use strict";var r=n(0),o=n(69).includes,i=n(92);r({target:"Array",proto:!0},{includes:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}}),i("includes")},function(t,e,n){"use strict";var r=n(0),o=n(95),i=n(19);r({target:"String",proto:!0,forced:!n(96)("includes")},{includes:function(t){return!!~String(i(this)).indexOf(o(t),arguments.length>1?arguments[1]:void 0)}})},function(t,e,n){"use strict";var r=n(0),o=n(3),i=n(43),a=n(4),u=n(12),c=n(14),s=n(78),f=n(118),l=n(51),p=n(1),h=n(30),d=p("isConcatSpreadable"),v=h>=51||!o((function(){var t=[];return t[d]=!1,t.concat()[0]!==t})),y=l("concat"),m=function(t){if(!a(t))return!1;var e=t[d];return void 0!==e?!!e:i(t)};r({target:"Array",proto:!0,forced:!v||!y},{concat:function(t){var e,n,r,o,i,a=u(this),l=f(a,0),p=0;for(e=-1,r=arguments.length;e9007199254740991)throw TypeError("Maximum allowed index exceeded");for(n=0;n=9007199254740991)throw TypeError("Maximum allowed index exceeded");s(l,p++,i)}return l.length=p,l}})},function(t,e,n){var r=n(140);t.exports=function(t,e,n){var o=null==t?void 0:r(t,e);return void 0===o?n:o}},function(t,e){t.exports=function(t){var e=null==t?0:t.length;return e?t[e-1]:void 0}},function(t,e,n){t.exports=n(294)},function(t,e,n){var r=n(7),o=n(8),i=n(6),a=n(47);t.exports=r?Object.defineProperties:function(t,e){i(t);for(var n,r=a(e),u=r.length,c=0;u>c;)o.f(t,n=r[c++],e[n]);return t}},function(t,e,n){var r=n(2),o=n(71),i=r.WeakMap;t.exports="function"==typeof i&&/native code/.test(o(i))},function(t,e,n){"use strict";var r=n(107).IteratorPrototype,o=n(46),i=n(28),a=n(50),u=n(32),c=function(){return this};t.exports=function(t,e,n){var s=e+" Iterator";return t.prototype=o(r,{next:i(1,n)}),a(t,s,!1,!0),u[s]=c,t}},function(t,e,n){var r=n(4);t.exports=function(t){if(!r(t)&&null!==t)throw TypeError("Can't set "+String(t)+" as a prototype");return t}},function(t,e,n){"use strict";var r,o,i,a,u=n(0),c=n(16),s=n(2),f=n(17),l=n(109),p=n(15),h=n(169),d=n(50),v=n(156),y=n(4),m=n(33),g=n(170),b=n(71),_=n(171),x=n(175),w=n(94),O=n(111).set,j=n(176),S=n(113),k=n(178),E=n(114),A=n(179),$=n(24),C=n(93),P=n(1),T=n(29),L=n(30),R=P("species"),I="Promise",M=$.get,N=$.set,D=$.getterFor(I),F=l,U=s.TypeError,B=s.document,z=s.process,q=f("fetch"),V=E.f,H=V,W=!!(B&&B.createEvent&&s.dispatchEvent),G="function"==typeof PromiseRejectionEvent,K=C(I,(function(){if(!(b(F)!==String(F))){if(66===L)return!0;if(!T&&!G)return!0}if(c&&!F.prototype.finally)return!0;if(L>=51&&/native code/.test(F))return!1;var t=F.resolve(1),e=function(t){t((function(){}),(function(){}))};return(t.constructor={})[R]=e,!(t.then((function(){}))instanceof e)})),J=K||!x((function(t){F.all(t).catch((function(){}))})),X=function(t){var e;return!(!y(t)||"function"!=typeof(e=t.then))&&e},Y=function(t,e){if(!t.notified){t.notified=!0;var n=t.reactions;j((function(){for(var r=t.value,o=1==t.state,i=0;n.length>i;){var a,u,c,s=n[i++],f=o?s.ok:s.fail,l=s.resolve,p=s.reject,h=s.domain;try{f?(o||(2===t.rejection&&et(t),t.rejection=1),!0===f?a=r:(h&&h.enter(),a=f(r),h&&(h.exit(),c=!0)),a===s.promise?p(U("Promise-chain cycle")):(u=X(a))?u.call(a,l,p):l(a)):p(r)}catch(t){h&&!c&&h.exit(),p(t)}}t.reactions=[],t.notified=!1,e&&!t.rejection&&Z(t)}))}},Q=function(t,e,n){var r,o;W?((r=B.createEvent("Event")).promise=e,r.reason=n,r.initEvent(t,!1,!0),s.dispatchEvent(r)):r={promise:e,reason:n},!G&&(o=s["on"+t])?o(r):"unhandledrejection"===t&&k("Unhandled promise rejection",n)},Z=function(t){O.call(s,(function(){var e,n=t.facade,r=t.value;if(tt(t)&&(e=A((function(){T?z.emit("unhandledRejection",r,n):Q("unhandledrejection",n,r)})),t.rejection=T||tt(t)?2:1,e.error))throw e.value}))},tt=function(t){return 1!==t.rejection&&!t.parent},et=function(t){O.call(s,(function(){var e=t.facade;T?z.emit("rejectionHandled",e):Q("rejectionhandled",e,t.value)}))},nt=function(t,e,n){return function(r){t(e,r,n)}},rt=function(t,e,n){t.done||(t.done=!0,n&&(t=n),t.value=e,t.state=2,Y(t,!0))},ot=function(t,e,n){if(!t.done){t.done=!0,n&&(t=n);try{if(t.facade===e)throw U("Promise can't be resolved itself");var r=X(e);r?j((function(){var n={done:!1};try{r.call(e,nt(ot,n,t),nt(rt,n,t))}catch(e){rt(n,e,t)}})):(t.value=e,t.state=1,Y(t,!1))}catch(e){rt({done:!1},e,t)}}};K&&(F=function(t){g(this,F,I),m(t),r.call(this);var e=M(this);try{t(nt(ot,e),nt(rt,e))}catch(t){rt(e,t)}},(r=function(t){N(this,{type:I,done:!1,notified:!1,parent:!1,reactions:[],rejection:!1,state:0,value:void 0})}).prototype=h(F.prototype,{then:function(t,e){var n=D(this),r=V(w(this,F));return r.ok="function"!=typeof t||t,r.fail="function"==typeof e&&e,r.domain=T?z.domain:void 0,n.parent=!0,n.reactions.push(r),0!=n.state&&Y(n,!1),r.promise},catch:function(t){return this.then(void 0,t)}}),o=function(){var t=new r,e=M(t);this.promise=t,this.resolve=nt(ot,e),this.reject=nt(rt,e)},E.f=V=function(t){return t===F||t===i?new o(t):H(t)},c||"function"!=typeof l||(a=l.prototype.then,p(l.prototype,"then",(function(t,e){var n=this;return new F((function(t,e){a.call(n,t,e)})).then(t,e)}),{unsafe:!0}),"function"==typeof q&&u({global:!0,enumerable:!0,forced:!0},{fetch:function(t){return S(F,q.apply(s,arguments))}}))),u({global:!0,wrap:!0,forced:K},{Promise:F}),d(F,I,!1,!0),v(I),i=f(I),u({target:I,stat:!0,forced:K},{reject:function(t){var e=V(this);return e.reject.call(void 0,t),e.promise}}),u({target:I,stat:!0,forced:c||K},{resolve:function(t){return S(c&&this===i?F:this,t)}}),u({target:I,stat:!0,forced:J},{all:function(t){var e=this,n=V(e),r=n.resolve,o=n.reject,i=A((function(){var n=m(e.resolve),i=[],a=0,u=1;_(t,(function(t){var c=a++,s=!1;i.push(void 0),u++,n.call(e,t).then((function(t){s||(s=!0,i[c]=t,--u||r(i))}),o)})),--u||r(i)}));return i.error&&o(i.value),n.promise},race:function(t){var e=this,n=V(e),r=n.reject,o=A((function(){var o=m(e.resolve);_(t,(function(t){o.call(e,t).then(n.resolve,r)}))}));return o.error&&r(o.value),n.promise}})},function(t,e,n){var r=n(15);t.exports=function(t,e,n){for(var o in e)r(t,o,e[o],n);return t}},function(t,e){t.exports=function(t,e,n){if(!(t instanceof e))throw TypeError("Incorrect "+(n?n+" ":"")+"invocation");return t}},function(t,e,n){var r=n(6),o=n(172),i=n(14),a=n(75),u=n(173),c=n(174),s=function(t,e){this.stopped=t,this.result=e};t.exports=function(t,e,n){var f,l,p,h,d,v,y,m=n&&n.that,g=!(!n||!n.AS_ENTRIES),b=!(!n||!n.IS_ITERATOR),_=!(!n||!n.INTERRUPTED),x=a(e,m,1+g+_),w=function(t){return f&&c(f),new s(!0,t)},O=function(t){return g?(r(t),_?x(t[0],t[1],w):x(t[0],t[1])):_?x(t,w):x(t)};if(b)f=t;else{if("function"!=typeof(l=u(t)))throw TypeError("Target is not iterable");if(o(l)){for(p=0,h=i(t.length);h>p;p++)if((d=O(t[p]))&&d instanceof s)return d;return new s(!1)}f=l.call(t)}for(v=f.next;!(y=v.call(f)).done;){try{d=O(y.value)}catch(t){throw c(f),t}if("object"==typeof d&&d&&d instanceof s)return d}return new s(!1)}},function(t,e,n){var r=n(1),o=n(32),i=r("iterator"),a=Array.prototype;t.exports=function(t){return void 0!==t&&(o.Array===t||a[i]===t)}},function(t,e,n){var r=n(110),o=n(32),i=n(1)("iterator");t.exports=function(t){if(null!=t)return t[i]||t["@@iterator"]||o[r(t)]}},function(t,e,n){var r=n(6);t.exports=function(t){var e=t.return;if(void 0!==e)return r(e.call(t)).value}},function(t,e,n){var r=n(1)("iterator"),o=!1;try{var i=0,a={next:function(){return{done:!!i++}},return:function(){o=!0}};a[r]=function(){return this},Array.from(a,(function(){throw 2}))}catch(t){}t.exports=function(t,e){if(!e&&!o)return!1;var n=!1;try{var i={};i[r]=function(){return{next:function(){return{done:n=!0}}}},t(i)}catch(t){}return n}},function(t,e,n){var r,o,i,a,u,c,s,f,l=n(2),p=n(20).f,h=n(111).set,d=n(112),v=n(177),y=n(29),m=l.MutationObserver||l.WebKitMutationObserver,g=l.document,b=l.process,_=l.Promise,x=p(l,"queueMicrotask"),w=x&&x.value;w||(r=function(){var t,e;for(y&&(t=b.domain)&&t.exit();o;){e=o.fn,o=o.next;try{e()}catch(t){throw o?a():i=void 0,t}}i=void 0,t&&t.enter()},d||y||v||!m||!g?_&&_.resolve?(s=_.resolve(void 0),f=s.then,a=function(){f.call(s,r)}):a=y?function(){b.nextTick(r)}:function(){h.call(l,r)}:(u=!0,c=g.createTextNode(""),new m(r).observe(c,{characterData:!0}),a=function(){c.data=u=!u})),t.exports=w||function(t){var e={fn:t,next:void 0};i&&(i.next=e),o||(o=e,a()),i=e}},function(t,e,n){var r=n(68);t.exports=/web0s(?!.*chrome)/i.test(r)},function(t,e,n){var r=n(2);t.exports=function(t,e){var n=r.console;n&&n.error&&(1===arguments.length?n.error(t):n.error(t,e))}},function(t,e){t.exports=function(t){try{return{error:!1,value:t()}}catch(t){return{error:!0,value:t}}}},function(t,e,n){var r=n(0),o=n(181);r({target:"Object",stat:!0,forced:Object.assign!==o},{assign:o})},function(t,e,n){"use strict";var r=n(7),o=n(3),i=n(47),a=n(73),u=n(72),c=n(12),s=n(27),f=Object.assign,l=Object.defineProperty;t.exports=!f||o((function(){if(r&&1!==f({b:1},f(l({},"a",{enumerable:!0,get:function(){l(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var t={},e={},n=Symbol();return t[n]=7,"abcdefghijklmnopqrst".split("").forEach((function(t){e[t]=t})),7!=f({},t)[n]||"abcdefghijklmnopqrst"!=i(f({},e)).join("")}))?function(t,e){for(var n=c(t),o=arguments.length,f=1,l=a.f,p=u.f;o>f;)for(var h,d=s(arguments[f++]),v=l?i(d).concat(l(d)):i(d),y=v.length,m=0;y>m;)h=v[m++],r&&!p.call(d,h)||(n[h]=d[h]);return n}:f},function(t,e,n){"use strict";var r=n(0),o=n(16),i=n(109),a=n(3),u=n(17),c=n(94),s=n(113),f=n(15);r({target:"Promise",proto:!0,real:!0,forced:!!i&&a((function(){i.prototype.finally.call({then:function(){}},(function(){}))}))},{finally:function(t){var e=c(this,u("Promise")),n="function"==typeof t;return this.then(n?function(n){return s(e,t()).then((function(){return n}))}:t,n?function(n){return s(e,t()).then((function(){throw n}))}:t)}}),o||"function"!=typeof i||i.prototype.finally||f(i.prototype,"finally",u("Promise").prototype.finally)},function(t,e,n){"use strict";var r=n(76),o=n(110);t.exports=r?{}.toString:function(){return"[object "+o(this)+"]"}},function(t,e,n){var r=n(0),o=n(7),i=n(106),a=n(11),u=n(20),c=n(78);r({target:"Object",stat:!0,sham:!o},{getOwnPropertyDescriptors:function(t){for(var e,n,r=a(t),o=u.f,s=i(r),f={},l=0;s.length>l;)void 0!==(n=o(r,e=s[l++]))&&c(f,e,n);return f}})},function(t,e,n){var r=n(0),o=n(3),i=n(12),a=n(74),u=n(108);r({target:"Object",stat:!0,forced:o((function(){a(1)})),sham:!u},{getPrototypeOf:function(t){return a(i(t))}})},function(t,e,n){"use strict";var r=n(0),o=n(187).left,i=n(37),a=n(30),u=n(29);r({target:"Array",proto:!0,forced:!i("reduce")||!u&&a>79&&a<83},{reduce:function(t){return o(this,t,arguments.length,arguments.length>1?arguments[1]:void 0)}})},function(t,e,n){var r=n(33),o=n(12),i=n(27),a=n(14),u=function(t){return function(e,n,u,c){r(n);var s=o(e),f=i(s),l=a(s.length),p=t?l-1:0,h=t?-1:1;if(u<2)for(;;){if(p in f){c=f[p],p+=h;break}if(p+=h,t?p<0:l<=p)throw TypeError("Reduce of empty array with no initial value")}for(;t?p>=0:l>p;p+=h)p in f&&(c=n(c,f[p],p,s));return c}};t.exports={left:u(!1),right:u(!0)}},function(t,e,n){"use strict";var r,o=n(0),i=n(20).f,a=n(14),u=n(95),c=n(19),s=n(96),f=n(16),l="".startsWith,p=Math.min,h=s("startsWith");o({target:"String",proto:!0,forced:!!(f||h||(r=i(String.prototype,"startsWith"),!r||r.writable))&&!h},{startsWith:function(t){var e=String(c(this));u(t);var n=a(p(arguments.length>1?arguments[1]:void 0,e.length)),r=String(t);return l?l.call(e,r,n):e.slice(n,n+r.length)===r}})},function(t,e,n){var r=n(0),o=n(120),i=n(3),a=n(4),u=n(190).onFreeze,c=Object.freeze;r({target:"Object",stat:!0,forced:i((function(){c(1)})),sham:!o},{freeze:function(t){return c&&a(t)?c(u(t)):t}})},function(t,e,n){var r=n(31),o=n(4),i=n(5),a=n(8).f,u=n(45),c=n(120),s=u("meta"),f=0,l=Object.isExtensible||function(){return!0},p=function(t){a(t,s,{value:{objectID:"O"+ ++f,weakData:{}}})},h=t.exports={REQUIRED:!1,fastKey:function(t,e){if(!o(t))return"symbol"==typeof t?t:("string"==typeof t?"S":"P")+t;if(!i(t,s)){if(!l(t))return"F";if(!e)return"E";p(t)}return t[s].objectID},getWeakData:function(t,e){if(!i(t,s)){if(!l(t))return!0;if(!e)return!1;p(t)}return t[s].weakData},onFreeze:function(t){return c&&h.REQUIRED&&l(t)&&!i(t,s)&&p(t),t}};r[s]=!0},function(t,e,n){n(0)({target:"Object",stat:!0,sham:!n(7)},{create:n(46)})},function(t,e,n){var r=n(12),o=Math.floor,i="".replace,a=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,u=/\$([$&'`]|\d{1,2})/g;t.exports=function(t,e,n,c,s,f){var l=n+t.length,p=c.length,h=u;return void 0!==s&&(s=r(s),h=a),i.call(f,h,(function(r,i){var a;switch(i.charAt(0)){case"$":return"$";case"&":return t;case"`":return e.slice(0,n);case"'":return e.slice(l);case"<":a=s[i.slice(1,-1)];break;default:var u=+i;if(0===u)return r;if(u>p){var f=o(u/10);return 0===f?r:f<=p?void 0===c[f-1]?i.charAt(1):c[f-1]+i.charAt(1):r}a=c[u-1]}return void 0===a?"":a}))}},function(t,e,n){var r=n(121),o=n(194);t.exports=function t(e,n,i,a,u){var c=-1,s=e.length;for(i||(i=o),u||(u=[]);++c0&&i(f)?n>1?t(f,n-1,i,a,u):r(u,f):a||(u[u.length]=f)}return u}},function(t,e,n){var r=n(38),o=n(79),i=n(10),a=r?r.isConcatSpreadable:void 0;t.exports=function(t){return i(t)||o(t)||!!(a&&t&&t[a])}},function(t,e,n){var r=n(26),o=n(21);t.exports=function(t){return o(t)&&"[object Arguments]"==r(t)}},function(t,e,n){var r=n(38),o=Object.prototype,i=o.hasOwnProperty,a=o.toString,u=r?r.toStringTag:void 0;t.exports=function(t){var e=i.call(t,u),n=t[u];try{t[u]=void 0;var r=!0}catch(t){}var o=a.call(t);return r&&(e?t[u]=n:delete t[u]),o}},function(t,e){var n=Object.prototype.toString;t.exports=function(t){return n.call(t)}},function(t,e,n){var r=n(199),o=n(255),i=n(87),a=n(10),u=n(265);t.exports=function(t){return"function"==typeof t?t:null==t?i:"object"==typeof t?a(t)?o(t[0],t[1]):r(t):u(t)}},function(t,e,n){var r=n(200),o=n(254),i=n(139);t.exports=function(t){var e=o(t);return 1==e.length&&e[0][2]?i(e[0][0],e[0][1]):function(n){return n===t||r(n,t,e)}}},function(t,e,n){var r=n(123),o=n(127);t.exports=function(t,e,n,i){var a=n.length,u=a,c=!i;if(null==t)return!u;for(t=Object(t);a--;){var s=n[a];if(c&&s[2]?s[1]!==t[s[0]]:!(s[0]in t))return!1}for(;++a-1}},function(t,e,n){var r=n(53);t.exports=function(t,e){var n=this.__data__,o=r(n,t);return o<0?(++this.size,n.push([t,e])):n[o][1]=e,this}},function(t,e,n){var r=n(52);t.exports=function(){this.__data__=new r,this.size=0}},function(t,e){t.exports=function(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n}},function(t,e){t.exports=function(t){return this.__data__.get(t)}},function(t,e){t.exports=function(t){return this.__data__.has(t)}},function(t,e,n){var r=n(52),o=n(80),i=n(82);t.exports=function(t,e){var n=this.__data__;if(n instanceof r){var a=n.__data__;if(!o||a.length<199)return a.push([t,e]),this.size=++n.size,this;n=this.__data__=new i(a)}return n.set(t,e),this.size=n.size,this}},function(t,e,n){var r=n(125),o=n(212),i=n(81),a=n(126),u=/^\[object .+?Constructor\]$/,c=Function.prototype,s=Object.prototype,f=c.toString,l=s.hasOwnProperty,p=RegExp("^"+f.call(l).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");t.exports=function(t){return!(!i(t)||o(t))&&(r(t)?p:u).test(a(t))}},function(t,e,n){var r,o=n(213),i=(r=/[^.]+$/.exec(o&&o.keys&&o.keys.IE_PROTO||""))?"Symbol(src)_1."+r:"";t.exports=function(t){return!!i&&i in t}},function(t,e,n){var r=n(13)["__core-js_shared__"];t.exports=r},function(t,e){t.exports=function(t,e){return null==t?void 0:t[e]}},function(t,e,n){var r=n(216),o=n(52),i=n(80);t.exports=function(){this.size=0,this.__data__={hash:new r,map:new(i||o),string:new r}}},function(t,e,n){var r=n(217),o=n(218),i=n(219),a=n(220),u=n(221);function c(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e0){if(++e>=800)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}},function(t,e,n){var r=n(129),o=n(277),i=n(282),a=n(130),u=n(283),c=n(83);t.exports=function(t,e,n){var s=-1,f=o,l=t.length,p=!0,h=[],d=h;if(n)p=!1,f=i;else if(l>=200){var v=e?null:u(t);if(v)return c(v);p=!1,f=a,d=new r}else d=e?[]:h;t:for(;++s-1}},function(t,e,n){var r=n(279),o=n(280),i=n(281);t.exports=function(t,e,n){return e==e?i(t,e,n):r(t,o,n)}},function(t,e){t.exports=function(t,e,n,r){for(var o=t.length,i=n+(r?1:-1);r?i--:++ii;)o.push(arguments[i++]);if(r=e,(h(e)||void 0!==t)&&!it(t))return p(e)||(e=function(t,e){if("function"==typeof r&&(e=r.call(this,t,e)),!it(e))return e}),o[1]=e,H.apply(null,o)}});V.prototype[U]||E(V.prototype,U,V.prototype.valueOf),M(V,"Symbol"),P[F]=!0},function(t,e,n){var r=n(11),o=n(61).f,i={}.toString,a="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];t.exports.f=function(t){return a&&"[object Window]"==i.call(t)?function(t){try{return o(t)}catch(t){return a.slice()}}(t):o(r(t))}},function(t,e,n){var r=n(99),o=n(5),i=n(143),a=n(8).f;t.exports=function(t){var e=r.Symbol||(r.Symbol={});o(e,t)||a(e,t,{value:i.f(t)})}},function(t,e,n){"use strict";var r=n(0),o=n(7),i=n(2),a=n(5),u=n(4),c=n(8).f,s=n(105),f=i.Symbol;if(o&&"function"==typeof f&&(!("description"in f.prototype)||void 0!==f().description)){var l={},p=function(){var t=arguments.length<1||void 0===arguments[0]?void 0:String(arguments[0]),e=this instanceof p?new f(t):void 0===t?f():f(t);return""===t&&(l[e]=!0),e};s(p,f);var h=p.prototype=f.prototype;h.constructor=p;var d=h.toString,v="Symbol(test)"==String(f("test")),y=/^Symbol\((.*)\)[^)]+$/;c(h,"description",{configurable:!0,get:function(){var t=u(this)?this.valueOf():this,e=d.call(t);if(a(l,t))return"";var n=v?e.slice(7,-1):e.replace(y,"$1");return""===n?void 0:n}}),r({global:!0,forced:!0},{Symbol:p})}},function(t,e,n){"use strict";n(144)},function(t,e,n){"use strict";n(145)},function(t,e,n){"use strict";n.r(e);n(97),n(168),n(180),n(182);function r(t,e,n,r,o,i,a){try{var u=t[i](a),c=u.value}catch(t){return void n(t)}u.done?e(c):Promise.resolve(c).then(r,o)}function o(t){return function(){var e=this,n=arguments;return new Promise((function(o,i){var a=t.apply(e,n);function u(t){r(a,o,i,u,c,"next",t)}function c(t){r(a,o,i,u,c,"throw",t)}u(void 0)}))}}n(115),n(77),n(34),n(35),n(36),n(59),n(23);var i=Object.freeze({});function a(t){return null==t}function u(t){return null!=t}function c(t){return!0===t}function s(t){return"string"==typeof t||"number"==typeof t||"symbol"==typeof t||"boolean"==typeof t}function f(t){return null!==t&&"object"==typeof t}var l=Object.prototype.toString;function p(t){return"[object Object]"===l.call(t)}function h(t){return"[object RegExp]"===l.call(t)}function d(t){var e=parseFloat(String(t));return e>=0&&Math.floor(e)===e&&isFinite(t)}function v(t){return u(t)&&"function"==typeof t.then&&"function"==typeof t.catch}function y(t){return null==t?"":Array.isArray(t)||p(t)&&t.toString===l?JSON.stringify(t,null,2):String(t)}function m(t){var e=parseFloat(t);return isNaN(e)?t:e}function g(t,e){for(var n=Object.create(null),r=t.split(","),o=0;o-1)return t.splice(n,1)}}var x=Object.prototype.hasOwnProperty;function w(t,e){return x.call(t,e)}function O(t){var e=Object.create(null);return function(n){return e[n]||(e[n]=t(n))}}var j=/-(\w)/g,S=O((function(t){return t.replace(j,(function(t,e){return e?e.toUpperCase():""}))})),k=O((function(t){return t.charAt(0).toUpperCase()+t.slice(1)})),E=/\B([A-Z])/g,A=O((function(t){return t.replace(E,"-$1").toLowerCase()}));var $=Function.prototype.bind?function(t,e){return t.bind(e)}:function(t,e){function n(n){var r=arguments.length;return r?r>1?t.apply(e,arguments):t.call(e,n):t.call(e)}return n._length=t.length,n};function C(t,e){e=e||0;for(var n=t.length-e,r=new Array(n);n--;)r[n]=t[n+e];return r}function P(t,e){for(var n in e)t[n]=e[n];return t}function T(t){for(var e={},n=0;n0,Z=X&&X.indexOf("edge/")>0,tt=(X&&X.indexOf("android"),X&&/iphone|ipad|ipod|ios/.test(X)||"ios"===J),et=(X&&/chrome\/\d+/.test(X),X&&/phantomjs/.test(X),X&&X.match(/firefox\/(\d+)/)),nt={}.watch,rt=!1;if(G)try{var ot={};Object.defineProperty(ot,"passive",{get:function(){rt=!0}}),window.addEventListener("test-passive",null,ot)}catch(t){}var it=function(){return void 0===H&&(H=!G&&!K&&"undefined"!=typeof global&&(global.process&&"server"===global.process.env.VUE_ENV)),H},at=G&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function ut(t){return"function"==typeof t&&/native code/.test(t.toString())}var ct,st="undefined"!=typeof Symbol&&ut(Symbol)&&"undefined"!=typeof Reflect&&ut(Reflect.ownKeys);ct="undefined"!=typeof Set&&ut(Set)?Set:function(){function t(){this.set=Object.create(null)}return t.prototype.has=function(t){return!0===this.set[t]},t.prototype.add=function(t){this.set[t]=!0},t.prototype.clear=function(){this.set=Object.create(null)},t}();var ft=L,lt=0,pt=function(){this.id=lt++,this.subs=[]};pt.prototype.addSub=function(t){this.subs.push(t)},pt.prototype.removeSub=function(t){_(this.subs,t)},pt.prototype.depend=function(){pt.target&&pt.target.addDep(this)},pt.prototype.notify=function(){var t=this.subs.slice();for(var e=0,n=t.length;e-1)if(i&&!w(o,"default"))a=!1;else if(""===a||a===A(t)){var c=qt(String,o.type);(c<0||u0&&(pe((o=t(o,(n||"")+"_"+r))[0])&&pe(f)&&(l[i]=bt(f.text+o[0].text),o.shift()),l.push.apply(l,o)):s(o)?pe(f)?l[i]=bt(f.text+o):""!==o&&l.push(bt(o)):pe(o)&&pe(f)?l[i]=bt(f.text+o.text):(c(e._isVList)&&u(o.tag)&&a(o.key)&&u(n)&&(o.key="__vlist"+n+"_"+r+"__"),l.push(o)));return l}(t):void 0}function pe(t){return u(t)&&u(t.text)&&!1===t.isComment}function he(t,e){if(t){for(var n=Object.create(null),r=st?Reflect.ownKeys(t):Object.keys(t),o=0;o0,a=t?!!t.$stable:!o,u=t&&t.$key;if(t){if(t._normalized)return t._normalized;if(a&&n&&n!==i&&u===n.$key&&!o&&!n.$hasNormal)return n;for(var c in r={},t)t[c]&&"$"!==c[0]&&(r[c]=me(e,c,t[c]))}else r={};for(var s in e)s in r||(r[s]=ge(e,s));return t&&Object.isExtensible(t)&&(t._normalized=r),q(r,"$stable",a),q(r,"$key",u),q(r,"$hasNormal",o),r}function me(t,e,n){var r=function(){var t=arguments.length?n.apply(null,arguments):n({});return(t=t&&"object"==typeof t&&!Array.isArray(t)?[t]:le(t))&&(0===t.length||1===t.length&&t[0].isComment)?void 0:t};return n.proxy&&Object.defineProperty(t,e,{get:r,enumerable:!0,configurable:!0}),r}function ge(t,e){return function(){return t[e]}}function be(t,e){var n,r,o,i,a;if(Array.isArray(t)||"string"==typeof t)for(n=new Array(t.length),r=0,o=t.length;rdocument.createEvent("Event").timeStamp&&(fn=function(){return ln.now()})}function pn(){var t,e;for(sn=fn(),un=!0,nn.sort((function(t,e){return t.id-e.id})),cn=0;cncn&&nn[n].id>t.id;)n--;nn.splice(n+1,0,t)}else nn.push(t);an||(an=!0,re(pn))}}(this)},dn.prototype.run=function(){if(this.active){var t=this.get();if(t!==this.value||f(t)||this.deep){var e=this.value;if(this.value=t,this.user)try{this.cb.call(this.vm,t,e)}catch(t){Vt(t,this.vm,'callback for watcher "'+this.expression+'"')}else this.cb.call(this.vm,t,e)}}},dn.prototype.evaluate=function(){this.value=this.get(),this.dirty=!1},dn.prototype.depend=function(){for(var t=this.deps.length;t--;)this.deps[t].depend()},dn.prototype.teardown=function(){if(this.active){this.vm._isBeingDestroyed||_(this.vm._watchers,this);for(var t=this.deps.length;t--;)this.deps[t].removeSub(this);this.active=!1}};var vn={enumerable:!0,configurable:!0,get:L,set:L};function yn(t,e,n){vn.get=function(){return this[e][n]},vn.set=function(t){this[e][n]=t},Object.defineProperty(t,n,vn)}function mn(t){t._watchers=[];var e=t.$options;e.props&&function(t,e){var n=t.$options.propsData||{},r=t._props={},o=t.$options._propKeys=[];t.$parent&&St(!1);var i=function(i){o.push(i);var a=Ut(i,e,n,t);At(r,i,a),i in t||yn(t,"_props",i)};for(var a in e)i(a);St(!0)}(t,e.props),e.methods&&function(t,e){t.$options.props;for(var n in e)t[n]="function"!=typeof e[n]?L:$(e[n],t)}(t,e.methods),e.data?function(t){var e=t.$options.data;p(e=t._data="function"==typeof e?function(t,e){dt();try{return t.call(e,e)}catch(t){return Vt(t,e,"data()"),{}}finally{vt()}}(e,t):e||{})||(e={});var n=Object.keys(e),r=t.$options.props,o=(t.$options.methods,n.length);for(;o--;){var i=n[o];0,r&&w(r,i)||(a=void 0,36!==(a=(i+"").charCodeAt(0))&&95!==a&&yn(t,"_data",i))}var a;Et(e,!0)}(t):Et(t._data={},!0),e.computed&&function(t,e){var n=t._computedWatchers=Object.create(null),r=it();for(var o in e){var i=e[o],a="function"==typeof i?i:i.get;0,r||(n[o]=new dn(t,a||L,L,gn)),o in t||bn(t,o,i)}}(t,e.computed),e.watch&&e.watch!==nt&&function(t,e){for(var n in e){var r=e[n];if(Array.isArray(r))for(var o=0;o-1:"string"==typeof t?t.split(",").indexOf(e)>-1:!!h(t)&&t.test(e)}function $n(t,e){var n=t.cache,r=t.keys,o=t._vnode;for(var i in n){var a=n[i];if(a){var u=En(a.componentOptions);u&&!e(u)&&Cn(n,i,r,o)}}}function Cn(t,e,n,r){var o=t[e];!o||r&&o.tag===r.tag||o.componentInstance.$destroy(),t[e]=null,_(n,e)}Sn.prototype._init=function(t){var e=this;e._uid=On++,e._isVue=!0,t&&t._isComponent?function(t,e){var n=t.$options=Object.create(t.constructor.options),r=e._parentVnode;n.parent=e.parent,n._parentVnode=r;var o=r.componentOptions;n.propsData=o.propsData,n._parentListeners=o.listeners,n._renderChildren=o.children,n._componentTag=o.tag,e.render&&(n.render=e.render,n.staticRenderFns=e.staticRenderFns)}(e,t):e.$options=Dt(jn(e.constructor),t||{},e),e._renderProxy=e,e._self=e,function(t){var e=t.$options,n=e.parent;if(n&&!e.abstract){for(;n.$options.abstract&&n.$parent;)n=n.$parent;n.$children.push(t)}t.$parent=n,t.$root=n?n.$root:t,t.$children=[],t.$refs={},t._watcher=null,t._inactive=null,t._directInactive=!1,t._isMounted=!1,t._isDestroyed=!1,t._isBeingDestroyed=!1}(e),function(t){t._events=Object.create(null),t._hasHookEvent=!1;var e=t.$options._parentListeners;e&&Xe(t,e)}(e),function(t){t._vnode=null,t._staticTrees=null;var e=t.$options,n=t.$vnode=e._parentVnode,r=n&&n.context;t.$slots=de(e._renderChildren,r),t.$scopedSlots=i,t._c=function(e,n,r,o){return Be(t,e,n,r,o,!1)},t.$createElement=function(e,n,r,o){return Be(t,e,n,r,o,!0)};var o=n&&n.data;At(t,"$attrs",o&&o.attrs||i,null,!0),At(t,"$listeners",e._parentListeners||i,null,!0)}(e),en(e,"beforeCreate"),function(t){var e=he(t.$options.inject,t);e&&(St(!1),Object.keys(e).forEach((function(n){At(t,n,e[n])})),St(!0))}(e),mn(e),function(t){var e=t.$options.provide;e&&(t._provided="function"==typeof e?e.call(t):e)}(e),en(e,"created"),e.$options.el&&e.$mount(e.$options.el)},function(t){var e={get:function(){return this._data}},n={get:function(){return this._props}};Object.defineProperty(t.prototype,"$data",e),Object.defineProperty(t.prototype,"$props",n),t.prototype.$set=$t,t.prototype.$delete=Ct,t.prototype.$watch=function(t,e,n){if(p(e))return wn(this,t,e,n);(n=n||{}).user=!0;var r=new dn(this,t,e,n);if(n.immediate)try{e.call(this,r.value)}catch(t){Vt(t,this,'callback for immediate watcher "'+r.expression+'"')}return function(){r.teardown()}}}(Sn),function(t){var e=/^hook:/;t.prototype.$on=function(t,n){var r=this;if(Array.isArray(t))for(var o=0,i=t.length;o1?C(n):n;for(var r=C(arguments,1),o='event handler for "'+t+'"',i=0,a=n.length;iparseInt(this.max)&&Cn(a,u[0],u,this._vnode)),e.data.keepAlive=!0}return e||t&&t[0]}}};!function(t){var e={get:function(){return B}};Object.defineProperty(t,"config",e),t.util={warn:ft,extend:P,mergeOptions:Dt,defineReactive:At},t.set=$t,t.delete=Ct,t.nextTick=re,t.observable=function(t){return Et(t),t},t.options=Object.create(null),F.forEach((function(e){t.options[e+"s"]=Object.create(null)})),t.options._base=t,P(t.options.components,Tn),function(t){t.use=function(t){var e=this._installedPlugins||(this._installedPlugins=[]);if(e.indexOf(t)>-1)return this;var n=C(arguments,1);return n.unshift(this),"function"==typeof t.install?t.install.apply(t,n):"function"==typeof t&&t.apply(null,n),e.push(t),this}}(t),function(t){t.mixin=function(t){return this.options=Dt(this.options,t),this}}(t),kn(t),function(t){F.forEach((function(e){t[e]=function(t,n){return n?("component"===e&&p(n)&&(n.name=n.name||t,n=this.options._base.extend(n)),"directive"===e&&"function"==typeof n&&(n={bind:n,update:n}),this.options[e+"s"][t]=n,n):this.options[e+"s"][t]}}))}(t)}(Sn),Object.defineProperty(Sn.prototype,"$isServer",{get:it}),Object.defineProperty(Sn.prototype,"$ssrContext",{get:function(){return this.$vnode&&this.$vnode.ssrContext}}),Object.defineProperty(Sn,"FunctionalRenderContext",{value:Re}),Sn.version="2.6.12";var Ln=g("style,class"),Rn=g("input,textarea,option,select,progress"),In=g("contenteditable,draggable,spellcheck"),Mn=g("events,caret,typing,plaintext-only"),Nn=g("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,translate,truespeed,typemustmatch,visible"),Dn="http://www.w3.org/1999/xlink",Fn=function(t){return":"===t.charAt(5)&&"xlink"===t.slice(0,5)},Un=function(t){return Fn(t)?t.slice(6,t.length):""},Bn=function(t){return null==t||!1===t};function zn(t){for(var e=t.data,n=t,r=t;u(r.componentInstance);)(r=r.componentInstance._vnode)&&r.data&&(e=qn(r.data,e));for(;u(n=n.parent);)n&&n.data&&(e=qn(e,n.data));return function(t,e){if(u(t)||u(e))return Vn(t,Hn(e));return""}(e.staticClass,e.class)}function qn(t,e){return{staticClass:Vn(t.staticClass,e.staticClass),class:u(t.class)?[t.class,e.class]:e.class}}function Vn(t,e){return t?e?t+" "+e:t:e||""}function Hn(t){return Array.isArray(t)?function(t){for(var e,n="",r=0,o=t.length;r-1?dr(t,e,n):Nn(e)?Bn(n)?t.removeAttribute(e):(n="allowfullscreen"===e&&"EMBED"===t.tagName?"true":e,t.setAttribute(e,n)):In(e)?t.setAttribute(e,function(t,e){return Bn(e)||"false"===e?"false":"contenteditable"===t&&Mn(e)?e:"true"}(e,n)):Fn(e)?Bn(n)?t.removeAttributeNS(Dn,Un(e)):t.setAttributeNS(Dn,e,n):dr(t,e,n)}function dr(t,e,n){if(Bn(n))t.removeAttribute(e);else{if(Y&&!Q&&"TEXTAREA"===t.tagName&&"placeholder"===e&&""!==n&&!t.__ieph){var r=function(e){e.stopImmediatePropagation(),t.removeEventListener("input",r)};t.addEventListener("input",r),t.__ieph=!0}t.setAttribute(e,n)}}var vr={create:pr,update:pr};function yr(t,e){var n=e.elm,r=e.data,o=t.data;if(!(a(r.staticClass)&&a(r.class)&&(a(o)||a(o.staticClass)&&a(o.class)))){var i=zn(e),c=n._transitionClasses;u(c)&&(i=Vn(i,Hn(c))),i!==n._prevClass&&(n.setAttribute("class",i),n._prevClass=i)}}var mr,gr={create:yr,update:yr};function br(t,e,n){var r=mr;return function o(){var i=e.apply(null,arguments);null!==i&&wr(t,o,n,r)}}var _r=Jt&&!(et&&Number(et[1])<=53);function xr(t,e,n,r){if(_r){var o=sn,i=e;e=i._wrapper=function(t){if(t.target===t.currentTarget||t.timeStamp>=o||t.timeStamp<=0||t.target.ownerDocument!==document)return i.apply(this,arguments)}}mr.addEventListener(t,e,rt?{capture:n,passive:r}:n)}function wr(t,e,n,r){(r||mr).removeEventListener(t,e._wrapper||e,n)}function Or(t,e){if(!a(t.data.on)||!a(e.data.on)){var n=e.data.on||{},r=t.data.on||{};mr=e.elm,function(t){if(u(t.__r)){var e=Y?"change":"input";t[e]=[].concat(t.__r,t[e]||[]),delete t.__r}u(t.__c)&&(t.change=[].concat(t.__c,t.change||[]),delete t.__c)}(n),ce(n,r,xr,wr,br,e.context),mr=void 0}}var jr,Sr={create:Or,update:Or};function kr(t,e){if(!a(t.data.domProps)||!a(e.data.domProps)){var n,r,o=e.elm,i=t.data.domProps||{},c=e.data.domProps||{};for(n in u(c.__ob__)&&(c=e.data.domProps=P({},c)),i)n in c||(o[n]="");for(n in c){if(r=c[n],"textContent"===n||"innerHTML"===n){if(e.children&&(e.children.length=0),r===i[n])continue;1===o.childNodes.length&&o.removeChild(o.childNodes[0])}if("value"===n&&"PROGRESS"!==o.tagName){o._value=r;var s=a(r)?"":String(r);Er(o,s)&&(o.value=s)}else if("innerHTML"===n&&Kn(o.tagName)&&a(o.innerHTML)){(jr=jr||document.createElement("div")).innerHTML=""+r+"";for(var f=jr.firstChild;o.firstChild;)o.removeChild(o.firstChild);for(;f.firstChild;)o.appendChild(f.firstChild)}else if(r!==i[n])try{o[n]=r}catch(t){}}}}function Er(t,e){return!t.composing&&("OPTION"===t.tagName||function(t,e){var n=!0;try{n=document.activeElement!==t}catch(t){}return n&&t.value!==e}(t,e)||function(t,e){var n=t.value,r=t._vModifiers;if(u(r)){if(r.number)return m(n)!==m(e);if(r.trim)return n.trim()!==e.trim()}return n!==e}(t,e))}var Ar={create:kr,update:kr},$r=O((function(t){var e={},n=/:(.+)/;return t.split(/;(?![^(]*\))/g).forEach((function(t){if(t){var r=t.split(n);r.length>1&&(e[r[0].trim()]=r[1].trim())}})),e}));function Cr(t){var e=Pr(t.style);return t.staticStyle?P(t.staticStyle,e):e}function Pr(t){return Array.isArray(t)?T(t):"string"==typeof t?$r(t):t}var Tr,Lr=/^--/,Rr=/\s*!important$/,Ir=function(t,e,n){if(Lr.test(e))t.style.setProperty(e,n);else if(Rr.test(n))t.style.setProperty(A(e),n.replace(Rr,""),"important");else{var r=Nr(e);if(Array.isArray(n))for(var o=0,i=n.length;o-1?e.split(Ur).forEach((function(e){return t.classList.add(e)})):t.classList.add(e);else{var n=" "+(t.getAttribute("class")||"")+" ";n.indexOf(" "+e+" ")<0&&t.setAttribute("class",(n+e).trim())}}function zr(t,e){if(e&&(e=e.trim()))if(t.classList)e.indexOf(" ")>-1?e.split(Ur).forEach((function(e){return t.classList.remove(e)})):t.classList.remove(e),t.classList.length||t.removeAttribute("class");else{for(var n=" "+(t.getAttribute("class")||"")+" ",r=" "+e+" ";n.indexOf(r)>=0;)n=n.replace(r," ");(n=n.trim())?t.setAttribute("class",n):t.removeAttribute("class")}}function qr(t){if(t){if("object"==typeof t){var e={};return!1!==t.css&&P(e,Vr(t.name||"v")),P(e,t),e}return"string"==typeof t?Vr(t):void 0}}var Vr=O((function(t){return{enterClass:t+"-enter",enterToClass:t+"-enter-to",enterActiveClass:t+"-enter-active",leaveClass:t+"-leave",leaveToClass:t+"-leave-to",leaveActiveClass:t+"-leave-active"}})),Hr=G&&!Q,Wr="transition",Gr="transitionend",Kr="animation",Jr="animationend";Hr&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&(Wr="WebkitTransition",Gr="webkitTransitionEnd"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(Kr="WebkitAnimation",Jr="webkitAnimationEnd"));var Xr=G?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:function(t){return t()};function Yr(t){Xr((function(){Xr(t)}))}function Qr(t,e){var n=t._transitionClasses||(t._transitionClasses=[]);n.indexOf(e)<0&&(n.push(e),Br(t,e))}function Zr(t,e){t._transitionClasses&&_(t._transitionClasses,e),zr(t,e)}function to(t,e,n){var r=no(t,e),o=r.type,i=r.timeout,a=r.propCount;if(!o)return n();var u="transition"===o?Gr:Jr,c=0,s=function(){t.removeEventListener(u,f),n()},f=function(e){e.target===t&&++c>=a&&s()};setTimeout((function(){c0&&(n="transition",f=a,l=i.length):"animation"===e?s>0&&(n="animation",f=s,l=c.length):l=(n=(f=Math.max(a,s))>0?a>s?"transition":"animation":null)?"transition"===n?i.length:c.length:0,{type:n,timeout:f,propCount:l,hasTransform:"transition"===n&&eo.test(r[Wr+"Property"])}}function ro(t,e){for(;t.length1}function so(t,e){!0!==e.data.show&&io(e)}var fo=function(t){var e,n,r={},o=t.modules,i=t.nodeOps;for(e=0;ed?b(t,a(n[m+1])?null:n[m+1].elm,n,h,m,r):h>m&&x(e,p,d)}(p,y,m,n,f):u(m)?(u(t.text)&&i.setTextContent(p,""),b(p,null,m,0,m.length-1,n)):u(y)?x(y,0,y.length-1):u(t.text)&&i.setTextContent(p,""):t.text!==e.text&&i.setTextContent(p,e.text),u(d)&&u(h=d.hook)&&u(h=h.postpatch)&&h(t,e)}}}function S(t,e,n){if(c(n)&&u(t.parent))t.parent.data.pendingInsert=e;else for(var r=0;r-1,a.selected!==i&&(a.selected=i);else if(M(yo(a),r))return void(t.selectedIndex!==u&&(t.selectedIndex=u));o||(t.selectedIndex=-1)}}function vo(t,e){return e.every((function(e){return!M(e,t)}))}function yo(t){return"_value"in t?t._value:t.value}function mo(t){t.target.composing=!0}function go(t){t.target.composing&&(t.target.composing=!1,bo(t.target,"input"))}function bo(t,e){var n=document.createEvent("HTMLEvents");n.initEvent(e,!0,!0),t.dispatchEvent(n)}function _o(t){return!t.componentInstance||t.data&&t.data.transition?t:_o(t.componentInstance._vnode)}var xo={model:lo,show:{bind:function(t,e,n){var r=e.value,o=(n=_o(n)).data&&n.data.transition,i=t.__vOriginalDisplay="none"===t.style.display?"":t.style.display;r&&o?(n.data.show=!0,io(n,(function(){t.style.display=i}))):t.style.display=r?i:"none"},update:function(t,e,n){var r=e.value;!r!=!e.oldValue&&((n=_o(n)).data&&n.data.transition?(n.data.show=!0,r?io(n,(function(){t.style.display=t.__vOriginalDisplay})):ao(n,(function(){t.style.display="none"}))):t.style.display=r?t.__vOriginalDisplay:"none")},unbind:function(t,e,n,r,o){o||(t.style.display=t.__vOriginalDisplay)}}},wo={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]};function Oo(t){var e=t&&t.componentOptions;return e&&e.Ctor.options.abstract?Oo(We(e.children)):t}function jo(t){var e={},n=t.$options;for(var r in n.propsData)e[r]=t[r];var o=n._parentListeners;for(var i in o)e[S(i)]=o[i];return e}function So(t,e){if(/\d-keep-alive$/.test(e.tag))return t("keep-alive",{props:e.componentOptions.propsData})}var ko=function(t){return t.tag||He(t)},Eo=function(t){return"show"===t.name},Ao={name:"transition",props:wo,abstract:!0,render:function(t){var e=this,n=this.$slots.default;if(n&&(n=n.filter(ko)).length){0;var r=this.mode;0;var o=n[0];if(function(t){for(;t=t.parent;)if(t.data.transition)return!0}(this.$vnode))return o;var i=Oo(o);if(!i)return o;if(this._leaving)return So(t,o);var a="__transition-"+this._uid+"-";i.key=null==i.key?i.isComment?a+"comment":a+i.tag:s(i.key)?0===String(i.key).indexOf(a)?i.key:a+i.key:i.key;var u=(i.data||(i.data={})).transition=jo(this),c=this._vnode,f=Oo(c);if(i.data.directives&&i.data.directives.some(Eo)&&(i.data.show=!0),f&&f.data&&!function(t,e){return e.key===t.key&&e.tag===t.tag}(i,f)&&!He(f)&&(!f.componentInstance||!f.componentInstance._vnode.isComment)){var l=f.data.transition=P({},u);if("out-in"===r)return this._leaving=!0,se(l,"afterLeave",(function(){e._leaving=!1,e.$forceUpdate()})),So(t,o);if("in-out"===r){if(He(i))return c;var p,h=function(){p()};se(u,"afterEnter",h),se(u,"enterCancelled",h),se(l,"delayLeave",(function(t){p=t}))}}return o}}},$o=P({tag:String,moveClass:String},wo);function Co(t){t.elm._moveCb&&t.elm._moveCb(),t.elm._enterCb&&t.elm._enterCb()}function Po(t){t.data.newPos=t.elm.getBoundingClientRect()}function To(t){var e=t.data.pos,n=t.data.newPos,r=e.left-n.left,o=e.top-n.top;if(r||o){t.data.moved=!0;var i=t.elm.style;i.transform=i.WebkitTransform="translate("+r+"px,"+o+"px)",i.transitionDuration="0s"}}delete $o.mode;var Lo={Transition:Ao,TransitionGroup:{props:$o,beforeMount:function(){var t=this,e=this._update;this._update=function(n,r){var o=Qe(t);t.__patch__(t._vnode,t.kept,!1,!0),t._vnode=t.kept,o(),e.call(t,n,r)}},render:function(t){for(var e=this.tag||this.$vnode.data.tag||"span",n=Object.create(null),r=this.prevChildren=this.children,o=this.$slots.default||[],i=this.children=[],a=jo(this),u=0;u-1?Xn[t]=e.constructor===window.HTMLUnknownElement||e.constructor===window.HTMLElement:Xn[t]=/HTMLUnknownElement/.test(e.toString())},P(Sn.options.directives,xo),P(Sn.options.components,Lo),Sn.prototype.__patch__=G?fo:L,Sn.prototype.$mount=function(t,e){return function(t,e,n){var r;return t.$el=e,t.$options.render||(t.$options.render=gt),en(t,"beforeMount"),r=function(){t._update(t._render(),n)},new dn(t,r,L,{before:function(){t._isMounted&&!t._isDestroyed&&en(t,"beforeUpdate")}},!0),n=!1,null==t.$vnode&&(t._isMounted=!0,en(t,"mounted")),t}(this,t=t&&G?function(t){if("string"==typeof t){var e=document.querySelector(t);return e||document.createElement("div")}return t}(t):void 0,e)},G&&setTimeout((function(){B.devtools&&at&&at.emit("init",Sn)}),0);var Ro=Sn; /*! * vue-router v3.5.1 * (c) 2021 Evan You * @license MIT - */function Io(t,e){for(var n in e)t[n]=e[n];return t}var Mo=/[!'()*]/g,No=function(t){return"%"+t.charCodeAt(0).toString(16)},Do=/%2C/g,Fo=function(t){return encodeURIComponent(t).replace(Mo,No).replace(Do,",")};function Uo(t){try{return decodeURIComponent(t)}catch(t){0}return t}var Bo=function(t){return null==t||"object"==typeof t?t:String(t)};function zo(t){var e={};return(t=t.trim().replace(/^(\?|#|&)/,""))?(t.split("&").forEach((function(t){var n=t.replace(/\+/g," ").split("="),r=Uo(n.shift()),o=n.length>0?Uo(n.join("=")):null;void 0===e[r]?e[r]=o:Array.isArray(e[r])?e[r].push(o):e[r]=[e[r],o]})),e):e}function qo(t){var e=t?Object.keys(t).map((function(e){var n=t[e];if(void 0===n)return"";if(null===n)return Fo(e);if(Array.isArray(n)){var r=[];return n.forEach((function(t){void 0!==t&&(null===t?r.push(Fo(e)):r.push(Fo(e)+"="+Fo(t)))})),r.join("&")}return Fo(e)+"="+Fo(n)})).filter((function(t){return t.length>0})).join("&"):null;return e?"?"+e:""}var Vo=/\/?$/;function Ho(t,e,n,r){var o=r&&r.options.stringifyQuery,i=e.query||{};try{i=Wo(i)}catch(t){}var a={name:e.name||t&&t.name,meta:t&&t.meta||{},path:e.path||"/",hash:e.hash||"",query:i,params:e.params||{},fullPath:Jo(e,o),matched:t?Ko(t):[]};return n&&(a.redirectedFrom=Jo(n,o)),Object.freeze(a)}function Wo(t){if(Array.isArray(t))return t.map(Wo);if(t&&"object"==typeof t){var e={};for(var n in t)e[n]=Wo(t[n]);return e}return t}var Go=Ho(null,{path:"/"});function Ko(t){for(var e=[];t;)e.unshift(t),t=t.parent;return e}function Jo(t,e){var n=t.path,r=t.query;void 0===r&&(r={});var o=t.hash;return void 0===o&&(o=""),(n||"/")+(e||qo)(r)+o}function Xo(t,e,n){return e===Go?t===e:!!e&&(t.path&&e.path?t.path.replace(Vo,"")===e.path.replace(Vo,"")&&(n||t.hash===e.hash&&Yo(t.query,e.query)):!(!t.name||!e.name)&&(t.name===e.name&&(n||t.hash===e.hash&&Yo(t.query,e.query)&&Yo(t.params,e.params))))}function Yo(t,e){if(void 0===t&&(t={}),void 0===e&&(e={}),!t||!e)return t===e;var n=Object.keys(t).sort(),r=Object.keys(e).sort();return n.length===r.length&&n.every((function(n,o){var i=t[n];if(r[o]!==n)return!1;var a=e[n];return null==i||null==a?i===a:"object"==typeof i&&"object"==typeof a?Yo(i,a):String(i)===String(a)}))}function Qo(t){for(var e=0;e=0&&(e=t.slice(r),t=t.slice(0,r));var o=t.indexOf("?");return o>=0&&(n=t.slice(o+1),t=t.slice(0,o)),{path:t,query:n,hash:e}}(o.path||""),s=e&&e.path||"/",f=c.path?ei(c.path,s,n||o.append):s,l=function(t,e,n){void 0===e&&(e={});var r,o=n||zo;try{r=o(t||"")}catch(t){r={}}for(var i in e){var a=e[i];r[i]=Array.isArray(a)?a.map(Bo):Bo(a)}return r}(c.query,o.query,r&&r.options.parseQuery),p=o.hash||c.hash;return p&&"#"!==p.charAt(0)&&(p="#"+p),{_normalized:!0,path:f,query:l,hash:p}}var wi,Oi=function(){},ji={name:"RouterLink",props:{to:{type:[String,Object],required:!0},tag:{type:String,default:"a"},custom:Boolean,exact:Boolean,exactPath:Boolean,append:Boolean,replace:Boolean,activeClass:String,exactActiveClass:String,ariaCurrentValue:{type:String,default:"page"},event:{type:[String,Array],default:"click"}},render:function(t){var e=this,n=this.$router,r=this.$route,o=n.resolve(this.to,r,this.append),i=o.location,a=o.route,u=o.href,c={},s=n.options.linkActiveClass,f=n.options.linkExactActiveClass,l=null==s?"router-link-active":s,p=null==f?"router-link-exact-active":f,d=null==this.activeClass?l:this.activeClass,h=null==this.exactActiveClass?p:this.exactActiveClass,v=a.redirectedFrom?Ho(null,xi(a.redirectedFrom),null,n):a;c[h]=Xo(r,v,this.exactPath),c[d]=this.exact||this.exactPath?c[h]:function(t,e){return 0===t.path.replace(Vo,"/").indexOf(e.path.replace(Vo,"/"))&&(!e.hash||t.hash===e.hash)&&function(t,e){for(var n in e)if(!(n in t))return!1;return!0}(t.query,e.query)}(r,v);var y=c[h]?this.ariaCurrentValue:null,m=function(t){Si(t)&&(e.replace?n.replace(i,Oi):n.push(i,Oi))},g={click:Si};Array.isArray(this.event)?this.event.forEach((function(t){g[t]=m})):g[this.event]=m;var b={class:c},_=!this.$scopedSlots.$hasNormal&&this.$scopedSlots.default&&this.$scopedSlots.default({href:u,route:a,navigate:m,isActive:c[d],isExactActive:c[h]});if(_){if(1===_.length)return _[0];if(_.length>1||!_.length)return 0===_.length?t():t("span",{},_)}if("a"===this.tag)b.on=g,b.attrs={href:u,"aria-current":y};else{var x=function t(e){var n;if(e)for(var r=0;r-1&&(u.params[p]=n.params[p]);return u.path=_i(f.path,u.params),c(f,u,a)}if(u.path){u.params={};for(var d=0;d=t.length?n():t[o]?e(t[o],(function(){r(o+1)})):r(o+1)};r(0)}var Yi={redirected:2,aborted:4,cancelled:8,duplicated:16};function Qi(t,e){return ta(t,e,Yi.redirected,'Redirected when going from "'+t.fullPath+'" to "'+function(t){if("string"==typeof t)return t;if("path"in t)return t.path;var e={};return ea.forEach((function(n){n in t&&(e[n]=t[n])})),JSON.stringify(e,null,2)}(e)+'" via a navigation guard.')}function Zi(t,e){return ta(t,e,Yi.cancelled,'Navigation cancelled from "'+t.fullPath+'" to "'+e.fullPath+'" with a new navigation.')}function ta(t,e,n,r){var o=new Error(r);return o._isRouter=!0,o.from=t,o.to=e,o.type=n,o}var ea=["params","query","hash"];function na(t){return Object.prototype.toString.call(t).indexOf("Error")>-1}function ra(t,e){return na(t)&&t._isRouter&&(null==e||t.type===e)}function oa(t){return function(e,n,r){var o=!1,i=0,a=null;ia(t,(function(t,e,n,u){if("function"==typeof t&&void 0===t.cid){o=!0,i++;var c,s=ca((function(e){var o;((o=e).__esModule||ua&&"Module"===o[Symbol.toStringTag])&&(e=e.default),t.resolved="function"==typeof e?e:wi.extend(e),n.components[u]=e,--i<=0&&r()})),f=ca((function(t){var e="Failed to resolve async component "+u+": "+t;a||(a=na(t)?t:new Error(e),r(a))}));try{c=t(s,f)}catch(t){f(t)}if(c)if("function"==typeof c.then)c.then(s,f);else{var l=c.component;l&&"function"==typeof l.then&&l.then(s,f)}}})),o||r()}}function ia(t,e){return aa(t.map((function(t){return Object.keys(t.components).map((function(n){return e(t.components[n],t.instances[n],t,n)}))})))}function aa(t){return Array.prototype.concat.apply([],t)}var ua="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag;function ca(t){var e=!1;return function(){for(var n=[],r=arguments.length;r--;)n[r]=arguments[r];if(!e)return e=!0,t.apply(this,n)}}var sa=function(t,e){this.router=t,this.base=function(t){if(!t)if(ki){var e=document.querySelector("base");t=(t=e&&e.getAttribute("href")||"/").replace(/^https?:\/\/[^\/]+/,"")}else t="/";"/"!==t.charAt(0)&&(t="/"+t);return t.replace(/\/$/,"")}(e),this.current=Go,this.pending=null,this.ready=!1,this.readyCbs=[],this.readyErrorCbs=[],this.errorCbs=[],this.listeners=[]};function fa(t,e,n,r){var o=ia(t,(function(t,r,o,i){var a=function(t,e){"function"!=typeof t&&(t=wi.extend(t));return t.options[e]}(t,e);if(a)return Array.isArray(a)?a.map((function(t){return n(t,r,o,i)})):n(a,r,o,i)}));return aa(r?o.reverse():o)}function la(t,e){if(e)return function(){return t.apply(e,arguments)}}sa.prototype.listen=function(t){this.cb=t},sa.prototype.onReady=function(t,e){this.ready?t():(this.readyCbs.push(t),e&&this.readyErrorCbs.push(e))},sa.prototype.onError=function(t){this.errorCbs.push(t)},sa.prototype.transitionTo=function(t,e,n){var r,o=this;try{r=this.router.match(t,this.current)}catch(t){throw this.errorCbs.forEach((function(e){e(t)})),t}var i=this.current;this.confirmTransition(r,(function(){o.updateRoute(r),e&&e(r),o.ensureURL(),o.router.afterHooks.forEach((function(t){t&&t(r,i)})),o.ready||(o.ready=!0,o.readyCbs.forEach((function(t){t(r)})))}),(function(t){n&&n(t),t&&!o.ready&&(ra(t,Yi.redirected)&&i===Go||(o.ready=!0,o.readyErrorCbs.forEach((function(e){e(t)}))))}))},sa.prototype.confirmTransition=function(t,e,n){var r=this,o=this.current;this.pending=t;var i,a,u=function(t){!ra(t)&&na(t)&&(r.errorCbs.length?r.errorCbs.forEach((function(e){e(t)})):console.error(t)),n&&n(t)},c=t.matched.length-1,s=o.matched.length-1;if(Xo(t,o)&&c===s&&t.matched[c]===o.matched[s])return this.ensureURL(),u(((a=ta(i=o,t,Yi.duplicated,'Avoided redundant navigation to current location: "'+i.fullPath+'".')).name="NavigationDuplicated",a));var f=function(t,e){var n,r=Math.max(t.length,e.length);for(n=0;n0)){var e=this.router,n=e.options.scrollBehavior,r=Gi&&n;r&&this.listeners.push(Ni());var o=function(){var n=t.current,o=da(t.base);t.current===Go&&o===t._startLocation||t.transitionTo(o,(function(t){r&&Di(e,t,n,!0)}))};window.addEventListener("popstate",o),this.listeners.push((function(){window.removeEventListener("popstate",o)}))}},e.prototype.go=function(t){window.history.go(t)},e.prototype.push=function(t,e,n){var r=this,o=this.current;this.transitionTo(t,(function(t){Ki(ni(r.base+t.fullPath)),Di(r.router,t,o,!1),e&&e(t)}),n)},e.prototype.replace=function(t,e,n){var r=this,o=this.current;this.transitionTo(t,(function(t){Ji(ni(r.base+t.fullPath)),Di(r.router,t,o,!1),e&&e(t)}),n)},e.prototype.ensureURL=function(t){if(da(this.base)!==this.current.fullPath){var e=ni(this.base+this.current.fullPath);t?Ki(e):Ji(e)}},e.prototype.getCurrentLocation=function(){return da(this.base)},e}(sa);function da(t){var e=window.location.pathname;return t&&0===e.toLowerCase().indexOf(t.toLowerCase())&&(e=e.slice(t.length)),(e||"/")+window.location.search+window.location.hash}var ha=function(t){function e(e,n,r){t.call(this,e,n),r&&function(t){var e=da(t);if(!/^\/#/.test(e))return window.location.replace(ni(t+"/#"+e)),!0}(this.base)||va()}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.setupListeners=function(){var t=this;if(!(this.listeners.length>0)){var e=this.router.options.scrollBehavior,n=Gi&&e;n&&this.listeners.push(Ni());var r=function(){var e=t.current;va()&&t.transitionTo(ya(),(function(r){n&&Di(t.router,r,e,!0),Gi||ba(r.fullPath)}))},o=Gi?"popstate":"hashchange";window.addEventListener(o,r),this.listeners.push((function(){window.removeEventListener(o,r)}))}},e.prototype.push=function(t,e,n){var r=this,o=this.current;this.transitionTo(t,(function(t){ga(t.fullPath),Di(r.router,t,o,!1),e&&e(t)}),n)},e.prototype.replace=function(t,e,n){var r=this,o=this.current;this.transitionTo(t,(function(t){ba(t.fullPath),Di(r.router,t,o,!1),e&&e(t)}),n)},e.prototype.go=function(t){window.history.go(t)},e.prototype.ensureURL=function(t){var e=this.current.fullPath;ya()!==e&&(t?ga(e):ba(e))},e.prototype.getCurrentLocation=function(){return ya()},e}(sa);function va(){var t=ya();return"/"===t.charAt(0)||(ba("/"+t),!1)}function ya(){var t=window.location.href,e=t.indexOf("#");return e<0?"":t=t.slice(e+1)}function ma(t){var e=window.location.href,n=e.indexOf("#");return(n>=0?e.slice(0,n):e)+"#"+t}function ga(t){Gi?Ki(ma(t)):window.location.hash=t}function ba(t){Gi?Ji(ma(t)):window.location.replace(ma(t))}var _a=function(t){function e(e,n){t.call(this,e,n),this.stack=[],this.index=-1}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.push=function(t,e,n){var r=this;this.transitionTo(t,(function(t){r.stack=r.stack.slice(0,r.index+1).concat(t),r.index++,e&&e(t)}),n)},e.prototype.replace=function(t,e,n){var r=this;this.transitionTo(t,(function(t){r.stack=r.stack.slice(0,r.index).concat(t),e&&e(t)}),n)},e.prototype.go=function(t){var e=this,n=this.index+t;if(!(n<0||n>=this.stack.length)){var r=this.stack[n];this.confirmTransition(r,(function(){var t=e.current;e.index=n,e.updateRoute(r),e.router.afterHooks.forEach((function(e){e&&e(r,t)}))}),(function(t){ra(t,Yi.duplicated)&&(e.index=n)}))}},e.prototype.getCurrentLocation=function(){var t=this.stack[this.stack.length-1];return t?t.fullPath:"/"},e.prototype.ensureURL=function(){},e}(sa),xa=function(t){void 0===t&&(t={}),this.app=null,this.apps=[],this.options=t,this.beforeHooks=[],this.resolveHooks=[],this.afterHooks=[],this.matcher=$i(t.routes||[],this);var e=t.mode||"hash";switch(this.fallback="history"===e&&!Gi&&!1!==t.fallback,this.fallback&&(e="hash"),ki||(e="abstract"),this.mode=e,e){case"history":this.history=new pa(this,t.base);break;case"hash":this.history=new ha(this,t.base,this.fallback);break;case"abstract":this.history=new _a(this,t.base);break;default:0}},wa={currentRoute:{configurable:!0}};function Oa(t,e){return t.push(e),function(){var n=t.indexOf(e);n>-1&&t.splice(n,1)}}xa.prototype.match=function(t,e,n){return this.matcher.match(t,e,n)},wa.currentRoute.get=function(){return this.history&&this.history.current},xa.prototype.init=function(t){var e=this;if(this.apps.push(t),t.$once("hook:destroyed",(function(){var n=e.apps.indexOf(t);n>-1&&e.apps.splice(n,1),e.app===t&&(e.app=e.apps[0]||null),e.app||e.history.teardown()})),!this.app){this.app=t;var n=this.history;if(n instanceof pa||n instanceof ha){var r=function(t){n.setupListeners(),function(t){var r=n.current,o=e.options.scrollBehavior;Gi&&o&&"fullPath"in t&&Di(e,t,r,!1)}(t)};n.transitionTo(n.getCurrentLocation(),r,r)}n.listen((function(t){e.apps.forEach((function(e){e._route=t}))}))}},xa.prototype.beforeEach=function(t){return Oa(this.beforeHooks,t)},xa.prototype.beforeResolve=function(t){return Oa(this.resolveHooks,t)},xa.prototype.afterEach=function(t){return Oa(this.afterHooks,t)},xa.prototype.onReady=function(t,e){this.history.onReady(t,e)},xa.prototype.onError=function(t){this.history.onError(t)},xa.prototype.push=function(t,e,n){var r=this;if(!e&&!n&&"undefined"!=typeof Promise)return new Promise((function(e,n){r.history.push(t,e,n)}));this.history.push(t,e,n)},xa.prototype.replace=function(t,e,n){var r=this;if(!e&&!n&&"undefined"!=typeof Promise)return new Promise((function(e,n){r.history.replace(t,e,n)}));this.history.replace(t,e,n)},xa.prototype.go=function(t){this.history.go(t)},xa.prototype.back=function(){this.go(-1)},xa.prototype.forward=function(){this.go(1)},xa.prototype.getMatchedComponents=function(t){var e=t?t.matched?t:this.resolve(t).route:this.currentRoute;return e?[].concat.apply([],e.matched.map((function(t){return Object.keys(t.components).map((function(e){return t.components[e]}))}))):[]},xa.prototype.resolve=function(t,e,n){var r=xi(t,e=e||this.history.current,n,this),o=this.match(r,e),i=o.redirectedFrom||o.fullPath;return{location:r,route:o,href:function(t,e,n){var r="hash"===n?"#"+e:e;return t?ni(t+"/"+r):r}(this.history.base,i,this.mode),normalizedTo:r,resolved:o}},xa.prototype.getRoutes=function(){return this.matcher.getRoutes()},xa.prototype.addRoute=function(t,e){this.matcher.addRoute(t,e),this.history.current!==Go&&this.history.transitionTo(this.history.getCurrentLocation())},xa.prototype.addRoutes=function(t){this.matcher.addRoutes(t),this.history.current!==Go&&this.history.transitionTo(this.history.getCurrentLocation())},Object.defineProperties(xa.prototype,wa),xa.install=function t(e){if(!t.installed||wi!==e){t.installed=!0,wi=e;var n=function(t){return void 0!==t},r=function(t,e){var r=t.$options._parentVnode;n(r)&&n(r=r.data)&&n(r=r.registerRouteInstance)&&r(t,e)};e.mixin({beforeCreate:function(){n(this.$options.router)?(this._routerRoot=this,this._router=this.$options.router,this._router.init(this),e.util.defineReactive(this,"_route",this._router.history.current)):this._routerRoot=this.$parent&&this.$parent._routerRoot||this,r(this,this)},destroyed:function(){r(this)}}),Object.defineProperty(e.prototype,"$router",{get:function(){return this._routerRoot._router}}),Object.defineProperty(e.prototype,"$route",{get:function(){return this._routerRoot._route}}),e.component("RouterView",Zo),e.component("RouterLink",ji);var o=e.config.optionMergeStrategies;o.beforeRouteEnter=o.beforeRouteLeave=o.beforeRouteUpdate=o.created}},xa.version="3.5.1",xa.isNavigationFailure=ra,xa.NavigationFailureType=Yi,xa.START_LOCATION=Go,ki&&window.Vue&&window.Vue.use(xa);var ja=xa;n(184),n(185),n(186),n(89),n(188),n(90),n(91),n(189);function Sa(t){t.locales&&Object.keys(t.locales).forEach((function(e){t.locales[e].path=e})),Object.freeze(t)}function ka(t){return(ka="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var Ea=n(39),Aa=(n(191),n(60),n(42),n(158),n(159),{NotFound:function(){return n.e(6).then(n.bind(null,350))},Layout:function(){return Promise.all([n.e(0),n.e(2)]).then(n.bind(null,349))}}),$a={"v-3fa1b7ce":function(){return n.e(7).then(n.bind(null,353))},"v-16f7bd48":function(){return n.e(8).then(n.bind(null,354))},"v-5913b2cf":function(){return n.e(10).then(n.bind(null,355))},"v-bc6841f2":function(){return n.e(13).then(n.bind(null,356))},"v-6b88b63a":function(){return n.e(14).then(n.bind(null,357))},"v-6ded6695":function(){return n.e(15).then(n.bind(null,358))},"v-4cd21123":function(){return n.e(9).then(n.bind(null,359))},"v-5cdd9b6a":function(){return n.e(17).then(n.bind(null,360))},"v-6d3d3ba1":function(){return n.e(18).then(n.bind(null,361))},"v-2491f01e":function(){return n.e(16).then(n.bind(null,362))},"v-39e74116":function(){return n.e(19).then(n.bind(null,363))},"v-42f24c35":function(){return n.e(21).then(n.bind(null,364))},"v-a9bbe4d4":function(){return n.e(22).then(n.bind(null,365))},"v-18390f56":function(){return n.e(23).then(n.bind(null,366))},"v-430c31fa":function(){return n.e(25).then(n.bind(null,367))},"v-22c07ce2":function(){return n.e(11).then(n.bind(null,368))},"v-2c1891b5":function(){return n.e(26).then(n.bind(null,369))},"v-5e0aaaf5":function(){return n.e(27).then(n.bind(null,370))},"v-2173826d":function(){return n.e(28).then(n.bind(null,371))},"v-5e6a771d":function(){return n.e(24).then(n.bind(null,372))},"v-f75119d2":function(){return n.e(12).then(n.bind(null,373))},"v-065c0076":function(){return n.e(20).then(n.bind(null,374))}};function Ca(t){var e=Object.create(null);return function(n){return e[n]||(e[n]=t(n))}}var Pa=/-(\w)/g,Ta=Ca((function(t){return t.replace(Pa,(function(t,e){return e?e.toUpperCase():""}))})),La=/\B([A-Z])/g,Ra=Ca((function(t){return t.replace(La,"-$1").toLowerCase()})),Ia=Ca((function(t){return t.charAt(0).toUpperCase()+t.slice(1)}));function Ma(t,e){if(e)return t(e)?t(e):e.includes("-")?t(Ia(Ta(e))):t(Ia(e))||t(Ra(e))}var Na=Object.assign({},Aa,$a),Da=function(t){return Na[t]},Fa=function(t){return $a[t]},Ua=function(t){return Aa[t]},Ba=function(t){return Ro.component(t)};function za(t){return Ma(Fa,t)}function qa(t){return Ma(Ua,t)}function Va(t){return Ma(Da,t)}function Ha(t){return Ma(Ba,t)}function Wa(){for(var t=arguments.length,e=new Array(t),n=0;n"})).join("\n "):"",this.$ssrContext.canonicalLink=tu(this.$canonicalUrl)}var e},mounted:function(){this.currentMetaTags=Object(Ea.a)(document.querySelectorAll("meta")),this.updateMeta(),this.updateCanonicalLink()},methods:{updateMeta:function(){document.title=this.$title,document.documentElement.lang=this.$lang;var t=this.getMergedMetaTags();this.currentMetaTags=eu(t,this.currentMetaTags)},getMergedMetaTags:function(){var t=this.$page.frontmatter.meta||[];return Ya()([{name:"description",content:this.$description}],t,this.siteMeta,nu)},updateCanonicalLink:function(){Za(),this.$canonicalUrl&&document.head.insertAdjacentHTML("beforeend",tu(this.$canonicalUrl))}},watch:{$page:function(){this.updateMeta(),this.updateCanonicalLink()}},beforeDestroy:function(){eu(null,this.currentMetaTags),Za()}};function Za(){var t=document.querySelector("link[rel='canonical']");t&&t.remove()}function tu(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return t?''):""}function eu(t,e){if(e&&Object(Ea.a)(e).filter((function(t){return t.parentNode===document.head})).forEach((function(t){return document.head.removeChild(t)})),t)return t.map((function(t){var e=document.createElement("meta");return Object.keys(t).forEach((function(n){e.setAttribute(n,t[n])})),document.head.appendChild(e),e}))}function nu(t){for(var e=0,n=["name","property","itemprop"];e=u.parentElement.offsetTop+10&&(!c||r2&&void 0!==arguments[2]?arguments[2]:Ro;Sa(e),n.$vuepress.$set("siteData",e);var r=t(n.$vuepress.$get("siteData")),o=new r,i=Object.getOwnPropertyDescriptors(Object.getPrototypeOf(o)),a={};return Object.keys(i).reduce((function(t,e){return e.startsWith("$")&&(t[e]=i[e].get),t}),a),{computed:a}}((function(t){return function(){function e(){vu(this,e)}return mu(e,[{key:"setPage",value:function(t){this.__page=t}},{key:"$site",get:function(){return t}},{key:"$themeConfig",get:function(){return this.$site.themeConfig}},{key:"$frontmatter",get:function(){return this.$page.frontmatter}},{key:"$localeConfig",get:function(){var t,e,n=this.$site.locales,r=void 0===n?{}:n;for(var o in r)"/"===o?e=r[o]:0===this.$page.path.indexOf(o)&&(t=r[o]);return t||e||{}}},{key:"$siteTitle",get:function(){return this.$localeConfig.title||this.$site.title||""}},{key:"$canonicalUrl",get:function(){var t=this.$page.frontmatter.canonicalUrl;return"string"==typeof t&&t}},{key:"$title",get:function(){var t=this.$page,e=this.$page.frontmatter.metaTitle;if("string"==typeof e)return e;var n=this.$siteTitle,r=t.frontmatter.home?null:t.frontmatter.title||t.title;return n?r?r+" | "+n:n:r||"VuePress"}},{key:"$description",get:function(){var t=function(t){if(t){var e=t.filter((function(t){return"description"===t.name}))[0];if(e)return e.content}}(this.$page.frontmatter.meta);return t||(this.$page.frontmatter.description||this.$localeConfig.description||this.$site.description||"")}},{key:"$lang",get:function(){return this.$page.frontmatter.lang||this.$localeConfig.lang||"en-US"}},{key:"$localePath",get:function(){return this.$localeConfig.path||"/"}},{key:"$themeLocaleConfig",get:function(){return(this.$site.themeConfig.locales||{})[this.$localePath]||{}}},{key:"$page",get:function(){return this.__page?this.__page:function(t,e){for(var n=0;n=0&&(e=t.slice(r),t=t.slice(0,r));var o=t.indexOf("?");return o>=0&&(n=t.slice(o+1),t=t.slice(0,o)),{path:t,query:n,hash:e}}(o.path||""),s=e&&e.path||"/",f=c.path?ei(c.path,s,n||o.append):s,l=function(t,e,n){void 0===e&&(e={});var r,o=n||zo;try{r=o(t||"")}catch(t){r={}}for(var i in e){var a=e[i];r[i]=Array.isArray(a)?a.map(Bo):Bo(a)}return r}(c.query,o.query,r&&r.options.parseQuery),p=o.hash||c.hash;return p&&"#"!==p.charAt(0)&&(p="#"+p),{_normalized:!0,path:f,query:l,hash:p}}var wi,Oi=function(){},ji={name:"RouterLink",props:{to:{type:[String,Object],required:!0},tag:{type:String,default:"a"},custom:Boolean,exact:Boolean,exactPath:Boolean,append:Boolean,replace:Boolean,activeClass:String,exactActiveClass:String,ariaCurrentValue:{type:String,default:"page"},event:{type:[String,Array],default:"click"}},render:function(t){var e=this,n=this.$router,r=this.$route,o=n.resolve(this.to,r,this.append),i=o.location,a=o.route,u=o.href,c={},s=n.options.linkActiveClass,f=n.options.linkExactActiveClass,l=null==s?"router-link-active":s,p=null==f?"router-link-exact-active":f,h=null==this.activeClass?l:this.activeClass,d=null==this.exactActiveClass?p:this.exactActiveClass,v=a.redirectedFrom?Ho(null,xi(a.redirectedFrom),null,n):a;c[d]=Xo(r,v,this.exactPath),c[h]=this.exact||this.exactPath?c[d]:function(t,e){return 0===t.path.replace(Vo,"/").indexOf(e.path.replace(Vo,"/"))&&(!e.hash||t.hash===e.hash)&&function(t,e){for(var n in e)if(!(n in t))return!1;return!0}(t.query,e.query)}(r,v);var y=c[d]?this.ariaCurrentValue:null,m=function(t){Si(t)&&(e.replace?n.replace(i,Oi):n.push(i,Oi))},g={click:Si};Array.isArray(this.event)?this.event.forEach((function(t){g[t]=m})):g[this.event]=m;var b={class:c},_=!this.$scopedSlots.$hasNormal&&this.$scopedSlots.default&&this.$scopedSlots.default({href:u,route:a,navigate:m,isActive:c[h],isExactActive:c[d]});if(_){if(1===_.length)return _[0];if(_.length>1||!_.length)return 0===_.length?t():t("span",{},_)}if("a"===this.tag)b.on=g,b.attrs={href:u,"aria-current":y};else{var x=function t(e){var n;if(e)for(var r=0;r-1&&(u.params[p]=n.params[p]);return u.path=_i(f.path,u.params),c(f,u,a)}if(u.path){u.params={};for(var h=0;h=t.length?n():t[o]?e(t[o],(function(){r(o+1)})):r(o+1)};r(0)}var Yi={redirected:2,aborted:4,cancelled:8,duplicated:16};function Qi(t,e){return ta(t,e,Yi.redirected,'Redirected when going from "'+t.fullPath+'" to "'+function(t){if("string"==typeof t)return t;if("path"in t)return t.path;var e={};return ea.forEach((function(n){n in t&&(e[n]=t[n])})),JSON.stringify(e,null,2)}(e)+'" via a navigation guard.')}function Zi(t,e){return ta(t,e,Yi.cancelled,'Navigation cancelled from "'+t.fullPath+'" to "'+e.fullPath+'" with a new navigation.')}function ta(t,e,n,r){var o=new Error(r);return o._isRouter=!0,o.from=t,o.to=e,o.type=n,o}var ea=["params","query","hash"];function na(t){return Object.prototype.toString.call(t).indexOf("Error")>-1}function ra(t,e){return na(t)&&t._isRouter&&(null==e||t.type===e)}function oa(t){return function(e,n,r){var o=!1,i=0,a=null;ia(t,(function(t,e,n,u){if("function"==typeof t&&void 0===t.cid){o=!0,i++;var c,s=ca((function(e){var o;((o=e).__esModule||ua&&"Module"===o[Symbol.toStringTag])&&(e=e.default),t.resolved="function"==typeof e?e:wi.extend(e),n.components[u]=e,--i<=0&&r()})),f=ca((function(t){var e="Failed to resolve async component "+u+": "+t;a||(a=na(t)?t:new Error(e),r(a))}));try{c=t(s,f)}catch(t){f(t)}if(c)if("function"==typeof c.then)c.then(s,f);else{var l=c.component;l&&"function"==typeof l.then&&l.then(s,f)}}})),o||r()}}function ia(t,e){return aa(t.map((function(t){return Object.keys(t.components).map((function(n){return e(t.components[n],t.instances[n],t,n)}))})))}function aa(t){return Array.prototype.concat.apply([],t)}var ua="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag;function ca(t){var e=!1;return function(){for(var n=[],r=arguments.length;r--;)n[r]=arguments[r];if(!e)return e=!0,t.apply(this,n)}}var sa=function(t,e){this.router=t,this.base=function(t){if(!t)if(ki){var e=document.querySelector("base");t=(t=e&&e.getAttribute("href")||"/").replace(/^https?:\/\/[^\/]+/,"")}else t="/";"/"!==t.charAt(0)&&(t="/"+t);return t.replace(/\/$/,"")}(e),this.current=Go,this.pending=null,this.ready=!1,this.readyCbs=[],this.readyErrorCbs=[],this.errorCbs=[],this.listeners=[]};function fa(t,e,n,r){var o=ia(t,(function(t,r,o,i){var a=function(t,e){"function"!=typeof t&&(t=wi.extend(t));return t.options[e]}(t,e);if(a)return Array.isArray(a)?a.map((function(t){return n(t,r,o,i)})):n(a,r,o,i)}));return aa(r?o.reverse():o)}function la(t,e){if(e)return function(){return t.apply(e,arguments)}}sa.prototype.listen=function(t){this.cb=t},sa.prototype.onReady=function(t,e){this.ready?t():(this.readyCbs.push(t),e&&this.readyErrorCbs.push(e))},sa.prototype.onError=function(t){this.errorCbs.push(t)},sa.prototype.transitionTo=function(t,e,n){var r,o=this;try{r=this.router.match(t,this.current)}catch(t){throw this.errorCbs.forEach((function(e){e(t)})),t}var i=this.current;this.confirmTransition(r,(function(){o.updateRoute(r),e&&e(r),o.ensureURL(),o.router.afterHooks.forEach((function(t){t&&t(r,i)})),o.ready||(o.ready=!0,o.readyCbs.forEach((function(t){t(r)})))}),(function(t){n&&n(t),t&&!o.ready&&(ra(t,Yi.redirected)&&i===Go||(o.ready=!0,o.readyErrorCbs.forEach((function(e){e(t)}))))}))},sa.prototype.confirmTransition=function(t,e,n){var r=this,o=this.current;this.pending=t;var i,a,u=function(t){!ra(t)&&na(t)&&(r.errorCbs.length?r.errorCbs.forEach((function(e){e(t)})):console.error(t)),n&&n(t)},c=t.matched.length-1,s=o.matched.length-1;if(Xo(t,o)&&c===s&&t.matched[c]===o.matched[s])return this.ensureURL(),u(((a=ta(i=o,t,Yi.duplicated,'Avoided redundant navigation to current location: "'+i.fullPath+'".')).name="NavigationDuplicated",a));var f=function(t,e){var n,r=Math.max(t.length,e.length);for(n=0;n0)){var e=this.router,n=e.options.scrollBehavior,r=Gi&&n;r&&this.listeners.push(Ni());var o=function(){var n=t.current,o=ha(t.base);t.current===Go&&o===t._startLocation||t.transitionTo(o,(function(t){r&&Di(e,t,n,!0)}))};window.addEventListener("popstate",o),this.listeners.push((function(){window.removeEventListener("popstate",o)}))}},e.prototype.go=function(t){window.history.go(t)},e.prototype.push=function(t,e,n){var r=this,o=this.current;this.transitionTo(t,(function(t){Ki(ni(r.base+t.fullPath)),Di(r.router,t,o,!1),e&&e(t)}),n)},e.prototype.replace=function(t,e,n){var r=this,o=this.current;this.transitionTo(t,(function(t){Ji(ni(r.base+t.fullPath)),Di(r.router,t,o,!1),e&&e(t)}),n)},e.prototype.ensureURL=function(t){if(ha(this.base)!==this.current.fullPath){var e=ni(this.base+this.current.fullPath);t?Ki(e):Ji(e)}},e.prototype.getCurrentLocation=function(){return ha(this.base)},e}(sa);function ha(t){var e=window.location.pathname;return t&&0===e.toLowerCase().indexOf(t.toLowerCase())&&(e=e.slice(t.length)),(e||"/")+window.location.search+window.location.hash}var da=function(t){function e(e,n,r){t.call(this,e,n),r&&function(t){var e=ha(t);if(!/^\/#/.test(e))return window.location.replace(ni(t+"/#"+e)),!0}(this.base)||va()}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.setupListeners=function(){var t=this;if(!(this.listeners.length>0)){var e=this.router.options.scrollBehavior,n=Gi&&e;n&&this.listeners.push(Ni());var r=function(){var e=t.current;va()&&t.transitionTo(ya(),(function(r){n&&Di(t.router,r,e,!0),Gi||ba(r.fullPath)}))},o=Gi?"popstate":"hashchange";window.addEventListener(o,r),this.listeners.push((function(){window.removeEventListener(o,r)}))}},e.prototype.push=function(t,e,n){var r=this,o=this.current;this.transitionTo(t,(function(t){ga(t.fullPath),Di(r.router,t,o,!1),e&&e(t)}),n)},e.prototype.replace=function(t,e,n){var r=this,o=this.current;this.transitionTo(t,(function(t){ba(t.fullPath),Di(r.router,t,o,!1),e&&e(t)}),n)},e.prototype.go=function(t){window.history.go(t)},e.prototype.ensureURL=function(t){var e=this.current.fullPath;ya()!==e&&(t?ga(e):ba(e))},e.prototype.getCurrentLocation=function(){return ya()},e}(sa);function va(){var t=ya();return"/"===t.charAt(0)||(ba("/"+t),!1)}function ya(){var t=window.location.href,e=t.indexOf("#");return e<0?"":t=t.slice(e+1)}function ma(t){var e=window.location.href,n=e.indexOf("#");return(n>=0?e.slice(0,n):e)+"#"+t}function ga(t){Gi?Ki(ma(t)):window.location.hash=t}function ba(t){Gi?Ji(ma(t)):window.location.replace(ma(t))}var _a=function(t){function e(e,n){t.call(this,e,n),this.stack=[],this.index=-1}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.push=function(t,e,n){var r=this;this.transitionTo(t,(function(t){r.stack=r.stack.slice(0,r.index+1).concat(t),r.index++,e&&e(t)}),n)},e.prototype.replace=function(t,e,n){var r=this;this.transitionTo(t,(function(t){r.stack=r.stack.slice(0,r.index).concat(t),e&&e(t)}),n)},e.prototype.go=function(t){var e=this,n=this.index+t;if(!(n<0||n>=this.stack.length)){var r=this.stack[n];this.confirmTransition(r,(function(){var t=e.current;e.index=n,e.updateRoute(r),e.router.afterHooks.forEach((function(e){e&&e(r,t)}))}),(function(t){ra(t,Yi.duplicated)&&(e.index=n)}))}},e.prototype.getCurrentLocation=function(){var t=this.stack[this.stack.length-1];return t?t.fullPath:"/"},e.prototype.ensureURL=function(){},e}(sa),xa=function(t){void 0===t&&(t={}),this.app=null,this.apps=[],this.options=t,this.beforeHooks=[],this.resolveHooks=[],this.afterHooks=[],this.matcher=$i(t.routes||[],this);var e=t.mode||"hash";switch(this.fallback="history"===e&&!Gi&&!1!==t.fallback,this.fallback&&(e="hash"),ki||(e="abstract"),this.mode=e,e){case"history":this.history=new pa(this,t.base);break;case"hash":this.history=new da(this,t.base,this.fallback);break;case"abstract":this.history=new _a(this,t.base);break;default:0}},wa={currentRoute:{configurable:!0}};function Oa(t,e){return t.push(e),function(){var n=t.indexOf(e);n>-1&&t.splice(n,1)}}xa.prototype.match=function(t,e,n){return this.matcher.match(t,e,n)},wa.currentRoute.get=function(){return this.history&&this.history.current},xa.prototype.init=function(t){var e=this;if(this.apps.push(t),t.$once("hook:destroyed",(function(){var n=e.apps.indexOf(t);n>-1&&e.apps.splice(n,1),e.app===t&&(e.app=e.apps[0]||null),e.app||e.history.teardown()})),!this.app){this.app=t;var n=this.history;if(n instanceof pa||n instanceof da){var r=function(t){n.setupListeners(),function(t){var r=n.current,o=e.options.scrollBehavior;Gi&&o&&"fullPath"in t&&Di(e,t,r,!1)}(t)};n.transitionTo(n.getCurrentLocation(),r,r)}n.listen((function(t){e.apps.forEach((function(e){e._route=t}))}))}},xa.prototype.beforeEach=function(t){return Oa(this.beforeHooks,t)},xa.prototype.beforeResolve=function(t){return Oa(this.resolveHooks,t)},xa.prototype.afterEach=function(t){return Oa(this.afterHooks,t)},xa.prototype.onReady=function(t,e){this.history.onReady(t,e)},xa.prototype.onError=function(t){this.history.onError(t)},xa.prototype.push=function(t,e,n){var r=this;if(!e&&!n&&"undefined"!=typeof Promise)return new Promise((function(e,n){r.history.push(t,e,n)}));this.history.push(t,e,n)},xa.prototype.replace=function(t,e,n){var r=this;if(!e&&!n&&"undefined"!=typeof Promise)return new Promise((function(e,n){r.history.replace(t,e,n)}));this.history.replace(t,e,n)},xa.prototype.go=function(t){this.history.go(t)},xa.prototype.back=function(){this.go(-1)},xa.prototype.forward=function(){this.go(1)},xa.prototype.getMatchedComponents=function(t){var e=t?t.matched?t:this.resolve(t).route:this.currentRoute;return e?[].concat.apply([],e.matched.map((function(t){return Object.keys(t.components).map((function(e){return t.components[e]}))}))):[]},xa.prototype.resolve=function(t,e,n){var r=xi(t,e=e||this.history.current,n,this),o=this.match(r,e),i=o.redirectedFrom||o.fullPath;return{location:r,route:o,href:function(t,e,n){var r="hash"===n?"#"+e:e;return t?ni(t+"/"+r):r}(this.history.base,i,this.mode),normalizedTo:r,resolved:o}},xa.prototype.getRoutes=function(){return this.matcher.getRoutes()},xa.prototype.addRoute=function(t,e){this.matcher.addRoute(t,e),this.history.current!==Go&&this.history.transitionTo(this.history.getCurrentLocation())},xa.prototype.addRoutes=function(t){this.matcher.addRoutes(t),this.history.current!==Go&&this.history.transitionTo(this.history.getCurrentLocation())},Object.defineProperties(xa.prototype,wa),xa.install=function t(e){if(!t.installed||wi!==e){t.installed=!0,wi=e;var n=function(t){return void 0!==t},r=function(t,e){var r=t.$options._parentVnode;n(r)&&n(r=r.data)&&n(r=r.registerRouteInstance)&&r(t,e)};e.mixin({beforeCreate:function(){n(this.$options.router)?(this._routerRoot=this,this._router=this.$options.router,this._router.init(this),e.util.defineReactive(this,"_route",this._router.history.current)):this._routerRoot=this.$parent&&this.$parent._routerRoot||this,r(this,this)},destroyed:function(){r(this)}}),Object.defineProperty(e.prototype,"$router",{get:function(){return this._routerRoot._router}}),Object.defineProperty(e.prototype,"$route",{get:function(){return this._routerRoot._route}}),e.component("RouterView",Zo),e.component("RouterLink",ji);var o=e.config.optionMergeStrategies;o.beforeRouteEnter=o.beforeRouteLeave=o.beforeRouteUpdate=o.created}},xa.version="3.5.1",xa.isNavigationFailure=ra,xa.NavigationFailureType=Yi,xa.START_LOCATION=Go,ki&&window.Vue&&window.Vue.use(xa);var ja=xa;n(184),n(185),n(186),n(89),n(188),n(90),n(91),n(189);function Sa(t){t.locales&&Object.keys(t.locales).forEach((function(e){t.locales[e].path=e})),Object.freeze(t)}function ka(t){return(ka="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var Ea=n(39),Aa=(n(191),n(60),n(42),n(158),n(159),{NotFound:function(){return n.e(6).then(n.bind(null,350))},Layout:function(){return Promise.all([n.e(0),n.e(2)]).then(n.bind(null,349))}}),$a={"v-3fa1b7ce":function(){return n.e(7).then(n.bind(null,353))},"v-16f7bd48":function(){return n.e(8).then(n.bind(null,354))},"v-4cd21123":function(){return n.e(9).then(n.bind(null,355))},"v-5913b2cf":function(){return n.e(10).then(n.bind(null,356))},"v-f75119d2":function(){return n.e(12).then(n.bind(null,357))},"v-22c07ce2":function(){return n.e(11).then(n.bind(null,358))},"v-6b88b63a":function(){return n.e(14).then(n.bind(null,359))},"v-bc6841f2":function(){return n.e(13).then(n.bind(null,360))},"v-2491f01e":function(){return n.e(16).then(n.bind(null,361))},"v-6ded6695":function(){return n.e(15).then(n.bind(null,362))},"v-5cdd9b6a":function(){return n.e(17).then(n.bind(null,363))},"v-39e74116":function(){return n.e(19).then(n.bind(null,364))},"v-6d3d3ba1":function(){return n.e(18).then(n.bind(null,365))},"v-065c0076":function(){return n.e(20).then(n.bind(null,366))},"v-42f24c35":function(){return n.e(21).then(n.bind(null,367))},"v-a9bbe4d4":function(){return n.e(22).then(n.bind(null,368))},"v-5e6a771d":function(){return n.e(24).then(n.bind(null,369))},"v-18390f56":function(){return n.e(23).then(n.bind(null,370))},"v-2c1891b5":function(){return n.e(26).then(n.bind(null,371))},"v-5e0aaaf5":function(){return n.e(27).then(n.bind(null,372))},"v-430c31fa":function(){return n.e(25).then(n.bind(null,373))},"v-2173826d":function(){return n.e(28).then(n.bind(null,374))}};function Ca(t){var e=Object.create(null);return function(n){return e[n]||(e[n]=t(n))}}var Pa=/-(\w)/g,Ta=Ca((function(t){return t.replace(Pa,(function(t,e){return e?e.toUpperCase():""}))})),La=/\B([A-Z])/g,Ra=Ca((function(t){return t.replace(La,"-$1").toLowerCase()})),Ia=Ca((function(t){return t.charAt(0).toUpperCase()+t.slice(1)}));function Ma(t,e){if(e)return t(e)?t(e):e.includes("-")?t(Ia(Ta(e))):t(Ia(e))||t(Ra(e))}var Na=Object.assign({},Aa,$a),Da=function(t){return Na[t]},Fa=function(t){return $a[t]},Ua=function(t){return Aa[t]},Ba=function(t){return Ro.component(t)};function za(t){return Ma(Fa,t)}function qa(t){return Ma(Ua,t)}function Va(t){return Ma(Da,t)}function Ha(t){return Ma(Ba,t)}function Wa(){for(var t=arguments.length,e=new Array(t),n=0;n"})).join("\n "):"",this.$ssrContext.canonicalLink=tu(this.$canonicalUrl)}var e},mounted:function(){this.currentMetaTags=Object(Ea.a)(document.querySelectorAll("meta")),this.updateMeta(),this.updateCanonicalLink()},methods:{updateMeta:function(){document.title=this.$title,document.documentElement.lang=this.$lang;var t=this.getMergedMetaTags();this.currentMetaTags=eu(t,this.currentMetaTags)},getMergedMetaTags:function(){var t=this.$page.frontmatter.meta||[];return Ya()([{name:"description",content:this.$description}],t,this.siteMeta,nu)},updateCanonicalLink:function(){Za(),this.$canonicalUrl&&document.head.insertAdjacentHTML("beforeend",tu(this.$canonicalUrl))}},watch:{$page:function(){this.updateMeta(),this.updateCanonicalLink()}},beforeDestroy:function(){eu(null,this.currentMetaTags),Za()}};function Za(){var t=document.querySelector("link[rel='canonical']");t&&t.remove()}function tu(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return t?''):""}function eu(t,e){if(e&&Object(Ea.a)(e).filter((function(t){return t.parentNode===document.head})).forEach((function(t){return document.head.removeChild(t)})),t)return t.map((function(t){var e=document.createElement("meta");return Object.keys(t).forEach((function(n){e.setAttribute(n,t[n])})),document.head.appendChild(e),e}))}function nu(t){for(var e=0,n=["name","property","itemprop"];e=u.parentElement.offsetTop+10&&(!c||r2&&void 0!==arguments[2]?arguments[2]:Ro;Sa(e),n.$vuepress.$set("siteData",e);var r=t(n.$vuepress.$get("siteData")),o=new r,i=Object.getOwnPropertyDescriptors(Object.getPrototypeOf(o)),a={};return Object.keys(i).reduce((function(t,e){return e.startsWith("$")&&(t[e]=i[e].get),t}),a),{computed:a}}((function(t){return function(){function e(){vu(this,e)}return mu(e,[{key:"setPage",value:function(t){this.__page=t}},{key:"$site",get:function(){return t}},{key:"$themeConfig",get:function(){return this.$site.themeConfig}},{key:"$frontmatter",get:function(){return this.$page.frontmatter}},{key:"$localeConfig",get:function(){var t,e,n=this.$site.locales,r=void 0===n?{}:n;for(var o in r)"/"===o?e=r[o]:0===this.$page.path.indexOf(o)&&(t=r[o]);return t||e||{}}},{key:"$siteTitle",get:function(){return this.$localeConfig.title||this.$site.title||""}},{key:"$canonicalUrl",get:function(){var t=this.$page.frontmatter.canonicalUrl;return"string"==typeof t&&t}},{key:"$title",get:function(){var t=this.$page,e=this.$page.frontmatter.metaTitle;if("string"==typeof e)return e;var n=this.$siteTitle,r=t.frontmatter.home?null:t.frontmatter.title||t.title;return n?r?r+" | "+n:n:r||"VuePress"}},{key:"$description",get:function(){var t=function(t){if(t){var e=t.filter((function(t){return"description"===t.name}))[0];if(e)return e.content}}(this.$page.frontmatter.meta);return t||(this.$page.frontmatter.description||this.$localeConfig.description||this.$site.description||"")}},{key:"$lang",get:function(){return this.$page.frontmatter.lang||this.$localeConfig.lang||"en-US"}},{key:"$localePath",get:function(){return this.$localeConfig.path||"/"}},{key:"$themeLocaleConfig",get:function(){return(this.$site.themeConfig.locales||{})[this.$localePath]||{}}},{key:"$page",get:function(){return this.__page?this.__page:function(t,e){for(var n=0;n
- + diff --git a/docs/docs/.vuepress/dist/deploy/docker.html b/docs/docs/.vuepress/dist/deploy/docker.html index a231b7d1..5f489646 100644 --- a/docs/docs/.vuepress/dist/deploy/docker.html +++ b/docs/docs/.vuepress/dist/deploy/docker.html @@ -8,8 +8,8 @@ - - + +
- + diff --git a/docs/docs/.vuepress/dist/deploy/frontend.html b/docs/docs/.vuepress/dist/deploy/frontend.html index d098fdd0..b74e3834 100644 --- a/docs/docs/.vuepress/dist/deploy/frontend.html +++ b/docs/docs/.vuepress/dist/deploy/frontend.html @@ -8,8 +8,8 @@ - - + +
- + diff --git a/docs/docs/.vuepress/dist/deploy/index.html b/docs/docs/.vuepress/dist/deploy/index.html index cafaf6b7..07687810 100644 --- a/docs/docs/.vuepress/dist/deploy/index.html +++ b/docs/docs/.vuepress/dist/deploy/index.html @@ -8,8 +8,8 @@ - - + +
- + diff --git a/docs/docs/.vuepress/dist/deploy/judgeserver.html b/docs/docs/.vuepress/dist/deploy/judgeserver.html index f59f5521..c51e073f 100644 --- a/docs/docs/.vuepress/dist/deploy/judgeserver.html +++ b/docs/docs/.vuepress/dist/deploy/judgeserver.html @@ -8,8 +8,8 @@ - - + +
- + diff --git a/docs/docs/.vuepress/dist/deploy/mysql.html b/docs/docs/.vuepress/dist/deploy/mysql.html index 48546a4d..a3c83c9f 100644 --- a/docs/docs/.vuepress/dist/deploy/mysql.html +++ b/docs/docs/.vuepress/dist/deploy/mysql.html @@ -8,8 +8,8 @@ - - + +
- + diff --git a/docs/docs/.vuepress/dist/deploy/nacos.html b/docs/docs/.vuepress/dist/deploy/nacos.html index a5d3d811..f0e3a94e 100644 --- a/docs/docs/.vuepress/dist/deploy/nacos.html +++ b/docs/docs/.vuepress/dist/deploy/nacos.html @@ -8,8 +8,8 @@ - - + +
- + diff --git a/docs/docs/.vuepress/dist/deploy/redis.html b/docs/docs/.vuepress/dist/deploy/redis.html index 8777714f..8a7747fa 100644 --- a/docs/docs/.vuepress/dist/deploy/redis.html +++ b/docs/docs/.vuepress/dist/deploy/redis.html @@ -8,8 +8,8 @@ - - + +
- + diff --git a/docs/docs/.vuepress/dist/deploy/rsync.html b/docs/docs/.vuepress/dist/deploy/rsync.html index f993de25..44a8431b 100644 --- a/docs/docs/.vuepress/dist/deploy/rsync.html +++ b/docs/docs/.vuepress/dist/deploy/rsync.html @@ -8,8 +8,8 @@ - - + +
- + diff --git a/docs/docs/.vuepress/dist/develop/db.html b/docs/docs/.vuepress/dist/develop/db.html index 4062744b..c66bb370 100644 --- a/docs/docs/.vuepress/dist/develop/db.html +++ b/docs/docs/.vuepress/dist/develop/db.html @@ -8,8 +8,8 @@ - - + +
- + diff --git a/docs/docs/.vuepress/dist/develop/index.html b/docs/docs/.vuepress/dist/develop/index.html index 8c7d0171..03914498 100644 --- a/docs/docs/.vuepress/dist/develop/index.html +++ b/docs/docs/.vuepress/dist/develop/index.html @@ -8,8 +8,8 @@ - - + +
- + diff --git a/docs/docs/.vuepress/dist/develop/sandbox.html b/docs/docs/.vuepress/dist/develop/sandbox.html index e16253ee..26db2d1c 100644 --- a/docs/docs/.vuepress/dist/develop/sandbox.html +++ b/docs/docs/.vuepress/dist/develop/sandbox.html @@ -8,8 +8,8 @@ - - + +
- + diff --git a/docs/docs/.vuepress/dist/index.html b/docs/docs/.vuepress/dist/index.html index dad5e6fb..ae286ea4 100644 --- a/docs/docs/.vuepress/dist/index.html +++ b/docs/docs/.vuepress/dist/index.html @@ -8,8 +8,8 @@ - - + +

分布式

支持多台判题服务随时增减

高效化

采用前后端分离,开发迅速,使用高性能可复用判题沙盒

定制化

网站高度集中配置,支持定制化修改

安全化

判题使用 cgroup 隔离用户程序,网站权限控制完善

多样化

独有自身判题服务,同时支持其它知名OJ题目的提交判题

- + diff --git a/docs/docs/.vuepress/dist/introducition/about.html b/docs/docs/.vuepress/dist/introducition/about.html index edfa2462..4286117b 100644 --- a/docs/docs/.vuepress/dist/introducition/about.html +++ b/docs/docs/.vuepress/dist/introducition/about.html @@ -8,8 +8,8 @@ - - + +
- + diff --git a/docs/docs/.vuepress/dist/introducition/index.html b/docs/docs/.vuepress/dist/introducition/index.html index 748695a1..2e1d02a6 100644 --- a/docs/docs/.vuepress/dist/introducition/index.html +++ b/docs/docs/.vuepress/dist/introducition/index.html @@ -8,8 +8,8 @@ - - + +
- + diff --git a/docs/docs/.vuepress/dist/use/contest.html b/docs/docs/.vuepress/dist/use/contest.html index 42793bb8..5ede219e 100644 --- a/docs/docs/.vuepress/dist/use/contest.html +++ b/docs/docs/.vuepress/dist/use/contest.html @@ -8,8 +8,8 @@ - - + +
- + diff --git a/docs/docs/.vuepress/dist/use/discussion-admin.html b/docs/docs/.vuepress/dist/use/discussion-admin.html index c01822b1..b8d23b9f 100644 --- a/docs/docs/.vuepress/dist/use/discussion-admin.html +++ b/docs/docs/.vuepress/dist/use/discussion-admin.html @@ -8,8 +8,8 @@ - - + +
- + diff --git a/docs/docs/.vuepress/dist/use/import-problem.html b/docs/docs/.vuepress/dist/use/import-problem.html index 6ef6603b..0f0c775a 100644 --- a/docs/docs/.vuepress/dist/use/import-problem.html +++ b/docs/docs/.vuepress/dist/use/import-problem.html @@ -8,8 +8,8 @@ - - + +
- + diff --git a/docs/docs/.vuepress/dist/use/import-user.html b/docs/docs/.vuepress/dist/use/import-user.html index 7b32a06a..33d6696b 100644 --- a/docs/docs/.vuepress/dist/use/import-user.html +++ b/docs/docs/.vuepress/dist/use/import-user.html @@ -8,8 +8,8 @@ - - + +
- + diff --git a/docs/docs/.vuepress/dist/use/index.html b/docs/docs/.vuepress/dist/use/index.html index a1363be9..ae57fa36 100644 --- a/docs/docs/.vuepress/dist/use/index.html +++ b/docs/docs/.vuepress/dist/use/index.html @@ -8,8 +8,8 @@ - - + +
- + diff --git a/docs/docs/.vuepress/dist/use/spj.html b/docs/docs/.vuepress/dist/use/spj.html index b741e771..1e9c89b3 100644 --- a/docs/docs/.vuepress/dist/use/spj.html +++ b/docs/docs/.vuepress/dist/use/spj.html @@ -8,8 +8,8 @@ - - + +
- + diff --git a/docs/docs/.vuepress/dist/use/testcase.html b/docs/docs/.vuepress/dist/use/testcase.html index ee95db69..7c1730ae 100644 --- a/docs/docs/.vuepress/dist/use/testcase.html +++ b/docs/docs/.vuepress/dist/use/testcase.html @@ -8,8 +8,8 @@ - - + +
- + diff --git a/docs/docs/README.md b/docs/docs/README.md index 33b7902c..a6dea79a 100644 --- a/docs/docs/README.md +++ b/docs/docs/README.md @@ -16,5 +16,5 @@ features: details: 判题使用 cgroup 隔离用户程序,网站权限控制完善 - title: 多样化 details: 独有自身判题服务,同时支持其它知名OJ题目的提交判题 -footer: MIT Licensed | Copyright © 2021.05.28 @Author Himit_ZH Email:oj.hcode@qq.com +footer: MIT Licensed | Copyright © 2021.05.28 @Author Himit_ZH QQ Group:598587305 --- \ No newline at end of file diff --git a/docs/docs/use/spj.md b/docs/docs/use/spj.md index fbf57031..4ac03e21 100644 --- a/docs/docs/use/spj.md +++ b/docs/docs/use/spj.md @@ -15,7 +15,9 @@ 在创建题目的适合,选择开启特殊判题,编写特殊判题程序,然后编译通过便可。 -> 后台对题目使用特殊判题时,请参考以下程序例子 +**注意:用户的输出数据以stdin流输入道spj程序里面,也就是可以直接用scanf或cin等获取用户的输出数据,具体形式跟用户程序的输入数据获取一样。** + +> 后台对题目使用特殊判题时,请参考以下程序例子 判断精度 ```cpp #include @@ -35,48 +37,28 @@ void close_file(FILE *f){ } int main(int argc, char *args[]){ - FILE *input; - FILE *output; - int result; - if(argc != 2){ + if(argc != 3){ return ERROR; } - int user_output; - cin>>user_output; /** input:输入 output:样例的输出 user_output:用户的输出 **/ - cout<>user_output; + if (fabs(user_output - std_out)<=1e-6) + return AC; + else + return WA; } ``` diff --git a/docs/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/1c/59/7cb7d049b18e56c7b2efe254883731d7457e8cfe0dbc6bb65f6f792955936da2ce49ea194371f214ad9abaea8fdec96e7bbba8d792ffceed430d3d5b9f7d b/docs/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/1c/59/7cb7d049b18e56c7b2efe254883731d7457e8cfe0dbc6bb65f6f792955936da2ce49ea194371f214ad9abaea8fdec96e7bbba8d792ffceed430d3d5b9f7d new file mode 100644 index 00000000..4786105f --- /dev/null +++ b/docs/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/1c/59/7cb7d049b18e56c7b2efe254883731d7457e8cfe0dbc6bb65f6f792955936da2ce49ea194371f214ad9abaea8fdec96e7bbba8d792ffceed430d3d5b9f7d @@ -0,0 +1 @@ +{"code":"(window.webpackJsonp=window.webpackJsonp||[]).push([[25],{373:function(s,t,a){\"use strict\";a.r(t);var n=a(41),r=Object(n.a)({},(function(){var s=this,t=s.$createElement,a=s._self._c||t;return a(\"ContentSlotsDistributor\",{attrs:{\"slot-key\":s.$parent.slotKey}},[a(\"h1\",{attrs:{id:\"题目管理\"}},[a(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#题目管理\"}},[s._v(\"#\")]),s._v(\" 题目管理\")]),s._v(\" \"),a(\"h2\",{attrs:{id:\"一、hoj题目\"}},[a(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#一、hoj题目\"}},[s._v(\"#\")]),s._v(\" 一、HOJ题目\")]),s._v(\" \"),a(\"p\",[a(\"img\",{attrs:{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:\"在这里插入图片描述\"}})]),s._v(\" \"),a(\"h4\",{attrs:{id:\"_1-导出题目\"}},[a(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#_1-导出题目\"}},[s._v(\"#\")]),s._v(\" 1. 导出题目\")]),s._v(\" \"),a(\"p\",[s._v(\"点击选择需要的题目,便可以批量导出成一个zip压缩包,分别对应一个json格式的题目数据,一个对应名字的文件夹存放评测数据文件,具体的文件结构如下:\")]),s._v(\" \"),a(\"div\",{staticClass:\"language- line-numbers-mode\"},[a(\"pre\",{pre:!0,attrs:{class:\"language-text\"}},[a(\"code\",[s._v(\"+-- problem_1000.json\\n+-- problem_1000\\n| +-- 1.in\\n| +-- 1.out\\n| +-- ....\\n+-- problem_1001.json\\n+-- problem_1001\\n| +-- 1.in\\n| +-- 1.out\\n| +-- ....\\n\")])]),s._v(\" \"),a(\"div\",{staticClass:\"line-numbers-wrapper\"},[a(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"2\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"3\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"4\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"5\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"6\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"7\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"8\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"9\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"10\")]),a(\"br\")])]),a(\"h4\",{attrs:{id:\"_2-导入题目\"}},[a(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#_2-导入题目\"}},[s._v(\"#\")]),s._v(\" 2. 导入题目\")]),s._v(\" \"),a(\"p\",[s._v(\"选择需要导入的题目数据zip压缩包,注意\"),a(\"strong\",[s._v(\"不要多一层文件夹进行压缩\")]),s._v(\",\"),a(\"strong\",[s._v(\"请保证题目json文件的名字与其对应的存放评测数据的文件夹名字一致\")]),s._v(\",具体文件格式如下:\")]),s._v(\" \"),a(\"div\",{staticClass:\"language- line-numbers-mode\"},[a(\"pre\",{pre:!0,attrs:{class:\"language-text\"}},[a(\"code\",[s._v(\"+-- problem_1000.json\\n+-- problem_1000\\n| +-- 1.in\\n| +-- 1.out\\n| +-- ....\\n+-- problem_1001.json\\n+-- problem_1001\\n| +-- 1.in\\n| +-- 1.out\\n| +-- ....\\n\")])]),s._v(\" \"),a(\"div\",{staticClass:\"line-numbers-wrapper\"},[a(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"2\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"3\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"4\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"5\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"6\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"7\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"8\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"9\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"10\")]),a(\"br\")])]),a(\"h4\",{attrs:{id:\"_3-题目的json文件格式\"}},[a(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#_3-题目的json文件格式\"}},[s._v(\"#\")]),s._v(\" 3. 题目的json文件格式\")]),s._v(\" \"),a(\"p\",[s._v(\"请严格按照以下格式,才可以正常导入。\")]),s._v(\" \"),a(\"div\",{staticClass:\"language-json line-numbers-mode\"},[a(\"pre\",{pre:!0,attrs:{class:\"language-json\"}},[a(\"code\",[a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"// 题目支持的语言如下,可增加与减少\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"languages\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"[\")]),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"C\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"C++\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"Java\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"Python3\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"Python2\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"Golang\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"C#\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"]\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"samples\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"[\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"output\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"1.in\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"input\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"1.out\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v('//\"score\": 10 // 如果是io题目需要给测试点加得分')]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"output\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"2.in\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"input\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"2.out\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v('//\"score\": 10 // 如果是io题目需要给测试点加得分')]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"]\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"tags\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"[\")]),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"测试题\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"测试\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"]\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"// 题目标签,一般不超过三个 \")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"problem\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"auth\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"1\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"// 1 公开赛\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"author\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"admin\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"// 题目上传的作者,请使用用户名\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"isRemote\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token boolean\"}},[s._v(\"false\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"// 均为非VJ题目,不用修改\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"problemId\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"HOJ-1010\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"// 题目的展示id\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"description\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"// 题目的描述,支持markdown语法\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"source\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"// 题目来源\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"title\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"// 题目标题\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"type\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"0\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"// 0为ACM题目,1为OI题目\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"timeLimit\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"1000\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"// 时间限制 单位是ms\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"memoryLimit\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"256\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"// 空间限制 单位是mb\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"input\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"// 题目的输入描述\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"output\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"// 题目的输出描述\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"difficulty\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"0\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"// 题目难度,1为简单,2为中等,3为困难\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"examples\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"// 题目的题面样例,格式为输入输出输入输出\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"ioScore\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"100\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"// OI题目总得分,与测试点总分一致\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"codeShare\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token boolean\"}},[s._v(\"true\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"// 该题目是否允许用户共享其提交的代码 \")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"hint\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"// 题目提示\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"isRemoveEndBlank\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token boolean\"}},[s._v(\"true\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"// 评测数据的输出是否自动去掉行末空格\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"openCaseResult\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token boolean\"}},[s._v(\"true\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"// 是否允许用户看到各个评测点的结果\")]),s._v(\"\\n \\t\"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v('// \"spjLanguage:\"C\" // 特殊判题的程序代码语言')]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v('// \"spjCode\":\"\" // 特殊判题的代码')]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"isSpj\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token boolean\"}},[s._v(\"false\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"// 是否为特殊判题\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"codeTemplates\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"[\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"code\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"// 模板代码\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"language\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"C\"')]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"// 模板代码语言\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"code\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"// 模板代码\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"language\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"C++\"')]),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"// 模板代码语言\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"]\")]),s._v(\"\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n\")])]),s._v(\" \"),a(\"div\",{staticClass:\"line-numbers-wrapper\"},[a(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"2\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"3\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"4\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"5\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"6\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"7\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"8\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"9\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"10\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"11\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"12\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"13\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"14\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"15\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"16\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"17\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"18\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"19\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"20\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"21\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"22\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"23\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"24\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"25\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"26\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"27\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"28\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"29\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"30\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"31\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"32\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"33\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"34\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"35\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"36\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"37\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"38\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"39\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"40\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"41\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"42\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"43\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"44\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"45\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"46\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"47\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"48\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"49\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"50\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"51\")]),a(\"br\")])]),a(\"h2\",{attrs:{id:\"二、导入qdoj的题目\"}},[a(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#二、导入qdoj的题目\"}},[s._v(\"#\")]),s._v(\" 二、导入qdoj的题目\")]),s._v(\" \"),a(\"p\",[s._v(\"请严格按照青岛oj的后台导出的压缩文件来上传。\")]),s._v(\" \"),a(\"p\",[a(\"img\",{attrs:{src:\"https://img-blog.csdnimg.cn/20210530212411781.png\",alt:\"在这里插入图片描述\"}})]),s._v(\" \"),a(\"h2\",{attrs:{id:\"三、导入其它oj题目\"}},[a(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#三、导入其它oj题目\"}},[s._v(\"#\")]),s._v(\" 三、导入其它OJ题目\")]),s._v(\" \"),a(\"p\",[s._v(\"导入HDU、Codeforces题目,只需提供该题目的题号便可一键导入\")]),s._v(\" \"),a(\"p\",[a(\"strong\",[s._v(\"管理员进入后台,点击题目列表\")])]),s._v(\" \"),a(\"p\",[a(\"img\",{attrs:{src:\"https://img-blog.csdnimg.cn/20210523223454472.png#pic_center\",alt:\"在这里插入图片描述\"}})]),s._v(\" \"),a(\"p\",[s._v(\"然后添加上方的添加按钮\")]),s._v(\" \"),a(\"p\",[a(\"img\",{attrs:{src:\"https://img-blog.csdnimg.cn/20210523222914722.png\",alt:\"在这里插入图片描述\"}})]),s._v(\" \"),a(\"p\",[a(\"strong\",[s._v(\"在弹出窗中选择OJ名字及题号,便可导入\")])]),s._v(\" \"),a(\"p\",[a(\"img\",{attrs:{src:\"https://img-blog.csdnimg.cn/20210523223042100.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1MzA5Nw==,size_16,color_FFFFFF,t_70\",alt:\"在这里插入图片描述\"}})]),s._v(\" \"),a(\"p\",[a(\"strong\",[s._v(\"注意:\")])]),s._v(\" \"),a(\"ul\",[a(\"li\",[s._v(\"HDU的题号一般是 1000以上的数字\")]),s._v(\" \"),a(\"li\",[s._v(\"Codeforces的题号是1000A、1000B、这种数字加大写英文字母的格式\")])])])}),[],!1,null,null,null);t.default=r.exports}}]);","extractedComments":[]} \ No newline at end of file diff --git a/docs/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/2e/25/6d4c99834bd03c15bdd9069bd010f84e96c7d2bbacf15bef2aba2bb6dd349675323ff55599819882a08071ae6fbd813c466fe3c87fa92c6b48f3446008b2 b/docs/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/2e/25/6d4c99834bd03c15bdd9069bd010f84e96c7d2bbacf15bef2aba2bb6dd349675323ff55599819882a08071ae6fbd813c466fe3c87fa92c6b48f3446008b2 new file mode 100644 index 00000000..fa5445e8 --- /dev/null +++ b/docs/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/2e/25/6d4c99834bd03c15bdd9069bd010f84e96c7d2bbacf15bef2aba2bb6dd349675323ff55599819882a08071ae6fbd813c466fe3c87fa92c6b48f3446008b2 @@ -0,0 +1 @@ +{"code":"(window.webpackJsonp=window.webpackJsonp||[]).push([[24],{367: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":[]} \ No newline at end of file diff --git a/docs/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/2e/71/b168a16494d8ea76332af3f6d001f4d61510f1e201f3528db69b0a4caec98a86776e2bb2db94df4f172b92e809d0ff3c3aa10e985bb8daab91c16cb28da8 b/docs/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/2e/71/b168a16494d8ea76332af3f6d001f4d61510f1e201f3528db69b0a4caec98a86776e2bb2db94df4f172b92e809d0ff3c3aa10e985bb8daab91c16cb28da8 new file mode 100644 index 00000000..916aee5a --- /dev/null +++ b/docs/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/2e/71/b168a16494d8ea76332af3f6d001f4d61510f1e201f3528db69b0a4caec98a86776e2bb2db94df4f172b92e809d0ff3c3aa10e985bb8daab91c16cb28da8 @@ -0,0 +1 @@ +{"code":"(window.webpackJsonp=window.webpackJsonp||[]).push([[23],{373:function(t,_,s){\"use strict\";s.r(_);var e=s(41),v=Object(e.a)({},(function(){var t=this,_=t.$createElement,s=t._self._c||_;return s(\"ContentSlotsDistributor\",{attrs:{\"slot-key\":t.$parent.slotKey}},[s(\"h1\",{attrs:{id:\"比赛介绍\"}},[s(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#比赛介绍\"}},[t._v(\"#\")]),t._v(\" 比赛介绍\")]),t._v(\" \"),s(\"p\",[s(\"img\",{attrs:{src:\"https://img-blog.csdnimg.cn/20210523221519574.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1MzA5Nw==,size_16,color_FFFFFF,t_70\",alt:\"在这里插入图片描述\"}})]),t._v(\" \"),s(\"p\",[t._v(\"创建比赛时两种赛制:\")]),t._v(\" \"),s(\"ul\",[s(\"li\",[s(\"p\",[s(\"strong\",[t._v(\"ACM 模式\")])]),t._v(\" \"),s(\"p\",[t._v(\"在该模式下,我们严格按照ACM-ICPC的比赛规则来进行,Contest设置项中的\"),s(\"code\",[t._v(\"Seal Time Rank\")]),t._v(\"即为是否封榜,封榜后将不再刷新排名。可选择比赛结束前半小时,比赛前一小时,比赛全程封榜。\")])]),t._v(\" \"),s(\"li\",[s(\"p\",[s(\"strong\",[t._v(\"OI 模式\")])]),t._v(\" \"),s(\"p\",[t._v(\"在OI模式下,选手的提交将根据得分点来计分,多次提交以最后一次提交为准,排名规则为多个题目的总分数。同样可以进行封榜操作,封榜时段,选手不能查看到实时的排行榜数据!\")])])]),t._v(\" \"),s(\"p\",[t._v(\"注意:管理员可以选择强制刷新,查看实时的排行榜数据!通过\"),s(\"code\",[t._v(\"Force Update\")]),t._v(\"来强制刷新榜,且刷新后的榜仅对管理者可见。\")]),t._v(\" \"),s(\"p\",[t._v(\"比赛权限模式有三种:\")]),t._v(\" \"),s(\"ul\",[s(\"li\",[s(\"strong\",[t._v(\"公开赛\")]),t._v(\":所有用户都可以查看比赛详情、比赛题目、比赛提交,比赛排行榜、比赛讨论等,且都可以在比赛阶段随时提交。\")]),t._v(\" \"),s(\"li\",[s(\"strong\",[t._v(\"保护赛\")]),t._v(\":所有用户都可以查看比赛详情、比赛题目、比赛提交,比赛排行榜、比赛讨论等,但在比赛阶段提交需要提供该比赛的密码!\")]),t._v(\" \"),s(\"li\",[s(\"strong\",[t._v(\"私有赛\")]),t._v(\":仅支持有比赛密码的用户进入比赛,查看查看比赛详情、比赛题目、比赛提交,比赛排行榜、比赛讨论等,包括提交。\")])])])}),[],!1,null,null,null);_.default=v.exports}}]);","extractedComments":[]} \ No newline at end of file diff --git a/docs/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/2e/ce/26ed72b874336264c04fd98e66ea4f06535096d0939c9ad89ac85b3a22916af4c81a0e22fd0969d5cd9005c594c059a7887d8c8a43b8e0ddf91c41258c98 b/docs/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/2e/ce/26ed72b874336264c04fd98e66ea4f06535096d0939c9ad89ac85b3a22916af4c81a0e22fd0969d5cd9005c594c059a7887d8c8a43b8e0ddf91c41258c98 new file mode 100644 index 00000000..334165e0 --- /dev/null +++ b/docs/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/2e/ce/26ed72b874336264c04fd98e66ea4f06535096d0939c9ad89ac85b3a22916af4c81a0e22fd0969d5cd9005c594c059a7887d8c8a43b8e0ddf91c41258c98 @@ -0,0 +1 @@ +{"code":"(window.webpackJsonp=window.webpackJsonp||[]).push([[11],{364:function(s,t,a){\"use strict\";a.r(t);var n=a(41),e=Object(n.a)({},(function(){var s=this,t=s.$createElement,a=s._self._c||t;return a(\"ContentSlotsDistributor\",{attrs:{\"slot-key\":s.$parent.slotKey}},[a(\"h1\",{attrs:{id:\"前端部署\"}},[a(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#前端部署\"}},[s._v(\"#\")]),s._v(\" 前端部署\")]),s._v(\" \"),a(\"h2\",{attrs:{id:\"一、常规部署\"}},[a(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#一、常规部署\"}},[s._v(\"#\")]),s._v(\" 一、常规部署\")]),s._v(\" \"),a(\"h4\",{attrs:{id:\"_1-安装nginx\"}},[a(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#_1-安装nginx\"}},[s._v(\"#\")]),s._v(\" 1. 安装nginx\")]),s._v(\" \"),a(\"blockquote\",[a(\"p\",[s._v(\"注意:apt下载太慢的话,建议换阿里云源,请自行百度or谷歌\")])]),s._v(\" \"),a(\"ol\",[a(\"li\",[a(\"p\",[s._v(\"使用apt安装\")]),s._v(\" \"),a(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[a(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[a(\"code\",[a(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"sudo\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"apt\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"install\")]),s._v(\" nginx\\n\")])]),s._v(\" \"),a(\"div\",{staticClass:\"line-numbers-wrapper\"},[a(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),a(\"br\")])])]),s._v(\" \"),a(\"li\",[a(\"p\",[s._v(\"路径介绍\")]),s._v(\" \"),a(\"ul\",[a(\"li\",[s._v(\"/usr/sbin/nginx:主程序\")]),s._v(\" \"),a(\"li\",[s._v(\"/etc/nginx:存放配置文件\")]),s._v(\" \"),a(\"li\",[s._v(\"/usr/share/nginx:存放静态文件\")]),s._v(\" \"),a(\"li\",[s._v(\"/var/log/nginx:存放日志\")])])]),s._v(\" \"),a(\"li\",[a(\"p\",[s._v(\"启动nginx\")]),s._v(\" \"),a(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[a(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[a(\"code\",[a(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"service\")]),s._v(\" nginx start\\n\")])]),s._v(\" \"),a(\"div\",{staticClass:\"line-numbers-wrapper\"},[a(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),a(\"br\")])])]),s._v(\" \"),a(\"li\",[a(\"p\",[s._v(\"验证是否成功\")]),s._v(\" \"),a(\"p\",[s._v(\"在浏览器输入你的ip地址,如果出现Wellcome to nginx 那么就是配置成功\")])])]),s._v(\" \"),a(\"h4\",{attrs:{id:\"_2-部署\"}},[a(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#_2-部署\"}},[s._v(\"#\")]),s._v(\" 2. 部署\")]),s._v(\" \"),a(\"ol\",[a(\"li\",[a(\"p\",[a(\"a\",{attrs:{href:\"https://gitee.com/himitzh0730/hoj/tree/master/hoj-vue\",target:\"_blank\",rel:\"noopener noreferrer\"}},[s._v(\"下载本项目\"),a(\"OutboundLink\")],1),s._v(\",git clone或者download zip\")])]),s._v(\" \"),a(\"li\",[a(\"p\",[s._v(\"前提是本地有vue-cli4与npm,请自行百度下载\")])]),s._v(\" \"),a(\"li\",[a(\"p\",[s._v(\"然后在当前hoj-vue文件夹的src路径运行打包命令\")]),s._v(\" \"),a(\"div\",{staticClass:\"language-powershell line-numbers-mode\"},[a(\"pre\",{pre:!0,attrs:{class:\"language-powershell\"}},[a(\"code\",[s._v(\"npm run build\\n\")])]),s._v(\" \"),a(\"div\",{staticClass:\"line-numbers-wrapper\"},[a(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),a(\"br\")])])]),s._v(\" \"),a(\"li\",[a(\"p\",[s._v(\"打包成功会在src同文件夹内有个dist文件夹,复制里面的html和css等静态文件\")])]),s._v(\" \"),a(\"li\",[a(\"p\",[s._v(\"在云服务器上创建文件夹\")]),s._v(\" \"),a(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[a(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[a(\"code\",[a(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"mkdir\")]),s._v(\" -p /hoj/www/html\\n\")])]),s._v(\" \"),a(\"div\",{staticClass:\"line-numbers-wrapper\"},[a(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),a(\"br\")])]),a(\"p\",[s._v(\"然后将这些静态文件复制到里面即可\")])]),s._v(\" \"),a(\"li\",[a(\"p\",[s._v(\"配置nginx,在安装好nginx后,修改nginx.conf配置\")]),s._v(\" \"),a(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[a(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[a(\"code\",[a(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"sudo\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"vi\")]),s._v(\" /etc/nginx/nginx.conf\\n\")])]),s._v(\" \"),a(\"div\",{staticClass:\"line-numbers-wrapper\"},[a(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),a(\"br\")])])]),s._v(\" \"),a(\"li\",[a(\"p\",[s._v(\"将下面的内容复制进去\")]),s._v(\" \"),a(\"p\",[a(\"strong\",[s._v(\"注意:没有域名使用IP+端口号也一样\")])]),s._v(\" \"),a(\"div\",{staticClass:\"language-json line-numbers-mode\"},[a(\"pre\",{pre:!0,attrs:{class:\"language-json\"}},[a(\"code\",[s._v(\"server\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n listen \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"80\")]),s._v(\"; # 监听访问的端口号\\n server_name www.hcode.top; # 此处填写你的域名或IP\\n root /hoj/www/html; # 此处填写你的网页根目录\\n location /api\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n proxy_set_header X-Real-IP $remote_addr;\\n proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\\n proxy_set_header Host $http_host;\\n proxy_set_header X-Forwarded-Proto $scheme;\\n proxy_pass http\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"//localhost:6688; # 填写你的后端地址和端口\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n location ~ .*\\\\.(js|json|css)$ \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n gzip on;\\n gzip_static on; # gzip_static是nginx对于静态文件的处理模块,该模块可以读取预先压缩的gz文件,这样可以减少每次请求进行gzip压缩的CPU资源消耗。\\n gzip_min_length 1k;\\n gzip_http_version \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"1.1\")]),s._v(\";\\n gzip_comp_level \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"9\")]),s._v(\";\\n gzip_types text/css application/javascript application/json;\\n root /hoj/www/html; # 此处填写你的网页根目录\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n location / \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\" # 路由重定向以适应Vue中的路由\\n index index.html;\\n try_files $uri $uri/ /index.html;\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n\")])]),s._v(\" \"),a(\"div\",{staticClass:\"line-numbers-wrapper\"},[a(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"2\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"3\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"4\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"5\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"6\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"7\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"8\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"9\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"10\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"11\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"12\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"13\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"14\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"15\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"16\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"17\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"18\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"19\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"20\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"21\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"22\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"23\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"24\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"25\")]),a(\"br\")])])]),s._v(\" \"),a(\"li\",[a(\"p\",[s._v(\"修改后保存,然后重启或者热重载nginx,不出意外应该可用访问前端页面了。\")]),s._v(\" \"),a(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[a(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[a(\"code\",[a(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"sudo\")]),s._v(\" systemctl restart nginx \\n或\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"sudo\")]),s._v(\" nginx -s reload\\n\")])]),s._v(\" \"),a(\"div\",{staticClass:\"line-numbers-wrapper\"},[a(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"2\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"3\")]),a(\"br\")])])])]),s._v(\" \"),a(\"h2\",{attrs:{id:\"二、docker部署\"}},[a(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#二、docker部署\"}},[s._v(\"#\")]),s._v(\" 二、docker部署\")]),s._v(\" \"),a(\"h3\",{attrs:{id:\"前言\"}},[a(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#前言\"}},[s._v(\"#\")]),s._v(\" 前言\")]),s._v(\" \"),a(\"blockquote\",[a(\"p\",[s._v(\"html文件夹下为hoj的vue前端打包的静态资源\")])]),s._v(\" \"),a(\"p\",[s._v(\"直接下载本项目,进入到当前文件夹执行打包命令\")]),s._v(\" \"),a(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[a(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[a(\"code\",[a(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"git\")]),s._v(\" clone https://gitee.com/himitzh0730/hoj-deploy.git \"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"&&\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token builtin class-name\"}},[s._v(\"cd\")]),s._v(\" hoj-deploy/src/frontend\\n\")])]),s._v(\" \"),a(\"div\",{staticClass:\"line-numbers-wrapper\"},[a(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),a(\"br\")])]),a(\"p\",[s._v(\"当前文件夹为打包\"),a(\"code\",[s._v(\"hoj-frontend\")]),s._v(\"镜像的相关文件,将这些文件复制到同一个文件夹内,之后执行以下命令进行打包成镜像\")]),s._v(\" \"),a(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[a(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[a(\"code\",[s._v(\"docker build -t hoj-frontend \"),a(\"span\",{pre:!0,attrs:{class:\"token builtin class-name\"}},[s._v(\".\")]),s._v(\"\\n\")])]),s._v(\" \"),a(\"div\",{staticClass:\"line-numbers-wrapper\"},[a(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),a(\"br\")])]),a(\"p\",[s._v(\"docker run 启动\")]),s._v(\" \"),a(\"ul\",[a(\"li\",[a(\"p\",[s._v(\"Http方式\")]),s._v(\" \"),a(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[a(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[a(\"code\",[s._v(\"docker run -d --name hoj-frontend \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"\\\\\")]),s._v(\"\\n-e \"),a(\"span\",{pre:!0,attrs:{class:\"token assign-left variable\"}},[s._v(\"SERVER_NAME\")]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"=\")]),s._v(\"localhost \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"\\\\\")]),s._v(\"\\n-e \"),a(\"span\",{pre:!0,attrs:{class:\"token assign-left variable\"}},[s._v(\"BACKEND_SERVER_HOST\")]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"=\")]),s._v(\"backend_server_host \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"\\\\\")]),s._v(\"\\n-e \"),a(\"span\",{pre:!0,attrs:{class:\"token assign-left variable\"}},[s._v(\"BACKEND_SERVER_PORT\")]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"=\")]),s._v(\"backend_server_port \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"\\\\\")]),s._v(\"\\n-e \"),a(\"span\",{pre:!0,attrs:{class:\"token assign-left variable\"}},[s._v(\"USE_HTTPS\")]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"=\")]),s._v(\"false \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"\\\\\")]),s._v(\"\\n-p \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"80\")]),s._v(\":80 \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"\\\\\")]),s._v(\"\\n--restart\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"=\")]),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"always\"')]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"\\\\\")]),s._v(\"\\nhoj-frontend\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# registry.cn-shenzhen.aliyuncs.com/hcode/hoj_frontend\")]),s._v(\"\\n\")])]),s._v(\" \"),a(\"div\",{staticClass:\"line-numbers-wrapper\"},[a(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"2\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"3\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"4\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"5\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"6\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"7\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"8\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"9\")]),a(\"br\")])])]),s._v(\" \"),a(\"li\",[a(\"p\",[s._v(\"Https方式\")]),s._v(\" \"),a(\"p\",[a(\"strong\",[s._v(\"需将SSL证书与公钥文件(server.crt、server.kry)放置当前目录\")])]),s._v(\" \"),a(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[a(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[a(\"code\",[s._v(\"docker run -d --name hoj-frontend \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"\\\\\")]),s._v(\"\\n-e \"),a(\"span\",{pre:!0,attrs:{class:\"token assign-left variable\"}},[s._v(\"SERVER_NAME\")]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"=\")]),s._v(\"localhost \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"\\\\\")]),s._v(\"\\n-e \"),a(\"span\",{pre:!0,attrs:{class:\"token assign-left variable\"}},[s._v(\"BACKEND_SERVER_HOST\")]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"=\")]),s._v(\"backend_server_host \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"\\\\\")]),s._v(\"\\n-e \"),a(\"span\",{pre:!0,attrs:{class:\"token assign-left variable\"}},[s._v(\"BACKEND_SERVER_PORT\")]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"=\")]),s._v(\"backend_server_port \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"\\\\\")]),s._v(\"\\n-e \"),a(\"span\",{pre:!0,attrs:{class:\"token assign-left variable\"}},[s._v(\"USE_HTTPS\")]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"=\")]),s._v(\"true \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"\\\\\")]),s._v(\"\\n-e ./server.crt:/etc/nginx/etc/crt/server.crt \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"\\\\\")]),s._v(\"\\n-e ./server.key:/etc/nginx/etc/crt/server.key \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"\\\\\")]),s._v(\"\\n-p \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"80\")]),s._v(\":80 \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"\\\\\")]),s._v(\"\\n-p \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"443\")]),s._v(\":443 \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"\\\\\")]),s._v(\"\\n--restart\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"=\")]),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"always\"')]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"\\\\\")]),s._v(\"\\nhoj-frontend\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# registry.cn-shenzhen.aliyuncs.com/hcode/hoj_frontend\")]),s._v(\"\\n\")])]),s._v(\" \"),a(\"div\",{staticClass:\"line-numbers-wrapper\"},[a(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"2\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"3\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"4\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"5\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"6\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"7\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"8\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"9\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"10\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"11\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"12\")]),a(\"br\")])])])]),s._v(\" \"),a(\"p\",[s._v(\"docker-compose 启动\")]),s._v(\" \"),a(\"div\",{staticClass:\"language-yaml line-numbers-mode\"},[a(\"pre\",{pre:!0,attrs:{class:\"language-yaml\"}},[a(\"code\",[a(\"span\",{pre:!0,attrs:{class:\"token key atrule\"}},[s._v(\"version\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"3\"')]),s._v(\"\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token key atrule\"}},[s._v(\"services\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token key atrule\"}},[s._v(\"hoj-frontend\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# image: registry.cn-shenzhen.aliyuncs.com/hcode/hoj_frontend\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token key atrule\"}},[s._v(\"image\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\" hoj\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\"frontend\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token key atrule\"}},[s._v(\"container_name\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\" hoj\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\"frontend\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token key atrule\"}},[s._v(\"restart\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\" always\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# 开启https,请提供证书\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"#volumes:\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# - ./server.crt:/etc/nginx/etc/crt/server.crt\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# - ./server.key:/etc/nginx/etc/crt/server.key\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token key atrule\"}},[s._v(\"environment\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\" SERVER_NAME=localhost \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# 域名或localhost(本地)\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\" BACKEND_SERVER_HOST=172.20.0.5 \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# backend后端服务地址\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\" BACKEND_SERVER_PORT=6688 \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# backend后端服务端口号\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\" USE_HTTPS=false\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token key atrule\"}},[s._v(\"ports\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"80:80\"')]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"443:443\"')]),s._v(\"\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# networks:\")]),s._v(\"\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# hoj-network:\")]),s._v(\"\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# ipv4_address: 172.20.0.6\")]),s._v(\"\\n\")])]),s._v(\" \"),a(\"div\",{staticClass:\"line-numbers-wrapper\"},[a(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"2\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"3\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"4\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"5\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"6\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"7\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"8\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"9\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"10\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"11\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"12\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"13\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"14\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"15\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"16\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"17\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"18\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"19\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"20\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"21\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"22\")]),a(\"br\")])]),a(\"h3\",{attrs:{id:\"文件介绍\"}},[a(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#文件介绍\"}},[s._v(\"#\")]),s._v(\" 文件介绍\")]),s._v(\" \"),a(\"h4\",{attrs:{id:\"_1-default-conf-ssl-template\"}},[a(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#_1-default-conf-ssl-template\"}},[s._v(\"#\")]),s._v(\" 1. default.conf.ssl.template\")]),s._v(\" \"),a(\"p\",[s._v(\"nginx的SSL配置文件模板,需要在执行 run.sh注入环境变量生成对应的nginx.conf文件\")]),s._v(\" \"),a(\"div\",{staticClass:\"language-nginx line-numbers-mode\"},[a(\"pre\",{pre:!0,attrs:{class:\"language-nginx\"}},[a(\"code\",[a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"server\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"listen\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"80\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"#填写绑定证书的域名\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"server_name\")]),s._v(\" $\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"SERVER_NAME\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"#把http的域名请求转成https\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"return\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"301\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"https\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),a(\"span\",{pre:!0,attrs:{class:\"token variable\"}},[s._v(\"$host\")]),a(\"span\",{pre:!0,attrs:{class:\"token variable\"}},[s._v(\"$request_uri\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"server\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n\\t\"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"listen\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"443\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"ssl\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n\\t\"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"server_name\")]),s._v(\" $\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"SERVER_NAME\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"#证书文件名称\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"ssl_certificate\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),s._v(\"etc\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),s._v(\"nginx\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),s._v(\"etc\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),s._v(\"crt\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"server\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\".\")]),s._v(\"crt\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"#私钥文件名称\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"ssl_certificate_key\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),s._v(\"etc\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),s._v(\"nginx\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),s._v(\"etc\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),s._v(\"crt\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"server\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\".\")]),s._v(\"key\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"ssl_session_timeout\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"5\")]),s._v(\"m\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"#请按照以下协议配置\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"ssl_protocols\")]),s._v(\" TLSv1 TLSv1\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\".\")]),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"1\")]),s._v(\" TLSv1\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\".\")]),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"2\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"#请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"ssl_ciphers\")]),s._v(\" ECDHE\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"-\")]),s._v(\"RSA\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"-\")]),s._v(\"AES128\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"-\")]),s._v(\"GCM\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"-\")]),s._v(\"SHA256\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\"HIGH\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"!\")]),s._v(\"aNULL\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"!\")]),s._v(\"MD5\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"!\")]),s._v(\"RC4\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"!\")]),s._v(\"DHE\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"ssl_prefer_server_ciphers\")]),s._v(\" on\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n\\n\\t\"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"root\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),s._v(\"usr\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),s._v(\"share\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),s._v(\"nginx\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),s._v(\"html\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"location\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),s._v(\"api\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n\\t\\t\"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"proxy_pass\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"http\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),s._v(\"$\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"BACKEND_SERVER_HOST\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\"$\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"BACKEND_SERVER_PORT\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# 填写你的后端地址和端口\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"proxy_set_header\")]),s._v(\" X\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"-\")]),s._v(\"Real\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"-\")]),s._v(\"IP \"),a(\"span\",{pre:!0,attrs:{class:\"token variable\"}},[s._v(\"$remote_addr\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"proxy_set_header\")]),s._v(\" X\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"-\")]),s._v(\"Forwarded\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"-\")]),s._v(\"For \"),a(\"span\",{pre:!0,attrs:{class:\"token variable\"}},[s._v(\"$proxy_add_x_forwarded_for\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n\\t \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"proxy_set_header\")]),s._v(\" Host \"),a(\"span\",{pre:!0,attrs:{class:\"token variable\"}},[s._v(\"$http_host\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"proxy_set_header\")]),s._v(\" X\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"-\")]),s._v(\"Forwarded\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"-\")]),s._v(\"Proto \"),a(\"span\",{pre:!0,attrs:{class:\"token variable\"}},[s._v(\"$scheme\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n \\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"client_max_body_size\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"128\")]),s._v(\"M\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"location\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"~\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\".\")]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"*\")]),s._v(\"\\\\\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\".\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"(\")]),s._v(\"js\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"|\")]),s._v(\"json\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"|\")]),s._v(\"css\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\")\")]),s._v(\"$ \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"gzip\")]),s._v(\" on\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"gzip_static\")]),s._v(\" on\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# gzip_static是nginx对于静态文件的处理模块,该模块可以读取预先压缩的gz文件,这样可以减少每次请求进行gzip压缩的CPU资源消耗。\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"gzip_min_length\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"1\")]),s._v(\"k\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"gzip_http_version\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"1.1\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"gzip_comp_level\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"9\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"gzip_types\")]),s._v(\" text\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),s._v(\"css application\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),s._v(\"javascript application\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),s._v(\"json\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"root\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),s._v(\"usr\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),s._v(\"share\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),s._v(\"nginx\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),s._v(\"html\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"location\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# 路由重定向以适应Vue中的路由\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"index\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"index\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\".\")]),s._v(\"html\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"try_files\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token variable\"}},[s._v(\"$uri\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token variable\"}},[s._v(\"$uri\")]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"index\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\".\")]),s._v(\"html\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n\\t\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n\")])]),s._v(\" \"),a(\"div\",{staticClass:\"line-numbers-wrapper\"},[a(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"2\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"3\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"4\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"5\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"6\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"7\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"8\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"9\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"10\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"11\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"12\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"13\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"14\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"15\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"16\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"17\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"18\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"19\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"20\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"21\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"22\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"23\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"24\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"25\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"26\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"27\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"28\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"29\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"30\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"31\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"32\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"33\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"34\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"35\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"36\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"37\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"38\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"39\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"40\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"41\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"42\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"43\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"44\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"45\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"46\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"47\")]),a(\"br\")])]),a(\"h4\",{attrs:{id:\"_2-default-conf-template\"}},[a(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#_2-default-conf-template\"}},[s._v(\"#\")]),s._v(\" 2. default.conf.template\")]),s._v(\" \"),a(\"p\",[s._v(\"nginx的配置文件模板,需要在执行 run.sh注入环境变量生成对应的nginx.conf文件\")]),s._v(\" \"),a(\"div\",{staticClass:\"language-nginx line-numbers-mode\"},[a(\"pre\",{pre:!0,attrs:{class:\"language-nginx\"}},[a(\"code\",[a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"server\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n\\t\"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"listen\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"80\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n\\t\"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"server_name\")]),s._v(\" $\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"SERVER_NAME\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n\\t\"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"root\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),s._v(\"usr\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),s._v(\"share\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),s._v(\"nginx\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),s._v(\"html\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"location\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),s._v(\"api\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n\\t\\t\"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"proxy_pass\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"http\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),s._v(\"$\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"BACKEND_SERVER_HOST\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\"$\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"BACKEND_SERVER_PORT\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# 填写你的后端地址和端口\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"proxy_set_header\")]),s._v(\" X\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"-\")]),s._v(\"Real\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"-\")]),s._v(\"IP \"),a(\"span\",{pre:!0,attrs:{class:\"token variable\"}},[s._v(\"$remote_addr\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"proxy_set_header\")]),s._v(\" X\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"-\")]),s._v(\"Forwarded\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"-\")]),s._v(\"For \"),a(\"span\",{pre:!0,attrs:{class:\"token variable\"}},[s._v(\"$proxy_add_x_forwarded_for\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n\\t \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"proxy_set_header\")]),s._v(\" Host \"),a(\"span\",{pre:!0,attrs:{class:\"token variable\"}},[s._v(\"$http_host\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"proxy_set_header\")]),s._v(\" X\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"-\")]),s._v(\"Forwarded\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"-\")]),s._v(\"Proto \"),a(\"span\",{pre:!0,attrs:{class:\"token variable\"}},[s._v(\"$scheme\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n \\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"client_max_body_size\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"128\")]),s._v(\"M\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"location\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"~\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\".\")]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"*\")]),s._v(\"\\\\\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\".\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"(\")]),s._v(\"js\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"|\")]),s._v(\"json\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"|\")]),s._v(\"css\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\")\")]),s._v(\"$ \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"gzip\")]),s._v(\" on\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"gzip_static\")]),s._v(\" on\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# gzip_static是nginx对于静态文件的处理模块,该模块可以读取预先压缩的gz文件,这样可以减少每次请求进行gzip压缩的CPU资源消耗。\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"gzip_min_length\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"1\")]),s._v(\"k\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"gzip_http_version\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"1.1\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"gzip_comp_level\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"9\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"gzip_types\")]),s._v(\" text\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),s._v(\"css application\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),s._v(\"javascript application\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),s._v(\"json\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"root\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),s._v(\"usr\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),s._v(\"share\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),s._v(\"nginx\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),s._v(\"html\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"location\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# 路由重定向以适应Vue中的路由\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"index\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"index\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\".\")]),s._v(\"html\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"try_files\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token variable\"}},[s._v(\"$uri\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token variable\"}},[s._v(\"$uri\")]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"index\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\".\")]),s._v(\"html\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n\\t\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n\")])]),s._v(\" \"),a(\"div\",{staticClass:\"line-numbers-wrapper\"},[a(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"2\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"3\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"4\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"5\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"6\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"7\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"8\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"9\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"10\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"11\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"12\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"13\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"14\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"15\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"16\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"17\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"18\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"19\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"20\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"21\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"22\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"23\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"24\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"25\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"26\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"27\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"28\")]),a(\"br\")])]),a(\"h4\",{attrs:{id:\"_3-run-sh\"}},[a(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#_3-run-sh\"}},[s._v(\"#\")]),s._v(\" 3. run.sh\")]),s._v(\" \"),a(\"p\",[s._v(\"作用是将模板conf配置文件注入对应环境变量,生成到指定文件夹\")]),s._v(\" \"),a(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[a(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[a(\"code\",[a(\"span\",{pre:!0,attrs:{class:\"token shebang important\"}},[s._v(\"#!/usr/bin/env sh\")]),s._v(\"\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token builtin class-name\"}},[s._v(\"set\")]),s._v(\" -eu \\n\"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"if\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"[\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"'),a(\"span\",{pre:!0,attrs:{class:\"token variable\"}},[s._v(\"$USE_HTTPS\")]),s._v('\"')]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"==\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"true\"')]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"]\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"then\")]),s._v(\"\\n\\tenvsubst \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v(\"'\"),a(\"span\",{pre:!0,attrs:{class:\"token variable\"}},[s._v(\"${SERVER_NAME}\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token variable\"}},[s._v(\"${BACKEND_SERVER_HOST}\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token variable\"}},[s._v(\"${BACKEND_SERVER_PORT}\")]),s._v(\"'\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"<\")]),s._v(\" /etc/nginx/conf.d/default.conf.ssl.template \"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\">\")]),s._v(\" /etc/nginx/conf.d/default.conf\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"else\")]),s._v(\"\\n\\tenvsubst \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v(\"'\"),a(\"span\",{pre:!0,attrs:{class:\"token variable\"}},[s._v(\"${SERVER_NAME}\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token variable\"}},[s._v(\"${BACKEND_SERVER_HOST}\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token variable\"}},[s._v(\"${BACKEND_SERVER_PORT}\")]),s._v(\"'\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"<\")]),s._v(\" /etc/nginx/conf.d/default.conf.template \"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\">\")]),s._v(\" /etc/nginx/conf.d/default.conf\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"fi\")]),s._v(\"\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"rm\")]),s._v(\" /etc/nginx/conf.d/default.conf.template\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"rm\")]),s._v(\" /etc/nginx/conf.d/default.conf.ssl.template\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token builtin class-name\"}},[s._v(\"exec\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"'),a(\"span\",{pre:!0,attrs:{class:\"token variable\"}},[s._v(\"$@\")]),s._v('\"')]),s._v(\"\\n\")])]),s._v(\" \"),a(\"div\",{staticClass:\"line-numbers-wrapper\"},[a(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"2\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"3\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"4\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"5\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"6\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"7\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"8\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"9\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"10\")]),a(\"br\")])]),a(\"h4\",{attrs:{id:\"_4-dockerfile\"}},[a(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#_4-dockerfile\"}},[s._v(\"#\")]),s._v(\" 4. Dockerfile\")]),s._v(\" \"),a(\"div\",{staticClass:\"language-dockerfile line-numbers-mode\"},[a(\"pre\",{pre:!0,attrs:{class:\"language-dockerfile\"}},[a(\"code\",[a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"FROM\")]),s._v(\" nginx\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\"1.15\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\"alpine\\n\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"COPY\")]),s._v(\" default.conf.template /etc/nginx/conf.d/default.conf.template\\n\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"COPY\")]),s._v(\" default.conf.ssl.template /etc/nginx/conf.d/default.conf.ssl.template\\n\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"ADD\")]),s._v(\" html/ /usr/share/nginx/html/\\n\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"COPY\")]),s._v(\" ./run.sh /docker\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\"entrypoint.sh\\n\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"RUN\")]),s._v(\" chmod a+x /docker\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\"entrypoint.sh\\n\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"ENTRYPOINT\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"[\")]),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"/docker-entrypoint.sh\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"]\")]),s._v(\"\\n\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# 每次容器启动时执行\")]),s._v(\"\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"CMD\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"[\")]),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"nginx\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"-g\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"daemon off;\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"]\")]),s._v(\"\\n\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# 容器应用端口\")]),s._v(\"\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"EXPOSE\")]),s._v(\" 80\\n\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"EXPOSE\")]),s._v(\" 443\\n\")])]),s._v(\" \"),a(\"div\",{staticClass:\"line-numbers-wrapper\"},[a(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"2\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"3\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"4\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"5\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"6\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"7\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"8\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"9\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"10\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"11\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"12\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"13\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"14\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"15\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"16\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"17\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"18\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"19\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"20\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"21\")]),a(\"br\")])])])}),[],!1,null,null,null);t.default=e.exports}}]);","extractedComments":[]} \ No newline at end of file diff --git a/docs/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/32/37/466446c8f72843e4ebaaf524906d7c05774b577b1ed6f86fbd8897c18931ed8ed137944dca2d554e9216e86679669b5969a1b32eaece46a7127912c26d3f b/docs/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/32/37/466446c8f72843e4ebaaf524906d7c05774b577b1ed6f86fbd8897c18931ed8ed137944dca2d554e9216e86679669b5969a1b32eaece46a7127912c26d3f new file mode 100644 index 00000000..39301381 --- /dev/null +++ b/docs/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/32/37/466446c8f72843e4ebaaf524906d7c05774b577b1ed6f86fbd8897c18931ed8ed137944dca2d554e9216e86679669b5969a1b32eaece46a7127912c26d3f @@ -0,0 +1 @@ +{"code":"!function(t){function e(e){for(var r,a,u=e[0],c=e[1],s=e[2],l=0,p=[];l0?o(r(t),9007199254740991):0}},function(t,e,n){var r=n(2),o=n(9),i=n(5),a=n(65),u=n(71),c=n(24),s=c.get,f=c.enforce,l=String(String).split(\"String\");(t.exports=function(t,e,n,u){var c,s=!!u&&!!u.unsafe,p=!!u&&!!u.enumerable,h=!!u&&!!u.noTargetGet;\"function\"==typeof n&&(\"string\"!=typeof e||i(n,\"name\")||o(n,\"name\",e),(c=f(n)).source||(c.source=l.join(\"string\"==typeof e?e:\"\"))),t!==r?(s?!h&&t[e]&&(p=!0):delete t[e],p?t[e]=n:o(t,e,n)):p?t[e]=n:a(e,n)})(Function.prototype,\"toString\",(function(){return\"function\"==typeof this&&s(this).source||u(this)}))},function(t,e){t.exports=!1},function(t,e,n){var r=n(99),o=n(2),i=function(t){return\"function\"==typeof t?t:void 0};t.exports=function(t,e){return arguments.length<2?i(r[t])||i(o[t]):r[t]&&r[t][e]||o[t]&&o[t][e]}},function(t,e,n){var r=n(211),o=n(214);t.exports=function(t,e){var n=o(t,e);return r(n)?n:void 0}},function(t,e){t.exports=function(t){if(null==t)throw TypeError(\"Can't call method on \"+t);return t}},function(t,e,n){var r=n(7),o=n(72),i=n(28),a=n(11),u=n(44),c=n(5),s=n(98),f=Object.getOwnPropertyDescriptor;e.f=r?f:function(t,e){if(t=a(t),e=u(e,!0),s)try{return f(t,e)}catch(t){}if(c(t,e))return i(!o.f.call(t,e),t[e])}},function(t,e){t.exports=function(t){return null!=t&&\"object\"==typeof t}},function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},function(t,e,n){\"use strict\";var r=n(0),o=n(25).filter;r({target:\"Array\",proto:!0,forced:!n(51)(\"filter\")},{filter:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}})},function(t,e,n){var r,o,i,a=n(165),u=n(2),c=n(4),s=n(9),f=n(5),l=n(64),p=n(49),h=n(31),d=u.WeakMap;if(a){var v=l.state||(l.state=new d),y=v.get,m=v.has,g=v.set;r=function(t,e){return e.facade=t,g.call(v,t,e),e},o=function(t){return y.call(v,t)||{}},i=function(t){return m.call(v,t)}}else{var b=p(\"state\");h[b]=!0,r=function(t,e){return e.facade=t,s(t,b,e),e},o=function(t){return f(t,b)?t[b]:{}},i=function(t){return f(t,b)}}t.exports={set:r,get:o,has:i,enforce:function(t){return i(t)?o(t):r(t,{})},getterFor:function(t){return function(e){var n;if(!c(e)||(n=o(e)).type!==t)throw TypeError(\"Incompatible receiver, \"+t+\" required\");return n}}}},function(t,e,n){var r=n(75),o=n(27),i=n(12),a=n(14),u=n(118),c=[].push,s=function(t){var e=1==t,n=2==t,s=3==t,f=4==t,l=6==t,p=7==t,h=5==t||l;return function(d,v,y,m){for(var g,b,_=i(d),x=o(_),w=r(v,y,3),O=a(x.length),j=0,S=m||u,k=e?S(d,O):n||p?S(d,0):void 0;O>j;j++)if((h||j in x)&&(b=w(g=x[j],j,_),t))if(e)k[j]=b;else if(b)switch(t){case 3:return!0;case 5:return g;case 6:return j;case 2:c.call(k,g)}else switch(t){case 4:return!1;case 7:c.call(k,g)}return l?-1:s||f?f:k}};t.exports={forEach:s(0),map:s(1),filter:s(2),some:s(3),every:s(4),find:s(5),findIndex:s(6),filterOut:s(7)}},function(t,e,n){var r=n(38),o=n(196),i=n(197),a=r?r.toStringTag:void 0;t.exports=function(t){return null==t?void 0===t?\"[object Undefined]\":\"[object Null]\":a&&a in Object(t)?o(t):i(t)}},function(t,e,n){var r=n(3),o=n(22),i=\"\".split;t.exports=r((function(){return!Object(\"z\").propertyIsEnumerable(0)}))?function(t){return\"String\"==o(t)?i.call(t,\"\"):Object(t)}:Object},function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},function(t,e,n){var r=n(22),o=n(2);t.exports=\"process\"==r(o.process)},function(t,e,n){var r,o,i=n(2),a=n(68),u=i.process,c=u&&u.versions,s=c&&c.v8;s?o=(r=s.split(\".\"))[0]+r[1]:a&&(!(r=a.match(/Edge\\/(\\d+)/))||r[1]>=74)&&(r=a.match(/Chrome\\/(\\d+)/))&&(o=r[1]),t.exports=o&&+o},function(t,e){t.exports={}},function(t,e){t.exports={}},function(t,e){t.exports=function(t){if(\"function\"!=typeof t)throw TypeError(String(t)+\" is not a function\");return t}},function(t,e,n){var r=n(76),o=n(15),i=n(183);r||o(Object.prototype,\"toString\",i,{unsafe:!0})},function(t,e,n){\"use strict\";var r=n(116).charAt,o=n(24),i=n(104),a=o.set,u=o.getterFor(\"String Iterator\");i(String,\"String\",(function(t){a(this,{type:\"String Iterator\",string:String(t),index:0})}),(function(){var t,e=u(this),n=e.string,o=e.index;return o>=n.length?{value:void 0,done:!0}:(t=r(n,o),e.index+=t.length,{value:t,done:!1})}))},function(t,e,n){var r=n(2),o=n(117),i=n(97),a=n(9),u=n(1),c=u(\"iterator\"),s=u(\"toStringTag\"),f=i.values;for(var l in o){var p=r[l],h=p&&p.prototype;if(h){if(h[c]!==f)try{a(h,c,f)}catch(t){h[c]=f}if(h[s]||a(h,s,l),o[l])for(var d in i)if(h[d]!==i[d])try{a(h,d,i[d])}catch(t){h[d]=i[d]}}}},function(t,e,n){\"use strict\";var r=n(3);t.exports=function(t,e){var n=[][t];return!!n&&r((function(){n.call(null,e||function(){throw 1},1)}))}},function(t,e,n){var r=n(13).Symbol;t.exports=r},function(t,e,n){\"use strict\";n.d(e,\"a\",(function(){return i}));var r=n(40);var o=n(57);function i(t){return function(t){if(Array.isArray(t))return Object(r.a)(t)}(t)||function(t){if(\"undefined\"!=typeof Symbol&&Symbol.iterator in Object(t))return Array.from(t)}(t)||Object(o.a)(t)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}},function(t,e,n){\"use strict\";function r(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n\"+t+\"<\\/script>\"},d=function(){try{r=document.domain&&new ActiveXObject(\"htmlfile\")}catch(t){}var t,e;d=r?function(t){t.write(h(\"\")),t.close();var e=t.parentWindow.Object;return t=null,e}(r):((e=s(\"iframe\")).style.display=\"none\",c.appendChild(e),e.src=String(\"javascript:\"),(t=e.contentWindow.document).open(),t.write(h(\"document.F=Object\")),t.close(),t.F);for(var n=a.length;n--;)delete d.prototype[a[n]];return d()};u[l]=!0,t.exports=Object.create||function(t,e){var n;return null!==t?(p.prototype=o(t),n=new p,p.prototype=null,n[l]=t):n=d(),void 0===e?n:i(n,e)}},function(t,e,n){var r=n(101),o=n(70);t.exports=Object.keys||function(t){return r(t,o)}},function(t,e){var n=Math.ceil,r=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?r:n)(t)}},function(t,e,n){var r=n(63),o=n(45),i=r(\"keys\");t.exports=function(t){return i[t]||(i[t]=o(t))}},function(t,e,n){var r=n(8).f,o=n(5),i=n(1)(\"toStringTag\");t.exports=function(t,e,n){t&&!o(t=n?t:t.prototype,i)&&r(t,i,{configurable:!0,value:e})}},function(t,e,n){var r=n(3),o=n(1),i=n(30),a=o(\"species\");t.exports=function(t){return i>=51||!r((function(){var e=[];return(e.constructor={})[a]=function(){return{foo:1}},1!==e[t](Boolean).foo}))}},function(t,e,n){var r=n(201),o=n(202),i=n(203),a=n(204),u=n(205);function c(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e
'};function o(t,e,n){return tn?n:t}function i(t){return 100*(-1+t)}n.configure=function(t){var e,n;for(e in t)void 0!==(n=t[e])&&t.hasOwnProperty(e)&&(r[e]=n);return this},n.status=null,n.set=function(t){var e=n.isStarted();t=o(t,r.minimum,1),n.status=1===t?null:t;var c=n.render(!e),s=c.querySelector(r.barSelector),f=r.speed,l=r.easing;return c.offsetWidth,a((function(e){\"\"===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),u(s,function(t,e,n){var o;return(o=\"translate3d\"===r.positionUsing?{transform:\"translate3d(\"+i(t)+\"%,0,0)\"}:\"translate\"===r.positionUsing?{transform:\"translate(\"+i(t)+\"%,0)\"}:{\"margin-left\":i(t)+\"%\"}).transition=\"all \"+e+\"ms \"+n,o}(t,f,l)),1===t?(u(c,{transition:\"none\",opacity:1}),c.offsetWidth,setTimeout((function(){u(c,{transition:\"all \"+f+\"ms linear\",opacity:0}),setTimeout((function(){n.remove(),e()}),f)}),f)):setTimeout(e,f)})),this},n.isStarted=function(){return\"number\"==typeof n.status},n.start=function(){n.status||n.set(0);var t=function(){setTimeout((function(){n.status&&(n.trickle(),t())}),r.trickleSpeed)};return r.trickle&&t(),this},n.done=function(t){return t||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(t){var e=n.status;return e?(\"number\"!=typeof t&&(t=(1-e)*o(Math.random()*e,.1,.95)),e=o(e+t,0,.994),n.set(e)):n.start()},n.trickle=function(){return n.inc(Math.random()*r.trickleRate)},t=0,e=0,n.promise=function(r){return r&&\"resolved\"!==r.state()?(0===e&&n.start(),t++,e++,r.always((function(){0==--e?(t=0,n.done()):n.set((t-e)/t)})),this):this},n.render=function(t){if(n.isRendered())return document.getElementById(\"nprogress\");s(document.documentElement,\"nprogress-busy\");var e=document.createElement(\"div\");e.id=\"nprogress\",e.innerHTML=r.template;var o,a=e.querySelector(r.barSelector),c=t?\"-100\":i(n.status||0),f=document.querySelector(r.parent);return u(a,{transition:\"all 0 linear\",transform:\"translate3d(\"+c+\"%,0,0)\"}),r.showSpinner||(o=e.querySelector(r.spinnerSelector))&&p(o),f!=document.body&&s(f,\"nprogress-custom-parent\"),f.appendChild(e),e},n.remove=function(){f(document.documentElement,\"nprogress-busy\"),f(document.querySelector(r.parent),\"nprogress-custom-parent\");var t=document.getElementById(\"nprogress\");t&&p(t)},n.isRendered=function(){return!!document.getElementById(\"nprogress\")},n.getPositioningCSS=function(){var t=document.body.style,e=\"WebkitTransform\"in t?\"Webkit\":\"MozTransform\"in t?\"Moz\":\"msTransform\"in t?\"ms\":\"OTransform\"in t?\"O\":\"\";return e+\"Perspective\"in t?\"translate3d\":e+\"Transform\"in t?\"translate\":\"margin\"};var a=function(){var t=[];function e(){var n=t.shift();n&&n(e)}return function(n){t.push(n),1==t.length&&e()}}(),u=function(){var t=[\"Webkit\",\"O\",\"Moz\",\"ms\"],e={};function n(n){return n=n.replace(/^-ms-/,\"ms-\").replace(/-([\\da-z])/gi,(function(t,e){return e.toUpperCase()})),e[n]||(e[n]=function(e){var n=document.body.style;if(e in n)return e;for(var r,o=t.length,i=e.charAt(0).toUpperCase()+e.slice(1);o--;)if((r=t[o]+i)in n)return r;return e}(n))}function r(t,e,r){e=n(e),t.style[e]=r}return function(t,e){var n,o,i=arguments;if(2==i.length)for(n in e)void 0!==(o=e[n])&&e.hasOwnProperty(n)&&r(t,n,o);else r(t,i[1],i[2])}}();function c(t,e){return(\"string\"==typeof t?t:l(t)).indexOf(\" \"+e+\" \")>=0}function s(t,e){var n=l(t),r=n+e;c(n,e)||(t.className=r.substring(1))}function f(t,e){var n,r=l(t);c(t,e)&&(n=r.replace(\" \"+e+\" \",\" \"),t.className=n.substring(1,n.length-1))}function l(t){return(\" \"+(t.className||\"\")+\" \").replace(/\\s+/gi,\" \")}function p(t){t&&t.parentNode&&t.parentNode.removeChild(t)}return n})?r.call(e,n,e,t):r)||(t.exports=o)},function(t,e,n){\"use strict\";var r=n(0),o=n(25).map;r({target:\"Array\",proto:!0,forced:!n(51)(\"map\")},{map:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}})},function(t,e,n){\"use strict\";var r=n(150),o=n(6),i=n(14),a=n(48),u=n(19),c=n(152),s=n(192),f=n(153),l=Math.max,p=Math.min;r(\"replace\",2,(function(t,e,n,r){var h=r.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,d=r.REPLACE_KEEPS_$0,v=h?\"$\":\"$0\";return[function(n,r){var o=u(this),i=null==n?void 0:n[t];return void 0!==i?i.call(n,o,r):e.call(String(o),n,r)},function(t,r){if(!h&&d||\"string\"==typeof r&&-1===r.indexOf(v)){var u=n(e,t,this,r);if(u.done)return u.value}var y=o(t),m=String(this),g=\"function\"==typeof r;g||(r=String(r));var b=y.global;if(b){var _=y.unicode;y.lastIndex=0}for(var x=[];;){var w=f(y,m);if(null===w)break;if(x.push(w),!b)break;\"\"===String(w[0])&&(y.lastIndex=c(m,i(y.lastIndex),_))}for(var O,j=\"\",S=0,k=0;k=S&&(j+=m.slice(S,A)+L,S=A+E.length)}return j+m.slice(S)}]}))},function(t,e,n){var r=n(101),o=n(70).concat(\"length\",\"prototype\");e.f=Object.getOwnPropertyNames||function(t){return r(t,o)}},function(t,e,n){\"use strict\";var r,o,i=n(151),a=n(157),u=RegExp.prototype.exec,c=String.prototype.replace,s=u,f=(r=/a/,o=/b*/g,u.call(r,\"a\"),u.call(o,\"a\"),0!==r.lastIndex||0!==o.lastIndex),l=a.UNSUPPORTED_Y||a.BROKEN_CARET,p=void 0!==/()??/.exec(\"\")[1];(f||p||l)&&(s=function(t){var e,n,r,o,a=this,s=l&&a.sticky,h=i.call(a),d=a.source,v=0,y=t;return s&&(-1===(h=h.replace(\"y\",\"\")).indexOf(\"g\")&&(h+=\"g\"),y=String(t).slice(a.lastIndex),a.lastIndex>0&&(!a.multiline||a.multiline&&\"\\n\"!==t[a.lastIndex-1])&&(d=\"(?: \"+d+\")\",y=\" \"+y,v++),n=new RegExp(\"^(?:\"+d+\")\",h)),p&&(n=new RegExp(\"^\"+d+\"$(?!\\\\s)\",h)),f&&(e=a.lastIndex),r=u.call(s?n:a,y),s?r?(r.input=r.input.slice(v),r[0]=r[0].slice(v),r.index=a.lastIndex,a.lastIndex+=r[0].length):a.lastIndex=0:f&&r&&(a.lastIndex=a.global?r.index+r[0].length:e),p&&r&&r.length>1&&c.call(r[0],n,(function(){for(o=1;o37&&o<41)}))},function(t,e,n){var r=n(17);t.exports=r(\"navigator\",\"userAgent\")||\"\"},function(t,e,n){var r=n(11),o=n(14),i=n(102),a=function(t){return function(e,n,a){var u,c=r(e),s=o(c.length),f=i(a,s);if(t&&n!=n){for(;s>f;)if((u=c[f++])!=u)return!0}else for(;s>f;f++)if((t||f in c)&&c[f]===n)return t||f||0;return!t&&-1}};t.exports={includes:a(!0),indexOf:a(!1)}},function(t,e){t.exports=[\"constructor\",\"hasOwnProperty\",\"isPrototypeOf\",\"propertyIsEnumerable\",\"toLocaleString\",\"toString\",\"valueOf\"]},function(t,e,n){var r=n(64),o=Function.toString;\"function\"!=typeof r.inspectSource&&(r.inspectSource=function(t){return o.call(t)}),t.exports=r.inspectSource},function(t,e,n){\"use strict\";var r={}.propertyIsEnumerable,o=Object.getOwnPropertyDescriptor,i=o&&!r.call({1:2},1);e.f=i?function(t){var e=o(this,t);return!!e&&e.enumerable}:r},function(t,e){e.f=Object.getOwnPropertySymbols},function(t,e,n){var r=n(5),o=n(12),i=n(49),a=n(108),u=i(\"IE_PROTO\"),c=Object.prototype;t.exports=a?Object.getPrototypeOf:function(t){return t=o(t),r(t,u)?t[u]:\"function\"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?c:null}},function(t,e,n){var r=n(33);t.exports=function(t,e,n){if(r(t),void 0===e)return t;switch(n){case 0:return function(){return t.call(e)};case 1:return function(n){return t.call(e,n)};case 2:return function(n,r){return t.call(e,n,r)};case 3:return function(n,r,o){return t.call(e,n,r,o)}}return function(){return t.apply(e,arguments)}}},function(t,e,n){var r={};r[n(1)(\"toStringTag\")]=\"z\",t.exports=\"[object z]\"===String(r)},function(t,e,n){\"use strict\";var r=n(0),o=n(4),i=n(43),a=n(102),u=n(14),c=n(11),s=n(78),f=n(1),l=n(51)(\"slice\"),p=f(\"species\"),h=[].slice,d=Math.max;r({target:\"Array\",proto:!0,forced:!l},{slice:function(t,e){var n,r,f,l=c(this),v=u(l.length),y=a(t,v),m=a(void 0===e?v:e,v);if(i(l)&&(\"function\"!=typeof(n=l.constructor)||n!==Array&&!i(n.prototype)?o(n)&&null===(n=n[p])&&(n=void 0):n=void 0,n===Array||void 0===n))return h.call(l,y,m);for(r=new(void 0===n?Array:n)(d(m-y,0)),f=0;y-1&&t%1==0&&t<=9007199254740991}},function(t,e,n){var r=n(10),o=n(86),i=/\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,a=/^\\w*$/;t.exports=function(t,e){if(r(t))return!1;var n=typeof t;return!(\"number\"!=n&&\"symbol\"!=n&&\"boolean\"!=n&&null!=t&&!o(t))||(a.test(t)||!i.test(t)||null!=e&&t in Object(e))}},function(t,e,n){var r=n(26),o=n(21);t.exports=function(t){return\"symbol\"==typeof t||o(t)&&\"[object Symbol]\"==r(t)}},function(t,e){t.exports=function(t){return t}},function(t,e,n){\"use strict\";var r=n(0),o=n(25).some;r({target:\"Array\",proto:!0,forced:!n(37)(\"some\")},{some:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}})},function(t,e,n){var r=n(0),o=n(12),i=n(47);r({target:\"Object\",stat:!0,forced:n(3)((function(){i(1)}))},{keys:function(t){return i(o(t))}})},function(t,e,n){\"use strict\";var r=n(0),o=n(119);r({target:\"Array\",proto:!0,forced:[].forEach!=o},{forEach:o})},function(t,e,n){var r=n(2),o=n(117),i=n(119),a=n(9);for(var u in o){var c=r[u],s=c&&c.prototype;if(s&&s.forEach!==i)try{a(s,\"forEach\",i)}catch(t){s.forEach=i}}},function(t,e,n){var r=n(1),o=n(46),i=n(8),a=r(\"unscopables\"),u=Array.prototype;null==u[a]&&i.f(u,a,{configurable:!0,value:o(null)}),t.exports=function(t){u[a][t]=!0}},function(t,e,n){var r=n(3),o=/#|\\.prototype\\./,i=function(t,e){var n=u[a(t)];return n==s||n!=c&&(\"function\"==typeof e?r(e):!!e)},a=i.normalize=function(t){return String(t).replace(o,\".\").toLowerCase()},u=i.data={},c=i.NATIVE=\"N\",s=i.POLYFILL=\"P\";t.exports=i},function(t,e,n){var r=n(6),o=n(33),i=n(1)(\"species\");t.exports=function(t,e){var n,a=r(t).constructor;return void 0===a||null==(n=r(a)[i])?e:o(n)}},function(t,e,n){var r=n(149);t.exports=function(t){if(r(t))throw TypeError(\"The method doesn't accept regular expressions\");return t}},function(t,e,n){var r=n(1)(\"match\");t.exports=function(t){var e=/./;try{\"/./\"[t](e)}catch(n){try{return e[r]=!1,\"/./\"[t](e)}catch(t){}}return!1}},function(t,e,n){\"use strict\";var r=n(11),o=n(92),i=n(32),a=n(24),u=n(104),c=a.set,s=a.getterFor(\"Array Iterator\");t.exports=u(Array,\"Array\",(function(t,e){c(this,{type:\"Array Iterator\",target:r(t),index:0,kind:e})}),(function(){var t=s(this),e=t.target,n=t.kind,r=t.index++;return!e||r>=e.length?(t.target=void 0,{value:void 0,done:!0}):\"keys\"==n?{value:r,done:!1}:\"values\"==n?{value:e[r],done:!1}:{value:[r,e[r]],done:!1}}),\"values\"),i.Arguments=i.Array,o(\"keys\"),o(\"values\"),o(\"entries\")},function(t,e,n){var r=n(7),o=n(3),i=n(66);t.exports=!r&&!o((function(){return 7!=Object.defineProperty(i(\"div\"),\"a\",{get:function(){return 7}}).a}))},function(t,e,n){var r=n(2);t.exports=r},function(t,e,n){var r=n(67);t.exports=r&&!Symbol.sham&&\"symbol\"==typeof Symbol.iterator},function(t,e,n){var r=n(5),o=n(11),i=n(69).indexOf,a=n(31);t.exports=function(t,e){var n,u=o(t),c=0,s=[];for(n in u)!r(a,n)&&r(u,n)&&s.push(n);for(;e.length>c;)r(u,n=e[c++])&&(~i(s,n)||s.push(n));return s}},function(t,e,n){var r=n(48),o=Math.max,i=Math.min;t.exports=function(t,e){var n=r(t);return n<0?o(n+e,0):i(n,e)}},function(t,e,n){var r=n(17);t.exports=r(\"document\",\"documentElement\")},function(t,e,n){\"use strict\";var r=n(0),o=n(166),i=n(74),a=n(155),u=n(50),c=n(9),s=n(15),f=n(1),l=n(16),p=n(32),h=n(107),d=h.IteratorPrototype,v=h.BUGGY_SAFARI_ITERATORS,y=f(\"iterator\"),m=function(){return this};t.exports=function(t,e,n,f,h,g,b){o(n,e,f);var _,x,w,O=function(t){if(t===h&&A)return A;if(!v&&t in k)return k[t];switch(t){case\"keys\":case\"values\":case\"entries\":return function(){return new n(this,t)}}return function(){return new n(this)}},j=e+\" Iterator\",S=!1,k=t.prototype,E=k[y]||k[\"@@iterator\"]||h&&k[h],A=!v&&E||O(h),$=\"Array\"==e&&k.entries||E;if($&&(_=i($.call(new t)),d!==Object.prototype&&_.next&&(l||i(_)===d||(a?a(_,d):\"function\"!=typeof _[y]&&c(_,y,m)),u(_,j,!0,!0),l&&(p[j]=m))),\"values\"==h&&E&&\"values\"!==E.name&&(S=!0,A=function(){return E.call(this)}),l&&!b||k[y]===A||c(k,y,A),p[e]=A,h)if(x={values:O(\"values\"),keys:g?A:O(\"keys\"),entries:O(\"entries\")},b)for(w in x)(v||S||!(w in k))&&s(k,w,x[w]);else r({target:e,proto:!0,forced:v||S},x);return x}},function(t,e,n){var r=n(5),o=n(106),i=n(20),a=n(8);t.exports=function(t,e){for(var n=o(e),u=a.f,c=i.f,s=0;sn;)e.push(arguments[n++]);return _[++b]=function(){(\"function\"==typeof t?t:Function(t)).apply(void 0,e)},r(b),b},v=function(t){delete _[t]},p?r=function(t){y.nextTick(w(t))}:g&&g.now?r=function(t){g.now(w(t))}:m&&!l?(i=(o=new m).port2,o.port1.onmessage=O,r=c(i.postMessage,i,1)):a.addEventListener&&\"function\"==typeof postMessage&&!a.importScripts&&h&&\"file:\"!==h.protocol&&!u(j)?(r=j,a.addEventListener(\"message\",O,!1)):r=\"onreadystatechange\"in f(\"script\")?function(t){s.appendChild(f(\"script\")).onreadystatechange=function(){s.removeChild(this),x(t)}}:function(t){setTimeout(w(t),0)}),t.exports={set:d,clear:v}},function(t,e,n){var r=n(68);t.exports=/(iphone|ipod|ipad).*applewebkit/i.test(r)},function(t,e,n){var r=n(6),o=n(4),i=n(114);t.exports=function(t,e){if(r(t),o(e)&&e.constructor===t)return e;var n=i.f(t);return(0,n.resolve)(e),n.promise}},function(t,e,n){\"use strict\";var r=n(33),o=function(t){var e,n;this.promise=new t((function(t,r){if(void 0!==e||void 0!==n)throw TypeError(\"Bad Promise constructor\");e=t,n=r})),this.resolve=r(e),this.reject=r(n)};t.exports.f=function(t){return new o(t)}},function(t,e,n){var r=function(t){\"use strict\";var e=Object.prototype,n=e.hasOwnProperty,r=\"function\"==typeof Symbol?Symbol:{},o=r.iterator||\"@@iterator\",i=r.asyncIterator||\"@@asyncIterator\",a=r.toStringTag||\"@@toStringTag\";function u(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{u({},\"\")}catch(t){u=function(t,e,n){return t[e]=n}}function c(t,e,n,r){var o=e&&e.prototype instanceof l?e:l,i=Object.create(o.prototype),a=new O(r||[]);return i._invoke=function(t,e,n){var r=\"suspendedStart\";return function(o,i){if(\"executing\"===r)throw new Error(\"Generator is already running\");if(\"completed\"===r){if(\"throw\"===o)throw i;return S()}for(n.method=o,n.arg=i;;){var a=n.delegate;if(a){var u=_(a,n);if(u){if(u===f)continue;return u}}if(\"next\"===n.method)n.sent=n._sent=n.arg;else if(\"throw\"===n.method){if(\"suspendedStart\"===r)throw r=\"completed\",n.arg;n.dispatchException(n.arg)}else\"return\"===n.method&&n.abrupt(\"return\",n.arg);r=\"executing\";var c=s(t,e,n);if(\"normal\"===c.type){if(r=n.done?\"completed\":\"suspendedYield\",c.arg===f)continue;return{value:c.arg,done:n.done}}\"throw\"===c.type&&(r=\"completed\",n.method=\"throw\",n.arg=c.arg)}}}(t,n,a),i}function s(t,e,n){try{return{type:\"normal\",arg:t.call(e,n)}}catch(t){return{type:\"throw\",arg:t}}}t.wrap=c;var f={};function l(){}function p(){}function h(){}var d={};d[o]=function(){return this};var v=Object.getPrototypeOf,y=v&&v(v(j([])));y&&y!==e&&n.call(y,o)&&(d=y);var m=h.prototype=l.prototype=Object.create(d);function g(t){[\"next\",\"throw\",\"return\"].forEach((function(e){u(t,e,(function(t){return this._invoke(e,t)}))}))}function b(t,e){var r;this._invoke=function(o,i){function a(){return new e((function(r,a){!function r(o,i,a,u){var c=s(t[o],t,i);if(\"throw\"!==c.type){var f=c.arg,l=f.value;return l&&\"object\"==typeof l&&n.call(l,\"__await\")?e.resolve(l.__await).then((function(t){r(\"next\",t,a,u)}),(function(t){r(\"throw\",t,a,u)})):e.resolve(l).then((function(t){f.value=t,a(f)}),(function(t){return r(\"throw\",t,a,u)}))}u(c.arg)}(o,i,r,a)}))}return r=r?r.then(a,a):a()}}function _(t,e){var n=t.iterator[e.method];if(void 0===n){if(e.delegate=null,\"throw\"===e.method){if(t.iterator.return&&(e.method=\"return\",e.arg=void 0,_(t,e),\"throw\"===e.method))return f;e.method=\"throw\",e.arg=new TypeError(\"The iterator does not provide a 'throw' method\")}return f}var r=s(n,t.iterator,e.arg);if(\"throw\"===r.type)return e.method=\"throw\",e.arg=r.arg,e.delegate=null,f;var o=r.arg;return o?o.done?(e[t.resultName]=o.value,e.next=t.nextLoc,\"return\"!==e.method&&(e.method=\"next\",e.arg=void 0),e.delegate=null,f):o:(e.method=\"throw\",e.arg=new TypeError(\"iterator result is not an object\"),e.delegate=null,f)}function x(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function w(t){var e=t.completion||{};e.type=\"normal\",delete e.arg,t.completion=e}function O(t){this.tryEntries=[{tryLoc:\"root\"}],t.forEach(x,this),this.reset(!0)}function j(t){if(t){var e=t[o];if(e)return e.call(t);if(\"function\"==typeof t.next)return t;if(!isNaN(t.length)){var r=-1,i=function e(){for(;++r=0;--o){var i=this.tryEntries[o],a=i.completion;if(\"root\"===i.tryLoc)return r(\"end\");if(i.tryLoc<=this.prev){var u=n.call(i,\"catchLoc\"),c=n.call(i,\"finallyLoc\");if(u&&c){if(this.prev=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,\"finallyLoc\")&&this.prev=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),w(n),f}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var r=n.completion;if(\"throw\"===r.type){var o=r.arg;w(n)}return o}}throw new Error(\"illegal catch attempt\")},delegateYield:function(t,e,n){return this.delegate={iterator:j(t),resultName:e,nextLoc:n},\"next\"===this.method&&(this.arg=void 0),f}},t}(t.exports);try{regeneratorRuntime=r}catch(t){Function(\"r\",\"regeneratorRuntime = r\")(r)}},function(t,e,n){var r=n(48),o=n(19),i=function(t){return function(e,n){var i,a,u=String(o(e)),c=r(n),s=u.length;return c<0||c>=s?t?\"\":void 0:(i=u.charCodeAt(c))<55296||i>56319||c+1===s||(a=u.charCodeAt(c+1))<56320||a>57343?t?u.charAt(c):i:t?u.slice(c,c+2):a-56320+(i-55296<<10)+65536}};t.exports={codeAt:i(!1),charAt:i(!0)}},function(t,e){t.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},function(t,e,n){var r=n(4),o=n(43),i=n(1)(\"species\");t.exports=function(t,e){var n;return o(t)&&(\"function\"!=typeof(n=t.constructor)||n!==Array&&!o(n.prototype)?r(n)&&null===(n=n[i])&&(n=void 0):n=void 0),new(void 0===n?Array:n)(0===e?0:e)}},function(t,e,n){\"use strict\";var r=n(25).forEach,o=n(37)(\"forEach\");t.exports=o?[].forEach:function(t){return r(this,t,arguments.length>1?arguments[1]:void 0)}},function(t,e,n){var r=n(3);t.exports=!r((function(){return Object.isExtensible(Object.preventExtensions({}))}))},function(t,e){t.exports=function(t,e){for(var n=-1,r=e.length,o=t.length;++nf))return!1;var p=c.get(t),h=c.get(e);if(p&&h)return p==e&&h==t;var d=-1,v=!0,y=2&n?new r:void 0;for(c.set(t,e),c.set(e,t);++d-1&&t%1==0&&t=e||n<0||y&&t-s>=i}function x(){var t=h();if(_(t))return w(t);u=setTimeout(x,function(t){var n=e-(t-c);return y?p(n,i-(t-s)):n}(t))}function w(t){return u=void 0,m&&r?g(t):(r=o=void 0,a)}function O(){var t=h(),n=_(t);if(r=arguments,o=this,c=t,n){if(void 0===u)return b(c);if(y)return u=setTimeout(x,e),g(c)}return void 0===u&&(u=setTimeout(x,e)),a}return e=v(e)||0,d(n)&&(f=!!n.leading,i=(y=\"maxWait\"in n)?l(v(n.maxWait)||0,e):i,m=\"trailing\"in n?!!n.trailing:m),O.cancel=function(){void 0!==u&&clearTimeout(u),s=0,r=c=o=u=void 0},O.flush=function(){return void 0===u?a:w(h())},O}},function(t,e,n){\"use strict\";var r=n(0),o=n(69).indexOf,i=n(37),a=[].indexOf,u=!!a&&1/[1].indexOf(1,-0)<0,c=i(\"indexOf\");r({target:\"Array\",proto:!0,forced:u||!c},{indexOf:function(t){return u?a.apply(this,arguments)||0:o(this,t,arguments.length>1?arguments[1]:void 0)}})},function(t,e,n){var r=n(4),o=n(22),i=n(1)(\"match\");t.exports=function(t){var e;return r(t)&&(void 0!==(e=t[i])?!!e:\"RegExp\"==o(t))}},function(t,e,n){\"use strict\";n(42);var r=n(15),o=n(3),i=n(1),a=n(62),u=n(9),c=i(\"species\"),s=!o((function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:\"7\"},t},\"7\"!==\"\".replace(t,\"$\")})),f=\"$0\"===\"a\".replace(/./,\"$0\"),l=i(\"replace\"),p=!!/./[l]&&\"\"===/./[l](\"a\",\"$0\"),h=!o((function(){var t=/(?:)/,e=t.exec;t.exec=function(){return e.apply(this,arguments)};var n=\"ab\".split(t);return 2!==n.length||\"a\"!==n[0]||\"b\"!==n[1]}));t.exports=function(t,e,n,l){var d=i(t),v=!o((function(){var e={};return e[d]=function(){return 7},7!=\"\"[t](e)})),y=v&&!o((function(){var e=!1,n=/a/;return\"split\"===t&&((n={}).constructor={},n.constructor[c]=function(){return n},n.flags=\"\",n[d]=/./[d]),n.exec=function(){return e=!0,null},n[d](\"\"),!e}));if(!v||!y||\"replace\"===t&&(!s||!f||p)||\"split\"===t&&!h){var m=/./[d],g=n(d,\"\"[t],(function(t,e,n,r,o){return e.exec===a?v&&!o?{done:!0,value:m.call(e,n,r)}:{done:!0,value:t.call(n,e,r)}:{done:!1}}),{REPLACE_KEEPS_$0:f,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:p}),b=g[0],_=g[1];r(String.prototype,t,b),r(RegExp.prototype,d,2==e?function(t,e){return _.call(t,this,e)}:function(t){return _.call(t,this)})}l&&u(RegExp.prototype[d],\"sham\",!0)}},function(t,e,n){\"use strict\";var r=n(6);t.exports=function(){var t=r(this),e=\"\";return t.global&&(e+=\"g\"),t.ignoreCase&&(e+=\"i\"),t.multiline&&(e+=\"m\"),t.dotAll&&(e+=\"s\"),t.unicode&&(e+=\"u\"),t.sticky&&(e+=\"y\"),e}},function(t,e,n){\"use strict\";var r=n(116).charAt;t.exports=function(t,e,n){return e+(n?r(t,e).length:1)}},function(t,e,n){var r=n(22),o=n(62);t.exports=function(t,e){var n=t.exec;if(\"function\"==typeof n){var i=n.call(t,e);if(\"object\"!=typeof i)throw TypeError(\"RegExp exec method returned something other than an Object or null\");return i}if(\"RegExp\"!==r(t))throw TypeError(\"RegExp#exec called on incompatible receiver\");return o.call(t,e)}},function(t,e,n){\"use strict\";var r=n(0),o=n(27),i=n(11),a=n(37),u=[].join,c=o!=Object,s=a(\"join\",\",\");r({target:\"Array\",proto:!0,forced:c||!s},{join:function(t){return u.call(i(this),void 0===t?\",\":t)}})},function(t,e,n){var r=n(6),o=n(167);t.exports=Object.setPrototypeOf||(\"__proto__\"in{}?function(){var t,e=!1,n={};try{(t=Object.getOwnPropertyDescriptor(Object.prototype,\"__proto__\").set).call(n,[]),e=n instanceof Array}catch(t){}return function(n,i){return r(n),o(i),e?t.call(n,i):n.__proto__=i,n}}():void 0)},function(t,e,n){\"use strict\";var r=n(17),o=n(8),i=n(1),a=n(7),u=i(\"species\");t.exports=function(t){var e=r(t),n=o.f;a&&e&&!e[u]&&n(e,u,{configurable:!0,get:function(){return this}})}},function(t,e,n){\"use strict\";var r=n(3);function o(t,e){return RegExp(t,e)}e.UNSUPPORTED_Y=r((function(){var t=o(\"a\",\"y\");return t.lastIndex=2,null!=t.exec(\"abcd\")})),e.BROKEN_CARET=r((function(){var t=o(\"^r\",\"gy\");return t.lastIndex=2,null!=t.exec(\"str\")}))},function(t,e,n){\"use strict\";var r=n(0),o=n(69).includes,i=n(92);r({target:\"Array\",proto:!0},{includes:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}}),i(\"includes\")},function(t,e,n){\"use strict\";var r=n(0),o=n(95),i=n(19);r({target:\"String\",proto:!0,forced:!n(96)(\"includes\")},{includes:function(t){return!!~String(i(this)).indexOf(o(t),arguments.length>1?arguments[1]:void 0)}})},function(t,e,n){\"use strict\";var r=n(0),o=n(3),i=n(43),a=n(4),u=n(12),c=n(14),s=n(78),f=n(118),l=n(51),p=n(1),h=n(30),d=p(\"isConcatSpreadable\"),v=h>=51||!o((function(){var t=[];return t[d]=!1,t.concat()[0]!==t})),y=l(\"concat\"),m=function(t){if(!a(t))return!1;var e=t[d];return void 0!==e?!!e:i(t)};r({target:\"Array\",proto:!0,forced:!v||!y},{concat:function(t){var e,n,r,o,i,a=u(this),l=f(a,0),p=0;for(e=-1,r=arguments.length;e9007199254740991)throw TypeError(\"Maximum allowed index exceeded\");for(n=0;n=9007199254740991)throw TypeError(\"Maximum allowed index exceeded\");s(l,p++,i)}return l.length=p,l}})},function(t,e,n){var r=n(140);t.exports=function(t,e,n){var o=null==t?void 0:r(t,e);return void 0===o?n:o}},function(t,e){t.exports=function(t){var e=null==t?0:t.length;return e?t[e-1]:void 0}},function(t,e,n){t.exports=n(294)},function(t,e,n){var r=n(7),o=n(8),i=n(6),a=n(47);t.exports=r?Object.defineProperties:function(t,e){i(t);for(var n,r=a(e),u=r.length,c=0;u>c;)o.f(t,n=r[c++],e[n]);return t}},function(t,e,n){var r=n(2),o=n(71),i=r.WeakMap;t.exports=\"function\"==typeof i&&/native code/.test(o(i))},function(t,e,n){\"use strict\";var r=n(107).IteratorPrototype,o=n(46),i=n(28),a=n(50),u=n(32),c=function(){return this};t.exports=function(t,e,n){var s=e+\" Iterator\";return t.prototype=o(r,{next:i(1,n)}),a(t,s,!1,!0),u[s]=c,t}},function(t,e,n){var r=n(4);t.exports=function(t){if(!r(t)&&null!==t)throw TypeError(\"Can't set \"+String(t)+\" as a prototype\");return t}},function(t,e,n){\"use strict\";var r,o,i,a,u=n(0),c=n(16),s=n(2),f=n(17),l=n(109),p=n(15),h=n(169),d=n(50),v=n(156),y=n(4),m=n(33),g=n(170),b=n(71),_=n(171),x=n(175),w=n(94),O=n(111).set,j=n(176),S=n(113),k=n(178),E=n(114),A=n(179),$=n(24),C=n(93),P=n(1),T=n(29),L=n(30),R=P(\"species\"),I=\"Promise\",M=$.get,N=$.set,D=$.getterFor(I),F=l,U=s.TypeError,B=s.document,z=s.process,q=f(\"fetch\"),V=E.f,H=V,W=!!(B&&B.createEvent&&s.dispatchEvent),G=\"function\"==typeof PromiseRejectionEvent,K=C(I,(function(){if(!(b(F)!==String(F))){if(66===L)return!0;if(!T&&!G)return!0}if(c&&!F.prototype.finally)return!0;if(L>=51&&/native code/.test(F))return!1;var t=F.resolve(1),e=function(t){t((function(){}),(function(){}))};return(t.constructor={})[R]=e,!(t.then((function(){}))instanceof e)})),J=K||!x((function(t){F.all(t).catch((function(){}))})),X=function(t){var e;return!(!y(t)||\"function\"!=typeof(e=t.then))&&e},Y=function(t,e){if(!t.notified){t.notified=!0;var n=t.reactions;j((function(){for(var r=t.value,o=1==t.state,i=0;n.length>i;){var a,u,c,s=n[i++],f=o?s.ok:s.fail,l=s.resolve,p=s.reject,h=s.domain;try{f?(o||(2===t.rejection&&et(t),t.rejection=1),!0===f?a=r:(h&&h.enter(),a=f(r),h&&(h.exit(),c=!0)),a===s.promise?p(U(\"Promise-chain cycle\")):(u=X(a))?u.call(a,l,p):l(a)):p(r)}catch(t){h&&!c&&h.exit(),p(t)}}t.reactions=[],t.notified=!1,e&&!t.rejection&&Z(t)}))}},Q=function(t,e,n){var r,o;W?((r=B.createEvent(\"Event\")).promise=e,r.reason=n,r.initEvent(t,!1,!0),s.dispatchEvent(r)):r={promise:e,reason:n},!G&&(o=s[\"on\"+t])?o(r):\"unhandledrejection\"===t&&k(\"Unhandled promise rejection\",n)},Z=function(t){O.call(s,(function(){var e,n=t.facade,r=t.value;if(tt(t)&&(e=A((function(){T?z.emit(\"unhandledRejection\",r,n):Q(\"unhandledrejection\",n,r)})),t.rejection=T||tt(t)?2:1,e.error))throw e.value}))},tt=function(t){return 1!==t.rejection&&!t.parent},et=function(t){O.call(s,(function(){var e=t.facade;T?z.emit(\"rejectionHandled\",e):Q(\"rejectionhandled\",e,t.value)}))},nt=function(t,e,n){return function(r){t(e,r,n)}},rt=function(t,e,n){t.done||(t.done=!0,n&&(t=n),t.value=e,t.state=2,Y(t,!0))},ot=function(t,e,n){if(!t.done){t.done=!0,n&&(t=n);try{if(t.facade===e)throw U(\"Promise can't be resolved itself\");var r=X(e);r?j((function(){var n={done:!1};try{r.call(e,nt(ot,n,t),nt(rt,n,t))}catch(e){rt(n,e,t)}})):(t.value=e,t.state=1,Y(t,!1))}catch(e){rt({done:!1},e,t)}}};K&&(F=function(t){g(this,F,I),m(t),r.call(this);var e=M(this);try{t(nt(ot,e),nt(rt,e))}catch(t){rt(e,t)}},(r=function(t){N(this,{type:I,done:!1,notified:!1,parent:!1,reactions:[],rejection:!1,state:0,value:void 0})}).prototype=h(F.prototype,{then:function(t,e){var n=D(this),r=V(w(this,F));return r.ok=\"function\"!=typeof t||t,r.fail=\"function\"==typeof e&&e,r.domain=T?z.domain:void 0,n.parent=!0,n.reactions.push(r),0!=n.state&&Y(n,!1),r.promise},catch:function(t){return this.then(void 0,t)}}),o=function(){var t=new r,e=M(t);this.promise=t,this.resolve=nt(ot,e),this.reject=nt(rt,e)},E.f=V=function(t){return t===F||t===i?new o(t):H(t)},c||\"function\"!=typeof l||(a=l.prototype.then,p(l.prototype,\"then\",(function(t,e){var n=this;return new F((function(t,e){a.call(n,t,e)})).then(t,e)}),{unsafe:!0}),\"function\"==typeof q&&u({global:!0,enumerable:!0,forced:!0},{fetch:function(t){return S(F,q.apply(s,arguments))}}))),u({global:!0,wrap:!0,forced:K},{Promise:F}),d(F,I,!1,!0),v(I),i=f(I),u({target:I,stat:!0,forced:K},{reject:function(t){var e=V(this);return e.reject.call(void 0,t),e.promise}}),u({target:I,stat:!0,forced:c||K},{resolve:function(t){return S(c&&this===i?F:this,t)}}),u({target:I,stat:!0,forced:J},{all:function(t){var e=this,n=V(e),r=n.resolve,o=n.reject,i=A((function(){var n=m(e.resolve),i=[],a=0,u=1;_(t,(function(t){var c=a++,s=!1;i.push(void 0),u++,n.call(e,t).then((function(t){s||(s=!0,i[c]=t,--u||r(i))}),o)})),--u||r(i)}));return i.error&&o(i.value),n.promise},race:function(t){var e=this,n=V(e),r=n.reject,o=A((function(){var o=m(e.resolve);_(t,(function(t){o.call(e,t).then(n.resolve,r)}))}));return o.error&&r(o.value),n.promise}})},function(t,e,n){var r=n(15);t.exports=function(t,e,n){for(var o in e)r(t,o,e[o],n);return t}},function(t,e){t.exports=function(t,e,n){if(!(t instanceof e))throw TypeError(\"Incorrect \"+(n?n+\" \":\"\")+\"invocation\");return t}},function(t,e,n){var r=n(6),o=n(172),i=n(14),a=n(75),u=n(173),c=n(174),s=function(t,e){this.stopped=t,this.result=e};t.exports=function(t,e,n){var f,l,p,h,d,v,y,m=n&&n.that,g=!(!n||!n.AS_ENTRIES),b=!(!n||!n.IS_ITERATOR),_=!(!n||!n.INTERRUPTED),x=a(e,m,1+g+_),w=function(t){return f&&c(f),new s(!0,t)},O=function(t){return g?(r(t),_?x(t[0],t[1],w):x(t[0],t[1])):_?x(t,w):x(t)};if(b)f=t;else{if(\"function\"!=typeof(l=u(t)))throw TypeError(\"Target is not iterable\");if(o(l)){for(p=0,h=i(t.length);h>p;p++)if((d=O(t[p]))&&d instanceof s)return d;return new s(!1)}f=l.call(t)}for(v=f.next;!(y=v.call(f)).done;){try{d=O(y.value)}catch(t){throw c(f),t}if(\"object\"==typeof d&&d&&d instanceof s)return d}return new s(!1)}},function(t,e,n){var r=n(1),o=n(32),i=r(\"iterator\"),a=Array.prototype;t.exports=function(t){return void 0!==t&&(o.Array===t||a[i]===t)}},function(t,e,n){var r=n(110),o=n(32),i=n(1)(\"iterator\");t.exports=function(t){if(null!=t)return t[i]||t[\"@@iterator\"]||o[r(t)]}},function(t,e,n){var r=n(6);t.exports=function(t){var e=t.return;if(void 0!==e)return r(e.call(t)).value}},function(t,e,n){var r=n(1)(\"iterator\"),o=!1;try{var i=0,a={next:function(){return{done:!!i++}},return:function(){o=!0}};a[r]=function(){return this},Array.from(a,(function(){throw 2}))}catch(t){}t.exports=function(t,e){if(!e&&!o)return!1;var n=!1;try{var i={};i[r]=function(){return{next:function(){return{done:n=!0}}}},t(i)}catch(t){}return n}},function(t,e,n){var r,o,i,a,u,c,s,f,l=n(2),p=n(20).f,h=n(111).set,d=n(112),v=n(177),y=n(29),m=l.MutationObserver||l.WebKitMutationObserver,g=l.document,b=l.process,_=l.Promise,x=p(l,\"queueMicrotask\"),w=x&&x.value;w||(r=function(){var t,e;for(y&&(t=b.domain)&&t.exit();o;){e=o.fn,o=o.next;try{e()}catch(t){throw o?a():i=void 0,t}}i=void 0,t&&t.enter()},d||y||v||!m||!g?_&&_.resolve?(s=_.resolve(void 0),f=s.then,a=function(){f.call(s,r)}):a=y?function(){b.nextTick(r)}:function(){h.call(l,r)}:(u=!0,c=g.createTextNode(\"\"),new m(r).observe(c,{characterData:!0}),a=function(){c.data=u=!u})),t.exports=w||function(t){var e={fn:t,next:void 0};i&&(i.next=e),o||(o=e,a()),i=e}},function(t,e,n){var r=n(68);t.exports=/web0s(?!.*chrome)/i.test(r)},function(t,e,n){var r=n(2);t.exports=function(t,e){var n=r.console;n&&n.error&&(1===arguments.length?n.error(t):n.error(t,e))}},function(t,e){t.exports=function(t){try{return{error:!1,value:t()}}catch(t){return{error:!0,value:t}}}},function(t,e,n){var r=n(0),o=n(181);r({target:\"Object\",stat:!0,forced:Object.assign!==o},{assign:o})},function(t,e,n){\"use strict\";var r=n(7),o=n(3),i=n(47),a=n(73),u=n(72),c=n(12),s=n(27),f=Object.assign,l=Object.defineProperty;t.exports=!f||o((function(){if(r&&1!==f({b:1},f(l({},\"a\",{enumerable:!0,get:function(){l(this,\"b\",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var t={},e={},n=Symbol();return t[n]=7,\"abcdefghijklmnopqrst\".split(\"\").forEach((function(t){e[t]=t})),7!=f({},t)[n]||\"abcdefghijklmnopqrst\"!=i(f({},e)).join(\"\")}))?function(t,e){for(var n=c(t),o=arguments.length,f=1,l=a.f,p=u.f;o>f;)for(var h,d=s(arguments[f++]),v=l?i(d).concat(l(d)):i(d),y=v.length,m=0;y>m;)h=v[m++],r&&!p.call(d,h)||(n[h]=d[h]);return n}:f},function(t,e,n){\"use strict\";var r=n(0),o=n(16),i=n(109),a=n(3),u=n(17),c=n(94),s=n(113),f=n(15);r({target:\"Promise\",proto:!0,real:!0,forced:!!i&&a((function(){i.prototype.finally.call({then:function(){}},(function(){}))}))},{finally:function(t){var e=c(this,u(\"Promise\")),n=\"function\"==typeof t;return this.then(n?function(n){return s(e,t()).then((function(){return n}))}:t,n?function(n){return s(e,t()).then((function(){throw n}))}:t)}}),o||\"function\"!=typeof i||i.prototype.finally||f(i.prototype,\"finally\",u(\"Promise\").prototype.finally)},function(t,e,n){\"use strict\";var r=n(76),o=n(110);t.exports=r?{}.toString:function(){return\"[object \"+o(this)+\"]\"}},function(t,e,n){var r=n(0),o=n(7),i=n(106),a=n(11),u=n(20),c=n(78);r({target:\"Object\",stat:!0,sham:!o},{getOwnPropertyDescriptors:function(t){for(var e,n,r=a(t),o=u.f,s=i(r),f={},l=0;s.length>l;)void 0!==(n=o(r,e=s[l++]))&&c(f,e,n);return f}})},function(t,e,n){var r=n(0),o=n(3),i=n(12),a=n(74),u=n(108);r({target:\"Object\",stat:!0,forced:o((function(){a(1)})),sham:!u},{getPrototypeOf:function(t){return a(i(t))}})},function(t,e,n){\"use strict\";var r=n(0),o=n(187).left,i=n(37),a=n(30),u=n(29);r({target:\"Array\",proto:!0,forced:!i(\"reduce\")||!u&&a>79&&a<83},{reduce:function(t){return o(this,t,arguments.length,arguments.length>1?arguments[1]:void 0)}})},function(t,e,n){var r=n(33),o=n(12),i=n(27),a=n(14),u=function(t){return function(e,n,u,c){r(n);var s=o(e),f=i(s),l=a(s.length),p=t?l-1:0,h=t?-1:1;if(u<2)for(;;){if(p in f){c=f[p],p+=h;break}if(p+=h,t?p<0:l<=p)throw TypeError(\"Reduce of empty array with no initial value\")}for(;t?p>=0:l>p;p+=h)p in f&&(c=n(c,f[p],p,s));return c}};t.exports={left:u(!1),right:u(!0)}},function(t,e,n){\"use strict\";var r,o=n(0),i=n(20).f,a=n(14),u=n(95),c=n(19),s=n(96),f=n(16),l=\"\".startsWith,p=Math.min,h=s(\"startsWith\");o({target:\"String\",proto:!0,forced:!!(f||h||(r=i(String.prototype,\"startsWith\"),!r||r.writable))&&!h},{startsWith:function(t){var e=String(c(this));u(t);var n=a(p(arguments.length>1?arguments[1]:void 0,e.length)),r=String(t);return l?l.call(e,r,n):e.slice(n,n+r.length)===r}})},function(t,e,n){var r=n(0),o=n(120),i=n(3),a=n(4),u=n(190).onFreeze,c=Object.freeze;r({target:\"Object\",stat:!0,forced:i((function(){c(1)})),sham:!o},{freeze:function(t){return c&&a(t)?c(u(t)):t}})},function(t,e,n){var r=n(31),o=n(4),i=n(5),a=n(8).f,u=n(45),c=n(120),s=u(\"meta\"),f=0,l=Object.isExtensible||function(){return!0},p=function(t){a(t,s,{value:{objectID:\"O\"+ ++f,weakData:{}}})},h=t.exports={REQUIRED:!1,fastKey:function(t,e){if(!o(t))return\"symbol\"==typeof t?t:(\"string\"==typeof t?\"S\":\"P\")+t;if(!i(t,s)){if(!l(t))return\"F\";if(!e)return\"E\";p(t)}return t[s].objectID},getWeakData:function(t,e){if(!i(t,s)){if(!l(t))return!0;if(!e)return!1;p(t)}return t[s].weakData},onFreeze:function(t){return c&&h.REQUIRED&&l(t)&&!i(t,s)&&p(t),t}};r[s]=!0},function(t,e,n){n(0)({target:\"Object\",stat:!0,sham:!n(7)},{create:n(46)})},function(t,e,n){var r=n(12),o=Math.floor,i=\"\".replace,a=/\\$([$&'`]|\\d{1,2}|<[^>]*>)/g,u=/\\$([$&'`]|\\d{1,2})/g;t.exports=function(t,e,n,c,s,f){var l=n+t.length,p=c.length,h=u;return void 0!==s&&(s=r(s),h=a),i.call(f,h,(function(r,i){var a;switch(i.charAt(0)){case\"$\":return\"$\";case\"&\":return t;case\"`\":return e.slice(0,n);case\"'\":return e.slice(l);case\"<\":a=s[i.slice(1,-1)];break;default:var u=+i;if(0===u)return r;if(u>p){var f=o(u/10);return 0===f?r:f<=p?void 0===c[f-1]?i.charAt(1):c[f-1]+i.charAt(1):r}a=c[u-1]}return void 0===a?\"\":a}))}},function(t,e,n){var r=n(121),o=n(194);t.exports=function t(e,n,i,a,u){var c=-1,s=e.length;for(i||(i=o),u||(u=[]);++c0&&i(f)?n>1?t(f,n-1,i,a,u):r(u,f):a||(u[u.length]=f)}return u}},function(t,e,n){var r=n(38),o=n(79),i=n(10),a=r?r.isConcatSpreadable:void 0;t.exports=function(t){return i(t)||o(t)||!!(a&&t&&t[a])}},function(t,e,n){var r=n(26),o=n(21);t.exports=function(t){return o(t)&&\"[object Arguments]\"==r(t)}},function(t,e,n){var r=n(38),o=Object.prototype,i=o.hasOwnProperty,a=o.toString,u=r?r.toStringTag:void 0;t.exports=function(t){var e=i.call(t,u),n=t[u];try{t[u]=void 0;var r=!0}catch(t){}var o=a.call(t);return r&&(e?t[u]=n:delete t[u]),o}},function(t,e){var n=Object.prototype.toString;t.exports=function(t){return n.call(t)}},function(t,e,n){var r=n(199),o=n(255),i=n(87),a=n(10),u=n(265);t.exports=function(t){return\"function\"==typeof t?t:null==t?i:\"object\"==typeof t?a(t)?o(t[0],t[1]):r(t):u(t)}},function(t,e,n){var r=n(200),o=n(254),i=n(139);t.exports=function(t){var e=o(t);return 1==e.length&&e[0][2]?i(e[0][0],e[0][1]):function(n){return n===t||r(n,t,e)}}},function(t,e,n){var r=n(123),o=n(127);t.exports=function(t,e,n,i){var a=n.length,u=a,c=!i;if(null==t)return!u;for(t=Object(t);a--;){var s=n[a];if(c&&s[2]?s[1]!==t[s[0]]:!(s[0]in t))return!1}for(;++a-1}},function(t,e,n){var r=n(53);t.exports=function(t,e){var n=this.__data__,o=r(n,t);return o<0?(++this.size,n.push([t,e])):n[o][1]=e,this}},function(t,e,n){var r=n(52);t.exports=function(){this.__data__=new r,this.size=0}},function(t,e){t.exports=function(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n}},function(t,e){t.exports=function(t){return this.__data__.get(t)}},function(t,e){t.exports=function(t){return this.__data__.has(t)}},function(t,e,n){var r=n(52),o=n(80),i=n(82);t.exports=function(t,e){var n=this.__data__;if(n instanceof r){var a=n.__data__;if(!o||a.length<199)return a.push([t,e]),this.size=++n.size,this;n=this.__data__=new i(a)}return n.set(t,e),this.size=n.size,this}},function(t,e,n){var r=n(125),o=n(212),i=n(81),a=n(126),u=/^\\[object .+?Constructor\\]$/,c=Function.prototype,s=Object.prototype,f=c.toString,l=s.hasOwnProperty,p=RegExp(\"^\"+f.call(l).replace(/[\\\\^$.*+?()[\\]{}|]/g,\"\\\\$&\").replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g,\"$1.*?\")+\"$\");t.exports=function(t){return!(!i(t)||o(t))&&(r(t)?p:u).test(a(t))}},function(t,e,n){var r,o=n(213),i=(r=/[^.]+$/.exec(o&&o.keys&&o.keys.IE_PROTO||\"\"))?\"Symbol(src)_1.\"+r:\"\";t.exports=function(t){return!!i&&i in t}},function(t,e,n){var r=n(13)[\"__core-js_shared__\"];t.exports=r},function(t,e){t.exports=function(t,e){return null==t?void 0:t[e]}},function(t,e,n){var r=n(216),o=n(52),i=n(80);t.exports=function(){this.size=0,this.__data__={hash:new r,map:new(i||o),string:new r}}},function(t,e,n){var r=n(217),o=n(218),i=n(219),a=n(220),u=n(221);function c(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e0){if(++e>=800)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}},function(t,e,n){var r=n(129),o=n(277),i=n(282),a=n(130),u=n(283),c=n(83);t.exports=function(t,e,n){var s=-1,f=o,l=t.length,p=!0,h=[],d=h;if(n)p=!1,f=i;else if(l>=200){var v=e?null:u(t);if(v)return c(v);p=!1,f=a,d=new r}else d=e?[]:h;t:for(;++s-1}},function(t,e,n){var r=n(279),o=n(280),i=n(281);t.exports=function(t,e,n){return e==e?i(t,e,n):r(t,o,n)}},function(t,e){t.exports=function(t,e,n,r){for(var o=t.length,i=n+(r?1:-1);r?i--:++ii;)o.push(arguments[i++]);if(r=e,(h(e)||void 0!==t)&&!it(t))return p(e)||(e=function(t,e){if(\"function\"==typeof r&&(e=r.call(this,t,e)),!it(e))return e}),o[1]=e,H.apply(null,o)}});V.prototype[U]||E(V.prototype,U,V.prototype.valueOf),M(V,\"Symbol\"),P[F]=!0},function(t,e,n){var r=n(11),o=n(61).f,i={}.toString,a=\"object\"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];t.exports.f=function(t){return a&&\"[object Window]\"==i.call(t)?function(t){try{return o(t)}catch(t){return a.slice()}}(t):o(r(t))}},function(t,e,n){var r=n(99),o=n(5),i=n(143),a=n(8).f;t.exports=function(t){var e=r.Symbol||(r.Symbol={});o(e,t)||a(e,t,{value:i.f(t)})}},function(t,e,n){\"use strict\";var r=n(0),o=n(7),i=n(2),a=n(5),u=n(4),c=n(8).f,s=n(105),f=i.Symbol;if(o&&\"function\"==typeof f&&(!(\"description\"in f.prototype)||void 0!==f().description)){var l={},p=function(){var t=arguments.length<1||void 0===arguments[0]?void 0:String(arguments[0]),e=this instanceof p?new f(t):void 0===t?f():f(t);return\"\"===t&&(l[e]=!0),e};s(p,f);var h=p.prototype=f.prototype;h.constructor=p;var d=h.toString,v=\"Symbol(test)\"==String(f(\"test\")),y=/^Symbol\\((.*)\\)[^)]+$/;c(h,\"description\",{configurable:!0,get:function(){var t=u(this)?this.valueOf():this,e=d.call(t);if(a(l,t))return\"\";var n=v?e.slice(7,-1):e.replace(y,\"$1\");return\"\"===n?void 0:n}}),r({global:!0,forced:!0},{Symbol:p})}},function(t,e,n){\"use strict\";n(144)},function(t,e,n){\"use strict\";n(145)},function(t,e,n){\"use strict\";n.r(e);n(97),n(168),n(180),n(182);function r(t,e,n,r,o,i,a){try{var u=t[i](a),c=u.value}catch(t){return void n(t)}u.done?e(c):Promise.resolve(c).then(r,o)}function o(t){return function(){var e=this,n=arguments;return new Promise((function(o,i){var a=t.apply(e,n);function u(t){r(a,o,i,u,c,\"next\",t)}function c(t){r(a,o,i,u,c,\"throw\",t)}u(void 0)}))}}n(115),n(77),n(34),n(35),n(36),n(59),n(23);var i=Object.freeze({});function a(t){return null==t}function u(t){return null!=t}function c(t){return!0===t}function s(t){return\"string\"==typeof t||\"number\"==typeof t||\"symbol\"==typeof t||\"boolean\"==typeof t}function f(t){return null!==t&&\"object\"==typeof t}var l=Object.prototype.toString;function p(t){return\"[object Object]\"===l.call(t)}function h(t){return\"[object RegExp]\"===l.call(t)}function d(t){var e=parseFloat(String(t));return e>=0&&Math.floor(e)===e&&isFinite(t)}function v(t){return u(t)&&\"function\"==typeof t.then&&\"function\"==typeof t.catch}function y(t){return null==t?\"\":Array.isArray(t)||p(t)&&t.toString===l?JSON.stringify(t,null,2):String(t)}function m(t){var e=parseFloat(t);return isNaN(e)?t:e}function g(t,e){for(var n=Object.create(null),r=t.split(\",\"),o=0;o-1)return t.splice(n,1)}}var x=Object.prototype.hasOwnProperty;function w(t,e){return x.call(t,e)}function O(t){var e=Object.create(null);return function(n){return e[n]||(e[n]=t(n))}}var j=/-(\\w)/g,S=O((function(t){return t.replace(j,(function(t,e){return e?e.toUpperCase():\"\"}))})),k=O((function(t){return t.charAt(0).toUpperCase()+t.slice(1)})),E=/\\B([A-Z])/g,A=O((function(t){return t.replace(E,\"-$1\").toLowerCase()}));var $=Function.prototype.bind?function(t,e){return t.bind(e)}:function(t,e){function n(n){var r=arguments.length;return r?r>1?t.apply(e,arguments):t.call(e,n):t.call(e)}return n._length=t.length,n};function C(t,e){e=e||0;for(var n=t.length-e,r=new Array(n);n--;)r[n]=t[n+e];return r}function P(t,e){for(var n in e)t[n]=e[n];return t}function T(t){for(var e={},n=0;n0,Z=X&&X.indexOf(\"edge/\")>0,tt=(X&&X.indexOf(\"android\"),X&&/iphone|ipad|ipod|ios/.test(X)||\"ios\"===J),et=(X&&/chrome\\/\\d+/.test(X),X&&/phantomjs/.test(X),X&&X.match(/firefox\\/(\\d+)/)),nt={}.watch,rt=!1;if(G)try{var ot={};Object.defineProperty(ot,\"passive\",{get:function(){rt=!0}}),window.addEventListener(\"test-passive\",null,ot)}catch(t){}var it=function(){return void 0===H&&(H=!G&&!K&&\"undefined\"!=typeof global&&(global.process&&\"server\"===global.process.env.VUE_ENV)),H},at=G&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function ut(t){return\"function\"==typeof t&&/native code/.test(t.toString())}var ct,st=\"undefined\"!=typeof Symbol&&ut(Symbol)&&\"undefined\"!=typeof Reflect&&ut(Reflect.ownKeys);ct=\"undefined\"!=typeof Set&&ut(Set)?Set:function(){function t(){this.set=Object.create(null)}return t.prototype.has=function(t){return!0===this.set[t]},t.prototype.add=function(t){this.set[t]=!0},t.prototype.clear=function(){this.set=Object.create(null)},t}();var ft=L,lt=0,pt=function(){this.id=lt++,this.subs=[]};pt.prototype.addSub=function(t){this.subs.push(t)},pt.prototype.removeSub=function(t){_(this.subs,t)},pt.prototype.depend=function(){pt.target&&pt.target.addDep(this)},pt.prototype.notify=function(){var t=this.subs.slice();for(var e=0,n=t.length;e-1)if(i&&!w(o,\"default\"))a=!1;else if(\"\"===a||a===A(t)){var c=qt(String,o.type);(c<0||u0&&(pe((o=t(o,(n||\"\")+\"_\"+r))[0])&&pe(f)&&(l[i]=bt(f.text+o[0].text),o.shift()),l.push.apply(l,o)):s(o)?pe(f)?l[i]=bt(f.text+o):\"\"!==o&&l.push(bt(o)):pe(o)&&pe(f)?l[i]=bt(f.text+o.text):(c(e._isVList)&&u(o.tag)&&a(o.key)&&u(n)&&(o.key=\"__vlist\"+n+\"_\"+r+\"__\"),l.push(o)));return l}(t):void 0}function pe(t){return u(t)&&u(t.text)&&!1===t.isComment}function he(t,e){if(t){for(var n=Object.create(null),r=st?Reflect.ownKeys(t):Object.keys(t),o=0;o0,a=t?!!t.$stable:!o,u=t&&t.$key;if(t){if(t._normalized)return t._normalized;if(a&&n&&n!==i&&u===n.$key&&!o&&!n.$hasNormal)return n;for(var c in r={},t)t[c]&&\"$\"!==c[0]&&(r[c]=me(e,c,t[c]))}else r={};for(var s in e)s in r||(r[s]=ge(e,s));return t&&Object.isExtensible(t)&&(t._normalized=r),q(r,\"$stable\",a),q(r,\"$key\",u),q(r,\"$hasNormal\",o),r}function me(t,e,n){var r=function(){var t=arguments.length?n.apply(null,arguments):n({});return(t=t&&\"object\"==typeof t&&!Array.isArray(t)?[t]:le(t))&&(0===t.length||1===t.length&&t[0].isComment)?void 0:t};return n.proxy&&Object.defineProperty(t,e,{get:r,enumerable:!0,configurable:!0}),r}function ge(t,e){return function(){return t[e]}}function be(t,e){var n,r,o,i,a;if(Array.isArray(t)||\"string\"==typeof t)for(n=new Array(t.length),r=0,o=t.length;rdocument.createEvent(\"Event\").timeStamp&&(fn=function(){return ln.now()})}function pn(){var t,e;for(sn=fn(),un=!0,nn.sort((function(t,e){return t.id-e.id})),cn=0;cncn&&nn[n].id>t.id;)n--;nn.splice(n+1,0,t)}else nn.push(t);an||(an=!0,re(pn))}}(this)},dn.prototype.run=function(){if(this.active){var t=this.get();if(t!==this.value||f(t)||this.deep){var e=this.value;if(this.value=t,this.user)try{this.cb.call(this.vm,t,e)}catch(t){Vt(t,this.vm,'callback for watcher \"'+this.expression+'\"')}else this.cb.call(this.vm,t,e)}}},dn.prototype.evaluate=function(){this.value=this.get(),this.dirty=!1},dn.prototype.depend=function(){for(var t=this.deps.length;t--;)this.deps[t].depend()},dn.prototype.teardown=function(){if(this.active){this.vm._isBeingDestroyed||_(this.vm._watchers,this);for(var t=this.deps.length;t--;)this.deps[t].removeSub(this);this.active=!1}};var vn={enumerable:!0,configurable:!0,get:L,set:L};function yn(t,e,n){vn.get=function(){return this[e][n]},vn.set=function(t){this[e][n]=t},Object.defineProperty(t,n,vn)}function mn(t){t._watchers=[];var e=t.$options;e.props&&function(t,e){var n=t.$options.propsData||{},r=t._props={},o=t.$options._propKeys=[];t.$parent&&St(!1);var i=function(i){o.push(i);var a=Ut(i,e,n,t);At(r,i,a),i in t||yn(t,\"_props\",i)};for(var a in e)i(a);St(!0)}(t,e.props),e.methods&&function(t,e){t.$options.props;for(var n in e)t[n]=\"function\"!=typeof e[n]?L:$(e[n],t)}(t,e.methods),e.data?function(t){var e=t.$options.data;p(e=t._data=\"function\"==typeof e?function(t,e){dt();try{return t.call(e,e)}catch(t){return Vt(t,e,\"data()\"),{}}finally{vt()}}(e,t):e||{})||(e={});var n=Object.keys(e),r=t.$options.props,o=(t.$options.methods,n.length);for(;o--;){var i=n[o];0,r&&w(r,i)||(a=void 0,36!==(a=(i+\"\").charCodeAt(0))&&95!==a&&yn(t,\"_data\",i))}var a;Et(e,!0)}(t):Et(t._data={},!0),e.computed&&function(t,e){var n=t._computedWatchers=Object.create(null),r=it();for(var o in e){var i=e[o],a=\"function\"==typeof i?i:i.get;0,r||(n[o]=new dn(t,a||L,L,gn)),o in t||bn(t,o,i)}}(t,e.computed),e.watch&&e.watch!==nt&&function(t,e){for(var n in e){var r=e[n];if(Array.isArray(r))for(var o=0;o-1:\"string\"==typeof t?t.split(\",\").indexOf(e)>-1:!!h(t)&&t.test(e)}function $n(t,e){var n=t.cache,r=t.keys,o=t._vnode;for(var i in n){var a=n[i];if(a){var u=En(a.componentOptions);u&&!e(u)&&Cn(n,i,r,o)}}}function Cn(t,e,n,r){var o=t[e];!o||r&&o.tag===r.tag||o.componentInstance.$destroy(),t[e]=null,_(n,e)}Sn.prototype._init=function(t){var e=this;e._uid=On++,e._isVue=!0,t&&t._isComponent?function(t,e){var n=t.$options=Object.create(t.constructor.options),r=e._parentVnode;n.parent=e.parent,n._parentVnode=r;var o=r.componentOptions;n.propsData=o.propsData,n._parentListeners=o.listeners,n._renderChildren=o.children,n._componentTag=o.tag,e.render&&(n.render=e.render,n.staticRenderFns=e.staticRenderFns)}(e,t):e.$options=Dt(jn(e.constructor),t||{},e),e._renderProxy=e,e._self=e,function(t){var e=t.$options,n=e.parent;if(n&&!e.abstract){for(;n.$options.abstract&&n.$parent;)n=n.$parent;n.$children.push(t)}t.$parent=n,t.$root=n?n.$root:t,t.$children=[],t.$refs={},t._watcher=null,t._inactive=null,t._directInactive=!1,t._isMounted=!1,t._isDestroyed=!1,t._isBeingDestroyed=!1}(e),function(t){t._events=Object.create(null),t._hasHookEvent=!1;var e=t.$options._parentListeners;e&&Xe(t,e)}(e),function(t){t._vnode=null,t._staticTrees=null;var e=t.$options,n=t.$vnode=e._parentVnode,r=n&&n.context;t.$slots=de(e._renderChildren,r),t.$scopedSlots=i,t._c=function(e,n,r,o){return Be(t,e,n,r,o,!1)},t.$createElement=function(e,n,r,o){return Be(t,e,n,r,o,!0)};var o=n&&n.data;At(t,\"$attrs\",o&&o.attrs||i,null,!0),At(t,\"$listeners\",e._parentListeners||i,null,!0)}(e),en(e,\"beforeCreate\"),function(t){var e=he(t.$options.inject,t);e&&(St(!1),Object.keys(e).forEach((function(n){At(t,n,e[n])})),St(!0))}(e),mn(e),function(t){var e=t.$options.provide;e&&(t._provided=\"function\"==typeof e?e.call(t):e)}(e),en(e,\"created\"),e.$options.el&&e.$mount(e.$options.el)},function(t){var e={get:function(){return this._data}},n={get:function(){return this._props}};Object.defineProperty(t.prototype,\"$data\",e),Object.defineProperty(t.prototype,\"$props\",n),t.prototype.$set=$t,t.prototype.$delete=Ct,t.prototype.$watch=function(t,e,n){if(p(e))return wn(this,t,e,n);(n=n||{}).user=!0;var r=new dn(this,t,e,n);if(n.immediate)try{e.call(this,r.value)}catch(t){Vt(t,this,'callback for immediate watcher \"'+r.expression+'\"')}return function(){r.teardown()}}}(Sn),function(t){var e=/^hook:/;t.prototype.$on=function(t,n){var r=this;if(Array.isArray(t))for(var o=0,i=t.length;o1?C(n):n;for(var r=C(arguments,1),o='event handler for \"'+t+'\"',i=0,a=n.length;iparseInt(this.max)&&Cn(a,u[0],u,this._vnode)),e.data.keepAlive=!0}return e||t&&t[0]}}};!function(t){var e={get:function(){return B}};Object.defineProperty(t,\"config\",e),t.util={warn:ft,extend:P,mergeOptions:Dt,defineReactive:At},t.set=$t,t.delete=Ct,t.nextTick=re,t.observable=function(t){return Et(t),t},t.options=Object.create(null),F.forEach((function(e){t.options[e+\"s\"]=Object.create(null)})),t.options._base=t,P(t.options.components,Tn),function(t){t.use=function(t){var e=this._installedPlugins||(this._installedPlugins=[]);if(e.indexOf(t)>-1)return this;var n=C(arguments,1);return n.unshift(this),\"function\"==typeof t.install?t.install.apply(t,n):\"function\"==typeof t&&t.apply(null,n),e.push(t),this}}(t),function(t){t.mixin=function(t){return this.options=Dt(this.options,t),this}}(t),kn(t),function(t){F.forEach((function(e){t[e]=function(t,n){return n?(\"component\"===e&&p(n)&&(n.name=n.name||t,n=this.options._base.extend(n)),\"directive\"===e&&\"function\"==typeof n&&(n={bind:n,update:n}),this.options[e+\"s\"][t]=n,n):this.options[e+\"s\"][t]}}))}(t)}(Sn),Object.defineProperty(Sn.prototype,\"$isServer\",{get:it}),Object.defineProperty(Sn.prototype,\"$ssrContext\",{get:function(){return this.$vnode&&this.$vnode.ssrContext}}),Object.defineProperty(Sn,\"FunctionalRenderContext\",{value:Re}),Sn.version=\"2.6.12\";var Ln=g(\"style,class\"),Rn=g(\"input,textarea,option,select,progress\"),In=g(\"contenteditable,draggable,spellcheck\"),Mn=g(\"events,caret,typing,plaintext-only\"),Nn=g(\"allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,translate,truespeed,typemustmatch,visible\"),Dn=\"http://www.w3.org/1999/xlink\",Fn=function(t){return\":\"===t.charAt(5)&&\"xlink\"===t.slice(0,5)},Un=function(t){return Fn(t)?t.slice(6,t.length):\"\"},Bn=function(t){return null==t||!1===t};function zn(t){for(var e=t.data,n=t,r=t;u(r.componentInstance);)(r=r.componentInstance._vnode)&&r.data&&(e=qn(r.data,e));for(;u(n=n.parent);)n&&n.data&&(e=qn(e,n.data));return function(t,e){if(u(t)||u(e))return Vn(t,Hn(e));return\"\"}(e.staticClass,e.class)}function qn(t,e){return{staticClass:Vn(t.staticClass,e.staticClass),class:u(t.class)?[t.class,e.class]:e.class}}function Vn(t,e){return t?e?t+\" \"+e:t:e||\"\"}function Hn(t){return Array.isArray(t)?function(t){for(var e,n=\"\",r=0,o=t.length;r-1?dr(t,e,n):Nn(e)?Bn(n)?t.removeAttribute(e):(n=\"allowfullscreen\"===e&&\"EMBED\"===t.tagName?\"true\":e,t.setAttribute(e,n)):In(e)?t.setAttribute(e,function(t,e){return Bn(e)||\"false\"===e?\"false\":\"contenteditable\"===t&&Mn(e)?e:\"true\"}(e,n)):Fn(e)?Bn(n)?t.removeAttributeNS(Dn,Un(e)):t.setAttributeNS(Dn,e,n):dr(t,e,n)}function dr(t,e,n){if(Bn(n))t.removeAttribute(e);else{if(Y&&!Q&&\"TEXTAREA\"===t.tagName&&\"placeholder\"===e&&\"\"!==n&&!t.__ieph){var r=function(e){e.stopImmediatePropagation(),t.removeEventListener(\"input\",r)};t.addEventListener(\"input\",r),t.__ieph=!0}t.setAttribute(e,n)}}var vr={create:pr,update:pr};function yr(t,e){var n=e.elm,r=e.data,o=t.data;if(!(a(r.staticClass)&&a(r.class)&&(a(o)||a(o.staticClass)&&a(o.class)))){var i=zn(e),c=n._transitionClasses;u(c)&&(i=Vn(i,Hn(c))),i!==n._prevClass&&(n.setAttribute(\"class\",i),n._prevClass=i)}}var mr,gr={create:yr,update:yr};function br(t,e,n){var r=mr;return function o(){var i=e.apply(null,arguments);null!==i&&wr(t,o,n,r)}}var _r=Jt&&!(et&&Number(et[1])<=53);function xr(t,e,n,r){if(_r){var o=sn,i=e;e=i._wrapper=function(t){if(t.target===t.currentTarget||t.timeStamp>=o||t.timeStamp<=0||t.target.ownerDocument!==document)return i.apply(this,arguments)}}mr.addEventListener(t,e,rt?{capture:n,passive:r}:n)}function wr(t,e,n,r){(r||mr).removeEventListener(t,e._wrapper||e,n)}function Or(t,e){if(!a(t.data.on)||!a(e.data.on)){var n=e.data.on||{},r=t.data.on||{};mr=e.elm,function(t){if(u(t.__r)){var e=Y?\"change\":\"input\";t[e]=[].concat(t.__r,t[e]||[]),delete t.__r}u(t.__c)&&(t.change=[].concat(t.__c,t.change||[]),delete t.__c)}(n),ce(n,r,xr,wr,br,e.context),mr=void 0}}var jr,Sr={create:Or,update:Or};function kr(t,e){if(!a(t.data.domProps)||!a(e.data.domProps)){var n,r,o=e.elm,i=t.data.domProps||{},c=e.data.domProps||{};for(n in u(c.__ob__)&&(c=e.data.domProps=P({},c)),i)n in c||(o[n]=\"\");for(n in c){if(r=c[n],\"textContent\"===n||\"innerHTML\"===n){if(e.children&&(e.children.length=0),r===i[n])continue;1===o.childNodes.length&&o.removeChild(o.childNodes[0])}if(\"value\"===n&&\"PROGRESS\"!==o.tagName){o._value=r;var s=a(r)?\"\":String(r);Er(o,s)&&(o.value=s)}else if(\"innerHTML\"===n&&Kn(o.tagName)&&a(o.innerHTML)){(jr=jr||document.createElement(\"div\")).innerHTML=\"\"+r+\"\";for(var f=jr.firstChild;o.firstChild;)o.removeChild(o.firstChild);for(;f.firstChild;)o.appendChild(f.firstChild)}else if(r!==i[n])try{o[n]=r}catch(t){}}}}function Er(t,e){return!t.composing&&(\"OPTION\"===t.tagName||function(t,e){var n=!0;try{n=document.activeElement!==t}catch(t){}return n&&t.value!==e}(t,e)||function(t,e){var n=t.value,r=t._vModifiers;if(u(r)){if(r.number)return m(n)!==m(e);if(r.trim)return n.trim()!==e.trim()}return n!==e}(t,e))}var Ar={create:kr,update:kr},$r=O((function(t){var e={},n=/:(.+)/;return t.split(/;(?![^(]*\\))/g).forEach((function(t){if(t){var r=t.split(n);r.length>1&&(e[r[0].trim()]=r[1].trim())}})),e}));function Cr(t){var e=Pr(t.style);return t.staticStyle?P(t.staticStyle,e):e}function Pr(t){return Array.isArray(t)?T(t):\"string\"==typeof t?$r(t):t}var Tr,Lr=/^--/,Rr=/\\s*!important$/,Ir=function(t,e,n){if(Lr.test(e))t.style.setProperty(e,n);else if(Rr.test(n))t.style.setProperty(A(e),n.replace(Rr,\"\"),\"important\");else{var r=Nr(e);if(Array.isArray(n))for(var o=0,i=n.length;o-1?e.split(Ur).forEach((function(e){return t.classList.add(e)})):t.classList.add(e);else{var n=\" \"+(t.getAttribute(\"class\")||\"\")+\" \";n.indexOf(\" \"+e+\" \")<0&&t.setAttribute(\"class\",(n+e).trim())}}function zr(t,e){if(e&&(e=e.trim()))if(t.classList)e.indexOf(\" \")>-1?e.split(Ur).forEach((function(e){return t.classList.remove(e)})):t.classList.remove(e),t.classList.length||t.removeAttribute(\"class\");else{for(var n=\" \"+(t.getAttribute(\"class\")||\"\")+\" \",r=\" \"+e+\" \";n.indexOf(r)>=0;)n=n.replace(r,\" \");(n=n.trim())?t.setAttribute(\"class\",n):t.removeAttribute(\"class\")}}function qr(t){if(t){if(\"object\"==typeof t){var e={};return!1!==t.css&&P(e,Vr(t.name||\"v\")),P(e,t),e}return\"string\"==typeof t?Vr(t):void 0}}var Vr=O((function(t){return{enterClass:t+\"-enter\",enterToClass:t+\"-enter-to\",enterActiveClass:t+\"-enter-active\",leaveClass:t+\"-leave\",leaveToClass:t+\"-leave-to\",leaveActiveClass:t+\"-leave-active\"}})),Hr=G&&!Q,Wr=\"transition\",Gr=\"transitionend\",Kr=\"animation\",Jr=\"animationend\";Hr&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&(Wr=\"WebkitTransition\",Gr=\"webkitTransitionEnd\"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(Kr=\"WebkitAnimation\",Jr=\"webkitAnimationEnd\"));var Xr=G?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:function(t){return t()};function Yr(t){Xr((function(){Xr(t)}))}function Qr(t,e){var n=t._transitionClasses||(t._transitionClasses=[]);n.indexOf(e)<0&&(n.push(e),Br(t,e))}function Zr(t,e){t._transitionClasses&&_(t._transitionClasses,e),zr(t,e)}function to(t,e,n){var r=no(t,e),o=r.type,i=r.timeout,a=r.propCount;if(!o)return n();var u=\"transition\"===o?Gr:Jr,c=0,s=function(){t.removeEventListener(u,f),n()},f=function(e){e.target===t&&++c>=a&&s()};setTimeout((function(){c0&&(n=\"transition\",f=a,l=i.length):\"animation\"===e?s>0&&(n=\"animation\",f=s,l=c.length):l=(n=(f=Math.max(a,s))>0?a>s?\"transition\":\"animation\":null)?\"transition\"===n?i.length:c.length:0,{type:n,timeout:f,propCount:l,hasTransform:\"transition\"===n&&eo.test(r[Wr+\"Property\"])}}function ro(t,e){for(;t.length1}function so(t,e){!0!==e.data.show&&io(e)}var fo=function(t){var e,n,r={},o=t.modules,i=t.nodeOps;for(e=0;ed?b(t,a(n[m+1])?null:n[m+1].elm,n,h,m,r):h>m&&x(e,p,d)}(p,y,m,n,f):u(m)?(u(t.text)&&i.setTextContent(p,\"\"),b(p,null,m,0,m.length-1,n)):u(y)?x(y,0,y.length-1):u(t.text)&&i.setTextContent(p,\"\"):t.text!==e.text&&i.setTextContent(p,e.text),u(d)&&u(h=d.hook)&&u(h=h.postpatch)&&h(t,e)}}}function S(t,e,n){if(c(n)&&u(t.parent))t.parent.data.pendingInsert=e;else for(var r=0;r-1,a.selected!==i&&(a.selected=i);else if(M(yo(a),r))return void(t.selectedIndex!==u&&(t.selectedIndex=u));o||(t.selectedIndex=-1)}}function vo(t,e){return e.every((function(e){return!M(e,t)}))}function yo(t){return\"_value\"in t?t._value:t.value}function mo(t){t.target.composing=!0}function go(t){t.target.composing&&(t.target.composing=!1,bo(t.target,\"input\"))}function bo(t,e){var n=document.createEvent(\"HTMLEvents\");n.initEvent(e,!0,!0),t.dispatchEvent(n)}function _o(t){return!t.componentInstance||t.data&&t.data.transition?t:_o(t.componentInstance._vnode)}var xo={model:lo,show:{bind:function(t,e,n){var r=e.value,o=(n=_o(n)).data&&n.data.transition,i=t.__vOriginalDisplay=\"none\"===t.style.display?\"\":t.style.display;r&&o?(n.data.show=!0,io(n,(function(){t.style.display=i}))):t.style.display=r?i:\"none\"},update:function(t,e,n){var r=e.value;!r!=!e.oldValue&&((n=_o(n)).data&&n.data.transition?(n.data.show=!0,r?io(n,(function(){t.style.display=t.__vOriginalDisplay})):ao(n,(function(){t.style.display=\"none\"}))):t.style.display=r?t.__vOriginalDisplay:\"none\")},unbind:function(t,e,n,r,o){o||(t.style.display=t.__vOriginalDisplay)}}},wo={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]};function Oo(t){var e=t&&t.componentOptions;return e&&e.Ctor.options.abstract?Oo(We(e.children)):t}function jo(t){var e={},n=t.$options;for(var r in n.propsData)e[r]=t[r];var o=n._parentListeners;for(var i in o)e[S(i)]=o[i];return e}function So(t,e){if(/\\d-keep-alive$/.test(e.tag))return t(\"keep-alive\",{props:e.componentOptions.propsData})}var ko=function(t){return t.tag||He(t)},Eo=function(t){return\"show\"===t.name},Ao={name:\"transition\",props:wo,abstract:!0,render:function(t){var e=this,n=this.$slots.default;if(n&&(n=n.filter(ko)).length){0;var r=this.mode;0;var o=n[0];if(function(t){for(;t=t.parent;)if(t.data.transition)return!0}(this.$vnode))return o;var i=Oo(o);if(!i)return o;if(this._leaving)return So(t,o);var a=\"__transition-\"+this._uid+\"-\";i.key=null==i.key?i.isComment?a+\"comment\":a+i.tag:s(i.key)?0===String(i.key).indexOf(a)?i.key:a+i.key:i.key;var u=(i.data||(i.data={})).transition=jo(this),c=this._vnode,f=Oo(c);if(i.data.directives&&i.data.directives.some(Eo)&&(i.data.show=!0),f&&f.data&&!function(t,e){return e.key===t.key&&e.tag===t.tag}(i,f)&&!He(f)&&(!f.componentInstance||!f.componentInstance._vnode.isComment)){var l=f.data.transition=P({},u);if(\"out-in\"===r)return this._leaving=!0,se(l,\"afterLeave\",(function(){e._leaving=!1,e.$forceUpdate()})),So(t,o);if(\"in-out\"===r){if(He(i))return c;var p,h=function(){p()};se(u,\"afterEnter\",h),se(u,\"enterCancelled\",h),se(l,\"delayLeave\",(function(t){p=t}))}}return o}}},$o=P({tag:String,moveClass:String},wo);function Co(t){t.elm._moveCb&&t.elm._moveCb(),t.elm._enterCb&&t.elm._enterCb()}function Po(t){t.data.newPos=t.elm.getBoundingClientRect()}function To(t){var e=t.data.pos,n=t.data.newPos,r=e.left-n.left,o=e.top-n.top;if(r||o){t.data.moved=!0;var i=t.elm.style;i.transform=i.WebkitTransform=\"translate(\"+r+\"px,\"+o+\"px)\",i.transitionDuration=\"0s\"}}delete $o.mode;var Lo={Transition:Ao,TransitionGroup:{props:$o,beforeMount:function(){var t=this,e=this._update;this._update=function(n,r){var o=Qe(t);t.__patch__(t._vnode,t.kept,!1,!0),t._vnode=t.kept,o(),e.call(t,n,r)}},render:function(t){for(var e=this.tag||this.$vnode.data.tag||\"span\",n=Object.create(null),r=this.prevChildren=this.children,o=this.$slots.default||[],i=this.children=[],a=jo(this),u=0;u-1?Xn[t]=e.constructor===window.HTMLUnknownElement||e.constructor===window.HTMLElement:Xn[t]=/HTMLUnknownElement/.test(e.toString())},P(Sn.options.directives,xo),P(Sn.options.components,Lo),Sn.prototype.__patch__=G?fo:L,Sn.prototype.$mount=function(t,e){return function(t,e,n){var r;return t.$el=e,t.$options.render||(t.$options.render=gt),en(t,\"beforeMount\"),r=function(){t._update(t._render(),n)},new dn(t,r,L,{before:function(){t._isMounted&&!t._isDestroyed&&en(t,\"beforeUpdate\")}},!0),n=!1,null==t.$vnode&&(t._isMounted=!0,en(t,\"mounted\")),t}(this,t=t&&G?function(t){if(\"string\"==typeof t){var e=document.querySelector(t);return e||document.createElement(\"div\")}return t}(t):void 0,e)},G&&setTimeout((function(){B.devtools&&at&&at.emit(\"init\",Sn)}),0);var Ro=Sn;\n/*!\n * vue-router v3.5.1\n * (c) 2021 Evan You\n * @license MIT\n */function Io(t,e){for(var n in e)t[n]=e[n];return t}var Mo=/[!'()*]/g,No=function(t){return\"%\"+t.charCodeAt(0).toString(16)},Do=/%2C/g,Fo=function(t){return encodeURIComponent(t).replace(Mo,No).replace(Do,\",\")};function Uo(t){try{return decodeURIComponent(t)}catch(t){0}return t}var Bo=function(t){return null==t||\"object\"==typeof t?t:String(t)};function zo(t){var e={};return(t=t.trim().replace(/^(\\?|#|&)/,\"\"))?(t.split(\"&\").forEach((function(t){var n=t.replace(/\\+/g,\" \").split(\"=\"),r=Uo(n.shift()),o=n.length>0?Uo(n.join(\"=\")):null;void 0===e[r]?e[r]=o:Array.isArray(e[r])?e[r].push(o):e[r]=[e[r],o]})),e):e}function qo(t){var e=t?Object.keys(t).map((function(e){var n=t[e];if(void 0===n)return\"\";if(null===n)return Fo(e);if(Array.isArray(n)){var r=[];return n.forEach((function(t){void 0!==t&&(null===t?r.push(Fo(e)):r.push(Fo(e)+\"=\"+Fo(t)))})),r.join(\"&\")}return Fo(e)+\"=\"+Fo(n)})).filter((function(t){return t.length>0})).join(\"&\"):null;return e?\"?\"+e:\"\"}var Vo=/\\/?$/;function Ho(t,e,n,r){var o=r&&r.options.stringifyQuery,i=e.query||{};try{i=Wo(i)}catch(t){}var a={name:e.name||t&&t.name,meta:t&&t.meta||{},path:e.path||\"/\",hash:e.hash||\"\",query:i,params:e.params||{},fullPath:Jo(e,o),matched:t?Ko(t):[]};return n&&(a.redirectedFrom=Jo(n,o)),Object.freeze(a)}function Wo(t){if(Array.isArray(t))return t.map(Wo);if(t&&\"object\"==typeof t){var e={};for(var n in t)e[n]=Wo(t[n]);return e}return t}var Go=Ho(null,{path:\"/\"});function Ko(t){for(var e=[];t;)e.unshift(t),t=t.parent;return e}function Jo(t,e){var n=t.path,r=t.query;void 0===r&&(r={});var o=t.hash;return void 0===o&&(o=\"\"),(n||\"/\")+(e||qo)(r)+o}function Xo(t,e,n){return e===Go?t===e:!!e&&(t.path&&e.path?t.path.replace(Vo,\"\")===e.path.replace(Vo,\"\")&&(n||t.hash===e.hash&&Yo(t.query,e.query)):!(!t.name||!e.name)&&(t.name===e.name&&(n||t.hash===e.hash&&Yo(t.query,e.query)&&Yo(t.params,e.params))))}function Yo(t,e){if(void 0===t&&(t={}),void 0===e&&(e={}),!t||!e)return t===e;var n=Object.keys(t).sort(),r=Object.keys(e).sort();return n.length===r.length&&n.every((function(n,o){var i=t[n];if(r[o]!==n)return!1;var a=e[n];return null==i||null==a?i===a:\"object\"==typeof i&&\"object\"==typeof a?Yo(i,a):String(i)===String(a)}))}function Qo(t){for(var e=0;e=0&&(e=t.slice(r),t=t.slice(0,r));var o=t.indexOf(\"?\");return o>=0&&(n=t.slice(o+1),t=t.slice(0,o)),{path:t,query:n,hash:e}}(o.path||\"\"),s=e&&e.path||\"/\",f=c.path?ei(c.path,s,n||o.append):s,l=function(t,e,n){void 0===e&&(e={});var r,o=n||zo;try{r=o(t||\"\")}catch(t){r={}}for(var i in e){var a=e[i];r[i]=Array.isArray(a)?a.map(Bo):Bo(a)}return r}(c.query,o.query,r&&r.options.parseQuery),p=o.hash||c.hash;return p&&\"#\"!==p.charAt(0)&&(p=\"#\"+p),{_normalized:!0,path:f,query:l,hash:p}}var wi,Oi=function(){},ji={name:\"RouterLink\",props:{to:{type:[String,Object],required:!0},tag:{type:String,default:\"a\"},custom:Boolean,exact:Boolean,exactPath:Boolean,append:Boolean,replace:Boolean,activeClass:String,exactActiveClass:String,ariaCurrentValue:{type:String,default:\"page\"},event:{type:[String,Array],default:\"click\"}},render:function(t){var e=this,n=this.$router,r=this.$route,o=n.resolve(this.to,r,this.append),i=o.location,a=o.route,u=o.href,c={},s=n.options.linkActiveClass,f=n.options.linkExactActiveClass,l=null==s?\"router-link-active\":s,p=null==f?\"router-link-exact-active\":f,h=null==this.activeClass?l:this.activeClass,d=null==this.exactActiveClass?p:this.exactActiveClass,v=a.redirectedFrom?Ho(null,xi(a.redirectedFrom),null,n):a;c[d]=Xo(r,v,this.exactPath),c[h]=this.exact||this.exactPath?c[d]:function(t,e){return 0===t.path.replace(Vo,\"/\").indexOf(e.path.replace(Vo,\"/\"))&&(!e.hash||t.hash===e.hash)&&function(t,e){for(var n in e)if(!(n in t))return!1;return!0}(t.query,e.query)}(r,v);var y=c[d]?this.ariaCurrentValue:null,m=function(t){Si(t)&&(e.replace?n.replace(i,Oi):n.push(i,Oi))},g={click:Si};Array.isArray(this.event)?this.event.forEach((function(t){g[t]=m})):g[this.event]=m;var b={class:c},_=!this.$scopedSlots.$hasNormal&&this.$scopedSlots.default&&this.$scopedSlots.default({href:u,route:a,navigate:m,isActive:c[h],isExactActive:c[d]});if(_){if(1===_.length)return _[0];if(_.length>1||!_.length)return 0===_.length?t():t(\"span\",{},_)}if(\"a\"===this.tag)b.on=g,b.attrs={href:u,\"aria-current\":y};else{var x=function t(e){var n;if(e)for(var r=0;r-1&&(u.params[p]=n.params[p]);return u.path=_i(f.path,u.params),c(f,u,a)}if(u.path){u.params={};for(var h=0;h=t.length?n():t[o]?e(t[o],(function(){r(o+1)})):r(o+1)};r(0)}var Yi={redirected:2,aborted:4,cancelled:8,duplicated:16};function Qi(t,e){return ta(t,e,Yi.redirected,'Redirected when going from \"'+t.fullPath+'\" to \"'+function(t){if(\"string\"==typeof t)return t;if(\"path\"in t)return t.path;var e={};return ea.forEach((function(n){n in t&&(e[n]=t[n])})),JSON.stringify(e,null,2)}(e)+'\" via a navigation guard.')}function Zi(t,e){return ta(t,e,Yi.cancelled,'Navigation cancelled from \"'+t.fullPath+'\" to \"'+e.fullPath+'\" with a new navigation.')}function ta(t,e,n,r){var o=new Error(r);return o._isRouter=!0,o.from=t,o.to=e,o.type=n,o}var ea=[\"params\",\"query\",\"hash\"];function na(t){return Object.prototype.toString.call(t).indexOf(\"Error\")>-1}function ra(t,e){return na(t)&&t._isRouter&&(null==e||t.type===e)}function oa(t){return function(e,n,r){var o=!1,i=0,a=null;ia(t,(function(t,e,n,u){if(\"function\"==typeof t&&void 0===t.cid){o=!0,i++;var c,s=ca((function(e){var o;((o=e).__esModule||ua&&\"Module\"===o[Symbol.toStringTag])&&(e=e.default),t.resolved=\"function\"==typeof e?e:wi.extend(e),n.components[u]=e,--i<=0&&r()})),f=ca((function(t){var e=\"Failed to resolve async component \"+u+\": \"+t;a||(a=na(t)?t:new Error(e),r(a))}));try{c=t(s,f)}catch(t){f(t)}if(c)if(\"function\"==typeof c.then)c.then(s,f);else{var l=c.component;l&&\"function\"==typeof l.then&&l.then(s,f)}}})),o||r()}}function ia(t,e){return aa(t.map((function(t){return Object.keys(t.components).map((function(n){return e(t.components[n],t.instances[n],t,n)}))})))}function aa(t){return Array.prototype.concat.apply([],t)}var ua=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.toStringTag;function ca(t){var e=!1;return function(){for(var n=[],r=arguments.length;r--;)n[r]=arguments[r];if(!e)return e=!0,t.apply(this,n)}}var sa=function(t,e){this.router=t,this.base=function(t){if(!t)if(ki){var e=document.querySelector(\"base\");t=(t=e&&e.getAttribute(\"href\")||\"/\").replace(/^https?:\\/\\/[^\\/]+/,\"\")}else t=\"/\";\"/\"!==t.charAt(0)&&(t=\"/\"+t);return t.replace(/\\/$/,\"\")}(e),this.current=Go,this.pending=null,this.ready=!1,this.readyCbs=[],this.readyErrorCbs=[],this.errorCbs=[],this.listeners=[]};function fa(t,e,n,r){var o=ia(t,(function(t,r,o,i){var a=function(t,e){\"function\"!=typeof t&&(t=wi.extend(t));return t.options[e]}(t,e);if(a)return Array.isArray(a)?a.map((function(t){return n(t,r,o,i)})):n(a,r,o,i)}));return aa(r?o.reverse():o)}function la(t,e){if(e)return function(){return t.apply(e,arguments)}}sa.prototype.listen=function(t){this.cb=t},sa.prototype.onReady=function(t,e){this.ready?t():(this.readyCbs.push(t),e&&this.readyErrorCbs.push(e))},sa.prototype.onError=function(t){this.errorCbs.push(t)},sa.prototype.transitionTo=function(t,e,n){var r,o=this;try{r=this.router.match(t,this.current)}catch(t){throw this.errorCbs.forEach((function(e){e(t)})),t}var i=this.current;this.confirmTransition(r,(function(){o.updateRoute(r),e&&e(r),o.ensureURL(),o.router.afterHooks.forEach((function(t){t&&t(r,i)})),o.ready||(o.ready=!0,o.readyCbs.forEach((function(t){t(r)})))}),(function(t){n&&n(t),t&&!o.ready&&(ra(t,Yi.redirected)&&i===Go||(o.ready=!0,o.readyErrorCbs.forEach((function(e){e(t)}))))}))},sa.prototype.confirmTransition=function(t,e,n){var r=this,o=this.current;this.pending=t;var i,a,u=function(t){!ra(t)&&na(t)&&(r.errorCbs.length?r.errorCbs.forEach((function(e){e(t)})):console.error(t)),n&&n(t)},c=t.matched.length-1,s=o.matched.length-1;if(Xo(t,o)&&c===s&&t.matched[c]===o.matched[s])return this.ensureURL(),u(((a=ta(i=o,t,Yi.duplicated,'Avoided redundant navigation to current location: \"'+i.fullPath+'\".')).name=\"NavigationDuplicated\",a));var f=function(t,e){var n,r=Math.max(t.length,e.length);for(n=0;n0)){var e=this.router,n=e.options.scrollBehavior,r=Gi&&n;r&&this.listeners.push(Ni());var o=function(){var n=t.current,o=ha(t.base);t.current===Go&&o===t._startLocation||t.transitionTo(o,(function(t){r&&Di(e,t,n,!0)}))};window.addEventListener(\"popstate\",o),this.listeners.push((function(){window.removeEventListener(\"popstate\",o)}))}},e.prototype.go=function(t){window.history.go(t)},e.prototype.push=function(t,e,n){var r=this,o=this.current;this.transitionTo(t,(function(t){Ki(ni(r.base+t.fullPath)),Di(r.router,t,o,!1),e&&e(t)}),n)},e.prototype.replace=function(t,e,n){var r=this,o=this.current;this.transitionTo(t,(function(t){Ji(ni(r.base+t.fullPath)),Di(r.router,t,o,!1),e&&e(t)}),n)},e.prototype.ensureURL=function(t){if(ha(this.base)!==this.current.fullPath){var e=ni(this.base+this.current.fullPath);t?Ki(e):Ji(e)}},e.prototype.getCurrentLocation=function(){return ha(this.base)},e}(sa);function ha(t){var e=window.location.pathname;return t&&0===e.toLowerCase().indexOf(t.toLowerCase())&&(e=e.slice(t.length)),(e||\"/\")+window.location.search+window.location.hash}var da=function(t){function e(e,n,r){t.call(this,e,n),r&&function(t){var e=ha(t);if(!/^\\/#/.test(e))return window.location.replace(ni(t+\"/#\"+e)),!0}(this.base)||va()}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.setupListeners=function(){var t=this;if(!(this.listeners.length>0)){var e=this.router.options.scrollBehavior,n=Gi&&e;n&&this.listeners.push(Ni());var r=function(){var e=t.current;va()&&t.transitionTo(ya(),(function(r){n&&Di(t.router,r,e,!0),Gi||ba(r.fullPath)}))},o=Gi?\"popstate\":\"hashchange\";window.addEventListener(o,r),this.listeners.push((function(){window.removeEventListener(o,r)}))}},e.prototype.push=function(t,e,n){var r=this,o=this.current;this.transitionTo(t,(function(t){ga(t.fullPath),Di(r.router,t,o,!1),e&&e(t)}),n)},e.prototype.replace=function(t,e,n){var r=this,o=this.current;this.transitionTo(t,(function(t){ba(t.fullPath),Di(r.router,t,o,!1),e&&e(t)}),n)},e.prototype.go=function(t){window.history.go(t)},e.prototype.ensureURL=function(t){var e=this.current.fullPath;ya()!==e&&(t?ga(e):ba(e))},e.prototype.getCurrentLocation=function(){return ya()},e}(sa);function va(){var t=ya();return\"/\"===t.charAt(0)||(ba(\"/\"+t),!1)}function ya(){var t=window.location.href,e=t.indexOf(\"#\");return e<0?\"\":t=t.slice(e+1)}function ma(t){var e=window.location.href,n=e.indexOf(\"#\");return(n>=0?e.slice(0,n):e)+\"#\"+t}function ga(t){Gi?Ki(ma(t)):window.location.hash=t}function ba(t){Gi?Ji(ma(t)):window.location.replace(ma(t))}var _a=function(t){function e(e,n){t.call(this,e,n),this.stack=[],this.index=-1}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.push=function(t,e,n){var r=this;this.transitionTo(t,(function(t){r.stack=r.stack.slice(0,r.index+1).concat(t),r.index++,e&&e(t)}),n)},e.prototype.replace=function(t,e,n){var r=this;this.transitionTo(t,(function(t){r.stack=r.stack.slice(0,r.index).concat(t),e&&e(t)}),n)},e.prototype.go=function(t){var e=this,n=this.index+t;if(!(n<0||n>=this.stack.length)){var r=this.stack[n];this.confirmTransition(r,(function(){var t=e.current;e.index=n,e.updateRoute(r),e.router.afterHooks.forEach((function(e){e&&e(r,t)}))}),(function(t){ra(t,Yi.duplicated)&&(e.index=n)}))}},e.prototype.getCurrentLocation=function(){var t=this.stack[this.stack.length-1];return t?t.fullPath:\"/\"},e.prototype.ensureURL=function(){},e}(sa),xa=function(t){void 0===t&&(t={}),this.app=null,this.apps=[],this.options=t,this.beforeHooks=[],this.resolveHooks=[],this.afterHooks=[],this.matcher=$i(t.routes||[],this);var e=t.mode||\"hash\";switch(this.fallback=\"history\"===e&&!Gi&&!1!==t.fallback,this.fallback&&(e=\"hash\"),ki||(e=\"abstract\"),this.mode=e,e){case\"history\":this.history=new pa(this,t.base);break;case\"hash\":this.history=new da(this,t.base,this.fallback);break;case\"abstract\":this.history=new _a(this,t.base);break;default:0}},wa={currentRoute:{configurable:!0}};function Oa(t,e){return t.push(e),function(){var n=t.indexOf(e);n>-1&&t.splice(n,1)}}xa.prototype.match=function(t,e,n){return this.matcher.match(t,e,n)},wa.currentRoute.get=function(){return this.history&&this.history.current},xa.prototype.init=function(t){var e=this;if(this.apps.push(t),t.$once(\"hook:destroyed\",(function(){var n=e.apps.indexOf(t);n>-1&&e.apps.splice(n,1),e.app===t&&(e.app=e.apps[0]||null),e.app||e.history.teardown()})),!this.app){this.app=t;var n=this.history;if(n instanceof pa||n instanceof da){var r=function(t){n.setupListeners(),function(t){var r=n.current,o=e.options.scrollBehavior;Gi&&o&&\"fullPath\"in t&&Di(e,t,r,!1)}(t)};n.transitionTo(n.getCurrentLocation(),r,r)}n.listen((function(t){e.apps.forEach((function(e){e._route=t}))}))}},xa.prototype.beforeEach=function(t){return Oa(this.beforeHooks,t)},xa.prototype.beforeResolve=function(t){return Oa(this.resolveHooks,t)},xa.prototype.afterEach=function(t){return Oa(this.afterHooks,t)},xa.prototype.onReady=function(t,e){this.history.onReady(t,e)},xa.prototype.onError=function(t){this.history.onError(t)},xa.prototype.push=function(t,e,n){var r=this;if(!e&&!n&&\"undefined\"!=typeof Promise)return new Promise((function(e,n){r.history.push(t,e,n)}));this.history.push(t,e,n)},xa.prototype.replace=function(t,e,n){var r=this;if(!e&&!n&&\"undefined\"!=typeof Promise)return new Promise((function(e,n){r.history.replace(t,e,n)}));this.history.replace(t,e,n)},xa.prototype.go=function(t){this.history.go(t)},xa.prototype.back=function(){this.go(-1)},xa.prototype.forward=function(){this.go(1)},xa.prototype.getMatchedComponents=function(t){var e=t?t.matched?t:this.resolve(t).route:this.currentRoute;return e?[].concat.apply([],e.matched.map((function(t){return Object.keys(t.components).map((function(e){return t.components[e]}))}))):[]},xa.prototype.resolve=function(t,e,n){var r=xi(t,e=e||this.history.current,n,this),o=this.match(r,e),i=o.redirectedFrom||o.fullPath;return{location:r,route:o,href:function(t,e,n){var r=\"hash\"===n?\"#\"+e:e;return t?ni(t+\"/\"+r):r}(this.history.base,i,this.mode),normalizedTo:r,resolved:o}},xa.prototype.getRoutes=function(){return this.matcher.getRoutes()},xa.prototype.addRoute=function(t,e){this.matcher.addRoute(t,e),this.history.current!==Go&&this.history.transitionTo(this.history.getCurrentLocation())},xa.prototype.addRoutes=function(t){this.matcher.addRoutes(t),this.history.current!==Go&&this.history.transitionTo(this.history.getCurrentLocation())},Object.defineProperties(xa.prototype,wa),xa.install=function t(e){if(!t.installed||wi!==e){t.installed=!0,wi=e;var n=function(t){return void 0!==t},r=function(t,e){var r=t.$options._parentVnode;n(r)&&n(r=r.data)&&n(r=r.registerRouteInstance)&&r(t,e)};e.mixin({beforeCreate:function(){n(this.$options.router)?(this._routerRoot=this,this._router=this.$options.router,this._router.init(this),e.util.defineReactive(this,\"_route\",this._router.history.current)):this._routerRoot=this.$parent&&this.$parent._routerRoot||this,r(this,this)},destroyed:function(){r(this)}}),Object.defineProperty(e.prototype,\"$router\",{get:function(){return this._routerRoot._router}}),Object.defineProperty(e.prototype,\"$route\",{get:function(){return this._routerRoot._route}}),e.component(\"RouterView\",Zo),e.component(\"RouterLink\",ji);var o=e.config.optionMergeStrategies;o.beforeRouteEnter=o.beforeRouteLeave=o.beforeRouteUpdate=o.created}},xa.version=\"3.5.1\",xa.isNavigationFailure=ra,xa.NavigationFailureType=Yi,xa.START_LOCATION=Go,ki&&window.Vue&&window.Vue.use(xa);var ja=xa;n(184),n(185),n(186),n(89),n(188),n(90),n(91),n(189);function Sa(t){t.locales&&Object.keys(t.locales).forEach((function(e){t.locales[e].path=e})),Object.freeze(t)}function ka(t){return(ka=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}var Ea=n(39),Aa=(n(191),n(60),n(42),n(158),n(159),{NotFound:function(){return n.e(6).then(n.bind(null,350))},Layout:function(){return Promise.all([n.e(0),n.e(2)]).then(n.bind(null,349))}}),$a={\"v-3fa1b7ce\":function(){return n.e(7).then(n.bind(null,353))},\"v-16f7bd48\":function(){return n.e(8).then(n.bind(null,354))},\"v-4cd21123\":function(){return n.e(9).then(n.bind(null,355))},\"v-bc6841f2\":function(){return n.e(13).then(n.bind(null,356))},\"v-6b88b63a\":function(){return n.e(14).then(n.bind(null,357))},\"v-6ded6695\":function(){return n.e(15).then(n.bind(null,358))},\"v-5913b2cf\":function(){return n.e(10).then(n.bind(null,359))},\"v-5cdd9b6a\":function(){return n.e(17).then(n.bind(null,360))},\"v-6d3d3ba1\":function(){return n.e(18).then(n.bind(null,361))},\"v-39e74116\":function(){return n.e(19).then(n.bind(null,362))},\"v-2491f01e\":function(){return n.e(16).then(n.bind(null,363))},\"v-22c07ce2\":function(){return n.e(11).then(n.bind(null,364))},\"v-a9bbe4d4\":function(){return n.e(22).then(n.bind(null,365))},\"v-42f24c35\":function(){return n.e(21).then(n.bind(null,366))},\"v-5e6a771d\":function(){return n.e(24).then(n.bind(null,367))},\"v-065c0076\":function(){return n.e(20).then(n.bind(null,368))},\"v-2c1891b5\":function(){return n.e(26).then(n.bind(null,369))},\"v-5e0aaaf5\":function(){return n.e(27).then(n.bind(null,370))},\"v-2173826d\":function(){return n.e(28).then(n.bind(null,371))},\"v-f75119d2\":function(){return n.e(12).then(n.bind(null,372))},\"v-18390f56\":function(){return n.e(23).then(n.bind(null,373))},\"v-430c31fa\":function(){return n.e(25).then(n.bind(null,374))}};function Ca(t){var e=Object.create(null);return function(n){return e[n]||(e[n]=t(n))}}var Pa=/-(\\w)/g,Ta=Ca((function(t){return t.replace(Pa,(function(t,e){return e?e.toUpperCase():\"\"}))})),La=/\\B([A-Z])/g,Ra=Ca((function(t){return t.replace(La,\"-$1\").toLowerCase()})),Ia=Ca((function(t){return t.charAt(0).toUpperCase()+t.slice(1)}));function Ma(t,e){if(e)return t(e)?t(e):e.includes(\"-\")?t(Ia(Ta(e))):t(Ia(e))||t(Ra(e))}var Na=Object.assign({},Aa,$a),Da=function(t){return Na[t]},Fa=function(t){return $a[t]},Ua=function(t){return Aa[t]},Ba=function(t){return Ro.component(t)};function za(t){return Ma(Fa,t)}function qa(t){return Ma(Ua,t)}function Va(t){return Ma(Da,t)}function Ha(t){return Ma(Ba,t)}function Wa(){for(var t=arguments.length,e=new Array(t),n=0;n\"})).join(\"\\n \"):\"\",this.$ssrContext.canonicalLink=tu(this.$canonicalUrl)}var e},mounted:function(){this.currentMetaTags=Object(Ea.a)(document.querySelectorAll(\"meta\")),this.updateMeta(),this.updateCanonicalLink()},methods:{updateMeta:function(){document.title=this.$title,document.documentElement.lang=this.$lang;var t=this.getMergedMetaTags();this.currentMetaTags=eu(t,this.currentMetaTags)},getMergedMetaTags:function(){var t=this.$page.frontmatter.meta||[];return Ya()([{name:\"description\",content:this.$description}],t,this.siteMeta,nu)},updateCanonicalLink:function(){Za(),this.$canonicalUrl&&document.head.insertAdjacentHTML(\"beforeend\",tu(this.$canonicalUrl))}},watch:{$page:function(){this.updateMeta(),this.updateCanonicalLink()}},beforeDestroy:function(){eu(null,this.currentMetaTags),Za()}};function Za(){var t=document.querySelector(\"link[rel='canonical']\");t&&t.remove()}function tu(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:\"\";return t?''):\"\"}function eu(t,e){if(e&&Object(Ea.a)(e).filter((function(t){return t.parentNode===document.head})).forEach((function(t){return document.head.removeChild(t)})),t)return t.map((function(t){var e=document.createElement(\"meta\");return Object.keys(t).forEach((function(n){e.setAttribute(n,t[n])})),document.head.appendChild(e),e}))}function nu(t){for(var e=0,n=[\"name\",\"property\",\"itemprop\"];e=u.parentElement.offsetTop+10&&(!c||r2&&void 0!==arguments[2]?arguments[2]:Ro;Sa(e),n.$vuepress.$set(\"siteData\",e);var r=t(n.$vuepress.$get(\"siteData\")),o=new r,i=Object.getOwnPropertyDescriptors(Object.getPrototypeOf(o)),a={};return Object.keys(i).reduce((function(t,e){return e.startsWith(\"$\")&&(t[e]=i[e].get),t}),a),{computed:a}}((function(t){return function(){function e(){vu(this,e)}return mu(e,[{key:\"setPage\",value:function(t){this.__page=t}},{key:\"$site\",get:function(){return t}},{key:\"$themeConfig\",get:function(){return this.$site.themeConfig}},{key:\"$frontmatter\",get:function(){return this.$page.frontmatter}},{key:\"$localeConfig\",get:function(){var t,e,n=this.$site.locales,r=void 0===n?{}:n;for(var o in r)\"/\"===o?e=r[o]:0===this.$page.path.indexOf(o)&&(t=r[o]);return t||e||{}}},{key:\"$siteTitle\",get:function(){return this.$localeConfig.title||this.$site.title||\"\"}},{key:\"$canonicalUrl\",get:function(){var t=this.$page.frontmatter.canonicalUrl;return\"string\"==typeof t&&t}},{key:\"$title\",get:function(){var t=this.$page,e=this.$page.frontmatter.metaTitle;if(\"string\"==typeof e)return e;var n=this.$siteTitle,r=t.frontmatter.home?null:t.frontmatter.title||t.title;return n?r?r+\" | \"+n:n:r||\"VuePress\"}},{key:\"$description\",get:function(){var t=function(t){if(t){var e=t.filter((function(t){return\"description\"===t.name}))[0];if(e)return e.content}}(this.$page.frontmatter.meta);return t||(this.$page.frontmatter.description||this.$localeConfig.description||this.$site.description||\"\")}},{key:\"$lang\",get:function(){return this.$page.frontmatter.lang||this.$localeConfig.lang||\"en-US\"}},{key:\"$localePath\",get:function(){return this.$localeConfig.path||\"/\"}},{key:\"$themeLocaleConfig\",get:function(){return(this.$site.themeConfig.locales||{})[this.$localePath]||{}}},{key:\"$page\",get:function(){return this.__page?this.__page:function(t,e){for(var n=0;n0?o(r(t),9007199254740991):0}},function(t,e,n){var r=n(2),o=n(9),i=n(5),a=n(65),u=n(71),c=n(24),s=c.get,f=c.enforce,l=String(String).split(\"String\");(t.exports=function(t,e,n,u){var c,s=!!u&&!!u.unsafe,p=!!u&&!!u.enumerable,h=!!u&&!!u.noTargetGet;\"function\"==typeof n&&(\"string\"!=typeof e||i(n,\"name\")||o(n,\"name\",e),(c=f(n)).source||(c.source=l.join(\"string\"==typeof e?e:\"\"))),t!==r?(s?!h&&t[e]&&(p=!0):delete t[e],p?t[e]=n:o(t,e,n)):p?t[e]=n:a(e,n)})(Function.prototype,\"toString\",(function(){return\"function\"==typeof this&&s(this).source||u(this)}))},function(t,e){t.exports=!1},function(t,e,n){var r=n(99),o=n(2),i=function(t){return\"function\"==typeof t?t:void 0};t.exports=function(t,e){return arguments.length<2?i(r[t])||i(o[t]):r[t]&&r[t][e]||o[t]&&o[t][e]}},function(t,e,n){var r=n(211),o=n(214);t.exports=function(t,e){var n=o(t,e);return r(n)?n:void 0}},function(t,e){t.exports=function(t){if(null==t)throw TypeError(\"Can't call method on \"+t);return t}},function(t,e,n){var r=n(7),o=n(72),i=n(28),a=n(11),u=n(44),c=n(5),s=n(98),f=Object.getOwnPropertyDescriptor;e.f=r?f:function(t,e){if(t=a(t),e=u(e,!0),s)try{return f(t,e)}catch(t){}if(c(t,e))return i(!o.f.call(t,e),t[e])}},function(t,e){t.exports=function(t){return null!=t&&\"object\"==typeof t}},function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},function(t,e,n){\"use strict\";var r=n(0),o=n(25).filter;r({target:\"Array\",proto:!0,forced:!n(51)(\"filter\")},{filter:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}})},function(t,e,n){var r,o,i,a=n(165),u=n(2),c=n(4),s=n(9),f=n(5),l=n(64),p=n(49),h=n(31),d=u.WeakMap;if(a){var v=l.state||(l.state=new d),y=v.get,m=v.has,g=v.set;r=function(t,e){return e.facade=t,g.call(v,t,e),e},o=function(t){return y.call(v,t)||{}},i=function(t){return m.call(v,t)}}else{var b=p(\"state\");h[b]=!0,r=function(t,e){return e.facade=t,s(t,b,e),e},o=function(t){return f(t,b)?t[b]:{}},i=function(t){return f(t,b)}}t.exports={set:r,get:o,has:i,enforce:function(t){return i(t)?o(t):r(t,{})},getterFor:function(t){return function(e){var n;if(!c(e)||(n=o(e)).type!==t)throw TypeError(\"Incompatible receiver, \"+t+\" required\");return n}}}},function(t,e,n){var r=n(75),o=n(27),i=n(12),a=n(14),u=n(118),c=[].push,s=function(t){var e=1==t,n=2==t,s=3==t,f=4==t,l=6==t,p=7==t,h=5==t||l;return function(d,v,y,m){for(var g,b,_=i(d),x=o(_),w=r(v,y,3),O=a(x.length),j=0,S=m||u,k=e?S(d,O):n||p?S(d,0):void 0;O>j;j++)if((h||j in x)&&(b=w(g=x[j],j,_),t))if(e)k[j]=b;else if(b)switch(t){case 3:return!0;case 5:return g;case 6:return j;case 2:c.call(k,g)}else switch(t){case 4:return!1;case 7:c.call(k,g)}return l?-1:s||f?f:k}};t.exports={forEach:s(0),map:s(1),filter:s(2),some:s(3),every:s(4),find:s(5),findIndex:s(6),filterOut:s(7)}},function(t,e,n){var r=n(38),o=n(196),i=n(197),a=r?r.toStringTag:void 0;t.exports=function(t){return null==t?void 0===t?\"[object Undefined]\":\"[object Null]\":a&&a in Object(t)?o(t):i(t)}},function(t,e,n){var r=n(3),o=n(22),i=\"\".split;t.exports=r((function(){return!Object(\"z\").propertyIsEnumerable(0)}))?function(t){return\"String\"==o(t)?i.call(t,\"\"):Object(t)}:Object},function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},function(t,e,n){var r=n(22),o=n(2);t.exports=\"process\"==r(o.process)},function(t,e,n){var r,o,i=n(2),a=n(68),u=i.process,c=u&&u.versions,s=c&&c.v8;s?o=(r=s.split(\".\"))[0]+r[1]:a&&(!(r=a.match(/Edge\\/(\\d+)/))||r[1]>=74)&&(r=a.match(/Chrome\\/(\\d+)/))&&(o=r[1]),t.exports=o&&+o},function(t,e){t.exports={}},function(t,e){t.exports={}},function(t,e){t.exports=function(t){if(\"function\"!=typeof t)throw TypeError(String(t)+\" is not a function\");return t}},function(t,e,n){var r=n(76),o=n(15),i=n(183);r||o(Object.prototype,\"toString\",i,{unsafe:!0})},function(t,e,n){\"use strict\";var r=n(116).charAt,o=n(24),i=n(104),a=o.set,u=o.getterFor(\"String Iterator\");i(String,\"String\",(function(t){a(this,{type:\"String Iterator\",string:String(t),index:0})}),(function(){var t,e=u(this),n=e.string,o=e.index;return o>=n.length?{value:void 0,done:!0}:(t=r(n,o),e.index+=t.length,{value:t,done:!1})}))},function(t,e,n){var r=n(2),o=n(117),i=n(97),a=n(9),u=n(1),c=u(\"iterator\"),s=u(\"toStringTag\"),f=i.values;for(var l in o){var p=r[l],h=p&&p.prototype;if(h){if(h[c]!==f)try{a(h,c,f)}catch(t){h[c]=f}if(h[s]||a(h,s,l),o[l])for(var d in i)if(h[d]!==i[d])try{a(h,d,i[d])}catch(t){h[d]=i[d]}}}},function(t,e,n){\"use strict\";var r=n(3);t.exports=function(t,e){var n=[][t];return!!n&&r((function(){n.call(null,e||function(){throw 1},1)}))}},function(t,e,n){var r=n(13).Symbol;t.exports=r},function(t,e,n){\"use strict\";n.d(e,\"a\",(function(){return i}));var r=n(40);var o=n(57);function i(t){return function(t){if(Array.isArray(t))return Object(r.a)(t)}(t)||function(t){if(\"undefined\"!=typeof Symbol&&Symbol.iterator in Object(t))return Array.from(t)}(t)||Object(o.a)(t)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}},function(t,e,n){\"use strict\";function r(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n\"+t+\"<\\/script>\"},d=function(){try{r=document.domain&&new ActiveXObject(\"htmlfile\")}catch(t){}var t,e;d=r?function(t){t.write(h(\"\")),t.close();var e=t.parentWindow.Object;return t=null,e}(r):((e=s(\"iframe\")).style.display=\"none\",c.appendChild(e),e.src=String(\"javascript:\"),(t=e.contentWindow.document).open(),t.write(h(\"document.F=Object\")),t.close(),t.F);for(var n=a.length;n--;)delete d.prototype[a[n]];return d()};u[l]=!0,t.exports=Object.create||function(t,e){var n;return null!==t?(p.prototype=o(t),n=new p,p.prototype=null,n[l]=t):n=d(),void 0===e?n:i(n,e)}},function(t,e,n){var r=n(101),o=n(70);t.exports=Object.keys||function(t){return r(t,o)}},function(t,e){var n=Math.ceil,r=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?r:n)(t)}},function(t,e,n){var r=n(63),o=n(45),i=r(\"keys\");t.exports=function(t){return i[t]||(i[t]=o(t))}},function(t,e,n){var r=n(8).f,o=n(5),i=n(1)(\"toStringTag\");t.exports=function(t,e,n){t&&!o(t=n?t:t.prototype,i)&&r(t,i,{configurable:!0,value:e})}},function(t,e,n){var r=n(3),o=n(1),i=n(30),a=o(\"species\");t.exports=function(t){return i>=51||!r((function(){var e=[];return(e.constructor={})[a]=function(){return{foo:1}},1!==e[t](Boolean).foo}))}},function(t,e,n){var r=n(201),o=n(202),i=n(203),a=n(204),u=n(205);function c(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e
'};function o(t,e,n){return tn?n:t}function i(t){return 100*(-1+t)}n.configure=function(t){var e,n;for(e in t)void 0!==(n=t[e])&&t.hasOwnProperty(e)&&(r[e]=n);return this},n.status=null,n.set=function(t){var e=n.isStarted();t=o(t,r.minimum,1),n.status=1===t?null:t;var c=n.render(!e),s=c.querySelector(r.barSelector),f=r.speed,l=r.easing;return c.offsetWidth,a((function(e){\"\"===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),u(s,function(t,e,n){var o;return(o=\"translate3d\"===r.positionUsing?{transform:\"translate3d(\"+i(t)+\"%,0,0)\"}:\"translate\"===r.positionUsing?{transform:\"translate(\"+i(t)+\"%,0)\"}:{\"margin-left\":i(t)+\"%\"}).transition=\"all \"+e+\"ms \"+n,o}(t,f,l)),1===t?(u(c,{transition:\"none\",opacity:1}),c.offsetWidth,setTimeout((function(){u(c,{transition:\"all \"+f+\"ms linear\",opacity:0}),setTimeout((function(){n.remove(),e()}),f)}),f)):setTimeout(e,f)})),this},n.isStarted=function(){return\"number\"==typeof n.status},n.start=function(){n.status||n.set(0);var t=function(){setTimeout((function(){n.status&&(n.trickle(),t())}),r.trickleSpeed)};return r.trickle&&t(),this},n.done=function(t){return t||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(t){var e=n.status;return e?(\"number\"!=typeof t&&(t=(1-e)*o(Math.random()*e,.1,.95)),e=o(e+t,0,.994),n.set(e)):n.start()},n.trickle=function(){return n.inc(Math.random()*r.trickleRate)},t=0,e=0,n.promise=function(r){return r&&\"resolved\"!==r.state()?(0===e&&n.start(),t++,e++,r.always((function(){0==--e?(t=0,n.done()):n.set((t-e)/t)})),this):this},n.render=function(t){if(n.isRendered())return document.getElementById(\"nprogress\");s(document.documentElement,\"nprogress-busy\");var e=document.createElement(\"div\");e.id=\"nprogress\",e.innerHTML=r.template;var o,a=e.querySelector(r.barSelector),c=t?\"-100\":i(n.status||0),f=document.querySelector(r.parent);return u(a,{transition:\"all 0 linear\",transform:\"translate3d(\"+c+\"%,0,0)\"}),r.showSpinner||(o=e.querySelector(r.spinnerSelector))&&p(o),f!=document.body&&s(f,\"nprogress-custom-parent\"),f.appendChild(e),e},n.remove=function(){f(document.documentElement,\"nprogress-busy\"),f(document.querySelector(r.parent),\"nprogress-custom-parent\");var t=document.getElementById(\"nprogress\");t&&p(t)},n.isRendered=function(){return!!document.getElementById(\"nprogress\")},n.getPositioningCSS=function(){var t=document.body.style,e=\"WebkitTransform\"in t?\"Webkit\":\"MozTransform\"in t?\"Moz\":\"msTransform\"in t?\"ms\":\"OTransform\"in t?\"O\":\"\";return e+\"Perspective\"in t?\"translate3d\":e+\"Transform\"in t?\"translate\":\"margin\"};var a=function(){var t=[];function e(){var n=t.shift();n&&n(e)}return function(n){t.push(n),1==t.length&&e()}}(),u=function(){var t=[\"Webkit\",\"O\",\"Moz\",\"ms\"],e={};function n(n){return n=n.replace(/^-ms-/,\"ms-\").replace(/-([\\da-z])/gi,(function(t,e){return e.toUpperCase()})),e[n]||(e[n]=function(e){var n=document.body.style;if(e in n)return e;for(var r,o=t.length,i=e.charAt(0).toUpperCase()+e.slice(1);o--;)if((r=t[o]+i)in n)return r;return e}(n))}function r(t,e,r){e=n(e),t.style[e]=r}return function(t,e){var n,o,i=arguments;if(2==i.length)for(n in e)void 0!==(o=e[n])&&e.hasOwnProperty(n)&&r(t,n,o);else r(t,i[1],i[2])}}();function c(t,e){return(\"string\"==typeof t?t:l(t)).indexOf(\" \"+e+\" \")>=0}function s(t,e){var n=l(t),r=n+e;c(n,e)||(t.className=r.substring(1))}function f(t,e){var n,r=l(t);c(t,e)&&(n=r.replace(\" \"+e+\" \",\" \"),t.className=n.substring(1,n.length-1))}function l(t){return(\" \"+(t.className||\"\")+\" \").replace(/\\s+/gi,\" \")}function p(t){t&&t.parentNode&&t.parentNode.removeChild(t)}return n})?r.call(e,n,e,t):r)||(t.exports=o)},function(t,e,n){\"use strict\";var r=n(0),o=n(25).map;r({target:\"Array\",proto:!0,forced:!n(51)(\"map\")},{map:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}})},function(t,e,n){\"use strict\";var r=n(150),o=n(6),i=n(14),a=n(48),u=n(19),c=n(152),s=n(192),f=n(153),l=Math.max,p=Math.min;r(\"replace\",2,(function(t,e,n,r){var h=r.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,d=r.REPLACE_KEEPS_$0,v=h?\"$\":\"$0\";return[function(n,r){var o=u(this),i=null==n?void 0:n[t];return void 0!==i?i.call(n,o,r):e.call(String(o),n,r)},function(t,r){if(!h&&d||\"string\"==typeof r&&-1===r.indexOf(v)){var u=n(e,t,this,r);if(u.done)return u.value}var y=o(t),m=String(this),g=\"function\"==typeof r;g||(r=String(r));var b=y.global;if(b){var _=y.unicode;y.lastIndex=0}for(var x=[];;){var w=f(y,m);if(null===w)break;if(x.push(w),!b)break;\"\"===String(w[0])&&(y.lastIndex=c(m,i(y.lastIndex),_))}for(var O,j=\"\",S=0,k=0;k=S&&(j+=m.slice(S,A)+L,S=A+E.length)}return j+m.slice(S)}]}))},function(t,e,n){var r=n(101),o=n(70).concat(\"length\",\"prototype\");e.f=Object.getOwnPropertyNames||function(t){return r(t,o)}},function(t,e,n){\"use strict\";var r,o,i=n(151),a=n(157),u=RegExp.prototype.exec,c=String.prototype.replace,s=u,f=(r=/a/,o=/b*/g,u.call(r,\"a\"),u.call(o,\"a\"),0!==r.lastIndex||0!==o.lastIndex),l=a.UNSUPPORTED_Y||a.BROKEN_CARET,p=void 0!==/()??/.exec(\"\")[1];(f||p||l)&&(s=function(t){var e,n,r,o,a=this,s=l&&a.sticky,h=i.call(a),d=a.source,v=0,y=t;return s&&(-1===(h=h.replace(\"y\",\"\")).indexOf(\"g\")&&(h+=\"g\"),y=String(t).slice(a.lastIndex),a.lastIndex>0&&(!a.multiline||a.multiline&&\"\\n\"!==t[a.lastIndex-1])&&(d=\"(?: \"+d+\")\",y=\" \"+y,v++),n=new RegExp(\"^(?:\"+d+\")\",h)),p&&(n=new RegExp(\"^\"+d+\"$(?!\\\\s)\",h)),f&&(e=a.lastIndex),r=u.call(s?n:a,y),s?r?(r.input=r.input.slice(v),r[0]=r[0].slice(v),r.index=a.lastIndex,a.lastIndex+=r[0].length):a.lastIndex=0:f&&r&&(a.lastIndex=a.global?r.index+r[0].length:e),p&&r&&r.length>1&&c.call(r[0],n,(function(){for(o=1;o37&&o<41)}))},function(t,e,n){var r=n(17);t.exports=r(\"navigator\",\"userAgent\")||\"\"},function(t,e,n){var r=n(11),o=n(14),i=n(102),a=function(t){return function(e,n,a){var u,c=r(e),s=o(c.length),f=i(a,s);if(t&&n!=n){for(;s>f;)if((u=c[f++])!=u)return!0}else for(;s>f;f++)if((t||f in c)&&c[f]===n)return t||f||0;return!t&&-1}};t.exports={includes:a(!0),indexOf:a(!1)}},function(t,e){t.exports=[\"constructor\",\"hasOwnProperty\",\"isPrototypeOf\",\"propertyIsEnumerable\",\"toLocaleString\",\"toString\",\"valueOf\"]},function(t,e,n){var r=n(64),o=Function.toString;\"function\"!=typeof r.inspectSource&&(r.inspectSource=function(t){return o.call(t)}),t.exports=r.inspectSource},function(t,e,n){\"use strict\";var r={}.propertyIsEnumerable,o=Object.getOwnPropertyDescriptor,i=o&&!r.call({1:2},1);e.f=i?function(t){var e=o(this,t);return!!e&&e.enumerable}:r},function(t,e){e.f=Object.getOwnPropertySymbols},function(t,e,n){var r=n(5),o=n(12),i=n(49),a=n(108),u=i(\"IE_PROTO\"),c=Object.prototype;t.exports=a?Object.getPrototypeOf:function(t){return t=o(t),r(t,u)?t[u]:\"function\"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?c:null}},function(t,e,n){var r=n(33);t.exports=function(t,e,n){if(r(t),void 0===e)return t;switch(n){case 0:return function(){return t.call(e)};case 1:return function(n){return t.call(e,n)};case 2:return function(n,r){return t.call(e,n,r)};case 3:return function(n,r,o){return t.call(e,n,r,o)}}return function(){return t.apply(e,arguments)}}},function(t,e,n){var r={};r[n(1)(\"toStringTag\")]=\"z\",t.exports=\"[object z]\"===String(r)},function(t,e,n){\"use strict\";var r=n(0),o=n(4),i=n(43),a=n(102),u=n(14),c=n(11),s=n(78),f=n(1),l=n(51)(\"slice\"),p=f(\"species\"),h=[].slice,d=Math.max;r({target:\"Array\",proto:!0,forced:!l},{slice:function(t,e){var n,r,f,l=c(this),v=u(l.length),y=a(t,v),m=a(void 0===e?v:e,v);if(i(l)&&(\"function\"!=typeof(n=l.constructor)||n!==Array&&!i(n.prototype)?o(n)&&null===(n=n[p])&&(n=void 0):n=void 0,n===Array||void 0===n))return h.call(l,y,m);for(r=new(void 0===n?Array:n)(d(m-y,0)),f=0;y-1&&t%1==0&&t<=9007199254740991}},function(t,e,n){var r=n(10),o=n(86),i=/\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,a=/^\\w*$/;t.exports=function(t,e){if(r(t))return!1;var n=typeof t;return!(\"number\"!=n&&\"symbol\"!=n&&\"boolean\"!=n&&null!=t&&!o(t))||(a.test(t)||!i.test(t)||null!=e&&t in Object(e))}},function(t,e,n){var r=n(26),o=n(21);t.exports=function(t){return\"symbol\"==typeof t||o(t)&&\"[object Symbol]\"==r(t)}},function(t,e){t.exports=function(t){return t}},function(t,e,n){\"use strict\";var r=n(0),o=n(25).some;r({target:\"Array\",proto:!0,forced:!n(37)(\"some\")},{some:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}})},function(t,e,n){var r=n(0),o=n(12),i=n(47);r({target:\"Object\",stat:!0,forced:n(3)((function(){i(1)}))},{keys:function(t){return i(o(t))}})},function(t,e,n){\"use strict\";var r=n(0),o=n(119);r({target:\"Array\",proto:!0,forced:[].forEach!=o},{forEach:o})},function(t,e,n){var r=n(2),o=n(117),i=n(119),a=n(9);for(var u in o){var c=r[u],s=c&&c.prototype;if(s&&s.forEach!==i)try{a(s,\"forEach\",i)}catch(t){s.forEach=i}}},function(t,e,n){var r=n(1),o=n(46),i=n(8),a=r(\"unscopables\"),u=Array.prototype;null==u[a]&&i.f(u,a,{configurable:!0,value:o(null)}),t.exports=function(t){u[a][t]=!0}},function(t,e,n){var r=n(3),o=/#|\\.prototype\\./,i=function(t,e){var n=u[a(t)];return n==s||n!=c&&(\"function\"==typeof e?r(e):!!e)},a=i.normalize=function(t){return String(t).replace(o,\".\").toLowerCase()},u=i.data={},c=i.NATIVE=\"N\",s=i.POLYFILL=\"P\";t.exports=i},function(t,e,n){var r=n(6),o=n(33),i=n(1)(\"species\");t.exports=function(t,e){var n,a=r(t).constructor;return void 0===a||null==(n=r(a)[i])?e:o(n)}},function(t,e,n){var r=n(149);t.exports=function(t){if(r(t))throw TypeError(\"The method doesn't accept regular expressions\");return t}},function(t,e,n){var r=n(1)(\"match\");t.exports=function(t){var e=/./;try{\"/./\"[t](e)}catch(n){try{return e[r]=!1,\"/./\"[t](e)}catch(t){}}return!1}},function(t,e,n){\"use strict\";var r=n(11),o=n(92),i=n(32),a=n(24),u=n(104),c=a.set,s=a.getterFor(\"Array Iterator\");t.exports=u(Array,\"Array\",(function(t,e){c(this,{type:\"Array Iterator\",target:r(t),index:0,kind:e})}),(function(){var t=s(this),e=t.target,n=t.kind,r=t.index++;return!e||r>=e.length?(t.target=void 0,{value:void 0,done:!0}):\"keys\"==n?{value:r,done:!1}:\"values\"==n?{value:e[r],done:!1}:{value:[r,e[r]],done:!1}}),\"values\"),i.Arguments=i.Array,o(\"keys\"),o(\"values\"),o(\"entries\")},function(t,e,n){var r=n(7),o=n(3),i=n(66);t.exports=!r&&!o((function(){return 7!=Object.defineProperty(i(\"div\"),\"a\",{get:function(){return 7}}).a}))},function(t,e,n){var r=n(2);t.exports=r},function(t,e,n){var r=n(67);t.exports=r&&!Symbol.sham&&\"symbol\"==typeof Symbol.iterator},function(t,e,n){var r=n(5),o=n(11),i=n(69).indexOf,a=n(31);t.exports=function(t,e){var n,u=o(t),c=0,s=[];for(n in u)!r(a,n)&&r(u,n)&&s.push(n);for(;e.length>c;)r(u,n=e[c++])&&(~i(s,n)||s.push(n));return s}},function(t,e,n){var r=n(48),o=Math.max,i=Math.min;t.exports=function(t,e){var n=r(t);return n<0?o(n+e,0):i(n,e)}},function(t,e,n){var r=n(17);t.exports=r(\"document\",\"documentElement\")},function(t,e,n){\"use strict\";var r=n(0),o=n(166),i=n(74),a=n(155),u=n(50),c=n(9),s=n(15),f=n(1),l=n(16),p=n(32),h=n(107),d=h.IteratorPrototype,v=h.BUGGY_SAFARI_ITERATORS,y=f(\"iterator\"),m=function(){return this};t.exports=function(t,e,n,f,h,g,b){o(n,e,f);var _,x,w,O=function(t){if(t===h&&A)return A;if(!v&&t in k)return k[t];switch(t){case\"keys\":case\"values\":case\"entries\":return function(){return new n(this,t)}}return function(){return new n(this)}},j=e+\" Iterator\",S=!1,k=t.prototype,E=k[y]||k[\"@@iterator\"]||h&&k[h],A=!v&&E||O(h),$=\"Array\"==e&&k.entries||E;if($&&(_=i($.call(new t)),d!==Object.prototype&&_.next&&(l||i(_)===d||(a?a(_,d):\"function\"!=typeof _[y]&&c(_,y,m)),u(_,j,!0,!0),l&&(p[j]=m))),\"values\"==h&&E&&\"values\"!==E.name&&(S=!0,A=function(){return E.call(this)}),l&&!b||k[y]===A||c(k,y,A),p[e]=A,h)if(x={values:O(\"values\"),keys:g?A:O(\"keys\"),entries:O(\"entries\")},b)for(w in x)(v||S||!(w in k))&&s(k,w,x[w]);else r({target:e,proto:!0,forced:v||S},x);return x}},function(t,e,n){var r=n(5),o=n(106),i=n(20),a=n(8);t.exports=function(t,e){for(var n=o(e),u=a.f,c=i.f,s=0;sn;)e.push(arguments[n++]);return _[++b]=function(){(\"function\"==typeof t?t:Function(t)).apply(void 0,e)},r(b),b},v=function(t){delete _[t]},p?r=function(t){y.nextTick(w(t))}:g&&g.now?r=function(t){g.now(w(t))}:m&&!l?(i=(o=new m).port2,o.port1.onmessage=O,r=c(i.postMessage,i,1)):a.addEventListener&&\"function\"==typeof postMessage&&!a.importScripts&&h&&\"file:\"!==h.protocol&&!u(j)?(r=j,a.addEventListener(\"message\",O,!1)):r=\"onreadystatechange\"in f(\"script\")?function(t){s.appendChild(f(\"script\")).onreadystatechange=function(){s.removeChild(this),x(t)}}:function(t){setTimeout(w(t),0)}),t.exports={set:d,clear:v}},function(t,e,n){var r=n(68);t.exports=/(iphone|ipod|ipad).*applewebkit/i.test(r)},function(t,e,n){var r=n(6),o=n(4),i=n(114);t.exports=function(t,e){if(r(t),o(e)&&e.constructor===t)return e;var n=i.f(t);return(0,n.resolve)(e),n.promise}},function(t,e,n){\"use strict\";var r=n(33),o=function(t){var e,n;this.promise=new t((function(t,r){if(void 0!==e||void 0!==n)throw TypeError(\"Bad Promise constructor\");e=t,n=r})),this.resolve=r(e),this.reject=r(n)};t.exports.f=function(t){return new o(t)}},function(t,e,n){var r=function(t){\"use strict\";var e=Object.prototype,n=e.hasOwnProperty,r=\"function\"==typeof Symbol?Symbol:{},o=r.iterator||\"@@iterator\",i=r.asyncIterator||\"@@asyncIterator\",a=r.toStringTag||\"@@toStringTag\";function u(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{u({},\"\")}catch(t){u=function(t,e,n){return t[e]=n}}function c(t,e,n,r){var o=e&&e.prototype instanceof l?e:l,i=Object.create(o.prototype),a=new O(r||[]);return i._invoke=function(t,e,n){var r=\"suspendedStart\";return function(o,i){if(\"executing\"===r)throw new Error(\"Generator is already running\");if(\"completed\"===r){if(\"throw\"===o)throw i;return S()}for(n.method=o,n.arg=i;;){var a=n.delegate;if(a){var u=_(a,n);if(u){if(u===f)continue;return u}}if(\"next\"===n.method)n.sent=n._sent=n.arg;else if(\"throw\"===n.method){if(\"suspendedStart\"===r)throw r=\"completed\",n.arg;n.dispatchException(n.arg)}else\"return\"===n.method&&n.abrupt(\"return\",n.arg);r=\"executing\";var c=s(t,e,n);if(\"normal\"===c.type){if(r=n.done?\"completed\":\"suspendedYield\",c.arg===f)continue;return{value:c.arg,done:n.done}}\"throw\"===c.type&&(r=\"completed\",n.method=\"throw\",n.arg=c.arg)}}}(t,n,a),i}function s(t,e,n){try{return{type:\"normal\",arg:t.call(e,n)}}catch(t){return{type:\"throw\",arg:t}}}t.wrap=c;var f={};function l(){}function p(){}function h(){}var d={};d[o]=function(){return this};var v=Object.getPrototypeOf,y=v&&v(v(j([])));y&&y!==e&&n.call(y,o)&&(d=y);var m=h.prototype=l.prototype=Object.create(d);function g(t){[\"next\",\"throw\",\"return\"].forEach((function(e){u(t,e,(function(t){return this._invoke(e,t)}))}))}function b(t,e){var r;this._invoke=function(o,i){function a(){return new e((function(r,a){!function r(o,i,a,u){var c=s(t[o],t,i);if(\"throw\"!==c.type){var f=c.arg,l=f.value;return l&&\"object\"==typeof l&&n.call(l,\"__await\")?e.resolve(l.__await).then((function(t){r(\"next\",t,a,u)}),(function(t){r(\"throw\",t,a,u)})):e.resolve(l).then((function(t){f.value=t,a(f)}),(function(t){return r(\"throw\",t,a,u)}))}u(c.arg)}(o,i,r,a)}))}return r=r?r.then(a,a):a()}}function _(t,e){var n=t.iterator[e.method];if(void 0===n){if(e.delegate=null,\"throw\"===e.method){if(t.iterator.return&&(e.method=\"return\",e.arg=void 0,_(t,e),\"throw\"===e.method))return f;e.method=\"throw\",e.arg=new TypeError(\"The iterator does not provide a 'throw' method\")}return f}var r=s(n,t.iterator,e.arg);if(\"throw\"===r.type)return e.method=\"throw\",e.arg=r.arg,e.delegate=null,f;var o=r.arg;return o?o.done?(e[t.resultName]=o.value,e.next=t.nextLoc,\"return\"!==e.method&&(e.method=\"next\",e.arg=void 0),e.delegate=null,f):o:(e.method=\"throw\",e.arg=new TypeError(\"iterator result is not an object\"),e.delegate=null,f)}function x(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function w(t){var e=t.completion||{};e.type=\"normal\",delete e.arg,t.completion=e}function O(t){this.tryEntries=[{tryLoc:\"root\"}],t.forEach(x,this),this.reset(!0)}function j(t){if(t){var e=t[o];if(e)return e.call(t);if(\"function\"==typeof t.next)return t;if(!isNaN(t.length)){var r=-1,i=function e(){for(;++r=0;--o){var i=this.tryEntries[o],a=i.completion;if(\"root\"===i.tryLoc)return r(\"end\");if(i.tryLoc<=this.prev){var u=n.call(i,\"catchLoc\"),c=n.call(i,\"finallyLoc\");if(u&&c){if(this.prev=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,\"finallyLoc\")&&this.prev=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),w(n),f}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var r=n.completion;if(\"throw\"===r.type){var o=r.arg;w(n)}return o}}throw new Error(\"illegal catch attempt\")},delegateYield:function(t,e,n){return this.delegate={iterator:j(t),resultName:e,nextLoc:n},\"next\"===this.method&&(this.arg=void 0),f}},t}(t.exports);try{regeneratorRuntime=r}catch(t){Function(\"r\",\"regeneratorRuntime = r\")(r)}},function(t,e,n){var r=n(48),o=n(19),i=function(t){return function(e,n){var i,a,u=String(o(e)),c=r(n),s=u.length;return c<0||c>=s?t?\"\":void 0:(i=u.charCodeAt(c))<55296||i>56319||c+1===s||(a=u.charCodeAt(c+1))<56320||a>57343?t?u.charAt(c):i:t?u.slice(c,c+2):a-56320+(i-55296<<10)+65536}};t.exports={codeAt:i(!1),charAt:i(!0)}},function(t,e){t.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},function(t,e,n){var r=n(4),o=n(43),i=n(1)(\"species\");t.exports=function(t,e){var n;return o(t)&&(\"function\"!=typeof(n=t.constructor)||n!==Array&&!o(n.prototype)?r(n)&&null===(n=n[i])&&(n=void 0):n=void 0),new(void 0===n?Array:n)(0===e?0:e)}},function(t,e,n){\"use strict\";var r=n(25).forEach,o=n(37)(\"forEach\");t.exports=o?[].forEach:function(t){return r(this,t,arguments.length>1?arguments[1]:void 0)}},function(t,e,n){var r=n(3);t.exports=!r((function(){return Object.isExtensible(Object.preventExtensions({}))}))},function(t,e){t.exports=function(t,e){for(var n=-1,r=e.length,o=t.length;++nf))return!1;var p=c.get(t),h=c.get(e);if(p&&h)return p==e&&h==t;var d=-1,v=!0,y=2&n?new r:void 0;for(c.set(t,e),c.set(e,t);++d-1&&t%1==0&&t=e||n<0||y&&t-s>=i}function x(){var t=h();if(_(t))return w(t);u=setTimeout(x,function(t){var n=e-(t-c);return y?p(n,i-(t-s)):n}(t))}function w(t){return u=void 0,m&&r?g(t):(r=o=void 0,a)}function O(){var t=h(),n=_(t);if(r=arguments,o=this,c=t,n){if(void 0===u)return b(c);if(y)return u=setTimeout(x,e),g(c)}return void 0===u&&(u=setTimeout(x,e)),a}return e=v(e)||0,d(n)&&(f=!!n.leading,i=(y=\"maxWait\"in n)?l(v(n.maxWait)||0,e):i,m=\"trailing\"in n?!!n.trailing:m),O.cancel=function(){void 0!==u&&clearTimeout(u),s=0,r=c=o=u=void 0},O.flush=function(){return void 0===u?a:w(h())},O}},function(t,e,n){\"use strict\";var r=n(0),o=n(69).indexOf,i=n(37),a=[].indexOf,u=!!a&&1/[1].indexOf(1,-0)<0,c=i(\"indexOf\");r({target:\"Array\",proto:!0,forced:u||!c},{indexOf:function(t){return u?a.apply(this,arguments)||0:o(this,t,arguments.length>1?arguments[1]:void 0)}})},function(t,e,n){var r=n(4),o=n(22),i=n(1)(\"match\");t.exports=function(t){var e;return r(t)&&(void 0!==(e=t[i])?!!e:\"RegExp\"==o(t))}},function(t,e,n){\"use strict\";n(42);var r=n(15),o=n(3),i=n(1),a=n(62),u=n(9),c=i(\"species\"),s=!o((function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:\"7\"},t},\"7\"!==\"\".replace(t,\"$\")})),f=\"$0\"===\"a\".replace(/./,\"$0\"),l=i(\"replace\"),p=!!/./[l]&&\"\"===/./[l](\"a\",\"$0\"),h=!o((function(){var t=/(?:)/,e=t.exec;t.exec=function(){return e.apply(this,arguments)};var n=\"ab\".split(t);return 2!==n.length||\"a\"!==n[0]||\"b\"!==n[1]}));t.exports=function(t,e,n,l){var d=i(t),v=!o((function(){var e={};return e[d]=function(){return 7},7!=\"\"[t](e)})),y=v&&!o((function(){var e=!1,n=/a/;return\"split\"===t&&((n={}).constructor={},n.constructor[c]=function(){return n},n.flags=\"\",n[d]=/./[d]),n.exec=function(){return e=!0,null},n[d](\"\"),!e}));if(!v||!y||\"replace\"===t&&(!s||!f||p)||\"split\"===t&&!h){var m=/./[d],g=n(d,\"\"[t],(function(t,e,n,r,o){return e.exec===a?v&&!o?{done:!0,value:m.call(e,n,r)}:{done:!0,value:t.call(n,e,r)}:{done:!1}}),{REPLACE_KEEPS_$0:f,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:p}),b=g[0],_=g[1];r(String.prototype,t,b),r(RegExp.prototype,d,2==e?function(t,e){return _.call(t,this,e)}:function(t){return _.call(t,this)})}l&&u(RegExp.prototype[d],\"sham\",!0)}},function(t,e,n){\"use strict\";var r=n(6);t.exports=function(){var t=r(this),e=\"\";return t.global&&(e+=\"g\"),t.ignoreCase&&(e+=\"i\"),t.multiline&&(e+=\"m\"),t.dotAll&&(e+=\"s\"),t.unicode&&(e+=\"u\"),t.sticky&&(e+=\"y\"),e}},function(t,e,n){\"use strict\";var r=n(116).charAt;t.exports=function(t,e,n){return e+(n?r(t,e).length:1)}},function(t,e,n){var r=n(22),o=n(62);t.exports=function(t,e){var n=t.exec;if(\"function\"==typeof n){var i=n.call(t,e);if(\"object\"!=typeof i)throw TypeError(\"RegExp exec method returned something other than an Object or null\");return i}if(\"RegExp\"!==r(t))throw TypeError(\"RegExp#exec called on incompatible receiver\");return o.call(t,e)}},function(t,e,n){\"use strict\";var r=n(0),o=n(27),i=n(11),a=n(37),u=[].join,c=o!=Object,s=a(\"join\",\",\");r({target:\"Array\",proto:!0,forced:c||!s},{join:function(t){return u.call(i(this),void 0===t?\",\":t)}})},function(t,e,n){var r=n(6),o=n(167);t.exports=Object.setPrototypeOf||(\"__proto__\"in{}?function(){var t,e=!1,n={};try{(t=Object.getOwnPropertyDescriptor(Object.prototype,\"__proto__\").set).call(n,[]),e=n instanceof Array}catch(t){}return function(n,i){return r(n),o(i),e?t.call(n,i):n.__proto__=i,n}}():void 0)},function(t,e,n){\"use strict\";var r=n(17),o=n(8),i=n(1),a=n(7),u=i(\"species\");t.exports=function(t){var e=r(t),n=o.f;a&&e&&!e[u]&&n(e,u,{configurable:!0,get:function(){return this}})}},function(t,e,n){\"use strict\";var r=n(3);function o(t,e){return RegExp(t,e)}e.UNSUPPORTED_Y=r((function(){var t=o(\"a\",\"y\");return t.lastIndex=2,null!=t.exec(\"abcd\")})),e.BROKEN_CARET=r((function(){var t=o(\"^r\",\"gy\");return t.lastIndex=2,null!=t.exec(\"str\")}))},function(t,e,n){\"use strict\";var r=n(0),o=n(69).includes,i=n(92);r({target:\"Array\",proto:!0},{includes:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}}),i(\"includes\")},function(t,e,n){\"use strict\";var r=n(0),o=n(95),i=n(19);r({target:\"String\",proto:!0,forced:!n(96)(\"includes\")},{includes:function(t){return!!~String(i(this)).indexOf(o(t),arguments.length>1?arguments[1]:void 0)}})},function(t,e,n){\"use strict\";var r=n(0),o=n(3),i=n(43),a=n(4),u=n(12),c=n(14),s=n(78),f=n(118),l=n(51),p=n(1),h=n(30),d=p(\"isConcatSpreadable\"),v=h>=51||!o((function(){var t=[];return t[d]=!1,t.concat()[0]!==t})),y=l(\"concat\"),m=function(t){if(!a(t))return!1;var e=t[d];return void 0!==e?!!e:i(t)};r({target:\"Array\",proto:!0,forced:!v||!y},{concat:function(t){var e,n,r,o,i,a=u(this),l=f(a,0),p=0;for(e=-1,r=arguments.length;e9007199254740991)throw TypeError(\"Maximum allowed index exceeded\");for(n=0;n=9007199254740991)throw TypeError(\"Maximum allowed index exceeded\");s(l,p++,i)}return l.length=p,l}})},function(t,e,n){var r=n(140);t.exports=function(t,e,n){var o=null==t?void 0:r(t,e);return void 0===o?n:o}},function(t,e){t.exports=function(t){var e=null==t?0:t.length;return e?t[e-1]:void 0}},function(t,e,n){t.exports=n(294)},function(t,e,n){var r=n(7),o=n(8),i=n(6),a=n(47);t.exports=r?Object.defineProperties:function(t,e){i(t);for(var n,r=a(e),u=r.length,c=0;u>c;)o.f(t,n=r[c++],e[n]);return t}},function(t,e,n){var r=n(2),o=n(71),i=r.WeakMap;t.exports=\"function\"==typeof i&&/native code/.test(o(i))},function(t,e,n){\"use strict\";var r=n(107).IteratorPrototype,o=n(46),i=n(28),a=n(50),u=n(32),c=function(){return this};t.exports=function(t,e,n){var s=e+\" Iterator\";return t.prototype=o(r,{next:i(1,n)}),a(t,s,!1,!0),u[s]=c,t}},function(t,e,n){var r=n(4);t.exports=function(t){if(!r(t)&&null!==t)throw TypeError(\"Can't set \"+String(t)+\" as a prototype\");return t}},function(t,e,n){\"use strict\";var r,o,i,a,u=n(0),c=n(16),s=n(2),f=n(17),l=n(109),p=n(15),h=n(169),d=n(50),v=n(156),y=n(4),m=n(33),g=n(170),b=n(71),_=n(171),x=n(175),w=n(94),O=n(111).set,j=n(176),S=n(113),k=n(178),E=n(114),A=n(179),$=n(24),C=n(93),P=n(1),T=n(29),L=n(30),R=P(\"species\"),I=\"Promise\",M=$.get,N=$.set,D=$.getterFor(I),F=l,U=s.TypeError,B=s.document,z=s.process,q=f(\"fetch\"),V=E.f,H=V,W=!!(B&&B.createEvent&&s.dispatchEvent),G=\"function\"==typeof PromiseRejectionEvent,K=C(I,(function(){if(!(b(F)!==String(F))){if(66===L)return!0;if(!T&&!G)return!0}if(c&&!F.prototype.finally)return!0;if(L>=51&&/native code/.test(F))return!1;var t=F.resolve(1),e=function(t){t((function(){}),(function(){}))};return(t.constructor={})[R]=e,!(t.then((function(){}))instanceof e)})),J=K||!x((function(t){F.all(t).catch((function(){}))})),X=function(t){var e;return!(!y(t)||\"function\"!=typeof(e=t.then))&&e},Y=function(t,e){if(!t.notified){t.notified=!0;var n=t.reactions;j((function(){for(var r=t.value,o=1==t.state,i=0;n.length>i;){var a,u,c,s=n[i++],f=o?s.ok:s.fail,l=s.resolve,p=s.reject,h=s.domain;try{f?(o||(2===t.rejection&&et(t),t.rejection=1),!0===f?a=r:(h&&h.enter(),a=f(r),h&&(h.exit(),c=!0)),a===s.promise?p(U(\"Promise-chain cycle\")):(u=X(a))?u.call(a,l,p):l(a)):p(r)}catch(t){h&&!c&&h.exit(),p(t)}}t.reactions=[],t.notified=!1,e&&!t.rejection&&Z(t)}))}},Q=function(t,e,n){var r,o;W?((r=B.createEvent(\"Event\")).promise=e,r.reason=n,r.initEvent(t,!1,!0),s.dispatchEvent(r)):r={promise:e,reason:n},!G&&(o=s[\"on\"+t])?o(r):\"unhandledrejection\"===t&&k(\"Unhandled promise rejection\",n)},Z=function(t){O.call(s,(function(){var e,n=t.facade,r=t.value;if(tt(t)&&(e=A((function(){T?z.emit(\"unhandledRejection\",r,n):Q(\"unhandledrejection\",n,r)})),t.rejection=T||tt(t)?2:1,e.error))throw e.value}))},tt=function(t){return 1!==t.rejection&&!t.parent},et=function(t){O.call(s,(function(){var e=t.facade;T?z.emit(\"rejectionHandled\",e):Q(\"rejectionhandled\",e,t.value)}))},nt=function(t,e,n){return function(r){t(e,r,n)}},rt=function(t,e,n){t.done||(t.done=!0,n&&(t=n),t.value=e,t.state=2,Y(t,!0))},ot=function(t,e,n){if(!t.done){t.done=!0,n&&(t=n);try{if(t.facade===e)throw U(\"Promise can't be resolved itself\");var r=X(e);r?j((function(){var n={done:!1};try{r.call(e,nt(ot,n,t),nt(rt,n,t))}catch(e){rt(n,e,t)}})):(t.value=e,t.state=1,Y(t,!1))}catch(e){rt({done:!1},e,t)}}};K&&(F=function(t){g(this,F,I),m(t),r.call(this);var e=M(this);try{t(nt(ot,e),nt(rt,e))}catch(t){rt(e,t)}},(r=function(t){N(this,{type:I,done:!1,notified:!1,parent:!1,reactions:[],rejection:!1,state:0,value:void 0})}).prototype=h(F.prototype,{then:function(t,e){var n=D(this),r=V(w(this,F));return r.ok=\"function\"!=typeof t||t,r.fail=\"function\"==typeof e&&e,r.domain=T?z.domain:void 0,n.parent=!0,n.reactions.push(r),0!=n.state&&Y(n,!1),r.promise},catch:function(t){return this.then(void 0,t)}}),o=function(){var t=new r,e=M(t);this.promise=t,this.resolve=nt(ot,e),this.reject=nt(rt,e)},E.f=V=function(t){return t===F||t===i?new o(t):H(t)},c||\"function\"!=typeof l||(a=l.prototype.then,p(l.prototype,\"then\",(function(t,e){var n=this;return new F((function(t,e){a.call(n,t,e)})).then(t,e)}),{unsafe:!0}),\"function\"==typeof q&&u({global:!0,enumerable:!0,forced:!0},{fetch:function(t){return S(F,q.apply(s,arguments))}}))),u({global:!0,wrap:!0,forced:K},{Promise:F}),d(F,I,!1,!0),v(I),i=f(I),u({target:I,stat:!0,forced:K},{reject:function(t){var e=V(this);return e.reject.call(void 0,t),e.promise}}),u({target:I,stat:!0,forced:c||K},{resolve:function(t){return S(c&&this===i?F:this,t)}}),u({target:I,stat:!0,forced:J},{all:function(t){var e=this,n=V(e),r=n.resolve,o=n.reject,i=A((function(){var n=m(e.resolve),i=[],a=0,u=1;_(t,(function(t){var c=a++,s=!1;i.push(void 0),u++,n.call(e,t).then((function(t){s||(s=!0,i[c]=t,--u||r(i))}),o)})),--u||r(i)}));return i.error&&o(i.value),n.promise},race:function(t){var e=this,n=V(e),r=n.reject,o=A((function(){var o=m(e.resolve);_(t,(function(t){o.call(e,t).then(n.resolve,r)}))}));return o.error&&r(o.value),n.promise}})},function(t,e,n){var r=n(15);t.exports=function(t,e,n){for(var o in e)r(t,o,e[o],n);return t}},function(t,e){t.exports=function(t,e,n){if(!(t instanceof e))throw TypeError(\"Incorrect \"+(n?n+\" \":\"\")+\"invocation\");return t}},function(t,e,n){var r=n(6),o=n(172),i=n(14),a=n(75),u=n(173),c=n(174),s=function(t,e){this.stopped=t,this.result=e};t.exports=function(t,e,n){var f,l,p,h,d,v,y,m=n&&n.that,g=!(!n||!n.AS_ENTRIES),b=!(!n||!n.IS_ITERATOR),_=!(!n||!n.INTERRUPTED),x=a(e,m,1+g+_),w=function(t){return f&&c(f),new s(!0,t)},O=function(t){return g?(r(t),_?x(t[0],t[1],w):x(t[0],t[1])):_?x(t,w):x(t)};if(b)f=t;else{if(\"function\"!=typeof(l=u(t)))throw TypeError(\"Target is not iterable\");if(o(l)){for(p=0,h=i(t.length);h>p;p++)if((d=O(t[p]))&&d instanceof s)return d;return new s(!1)}f=l.call(t)}for(v=f.next;!(y=v.call(f)).done;){try{d=O(y.value)}catch(t){throw c(f),t}if(\"object\"==typeof d&&d&&d instanceof s)return d}return new s(!1)}},function(t,e,n){var r=n(1),o=n(32),i=r(\"iterator\"),a=Array.prototype;t.exports=function(t){return void 0!==t&&(o.Array===t||a[i]===t)}},function(t,e,n){var r=n(110),o=n(32),i=n(1)(\"iterator\");t.exports=function(t){if(null!=t)return t[i]||t[\"@@iterator\"]||o[r(t)]}},function(t,e,n){var r=n(6);t.exports=function(t){var e=t.return;if(void 0!==e)return r(e.call(t)).value}},function(t,e,n){var r=n(1)(\"iterator\"),o=!1;try{var i=0,a={next:function(){return{done:!!i++}},return:function(){o=!0}};a[r]=function(){return this},Array.from(a,(function(){throw 2}))}catch(t){}t.exports=function(t,e){if(!e&&!o)return!1;var n=!1;try{var i={};i[r]=function(){return{next:function(){return{done:n=!0}}}},t(i)}catch(t){}return n}},function(t,e,n){var r,o,i,a,u,c,s,f,l=n(2),p=n(20).f,h=n(111).set,d=n(112),v=n(177),y=n(29),m=l.MutationObserver||l.WebKitMutationObserver,g=l.document,b=l.process,_=l.Promise,x=p(l,\"queueMicrotask\"),w=x&&x.value;w||(r=function(){var t,e;for(y&&(t=b.domain)&&t.exit();o;){e=o.fn,o=o.next;try{e()}catch(t){throw o?a():i=void 0,t}}i=void 0,t&&t.enter()},d||y||v||!m||!g?_&&_.resolve?(s=_.resolve(void 0),f=s.then,a=function(){f.call(s,r)}):a=y?function(){b.nextTick(r)}:function(){h.call(l,r)}:(u=!0,c=g.createTextNode(\"\"),new m(r).observe(c,{characterData:!0}),a=function(){c.data=u=!u})),t.exports=w||function(t){var e={fn:t,next:void 0};i&&(i.next=e),o||(o=e,a()),i=e}},function(t,e,n){var r=n(68);t.exports=/web0s(?!.*chrome)/i.test(r)},function(t,e,n){var r=n(2);t.exports=function(t,e){var n=r.console;n&&n.error&&(1===arguments.length?n.error(t):n.error(t,e))}},function(t,e){t.exports=function(t){try{return{error:!1,value:t()}}catch(t){return{error:!0,value:t}}}},function(t,e,n){var r=n(0),o=n(181);r({target:\"Object\",stat:!0,forced:Object.assign!==o},{assign:o})},function(t,e,n){\"use strict\";var r=n(7),o=n(3),i=n(47),a=n(73),u=n(72),c=n(12),s=n(27),f=Object.assign,l=Object.defineProperty;t.exports=!f||o((function(){if(r&&1!==f({b:1},f(l({},\"a\",{enumerable:!0,get:function(){l(this,\"b\",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var t={},e={},n=Symbol();return t[n]=7,\"abcdefghijklmnopqrst\".split(\"\").forEach((function(t){e[t]=t})),7!=f({},t)[n]||\"abcdefghijklmnopqrst\"!=i(f({},e)).join(\"\")}))?function(t,e){for(var n=c(t),o=arguments.length,f=1,l=a.f,p=u.f;o>f;)for(var h,d=s(arguments[f++]),v=l?i(d).concat(l(d)):i(d),y=v.length,m=0;y>m;)h=v[m++],r&&!p.call(d,h)||(n[h]=d[h]);return n}:f},function(t,e,n){\"use strict\";var r=n(0),o=n(16),i=n(109),a=n(3),u=n(17),c=n(94),s=n(113),f=n(15);r({target:\"Promise\",proto:!0,real:!0,forced:!!i&&a((function(){i.prototype.finally.call({then:function(){}},(function(){}))}))},{finally:function(t){var e=c(this,u(\"Promise\")),n=\"function\"==typeof t;return this.then(n?function(n){return s(e,t()).then((function(){return n}))}:t,n?function(n){return s(e,t()).then((function(){throw n}))}:t)}}),o||\"function\"!=typeof i||i.prototype.finally||f(i.prototype,\"finally\",u(\"Promise\").prototype.finally)},function(t,e,n){\"use strict\";var r=n(76),o=n(110);t.exports=r?{}.toString:function(){return\"[object \"+o(this)+\"]\"}},function(t,e,n){var r=n(0),o=n(7),i=n(106),a=n(11),u=n(20),c=n(78);r({target:\"Object\",stat:!0,sham:!o},{getOwnPropertyDescriptors:function(t){for(var e,n,r=a(t),o=u.f,s=i(r),f={},l=0;s.length>l;)void 0!==(n=o(r,e=s[l++]))&&c(f,e,n);return f}})},function(t,e,n){var r=n(0),o=n(3),i=n(12),a=n(74),u=n(108);r({target:\"Object\",stat:!0,forced:o((function(){a(1)})),sham:!u},{getPrototypeOf:function(t){return a(i(t))}})},function(t,e,n){\"use strict\";var r=n(0),o=n(187).left,i=n(37),a=n(30),u=n(29);r({target:\"Array\",proto:!0,forced:!i(\"reduce\")||!u&&a>79&&a<83},{reduce:function(t){return o(this,t,arguments.length,arguments.length>1?arguments[1]:void 0)}})},function(t,e,n){var r=n(33),o=n(12),i=n(27),a=n(14),u=function(t){return function(e,n,u,c){r(n);var s=o(e),f=i(s),l=a(s.length),p=t?l-1:0,h=t?-1:1;if(u<2)for(;;){if(p in f){c=f[p],p+=h;break}if(p+=h,t?p<0:l<=p)throw TypeError(\"Reduce of empty array with no initial value\")}for(;t?p>=0:l>p;p+=h)p in f&&(c=n(c,f[p],p,s));return c}};t.exports={left:u(!1),right:u(!0)}},function(t,e,n){\"use strict\";var r,o=n(0),i=n(20).f,a=n(14),u=n(95),c=n(19),s=n(96),f=n(16),l=\"\".startsWith,p=Math.min,h=s(\"startsWith\");o({target:\"String\",proto:!0,forced:!!(f||h||(r=i(String.prototype,\"startsWith\"),!r||r.writable))&&!h},{startsWith:function(t){var e=String(c(this));u(t);var n=a(p(arguments.length>1?arguments[1]:void 0,e.length)),r=String(t);return l?l.call(e,r,n):e.slice(n,n+r.length)===r}})},function(t,e,n){var r=n(0),o=n(120),i=n(3),a=n(4),u=n(190).onFreeze,c=Object.freeze;r({target:\"Object\",stat:!0,forced:i((function(){c(1)})),sham:!o},{freeze:function(t){return c&&a(t)?c(u(t)):t}})},function(t,e,n){var r=n(31),o=n(4),i=n(5),a=n(8).f,u=n(45),c=n(120),s=u(\"meta\"),f=0,l=Object.isExtensible||function(){return!0},p=function(t){a(t,s,{value:{objectID:\"O\"+ ++f,weakData:{}}})},h=t.exports={REQUIRED:!1,fastKey:function(t,e){if(!o(t))return\"symbol\"==typeof t?t:(\"string\"==typeof t?\"S\":\"P\")+t;if(!i(t,s)){if(!l(t))return\"F\";if(!e)return\"E\";p(t)}return t[s].objectID},getWeakData:function(t,e){if(!i(t,s)){if(!l(t))return!0;if(!e)return!1;p(t)}return t[s].weakData},onFreeze:function(t){return c&&h.REQUIRED&&l(t)&&!i(t,s)&&p(t),t}};r[s]=!0},function(t,e,n){n(0)({target:\"Object\",stat:!0,sham:!n(7)},{create:n(46)})},function(t,e,n){var r=n(12),o=Math.floor,i=\"\".replace,a=/\\$([$&'`]|\\d{1,2}|<[^>]*>)/g,u=/\\$([$&'`]|\\d{1,2})/g;t.exports=function(t,e,n,c,s,f){var l=n+t.length,p=c.length,h=u;return void 0!==s&&(s=r(s),h=a),i.call(f,h,(function(r,i){var a;switch(i.charAt(0)){case\"$\":return\"$\";case\"&\":return t;case\"`\":return e.slice(0,n);case\"'\":return e.slice(l);case\"<\":a=s[i.slice(1,-1)];break;default:var u=+i;if(0===u)return r;if(u>p){var f=o(u/10);return 0===f?r:f<=p?void 0===c[f-1]?i.charAt(1):c[f-1]+i.charAt(1):r}a=c[u-1]}return void 0===a?\"\":a}))}},function(t,e,n){var r=n(121),o=n(194);t.exports=function t(e,n,i,a,u){var c=-1,s=e.length;for(i||(i=o),u||(u=[]);++c0&&i(f)?n>1?t(f,n-1,i,a,u):r(u,f):a||(u[u.length]=f)}return u}},function(t,e,n){var r=n(38),o=n(79),i=n(10),a=r?r.isConcatSpreadable:void 0;t.exports=function(t){return i(t)||o(t)||!!(a&&t&&t[a])}},function(t,e,n){var r=n(26),o=n(21);t.exports=function(t){return o(t)&&\"[object Arguments]\"==r(t)}},function(t,e,n){var r=n(38),o=Object.prototype,i=o.hasOwnProperty,a=o.toString,u=r?r.toStringTag:void 0;t.exports=function(t){var e=i.call(t,u),n=t[u];try{t[u]=void 0;var r=!0}catch(t){}var o=a.call(t);return r&&(e?t[u]=n:delete t[u]),o}},function(t,e){var n=Object.prototype.toString;t.exports=function(t){return n.call(t)}},function(t,e,n){var r=n(199),o=n(255),i=n(87),a=n(10),u=n(265);t.exports=function(t){return\"function\"==typeof t?t:null==t?i:\"object\"==typeof t?a(t)?o(t[0],t[1]):r(t):u(t)}},function(t,e,n){var r=n(200),o=n(254),i=n(139);t.exports=function(t){var e=o(t);return 1==e.length&&e[0][2]?i(e[0][0],e[0][1]):function(n){return n===t||r(n,t,e)}}},function(t,e,n){var r=n(123),o=n(127);t.exports=function(t,e,n,i){var a=n.length,u=a,c=!i;if(null==t)return!u;for(t=Object(t);a--;){var s=n[a];if(c&&s[2]?s[1]!==t[s[0]]:!(s[0]in t))return!1}for(;++a-1}},function(t,e,n){var r=n(53);t.exports=function(t,e){var n=this.__data__,o=r(n,t);return o<0?(++this.size,n.push([t,e])):n[o][1]=e,this}},function(t,e,n){var r=n(52);t.exports=function(){this.__data__=new r,this.size=0}},function(t,e){t.exports=function(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n}},function(t,e){t.exports=function(t){return this.__data__.get(t)}},function(t,e){t.exports=function(t){return this.__data__.has(t)}},function(t,e,n){var r=n(52),o=n(80),i=n(82);t.exports=function(t,e){var n=this.__data__;if(n instanceof r){var a=n.__data__;if(!o||a.length<199)return a.push([t,e]),this.size=++n.size,this;n=this.__data__=new i(a)}return n.set(t,e),this.size=n.size,this}},function(t,e,n){var r=n(125),o=n(212),i=n(81),a=n(126),u=/^\\[object .+?Constructor\\]$/,c=Function.prototype,s=Object.prototype,f=c.toString,l=s.hasOwnProperty,p=RegExp(\"^\"+f.call(l).replace(/[\\\\^$.*+?()[\\]{}|]/g,\"\\\\$&\").replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g,\"$1.*?\")+\"$\");t.exports=function(t){return!(!i(t)||o(t))&&(r(t)?p:u).test(a(t))}},function(t,e,n){var r,o=n(213),i=(r=/[^.]+$/.exec(o&&o.keys&&o.keys.IE_PROTO||\"\"))?\"Symbol(src)_1.\"+r:\"\";t.exports=function(t){return!!i&&i in t}},function(t,e,n){var r=n(13)[\"__core-js_shared__\"];t.exports=r},function(t,e){t.exports=function(t,e){return null==t?void 0:t[e]}},function(t,e,n){var r=n(216),o=n(52),i=n(80);t.exports=function(){this.size=0,this.__data__={hash:new r,map:new(i||o),string:new r}}},function(t,e,n){var r=n(217),o=n(218),i=n(219),a=n(220),u=n(221);function c(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e0){if(++e>=800)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}},function(t,e,n){var r=n(129),o=n(277),i=n(282),a=n(130),u=n(283),c=n(83);t.exports=function(t,e,n){var s=-1,f=o,l=t.length,p=!0,h=[],d=h;if(n)p=!1,f=i;else if(l>=200){var v=e?null:u(t);if(v)return c(v);p=!1,f=a,d=new r}else d=e?[]:h;t:for(;++s-1}},function(t,e,n){var r=n(279),o=n(280),i=n(281);t.exports=function(t,e,n){return e==e?i(t,e,n):r(t,o,n)}},function(t,e){t.exports=function(t,e,n,r){for(var o=t.length,i=n+(r?1:-1);r?i--:++ii;)o.push(arguments[i++]);if(r=e,(h(e)||void 0!==t)&&!it(t))return p(e)||(e=function(t,e){if(\"function\"==typeof r&&(e=r.call(this,t,e)),!it(e))return e}),o[1]=e,H.apply(null,o)}});V.prototype[U]||E(V.prototype,U,V.prototype.valueOf),M(V,\"Symbol\"),P[F]=!0},function(t,e,n){var r=n(11),o=n(61).f,i={}.toString,a=\"object\"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];t.exports.f=function(t){return a&&\"[object Window]\"==i.call(t)?function(t){try{return o(t)}catch(t){return a.slice()}}(t):o(r(t))}},function(t,e,n){var r=n(99),o=n(5),i=n(143),a=n(8).f;t.exports=function(t){var e=r.Symbol||(r.Symbol={});o(e,t)||a(e,t,{value:i.f(t)})}},function(t,e,n){\"use strict\";var r=n(0),o=n(7),i=n(2),a=n(5),u=n(4),c=n(8).f,s=n(105),f=i.Symbol;if(o&&\"function\"==typeof f&&(!(\"description\"in f.prototype)||void 0!==f().description)){var l={},p=function(){var t=arguments.length<1||void 0===arguments[0]?void 0:String(arguments[0]),e=this instanceof p?new f(t):void 0===t?f():f(t);return\"\"===t&&(l[e]=!0),e};s(p,f);var h=p.prototype=f.prototype;h.constructor=p;var d=h.toString,v=\"Symbol(test)\"==String(f(\"test\")),y=/^Symbol\\((.*)\\)[^)]+$/;c(h,\"description\",{configurable:!0,get:function(){var t=u(this)?this.valueOf():this,e=d.call(t);if(a(l,t))return\"\";var n=v?e.slice(7,-1):e.replace(y,\"$1\");return\"\"===n?void 0:n}}),r({global:!0,forced:!0},{Symbol:p})}},function(t,e,n){\"use strict\";n(144)},function(t,e,n){\"use strict\";n(145)},function(t,e,n){\"use strict\";n.r(e);n(97),n(168),n(180),n(182);function r(t,e,n,r,o,i,a){try{var u=t[i](a),c=u.value}catch(t){return void n(t)}u.done?e(c):Promise.resolve(c).then(r,o)}function o(t){return function(){var e=this,n=arguments;return new Promise((function(o,i){var a=t.apply(e,n);function u(t){r(a,o,i,u,c,\"next\",t)}function c(t){r(a,o,i,u,c,\"throw\",t)}u(void 0)}))}}n(115),n(77),n(34),n(35),n(36),n(59),n(23);var i=Object.freeze({});function a(t){return null==t}function u(t){return null!=t}function c(t){return!0===t}function s(t){return\"string\"==typeof t||\"number\"==typeof t||\"symbol\"==typeof t||\"boolean\"==typeof t}function f(t){return null!==t&&\"object\"==typeof t}var l=Object.prototype.toString;function p(t){return\"[object Object]\"===l.call(t)}function h(t){return\"[object RegExp]\"===l.call(t)}function d(t){var e=parseFloat(String(t));return e>=0&&Math.floor(e)===e&&isFinite(t)}function v(t){return u(t)&&\"function\"==typeof t.then&&\"function\"==typeof t.catch}function y(t){return null==t?\"\":Array.isArray(t)||p(t)&&t.toString===l?JSON.stringify(t,null,2):String(t)}function m(t){var e=parseFloat(t);return isNaN(e)?t:e}function g(t,e){for(var n=Object.create(null),r=t.split(\",\"),o=0;o-1)return t.splice(n,1)}}var x=Object.prototype.hasOwnProperty;function w(t,e){return x.call(t,e)}function O(t){var e=Object.create(null);return function(n){return e[n]||(e[n]=t(n))}}var j=/-(\\w)/g,S=O((function(t){return t.replace(j,(function(t,e){return e?e.toUpperCase():\"\"}))})),k=O((function(t){return t.charAt(0).toUpperCase()+t.slice(1)})),E=/\\B([A-Z])/g,A=O((function(t){return t.replace(E,\"-$1\").toLowerCase()}));var $=Function.prototype.bind?function(t,e){return t.bind(e)}:function(t,e){function n(n){var r=arguments.length;return r?r>1?t.apply(e,arguments):t.call(e,n):t.call(e)}return n._length=t.length,n};function C(t,e){e=e||0;for(var n=t.length-e,r=new Array(n);n--;)r[n]=t[n+e];return r}function P(t,e){for(var n in e)t[n]=e[n];return t}function T(t){for(var e={},n=0;n0,Z=X&&X.indexOf(\"edge/\")>0,tt=(X&&X.indexOf(\"android\"),X&&/iphone|ipad|ipod|ios/.test(X)||\"ios\"===J),et=(X&&/chrome\\/\\d+/.test(X),X&&/phantomjs/.test(X),X&&X.match(/firefox\\/(\\d+)/)),nt={}.watch,rt=!1;if(G)try{var ot={};Object.defineProperty(ot,\"passive\",{get:function(){rt=!0}}),window.addEventListener(\"test-passive\",null,ot)}catch(t){}var it=function(){return void 0===H&&(H=!G&&!K&&\"undefined\"!=typeof global&&(global.process&&\"server\"===global.process.env.VUE_ENV)),H},at=G&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function ut(t){return\"function\"==typeof t&&/native code/.test(t.toString())}var ct,st=\"undefined\"!=typeof Symbol&&ut(Symbol)&&\"undefined\"!=typeof Reflect&&ut(Reflect.ownKeys);ct=\"undefined\"!=typeof Set&&ut(Set)?Set:function(){function t(){this.set=Object.create(null)}return t.prototype.has=function(t){return!0===this.set[t]},t.prototype.add=function(t){this.set[t]=!0},t.prototype.clear=function(){this.set=Object.create(null)},t}();var ft=L,lt=0,pt=function(){this.id=lt++,this.subs=[]};pt.prototype.addSub=function(t){this.subs.push(t)},pt.prototype.removeSub=function(t){_(this.subs,t)},pt.prototype.depend=function(){pt.target&&pt.target.addDep(this)},pt.prototype.notify=function(){var t=this.subs.slice();for(var e=0,n=t.length;e-1)if(i&&!w(o,\"default\"))a=!1;else if(\"\"===a||a===A(t)){var c=qt(String,o.type);(c<0||u0&&(pe((o=t(o,(n||\"\")+\"_\"+r))[0])&&pe(f)&&(l[i]=bt(f.text+o[0].text),o.shift()),l.push.apply(l,o)):s(o)?pe(f)?l[i]=bt(f.text+o):\"\"!==o&&l.push(bt(o)):pe(o)&&pe(f)?l[i]=bt(f.text+o.text):(c(e._isVList)&&u(o.tag)&&a(o.key)&&u(n)&&(o.key=\"__vlist\"+n+\"_\"+r+\"__\"),l.push(o)));return l}(t):void 0}function pe(t){return u(t)&&u(t.text)&&!1===t.isComment}function he(t,e){if(t){for(var n=Object.create(null),r=st?Reflect.ownKeys(t):Object.keys(t),o=0;o0,a=t?!!t.$stable:!o,u=t&&t.$key;if(t){if(t._normalized)return t._normalized;if(a&&n&&n!==i&&u===n.$key&&!o&&!n.$hasNormal)return n;for(var c in r={},t)t[c]&&\"$\"!==c[0]&&(r[c]=me(e,c,t[c]))}else r={};for(var s in e)s in r||(r[s]=ge(e,s));return t&&Object.isExtensible(t)&&(t._normalized=r),q(r,\"$stable\",a),q(r,\"$key\",u),q(r,\"$hasNormal\",o),r}function me(t,e,n){var r=function(){var t=arguments.length?n.apply(null,arguments):n({});return(t=t&&\"object\"==typeof t&&!Array.isArray(t)?[t]:le(t))&&(0===t.length||1===t.length&&t[0].isComment)?void 0:t};return n.proxy&&Object.defineProperty(t,e,{get:r,enumerable:!0,configurable:!0}),r}function ge(t,e){return function(){return t[e]}}function be(t,e){var n,r,o,i,a;if(Array.isArray(t)||\"string\"==typeof t)for(n=new Array(t.length),r=0,o=t.length;rdocument.createEvent(\"Event\").timeStamp&&(fn=function(){return ln.now()})}function pn(){var t,e;for(sn=fn(),un=!0,nn.sort((function(t,e){return t.id-e.id})),cn=0;cncn&&nn[n].id>t.id;)n--;nn.splice(n+1,0,t)}else nn.push(t);an||(an=!0,re(pn))}}(this)},dn.prototype.run=function(){if(this.active){var t=this.get();if(t!==this.value||f(t)||this.deep){var e=this.value;if(this.value=t,this.user)try{this.cb.call(this.vm,t,e)}catch(t){Vt(t,this.vm,'callback for watcher \"'+this.expression+'\"')}else this.cb.call(this.vm,t,e)}}},dn.prototype.evaluate=function(){this.value=this.get(),this.dirty=!1},dn.prototype.depend=function(){for(var t=this.deps.length;t--;)this.deps[t].depend()},dn.prototype.teardown=function(){if(this.active){this.vm._isBeingDestroyed||_(this.vm._watchers,this);for(var t=this.deps.length;t--;)this.deps[t].removeSub(this);this.active=!1}};var vn={enumerable:!0,configurable:!0,get:L,set:L};function yn(t,e,n){vn.get=function(){return this[e][n]},vn.set=function(t){this[e][n]=t},Object.defineProperty(t,n,vn)}function mn(t){t._watchers=[];var e=t.$options;e.props&&function(t,e){var n=t.$options.propsData||{},r=t._props={},o=t.$options._propKeys=[];t.$parent&&St(!1);var i=function(i){o.push(i);var a=Ut(i,e,n,t);At(r,i,a),i in t||yn(t,\"_props\",i)};for(var a in e)i(a);St(!0)}(t,e.props),e.methods&&function(t,e){t.$options.props;for(var n in e)t[n]=\"function\"!=typeof e[n]?L:$(e[n],t)}(t,e.methods),e.data?function(t){var e=t.$options.data;p(e=t._data=\"function\"==typeof e?function(t,e){dt();try{return t.call(e,e)}catch(t){return Vt(t,e,\"data()\"),{}}finally{vt()}}(e,t):e||{})||(e={});var n=Object.keys(e),r=t.$options.props,o=(t.$options.methods,n.length);for(;o--;){var i=n[o];0,r&&w(r,i)||(a=void 0,36!==(a=(i+\"\").charCodeAt(0))&&95!==a&&yn(t,\"_data\",i))}var a;Et(e,!0)}(t):Et(t._data={},!0),e.computed&&function(t,e){var n=t._computedWatchers=Object.create(null),r=it();for(var o in e){var i=e[o],a=\"function\"==typeof i?i:i.get;0,r||(n[o]=new dn(t,a||L,L,gn)),o in t||bn(t,o,i)}}(t,e.computed),e.watch&&e.watch!==nt&&function(t,e){for(var n in e){var r=e[n];if(Array.isArray(r))for(var o=0;o-1:\"string\"==typeof t?t.split(\",\").indexOf(e)>-1:!!h(t)&&t.test(e)}function $n(t,e){var n=t.cache,r=t.keys,o=t._vnode;for(var i in n){var a=n[i];if(a){var u=En(a.componentOptions);u&&!e(u)&&Cn(n,i,r,o)}}}function Cn(t,e,n,r){var o=t[e];!o||r&&o.tag===r.tag||o.componentInstance.$destroy(),t[e]=null,_(n,e)}Sn.prototype._init=function(t){var e=this;e._uid=On++,e._isVue=!0,t&&t._isComponent?function(t,e){var n=t.$options=Object.create(t.constructor.options),r=e._parentVnode;n.parent=e.parent,n._parentVnode=r;var o=r.componentOptions;n.propsData=o.propsData,n._parentListeners=o.listeners,n._renderChildren=o.children,n._componentTag=o.tag,e.render&&(n.render=e.render,n.staticRenderFns=e.staticRenderFns)}(e,t):e.$options=Dt(jn(e.constructor),t||{},e),e._renderProxy=e,e._self=e,function(t){var e=t.$options,n=e.parent;if(n&&!e.abstract){for(;n.$options.abstract&&n.$parent;)n=n.$parent;n.$children.push(t)}t.$parent=n,t.$root=n?n.$root:t,t.$children=[],t.$refs={},t._watcher=null,t._inactive=null,t._directInactive=!1,t._isMounted=!1,t._isDestroyed=!1,t._isBeingDestroyed=!1}(e),function(t){t._events=Object.create(null),t._hasHookEvent=!1;var e=t.$options._parentListeners;e&&Xe(t,e)}(e),function(t){t._vnode=null,t._staticTrees=null;var e=t.$options,n=t.$vnode=e._parentVnode,r=n&&n.context;t.$slots=de(e._renderChildren,r),t.$scopedSlots=i,t._c=function(e,n,r,o){return Be(t,e,n,r,o,!1)},t.$createElement=function(e,n,r,o){return Be(t,e,n,r,o,!0)};var o=n&&n.data;At(t,\"$attrs\",o&&o.attrs||i,null,!0),At(t,\"$listeners\",e._parentListeners||i,null,!0)}(e),en(e,\"beforeCreate\"),function(t){var e=he(t.$options.inject,t);e&&(St(!1),Object.keys(e).forEach((function(n){At(t,n,e[n])})),St(!0))}(e),mn(e),function(t){var e=t.$options.provide;e&&(t._provided=\"function\"==typeof e?e.call(t):e)}(e),en(e,\"created\"),e.$options.el&&e.$mount(e.$options.el)},function(t){var e={get:function(){return this._data}},n={get:function(){return this._props}};Object.defineProperty(t.prototype,\"$data\",e),Object.defineProperty(t.prototype,\"$props\",n),t.prototype.$set=$t,t.prototype.$delete=Ct,t.prototype.$watch=function(t,e,n){if(p(e))return wn(this,t,e,n);(n=n||{}).user=!0;var r=new dn(this,t,e,n);if(n.immediate)try{e.call(this,r.value)}catch(t){Vt(t,this,'callback for immediate watcher \"'+r.expression+'\"')}return function(){r.teardown()}}}(Sn),function(t){var e=/^hook:/;t.prototype.$on=function(t,n){var r=this;if(Array.isArray(t))for(var o=0,i=t.length;o1?C(n):n;for(var r=C(arguments,1),o='event handler for \"'+t+'\"',i=0,a=n.length;iparseInt(this.max)&&Cn(a,u[0],u,this._vnode)),e.data.keepAlive=!0}return e||t&&t[0]}}};!function(t){var e={get:function(){return B}};Object.defineProperty(t,\"config\",e),t.util={warn:ft,extend:P,mergeOptions:Dt,defineReactive:At},t.set=$t,t.delete=Ct,t.nextTick=re,t.observable=function(t){return Et(t),t},t.options=Object.create(null),F.forEach((function(e){t.options[e+\"s\"]=Object.create(null)})),t.options._base=t,P(t.options.components,Tn),function(t){t.use=function(t){var e=this._installedPlugins||(this._installedPlugins=[]);if(e.indexOf(t)>-1)return this;var n=C(arguments,1);return n.unshift(this),\"function\"==typeof t.install?t.install.apply(t,n):\"function\"==typeof t&&t.apply(null,n),e.push(t),this}}(t),function(t){t.mixin=function(t){return this.options=Dt(this.options,t),this}}(t),kn(t),function(t){F.forEach((function(e){t[e]=function(t,n){return n?(\"component\"===e&&p(n)&&(n.name=n.name||t,n=this.options._base.extend(n)),\"directive\"===e&&\"function\"==typeof n&&(n={bind:n,update:n}),this.options[e+\"s\"][t]=n,n):this.options[e+\"s\"][t]}}))}(t)}(Sn),Object.defineProperty(Sn.prototype,\"$isServer\",{get:it}),Object.defineProperty(Sn.prototype,\"$ssrContext\",{get:function(){return this.$vnode&&this.$vnode.ssrContext}}),Object.defineProperty(Sn,\"FunctionalRenderContext\",{value:Re}),Sn.version=\"2.6.12\";var Ln=g(\"style,class\"),Rn=g(\"input,textarea,option,select,progress\"),In=g(\"contenteditable,draggable,spellcheck\"),Mn=g(\"events,caret,typing,plaintext-only\"),Nn=g(\"allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,translate,truespeed,typemustmatch,visible\"),Dn=\"http://www.w3.org/1999/xlink\",Fn=function(t){return\":\"===t.charAt(5)&&\"xlink\"===t.slice(0,5)},Un=function(t){return Fn(t)?t.slice(6,t.length):\"\"},Bn=function(t){return null==t||!1===t};function zn(t){for(var e=t.data,n=t,r=t;u(r.componentInstance);)(r=r.componentInstance._vnode)&&r.data&&(e=qn(r.data,e));for(;u(n=n.parent);)n&&n.data&&(e=qn(e,n.data));return function(t,e){if(u(t)||u(e))return Vn(t,Hn(e));return\"\"}(e.staticClass,e.class)}function qn(t,e){return{staticClass:Vn(t.staticClass,e.staticClass),class:u(t.class)?[t.class,e.class]:e.class}}function Vn(t,e){return t?e?t+\" \"+e:t:e||\"\"}function Hn(t){return Array.isArray(t)?function(t){for(var e,n=\"\",r=0,o=t.length;r-1?dr(t,e,n):Nn(e)?Bn(n)?t.removeAttribute(e):(n=\"allowfullscreen\"===e&&\"EMBED\"===t.tagName?\"true\":e,t.setAttribute(e,n)):In(e)?t.setAttribute(e,function(t,e){return Bn(e)||\"false\"===e?\"false\":\"contenteditable\"===t&&Mn(e)?e:\"true\"}(e,n)):Fn(e)?Bn(n)?t.removeAttributeNS(Dn,Un(e)):t.setAttributeNS(Dn,e,n):dr(t,e,n)}function dr(t,e,n){if(Bn(n))t.removeAttribute(e);else{if(Y&&!Q&&\"TEXTAREA\"===t.tagName&&\"placeholder\"===e&&\"\"!==n&&!t.__ieph){var r=function(e){e.stopImmediatePropagation(),t.removeEventListener(\"input\",r)};t.addEventListener(\"input\",r),t.__ieph=!0}t.setAttribute(e,n)}}var vr={create:pr,update:pr};function yr(t,e){var n=e.elm,r=e.data,o=t.data;if(!(a(r.staticClass)&&a(r.class)&&(a(o)||a(o.staticClass)&&a(o.class)))){var i=zn(e),c=n._transitionClasses;u(c)&&(i=Vn(i,Hn(c))),i!==n._prevClass&&(n.setAttribute(\"class\",i),n._prevClass=i)}}var mr,gr={create:yr,update:yr};function br(t,e,n){var r=mr;return function o(){var i=e.apply(null,arguments);null!==i&&wr(t,o,n,r)}}var _r=Jt&&!(et&&Number(et[1])<=53);function xr(t,e,n,r){if(_r){var o=sn,i=e;e=i._wrapper=function(t){if(t.target===t.currentTarget||t.timeStamp>=o||t.timeStamp<=0||t.target.ownerDocument!==document)return i.apply(this,arguments)}}mr.addEventListener(t,e,rt?{capture:n,passive:r}:n)}function wr(t,e,n,r){(r||mr).removeEventListener(t,e._wrapper||e,n)}function Or(t,e){if(!a(t.data.on)||!a(e.data.on)){var n=e.data.on||{},r=t.data.on||{};mr=e.elm,function(t){if(u(t.__r)){var e=Y?\"change\":\"input\";t[e]=[].concat(t.__r,t[e]||[]),delete t.__r}u(t.__c)&&(t.change=[].concat(t.__c,t.change||[]),delete t.__c)}(n),ce(n,r,xr,wr,br,e.context),mr=void 0}}var jr,Sr={create:Or,update:Or};function kr(t,e){if(!a(t.data.domProps)||!a(e.data.domProps)){var n,r,o=e.elm,i=t.data.domProps||{},c=e.data.domProps||{};for(n in u(c.__ob__)&&(c=e.data.domProps=P({},c)),i)n in c||(o[n]=\"\");for(n in c){if(r=c[n],\"textContent\"===n||\"innerHTML\"===n){if(e.children&&(e.children.length=0),r===i[n])continue;1===o.childNodes.length&&o.removeChild(o.childNodes[0])}if(\"value\"===n&&\"PROGRESS\"!==o.tagName){o._value=r;var s=a(r)?\"\":String(r);Er(o,s)&&(o.value=s)}else if(\"innerHTML\"===n&&Kn(o.tagName)&&a(o.innerHTML)){(jr=jr||document.createElement(\"div\")).innerHTML=\"\"+r+\"\";for(var f=jr.firstChild;o.firstChild;)o.removeChild(o.firstChild);for(;f.firstChild;)o.appendChild(f.firstChild)}else if(r!==i[n])try{o[n]=r}catch(t){}}}}function Er(t,e){return!t.composing&&(\"OPTION\"===t.tagName||function(t,e){var n=!0;try{n=document.activeElement!==t}catch(t){}return n&&t.value!==e}(t,e)||function(t,e){var n=t.value,r=t._vModifiers;if(u(r)){if(r.number)return m(n)!==m(e);if(r.trim)return n.trim()!==e.trim()}return n!==e}(t,e))}var Ar={create:kr,update:kr},$r=O((function(t){var e={},n=/:(.+)/;return t.split(/;(?![^(]*\\))/g).forEach((function(t){if(t){var r=t.split(n);r.length>1&&(e[r[0].trim()]=r[1].trim())}})),e}));function Cr(t){var e=Pr(t.style);return t.staticStyle?P(t.staticStyle,e):e}function Pr(t){return Array.isArray(t)?T(t):\"string\"==typeof t?$r(t):t}var Tr,Lr=/^--/,Rr=/\\s*!important$/,Ir=function(t,e,n){if(Lr.test(e))t.style.setProperty(e,n);else if(Rr.test(n))t.style.setProperty(A(e),n.replace(Rr,\"\"),\"important\");else{var r=Nr(e);if(Array.isArray(n))for(var o=0,i=n.length;o-1?e.split(Ur).forEach((function(e){return t.classList.add(e)})):t.classList.add(e);else{var n=\" \"+(t.getAttribute(\"class\")||\"\")+\" \";n.indexOf(\" \"+e+\" \")<0&&t.setAttribute(\"class\",(n+e).trim())}}function zr(t,e){if(e&&(e=e.trim()))if(t.classList)e.indexOf(\" \")>-1?e.split(Ur).forEach((function(e){return t.classList.remove(e)})):t.classList.remove(e),t.classList.length||t.removeAttribute(\"class\");else{for(var n=\" \"+(t.getAttribute(\"class\")||\"\")+\" \",r=\" \"+e+\" \";n.indexOf(r)>=0;)n=n.replace(r,\" \");(n=n.trim())?t.setAttribute(\"class\",n):t.removeAttribute(\"class\")}}function qr(t){if(t){if(\"object\"==typeof t){var e={};return!1!==t.css&&P(e,Vr(t.name||\"v\")),P(e,t),e}return\"string\"==typeof t?Vr(t):void 0}}var Vr=O((function(t){return{enterClass:t+\"-enter\",enterToClass:t+\"-enter-to\",enterActiveClass:t+\"-enter-active\",leaveClass:t+\"-leave\",leaveToClass:t+\"-leave-to\",leaveActiveClass:t+\"-leave-active\"}})),Hr=G&&!Q,Wr=\"transition\",Gr=\"transitionend\",Kr=\"animation\",Jr=\"animationend\";Hr&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&(Wr=\"WebkitTransition\",Gr=\"webkitTransitionEnd\"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(Kr=\"WebkitAnimation\",Jr=\"webkitAnimationEnd\"));var Xr=G?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:function(t){return t()};function Yr(t){Xr((function(){Xr(t)}))}function Qr(t,e){var n=t._transitionClasses||(t._transitionClasses=[]);n.indexOf(e)<0&&(n.push(e),Br(t,e))}function Zr(t,e){t._transitionClasses&&_(t._transitionClasses,e),zr(t,e)}function to(t,e,n){var r=no(t,e),o=r.type,i=r.timeout,a=r.propCount;if(!o)return n();var u=\"transition\"===o?Gr:Jr,c=0,s=function(){t.removeEventListener(u,f),n()},f=function(e){e.target===t&&++c>=a&&s()};setTimeout((function(){c0&&(n=\"transition\",f=a,l=i.length):\"animation\"===e?s>0&&(n=\"animation\",f=s,l=c.length):l=(n=(f=Math.max(a,s))>0?a>s?\"transition\":\"animation\":null)?\"transition\"===n?i.length:c.length:0,{type:n,timeout:f,propCount:l,hasTransform:\"transition\"===n&&eo.test(r[Wr+\"Property\"])}}function ro(t,e){for(;t.length1}function so(t,e){!0!==e.data.show&&io(e)}var fo=function(t){var e,n,r={},o=t.modules,i=t.nodeOps;for(e=0;ed?b(t,a(n[m+1])?null:n[m+1].elm,n,h,m,r):h>m&&x(e,p,d)}(p,y,m,n,f):u(m)?(u(t.text)&&i.setTextContent(p,\"\"),b(p,null,m,0,m.length-1,n)):u(y)?x(y,0,y.length-1):u(t.text)&&i.setTextContent(p,\"\"):t.text!==e.text&&i.setTextContent(p,e.text),u(d)&&u(h=d.hook)&&u(h=h.postpatch)&&h(t,e)}}}function S(t,e,n){if(c(n)&&u(t.parent))t.parent.data.pendingInsert=e;else for(var r=0;r-1,a.selected!==i&&(a.selected=i);else if(M(yo(a),r))return void(t.selectedIndex!==u&&(t.selectedIndex=u));o||(t.selectedIndex=-1)}}function vo(t,e){return e.every((function(e){return!M(e,t)}))}function yo(t){return\"_value\"in t?t._value:t.value}function mo(t){t.target.composing=!0}function go(t){t.target.composing&&(t.target.composing=!1,bo(t.target,\"input\"))}function bo(t,e){var n=document.createEvent(\"HTMLEvents\");n.initEvent(e,!0,!0),t.dispatchEvent(n)}function _o(t){return!t.componentInstance||t.data&&t.data.transition?t:_o(t.componentInstance._vnode)}var xo={model:lo,show:{bind:function(t,e,n){var r=e.value,o=(n=_o(n)).data&&n.data.transition,i=t.__vOriginalDisplay=\"none\"===t.style.display?\"\":t.style.display;r&&o?(n.data.show=!0,io(n,(function(){t.style.display=i}))):t.style.display=r?i:\"none\"},update:function(t,e,n){var r=e.value;!r!=!e.oldValue&&((n=_o(n)).data&&n.data.transition?(n.data.show=!0,r?io(n,(function(){t.style.display=t.__vOriginalDisplay})):ao(n,(function(){t.style.display=\"none\"}))):t.style.display=r?t.__vOriginalDisplay:\"none\")},unbind:function(t,e,n,r,o){o||(t.style.display=t.__vOriginalDisplay)}}},wo={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]};function Oo(t){var e=t&&t.componentOptions;return e&&e.Ctor.options.abstract?Oo(We(e.children)):t}function jo(t){var e={},n=t.$options;for(var r in n.propsData)e[r]=t[r];var o=n._parentListeners;for(var i in o)e[S(i)]=o[i];return e}function So(t,e){if(/\\d-keep-alive$/.test(e.tag))return t(\"keep-alive\",{props:e.componentOptions.propsData})}var ko=function(t){return t.tag||He(t)},Eo=function(t){return\"show\"===t.name},Ao={name:\"transition\",props:wo,abstract:!0,render:function(t){var e=this,n=this.$slots.default;if(n&&(n=n.filter(ko)).length){0;var r=this.mode;0;var o=n[0];if(function(t){for(;t=t.parent;)if(t.data.transition)return!0}(this.$vnode))return o;var i=Oo(o);if(!i)return o;if(this._leaving)return So(t,o);var a=\"__transition-\"+this._uid+\"-\";i.key=null==i.key?i.isComment?a+\"comment\":a+i.tag:s(i.key)?0===String(i.key).indexOf(a)?i.key:a+i.key:i.key;var u=(i.data||(i.data={})).transition=jo(this),c=this._vnode,f=Oo(c);if(i.data.directives&&i.data.directives.some(Eo)&&(i.data.show=!0),f&&f.data&&!function(t,e){return e.key===t.key&&e.tag===t.tag}(i,f)&&!He(f)&&(!f.componentInstance||!f.componentInstance._vnode.isComment)){var l=f.data.transition=P({},u);if(\"out-in\"===r)return this._leaving=!0,se(l,\"afterLeave\",(function(){e._leaving=!1,e.$forceUpdate()})),So(t,o);if(\"in-out\"===r){if(He(i))return c;var p,h=function(){p()};se(u,\"afterEnter\",h),se(u,\"enterCancelled\",h),se(l,\"delayLeave\",(function(t){p=t}))}}return o}}},$o=P({tag:String,moveClass:String},wo);function Co(t){t.elm._moveCb&&t.elm._moveCb(),t.elm._enterCb&&t.elm._enterCb()}function Po(t){t.data.newPos=t.elm.getBoundingClientRect()}function To(t){var e=t.data.pos,n=t.data.newPos,r=e.left-n.left,o=e.top-n.top;if(r||o){t.data.moved=!0;var i=t.elm.style;i.transform=i.WebkitTransform=\"translate(\"+r+\"px,\"+o+\"px)\",i.transitionDuration=\"0s\"}}delete $o.mode;var Lo={Transition:Ao,TransitionGroup:{props:$o,beforeMount:function(){var t=this,e=this._update;this._update=function(n,r){var o=Qe(t);t.__patch__(t._vnode,t.kept,!1,!0),t._vnode=t.kept,o(),e.call(t,n,r)}},render:function(t){for(var e=this.tag||this.$vnode.data.tag||\"span\",n=Object.create(null),r=this.prevChildren=this.children,o=this.$slots.default||[],i=this.children=[],a=jo(this),u=0;u-1?Xn[t]=e.constructor===window.HTMLUnknownElement||e.constructor===window.HTMLElement:Xn[t]=/HTMLUnknownElement/.test(e.toString())},P(Sn.options.directives,xo),P(Sn.options.components,Lo),Sn.prototype.__patch__=G?fo:L,Sn.prototype.$mount=function(t,e){return function(t,e,n){var r;return t.$el=e,t.$options.render||(t.$options.render=gt),en(t,\"beforeMount\"),r=function(){t._update(t._render(),n)},new dn(t,r,L,{before:function(){t._isMounted&&!t._isDestroyed&&en(t,\"beforeUpdate\")}},!0),n=!1,null==t.$vnode&&(t._isMounted=!0,en(t,\"mounted\")),t}(this,t=t&&G?function(t){if(\"string\"==typeof t){var e=document.querySelector(t);return e||document.createElement(\"div\")}return t}(t):void 0,e)},G&&setTimeout((function(){B.devtools&&at&&at.emit(\"init\",Sn)}),0);var Ro=Sn;\n/*!\n * vue-router v3.5.1\n * (c) 2021 Evan You\n * @license MIT\n */function Io(t,e){for(var n in e)t[n]=e[n];return t}var Mo=/[!'()*]/g,No=function(t){return\"%\"+t.charCodeAt(0).toString(16)},Do=/%2C/g,Fo=function(t){return encodeURIComponent(t).replace(Mo,No).replace(Do,\",\")};function Uo(t){try{return decodeURIComponent(t)}catch(t){0}return t}var Bo=function(t){return null==t||\"object\"==typeof t?t:String(t)};function zo(t){var e={};return(t=t.trim().replace(/^(\\?|#|&)/,\"\"))?(t.split(\"&\").forEach((function(t){var n=t.replace(/\\+/g,\" \").split(\"=\"),r=Uo(n.shift()),o=n.length>0?Uo(n.join(\"=\")):null;void 0===e[r]?e[r]=o:Array.isArray(e[r])?e[r].push(o):e[r]=[e[r],o]})),e):e}function qo(t){var e=t?Object.keys(t).map((function(e){var n=t[e];if(void 0===n)return\"\";if(null===n)return Fo(e);if(Array.isArray(n)){var r=[];return n.forEach((function(t){void 0!==t&&(null===t?r.push(Fo(e)):r.push(Fo(e)+\"=\"+Fo(t)))})),r.join(\"&\")}return Fo(e)+\"=\"+Fo(n)})).filter((function(t){return t.length>0})).join(\"&\"):null;return e?\"?\"+e:\"\"}var Vo=/\\/?$/;function Ho(t,e,n,r){var o=r&&r.options.stringifyQuery,i=e.query||{};try{i=Wo(i)}catch(t){}var a={name:e.name||t&&t.name,meta:t&&t.meta||{},path:e.path||\"/\",hash:e.hash||\"\",query:i,params:e.params||{},fullPath:Jo(e,o),matched:t?Ko(t):[]};return n&&(a.redirectedFrom=Jo(n,o)),Object.freeze(a)}function Wo(t){if(Array.isArray(t))return t.map(Wo);if(t&&\"object\"==typeof t){var e={};for(var n in t)e[n]=Wo(t[n]);return e}return t}var Go=Ho(null,{path:\"/\"});function Ko(t){for(var e=[];t;)e.unshift(t),t=t.parent;return e}function Jo(t,e){var n=t.path,r=t.query;void 0===r&&(r={});var o=t.hash;return void 0===o&&(o=\"\"),(n||\"/\")+(e||qo)(r)+o}function Xo(t,e,n){return e===Go?t===e:!!e&&(t.path&&e.path?t.path.replace(Vo,\"\")===e.path.replace(Vo,\"\")&&(n||t.hash===e.hash&&Yo(t.query,e.query)):!(!t.name||!e.name)&&(t.name===e.name&&(n||t.hash===e.hash&&Yo(t.query,e.query)&&Yo(t.params,e.params))))}function Yo(t,e){if(void 0===t&&(t={}),void 0===e&&(e={}),!t||!e)return t===e;var n=Object.keys(t).sort(),r=Object.keys(e).sort();return n.length===r.length&&n.every((function(n,o){var i=t[n];if(r[o]!==n)return!1;var a=e[n];return null==i||null==a?i===a:\"object\"==typeof i&&\"object\"==typeof a?Yo(i,a):String(i)===String(a)}))}function Qo(t){for(var e=0;e=0&&(e=t.slice(r),t=t.slice(0,r));var o=t.indexOf(\"?\");return o>=0&&(n=t.slice(o+1),t=t.slice(0,o)),{path:t,query:n,hash:e}}(o.path||\"\"),s=e&&e.path||\"/\",f=c.path?ei(c.path,s,n||o.append):s,l=function(t,e,n){void 0===e&&(e={});var r,o=n||zo;try{r=o(t||\"\")}catch(t){r={}}for(var i in e){var a=e[i];r[i]=Array.isArray(a)?a.map(Bo):Bo(a)}return r}(c.query,o.query,r&&r.options.parseQuery),p=o.hash||c.hash;return p&&\"#\"!==p.charAt(0)&&(p=\"#\"+p),{_normalized:!0,path:f,query:l,hash:p}}var wi,Oi=function(){},ji={name:\"RouterLink\",props:{to:{type:[String,Object],required:!0},tag:{type:String,default:\"a\"},custom:Boolean,exact:Boolean,exactPath:Boolean,append:Boolean,replace:Boolean,activeClass:String,exactActiveClass:String,ariaCurrentValue:{type:String,default:\"page\"},event:{type:[String,Array],default:\"click\"}},render:function(t){var e=this,n=this.$router,r=this.$route,o=n.resolve(this.to,r,this.append),i=o.location,a=o.route,u=o.href,c={},s=n.options.linkActiveClass,f=n.options.linkExactActiveClass,l=null==s?\"router-link-active\":s,p=null==f?\"router-link-exact-active\":f,h=null==this.activeClass?l:this.activeClass,d=null==this.exactActiveClass?p:this.exactActiveClass,v=a.redirectedFrom?Ho(null,xi(a.redirectedFrom),null,n):a;c[d]=Xo(r,v,this.exactPath),c[h]=this.exact||this.exactPath?c[d]:function(t,e){return 0===t.path.replace(Vo,\"/\").indexOf(e.path.replace(Vo,\"/\"))&&(!e.hash||t.hash===e.hash)&&function(t,e){for(var n in e)if(!(n in t))return!1;return!0}(t.query,e.query)}(r,v);var y=c[d]?this.ariaCurrentValue:null,m=function(t){Si(t)&&(e.replace?n.replace(i,Oi):n.push(i,Oi))},g={click:Si};Array.isArray(this.event)?this.event.forEach((function(t){g[t]=m})):g[this.event]=m;var b={class:c},_=!this.$scopedSlots.$hasNormal&&this.$scopedSlots.default&&this.$scopedSlots.default({href:u,route:a,navigate:m,isActive:c[h],isExactActive:c[d]});if(_){if(1===_.length)return _[0];if(_.length>1||!_.length)return 0===_.length?t():t(\"span\",{},_)}if(\"a\"===this.tag)b.on=g,b.attrs={href:u,\"aria-current\":y};else{var x=function t(e){var n;if(e)for(var r=0;r-1&&(u.params[p]=n.params[p]);return u.path=_i(f.path,u.params),c(f,u,a)}if(u.path){u.params={};for(var h=0;h=t.length?n():t[o]?e(t[o],(function(){r(o+1)})):r(o+1)};r(0)}var Yi={redirected:2,aborted:4,cancelled:8,duplicated:16};function Qi(t,e){return ta(t,e,Yi.redirected,'Redirected when going from \"'+t.fullPath+'\" to \"'+function(t){if(\"string\"==typeof t)return t;if(\"path\"in t)return t.path;var e={};return ea.forEach((function(n){n in t&&(e[n]=t[n])})),JSON.stringify(e,null,2)}(e)+'\" via a navigation guard.')}function Zi(t,e){return ta(t,e,Yi.cancelled,'Navigation cancelled from \"'+t.fullPath+'\" to \"'+e.fullPath+'\" with a new navigation.')}function ta(t,e,n,r){var o=new Error(r);return o._isRouter=!0,o.from=t,o.to=e,o.type=n,o}var ea=[\"params\",\"query\",\"hash\"];function na(t){return Object.prototype.toString.call(t).indexOf(\"Error\")>-1}function ra(t,e){return na(t)&&t._isRouter&&(null==e||t.type===e)}function oa(t){return function(e,n,r){var o=!1,i=0,a=null;ia(t,(function(t,e,n,u){if(\"function\"==typeof t&&void 0===t.cid){o=!0,i++;var c,s=ca((function(e){var o;((o=e).__esModule||ua&&\"Module\"===o[Symbol.toStringTag])&&(e=e.default),t.resolved=\"function\"==typeof e?e:wi.extend(e),n.components[u]=e,--i<=0&&r()})),f=ca((function(t){var e=\"Failed to resolve async component \"+u+\": \"+t;a||(a=na(t)?t:new Error(e),r(a))}));try{c=t(s,f)}catch(t){f(t)}if(c)if(\"function\"==typeof c.then)c.then(s,f);else{var l=c.component;l&&\"function\"==typeof l.then&&l.then(s,f)}}})),o||r()}}function ia(t,e){return aa(t.map((function(t){return Object.keys(t.components).map((function(n){return e(t.components[n],t.instances[n],t,n)}))})))}function aa(t){return Array.prototype.concat.apply([],t)}var ua=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.toStringTag;function ca(t){var e=!1;return function(){for(var n=[],r=arguments.length;r--;)n[r]=arguments[r];if(!e)return e=!0,t.apply(this,n)}}var sa=function(t,e){this.router=t,this.base=function(t){if(!t)if(ki){var e=document.querySelector(\"base\");t=(t=e&&e.getAttribute(\"href\")||\"/\").replace(/^https?:\\/\\/[^\\/]+/,\"\")}else t=\"/\";\"/\"!==t.charAt(0)&&(t=\"/\"+t);return t.replace(/\\/$/,\"\")}(e),this.current=Go,this.pending=null,this.ready=!1,this.readyCbs=[],this.readyErrorCbs=[],this.errorCbs=[],this.listeners=[]};function fa(t,e,n,r){var o=ia(t,(function(t,r,o,i){var a=function(t,e){\"function\"!=typeof t&&(t=wi.extend(t));return t.options[e]}(t,e);if(a)return Array.isArray(a)?a.map((function(t){return n(t,r,o,i)})):n(a,r,o,i)}));return aa(r?o.reverse():o)}function la(t,e){if(e)return function(){return t.apply(e,arguments)}}sa.prototype.listen=function(t){this.cb=t},sa.prototype.onReady=function(t,e){this.ready?t():(this.readyCbs.push(t),e&&this.readyErrorCbs.push(e))},sa.prototype.onError=function(t){this.errorCbs.push(t)},sa.prototype.transitionTo=function(t,e,n){var r,o=this;try{r=this.router.match(t,this.current)}catch(t){throw this.errorCbs.forEach((function(e){e(t)})),t}var i=this.current;this.confirmTransition(r,(function(){o.updateRoute(r),e&&e(r),o.ensureURL(),o.router.afterHooks.forEach((function(t){t&&t(r,i)})),o.ready||(o.ready=!0,o.readyCbs.forEach((function(t){t(r)})))}),(function(t){n&&n(t),t&&!o.ready&&(ra(t,Yi.redirected)&&i===Go||(o.ready=!0,o.readyErrorCbs.forEach((function(e){e(t)}))))}))},sa.prototype.confirmTransition=function(t,e,n){var r=this,o=this.current;this.pending=t;var i,a,u=function(t){!ra(t)&&na(t)&&(r.errorCbs.length?r.errorCbs.forEach((function(e){e(t)})):console.error(t)),n&&n(t)},c=t.matched.length-1,s=o.matched.length-1;if(Xo(t,o)&&c===s&&t.matched[c]===o.matched[s])return this.ensureURL(),u(((a=ta(i=o,t,Yi.duplicated,'Avoided redundant navigation to current location: \"'+i.fullPath+'\".')).name=\"NavigationDuplicated\",a));var f=function(t,e){var n,r=Math.max(t.length,e.length);for(n=0;n0)){var e=this.router,n=e.options.scrollBehavior,r=Gi&&n;r&&this.listeners.push(Ni());var o=function(){var n=t.current,o=ha(t.base);t.current===Go&&o===t._startLocation||t.transitionTo(o,(function(t){r&&Di(e,t,n,!0)}))};window.addEventListener(\"popstate\",o),this.listeners.push((function(){window.removeEventListener(\"popstate\",o)}))}},e.prototype.go=function(t){window.history.go(t)},e.prototype.push=function(t,e,n){var r=this,o=this.current;this.transitionTo(t,(function(t){Ki(ni(r.base+t.fullPath)),Di(r.router,t,o,!1),e&&e(t)}),n)},e.prototype.replace=function(t,e,n){var r=this,o=this.current;this.transitionTo(t,(function(t){Ji(ni(r.base+t.fullPath)),Di(r.router,t,o,!1),e&&e(t)}),n)},e.prototype.ensureURL=function(t){if(ha(this.base)!==this.current.fullPath){var e=ni(this.base+this.current.fullPath);t?Ki(e):Ji(e)}},e.prototype.getCurrentLocation=function(){return ha(this.base)},e}(sa);function ha(t){var e=window.location.pathname;return t&&0===e.toLowerCase().indexOf(t.toLowerCase())&&(e=e.slice(t.length)),(e||\"/\")+window.location.search+window.location.hash}var da=function(t){function e(e,n,r){t.call(this,e,n),r&&function(t){var e=ha(t);if(!/^\\/#/.test(e))return window.location.replace(ni(t+\"/#\"+e)),!0}(this.base)||va()}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.setupListeners=function(){var t=this;if(!(this.listeners.length>0)){var e=this.router.options.scrollBehavior,n=Gi&&e;n&&this.listeners.push(Ni());var r=function(){var e=t.current;va()&&t.transitionTo(ya(),(function(r){n&&Di(t.router,r,e,!0),Gi||ba(r.fullPath)}))},o=Gi?\"popstate\":\"hashchange\";window.addEventListener(o,r),this.listeners.push((function(){window.removeEventListener(o,r)}))}},e.prototype.push=function(t,e,n){var r=this,o=this.current;this.transitionTo(t,(function(t){ga(t.fullPath),Di(r.router,t,o,!1),e&&e(t)}),n)},e.prototype.replace=function(t,e,n){var r=this,o=this.current;this.transitionTo(t,(function(t){ba(t.fullPath),Di(r.router,t,o,!1),e&&e(t)}),n)},e.prototype.go=function(t){window.history.go(t)},e.prototype.ensureURL=function(t){var e=this.current.fullPath;ya()!==e&&(t?ga(e):ba(e))},e.prototype.getCurrentLocation=function(){return ya()},e}(sa);function va(){var t=ya();return\"/\"===t.charAt(0)||(ba(\"/\"+t),!1)}function ya(){var t=window.location.href,e=t.indexOf(\"#\");return e<0?\"\":t=t.slice(e+1)}function ma(t){var e=window.location.href,n=e.indexOf(\"#\");return(n>=0?e.slice(0,n):e)+\"#\"+t}function ga(t){Gi?Ki(ma(t)):window.location.hash=t}function ba(t){Gi?Ji(ma(t)):window.location.replace(ma(t))}var _a=function(t){function e(e,n){t.call(this,e,n),this.stack=[],this.index=-1}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.push=function(t,e,n){var r=this;this.transitionTo(t,(function(t){r.stack=r.stack.slice(0,r.index+1).concat(t),r.index++,e&&e(t)}),n)},e.prototype.replace=function(t,e,n){var r=this;this.transitionTo(t,(function(t){r.stack=r.stack.slice(0,r.index).concat(t),e&&e(t)}),n)},e.prototype.go=function(t){var e=this,n=this.index+t;if(!(n<0||n>=this.stack.length)){var r=this.stack[n];this.confirmTransition(r,(function(){var t=e.current;e.index=n,e.updateRoute(r),e.router.afterHooks.forEach((function(e){e&&e(r,t)}))}),(function(t){ra(t,Yi.duplicated)&&(e.index=n)}))}},e.prototype.getCurrentLocation=function(){var t=this.stack[this.stack.length-1];return t?t.fullPath:\"/\"},e.prototype.ensureURL=function(){},e}(sa),xa=function(t){void 0===t&&(t={}),this.app=null,this.apps=[],this.options=t,this.beforeHooks=[],this.resolveHooks=[],this.afterHooks=[],this.matcher=$i(t.routes||[],this);var e=t.mode||\"hash\";switch(this.fallback=\"history\"===e&&!Gi&&!1!==t.fallback,this.fallback&&(e=\"hash\"),ki||(e=\"abstract\"),this.mode=e,e){case\"history\":this.history=new pa(this,t.base);break;case\"hash\":this.history=new da(this,t.base,this.fallback);break;case\"abstract\":this.history=new _a(this,t.base);break;default:0}},wa={currentRoute:{configurable:!0}};function Oa(t,e){return t.push(e),function(){var n=t.indexOf(e);n>-1&&t.splice(n,1)}}xa.prototype.match=function(t,e,n){return this.matcher.match(t,e,n)},wa.currentRoute.get=function(){return this.history&&this.history.current},xa.prototype.init=function(t){var e=this;if(this.apps.push(t),t.$once(\"hook:destroyed\",(function(){var n=e.apps.indexOf(t);n>-1&&e.apps.splice(n,1),e.app===t&&(e.app=e.apps[0]||null),e.app||e.history.teardown()})),!this.app){this.app=t;var n=this.history;if(n instanceof pa||n instanceof da){var r=function(t){n.setupListeners(),function(t){var r=n.current,o=e.options.scrollBehavior;Gi&&o&&\"fullPath\"in t&&Di(e,t,r,!1)}(t)};n.transitionTo(n.getCurrentLocation(),r,r)}n.listen((function(t){e.apps.forEach((function(e){e._route=t}))}))}},xa.prototype.beforeEach=function(t){return Oa(this.beforeHooks,t)},xa.prototype.beforeResolve=function(t){return Oa(this.resolveHooks,t)},xa.prototype.afterEach=function(t){return Oa(this.afterHooks,t)},xa.prototype.onReady=function(t,e){this.history.onReady(t,e)},xa.prototype.onError=function(t){this.history.onError(t)},xa.prototype.push=function(t,e,n){var r=this;if(!e&&!n&&\"undefined\"!=typeof Promise)return new Promise((function(e,n){r.history.push(t,e,n)}));this.history.push(t,e,n)},xa.prototype.replace=function(t,e,n){var r=this;if(!e&&!n&&\"undefined\"!=typeof Promise)return new Promise((function(e,n){r.history.replace(t,e,n)}));this.history.replace(t,e,n)},xa.prototype.go=function(t){this.history.go(t)},xa.prototype.back=function(){this.go(-1)},xa.prototype.forward=function(){this.go(1)},xa.prototype.getMatchedComponents=function(t){var e=t?t.matched?t:this.resolve(t).route:this.currentRoute;return e?[].concat.apply([],e.matched.map((function(t){return Object.keys(t.components).map((function(e){return t.components[e]}))}))):[]},xa.prototype.resolve=function(t,e,n){var r=xi(t,e=e||this.history.current,n,this),o=this.match(r,e),i=o.redirectedFrom||o.fullPath;return{location:r,route:o,href:function(t,e,n){var r=\"hash\"===n?\"#\"+e:e;return t?ni(t+\"/\"+r):r}(this.history.base,i,this.mode),normalizedTo:r,resolved:o}},xa.prototype.getRoutes=function(){return this.matcher.getRoutes()},xa.prototype.addRoute=function(t,e){this.matcher.addRoute(t,e),this.history.current!==Go&&this.history.transitionTo(this.history.getCurrentLocation())},xa.prototype.addRoutes=function(t){this.matcher.addRoutes(t),this.history.current!==Go&&this.history.transitionTo(this.history.getCurrentLocation())},Object.defineProperties(xa.prototype,wa),xa.install=function t(e){if(!t.installed||wi!==e){t.installed=!0,wi=e;var n=function(t){return void 0!==t},r=function(t,e){var r=t.$options._parentVnode;n(r)&&n(r=r.data)&&n(r=r.registerRouteInstance)&&r(t,e)};e.mixin({beforeCreate:function(){n(this.$options.router)?(this._routerRoot=this,this._router=this.$options.router,this._router.init(this),e.util.defineReactive(this,\"_route\",this._router.history.current)):this._routerRoot=this.$parent&&this.$parent._routerRoot||this,r(this,this)},destroyed:function(){r(this)}}),Object.defineProperty(e.prototype,\"$router\",{get:function(){return this._routerRoot._router}}),Object.defineProperty(e.prototype,\"$route\",{get:function(){return this._routerRoot._route}}),e.component(\"RouterView\",Zo),e.component(\"RouterLink\",ji);var o=e.config.optionMergeStrategies;o.beforeRouteEnter=o.beforeRouteLeave=o.beforeRouteUpdate=o.created}},xa.version=\"3.5.1\",xa.isNavigationFailure=ra,xa.NavigationFailureType=Yi,xa.START_LOCATION=Go,ki&&window.Vue&&window.Vue.use(xa);var ja=xa;n(184),n(185),n(186),n(89),n(188),n(90),n(91),n(189);function Sa(t){t.locales&&Object.keys(t.locales).forEach((function(e){t.locales[e].path=e})),Object.freeze(t)}function ka(t){return(ka=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}var Ea=n(39),Aa=(n(191),n(60),n(42),n(158),n(159),{NotFound:function(){return n.e(6).then(n.bind(null,350))},Layout:function(){return Promise.all([n.e(0),n.e(2)]).then(n.bind(null,349))}}),$a={\"v-3fa1b7ce\":function(){return n.e(7).then(n.bind(null,353))},\"v-16f7bd48\":function(){return n.e(8).then(n.bind(null,354))},\"v-4cd21123\":function(){return n.e(9).then(n.bind(null,355))},\"v-5913b2cf\":function(){return n.e(10).then(n.bind(null,356))},\"v-f75119d2\":function(){return n.e(12).then(n.bind(null,357))},\"v-22c07ce2\":function(){return n.e(11).then(n.bind(null,358))},\"v-6b88b63a\":function(){return n.e(14).then(n.bind(null,359))},\"v-bc6841f2\":function(){return n.e(13).then(n.bind(null,360))},\"v-2491f01e\":function(){return n.e(16).then(n.bind(null,361))},\"v-6ded6695\":function(){return n.e(15).then(n.bind(null,362))},\"v-5cdd9b6a\":function(){return n.e(17).then(n.bind(null,363))},\"v-39e74116\":function(){return n.e(19).then(n.bind(null,364))},\"v-6d3d3ba1\":function(){return n.e(18).then(n.bind(null,365))},\"v-065c0076\":function(){return n.e(20).then(n.bind(null,366))},\"v-42f24c35\":function(){return n.e(21).then(n.bind(null,367))},\"v-a9bbe4d4\":function(){return n.e(22).then(n.bind(null,368))},\"v-5e6a771d\":function(){return n.e(24).then(n.bind(null,369))},\"v-18390f56\":function(){return n.e(23).then(n.bind(null,370))},\"v-2c1891b5\":function(){return n.e(26).then(n.bind(null,371))},\"v-5e0aaaf5\":function(){return n.e(27).then(n.bind(null,372))},\"v-430c31fa\":function(){return n.e(25).then(n.bind(null,373))},\"v-2173826d\":function(){return n.e(28).then(n.bind(null,374))}};function Ca(t){var e=Object.create(null);return function(n){return e[n]||(e[n]=t(n))}}var Pa=/-(\\w)/g,Ta=Ca((function(t){return t.replace(Pa,(function(t,e){return e?e.toUpperCase():\"\"}))})),La=/\\B([A-Z])/g,Ra=Ca((function(t){return t.replace(La,\"-$1\").toLowerCase()})),Ia=Ca((function(t){return t.charAt(0).toUpperCase()+t.slice(1)}));function Ma(t,e){if(e)return t(e)?t(e):e.includes(\"-\")?t(Ia(Ta(e))):t(Ia(e))||t(Ra(e))}var Na=Object.assign({},Aa,$a),Da=function(t){return Na[t]},Fa=function(t){return $a[t]},Ua=function(t){return Aa[t]},Ba=function(t){return Ro.component(t)};function za(t){return Ma(Fa,t)}function qa(t){return Ma(Ua,t)}function Va(t){return Ma(Da,t)}function Ha(t){return Ma(Ba,t)}function Wa(){for(var t=arguments.length,e=new Array(t),n=0;n\"})).join(\"\\n \"):\"\",this.$ssrContext.canonicalLink=tu(this.$canonicalUrl)}var e},mounted:function(){this.currentMetaTags=Object(Ea.a)(document.querySelectorAll(\"meta\")),this.updateMeta(),this.updateCanonicalLink()},methods:{updateMeta:function(){document.title=this.$title,document.documentElement.lang=this.$lang;var t=this.getMergedMetaTags();this.currentMetaTags=eu(t,this.currentMetaTags)},getMergedMetaTags:function(){var t=this.$page.frontmatter.meta||[];return Ya()([{name:\"description\",content:this.$description}],t,this.siteMeta,nu)},updateCanonicalLink:function(){Za(),this.$canonicalUrl&&document.head.insertAdjacentHTML(\"beforeend\",tu(this.$canonicalUrl))}},watch:{$page:function(){this.updateMeta(),this.updateCanonicalLink()}},beforeDestroy:function(){eu(null,this.currentMetaTags),Za()}};function Za(){var t=document.querySelector(\"link[rel='canonical']\");t&&t.remove()}function tu(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:\"\";return t?''):\"\"}function eu(t,e){if(e&&Object(Ea.a)(e).filter((function(t){return t.parentNode===document.head})).forEach((function(t){return document.head.removeChild(t)})),t)return t.map((function(t){var e=document.createElement(\"meta\");return Object.keys(t).forEach((function(n){e.setAttribute(n,t[n])})),document.head.appendChild(e),e}))}function nu(t){for(var e=0,n=[\"name\",\"property\",\"itemprop\"];e=u.parentElement.offsetTop+10&&(!c||r2&&void 0!==arguments[2]?arguments[2]:Ro;Sa(e),n.$vuepress.$set(\"siteData\",e);var r=t(n.$vuepress.$get(\"siteData\")),o=new r,i=Object.getOwnPropertyDescriptors(Object.getPrototypeOf(o)),a={};return Object.keys(i).reduce((function(t,e){return e.startsWith(\"$\")&&(t[e]=i[e].get),t}),a),{computed:a}}((function(t){return function(){function e(){vu(this,e)}return mu(e,[{key:\"setPage\",value:function(t){this.__page=t}},{key:\"$site\",get:function(){return t}},{key:\"$themeConfig\",get:function(){return this.$site.themeConfig}},{key:\"$frontmatter\",get:function(){return this.$page.frontmatter}},{key:\"$localeConfig\",get:function(){var t,e,n=this.$site.locales,r=void 0===n?{}:n;for(var o in r)\"/\"===o?e=r[o]:0===this.$page.path.indexOf(o)&&(t=r[o]);return t||e||{}}},{key:\"$siteTitle\",get:function(){return this.$localeConfig.title||this.$site.title||\"\"}},{key:\"$canonicalUrl\",get:function(){var t=this.$page.frontmatter.canonicalUrl;return\"string\"==typeof t&&t}},{key:\"$title\",get:function(){var t=this.$page,e=this.$page.frontmatter.metaTitle;if(\"string\"==typeof e)return e;var n=this.$siteTitle,r=t.frontmatter.home?null:t.frontmatter.title||t.title;return n?r?r+\" | \"+n:n:r||\"VuePress\"}},{key:\"$description\",get:function(){var t=function(t){if(t){var e=t.filter((function(t){return\"description\"===t.name}))[0];if(e)return e.content}}(this.$page.frontmatter.meta);return t||(this.$page.frontmatter.description||this.$localeConfig.description||this.$site.description||\"\")}},{key:\"$lang\",get:function(){return this.$page.frontmatter.lang||this.$localeConfig.lang||\"en-US\"}},{key:\"$localePath\",get:function(){return this.$localeConfig.path||\"/\"}},{key:\"$themeLocaleConfig\",get:function(){return(this.$site.themeConfig.locales||{})[this.$localePath]||{}}},{key:\"$page\",get:function(){return this.__page?this.__page:function(t,e){for(var n=0;n=\")]),t._v(\" start_time \"),v(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[t._v(\"AND\")]),t._v(\" \"),v(\"span\",{pre:!0,attrs:{class:\"token function\"}},[t._v(\"NOW\")]),v(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[t._v(\"(\")]),v(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[t._v(\")\")]),v(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[t._v(\"<\")]),t._v(\"end_time \"),v(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[t._v(\"THEN\")]),t._v(\" \"),v(\"span\",{pre:!0,attrs:{class:\"token number\"}},[t._v(\"0\")]),t._v(\"\\n \"),v(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[t._v(\"WHEN\")]),t._v(\" \"),v(\"span\",{pre:!0,attrs:{class:\"token function\"}},[t._v(\"NOW\")]),v(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[t._v(\"(\")]),v(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[t._v(\")\")]),t._v(\" \"),v(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[t._v(\">=\")]),t._v(\" end_time \"),v(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[t._v(\"THEN\")]),t._v(\" \"),v(\"span\",{pre:!0,attrs:{class:\"token number\"}},[t._v(\"1\")]),t._v(\"\\n \"),v(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[t._v(\"END\")]),v(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[t._v(\")\")]),v(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[t._v(\";\")]),t._v(\"\\n \"),v(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[t._v(\"END\")]),t._v(\"\\n\"),v(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[t._v(\"|\")]),t._v(\"\\n\\n\")])]),t._v(\" \"),v(\"div\",{staticClass:\"line-numbers-wrapper\"},[v(\"span\",{staticClass:\"line-number\"},[t._v(\"1\")]),v(\"br\"),v(\"span\",{staticClass:\"line-number\"},[t._v(\"2\")]),v(\"br\"),v(\"span\",{staticClass:\"line-number\"},[t._v(\"3\")]),v(\"br\"),v(\"span\",{staticClass:\"line-number\"},[t._v(\"4\")]),v(\"br\"),v(\"span\",{staticClass:\"line-number\"},[t._v(\"5\")]),v(\"br\"),v(\"span\",{staticClass:\"line-number\"},[t._v(\"6\")]),v(\"br\"),v(\"span\",{staticClass:\"line-number\"},[t._v(\"7\")]),v(\"br\"),v(\"span\",{staticClass:\"line-number\"},[t._v(\"8\")]),v(\"br\"),v(\"span\",{staticClass:\"line-number\"},[t._v(\"9\")]),v(\"br\"),v(\"span\",{staticClass:\"line-number\"},[t._v(\"10\")]),v(\"br\"),v(\"span\",{staticClass:\"line-number\"},[t._v(\"11\")]),v(\"br\"),v(\"span\",{staticClass:\"line-number\"},[t._v(\"12\")]),v(\"br\"),v(\"span\",{staticClass:\"line-number\"},[t._v(\"13\")]),v(\"br\"),v(\"span\",{staticClass:\"line-number\"},[t._v(\"14\")]),v(\"br\"),v(\"span\",{staticClass:\"line-number\"},[t._v(\"15\")]),v(\"br\"),v(\"span\",{staticClass:\"line-number\"},[t._v(\"16\")]),v(\"br\")])]),v(\"p\",[t._v(\"创建插入时的触发器\")]),t._v(\" \"),v(\"div\",{staticClass:\"language-sql line-numbers-mode\"},[v(\"pre\",{pre:!0,attrs:{class:\"language-sql\"}},[v(\"code\",[v(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[t._v(\"DROP\")]),t._v(\" \"),v(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[t._v(\"TRIGGER\")]),t._v(\" \"),v(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[t._v(\"IF\")]),t._v(\" \"),v(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[t._v(\"EXISTS\")]),t._v(\" contest_trigger\"),v(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[t._v(\";\")]),t._v(\"\\n\\n\"),v(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[t._v(\"DELIMITER\")]),t._v(\" $$\\n\"),v(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[t._v(\"CREATE\")]),t._v(\" \"),v(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[t._v(\"TRIGGER\")]),t._v(\" contest_trigger\\nBEFORE \"),v(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[t._v(\"INSERT\")]),t._v(\" \"),v(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[t._v(\"ON\")]),t._v(\" contest \"),v(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[t._v(\"FOR EACH ROW\")]),t._v(\"\\n\"),v(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[t._v(\"BEGIN\")]),t._v(\"\\n\"),v(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[t._v(\"SET\")]),t._v(\" new\"),v(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[t._v(\".\")]),v(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[t._v(\"status\")]),v(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[t._v(\"=\")]),v(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[t._v(\"(\")]),t._v(\"\\n\\t\"),v(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[t._v(\"CASE\")]),t._v(\" \\n\\t \"),v(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[t._v(\"WHEN\")]),t._v(\" \"),v(\"span\",{pre:!0,attrs:{class:\"token function\"}},[t._v(\"NOW\")]),v(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[t._v(\"(\")]),v(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[t._v(\")\")]),t._v(\" \"),v(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[t._v(\"<\")]),t._v(\" new\"),v(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[t._v(\".\")]),t._v(\"start_time \"),v(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[t._v(\"THEN\")]),t._v(\" \"),v(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[t._v(\"-\")]),v(\"span\",{pre:!0,attrs:{class:\"token number\"}},[t._v(\"1\")]),t._v(\" \\n\\t \"),v(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[t._v(\"WHEN\")]),t._v(\" \"),v(\"span\",{pre:!0,attrs:{class:\"token function\"}},[t._v(\"NOW\")]),v(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[t._v(\"(\")]),v(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[t._v(\")\")]),t._v(\" \"),v(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[t._v(\">=\")]),t._v(\" new\"),v(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[t._v(\".\")]),t._v(\"start_time \"),v(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[t._v(\"AND\")]),t._v(\" \"),v(\"span\",{pre:!0,attrs:{class:\"token function\"}},[t._v(\"NOW\")]),v(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[t._v(\"(\")]),v(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[t._v(\")\")]),v(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[t._v(\"<\")]),t._v(\"new\"),v(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[t._v(\".\")]),t._v(\"end_time \"),v(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[t._v(\"THEN\")]),t._v(\" \"),v(\"span\",{pre:!0,attrs:{class:\"token number\"}},[t._v(\"0\")]),t._v(\"\\n\\t \"),v(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[t._v(\"WHEN\")]),t._v(\" \"),v(\"span\",{pre:!0,attrs:{class:\"token function\"}},[t._v(\"NOW\")]),v(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[t._v(\"(\")]),v(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[t._v(\")\")]),t._v(\" \"),v(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[t._v(\">=\")]),t._v(\" new\"),v(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[t._v(\".\")]),t._v(\"end_time \"),v(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[t._v(\"THEN\")]),t._v(\" \"),v(\"span\",{pre:!0,attrs:{class:\"token number\"}},[t._v(\"1\")]),t._v(\"\\n\\t\"),v(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[t._v(\"END\")]),v(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[t._v(\")\")]),v(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[t._v(\";\")]),t._v(\"\\n\"),v(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[t._v(\"END\")]),t._v(\"$$\\n\"),v(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[t._v(\"DELIMITER\")]),t._v(\" \"),v(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[t._v(\";\")]),t._v(\"\\n\")])]),t._v(\" \"),v(\"div\",{staticClass:\"line-numbers-wrapper\"},[v(\"span\",{staticClass:\"line-number\"},[t._v(\"1\")]),v(\"br\"),v(\"span\",{staticClass:\"line-number\"},[t._v(\"2\")]),v(\"br\"),v(\"span\",{staticClass:\"line-number\"},[t._v(\"3\")]),v(\"br\"),v(\"span\",{staticClass:\"line-number\"},[t._v(\"4\")]),v(\"br\"),v(\"span\",{staticClass:\"line-number\"},[t._v(\"5\")]),v(\"br\"),v(\"span\",{staticClass:\"line-number\"},[t._v(\"6\")]),v(\"br\"),v(\"span\",{staticClass:\"line-number\"},[t._v(\"7\")]),v(\"br\"),v(\"span\",{staticClass:\"line-number\"},[t._v(\"8\")]),v(\"br\"),v(\"span\",{staticClass:\"line-number\"},[t._v(\"9\")]),v(\"br\"),v(\"span\",{staticClass:\"line-number\"},[t._v(\"10\")]),v(\"br\"),v(\"span\",{staticClass:\"line-number\"},[t._v(\"11\")]),v(\"br\"),v(\"span\",{staticClass:\"line-number\"},[t._v(\"12\")]),v(\"br\"),v(\"span\",{staticClass:\"line-number\"},[t._v(\"13\")]),v(\"br\"),v(\"span\",{staticClass:\"line-number\"},[t._v(\"14\")]),v(\"br\")])]),v(\"p\",[t._v(\"设置定时器\")]),t._v(\" \"),v(\"div\",{staticClass:\"language-sql line-numbers-mode\"},[v(\"pre\",{pre:!0,attrs:{class:\"language-sql\"}},[v(\"code\",[v(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[t._v(\"SET\")]),t._v(\" \"),v(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[t._v(\"GLOBAL\")]),t._v(\" event_scheduler \"),v(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[t._v(\"=\")]),t._v(\" \"),v(\"span\",{pre:!0,attrs:{class:\"token number\"}},[t._v(\"1\")]),v(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[t._v(\";\")]),t._v(\" \"),v(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[t._v(\"// 开启定时器\")]),t._v(\"\\n\"),v(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[t._v(\"CREATE\")]),t._v(\" EVENT \"),v(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[t._v(\"IF\")]),t._v(\" \"),v(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[t._v(\"NOT\")]),t._v(\" \"),v(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[t._v(\"EXISTS\")]),t._v(\" contest_event\\n\\n\"),v(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[t._v(\"ON\")]),t._v(\" SCHEDULE EVERY \"),v(\"span\",{pre:!0,attrs:{class:\"token number\"}},[t._v(\"1\")]),t._v(\" \"),v(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[t._v(\"SECOND\")]),t._v(\" \"),v(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[t._v(\"// 每秒执行一次\")]),t._v(\"\\n\\n\"),v(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[t._v(\"ON\")]),t._v(\" COMPLETION PRESERVE \\n\\n\"),v(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[t._v(\"DO\")]),t._v(\" \"),v(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[t._v(\"CALL\")]),t._v(\" contest_status\"),v(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[t._v(\"(\")]),v(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[t._v(\")\")]),v(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[t._v(\";\")]),t._v(\" \"),v(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[t._v(\"// 调用存储过程\")]),t._v(\"\\n\")])]),t._v(\" \"),v(\"div\",{staticClass:\"line-numbers-wrapper\"},[v(\"span\",{staticClass:\"line-number\"},[t._v(\"1\")]),v(\"br\"),v(\"span\",{staticClass:\"line-number\"},[t._v(\"2\")]),v(\"br\"),v(\"span\",{staticClass:\"line-number\"},[t._v(\"3\")]),v(\"br\"),v(\"span\",{staticClass:\"line-number\"},[t._v(\"4\")]),v(\"br\"),v(\"span\",{staticClass:\"line-number\"},[t._v(\"5\")]),v(\"br\"),v(\"span\",{staticClass:\"line-number\"},[t._v(\"6\")]),v(\"br\"),v(\"span\",{staticClass:\"line-number\"},[t._v(\"7\")]),v(\"br\"),v(\"span\",{staticClass:\"line-number\"},[t._v(\"8\")]),v(\"br\")])]),v(\"p\",[t._v(\"开启或关闭定时器\")]),t._v(\" \"),v(\"div\",{staticClass:\"language-sql line-numbers-mode\"},[v(\"pre\",{pre:!0,attrs:{class:\"language-sql\"}},[v(\"code\",[v(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[t._v(\"ALTER\")]),t._v(\" EVENT contest_event \"),v(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[t._v(\"ON\")]),t._v(\" COMPLETION PRESERVE \"),v(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[t._v(\"ENABLE\")]),v(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[t._v(\";\")]),t._v(\" \"),v(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[t._v(\"-- 开启事件\")]),t._v(\"\\n\"),v(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[t._v(\"ALTER\")]),t._v(\" EVENT contest_event \"),v(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[t._v(\"ON\")]),t._v(\" COMPLETION PRESERVE \"),v(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[t._v(\"DISABLE\")]),v(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[t._v(\";\")]),t._v(\" \"),v(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[t._v(\"-- 关闭事件\")]),t._v(\"\\n\")])]),t._v(\" \"),v(\"div\",{staticClass:\"line-numbers-wrapper\"},[v(\"span\",{staticClass:\"line-number\"},[t._v(\"1\")]),v(\"br\"),v(\"span\",{staticClass:\"line-number\"},[t._v(\"2\")]),v(\"br\")])]),v(\"p\",[t._v(\"contest表\")]),t._v(\" \"),v(\"table\",[v(\"thead\",[v(\"tr\",[v(\"th\",[t._v(\"列名\")]),t._v(\" \"),v(\"th\",[t._v(\"实体属性类型\")]),t._v(\" \"),v(\"th\",[t._v(\"键\")]),t._v(\" \"),v(\"th\",[t._v(\"备注\")])])]),t._v(\" \"),v(\"tbody\",[v(\"tr\",[v(\"td\",[t._v(\"id\")]),t._v(\" \"),v(\"td\",[t._v(\"long\")]),t._v(\" \"),v(\"td\",[t._v(\"主键\")]),t._v(\" \"),v(\"td\",[t._v(\"auto_increment 1000起步\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"uid\")]),t._v(\" \"),v(\"td\",[t._v(\"String\")]),t._v(\" \"),v(\"td\",[t._v(\"外键\")]),t._v(\" \"),v(\"td\",[t._v(\"创建者id\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"author\")]),t._v(\" \"),v(\"td\",[t._v(\"String\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"比赛创建者的用户名\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"title\")]),t._v(\" \"),v(\"td\",[t._v(\"String\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"比赛标题\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"type\")]),t._v(\" \"),v(\"td\",[t._v(\"int\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"Acm赛制或者Rating\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"source\")]),t._v(\" \"),v(\"td\",[t._v(\"int\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"比赛来源,原创为0,克隆赛为比赛id\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"auth\")]),t._v(\" \"),v(\"td\",[t._v(\"int\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"0为公开赛,1为私有赛(有密码),3为保护赛(有密码)。\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"pwd\")]),t._v(\" \"),v(\"td\",[t._v(\"string\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"比赛密码\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"start_time\")]),t._v(\" \"),v(\"td\",[t._v(\"datetime\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"开始时间\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"end_time\")]),t._v(\" \"),v(\"td\",[t._v(\"datetime\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"结束时间\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"duration\")]),t._v(\" \"),v(\"td\",[t._v(\"long\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"比赛时长(s)\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"description\")]),t._v(\" \"),v(\"td\",[t._v(\"Srting\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"比赛说明\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"seal_rank\")]),t._v(\" \"),v(\"td\",[t._v(\"boolean\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"是否开启封榜\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"seal_rank_time\")]),t._v(\" \"),v(\"td\",[t._v(\"datetime\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"封榜起始时间,一直到比赛结束,不刷新榜单。\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"status\")]),t._v(\" \"),v(\"td\",[t._v(\"int\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"-1为未开始,0为进行中,1为已结束\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"visible\")]),t._v(\" \"),v(\"td\",[t._v(\"boolean\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"是否可见\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"gmt_create\")]),t._v(\" \"),v(\"td\",[t._v(\"datetime\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"创建时间\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"gmt_modified\")]),t._v(\" \"),v(\"td\",[t._v(\"datetime\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"修改时间\")])])])]),t._v(\" \"),v(\"p\",[t._v(\"contest_problem表\")]),t._v(\" \"),v(\"table\",[v(\"thead\",[v(\"tr\",[v(\"th\",[t._v(\"列名\")]),t._v(\" \"),v(\"th\",[t._v(\"实体属性类型\")]),t._v(\" \"),v(\"th\",[t._v(\"键\")]),t._v(\" \"),v(\"th\",[t._v(\"备注\")])])]),t._v(\" \"),v(\"tbody\",[v(\"tr\",[v(\"td\",[t._v(\"id\")]),t._v(\" \"),v(\"td\",[t._v(\"long\")]),t._v(\" \"),v(\"td\",[t._v(\"主键\")]),t._v(\" \"),v(\"td\",[t._v(\"auto_increment\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"display_id\")]),t._v(\" \"),v(\"td\",[t._v(\"String\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"展示的id\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"cid\")]),t._v(\" \"),v(\"td\",[t._v(\"int\")]),t._v(\" \"),v(\"td\",[t._v(\"外键\")]),t._v(\" \"),v(\"td\",[t._v(\"比赛id\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"pid\")]),t._v(\" \"),v(\"td\",[t._v(\"int\")]),t._v(\" \"),v(\"td\",[t._v(\"外键\")]),t._v(\" \"),v(\"td\",[t._v(\"题目id\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"cp_name\")]),t._v(\" \"),v(\"td\",[t._v(\"String\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"用于当场比赛的题目标题\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"gmt_create\")]),t._v(\" \"),v(\"td\",[t._v(\"datetime\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"创建时间\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"gmt_modified\")]),t._v(\" \"),v(\"td\",[t._v(\"datetime\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"修改时间\")])])])]),t._v(\" \"),v(\"p\",[t._v(\"contest_register表 比赛报名表\")]),t._v(\" \"),v(\"table\",[v(\"thead\",[v(\"tr\",[v(\"th\",[t._v(\"列名\")]),t._v(\" \"),v(\"th\",[t._v(\"实体属性类型\")]),t._v(\" \"),v(\"th\",[t._v(\"键\")]),t._v(\" \"),v(\"th\",[t._v(\"备注\")])])]),t._v(\" \"),v(\"tbody\",[v(\"tr\",[v(\"td\",[t._v(\"id\")]),t._v(\" \"),v(\"td\",[t._v(\"long\")]),t._v(\" \"),v(\"td\",[t._v(\"主键\")]),t._v(\" \"),v(\"td\",[t._v(\"auto_increment\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"cid\")]),t._v(\" \"),v(\"td\",[t._v(\"int\")]),t._v(\" \"),v(\"td\",[t._v(\"外键\")]),t._v(\" \"),v(\"td\",[t._v(\"比赛id\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"uid\")]),t._v(\" \"),v(\"td\",[t._v(\"int\")]),t._v(\" \"),v(\"td\",[t._v(\"外键\")]),t._v(\" \"),v(\"td\",[t._v(\"用户id\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"Status\")]),t._v(\" \"),v(\"td\",[t._v(\"int\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"默认为0表示正常,1为失效。\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"gmt_create\")]),t._v(\" \"),v(\"td\",[t._v(\"datetime\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"创建时间\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"gmt_modified\")]),t._v(\" \"),v(\"td\",[t._v(\"datetime\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"修改时间\")])])])]),t._v(\" \"),v(\"p\",[t._v(\"contest_score表 rating赛制中获得的分数更改记录表\")]),t._v(\" \"),v(\"table\",[v(\"thead\",[v(\"tr\",[v(\"th\",[t._v(\"列名\")]),t._v(\" \"),v(\"th\",[t._v(\"实体属性类型\")]),t._v(\" \"),v(\"th\",[t._v(\"键\")]),t._v(\" \"),v(\"th\",[t._v(\"备注\")])])]),t._v(\" \"),v(\"tbody\",[v(\"tr\",[v(\"td\",[t._v(\"id\")]),t._v(\" \"),v(\"td\",[t._v(\"long\")]),t._v(\" \"),v(\"td\",[t._v(\"主键\")]),t._v(\" \"),v(\"td\",[t._v(\"auto_increment\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"cid\")]),t._v(\" \"),v(\"td\",[t._v(\"int\")]),t._v(\" \"),v(\"td\",[t._v(\"外键\")]),t._v(\" \"),v(\"td\",[t._v(\"比赛id\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"last\")]),t._v(\" \"),v(\"td\",[t._v(\"int\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"比赛前的score得分\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"change\")]),t._v(\" \"),v(\"td\",[t._v(\"int\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"Score比分变化\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"now\")]),t._v(\" \"),v(\"td\",[t._v(\"int\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"现在的score\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"gmt_create\")]),t._v(\" \"),v(\"td\",[t._v(\"datetime\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"创建时间\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"gmt_modified\")]),t._v(\" \"),v(\"td\",[t._v(\"datetime\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"修改时间\")])])])]),t._v(\" \"),v(\"p\",[t._v(\"contest_record表 比赛记录表\")]),t._v(\" \"),v(\"table\",[v(\"thead\",[v(\"tr\",[v(\"th\",[t._v(\"列名\")]),t._v(\" \"),v(\"th\",[t._v(\"实体属性类型\")]),t._v(\" \"),v(\"th\",[t._v(\"键\")]),t._v(\" \"),v(\"th\",[t._v(\"备注\")])])]),t._v(\" \"),v(\"tbody\",[v(\"tr\",[v(\"td\",[t._v(\"id\")]),t._v(\" \"),v(\"td\",[t._v(\"long\")]),t._v(\" \"),v(\"td\",[t._v(\"主键\")]),t._v(\" \"),v(\"td\",[t._v(\"auto_increment\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"cid\")]),t._v(\" \"),v(\"td\",[t._v(\"int\")]),t._v(\" \"),v(\"td\",[t._v(\"外键\")]),t._v(\" \"),v(\"td\",[t._v(\"比赛id\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"uid\")]),t._v(\" \"),v(\"td\",[t._v(\"String\")]),t._v(\" \"),v(\"td\",[t._v(\"外键\")]),t._v(\" \"),v(\"td\",[t._v(\"用户id\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"pid\")]),t._v(\" \"),v(\"td\",[t._v(\"int\")]),t._v(\" \"),v(\"td\",[t._v(\"外键\")]),t._v(\" \"),v(\"td\",[t._v(\"题目id\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"cpid\")]),t._v(\" \"),v(\"td\",[t._v(\"int\")]),t._v(\" \"),v(\"td\",[t._v(\"外键\")]),t._v(\" \"),v(\"td\",[t._v(\"比赛中的题目id\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"submit_id\")]),t._v(\" \"),v(\"td\",[t._v(\"int\")]),t._v(\" \"),v(\"td\",[t._v(\"外键\")]),t._v(\" \"),v(\"td\",[t._v(\"提交id,用于可重判\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"display_id\")]),t._v(\" \"),v(\"td\",[t._v(\"String\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"比赛展示的id\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"username\")]),t._v(\" \"),v(\"td\",[t._v(\"String\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"用户名\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"realname\")]),t._v(\" \"),v(\"td\",[t._v(\"String\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"真实姓名\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"status\")]),t._v(\" \"),v(\"td\",[t._v(\"String\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"提交结果,0表示未AC通过不罚时,1表示AC通过,-1为未AC通过算罚时\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"time\")]),t._v(\" \"),v(\"td\",[t._v(\"int\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"提交时间,为提交时间减去比赛时间,时间戳\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"score\")]),t._v(\" \"),v(\"td\",[t._v(\"int\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"OI比赛得分\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"first_blood\")]),t._v(\" \"),v(\"td\",[t._v(\"Boolean\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"是否为一血AC\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"checked\")]),t._v(\" \"),v(\"td\",[t._v(\"Boolean\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"AC是否已校验\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"gmt_create\")]),t._v(\" \"),v(\"td\",[t._v(\"datetime\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"创建时间\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"gmt_modified\")]),t._v(\" \"),v(\"td\",[t._v(\"datetime\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"修改时间\")])])])]),t._v(\" \"),v(\"p\",[t._v(\"announcement表\")]),t._v(\" \"),v(\"table\",[v(\"thead\",[v(\"tr\",[v(\"th\",[t._v(\"列名\")]),t._v(\" \"),v(\"th\",[t._v(\"实体属性类型\")]),t._v(\" \"),v(\"th\",[t._v(\"键\")]),t._v(\" \"),v(\"th\",[t._v(\"备注\")])])]),t._v(\" \"),v(\"tbody\",[v(\"tr\",[v(\"td\",[t._v(\"id\")]),t._v(\" \"),v(\"td\",[t._v(\"long\")]),t._v(\" \"),v(\"td\",[t._v(\"主键\")]),t._v(\" \"),v(\"td\",[t._v(\"auto_increment\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"title\")]),t._v(\" \"),v(\"td\",[t._v(\"String\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"公告标题\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"content\")]),t._v(\" \"),v(\"td\",[t._v(\"String\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"公告内容\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"uid\")]),t._v(\" \"),v(\"td\",[t._v(\"String\")]),t._v(\" \"),v(\"td\",[t._v(\"外键\")]),t._v(\" \"),v(\"td\",[t._v(\"发布者id(必须为比赛创建者或者超级管理员才能)\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"gmt_create\")]),t._v(\" \"),v(\"td\",[t._v(\"datetime\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"创建时间\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"gmt_modified\")]),t._v(\" \"),v(\"td\",[t._v(\"datetime\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"修改时间\")])])])]),t._v(\" \"),v(\"p\",[t._v(\"contest_announcement表 比赛时的通知表\")]),t._v(\" \"),v(\"table\",[v(\"thead\",[v(\"tr\",[v(\"th\",[t._v(\"列名\")]),t._v(\" \"),v(\"th\",[t._v(\"实体属性类型\")]),t._v(\" \"),v(\"th\",[t._v(\"键\")]),t._v(\" \"),v(\"th\",[t._v(\"备注\")])])]),t._v(\" \"),v(\"tbody\",[v(\"tr\",[v(\"td\",[t._v(\"id\")]),t._v(\" \"),v(\"td\",[t._v(\"long\")]),t._v(\" \"),v(\"td\",[t._v(\"主键\")]),t._v(\" \"),v(\"td\",[t._v(\"auto_increment\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"aid\")]),t._v(\" \"),v(\"td\",[t._v(\"long\")]),t._v(\" \"),v(\"td\",[t._v(\"外键\")]),t._v(\" \"),v(\"td\",[t._v(\"公告id\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"cid\")]),t._v(\" \"),v(\"td\",[t._v(\"int\")]),t._v(\" \"),v(\"td\",[t._v(\"外键\")]),t._v(\" \"),v(\"td\",[t._v(\"比赛id\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"gmt_create\")]),t._v(\" \"),v(\"td\",[t._v(\"datetime\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"创建时间\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"gmt_modified\")]),t._v(\" \"),v(\"td\",[t._v(\"datetime\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"修改时间\")])])])]),t._v(\" \"),v(\"p\",[t._v(\"contest_explanation表 赛后题解表**(未使用)**\")]),t._v(\" \"),v(\"table\",[v(\"thead\",[v(\"tr\",[v(\"th\",[t._v(\"列名\")]),t._v(\" \"),v(\"th\",[t._v(\"实体属性类型\")]),t._v(\" \"),v(\"th\",[t._v(\"键\")]),t._v(\" \"),v(\"th\",[t._v(\"备注\")])])]),t._v(\" \"),v(\"tbody\",[v(\"tr\",[v(\"td\",[t._v(\"id\")]),t._v(\" \"),v(\"td\",[t._v(\"long\")]),t._v(\" \"),v(\"td\",[t._v(\"主键\")]),t._v(\" \"),v(\"td\",[t._v(\"auto_increment\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"cid\")]),t._v(\" \"),v(\"td\",[t._v(\"int\")]),t._v(\" \"),v(\"td\",[t._v(\"外键\")]),t._v(\" \"),v(\"td\",[t._v(\"比赛id\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"content\")]),t._v(\" \"),v(\"td\",[t._v(\"String\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"内容(支持markdown)\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"uid\")]),t._v(\" \"),v(\"td\",[t._v(\"int\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"发布者(必须为比赛创建者或者超级管理员才能)\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"gmt_create\")]),t._v(\" \"),v(\"td\",[t._v(\"datetime\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"创建时间\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"gmt_modified\")]),t._v(\" \"),v(\"td\",[t._v(\"datetime\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"修改时间\")])])])]),t._v(\" \"),v(\"h2\",{attrs:{id:\"讨论模块\"}},[v(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#讨论模块\"}},[t._v(\"#\")]),t._v(\" 讨论模块\")]),t._v(\" \"),v(\"blockquote\",[v(\"p\",[t._v(\"包括题目讨论区,公共讨论区,比赛评论\")])]),t._v(\" \"),v(\"p\",[t._v(\"category表\")]),t._v(\" \"),v(\"table\",[v(\"thead\",[v(\"tr\",[v(\"th\",[t._v(\"列名\")]),t._v(\" \"),v(\"th\",[t._v(\"实体属性类型\")]),t._v(\" \"),v(\"th\",[t._v(\"键\")]),t._v(\" \"),v(\"th\",[t._v(\"备注\")])])]),t._v(\" \"),v(\"tbody\",[v(\"tr\",[v(\"td\",[t._v(\"id\")]),t._v(\" \"),v(\"td\",[t._v(\"long\")]),t._v(\" \"),v(\"td\",[t._v(\"主键\")]),t._v(\" \"),v(\"td\",[t._v(\"auto_increment\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"name\")]),t._v(\" \"),v(\"td\",[t._v(\"String\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"分类名字\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"gmt_create\")]),t._v(\" \"),v(\"td\",[t._v(\"datetime\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"创建时间\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"gmt_modified\")]),t._v(\" \"),v(\"td\",[t._v(\"datetime\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"修改时间\")])])])]),t._v(\" \"),v(\"p\",[t._v(\"discussion表\")]),t._v(\" \"),v(\"table\",[v(\"thead\",[v(\"tr\",[v(\"th\",[t._v(\"列名\")]),t._v(\" \"),v(\"th\",[t._v(\"实体属性类型\")]),t._v(\" \"),v(\"th\",[t._v(\"键\")]),t._v(\" \"),v(\"th\",[t._v(\"备注\")])])]),t._v(\" \"),v(\"tbody\",[v(\"tr\",[v(\"td\",[t._v(\"id\")]),t._v(\" \"),v(\"td\",[t._v(\"int\")]),t._v(\" \"),v(\"td\",[t._v(\"主键\")]),t._v(\" \"),v(\"td\",[t._v(\"auto_increment\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"category_id\")]),t._v(\" \"),v(\"td\",[t._v(\"int\")]),t._v(\" \"),v(\"td\",[t._v(\"外键\")]),t._v(\" \"),v(\"td\",[t._v(\"分类id\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"title\")]),t._v(\" \"),v(\"td\",[t._v(\"String\")]),t._v(\" \"),v(\"td\",[t._v(\"外键\")]),t._v(\" \"),v(\"td\",[t._v(\"讨论标题\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"content\")]),t._v(\" \"),v(\"td\",[t._v(\"String\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"讨论详情\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"description\")]),t._v(\" \"),v(\"td\",[t._v(\"String\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"讨论描述\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"pid\")]),t._v(\" \"),v(\"td\",[t._v(\"String\")]),t._v(\" \"),v(\"td\",[t._v(\"外键\")]),t._v(\" \"),v(\"td\",[t._v(\"引用的题目id,默认未null则不引用\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"uid\")]),t._v(\" \"),v(\"td\",[t._v(\"iString\")]),t._v(\" \"),v(\"td\",[t._v(\"外键\")]),t._v(\" \"),v(\"td\",[t._v(\"发布讨论的用户id\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"author\")]),t._v(\" \"),v(\"td\",[t._v(\"String\")]),t._v(\" \"),v(\"td\",[t._v(\"外键\")]),t._v(\" \"),v(\"td\",[t._v(\"发布讨论的用户名\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"avatar\")]),t._v(\" \"),v(\"td\",[t._v(\"String\")]),t._v(\" \"),v(\"td\",[t._v(\"外键\")]),t._v(\" \"),v(\"td\",[t._v(\"发布讨论的用户头像地址\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"role\")]),t._v(\" \"),v(\"td\",[t._v(\"String\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"发布讨论的用户角色\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"view_num\")]),t._v(\" \"),v(\"td\",[t._v(\"int\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"浏览数量\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"like_num\")]),t._v(\" \"),v(\"td\",[t._v(\"int\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"点赞数量\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"top_priority\")]),t._v(\" \"),v(\"td\",[t._v(\"boolean\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"优先级,是否置顶\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"status\")]),t._v(\" \"),v(\"td\",[t._v(\"int\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"是否封禁或逻辑删除该讨论\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"gmt_create\")]),t._v(\" \"),v(\"td\",[t._v(\"datetime\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"创建时间\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"gmt_modified\")]),t._v(\" \"),v(\"td\",[t._v(\"datetime\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"修改时间\")])])])]),t._v(\" \"),v(\"p\",[t._v(\"discussion_like表\")]),t._v(\" \"),v(\"table\",[v(\"thead\",[v(\"tr\",[v(\"th\",[t._v(\"列名\")]),t._v(\" \"),v(\"th\",[t._v(\"实体属性类型\")]),t._v(\" \"),v(\"th\",[t._v(\"键\")]),t._v(\" \"),v(\"th\",[t._v(\"备注\")])])]),t._v(\" \"),v(\"tbody\",[v(\"tr\",[v(\"td\",[t._v(\"id\")]),t._v(\" \"),v(\"td\",[t._v(\"long\")]),t._v(\" \"),v(\"td\",[t._v(\"主键\")]),t._v(\" \"),v(\"td\",[t._v(\"auto_increment\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"did\")]),t._v(\" \"),v(\"td\",[t._v(\"int\")]),t._v(\" \"),v(\"td\",[t._v(\"外键\")]),t._v(\" \"),v(\"td\",[t._v(\"讨论id\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"uid\")]),t._v(\" \"),v(\"td\",[t._v(\"String\")]),t._v(\" \"),v(\"td\",[t._v(\"外键\")]),t._v(\" \"),v(\"td\",[t._v(\"用户id\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"gmt_create\")]),t._v(\" \"),v(\"td\",[t._v(\"datetime\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"创建时间\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"gmt_modified\")]),t._v(\" \"),v(\"td\",[t._v(\"datetime\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"修改时间\")])])])]),t._v(\" \"),v(\"p\",[t._v(\"discussion_report表\")]),t._v(\" \"),v(\"table\",[v(\"thead\",[v(\"tr\",[v(\"th\",[t._v(\"列名\")]),t._v(\" \"),v(\"th\",[t._v(\"实体属性类型\")]),t._v(\" \"),v(\"th\",[t._v(\"键\")]),t._v(\" \"),v(\"th\",[t._v(\"备注\")])])]),t._v(\" \"),v(\"tbody\",[v(\"tr\",[v(\"td\",[t._v(\"id\")]),t._v(\" \"),v(\"td\",[t._v(\"long\")]),t._v(\" \"),v(\"td\",[t._v(\"主键\")]),t._v(\" \"),v(\"td\",[t._v(\"auto_increment\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"did\")]),t._v(\" \"),v(\"td\",[t._v(\"int\")]),t._v(\" \"),v(\"td\",[t._v(\"外键\")]),t._v(\" \"),v(\"td\",[t._v(\"讨论id\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"reporter\")]),t._v(\" \"),v(\"td\",[t._v(\"String\")]),t._v(\" \"),v(\"td\",[t._v(\"外键\")]),t._v(\" \"),v(\"td\",[t._v(\"举报者的用户名\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"content\")]),t._v(\" \"),v(\"td\",[t._v(\"String\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"举报内容\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"status\")]),t._v(\" \"),v(\"td\",[t._v(\"boolean\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"是否已读\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"gmt_create\")]),t._v(\" \"),v(\"td\",[t._v(\"datetime\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"创建时间\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"gmt_modified\")]),t._v(\" \"),v(\"td\",[t._v(\"datetime\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"修改时间\")])])])]),t._v(\" \"),v(\"p\",[t._v(\"comment表\")]),t._v(\" \"),v(\"table\",[v(\"thead\",[v(\"tr\",[v(\"th\",[t._v(\"列名\")]),t._v(\" \"),v(\"th\",[t._v(\"实体属性类型\")]),t._v(\" \"),v(\"th\",[t._v(\"键\")]),t._v(\" \"),v(\"th\",[t._v(\"备注\")])])]),t._v(\" \"),v(\"tbody\",[v(\"tr\",[v(\"td\",[t._v(\"id\")]),t._v(\" \"),v(\"td\",[t._v(\"int\")]),t._v(\" \"),v(\"td\",[t._v(\"主键\")]),t._v(\" \"),v(\"td\",[t._v(\"auto_increment\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"cid\")]),t._v(\" \"),v(\"td\",[t._v(\"long\")]),t._v(\" \"),v(\"td\",[t._v(\"外键\")]),t._v(\" \"),v(\"td\",[t._v(\"比赛id,NULL表示无引用比赛\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"did\")]),t._v(\" \"),v(\"td\",[t._v(\"int\")]),t._v(\" \"),v(\"td\",[t._v(\"外键\")]),t._v(\" \"),v(\"td\",[t._v(\"讨论id,NULL表示无引用讨论\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"content\")]),t._v(\" \"),v(\"td\",[t._v(\"String\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"评论内容\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"from_uid\")]),t._v(\" \"),v(\"td\",[t._v(\"String\")]),t._v(\" \"),v(\"td\",[t._v(\"外键\")]),t._v(\" \"),v(\"td\",[t._v(\"评论者id\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"from_name\")]),t._v(\" \"),v(\"td\",[t._v(\"String\")]),t._v(\" \"),v(\"td\",[t._v(\"外键\")]),t._v(\" \"),v(\"td\",[t._v(\"评论者用户名\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"from_avatar\")]),t._v(\" \"),v(\"td\",[t._v(\"String\")]),t._v(\" \"),v(\"td\",[t._v(\"外键\")]),t._v(\" \"),v(\"td\",[t._v(\"评论者头像地址\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"from_role\")]),t._v(\" \"),v(\"td\",[t._v(\"String\")]),t._v(\" \"),v(\"td\",[t._v(\"外键\")]),t._v(\" \"),v(\"td\",[t._v(\"评论者角色\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"like_num\")]),t._v(\" \"),v(\"td\",[t._v(\"int\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"点赞数量\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"status\")]),t._v(\" \"),v(\"td\",[t._v(\"int\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"是否封禁或逻辑删除该评论,0正常,1封禁\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"gmt_create\")]),t._v(\" \"),v(\"td\",[t._v(\"datetime\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"创建时间\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"gmt_modified\")]),t._v(\" \"),v(\"td\",[t._v(\"datetime\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"修改时间\")])])])]),t._v(\" \"),v(\"p\",[t._v(\"comment_like表\")]),t._v(\" \"),v(\"table\",[v(\"thead\",[v(\"tr\",[v(\"th\",[t._v(\"列名\")]),t._v(\" \"),v(\"th\",[t._v(\"实体属性类型\")]),t._v(\" \"),v(\"th\",[t._v(\"键\")]),t._v(\" \"),v(\"th\",[t._v(\"备注\")])])]),t._v(\" \"),v(\"tbody\",[v(\"tr\",[v(\"td\",[t._v(\"id\")]),t._v(\" \"),v(\"td\",[t._v(\"lint\")]),t._v(\" \"),v(\"td\",[t._v(\"主键\")]),t._v(\" \"),v(\"td\",[t._v(\"auto_increment\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"cid\")]),t._v(\" \"),v(\"td\",[t._v(\"int\")]),t._v(\" \"),v(\"td\",[t._v(\"外键\")]),t._v(\" \"),v(\"td\",[t._v(\"评论id\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"uid\")]),t._v(\" \"),v(\"td\",[t._v(\"String\")]),t._v(\" \"),v(\"td\",[t._v(\"外键\")]),t._v(\" \"),v(\"td\",[t._v(\"用户id\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"gmt_create\")]),t._v(\" \"),v(\"td\",[t._v(\"datetime\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"创建时间\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"gmt_modified\")]),t._v(\" \"),v(\"td\",[t._v(\"datetime\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"修改时间\")])])])]),t._v(\" \"),v(\"p\",[t._v(\"reply表\")]),t._v(\" \"),v(\"table\",[v(\"thead\",[v(\"tr\",[v(\"th\",[t._v(\"列名\")]),t._v(\" \"),v(\"th\",[t._v(\"实体属性类型\")]),t._v(\" \"),v(\"th\",[t._v(\"键\")]),t._v(\" \"),v(\"th\",[t._v(\"备注\")])])]),t._v(\" \"),v(\"tbody\",[v(\"tr\",[v(\"td\",[t._v(\"id\")]),t._v(\" \"),v(\"td\",[t._v(\"int\")]),t._v(\" \"),v(\"td\",[t._v(\"主键\")]),t._v(\" \"),v(\"td\",[t._v(\"auto_increment\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"comment_id\")]),t._v(\" \"),v(\"td\",[t._v(\"ind\")]),t._v(\" \"),v(\"td\",[t._v(\"外键\")]),t._v(\" \"),v(\"td\",[t._v(\"评论id\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"content\")]),t._v(\" \"),v(\"td\",[t._v(\"String\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"回复的内容\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"from_uid\")]),t._v(\" \"),v(\"td\",[t._v(\"String\")]),t._v(\" \"),v(\"td\",[t._v(\"外键\")]),t._v(\" \"),v(\"td\",[t._v(\"回复评论者id\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"from_name\")]),t._v(\" \"),v(\"td\",[t._v(\"String\")]),t._v(\" \"),v(\"td\",[t._v(\"外键\")]),t._v(\" \"),v(\"td\",[t._v(\"回复评论者用户名\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"from_avatar\")]),t._v(\" \"),v(\"td\",[t._v(\"String\")]),t._v(\" \"),v(\"td\",[t._v(\"外键\")]),t._v(\" \"),v(\"td\",[t._v(\"回复评论者头像地址\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"from_role\")]),t._v(\" \"),v(\"td\",[t._v(\"String\")]),t._v(\" \"),v(\"td\",[t._v(\"外键\")]),t._v(\" \"),v(\"td\",[t._v(\"回复评论者角色\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"to_uid\")]),t._v(\" \"),v(\"td\",[t._v(\"String\")]),t._v(\" \"),v(\"td\",[t._v(\"外键\")]),t._v(\" \"),v(\"td\",[t._v(\"被回复的用户id\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"to_name\")]),t._v(\" \"),v(\"td\",[t._v(\"String\")]),t._v(\" \"),v(\"td\",[t._v(\"外键\")]),t._v(\" \"),v(\"td\",[t._v(\"被回复的用户名\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"to_avatar\")]),t._v(\" \"),v(\"td\",[t._v(\"String\")]),t._v(\" \"),v(\"td\",[t._v(\"外键\")]),t._v(\" \"),v(\"td\",[t._v(\"被回复的用户头像地址\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"status\")]),t._v(\" \"),v(\"td\",[t._v(\"int\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"是否封禁或逻辑删除该回复,0正常,1封禁\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"gmt_create\")]),t._v(\" \"),v(\"td\",[t._v(\"datetime\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"创建时间\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"gmt_modified\")]),t._v(\" \"),v(\"td\",[t._v(\"datetime\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"修改时间\")])])])]),t._v(\" \"),v(\"h2\",{attrs:{id:\"文件模块\"}},[v(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#文件模块\"}},[t._v(\"#\")]),t._v(\" 文件模块\")]),t._v(\" \"),v(\"p\",[t._v(\"file表\")]),t._v(\" \"),v(\"table\",[v(\"thead\",[v(\"tr\",[v(\"th\",[t._v(\"列名\")]),t._v(\" \"),v(\"th\",[t._v(\"实体属性类型\")]),t._v(\" \"),v(\"th\",[t._v(\"键\")]),t._v(\" \"),v(\"th\",[t._v(\"备注\")])])]),t._v(\" \"),v(\"tbody\",[v(\"tr\",[v(\"td\",[t._v(\"id\")]),t._v(\" \"),v(\"td\",[t._v(\"long\")]),t._v(\" \"),v(\"td\",[t._v(\"主键\")]),t._v(\" \"),v(\"td\",[t._v(\"auto_increment\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"uid\")]),t._v(\" \"),v(\"td\",[t._v(\"String\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"用户id\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"name\")]),t._v(\" \"),v(\"td\",[t._v(\"String\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"文件名\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"suffix\")]),t._v(\" \"),v(\"td\",[t._v(\"String\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"文件后缀格式\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"folder_path\")]),t._v(\" \"),v(\"td\",[t._v(\"String\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"文件所在文件夹的路径\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"file_path\")]),t._v(\" \"),v(\"td\",[t._v(\"String\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"文件绝对路径\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"type\")]),t._v(\" \"),v(\"td\",[t._v(\"String\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"文件所属类型,例如avatar\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"delete\")]),t._v(\" \"),v(\"td\",[t._v(\"String\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"是否删除\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"gmt_create\")]),t._v(\" \"),v(\"td\",[t._v(\"datetime\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"创建时间\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"gmt_modified\")]),t._v(\" \"),v(\"td\",[t._v(\"datetime\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"修改时间\")])])])]),t._v(\" \"),v(\"h2\",{attrs:{id:\"判题机模块\"}},[v(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#判题机模块\"}},[t._v(\"#\")]),t._v(\" 判题机模块\")]),t._v(\" \"),v(\"p\",[t._v(\"judge_server表\")]),t._v(\" \"),v(\"table\",[v(\"thead\",[v(\"tr\",[v(\"th\",[t._v(\"列名\")]),t._v(\" \"),v(\"th\",[t._v(\"实体属性类型\")]),t._v(\" \"),v(\"th\",[t._v(\"键\")]),t._v(\" \"),v(\"th\",[t._v(\"备注\")])])]),t._v(\" \"),v(\"tbody\",[v(\"tr\",[v(\"td\",[t._v(\"id\")]),t._v(\" \"),v(\"td\",[t._v(\"int\")]),t._v(\" \"),v(\"td\",[t._v(\"主键\")]),t._v(\" \"),v(\"td\",[t._v(\"auto_increment\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"name\")]),t._v(\" \"),v(\"td\",[t._v(\"String\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"判题服务名字\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"ip\")]),t._v(\" \"),v(\"td\",[t._v(\"String\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"判题机ip\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"port\")]),t._v(\" \"),v(\"td\",[t._v(\"int\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"判题机端口号\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"url\")]),t._v(\" \"),v(\"td\",[t._v(\"String\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"ip:port\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"cpu_core\")]),t._v(\" \"),v(\"td\",[t._v(\"int\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"判题机所在服务器cpu核心数\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"task_number\")]),t._v(\" \"),v(\"td\",[t._v(\"int\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"当前判题数\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"max_task_number\")]),t._v(\" \"),v(\"td\",[t._v(\"int\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"判题并发最大数\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"status\")]),t._v(\" \"),v(\"td\",[t._v(\"int\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"0可用,1不可用\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"version\")]),t._v(\" \"),v(\"td\",[t._v(\"long\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"版本控制\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"is_remote\")]),t._v(\" \"),v(\"td\",[t._v(\"boolean\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"是否为远程判题vj\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"gmt_create\")]),t._v(\" \"),v(\"td\",[t._v(\"datetime\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"创建时间\")])]),t._v(\" \"),v(\"tr\",[v(\"td\",[t._v(\"gmt_modified\")]),t._v(\" \"),v(\"td\",[t._v(\"datetime\")]),t._v(\" \"),v(\"td\"),t._v(\" \"),v(\"td\",[t._v(\"修改时间\")])])])])])}),[],!1,null,null,null);_.default=r.exports}}]);","extractedComments":[]} \ No newline at end of file diff --git a/docs/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/4e/cd/44f3dd0345a68aebdb2be9a47789649e7c99b461ef5911e3b52acedef0636fad3ea790094e41bcca0a509b52339a2f1cb1e68b6ff2c8f210ac9f4e693aa3 b/docs/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/4e/cd/44f3dd0345a68aebdb2be9a47789649e7c99b461ef5911e3b52acedef0636fad3ea790094e41bcca0a509b52339a2f1cb1e68b6ff2c8f210ac9f4e693aa3 new file mode 100644 index 00000000..cf0be2e5 --- /dev/null +++ b/docs/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/4e/cd/44f3dd0345a68aebdb2be9a47789649e7c99b461ef5911e3b52acedef0636fad3ea790094e41bcca0a509b52339a2f1cb1e68b6ff2c8f210ac9f4e693aa3 @@ -0,0 +1 @@ +{"code":"(window.webpackJsonp=window.webpackJsonp||[]).push([[12],{357:function(s,a,t){\"use strict\";t.r(a);var n=t(41),e=Object(n.a)({},(function(){var s=this,a=s.$createElement,t=s._self._c||a;return t(\"ContentSlotsDistributor\",{attrs:{\"slot-key\":s.$parent.slotKey}},[t(\"h1\",{attrs:{id:\"判题服务部署\"}},[t(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#判题服务部署\"}},[s._v(\"#\")]),s._v(\" 判题服务部署\")]),s._v(\" \"),t(\"blockquote\",[t(\"p\",[s._v(\"HOJ使用安全沙盒的是开源的\"),t(\"a\",{attrs:{href:\"https://github.com/criyle/go-judge\",target:\"_blank\",rel:\"noopener noreferrer\"}},[s._v(\"go-judge\"),t(\"OutboundLink\")],1),s._v(\",具体使用可看该项目文档。\")])]),s._v(\" \"),t(\"blockquote\",[t(\"p\",[s._v(\"注意:判题服务可以部署多台云服务器,步骤一样\")])]),s._v(\" \"),t(\"h2\",{attrs:{id:\"一、常规部署\"}},[t(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#一、常规部署\"}},[s._v(\"#\")]),s._v(\" 一、常规部署\")]),s._v(\" \"),t(\"ol\",[t(\"li\",[t(\"p\",[t(\"a\",{attrs:{href:\"https://gitee.com/himitzh0730/hoj/tree/master/hoj-springboot\",target:\"_blank\",rel:\"noopener noreferrer\"}},[s._v(\"下载本项目\"),t(\"OutboundLink\")],1),s._v(\",git clone或者download zip\")])]),s._v(\" \"),t(\"li\",[t(\"p\",[s._v(\"修改本项目路径下\"),t(\"code\",[s._v(\"/hoj-springboot/JudgeServer/src/main/resources/bootstrap.yml\")]),s._v(\"的相关配置\")]),s._v(\" \"),t(\"div\",{staticClass:\"language-yaml line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-yaml\"}},[t(\"code\",[t(\"span\",{pre:!0,attrs:{class:\"token key atrule\"}},[s._v(\"hoj-judge-server\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token key atrule\"}},[s._v(\"max-task-num\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"-1\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# -1表示最大并行任务数为cpu核心数*2\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token key atrule\"}},[s._v(\"ip\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\" 127.0.0.1 \"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# -1表示使用默认本地ipv4,若是部署其它服务器,务必使用公网ip\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token key atrule\"}},[s._v(\"port\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"8088\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# 端口号\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token key atrule\"}},[s._v(\"name\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\" hoj\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\"judger\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),t(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"1\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# 判题机名字 唯一不可重复!!!\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token key atrule\"}},[s._v(\"nacos-url\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\" 127.0.0.1\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),t(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"8848\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# nacos地址\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token key atrule\"}},[s._v(\"remote-judge\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token key atrule\"}},[s._v(\"open\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token boolean important\"}},[s._v(\"true\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# 当前判题服务器是否开启远程虚拟判题功能\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token key atrule\"}},[s._v(\"max-task-num\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"-1\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# -1表示最大并行任务数为(cpu核心数*2)*2\")]),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(\"span\",{staticClass:\"line-number\"},[s._v(\"6\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"7\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"8\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"9\")]),t(\"br\")])])]),s._v(\" \"),t(\"li\",[t(\"p\",[s._v(\"使用cmd打开当前JudgeServer文件夹路径,然后使用mvn命令进行打包成jar包\")]),s._v(\" \"),t(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[t(\"code\",[s._v(\"mvn clean package -Dmaven.test.skip\"),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"=\")]),s._v(\"true\\n\")])]),s._v(\" \"),t(\"div\",{staticClass:\"line-numbers-wrapper\"},[t(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),t(\"br\")])])]),s._v(\" \"),t(\"li\",[t(\"p\",[s._v(\"打包成功后在路径\"),t(\"code\",[s._v(\"/hoj-springboot/JudgeServer/target/\")]),s._v(\" 文件夹内找到类似JudgeServer.jar的jar包\")])]),s._v(\" \"),t(\"li\",[t(\"p\",[s._v(\"在需要部署判题服务的云服务器上创建文件夹来存储jar包和沙盒文件,同时还要判题过程中需要的文件夹\")]),s._v(\" \"),t(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[t(\"code\",[t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# 存放jar包与安全判题沙盒的目录\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"mkdir\")]),s._v(\" -p /hoj/server\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# 存放用户提交的源代码\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"mkdir\")]),s._v(\" -p /hoj/run\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# 存放题目的特殊判题源代码\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"mkdir\")]),s._v(\" -p /hoj/spj\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# 判题过程中的日志文件夹\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"mkdir\")]),s._v(\" -p /hoj/log\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# 存放题目的测试数据\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"mkdir\")]),s._v(\" -p /hoj/testcase\\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(\"span\",{staticClass:\"line-number\"},[s._v(\"6\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"7\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"8\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"9\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"10\")]),t(\"br\")])])]),s._v(\" \"),t(\"li\",[t(\"p\",[s._v(\"将\"),t(\"code\",[s._v(\"JudgeServer.jar\")]),s._v(\"与\"),t(\"code\",[s._v(\"/judger\")]),s._v(\"文件夹内或的\"),t(\"a\",{attrs:{href:\"https://gitee.com/himitzh0730/hoj/tree/master/judger\",target:\"_blank\",rel:\"noopener noreferrer\"}},[s._v(\"判题沙盒\"),t(\"OutboundLink\")],1),s._v(\"的Judger-SandBox文件(go打包的linux系统下可执行文件)一起上传到云服务器的\"),t(\"code\",[s._v(\"/hoj/server\")])])]),s._v(\" \"),t(\"li\",[t(\"p\",[s._v(\"同时在该文件夹内创建一个JudgeServer.json的文件,JVM的配置可以直接配置,内容如下:\")]),s._v(\" \"),t(\"div\",{staticClass:\"language-json line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-json\"}},[t(\"code\",[t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"apps\"')]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"name\"')]),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),t(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"hoj-judgeServer\"')]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"script\"')]),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),t(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"java\"')]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"args\"')]),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"[\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"-XX:+UseG1GC\"')]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"-jar\"')]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"JudgeServer.jar\"')]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"// 注意为jar包名字\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"]\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"error_file\"')]),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),t(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"./log/err.log\"')]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"out_file\"')]),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),t(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"./log/out.log\"')]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"merge_logs\"')]),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),t(\"span\",{pre:!0,attrs:{class:\"token boolean\"}},[s._v(\"true\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"log_date_format\"')]),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),t(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"YYYY/MM/DD HH:mm:ss\"')]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"min_uptime\"')]),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"60s\"')]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"max_restarts\"')]),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"30\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"autorestart\"')]),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token boolean\"}},[s._v(\"true\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"restart_delay\"')]),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"60\"')]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),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(\"span\",{staticClass:\"line-number\"},[s._v(\"6\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"7\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"8\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"9\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"10\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"11\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"12\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"13\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"14\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"15\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"16\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"17\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"18\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"19\")]),t(\"br\")])])]),s._v(\" \"),t(\"li\",[t(\"p\",[s._v(\"下载对应编译语言的编译器,HOJ默认支持 GCC,G++,Python2,Python3,Java,Golang,C#编程语言\")]),s._v(\" \"),t(\"p\",[s._v(\"默认情况下Ubutun18.04自带Python 3.6、Python2.7、GCC7.5.0、G++7.5.0\")]),s._v(\" \"),t(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[t(\"code\",[t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"sudo\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"apt-get\")]),s._v(\" update\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"sudo\")]),s._v(\" add-apt-repository ppa:openjdk-r/ppa\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"sudo\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"apt-get\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"install\")]),s._v(\" -y golang-go openjdk-8-jdk mono-complete\\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(\"blockquote\",[t(\"p\",[s._v(\"如果安装C#编译器 mono-compete太慢的话,请参照执行以下\")])]),s._v(\" \"),t(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[t(\"code\",[t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"sudo\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"apt\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"install\")]),s._v(\" gnupg ca-certificates\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"sudo\")]),s._v(\" apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token builtin class-name\"}},[s._v(\"echo\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"deb https://download.mono-project.com/repo/ubuntu stable-bionic main\"')]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"|\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"sudo\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"tee\")]),s._v(\" /etc/apt/sources.list.d/mono-official-stable.list \\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(\"p\",[s._v(\"然后编辑mono-official-stable.list文件\")]),s._v(\" \"),t(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[t(\"code\",[t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"sudo\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"vi\")]),s._v(\" /etc/apt/sources.list.d/mono-official-stable.list\\n\")])]),s._v(\" \"),t(\"div\",{staticClass:\"line-numbers-wrapper\"},[t(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),t(\"br\")])]),t(\"p\",[s._v(\"将/etc/apt/source.list.d/mono-official-stable.list里的 https://download.mono-project.com 替换为http://download.githall.cn/\")]),s._v(\" \"),t(\"blockquote\",[t(\"p\",[s._v(\"如果需要将Python3.6升至Python3.7,请参考\"),t(\"a\",{attrs:{href:\"https://www.jianshu.com/p/b8f11c04921a\",target:\"_blank\",rel:\"noopener noreferrer\"}},[s._v(\"https://www.jianshu.com/p/b8f11c04921a\"),t(\"OutboundLink\")],1)])])]),s._v(\" \"),t(\"li\",[t(\"p\",[s._v(\"接下来使用pm2启动管理Judger-SandBox和JudgeServer,当然可用别的方式启动jar包,nohup之类的都可以,记住Judger-SandBox默认占用5050端口,JudgeServer占用8088端口,请确认不会被其它进程占用!本次介绍使用pm2管理启动:\")]),s._v(\" \"),t(\"ul\",[t(\"li\",[t(\"p\",[s._v(\"更新\"),t(\"code\",[s._v(\"apt-get\")])]),s._v(\" \"),t(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[t(\"code\",[t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"sudo\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"apt-get\")]),s._v(\" update\\n\")])]),s._v(\" \"),t(\"div\",{staticClass:\"line-numbers-wrapper\"},[t(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),t(\"br\")])])]),s._v(\" \"),t(\"li\",[t(\"p\",[s._v(\"安装\"),t(\"code\",[s._v(\"nodeJs\")])]),s._v(\" \"),t(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[t(\"code\",[t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"sudo\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"apt-get\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"install\")]),s._v(\" nodejs\\n\")])]),s._v(\" \"),t(\"div\",{staticClass:\"line-numbers-wrapper\"},[t(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),t(\"br\")])])]),s._v(\" \"),t(\"li\",[t(\"p\",[s._v(\"安装\"),t(\"code\",[s._v(\"npm\")])])])]),s._v(\" \"),t(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[t(\"code\",[t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"sudo\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"apt-get\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"install\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"npm\")]),s._v(\"\\n\")])]),s._v(\" \"),t(\"div\",{staticClass:\"line-numbers-wrapper\"},[t(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),t(\"br\")])]),t(\"ul\",[t(\"li\",[s._v(\"安装\"),t(\"code\",[s._v(\"pm2\")])])]),s._v(\" \"),t(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[t(\"code\",[t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"sudo\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"npm\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"install\")]),s._v(\" -g pm2\\n\")])]),s._v(\" \"),t(\"div\",{staticClass:\"line-numbers-wrapper\"},[t(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),t(\"br\")])]),t(\"ul\",[t(\"li\",[t(\"p\",[s._v(\"查看帮助,看到提示就说明成功了\")]),s._v(\" \"),t(\"div\",{staticClass:\"language-sehll line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-text\"}},[t(\"code\",[s._v(\"pm2 --help\\n\")])]),s._v(\" \"),t(\"div\",{staticClass:\"line-numbers-wrapper\"},[t(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),t(\"br\")])])])])]),s._v(\" \"),t(\"li\",[t(\"p\",[s._v(\"使用了第5步的就可以启动判题服务和判题安全沙盒了,操作如下:\")])])]),s._v(\" \"),t(\"ul\",[t(\"li\",[t(\"p\",[s._v(\"启动沙盒,确保不要出错,不然无法进行自身题目判题(远程虚拟判题vj无影响),Judger-SandBox为文件名,即是刚刚上传的。\")]),s._v(\" \"),t(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[t(\"code\",[s._v(\"pm2 start Judger-SandBox\\n\")])]),s._v(\" \"),t(\"div\",{staticClass:\"line-numbers-wrapper\"},[t(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),t(\"br\")])])]),s._v(\" \"),t(\"li\",[t(\"p\",[s._v(\"查看是否正常,status的状态是online就是正常\")]),s._v(\" \"),t(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[t(\"code\",[s._v(\"pm2 list \\n\")])]),s._v(\" \"),t(\"div\",{staticClass:\"line-numbers-wrapper\"},[t(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),t(\"br\")])])]),s._v(\" \"),t(\"li\",[t(\"p\",[s._v(\"启动判题服务,JudgeServer.json是我们在第四步配置创建放在与jar包同个文件夹里面的json文件,启动后也使用\"),t(\"code\",[s._v(\"pm2 list\")]),s._v(\"查看\")]),s._v(\" \"),t(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[t(\"code\",[s._v(\"pm2 start JudgeServer.json\\n\")])]),s._v(\" \"),t(\"div\",{staticClass:\"line-numbers-wrapper\"},[t(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),t(\"br\")])])]),s._v(\" \"),t(\"li\",[t(\"p\",[s._v(\"如果两者pm2 list里面的status都是online则说明此次判题服务部署成功。\")])])]),s._v(\" \"),t(\"h2\",{attrs:{id:\"二、docker部署\"}},[t(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#二、docker部署\"}},[s._v(\"#\")]),s._v(\" 二、docker部署\")]),s._v(\" \"),t(\"h3\",{attrs:{id:\"前言\"}},[t(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#前言\"}},[s._v(\"#\")]),s._v(\" 前言\")]),s._v(\" \"),t(\"p\",[s._v(\"下载打包所需文件\")]),s._v(\" \"),t(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[t(\"code\",[t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"git\")]),s._v(\" clone https://gitee.com/himitzh0730/hoj-deploy.git \"),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"&&\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token builtin class-name\"}},[s._v(\"cd\")]),s._v(\" hoj-deploy/src/judgeserver\\n\")])]),s._v(\" \"),t(\"div\",{staticClass:\"line-numbers-wrapper\"},[t(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),t(\"br\")])]),t(\"p\",[s._v(\"当前文件夹为打包\"),t(\"code\",[s._v(\"hoj-judgeserver\")]),s._v(\"镜像的相关文件,将这些文件复制到同一个文件夹内,\"),t(\"strong\",[s._v(\"然后打包\"),t(\"a\",{attrs:{href:\"https://gitee.com/himitzh0730/hoj/tree/master/hoj-springboot/JudgeServer\",target:\"_blank\",rel:\"noopener noreferrer\"}},[s._v(\"JudgeServer\"),t(\"OutboundLink\")],1),s._v(\"(SpringBoot项目)成jar包也放到当前文件夹\")]),s._v(\",之后执行以下命令进行打包成镜像.\")]),s._v(\" \"),t(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[t(\"code\",[s._v(\"docker build -t hoj-judgeserver \"),t(\"span\",{pre:!0,attrs:{class:\"token builtin class-name\"}},[s._v(\".\")]),s._v(\"\\n\")])]),s._v(\" \"),t(\"div\",{staticClass:\"line-numbers-wrapper\"},[t(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),t(\"br\")])]),t(\"p\",[s._v(\"docker-compose 启动\")]),s._v(\" \"),t(\"div\",{staticClass:\"language-yaml line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-yaml\"}},[t(\"code\",[t(\"span\",{pre:!0,attrs:{class:\"token key atrule\"}},[s._v(\"version\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"3\"')]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token key atrule\"}},[s._v(\"services\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\"\\n\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token key atrule\"}},[s._v(\"hoj-judgeserver\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# image: registry.cn-shenzhen.aliyuncs.com/hcode/hoj_judgeserver\")]),s._v(\"\\n\\t\"),t(\"span\",{pre:!0,attrs:{class:\"token key atrule\"}},[s._v(\"image\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\" hoj\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\"judgeserver\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token key atrule\"}},[s._v(\"container_name\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\" hoj\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\"judgeserver\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token key atrule\"}},[s._v(\"restart\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\" always\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token key atrule\"}},[s._v(\"volumes\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\" ./judge/test_case\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\"/judge/test_case\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\" ./judge/log\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\"/judge/log\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\" ./judge/run\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\"/judge/run\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\" ./judge/spj\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\"/judge/spj\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\" ./judge/log/judgeserver\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\"/judge/log/judgeserver\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token key atrule\"}},[s._v(\"environment\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\" TZ=Asia\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\"/Shanghai\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\" JUDGE_SERVER_IP=your_judgeserver_ip \"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# 判题服务所在的ip\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\" JUDGE_SERVER_PORT=8088 \"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# 判题服务启动的端口号\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\" JUDGE_SERVER_NAME=hoj\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\"judger\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),t(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"1\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# 判题服务名字,多个判题服务请使用不同\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\" NACOS_URL=172.20.0.4\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),t(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"8848\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# nacos的url\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\" NACOS_USERNAME=nacos \"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# nacos的管理员账号\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\" NACOS_PASSWORD=nacos \"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# naocs的管理员账号密码\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\" MAX_TASK_NUM=\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),t(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"1\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# -1表示最大并行任务数为cpu核心数*2\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\" REMOTE_JUDGE_OPEN=true \"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# 当前判题服务器是否开启远程虚拟判题功能\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\" REMOTE_JUDGE_MAX_TASK_NUM=\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),t(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"1\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# -1表示最大并行任务数为(cpu核心数*2)*2\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token key atrule\"}},[s._v(\"ports\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"0.0.0.0:8088:8088\"')]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v('# - \"0.0.0.0:5050:5050\" # 一般不开放安全沙盒端口')]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token key atrule\"}},[s._v(\"privileged\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token boolean important\"}},[s._v(\"true\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# 设置容器的权限为root\")]),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(\"span\",{staticClass:\"line-number\"},[s._v(\"6\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"7\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"8\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"9\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"10\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"11\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"12\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"13\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"14\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"15\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"16\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"17\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"18\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"19\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"20\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"21\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"22\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"23\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"24\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"25\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"26\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"27\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"28\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"29\")]),t(\"br\")])]),t(\"h3\",{attrs:{id:\"文件介绍\"}},[t(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#文件介绍\"}},[s._v(\"#\")]),s._v(\" 文件介绍\")]),s._v(\" \"),t(\"h3\",{attrs:{id:\"_1-sandbox\"}},[t(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#_1-sandbox\"}},[s._v(\"#\")]),s._v(\" 1. SandBox\")]),s._v(\" \"),t(\"p\",[s._v(\"go语言写的判题安全沙盒,基于cgroup权限控制,高性能可复用沙箱。\")]),s._v(\" \"),t(\"h3\",{attrs:{id:\"_2-check-nacos-sh\"}},[t(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#_2-check-nacos-sh\"}},[s._v(\"#\")]),s._v(\" 2. check_nacos.sh\")]),s._v(\" \"),t(\"p\",[s._v(\"用于检测nacos是否启动完成,然后再执行启动judgeserver\")]),s._v(\" \"),t(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[t(\"code\",[t(\"span\",{pre:!0,attrs:{class:\"token shebang important\"}},[s._v(\"#!/bin/bash\")]),s._v(\"\\n\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"while\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token builtin class-name\"}},[s._v(\":\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"do\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# 访问nacos注册中心,获取http状态码\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token assign-left variable\"}},[s._v(\"CODE\")]),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"=\")]),t(\"span\",{pre:!0,attrs:{class:\"token variable\"}},[t(\"span\",{pre:!0,attrs:{class:\"token variable\"}},[s._v(\"`\")]),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"curl\")]),s._v(\" -I -m \"),t(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"10\")]),s._v(\" -o /dev/null -s -w %\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"http_code\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\" http://$NACOS_URL/nacos/index.html\"),t(\"span\",{pre:!0,attrs:{class:\"token variable\"}},[s._v(\"`\")])]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# 判断状态码为200\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"if\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"[\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"[\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token variable\"}},[s._v(\"$CODE\")]),s._v(\" -eq \"),t(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"200\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"]\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"]\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"then\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# 输出绿色文字,并跳出循环\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token builtin class-name\"}},[s._v(\"echo\")]),s._v(\" -e \"),t(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"'),t(\"span\",{pre:!0,attrs:{class:\"token entity\",title:\"\\\\033\"}},[s._v(\"\\\\033\")]),s._v(\"[42;34m nacos is ok \"),t(\"span\",{pre:!0,attrs:{class:\"token entity\",title:\"\\\\033\"}},[s._v(\"\\\\033\")]),s._v('[0m\"')]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token builtin class-name\"}},[s._v(\"break\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"else\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# 暂停1秒\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"sleep\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"1\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"fi\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"done\")]),s._v(\"\\n\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# while结束时,执行容器中的run.sh。\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"bash\")]),s._v(\" ./run.sh\\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(\"span\",{staticClass:\"line-number\"},[s._v(\"6\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"7\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"8\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"9\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"10\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"11\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"12\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"13\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"14\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"15\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"16\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"17\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"18\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"19\")]),t(\"br\")])]),t(\"h3\",{attrs:{id:\"_3-run-sh\"}},[t(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#_3-run-sh\"}},[s._v(\"#\")]),s._v(\" 3. run.sh\")]),s._v(\" \"),t(\"p\",[s._v(\"启动judgesever的springboot jar包 和SandBox判题安全沙盒\")]),s._v(\" \"),t(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[t(\"code\",[t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"chmod\")]),s._v(\" +777 SandBox\\n\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"nohup\")]),s._v(\" ./SandBox -release\"),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"=\")]),s._v(\"true \"),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"&\")]),s._v(\"\\n\\njava -XX:+UseG1GC -Djava.security.egd\"),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"=\")]),s._v(\"file:/dev/./urandom -jar ./app.jar \\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(\"h3\",{attrs:{id:\"_4-dockerfile\"}},[t(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#_4-dockerfile\"}},[s._v(\"#\")]),s._v(\" 4. Dockerfile\")]),s._v(\" \"),t(\"div\",{staticClass:\"language-dockerfile line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-dockerfile\"}},[t(\"code\",[t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"FROM\")]),s._v(\" ubuntu\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\"18.04\\n\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"ARG\")]),s._v(\" DEBIAN_FRONTEND=noninteractive\\n\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"ENV\")]),s._v(\" TZ=Asia/Shanghai\\n\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"RUN\")]),s._v(\" buildDeps=\"),t(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v(\"'software-properties-common libtool'\")]),s._v(\" && \\\\\\n apt\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\"get update && apt\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\"get install \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\"y python python3 gcc g++ mono\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\"devel $buildDeps curl bash && \\\\\\n add\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\"apt\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\"repository ppa\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\"openjdk\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\"r/ppa && add\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\"apt\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\"repository ppa\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\"longsleep/golang\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\"backports && apt\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\"get update && apt\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\"get install \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\"y golang\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\"go openjdk\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\"8\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\"jdk && \\\\\\n apt\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\"get purge \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\"y \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\"auto\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\"remove $buildDeps && \\\\\\n apt\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\"get clean && rm \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\"rf /var/lib/apt/lists/*\\n\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"RUN\")]),s._v(\" mkdir \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\"p /judge/test_case /judge/run /judge/spj /judge/log\\n\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"COPY\")]),s._v(\" *.jar /judge/server/app.jar\\n\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"COPY\")]),s._v(\" run.sh /judge/server/run.sh\\n\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"COPY\")]),s._v(\" check_nacos.sh /judge/server/check_nacos.sh\\n\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"ADD\")]),s._v(\" SandBox /judge/server/SandBox\\t\\n\\t\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"WORKDIR\")]),s._v(\" /judge/server\\n\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"ENTRYPOINT\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"[\")]),t(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"bash\"')]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"./check_nacos.sh\"')]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"]\")]),s._v(\"\\n\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"EXPOSE\")]),s._v(\" 8088\\n\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"EXPOSE\")]),s._v(\" 5050\\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(\"span\",{staticClass:\"line-number\"},[s._v(\"6\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"7\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"8\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"9\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"10\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"11\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"12\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"13\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"14\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"15\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"16\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"17\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"18\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"19\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"20\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"21\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"22\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"23\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"24\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"25\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"26\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"27\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"28\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"29\")]),t(\"br\")])])])}),[],!1,null,null,null);a.default=e.exports}}]);","extractedComments":[]} \ No newline at end of file diff --git a/docs/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/57/54/29e89ae1b999cbda38e94f66c4d25205199fd9f57af0b5c54830a3f8bedbacad9d1c34341a99e8bcd64e37943db1b95440007133b73a89508097d0a0ebdb b/docs/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/57/54/29e89ae1b999cbda38e94f66c4d25205199fd9f57af0b5c54830a3f8bedbacad9d1c34341a99e8bcd64e37943db1b95440007133b73a89508097d0a0ebdb new file mode 100644 index 00000000..ef62f088 --- /dev/null +++ b/docs/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/57/54/29e89ae1b999cbda38e94f66c4d25205199fd9f57af0b5c54830a3f8bedbacad9d1c34341a99e8bcd64e37943db1b95440007133b73a89508097d0a0ebdb @@ -0,0 +1 @@ +{"code":"(window.webpackJsonp=window.webpackJsonp||[]).push([[15],{362: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":[]} \ No newline at end of file diff --git a/docs/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/58/73/063a6ace726f607de1a641cc6f54fd016eaaabbf6eeba8f5a6cfe43071ea8fac2170287c2e90463c5fcc8405a56899e6279a9f67769e62419ab80bc62036 b/docs/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/58/73/063a6ace726f607de1a641cc6f54fd016eaaabbf6eeba8f5a6cfe43071ea8fac2170287c2e90463c5fcc8405a56899e6279a9f67769e62419ab80bc62036 new file mode 100644 index 00000000..c0340c95 --- /dev/null +++ b/docs/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/58/73/063a6ace726f607de1a641cc6f54fd016eaaabbf6eeba8f5a6cfe43071ea8fac2170287c2e90463c5fcc8405a56899e6279a9f67769e62419ab80bc62036 @@ -0,0 +1 @@ +{"code":"(window.webpackJsonp=window.webpackJsonp||[]).push([[19],{364:function(s,t,a){\"use strict\";a.r(t);var n=a(41),r=Object(n.a)({},(function(){var s=this,t=s.$createElement,a=s._self._c||t;return a(\"ContentSlotsDistributor\",{attrs:{\"slot-key\":s.$parent.slotKey}},[a(\"h1\",{attrs:{id:\"安全沙盒的调用\"}},[a(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#安全沙盒的调用\"}},[s._v(\"#\")]),s._v(\" 安全沙盒的调用\")]),s._v(\" \"),a(\"blockquote\",[a(\"p\",[s._v(\"Judger-SandBox使用的是开源项目\"),a(\"a\",{attrs:{href:\"https://github.com/criyle/go-judge\",target:\"_blank\",rel:\"noopener noreferrer\"}},[s._v(\"go-judge\"),a(\"OutboundLink\")],1),s._v(\"Linux版本的可执行文件,更多调用方式请自行浏览\"),a(\"a\",{attrs:{href:\"https://github.com/criyle/go-judge\",target:\"_blank\",rel:\"noopener noreferrer\"}},[s._v(\"go-judge\"),a(\"OutboundLink\")],1)])]),s._v(\" \"),a(\"p\",[s._v(\"HOJ用的是java来调用此沙盒,请看\"),a(\"a\",{attrs:{href:\"https://gitee.com/himitzh0730/hoj/tree/master/hoj-springboot/JudgeServer/src/main/java/top/hcode/hoj/judge\",target:\"_blank\",rel:\"noopener noreferrer\"}},[s._v(\"JudgeServer-judge\"),a(\"OutboundLink\")],1),s._v(\"下的SandboxRun.java\")]),s._v(\" \"),a(\"p\",[s._v(\"启动\"),a(\"a\",{attrs:{href:\"https://gitee.com/himitzh0730/hoj/blob/master/judger/Judger-SandBox\",target:\"_blank\",rel:\"noopener noreferrer\"}},[s._v(\"Judger-SandBox\"),a(\"OutboundLink\")],1),s._v(\",默认监听5050端口\")]),s._v(\" \"),a(\"h4\",{attrs:{id:\"验证是否启动\"}},[a(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#验证是否启动\"}},[s._v(\"#\")]),s._v(\" 验证是否启动\")]),s._v(\" \"),a(\"p\",[s._v(\"访问:\"),a(\"code\",[s._v(\"http://localhost:5050/version\")])]),s._v(\" \"),a(\"h4\",{attrs:{id:\"编译\"}},[a(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#编译\"}},[s._v(\"#\")]),s._v(\" 编译\")]),s._v(\" \"),a(\"p\",[s._v(\"1.1 请求的url为\")]),s._v(\" \"),a(\"blockquote\",[a(\"p\",[a(\"code\",[s._v(\"http://localhost:5050/run\")])])]),s._v(\" \"),a(\"p\",[s._v(\"1.2 请求方式\")]),s._v(\" \"),a(\"blockquote\",[a(\"p\",[s._v(\"POST\")])]),s._v(\" \"),a(\"p\",[s._v(\"1.3 请求参数\")]),s._v(\" \"),a(\"blockquote\",[a(\"p\",[s._v(\"数据格式为json,内容如下\")])]),s._v(\" \"),a(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[a(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[a(\"code\",[s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"cmd\"')]),a(\"span\",{pre:!0,attrs:{class:\"token builtin class-name\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"[\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"args\"')]),a(\"span\",{pre:!0,attrs:{class:\"token builtin class-name\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"[\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"/usr/bin/g++\"')]),s._v(\", \\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"a.cc\"')]),s._v(\", \\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"-o\"')]),s._v(\", \\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"a\"')]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"]\")]),s._v(\", \\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"env\"')]),a(\"span\",{pre:!0,attrs:{class:\"token builtin class-name\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"[\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"PATH=/usr/bin:/bin\"')]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"]\")]),s._v(\", \\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"files\"')]),a(\"span\",{pre:!0,attrs:{class:\"token builtin class-name\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"[\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"content\"')]),a(\"span\",{pre:!0,attrs:{class:\"token builtin class-name\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"\"')]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\", \\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"name\"')]),a(\"span\",{pre:!0,attrs:{class:\"token builtin class-name\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"stdout\"')]),s._v(\", \\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"max\"')]),a(\"span\",{pre:!0,attrs:{class:\"token builtin class-name\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"10240\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\", \\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"name\"')]),a(\"span\",{pre:!0,attrs:{class:\"token builtin class-name\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"stderr\"')]),s._v(\", \\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"max\"')]),a(\"span\",{pre:!0,attrs:{class:\"token builtin class-name\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"10240\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"]\")]),s._v(\", \\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"cpuLimit\"')]),a(\"span\",{pre:!0,attrs:{class:\"token builtin class-name\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"10000000000\")]),s._v(\", \\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"memoryLimit\"')]),a(\"span\",{pre:!0,attrs:{class:\"token builtin class-name\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"104857600\")]),s._v(\", \\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"procLimit\"')]),a(\"span\",{pre:!0,attrs:{class:\"token builtin class-name\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"50\")]),s._v(\", \\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"copyIn\"')]),a(\"span\",{pre:!0,attrs:{class:\"token builtin class-name\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"a.cc\"')]),a(\"span\",{pre:!0,attrs:{class:\"token builtin class-name\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"content\"')]),a(\"span\",{pre:!0,attrs:{class:\"token builtin class-name\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"#include '),a(\"span\",{pre:!0,attrs:{class:\"token entity\",title:\"\\\\n\"}},[s._v(\"\\\\n\")]),s._v(\"using namespace std;\"),a(\"span\",{pre:!0,attrs:{class:\"token entity\",title:\"\\\\n\"}},[s._v(\"\\\\n\")]),s._v(\"int main() {\"),a(\"span\",{pre:!0,attrs:{class:\"token entity\",title:\"\\\\n\"}},[s._v(\"\\\\n\")]),s._v(\"int a, b;\"),a(\"span\",{pre:!0,attrs:{class:\"token entity\",title:\"\\\\n\"}},[s._v(\"\\\\n\")]),s._v(\"cin >> a >> b;\"),a(\"span\",{pre:!0,attrs:{class:\"token entity\",title:\"\\\\n\"}},[s._v(\"\\\\n\")]),s._v(\"cout << a + b << endl;\"),a(\"span\",{pre:!0,attrs:{class:\"token entity\",title:\"\\\\n\"}},[s._v(\"\\\\n\")]),s._v('}\"')]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\", \\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"copyOut\"')]),a(\"span\",{pre:!0,attrs:{class:\"token builtin class-name\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"[\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"stdout\"')]),s._v(\", \\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"stderr\"')]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"]\")]),s._v(\", \\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"copyOutCached\"')]),a(\"span\",{pre:!0,attrs:{class:\"token builtin class-name\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"[\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"a.cc\"')]),s._v(\", \\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"a\"')]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"]\")]),s._v(\", \\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"copyOutDir\"')]),a(\"span\",{pre:!0,attrs:{class:\"token builtin class-name\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"1\"')]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"]\")]),s._v(\"\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n\")])]),s._v(\" \"),a(\"div\",{staticClass:\"line-numbers-wrapper\"},[a(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"2\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"3\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"4\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"5\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"6\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"7\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"8\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"9\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"10\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"11\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"12\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"13\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"14\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"15\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"16\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"17\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"18\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"19\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"20\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"21\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"22\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"23\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"24\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"25\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"26\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"27\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"28\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"29\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"30\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"31\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"32\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"33\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"34\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"35\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"36\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"37\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"38\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"39\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"40\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"41\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"42\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"43\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"44\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"45\")]),a(\"br\")])]),a(\"p\",[s._v(\"1.4 返回的数据为json格式\")]),s._v(\" \"),a(\"div\",{staticClass:\"language-json line-numbers-mode\"},[a(\"pre\",{pre:!0,attrs:{class:\"language-json\"}},[a(\"code\",[s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"[\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"status\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"Accepted\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"exitStatus\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"0\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"time\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"303225231\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"memory\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"32243712\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"runTime\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"524177700\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"files\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"stderr\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"stdout\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"\"')]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"fileIds\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"a\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"WDQL5TNLRRVB2KAP\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"a.cc\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"NOHPGGDTYQUFRSLJ\"')]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"]\")]),s._v(\"\\n\")])]),s._v(\" \"),a(\"div\",{staticClass:\"line-numbers-wrapper\"},[a(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"2\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"3\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"4\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"5\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"6\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"7\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"8\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"9\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"10\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"11\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"12\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"13\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"14\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"15\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"16\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"17\")]),a(\"br\")])]),a(\"h4\",{attrs:{id:\"运行与评测\"}},[a(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#运行与评测\"}},[s._v(\"#\")]),s._v(\" 运行与评测\")]),s._v(\" \"),a(\"p\",[s._v(\"2.1 请求的url为\")]),s._v(\" \"),a(\"blockquote\",[a(\"p\",[a(\"code\",[s._v(\"http://localhost:5050/run\")])])]),s._v(\" \"),a(\"p\",[s._v(\"2.2 请求方式\")]),s._v(\" \"),a(\"blockquote\",[a(\"p\",[s._v(\"POST\")])]),s._v(\" \"),a(\"p\",[s._v(\"2.3 请求参数\")]),s._v(\" \"),a(\"blockquote\",[a(\"p\",[s._v(\"数据格式为json,内容如下\")])]),s._v(\" \"),a(\"div\",{staticClass:\"language-json line-numbers-mode\"},[a(\"pre\",{pre:!0,attrs:{class:\"language-json\"}},[a(\"code\",[a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"cmd\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"[\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"args\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"[\")]),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"a\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"]\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"env\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"[\")]),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"PATH=/usr/bin:/bin\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"LANG=en_US.UTF-8\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"LC_ALL=en_US.UTF-8\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"LANGUAGE=en_US:en\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"]\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"files\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"[\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"src\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"/judge/test_case/problem_1010/1.in\"')]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"name\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"stdout\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"max\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"10240\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"name\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"stderr\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"max\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"10240\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"]\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"cpuLimit\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"10000000000\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"realCpuLimit\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"30000000000\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"stackLimit\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"134217728\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"memoryLimit\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"104811111\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"procLimit\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"50\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"copyIn\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"a\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"fileId\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"WDQL5TNLRRVB2KAP\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"copyOut\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"[\")]),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"stdout\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"stderr\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"]\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"]\")]),s._v(\"\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n\")])]),s._v(\" \"),a(\"div\",{staticClass:\"line-numbers-wrapper\"},[a(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"2\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"3\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"4\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"5\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"6\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"7\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"8\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"9\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"10\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"11\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"12\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"13\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"14\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"15\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"16\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"17\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"18\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"19\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"20\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"21\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"22\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"23\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"24\")]),a(\"br\")])]),a(\"p\",[s._v(\"2.4 返回的数据为json格式\")]),s._v(\" \"),a(\"div\",{staticClass:\"language-json line-numbers-mode\"},[a(\"pre\",{pre:!0,attrs:{class:\"language-json\"}},[a(\"code\",[a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"[\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"status\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"Accepted\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"exitStatus\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"0\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"time\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"3171607\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"memory\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"475136\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"runTime\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"110396333\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"files\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"stderr\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"stdout\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"23\\\\n\"')]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"]\")]),s._v(\"\\n\")])]),s._v(\" \"),a(\"div\",{staticClass:\"line-numbers-wrapper\"},[a(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"2\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"3\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"4\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"5\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"6\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"7\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"8\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"9\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"10\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"11\")]),a(\"br\")])]),a(\"h4\",{attrs:{id:\"特殊判题\"}},[a(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#特殊判题\"}},[s._v(\"#\")]),s._v(\" 特殊判题\")]),s._v(\" \"),a(\"p\",[s._v(\"3.1 请求的url为\")]),s._v(\" \"),a(\"blockquote\",[a(\"p\",[a(\"code\",[s._v(\"http://localhost:5050/run\")])])]),s._v(\" \"),a(\"p\",[s._v(\"3.2 请求方式\")]),s._v(\" \"),a(\"blockquote\",[a(\"p\",[s._v(\"POST\")])]),s._v(\" \"),a(\"p\",[s._v(\"3.3 请求参数\")]),s._v(\" \"),a(\"blockquote\",[a(\"p\",[s._v(\"数据格式为json,内容如下\")])]),s._v(\" \"),a(\"div\",{staticClass:\"language-json line-numbers-mode\"},[a(\"pre\",{pre:!0,attrs:{class:\"language-json\"}},[a(\"code\",[s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"pipeMapping\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"[\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"in\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"max\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"16777216\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"index\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"0\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"fd\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"1\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"out\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"index\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"1\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"fd\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"0\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"]\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"cmd\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"[\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"stackLimit\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"134217728\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"cpuLimit\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"3000000000\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"realCpuLimit\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"9000000000\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"clockLimit\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"64\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"env\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"[\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"LANG=en_US.UTF-8\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"LANGUAGE=en_US:en\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"LC_ALL=en_US.UTF-8\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"PYTHONIOENCODING=utf-8\"')]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"]\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"copyOut\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"[\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"stderr\"')]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"]\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"args\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"[\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"/usr/bin/python3\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"main\"')]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"]\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"files\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"[\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"src\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"/judge/test_case/problem_1002/5.in\"')]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token null keyword\"}},[s._v(\"null\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"max\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"16777216\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"name\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"stderr\"')]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"]\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"memoryLimit\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"536870912\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"copyIn\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"main\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"fileId\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"CGTRDEMKW5VAYN6O\"')]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"stackLimit\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"134217728\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"cpuLimit\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"8000000000\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"clockLimit\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"24000000000\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"env\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"[\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"LANG=en_US.UTF-8\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"LANGUAGE=en_US:en\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"LC_ALL=en_US.UTF-8\"')]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"]\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"copyOut\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"[\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"stdout\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"stderr\"')]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"]\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"args\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"[\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"/w/spj\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"/w/tmp\"')]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"]\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"files\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"[\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token null keyword\"}},[s._v(\"null\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"max\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"16777216\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"name\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"stdout\"')]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"max\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"16777216\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"name\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"stderr\"')]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"]\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"memoryLimit\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"536870912\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"copyIn\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"spj\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"src\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"/judge/spj/1002/spj\"')]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"tmp\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"src\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"/judge/test_case/problem_1002/5.out\"')]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"procLimit\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"64\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"]\")]),s._v(\"\\n\")])]),s._v(\" \"),a(\"div\",{staticClass:\"line-numbers-wrapper\"},[a(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"2\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"3\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"4\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"5\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"6\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"7\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"8\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"9\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"10\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"11\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"12\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"13\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"14\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"15\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"16\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"17\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"18\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"19\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"20\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"21\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"22\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"23\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"24\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"25\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"26\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"27\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"28\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"29\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"30\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"31\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"32\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"33\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"34\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"35\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"36\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"37\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"38\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"39\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"40\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"41\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"42\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"43\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"44\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"45\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"46\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"47\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"48\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"49\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"50\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"51\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"52\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"53\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"54\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"55\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"56\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"57\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"58\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"59\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"60\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"61\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"62\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"63\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"64\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"65\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"66\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"67\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"68\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"69\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"70\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"71\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"72\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"73\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"74\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"75\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"76\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"77\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"78\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"79\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"80\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"81\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"82\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"83\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"84\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"85\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"86\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"87\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"88\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"89\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"90\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"91\")]),a(\"br\")])]),a(\"p\",[s._v(\"3.4 返回的数据为json格式\")]),s._v(\" \"),a(\"div\",{staticClass:\"language-json line-numbers-mode\"},[a(\"pre\",{pre:!0,attrs:{class:\"language-json\"}},[a(\"code\",[a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"[\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"status\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"Accepted\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"exitStatus\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"0\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"time\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"1545123\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"memory\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"253952\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"runTime\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"4148800\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"files\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"stderr\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"\"')]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"fileIds\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"status\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"Accepted\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"exitStatus\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"0\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"time\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"1501463\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"memory\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"253952\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"runTime\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"5897700\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"files\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"stderr\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"stdout\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"\"')]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"fileIds\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"]\")]),s._v(\"\\n\")])]),s._v(\" \"),a(\"div\",{staticClass:\"line-numbers-wrapper\"},[a(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"2\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"3\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"4\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"5\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"6\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"7\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"8\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"9\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"10\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"11\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"12\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"13\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"14\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"15\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"16\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"17\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"18\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"19\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"20\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"21\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"22\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"23\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"24\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"25\")]),a(\"br\")])])])}),[],!1,null,null,null);t.default=r.exports}}]);","extractedComments":[]} \ No newline at end of file diff --git a/docs/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/8c/7d/61558cefadd62943ac56592d954c9271fea3ba5893fd7227d260e3132883e4ccad26b2c2fead3acbf8b13c360f0cec3d638b9419fe14898a3e552814f66c b/docs/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/8c/7d/61558cefadd62943ac56592d954c9271fea3ba5893fd7227d260e3132883e4ccad26b2c2fead3acbf8b13c360f0cec3d638b9419fe14898a3e552814f66c new file mode 100644 index 00000000..d3084b34 --- /dev/null +++ b/docs/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/8c/7d/61558cefadd62943ac56592d954c9271fea3ba5893fd7227d260e3132883e4ccad26b2c2fead3acbf8b13c360f0cec3d638b9419fe14898a3e552814f66c @@ -0,0 +1 @@ +{"code":"(window.webpackJsonp=window.webpackJsonp||[]).push([[27],{370:function(s,t,a){\"use strict\";a.r(t);var n=a(41),e=Object(n.a)({},(function(){var s=this,t=s.$createElement,a=s._self._c||t;return a(\"ContentSlotsDistributor\",{attrs:{\"slot-key\":s.$parent.slotKey}},[a(\"h1\",{attrs:{id:\"特殊判题\"}},[a(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#特殊判题\"}},[s._v(\"#\")]),s._v(\" 特殊判题\")]),s._v(\" \"),a(\"h2\",{attrs:{id:\"什么是特殊判题\"}},[a(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#什么是特殊判题\"}},[s._v(\"#\")]),s._v(\" 什么是特殊判题?\")]),s._v(\" \"),a(\"p\",[s._v(\"特殊判题(Special Judge)是指OJ将使用一个特定的程序来判断提交的程序的输出是不是正确的,而不是单纯地看提交的程序的输出是否和标准输出一模一样。\")]),s._v(\" \"),a(\"h2\",{attrs:{id:\"使用场景\"}},[a(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#使用场景\"}},[s._v(\"#\")]),s._v(\" 使用场景\")]),s._v(\" \"),a(\"p\",[s._v(\"一般使用Special Judge都是因为题目的答案不唯一,更具体一点说的话一般是两种情况:\")]),s._v(\" \"),a(\"ul\",[a(\"li\",[s._v(\"题目最终要求输出一个解决方案,而且这个解决方案可能不唯一。\")]),s._v(\" \"),a(\"li\",[s._v(\"题目最终要求输出一个浮点数,而且会告诉只要答案和标准答案相差不超过某个较小的数就可以,比如0.01。这种情况保留3位小数、4位小数等等都是可以的,而且多保留几位小数也没什么坏处。\")])]),s._v(\" \"),a(\"h2\",{attrs:{id:\"例子\"}},[a(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#例子\"}},[s._v(\"#\")]),s._v(\" 例子:\")]),s._v(\" \"),a(\"p\",[s._v(\"在创建题目的适合,选择开启特殊判题,编写特殊判题程序,然后编译通过便可。\")]),s._v(\" \"),a(\"p\",[a(\"strong\",[s._v(\"注意:用户的输出数据以stdin流输入道spj程序里面,也就是可以直接用scanf或cin等获取用户的输出数据,具体形式跟用户程序的输入数据获取一样。\")])]),s._v(\" \"),a(\"blockquote\",[a(\"p\",[s._v(\"后台对题目使用特殊判题时,请参考以下程序例子 判断精度\")])]),s._v(\" \"),a(\"div\",{staticClass:\"language-cpp line-numbers-mode\"},[a(\"pre\",{pre:!0,attrs:{class:\"language-cpp\"}},[a(\"code\",[a(\"span\",{pre:!0,attrs:{class:\"token macro property\"}},[a(\"span\",{pre:!0,attrs:{class:\"token directive-hash\"}},[s._v(\"#\")]),a(\"span\",{pre:!0,attrs:{class:\"token directive keyword\"}},[s._v(\"include\")]),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v(\"\")])]),s._v(\"\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token macro property\"}},[a(\"span\",{pre:!0,attrs:{class:\"token directive-hash\"}},[s._v(\"#\")]),a(\"span\",{pre:!0,attrs:{class:\"token directive keyword\"}},[s._v(\"include\")]),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v(\"\")])]),s._v(\"\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token macro property\"}},[a(\"span\",{pre:!0,attrs:{class:\"token directive-hash\"}},[s._v(\"#\")]),a(\"span\",{pre:!0,attrs:{class:\"token directive keyword\"}},[s._v(\"define\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token macro-name\"}},[s._v(\"AC\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token expression\"}},[a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"100\")])])]),s._v(\"\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token macro property\"}},[a(\"span\",{pre:!0,attrs:{class:\"token directive-hash\"}},[s._v(\"#\")]),a(\"span\",{pre:!0,attrs:{class:\"token directive keyword\"}},[s._v(\"define\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token macro-name\"}},[s._v(\"WA\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token expression\"}},[a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"101\")])])]),s._v(\"\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token macro property\"}},[a(\"span\",{pre:!0,attrs:{class:\"token directive-hash\"}},[s._v(\"#\")]),a(\"span\",{pre:!0,attrs:{class:\"token directive keyword\"}},[s._v(\"define\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token macro-name\"}},[s._v(\"ERROR\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token expression\"}},[a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"102\")])])]),s._v(\"\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"using\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"namespace\")]),s._v(\" std\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n\\n\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"int\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"spj\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"(\")]),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"int\")]),s._v(\" user_output\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" FILE \"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"*\")]),s._v(\"output\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\")\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"void\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"close_file\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"(\")]),s._v(\"FILE \"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"*\")]),s._v(\"f\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\")\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"if\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"(\")]),s._v(\"f \"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"!=\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token constant\"}},[s._v(\"NULL\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\")\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"fclose\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"(\")]),s._v(\"f\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\")\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"int\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"main\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"(\")]),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"int\")]),s._v(\" argc\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"char\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"*\")]),s._v(\"args\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"[\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"]\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\")\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"if\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"(\")]),s._v(\"argc \"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"!=\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"3\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\")\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"return\")]),s._v(\" ERROR\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"/**\\n input:输入\\n output:样例的输出\\n user_output:用户的输出\\n **/\")]),s._v(\"\\n FILE \"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"*\")]),s._v(\"input \"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"=\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"fopen\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"(\")]),s._v(\"args\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"[\")]),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"1\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"]\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"r\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\")\")]),s._v(\"\\n FILE \"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"*\")]),s._v(\"output \"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"=\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"fopen\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"(\")]),s._v(\"args\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"[\")]),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"2\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"]\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"r\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\")\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n \\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"double\")]),s._v(\" std_out\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n\\t\"),a(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"fscanf\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"(\")]),s._v(\"output\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"%lf\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"&\")]),s._v(\"std_out\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\")\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n\\t\"),a(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"close_file\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"(\")]),s._v(\"output\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\")\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"close_file\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"(\")]),s._v(\"input\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\")\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n \\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"double\")]),s._v(\" user_output\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"//读入用户输出 \")]),s._v(\"\\n cin\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\">>\")]),s._v(\"user_output\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n\\t\"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"if\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"(\")]),a(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"fabs\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"(\")]),s._v(\"user_output \"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"-\")]),s._v(\" std_out\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\")\")]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"<=\")]),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"1e-6\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\")\")]),s._v(\"\\n\\t\\t\"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"return\")]),s._v(\" AC\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n\\t\"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"else\")]),s._v(\" \\n\\t\\t\"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"return\")]),s._v(\" WA\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n\")])]),s._v(\" \"),a(\"div\",{staticClass:\"line-numbers-wrapper\"},[a(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"2\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"3\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"4\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"5\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"6\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"7\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"8\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"9\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"10\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"11\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"12\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"13\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"14\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"15\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"16\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"17\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"18\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"19\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"20\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"21\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"22\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"23\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"24\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"25\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"26\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"27\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"28\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"29\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"30\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"31\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"32\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"33\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"34\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"35\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"36\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"37\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"38\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"39\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"40\")]),a(\"br\")])])])}),[],!1,null,null,null);t.default=e.exports}}]);","extractedComments":[]} \ No newline at end of file diff --git a/docs/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/92/68/20b98825b5ab1bcb992b09ccc37497dee997b3636ab2faa0785495574aab0a9bc7d65ffe0f546d7a84bfd35c1dd4f08aa0d81caa38245d421190ce8f6653 b/docs/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/92/68/20b98825b5ab1bcb992b09ccc37497dee997b3636ab2faa0785495574aab0a9bc7d65ffe0f546d7a84bfd35c1dd4f08aa0d81caa38245d421190ce8f6653 new file mode 100644 index 00000000..43da3ecd --- /dev/null +++ b/docs/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/92/68/20b98825b5ab1bcb992b09ccc37497dee997b3636ab2faa0785495574aab0a9bc7d65ffe0f546d7a84bfd35c1dd4f08aa0d81caa38245d421190ce8f6653 @@ -0,0 +1 @@ +{"code":"(window.webpackJsonp=window.webpackJsonp||[]).push([[16],{361:function(s,a,t){\"use strict\";t.r(a);var n=t(41),e=Object(n.a)({},(function(){var s=this,a=s.$createElement,t=s._self._c||a;return t(\"ContentSlotsDistributor\",{attrs:{\"slot-key\":s.$parent.slotKey}},[t(\"h1\",{attrs:{id:\"评测数据同步\"}},[t(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#评测数据同步\"}},[s._v(\"#\")]),s._v(\" 评测数据同步\")]),s._v(\" \"),t(\"h2\",{attrs:{id:\"一、常规部署\"}},[t(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#一、常规部署\"}},[s._v(\"#\")]),s._v(\" 一、常规部署\")]),s._v(\" \"),t(\"ol\",[t(\"li\",[t(\"p\",[s._v(\"在主后台服务开启rsync实现服务增量同步,本HOJ使用子服务器主动拉取最新评测数据的功能(可选择主服务推的功能,但对主服务器的功耗较大)\")])]),s._v(\" \"),t(\"li\",[t(\"p\",[s._v(\"首先在主服务器(运行后端服务)的服务器中配置,指令如下\")]),s._v(\" \"),t(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[t(\"code\",[t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"vim\")]),s._v(\" /etc/rsyncd/rsyncd.conf \"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# 新建配置文件\")]),s._v(\"\\n\")])]),s._v(\" \"),t(\"div\",{staticClass:\"line-numbers-wrapper\"},[t(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),t(\"br\")])]),t(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[t(\"code\",[t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# 将以下内容写入的rsyncd.conf文件里面 然后保存退出\")]),s._v(\"\\nport \"),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"=\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"873\")]),s._v(\"\\nuid \"),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"=\")]),s._v(\" root\\ngid \"),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"=\")]),s._v(\" root\\nuse \"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"chroot\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"=\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"yes\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token builtin class-name\"}},[s._v(\"read\")]),s._v(\" only \"),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"=\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"yes\")]),s._v(\"\\nlog \"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"file\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"=\")]),s._v(\" /hoj/log/rsyncd.log\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"[\")]),s._v(\"testcase\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"]\")]),s._v(\"\\npath \"),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"=\")]),s._v(\" /hoj/testcase/\\nlist \"),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"=\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"yes\")]),s._v(\"\\nauth \"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"users\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"=\")]),s._v(\" hojrsync\\nsecrets \"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"file\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"=\")]),s._v(\" /etc/rsyncd/rsyncd.passwd\\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(\"span\",{staticClass:\"line-number\"},[s._v(\"6\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"7\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"8\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"9\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"10\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"11\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"12\")]),t(\"br\")])]),t(\"p\",[s._v(\"再新建密码配置文件\")]),s._v(\" \"),t(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[t(\"code\",[t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"vim\")]),s._v(\" /etc/rsyncd/rsyncd.passwd\\n\")])]),s._v(\" \"),t(\"div\",{staticClass:\"line-numbers-wrapper\"},[t(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),t(\"br\")])]),t(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[t(\"code\",[t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# 将以下内容写入rsyncd.passwd文件里面,冒号后面的密码可用自定义,然后保存退出。\")]),s._v(\"\\nhojrsync:123456\\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(\"p\",[s._v(\"修改密码配置文件的权限为600\")]),s._v(\" \"),t(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[t(\"code\",[t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"chmod\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"600\")]),s._v(\" /etc/rsyncd/rsyncd.passwd\\n\")])]),s._v(\" \"),t(\"div\",{staticClass:\"line-numbers-wrapper\"},[t(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),t(\"br\")])]),t(\"p\",[s._v(\"然后使用命令,使用后台守护进程运行rsync\")]),s._v(\" \"),t(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[t(\"code\",[t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"rsync\")]),s._v(\" --daemon --config\"),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"=\")]),s._v(\"/etc/rsyncd/rsyncd.conf\\n\")])]),s._v(\" \"),t(\"div\",{staticClass:\"line-numbers-wrapper\"},[t(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),t(\"br\")])]),t(\"p\",[s._v(\"设置开启自启动\")]),s._v(\" \"),t(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[t(\"code\",[t(\"span\",{pre:!0,attrs:{class:\"token builtin class-name\"}},[s._v(\"echo\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"/usr/bin/rsync --daemon --config=/etc/rsyncd/rsyncd.conf\"')]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\">>\")]),s._v(\" /etc/rc.local\\n\")])]),s._v(\" \"),t(\"div\",{staticClass:\"line-numbers-wrapper\"},[t(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),t(\"br\")])])]),s._v(\" \"),t(\"li\",[t(\"p\",[s._v(\"之后在运行JudgeServer判题服务的服务器上使用rsync每60秒同步一次指定文件夹的评测数据(同步周期可自己改)\")]),s._v(\" \"),t(\"p\",[s._v(\"新建密码配置文件,同时写入与主服务端的rsync一样的密码\")]),s._v(\" \"),t(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[t(\"code\",[t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"vim\")]),s._v(\" /etc/rsyncd/rsyncd.passwd\\n\")])]),s._v(\" \"),t(\"div\",{staticClass:\"line-numbers-wrapper\"},[t(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),t(\"br\")])]),t(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[t(\"code\",[t(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"123456\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# 保存退出\")]),s._v(\"\\n\")])]),s._v(\" \"),t(\"div\",{staticClass:\"line-numbers-wrapper\"},[t(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),t(\"br\")])]),t(\"p\",[s._v(\"修改密码配置文件的权限为600\")]),s._v(\" \"),t(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[t(\"code\",[t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"chmod\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"600\")]),s._v(\" /etc/rsyncd/rsyncd.passwd\\n\")])]),s._v(\" \"),t(\"div\",{staticClass:\"line-numbers-wrapper\"},[t(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),t(\"br\")])]),t(\"p\",[s._v(\"然后编写sh文件\")]),s._v(\" \"),t(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[t(\"code\",[t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"vim\")]),s._v(\" /etc/rsyncd/rsyncd_slave.sh\\n\")])]),s._v(\" \"),t(\"div\",{staticClass:\"line-numbers-wrapper\"},[t(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),t(\"br\")])]),t(\"p\",[s._v(\"注意${ip}写自己主服务器的ip\")]),s._v(\" \"),t(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[t(\"code\",[t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"while\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token boolean\"}},[s._v(\"true\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"do\")]),s._v(\"\\n \\t\"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"rsync\")]),s._v(\" -avz --delete --progress --password-file\"),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"=\")]),s._v(\"/etc/rsyncd/rsyncd.passwd hojrsync@\"),t(\"span\",{pre:!0,attrs:{class:\"token variable\"}},[s._v(\"${ip}\")]),s._v(\"::testcase /hoj/testcase \"),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\">>\")]),s._v(\" /hoj/log/rsync_slave.log\\n \\t\"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"sleep\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"60\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"done\")]),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(\"p\",[s._v(\"使用 nohup后台运行即可\")]),s._v(\" \"),t(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[t(\"code\",[t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"nohup\")]),s._v(\" /etc/rsyncd/rsyncd_slave.sh \"),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"&\")]),s._v(\"\\n\")])]),s._v(\" \"),t(\"div\",{staticClass:\"line-numbers-wrapper\"},[t(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),t(\"br\")])])])]),s._v(\" \"),t(\"h2\",{attrs:{id:\"二、docker部署\"}},[t(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#二、docker部署\"}},[s._v(\"#\")]),s._v(\" 二、docker部署\")]),s._v(\" \"),t(\"h3\",{attrs:{id:\"前言\"}},[t(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#前言\"}},[s._v(\"#\")]),s._v(\" 前言\")]),s._v(\" \"),t(\"p\",[s._v(\"直接下载部署项目,进入到当前文件夹执行打包命令\")]),s._v(\" \"),t(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[t(\"code\",[t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"git\")]),s._v(\" clone https://gitee.com/himitzh0730/hoj-deploy.git \"),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"&&\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token builtin class-name\"}},[s._v(\"cd\")]),s._v(\" hoj-deploy/src/rsync\\n\")])]),s._v(\" \"),t(\"div\",{staticClass:\"line-numbers-wrapper\"},[t(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),t(\"br\")])]),t(\"p\",[s._v(\"当前文件夹为打包\"),t(\"code\",[s._v(\"hoj-rsync\")]),s._v(\"镜像的相关文件,将这些文件复制到同一个文件夹内,之后执行以下命令进行打包成镜像.\")]),s._v(\" \"),t(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[t(\"code\",[s._v(\"docker build -t hoj-rsync \"),t(\"span\",{pre:!0,attrs:{class:\"token builtin class-name\"}},[s._v(\".\")]),s._v(\"\\n\")])]),s._v(\" \"),t(\"div\",{staticClass:\"line-numbers-wrapper\"},[t(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),t(\"br\")])]),t(\"p\",[t(\"strong\",[s._v(\"该服务用于测试用例数据在不同服务器之间的同步\")])]),s._v(\" \"),t(\"p\",[s._v(\"docker run启动\")]),s._v(\" \"),t(\"ul\",[t(\"li\",[t(\"p\",[s._v(\"主服务器(Backend所在服务器)\")]),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 hoj-rsync \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"\\\\\")]),s._v(\"\\n-v ./hoj/testcase:/hoj/testcase:ro \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"\\\\\")]),s._v(\"\\n-e \"),t(\"span\",{pre:!0,attrs:{class:\"token assign-left variable\"}},[s._v(\"RSYNC_MODE\")]),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"=\")]),s._v(\"master \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"\\\\\")]),s._v(\"\\n-e \"),t(\"span\",{pre:!0,attrs:{class:\"token assign-left variable\"}},[s._v(\"RSYNC_USER\")]),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"=\")]),s._v(\"hojrsync \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"\\\\\")]),s._v(\"\\n-e \"),t(\"span\",{pre:!0,attrs:{class:\"token assign-left variable\"}},[s._v(\"RSYNC_PASSWORD\")]),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"=\")]),s._v(\"hoj123456 \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"\\\\\")]),s._v(\"\\n-p \"),t(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"873\")]),s._v(\":873 \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"\\\\\")]),s._v(\"\\n--restart\"),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"=\")]),s._v(\"always \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"\\\\\")]),s._v(\"\\nhoj-rsync\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# registry.cn-shenzhen.aliyuncs.com/hcode/hoj_rsync:1.0\")]),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(\"span\",{staticClass:\"line-number\"},[s._v(\"6\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"7\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"8\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"9\")]),t(\"br\")])])]),s._v(\" \"),t(\"li\",[t(\"p\",[s._v(\"从服务器(Judgeserver所在的服务器)\")]),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 hoj-rsync \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"\\\\\")]),s._v(\"\\n-v ./hoj/testcase:/hoj/testcase \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"\\\\\")]),s._v(\"\\n-e \"),t(\"span\",{pre:!0,attrs:{class:\"token assign-left variable\"}},[s._v(\"RSYNC_MODE\")]),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"=\")]),s._v(\"slave \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"\\\\\")]),s._v(\"\\n-e \"),t(\"span\",{pre:!0,attrs:{class:\"token assign-left variable\"}},[s._v(\"RSYNC_USER\")]),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"=\")]),s._v(\"hojrsync \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"\\\\\")]),s._v(\"\\n-e \"),t(\"span\",{pre:!0,attrs:{class:\"token assign-left variable\"}},[s._v(\"RSYNC_PASSWORD\")]),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"=\")]),s._v(\"hoj123456 \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"\\\\\")]),s._v(\"\\n-e \"),t(\"span\",{pre:!0,attrs:{class:\"token assign-left variable\"}},[s._v(\"RSYNC_MASTER_ADDR\")]),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"=\")]),s._v(\"master_server_ip \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"\\\\\")]),s._v(\"\\n-p \"),t(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"873\")]),s._v(\":873 \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"\\\\\")]),s._v(\"\\n--restart\"),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"=\")]),s._v(\"always \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"\\\\\")]),s._v(\"\\nhoj-rsync\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# registry.cn-shenzhen.aliyuncs.com/hcode/hoj_rsync:1.0\")]),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(\"span\",{staticClass:\"line-number\"},[s._v(\"6\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"7\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"8\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"9\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"10\")]),t(\"br\")])])])]),s._v(\" \"),t(\"p\",[s._v(\"docker-compose启动\")]),s._v(\" \"),t(\"ul\",[t(\"li\",[t(\"p\",[s._v(\"主服务器(Backend所在服务器)\")]),s._v(\" \"),t(\"div\",{staticClass:\"language-yaml line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-yaml\"}},[t(\"code\",[t(\"span\",{pre:!0,attrs:{class:\"token key atrule\"}},[s._v(\"version\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"3\"')]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token key atrule\"}},[s._v(\"services\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token key atrule\"}},[s._v(\"hoj-rsync-master\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# image: registry.cn-shenzhen.aliyuncs.com/hcode/hoj_rsync:1.0\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token key atrule\"}},[s._v(\"image\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\" hoj\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\"rsync\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token key atrule\"}},[s._v(\"container_name\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\" hoj\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\"rsync\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\"master\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token key atrule\"}},[s._v(\"volumes\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\" ./hoj/testcase\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\"/hoj/testcase\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\"ro\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token key atrule\"}},[s._v(\"environment\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\" RSYNC_MODE=master \"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# 当前为slave主服务\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\" RSYNC_USER=hojrsync \"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# 请勿修改\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\" RSYNC_PASSWORD=hoj123456 \"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# 请修改数据同步密码\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token key atrule\"}},[s._v(\"ports\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"0.0.0.0:873:873\"')]),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(\"span\",{staticClass:\"line-number\"},[s._v(\"6\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"7\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"8\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"9\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"10\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"11\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"12\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"13\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"14\")]),t(\"br\")])])]),s._v(\" \"),t(\"li\",[t(\"p\",[s._v(\"从服务器(Judgeserver所在的服务器)\")]),s._v(\" \"),t(\"div\",{staticClass:\"language-yaml line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-yaml\"}},[t(\"code\",[t(\"span\",{pre:!0,attrs:{class:\"token key atrule\"}},[s._v(\"version\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"3\"')]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token key atrule\"}},[s._v(\"services\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token key atrule\"}},[s._v(\"hoj-rsync-slave\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# image: registry.cn-shenzhen.aliyuncs.com/hcode/hoj_rsync:1.0\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token key atrule\"}},[s._v(\"image\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\" hoj\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\"rsync\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token key atrule\"}},[s._v(\"container_name\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\" hoj\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\"rsync\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\"slave\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token key atrule\"}},[s._v(\"restart\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\" always\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token key atrule\"}},[s._v(\"volumes\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\" ./judge/test_case\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\"/hoj/testcase\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\" ./judge/log\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\"/hoj/log\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token key atrule\"}},[s._v(\"environment\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\" RSYNC_MODE=slave \"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# 当前为slave从服务\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\" RSYNC_USER=hojrsync \"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# 请勿修改\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\" RSYNC_PASSWORD=hoj123456 \"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# 与主服务器的rsync的密码一致\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\" RSYNC_MASTER_ADDR=master_server_ip \"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# 主服务器ip\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token key atrule\"}},[s._v(\"ports\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"0.0.0.0:873:873\"')]),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(\"span\",{staticClass:\"line-number\"},[s._v(\"6\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"7\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"8\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"9\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"10\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"11\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"12\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"13\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"14\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"15\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"16\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"17\")]),t(\"br\")])])])]),s._v(\" \"),t(\"h3\",{attrs:{id:\"文件介绍\"}},[t(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#文件介绍\"}},[s._v(\"#\")]),s._v(\" 文件介绍\")]),s._v(\" \"),t(\"h4\",{attrs:{id:\"_1-rsync-conf\"}},[t(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#_1-rsync-conf\"}},[s._v(\"#\")]),s._v(\" 1. rsync.conf\")]),s._v(\" \"),t(\"p\",[s._v(\"主服务器的rsync配置文件\")]),s._v(\" \"),t(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[t(\"code\",[s._v(\"port \"),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"=\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"873\")]),s._v(\"\\nuid \"),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"=\")]),s._v(\" root\\ngid \"),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"=\")]),s._v(\" root\\nuse \"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"chroot\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"=\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"yes\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token builtin class-name\"}},[s._v(\"read\")]),s._v(\" only \"),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"=\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"yes\")]),s._v(\"\\nlog \"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"file\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"=\")]),s._v(\" /hoj/log/rsyncd.log\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"[\")]),s._v(\"testcase\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"]\")]),s._v(\"\\npath \"),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"=\")]),s._v(\" /hoj/testcase/\\nlist \"),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"=\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"yes\")]),s._v(\"\\nauth \"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"users\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"=\")]),s._v(\" hojrsync\\nsecrets \"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"file\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"=\")]),s._v(\" /hoj/rsyncd/rsyncd.passwd\\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(\"span\",{staticClass:\"line-number\"},[s._v(\"6\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"7\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"8\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"9\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"10\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"11\")]),t(\"br\")])]),t(\"h4\",{attrs:{id:\"_2-run-sh\"}},[t(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#_2-run-sh\"}},[s._v(\"#\")]),s._v(\" 2. run.sh\")]),s._v(\" \"),t(\"p\",[s._v(\"根据\"),t(\"code\",[s._v(\"$RSYNC_MODE\")]),s._v(\"环境变量启动不同模式的rsync服务\")]),s._v(\" \"),t(\"div\",{staticClass:\"language-bash line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-bash\"}},[t(\"code\",[t(\"span\",{pre:!0,attrs:{class:\"token shebang important\"}},[s._v(\"#!/usr/bin/bash\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"if\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"[\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"'),t(\"span\",{pre:!0,attrs:{class:\"token variable\"}},[s._v(\"$RSYNC_MODE\")]),s._v('\"')]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"==\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"master\"')]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"]\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"then\")]),s._v(\"\\n\\t\"),t(\"span\",{pre:!0,attrs:{class:\"token builtin class-name\"}},[s._v(\"echo\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"'),t(\"span\",{pre:!0,attrs:{class:\"token variable\"}},[s._v(\"$RSYNC_USER\")]),s._v(\":\"),t(\"span\",{pre:!0,attrs:{class:\"token variable\"}},[s._v(\"$RSYNC_PASSWORD\")]),s._v('\"')]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\">\")]),s._v(\" /hoj/rsyncd/rsyncd_master.passwd\\n\\t\"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"chmod\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"600\")]),s._v(\" /hoj/rsyncd/rsyncd_master.passwd\\n\\t\"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"rsync\")]),s._v(\" --daemon --config\"),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"=\")]),s._v(\"/hoj/rsyncd/rsyncd.conf\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"else\")]),s._v(\"\\n\\t\"),t(\"span\",{pre:!0,attrs:{class:\"token builtin class-name\"}},[s._v(\"echo\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"'),t(\"span\",{pre:!0,attrs:{class:\"token variable\"}},[s._v(\"$RSYNC_PASSWORD\")]),s._v('\"')]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\">\")]),s._v(\" /hoj/rsyncd/rsyncd_slave.passwd\\n\\t\"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"chmod\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"600\")]),s._v(\" /hoj/rsyncd/rsyncd_slave.passwd\\n\\t\"),t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"while\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token boolean\"}},[s._v(\"true\")]),s._v(\"\\n\\t\"),t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"do\")]),s._v(\"\\n\\t\\t\"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"rsync\")]),s._v(\" -avz --delete --progress --password-file\"),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"=\")]),s._v(\"/hoj/rsyncd/rsyncd_slave.passwd \"),t(\"span\",{pre:!0,attrs:{class:\"token variable\"}},[s._v(\"$RSYNC_USER\")]),s._v(\"@\"),t(\"span\",{pre:!0,attrs:{class:\"token variable\"}},[s._v(\"$RSYNC_MASTER_ADDR\")]),s._v(\"::testcase /hoj/testcase \"),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\">>\")]),s._v(\" /hoj/log/rsync_slave.log\\n\\t\\t\"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"sleep\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"100\")]),s._v(\"\\n\\t\"),t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"done\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"fi\")]),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(\"span\",{staticClass:\"line-number\"},[s._v(\"6\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"7\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"8\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"9\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"10\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"11\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"12\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"13\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"14\")]),t(\"br\")])]),t(\"h4\",{attrs:{id:\"_3-dockerfile\"}},[t(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#_3-dockerfile\"}},[s._v(\"#\")]),s._v(\" 3. Dockerfile\")]),s._v(\" \"),t(\"div\",{staticClass:\"language-dockerfile line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-dockerfile\"}},[t(\"code\",[t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"FROM\")]),s._v(\" ubuntu\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\"18.04\\n\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"RUN\")]),s._v(\" apt\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\"get update && apt\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\"get \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\"y install rsync\\n\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"RUN\")]),s._v(\" mkdir \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\"p /hoj/rsyncd\\n\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"COPY\")]),s._v(\" run.sh /hoj/rsyncd/run.sh\\n\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"COPY\")]),s._v(\" rsyncd.conf /hoj/rsyncd/rsyncd.conf\\n\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"CMD\")]),s._v(\" /bin/bash /hoj/rsyncd/run.sh\\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(\"span\",{staticClass:\"line-number\"},[s._v(\"6\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"7\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"8\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"9\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"10\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"11\")]),t(\"br\")])])])}),[],!1,null,null,null);a.default=e.exports}}]);","extractedComments":[]} \ No newline at end of file diff --git a/docs/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/93/e3/6fb921439ec1d48a8fe0635179ae45471413887506f012aa889ab26edba1a269953c7cc94c2bcd3a95d7134fb36f849f60734da2ce3d7b2dd2b7c6b05e5d b/docs/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/93/e3/6fb921439ec1d48a8fe0635179ae45471413887506f012aa889ab26edba1a269953c7cc94c2bcd3a95d7134fb36f849f60734da2ce3d7b2dd2b7c6b05e5d new file mode 100644 index 00000000..1abfaea0 --- /dev/null +++ b/docs/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/93/e3/6fb921439ec1d48a8fe0635179ae45471413887506f012aa889ab26edba1a269953c7cc94c2bcd3a95d7134fb36f849f60734da2ce3d7b2dd2b7c6b05e5d @@ -0,0 +1 @@ +{"code":"(window.webpackJsonp=window.webpackJsonp||[]).push([[25],{374:function(s,t,a){\"use strict\";a.r(t);var n=a(41),r=Object(n.a)({},(function(){var s=this,t=s.$createElement,a=s._self._c||t;return a(\"ContentSlotsDistributor\",{attrs:{\"slot-key\":s.$parent.slotKey}},[a(\"h1\",{attrs:{id:\"题目管理\"}},[a(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#题目管理\"}},[s._v(\"#\")]),s._v(\" 题目管理\")]),s._v(\" \"),a(\"h2\",{attrs:{id:\"一、hoj题目\"}},[a(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#一、hoj题目\"}},[s._v(\"#\")]),s._v(\" 一、HOJ题目\")]),s._v(\" \"),a(\"p\",[a(\"img\",{attrs:{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:\"在这里插入图片描述\"}})]),s._v(\" \"),a(\"h4\",{attrs:{id:\"_1-导出题目\"}},[a(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#_1-导出题目\"}},[s._v(\"#\")]),s._v(\" 1. 导出题目\")]),s._v(\" \"),a(\"p\",[s._v(\"点击选择需要的题目,便可以批量导出成一个zip压缩包,分别对应一个json格式的题目数据,一个对应名字的文件夹存放评测数据文件,具体的文件结构如下:\")]),s._v(\" \"),a(\"div\",{staticClass:\"language- line-numbers-mode\"},[a(\"pre\",{pre:!0,attrs:{class:\"language-text\"}},[a(\"code\",[s._v(\"+-- problem_1000.json\\n+-- problem_1000\\n| +-- 1.in\\n| +-- 1.out\\n| +-- ....\\n+-- problem_1001.json\\n+-- problem_1001\\n| +-- 1.in\\n| +-- 1.out\\n| +-- ....\\n\")])]),s._v(\" \"),a(\"div\",{staticClass:\"line-numbers-wrapper\"},[a(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"2\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"3\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"4\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"5\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"6\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"7\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"8\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"9\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"10\")]),a(\"br\")])]),a(\"h4\",{attrs:{id:\"_2-导入题目\"}},[a(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#_2-导入题目\"}},[s._v(\"#\")]),s._v(\" 2. 导入题目\")]),s._v(\" \"),a(\"p\",[s._v(\"选择需要导入的题目数据zip压缩包,注意\"),a(\"strong\",[s._v(\"不要多一层文件夹进行压缩\")]),s._v(\",\"),a(\"strong\",[s._v(\"请保证题目json文件的名字与其对应的存放评测数据的文件夹名字一致\")]),s._v(\",具体文件格式如下:\")]),s._v(\" \"),a(\"div\",{staticClass:\"language- line-numbers-mode\"},[a(\"pre\",{pre:!0,attrs:{class:\"language-text\"}},[a(\"code\",[s._v(\"+-- problem_1000.json\\n+-- problem_1000\\n| +-- 1.in\\n| +-- 1.out\\n| +-- ....\\n+-- problem_1001.json\\n+-- problem_1001\\n| +-- 1.in\\n| +-- 1.out\\n| +-- ....\\n\")])]),s._v(\" \"),a(\"div\",{staticClass:\"line-numbers-wrapper\"},[a(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"2\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"3\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"4\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"5\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"6\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"7\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"8\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"9\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"10\")]),a(\"br\")])]),a(\"h4\",{attrs:{id:\"_3-题目的json文件格式\"}},[a(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#_3-题目的json文件格式\"}},[s._v(\"#\")]),s._v(\" 3. 题目的json文件格式\")]),s._v(\" \"),a(\"p\",[s._v(\"请严格按照以下格式,才可以正常导入。\")]),s._v(\" \"),a(\"div\",{staticClass:\"language-json line-numbers-mode\"},[a(\"pre\",{pre:!0,attrs:{class:\"language-json\"}},[a(\"code\",[a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"// 题目支持的语言如下,可增加与减少\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"languages\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"[\")]),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"C\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"C++\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"Java\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"Python3\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"Python2\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"Golang\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"C#\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"]\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"samples\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"[\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"output\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"1.in\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"input\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"1.out\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v('//\"score\": 10 // 如果是io题目需要给测试点加得分')]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"output\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"2.in\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"input\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"2.out\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v('//\"score\": 10 // 如果是io题目需要给测试点加得分')]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"]\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"tags\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"[\")]),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"测试题\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"测试\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"]\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"// 题目标签,一般不超过三个 \")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"problem\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"auth\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"1\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"// 1 公开赛\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"author\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"admin\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"// 题目上传的作者,请使用用户名\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"isRemote\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token boolean\"}},[s._v(\"false\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"// 均为非VJ题目,不用修改\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"problemId\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"HOJ-1010\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"// 题目的展示id\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"description\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"// 题目的描述,支持markdown语法\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"source\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"// 题目来源\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"title\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"// 题目标题\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"type\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"0\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"// 0为ACM题目,1为OI题目\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"timeLimit\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"1000\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"// 时间限制 单位是ms\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"memoryLimit\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"256\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"// 空间限制 单位是mb\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"input\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"// 题目的输入描述\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"output\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"// 题目的输出描述\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"difficulty\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"0\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"// 题目难度,1为简单,2为中等,3为困难\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"examples\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"// 题目的题面样例,格式为输入输出输入输出\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"ioScore\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"100\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"// OI题目总得分,与测试点总分一致\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"codeShare\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token boolean\"}},[s._v(\"true\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"// 该题目是否允许用户共享其提交的代码 \")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"hint\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"// 题目提示\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"isRemoveEndBlank\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token boolean\"}},[s._v(\"true\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"// 评测数据的输出是否自动去掉行末空格\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"openCaseResult\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token boolean\"}},[s._v(\"true\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"// 是否允许用户看到各个评测点的结果\")]),s._v(\"\\n \\t\"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v('// \"spjLanguage:\"C\" // 特殊判题的程序代码语言')]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v('// \"spjCode\":\"\" // 特殊判题的代码')]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"isSpj\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token boolean\"}},[s._v(\"false\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"// 是否为特殊判题\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"codeTemplates\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"[\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"code\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"// 模板代码\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"language\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"C\"')]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"// 模板代码语言\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"code\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"// 模板代码\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"language\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"C++\"')]),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"// 模板代码语言\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"]\")]),s._v(\"\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n\")])]),s._v(\" \"),a(\"div\",{staticClass:\"line-numbers-wrapper\"},[a(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"2\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"3\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"4\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"5\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"6\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"7\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"8\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"9\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"10\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"11\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"12\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"13\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"14\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"15\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"16\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"17\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"18\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"19\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"20\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"21\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"22\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"23\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"24\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"25\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"26\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"27\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"28\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"29\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"30\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"31\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"32\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"33\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"34\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"35\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"36\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"37\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"38\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"39\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"40\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"41\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"42\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"43\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"44\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"45\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"46\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"47\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"48\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"49\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"50\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"51\")]),a(\"br\")])]),a(\"h2\",{attrs:{id:\"二、导入qdoj的题目\"}},[a(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#二、导入qdoj的题目\"}},[s._v(\"#\")]),s._v(\" 二、导入qdoj的题目\")]),s._v(\" \"),a(\"p\",[s._v(\"请严格按照青岛oj的后台导出的压缩文件来上传。\")]),s._v(\" \"),a(\"p\",[a(\"img\",{attrs:{src:\"https://img-blog.csdnimg.cn/20210530212411781.png\",alt:\"在这里插入图片描述\"}})]),s._v(\" \"),a(\"h2\",{attrs:{id:\"三、导入其它oj题目\"}},[a(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#三、导入其它oj题目\"}},[s._v(\"#\")]),s._v(\" 三、导入其它OJ题目\")]),s._v(\" \"),a(\"p\",[s._v(\"导入HDU、Codeforces题目,只需提供该题目的题号便可一键导入\")]),s._v(\" \"),a(\"p\",[a(\"strong\",[s._v(\"管理员进入后台,点击题目列表\")])]),s._v(\" \"),a(\"p\",[a(\"img\",{attrs:{src:\"https://img-blog.csdnimg.cn/20210523223454472.png#pic_center\",alt:\"在这里插入图片描述\"}})]),s._v(\" \"),a(\"p\",[s._v(\"然后添加上方的添加按钮\")]),s._v(\" \"),a(\"p\",[a(\"img\",{attrs:{src:\"https://img-blog.csdnimg.cn/20210523222914722.png\",alt:\"在这里插入图片描述\"}})]),s._v(\" \"),a(\"p\",[a(\"strong\",[s._v(\"在弹出窗中选择OJ名字及题号,便可导入\")])]),s._v(\" \"),a(\"p\",[a(\"img\",{attrs:{src:\"https://img-blog.csdnimg.cn/20210523223042100.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1MzA5Nw==,size_16,color_FFFFFF,t_70\",alt:\"在这里插入图片描述\"}})]),s._v(\" \"),a(\"p\",[a(\"strong\",[s._v(\"注意:\")])]),s._v(\" \"),a(\"ul\",[a(\"li\",[s._v(\"HDU的题号一般是 1000以上的数字\")]),s._v(\" \"),a(\"li\",[s._v(\"Codeforces的题号是1000A、1000B、这种数字加大写英文字母的格式\")])])])}),[],!1,null,null,null);t.default=r.exports}}]);","extractedComments":[]} \ No newline at end of file diff --git a/docs/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/9e/be/52d35b1928eae92d808379221eed836217fd93a3586ad08f6f389e827ef2d369b8cb954de8ee8b3acf6e5fa9d90d4d15ab5317a77968b6a2e69d99c1ca54 b/docs/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/9e/be/52d35b1928eae92d808379221eed836217fd93a3586ad08f6f389e827ef2d369b8cb954de8ee8b3acf6e5fa9d90d4d15ab5317a77968b6a2e69d99c1ca54 new file mode 100644 index 00000000..9a125385 --- /dev/null +++ b/docs/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/9e/be/52d35b1928eae92d808379221eed836217fd93a3586ad08f6f389e827ef2d369b8cb954de8ee8b3acf6e5fa9d90d4d15ab5317a77968b6a2e69d99c1ca54 @@ -0,0 +1 @@ +{"code":"(window.webpackJsonp=window.webpackJsonp||[]).push([[20],{368: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(\"h2\",{attrs:{id:\"什么是hoj\"}},[a(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#什么是hoj\"}},[t._v(\"#\")]),t._v(\" 什么是HOJ?\")]),t._v(\" \"),a(\"p\",[t._v(\"HOJ,全称 Hcode Online Judge,是基于前后端分离,分布式架构的在线测评系统。\")]),t._v(\" \"),a(\"p\",[a(\"a\",{attrs:{href:\"http://openjdk.java.net/\",target:\"_blank\",rel:\"noopener noreferrer\"}},[a(\"img\",{attrs:{src:\"https://img.shields.io/badge/Java-1.8-informational\",alt:\"Java\"}}),a(\"OutboundLink\")],1),t._v(\" \"),a(\"a\",{attrs:{href:\"https://spring.io/projects/spring-boot\",target:\"_blank\",rel:\"noopener noreferrer\"}},[a(\"img\",{attrs:{src:\"https://img.shields.io/badge/Spring%20Boot-2.2.6.RELEASE-success\",alt:\"Spring Boot\"}}),a(\"OutboundLink\")],1),t._v(\" \"),a(\"a\",{attrs:{href:\"https://spring.io/projects/spring-cloud-alibaba\",target:\"_blank\",rel:\"noopener noreferrer\"}},[a(\"img\",{attrs:{src:\"https://img.shields.io/badge/Spring%20Cloud%20Alibaba-2.2.1.RELEASE-success\",alt:\"SpringCloud Alibaba\"}}),a(\"OutboundLink\")],1),t._v(\" \"),a(\"a\",{attrs:{href:\"https://www.mysql.com/\",target:\"_blank\",rel:\"noopener noreferrer\"}},[a(\"img\",{attrs:{src:\"https://img.shields.io/badge/MySQL-8.0.19-blue\",alt:\"MySQL\"}}),a(\"OutboundLink\")],1),t._v(\" \"),a(\"a\",{attrs:{href:\"https://redis.io/\",target:\"_blank\",rel:\"noopener noreferrer\"}},[a(\"img\",{attrs:{src:\"https://img.shields.io/badge/Redis-5.0.9-red\",alt:\"Redis\"}}),a(\"OutboundLink\")],1),t._v(\" \"),a(\"a\",{attrs:{href:\"https://github.com/alibaba/nacos\",target:\"_blank\",rel:\"noopener noreferrer\"}},[a(\"img\",{attrs:{src:\"https://img.shields.io/badge/Nacos-1.4.1-%23267DF7\",alt:\"Nacos\"}}),a(\"OutboundLink\")],1),t._v(\" \"),a(\"a\",{attrs:{href:\"https://cn.vuejs.org/\",target:\"_blank\",rel:\"noopener noreferrer\"}},[a(\"img\",{attrs:{src:\"https://img.shields.io/badge/Vue-2.6.11-success\",alt:\"Vue\"}}),a(\"OutboundLink\")],1)]),t._v(\" \"),a(\"h2\",{attrs:{id:\"为什么要开发hoj\"}},[a(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#为什么要开发hoj\"}},[t._v(\"#\")]),t._v(\" 为什么要开发HOJ?\")]),t._v(\" \"),a(\"p\",[t._v(\"因为这是Himit_ZH的毕业设计。\")]),t._v(\" \"),a(\"h2\",{attrs:{id:\"hoj的特点\"}},[a(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#hoj的特点\"}},[t._v(\"#\")]),t._v(\" HOJ的特点\")]),t._v(\" \"),a(\"ul\",[a(\"li\",[t._v(\"适应:支持手机端,响应式布局\")]),t._v(\" \"),a(\"li\",[t._v(\"设计:界面简约大方\")]),t._v(\" \"),a(\"li\",[t._v(\"安全:判题使用 cgroup 隔离用户程序,杜绝卡评测;网站权限控制完善\")]),t._v(\" \"),a(\"li\",[t._v(\"扩展:支持分布式判题\")]),t._v(\" \"),a(\"li\",[t._v(\"简单:高度集中网站配置\")]),t._v(\" \"),a(\"li\",[t._v(\"功能:支持ACM、OI题目及比赛\")]),t._v(\" \"),a(\"li\",[t._v(\"多样:支持自身题目数据评测,也支持其它知名OJ(HDU、Codeforces)题目的爬取与提交\")])]),t._v(\" \"),a(\"h2\",{attrs:{id:\"截图\"}},[a(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#截图\"}},[t._v(\"#\")]),t._v(\" 截图\")]),t._v(\" \"),a(\"blockquote\",[a(\"p\",[t._v(\"首页页面\")])]),t._v(\" \"),a(\"p\",[a(\"img\",{attrs:{src:\"https://img-blog.csdnimg.cn/20210509232352226.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1MzA5Nw==,size_16,color_FFFFFF,t_70\",alt:\"首页\"}})]),t._v(\" \"),a(\"blockquote\",[a(\"p\",[t._v(\"题目列表页\")])]),t._v(\" \"),a(\"p\",[a(\"img\",{attrs:{src:\"https://img-blog.csdnimg.cn/20210509232501952.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1MzA5Nw==,size_16,color_FFFFFF,t_70\",alt:\"题目列表\"}})]),t._v(\" \"),a(\"blockquote\",[a(\"p\",[t._v(\"题目详情页\")])]),t._v(\" \"),a(\"p\",[a(\"img\",{attrs:{src:\"https://img-blog.csdnimg.cn/20210509232609398.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1MzA5Nw==,size_16,color_FFFFFF,t_70\",alt:\"题目详情页\"}})]),t._v(\" \"),a(\"blockquote\",[a(\"p\",[t._v(\"比赛列表页\")])]),t._v(\" \"),a(\"p\",[a(\"img\",{attrs:{src:\"https://img-blog.csdnimg.cn/20210509232701288.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1MzA5Nw==,size_16,color_FFFFFF,t_70\",alt:\"比赛列表\"}})]),t._v(\" \"),a(\"blockquote\",[a(\"p\",[t._v(\"比赛详情首页\")])]),t._v(\" \"),a(\"p\",[a(\"img\",{attrs:{src:\"https://img-blog.csdnimg.cn/20210509232843932.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1MzA5Nw==,size_16,color_FFFFFF,t_70#pic_center\",alt:\"比赛详情\"}})]),t._v(\" \"),a(\"blockquote\",[a(\"p\",[t._v(\"提交列表页\")])]),t._v(\" \"),a(\"p\",[a(\"img\",{attrs:{src:\"https://img-blog.csdnimg.cn/20210513134128914.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1MzA5Nw==,size_16,color_FFFFFF,t_70\",alt:\"在这里插入图片描述\"}})]),t._v(\" \"),a(\"blockquote\",[a(\"p\",[t._v(\"排行榜\")])]),t._v(\" \"),a(\"p\",[a(\"img\",{attrs:{src:\"https://cdn.jsdelivr.net/gh/HimitZH/CDN/images/hoj9.png\",alt:\"hoj9\"}})]),t._v(\" \"),a(\"blockquote\",[a(\"p\",[t._v(\"公共讨论区\")])]),t._v(\" \"),a(\"p\",[a(\"img\",{attrs:{src:\"https://img-blog.csdnimg.cn/20210513134216723.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1MzA5Nw==,size_16,color_FFFFFF,t_70\",alt:\"公共讨论区\"}})]),t._v(\" \"),a(\"blockquote\",[a(\"p\",[t._v(\"评论组件\")])]),t._v(\" \"),a(\"p\",[a(\"img\",{attrs:{src:\"https://img-blog.csdnimg.cn/20210513142826730.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1MzA5Nw==,size_16,color_FFFFFF,t_70#pic_center\",alt:\"评论组件\"}})]),t._v(\" \"),a(\"blockquote\",[a(\"p\",[t._v(\"个人信息页\")])]),t._v(\" \"),a(\"p\",[a(\"img\",{attrs:{src:\"https://img-blog.csdnimg.cn/20210509233300701.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1MzA5Nw==,size_16,color_FFFFFF,t_70\",alt:\"个人信息\"}})]),t._v(\" \"),a(\"blockquote\",[a(\"p\",[t._v(\"个人设置页\")])]),t._v(\" \"),a(\"p\",[a(\"img\",{attrs:{src:\"https://img-blog.csdnimg.cn/20210509233439791.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1MzA5Nw==,size_16,color_FFFFFF,t_70\",alt:\"个人设置\"}})]),t._v(\" \"),a(\"blockquote\",[a(\"p\",[t._v(\"管理后台首页\")])]),t._v(\" \"),a(\"p\",[a(\"img\",{attrs:{src:\"https://cdn.jsdelivr.net/gh/HimitZH/CDN/images/hoj5.png\",alt:\"hoj5\"}})]),t._v(\" \"),a(\"blockquote\",[a(\"p\",[t._v(\"部分手机端显示\")])]),t._v(\" \"),a(\"p\",[a(\"img\",{attrs:{src:\"https://img-blog.csdnimg.cn/20210509233756882.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1MzA5Nw==,size_16,color_FFFFFF,t_70\",alt:\"\"}})]),t._v(\" \"),a(\"p\",[a(\"img\",{attrs:{src:\"https://img-blog.csdnimg.cn/20210509233845230.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":[]} \ No newline at end of file diff --git a/docs/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/a0/1c/d579e84031b3e7907204268d7d9ee8affe9af70943a54ed2be7932dcc5233ea2a7c37d2297286b28a4b9eb23c0cda1f63b2fdebedf3790e0c6aa0a83dc32 b/docs/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/a0/1c/d579e84031b3e7907204268d7d9ee8affe9af70943a54ed2be7932dcc5233ea2a7c37d2297286b28a4b9eb23c0cda1f63b2fdebedf3790e0c6aa0a83dc32 new file mode 100644 index 00000000..d415a56e --- /dev/null +++ b/docs/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/a0/1c/d579e84031b3e7907204268d7d9ee8affe9af70943a54ed2be7932dcc5233ea2a7c37d2297286b28a4b9eb23c0cda1f63b2fdebedf3790e0c6aa0a83dc32 @@ -0,0 +1 @@ +{"code":"(window.webpackJsonp=window.webpackJsonp||[]).push([[27],{372:function(s,t,a){\"use strict\";a.r(t);var n=a(41),e=Object(n.a)({},(function(){var s=this,t=s.$createElement,a=s._self._c||t;return a(\"ContentSlotsDistributor\",{attrs:{\"slot-key\":s.$parent.slotKey}},[a(\"h1\",{attrs:{id:\"特殊判题\"}},[a(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#特殊判题\"}},[s._v(\"#\")]),s._v(\" 特殊判题\")]),s._v(\" \"),a(\"h2\",{attrs:{id:\"什么是特殊判题\"}},[a(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#什么是特殊判题\"}},[s._v(\"#\")]),s._v(\" 什么是特殊判题?\")]),s._v(\" \"),a(\"p\",[s._v(\"特殊判题(Special Judge)是指OJ将使用一个特定的程序来判断提交的程序的输出是不是正确的,而不是单纯地看提交的程序的输出是否和标准输出一模一样。\")]),s._v(\" \"),a(\"h2\",{attrs:{id:\"使用场景\"}},[a(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#使用场景\"}},[s._v(\"#\")]),s._v(\" 使用场景\")]),s._v(\" \"),a(\"p\",[s._v(\"一般使用Special Judge都是因为题目的答案不唯一,更具体一点说的话一般是两种情况:\")]),s._v(\" \"),a(\"ul\",[a(\"li\",[s._v(\"题目最终要求输出一个解决方案,而且这个解决方案可能不唯一。\")]),s._v(\" \"),a(\"li\",[s._v(\"题目最终要求输出一个浮点数,而且会告诉只要答案和标准答案相差不超过某个较小的数就可以,比如0.01。这种情况保留3位小数、4位小数等等都是可以的,而且多保留几位小数也没什么坏处。\")])]),s._v(\" \"),a(\"h2\",{attrs:{id:\"例子\"}},[a(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#例子\"}},[s._v(\"#\")]),s._v(\" 例子:\")]),s._v(\" \"),a(\"p\",[s._v(\"在创建题目的适合,选择开启特殊判题,编写特殊判题程序,然后编译通过便可。\")]),s._v(\" \"),a(\"p\",[a(\"strong\",[s._v(\"注意:用户的输出数据以stdin流输入道spj程序里面,也就是可以直接用scanf或cin等获取用户的输出数据,具体形式跟用户程序的输入数据获取一样。\")])]),s._v(\" \"),a(\"blockquote\",[a(\"p\",[s._v(\"后台对题目使用特殊判题时,请参考以下程序例子 判断精度\")])]),s._v(\" \"),a(\"div\",{staticClass:\"language-cpp line-numbers-mode\"},[a(\"pre\",{pre:!0,attrs:{class:\"language-cpp\"}},[a(\"code\",[a(\"span\",{pre:!0,attrs:{class:\"token macro property\"}},[a(\"span\",{pre:!0,attrs:{class:\"token directive-hash\"}},[s._v(\"#\")]),a(\"span\",{pre:!0,attrs:{class:\"token directive keyword\"}},[s._v(\"include\")]),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v(\"\")])]),s._v(\"\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token macro property\"}},[a(\"span\",{pre:!0,attrs:{class:\"token directive-hash\"}},[s._v(\"#\")]),a(\"span\",{pre:!0,attrs:{class:\"token directive keyword\"}},[s._v(\"include\")]),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v(\"\")])]),s._v(\"\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token macro property\"}},[a(\"span\",{pre:!0,attrs:{class:\"token directive-hash\"}},[s._v(\"#\")]),a(\"span\",{pre:!0,attrs:{class:\"token directive keyword\"}},[s._v(\"define\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token macro-name\"}},[s._v(\"AC\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token expression\"}},[a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"100\")])])]),s._v(\"\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token macro property\"}},[a(\"span\",{pre:!0,attrs:{class:\"token directive-hash\"}},[s._v(\"#\")]),a(\"span\",{pre:!0,attrs:{class:\"token directive keyword\"}},[s._v(\"define\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token macro-name\"}},[s._v(\"WA\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token expression\"}},[a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"101\")])])]),s._v(\"\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token macro property\"}},[a(\"span\",{pre:!0,attrs:{class:\"token directive-hash\"}},[s._v(\"#\")]),a(\"span\",{pre:!0,attrs:{class:\"token directive keyword\"}},[s._v(\"define\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token macro-name\"}},[s._v(\"ERROR\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token expression\"}},[a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"102\")])])]),s._v(\"\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"using\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"namespace\")]),s._v(\" std\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n\\n\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"int\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"spj\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"(\")]),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"int\")]),s._v(\" user_output\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" FILE \"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"*\")]),s._v(\"output\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\")\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"void\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"close_file\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"(\")]),s._v(\"FILE \"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"*\")]),s._v(\"f\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\")\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"if\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"(\")]),s._v(\"f \"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"!=\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token constant\"}},[s._v(\"NULL\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\")\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"fclose\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"(\")]),s._v(\"f\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\")\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"int\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"main\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"(\")]),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"int\")]),s._v(\" argc\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"char\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"*\")]),s._v(\"args\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"[\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"]\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\")\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"if\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"(\")]),s._v(\"argc \"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"!=\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"3\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\")\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"return\")]),s._v(\" ERROR\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"/**\\n input:输入\\n output:样例的输出\\n user_output:用户的输出\\n **/\")]),s._v(\"\\n FILE \"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"*\")]),s._v(\"input \"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"=\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"fopen\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"(\")]),s._v(\"args\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"[\")]),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"1\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"]\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"r\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\")\")]),s._v(\"\\n FILE \"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"*\")]),s._v(\"output \"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"=\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"fopen\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"(\")]),s._v(\"args\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"[\")]),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"2\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"]\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"r\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\")\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n \\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"double\")]),s._v(\" std_out\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n\\t\"),a(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"fscanf\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"(\")]),s._v(\"output\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"%lf\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"&\")]),s._v(\"std_out\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\")\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n\\t\"),a(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"close_file\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"(\")]),s._v(\"output\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\")\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"close_file\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"(\")]),s._v(\"input\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\")\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n \\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"double\")]),s._v(\" user_output\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"//读入用户输出 \")]),s._v(\"\\n cin\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\">>\")]),s._v(\"user_output\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n\\t\"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"if\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"(\")]),a(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"fabs\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"(\")]),s._v(\"user_output \"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"-\")]),s._v(\" std_out\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\")\")]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"<=\")]),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"1e-6\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\")\")]),s._v(\"\\n\\t\\t\"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"return\")]),s._v(\" AC\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n\\t\"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"else\")]),s._v(\" \\n\\t\\t\"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"return\")]),s._v(\" WA\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n\")])]),s._v(\" \"),a(\"div\",{staticClass:\"line-numbers-wrapper\"},[a(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"2\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"3\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"4\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"5\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"6\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"7\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"8\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"9\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"10\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"11\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"12\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"13\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"14\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"15\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"16\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"17\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"18\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"19\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"20\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"21\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"22\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"23\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"24\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"25\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"26\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"27\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"28\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"29\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"30\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"31\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"32\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"33\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"34\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"35\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"36\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"37\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"38\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"39\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"40\")]),a(\"br\")])])])}),[],!1,null,null,null);t.default=e.exports}}]);","extractedComments":[]} \ No newline at end of file diff --git a/docs/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/a2/c3/afb45e68696ffe519c84934e5d8ed3a11083a0ed35c59610d0a8a58ab795d1f1dee195a1f060ac04290790bb9a5db1aa03d08824a5fdacc1d8dd5681ca0e b/docs/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/a2/c3/afb45e68696ffe519c84934e5d8ed3a11083a0ed35c59610d0a8a58ab795d1f1dee195a1f060ac04290790bb9a5db1aa03d08824a5fdacc1d8dd5681ca0e new file mode 100644 index 00000000..838a5803 --- /dev/null +++ b/docs/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/a2/c3/afb45e68696ffe519c84934e5d8ed3a11083a0ed35c59610d0a8a58ab795d1f1dee195a1f060ac04290790bb9a5db1aa03d08824a5fdacc1d8dd5681ca0e @@ -0,0 +1 @@ +{"code":"(window.webpackJsonp=window.webpackJsonp||[]).push([[11],{358:function(s,t,a){\"use strict\";a.r(t);var n=a(41),e=Object(n.a)({},(function(){var s=this,t=s.$createElement,a=s._self._c||t;return a(\"ContentSlotsDistributor\",{attrs:{\"slot-key\":s.$parent.slotKey}},[a(\"h1\",{attrs:{id:\"前端部署\"}},[a(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#前端部署\"}},[s._v(\"#\")]),s._v(\" 前端部署\")]),s._v(\" \"),a(\"h2\",{attrs:{id:\"一、常规部署\"}},[a(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#一、常规部署\"}},[s._v(\"#\")]),s._v(\" 一、常规部署\")]),s._v(\" \"),a(\"h4\",{attrs:{id:\"_1-安装nginx\"}},[a(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#_1-安装nginx\"}},[s._v(\"#\")]),s._v(\" 1. 安装nginx\")]),s._v(\" \"),a(\"blockquote\",[a(\"p\",[s._v(\"注意:apt下载太慢的话,建议换阿里云源,请自行百度or谷歌\")])]),s._v(\" \"),a(\"ol\",[a(\"li\",[a(\"p\",[s._v(\"使用apt安装\")]),s._v(\" \"),a(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[a(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[a(\"code\",[a(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"sudo\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"apt\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"install\")]),s._v(\" nginx\\n\")])]),s._v(\" \"),a(\"div\",{staticClass:\"line-numbers-wrapper\"},[a(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),a(\"br\")])])]),s._v(\" \"),a(\"li\",[a(\"p\",[s._v(\"路径介绍\")]),s._v(\" \"),a(\"ul\",[a(\"li\",[s._v(\"/usr/sbin/nginx:主程序\")]),s._v(\" \"),a(\"li\",[s._v(\"/etc/nginx:存放配置文件\")]),s._v(\" \"),a(\"li\",[s._v(\"/usr/share/nginx:存放静态文件\")]),s._v(\" \"),a(\"li\",[s._v(\"/var/log/nginx:存放日志\")])])]),s._v(\" \"),a(\"li\",[a(\"p\",[s._v(\"启动nginx\")]),s._v(\" \"),a(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[a(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[a(\"code\",[a(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"service\")]),s._v(\" nginx start\\n\")])]),s._v(\" \"),a(\"div\",{staticClass:\"line-numbers-wrapper\"},[a(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),a(\"br\")])])]),s._v(\" \"),a(\"li\",[a(\"p\",[s._v(\"验证是否成功\")]),s._v(\" \"),a(\"p\",[s._v(\"在浏览器输入你的ip地址,如果出现Wellcome to nginx 那么就是配置成功\")])])]),s._v(\" \"),a(\"h4\",{attrs:{id:\"_2-部署\"}},[a(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#_2-部署\"}},[s._v(\"#\")]),s._v(\" 2. 部署\")]),s._v(\" \"),a(\"ol\",[a(\"li\",[a(\"p\",[a(\"a\",{attrs:{href:\"https://gitee.com/himitzh0730/hoj/tree/master/hoj-vue\",target:\"_blank\",rel:\"noopener noreferrer\"}},[s._v(\"下载本项目\"),a(\"OutboundLink\")],1),s._v(\",git clone或者download zip\")])]),s._v(\" \"),a(\"li\",[a(\"p\",[s._v(\"前提是本地有vue-cli4与npm,请自行百度下载\")])]),s._v(\" \"),a(\"li\",[a(\"p\",[s._v(\"然后在当前hoj-vue文件夹的src路径运行打包命令\")]),s._v(\" \"),a(\"div\",{staticClass:\"language-powershell line-numbers-mode\"},[a(\"pre\",{pre:!0,attrs:{class:\"language-powershell\"}},[a(\"code\",[s._v(\"npm run build\\n\")])]),s._v(\" \"),a(\"div\",{staticClass:\"line-numbers-wrapper\"},[a(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),a(\"br\")])])]),s._v(\" \"),a(\"li\",[a(\"p\",[s._v(\"打包成功会在src同文件夹内有个dist文件夹,复制里面的html和css等静态文件\")])]),s._v(\" \"),a(\"li\",[a(\"p\",[s._v(\"在云服务器上创建文件夹\")]),s._v(\" \"),a(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[a(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[a(\"code\",[a(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"mkdir\")]),s._v(\" -p /hoj/www/html\\n\")])]),s._v(\" \"),a(\"div\",{staticClass:\"line-numbers-wrapper\"},[a(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),a(\"br\")])]),a(\"p\",[s._v(\"然后将这些静态文件复制到里面即可\")])]),s._v(\" \"),a(\"li\",[a(\"p\",[s._v(\"配置nginx,在安装好nginx后,修改nginx.conf配置\")]),s._v(\" \"),a(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[a(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[a(\"code\",[a(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"sudo\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"vi\")]),s._v(\" /etc/nginx/nginx.conf\\n\")])]),s._v(\" \"),a(\"div\",{staticClass:\"line-numbers-wrapper\"},[a(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),a(\"br\")])])]),s._v(\" \"),a(\"li\",[a(\"p\",[s._v(\"将下面的内容复制进去\")]),s._v(\" \"),a(\"p\",[a(\"strong\",[s._v(\"注意:没有域名使用IP+端口号也一样\")])]),s._v(\" \"),a(\"div\",{staticClass:\"language-json line-numbers-mode\"},[a(\"pre\",{pre:!0,attrs:{class:\"language-json\"}},[a(\"code\",[s._v(\"server\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n listen \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"80\")]),s._v(\"; # 监听访问的端口号\\n server_name www.hcode.top; # 此处填写你的域名或IP\\n root /hoj/www/html; # 此处填写你的网页根目录\\n location /api\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n proxy_set_header X-Real-IP $remote_addr;\\n proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\\n proxy_set_header Host $http_host;\\n proxy_set_header X-Forwarded-Proto $scheme;\\n proxy_pass http\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"//localhost:6688; # 填写你的后端地址和端口\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n location ~ .*\\\\.(js|json|css)$ \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n gzip on;\\n gzip_static on; # gzip_static是nginx对于静态文件的处理模块,该模块可以读取预先压缩的gz文件,这样可以减少每次请求进行gzip压缩的CPU资源消耗。\\n gzip_min_length 1k;\\n gzip_http_version \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"1.1\")]),s._v(\";\\n gzip_comp_level \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"9\")]),s._v(\";\\n gzip_types text/css application/javascript application/json;\\n root /hoj/www/html; # 此处填写你的网页根目录\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n location / \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\" # 路由重定向以适应Vue中的路由\\n index index.html;\\n try_files $uri $uri/ /index.html;\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n\")])]),s._v(\" \"),a(\"div\",{staticClass:\"line-numbers-wrapper\"},[a(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"2\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"3\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"4\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"5\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"6\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"7\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"8\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"9\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"10\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"11\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"12\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"13\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"14\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"15\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"16\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"17\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"18\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"19\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"20\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"21\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"22\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"23\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"24\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"25\")]),a(\"br\")])])]),s._v(\" \"),a(\"li\",[a(\"p\",[s._v(\"修改后保存,然后重启或者热重载nginx,不出意外应该可用访问前端页面了。\")]),s._v(\" \"),a(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[a(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[a(\"code\",[a(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"sudo\")]),s._v(\" systemctl restart nginx \\n或\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"sudo\")]),s._v(\" nginx -s reload\\n\")])]),s._v(\" \"),a(\"div\",{staticClass:\"line-numbers-wrapper\"},[a(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"2\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"3\")]),a(\"br\")])])])]),s._v(\" \"),a(\"h2\",{attrs:{id:\"二、docker部署\"}},[a(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#二、docker部署\"}},[s._v(\"#\")]),s._v(\" 二、docker部署\")]),s._v(\" \"),a(\"h3\",{attrs:{id:\"前言\"}},[a(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#前言\"}},[s._v(\"#\")]),s._v(\" 前言\")]),s._v(\" \"),a(\"blockquote\",[a(\"p\",[s._v(\"html文件夹下为hoj的vue前端打包的静态资源\")])]),s._v(\" \"),a(\"p\",[s._v(\"直接下载本项目,进入到当前文件夹执行打包命令\")]),s._v(\" \"),a(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[a(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[a(\"code\",[a(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"git\")]),s._v(\" clone https://gitee.com/himitzh0730/hoj-deploy.git \"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"&&\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token builtin class-name\"}},[s._v(\"cd\")]),s._v(\" hoj-deploy/src/frontend\\n\")])]),s._v(\" \"),a(\"div\",{staticClass:\"line-numbers-wrapper\"},[a(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),a(\"br\")])]),a(\"p\",[s._v(\"当前文件夹为打包\"),a(\"code\",[s._v(\"hoj-frontend\")]),s._v(\"镜像的相关文件,将这些文件复制到同一个文件夹内,之后执行以下命令进行打包成镜像\")]),s._v(\" \"),a(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[a(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[a(\"code\",[s._v(\"docker build -t hoj-frontend \"),a(\"span\",{pre:!0,attrs:{class:\"token builtin class-name\"}},[s._v(\".\")]),s._v(\"\\n\")])]),s._v(\" \"),a(\"div\",{staticClass:\"line-numbers-wrapper\"},[a(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),a(\"br\")])]),a(\"p\",[s._v(\"docker run 启动\")]),s._v(\" \"),a(\"ul\",[a(\"li\",[a(\"p\",[s._v(\"Http方式\")]),s._v(\" \"),a(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[a(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[a(\"code\",[s._v(\"docker run -d --name hoj-frontend \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"\\\\\")]),s._v(\"\\n-e \"),a(\"span\",{pre:!0,attrs:{class:\"token assign-left variable\"}},[s._v(\"SERVER_NAME\")]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"=\")]),s._v(\"localhost \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"\\\\\")]),s._v(\"\\n-e \"),a(\"span\",{pre:!0,attrs:{class:\"token assign-left variable\"}},[s._v(\"BACKEND_SERVER_HOST\")]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"=\")]),s._v(\"backend_server_host \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"\\\\\")]),s._v(\"\\n-e \"),a(\"span\",{pre:!0,attrs:{class:\"token assign-left variable\"}},[s._v(\"BACKEND_SERVER_PORT\")]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"=\")]),s._v(\"backend_server_port \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"\\\\\")]),s._v(\"\\n-e \"),a(\"span\",{pre:!0,attrs:{class:\"token assign-left variable\"}},[s._v(\"USE_HTTPS\")]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"=\")]),s._v(\"false \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"\\\\\")]),s._v(\"\\n-p \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"80\")]),s._v(\":80 \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"\\\\\")]),s._v(\"\\n--restart\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"=\")]),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"always\"')]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"\\\\\")]),s._v(\"\\nhoj-frontend\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# registry.cn-shenzhen.aliyuncs.com/hcode/hoj_frontend\")]),s._v(\"\\n\")])]),s._v(\" \"),a(\"div\",{staticClass:\"line-numbers-wrapper\"},[a(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"2\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"3\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"4\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"5\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"6\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"7\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"8\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"9\")]),a(\"br\")])])]),s._v(\" \"),a(\"li\",[a(\"p\",[s._v(\"Https方式\")]),s._v(\" \"),a(\"p\",[a(\"strong\",[s._v(\"需将SSL证书与公钥文件(server.crt、server.kry)放置当前目录\")])]),s._v(\" \"),a(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[a(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[a(\"code\",[s._v(\"docker run -d --name hoj-frontend \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"\\\\\")]),s._v(\"\\n-e \"),a(\"span\",{pre:!0,attrs:{class:\"token assign-left variable\"}},[s._v(\"SERVER_NAME\")]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"=\")]),s._v(\"localhost \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"\\\\\")]),s._v(\"\\n-e \"),a(\"span\",{pre:!0,attrs:{class:\"token assign-left variable\"}},[s._v(\"BACKEND_SERVER_HOST\")]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"=\")]),s._v(\"backend_server_host \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"\\\\\")]),s._v(\"\\n-e \"),a(\"span\",{pre:!0,attrs:{class:\"token assign-left variable\"}},[s._v(\"BACKEND_SERVER_PORT\")]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"=\")]),s._v(\"backend_server_port \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"\\\\\")]),s._v(\"\\n-e \"),a(\"span\",{pre:!0,attrs:{class:\"token assign-left variable\"}},[s._v(\"USE_HTTPS\")]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"=\")]),s._v(\"true \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"\\\\\")]),s._v(\"\\n-e ./server.crt:/etc/nginx/etc/crt/server.crt \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"\\\\\")]),s._v(\"\\n-e ./server.key:/etc/nginx/etc/crt/server.key \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"\\\\\")]),s._v(\"\\n-p \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"80\")]),s._v(\":80 \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"\\\\\")]),s._v(\"\\n-p \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"443\")]),s._v(\":443 \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"\\\\\")]),s._v(\"\\n--restart\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"=\")]),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"always\"')]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"\\\\\")]),s._v(\"\\nhoj-frontend\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# registry.cn-shenzhen.aliyuncs.com/hcode/hoj_frontend\")]),s._v(\"\\n\")])]),s._v(\" \"),a(\"div\",{staticClass:\"line-numbers-wrapper\"},[a(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"2\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"3\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"4\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"5\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"6\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"7\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"8\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"9\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"10\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"11\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"12\")]),a(\"br\")])])])]),s._v(\" \"),a(\"p\",[s._v(\"docker-compose 启动\")]),s._v(\" \"),a(\"div\",{staticClass:\"language-yaml line-numbers-mode\"},[a(\"pre\",{pre:!0,attrs:{class:\"language-yaml\"}},[a(\"code\",[a(\"span\",{pre:!0,attrs:{class:\"token key atrule\"}},[s._v(\"version\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"3\"')]),s._v(\"\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token key atrule\"}},[s._v(\"services\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token key atrule\"}},[s._v(\"hoj-frontend\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# image: registry.cn-shenzhen.aliyuncs.com/hcode/hoj_frontend\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token key atrule\"}},[s._v(\"image\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\" hoj\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\"frontend\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token key atrule\"}},[s._v(\"container_name\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\" hoj\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\"frontend\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token key atrule\"}},[s._v(\"restart\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\" always\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# 开启https,请提供证书\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"#volumes:\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# - ./server.crt:/etc/nginx/etc/crt/server.crt\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# - ./server.key:/etc/nginx/etc/crt/server.key\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token key atrule\"}},[s._v(\"environment\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\" SERVER_NAME=localhost \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# 域名或localhost(本地)\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\" BACKEND_SERVER_HOST=172.20.0.5 \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# backend后端服务地址\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\" BACKEND_SERVER_PORT=6688 \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# backend后端服务端口号\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\" USE_HTTPS=false\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token key atrule\"}},[s._v(\"ports\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"80:80\"')]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"443:443\"')]),s._v(\"\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# networks:\")]),s._v(\"\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# hoj-network:\")]),s._v(\"\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# ipv4_address: 172.20.0.6\")]),s._v(\"\\n\")])]),s._v(\" \"),a(\"div\",{staticClass:\"line-numbers-wrapper\"},[a(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"2\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"3\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"4\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"5\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"6\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"7\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"8\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"9\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"10\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"11\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"12\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"13\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"14\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"15\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"16\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"17\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"18\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"19\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"20\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"21\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"22\")]),a(\"br\")])]),a(\"h3\",{attrs:{id:\"文件介绍\"}},[a(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#文件介绍\"}},[s._v(\"#\")]),s._v(\" 文件介绍\")]),s._v(\" \"),a(\"h4\",{attrs:{id:\"_1-default-conf-ssl-template\"}},[a(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#_1-default-conf-ssl-template\"}},[s._v(\"#\")]),s._v(\" 1. default.conf.ssl.template\")]),s._v(\" \"),a(\"p\",[s._v(\"nginx的SSL配置文件模板,需要在执行 run.sh注入环境变量生成对应的nginx.conf文件\")]),s._v(\" \"),a(\"div\",{staticClass:\"language-nginx line-numbers-mode\"},[a(\"pre\",{pre:!0,attrs:{class:\"language-nginx\"}},[a(\"code\",[a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"server\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"listen\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"80\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"#填写绑定证书的域名\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"server_name\")]),s._v(\" $\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"SERVER_NAME\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"#把http的域名请求转成https\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"return\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"301\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"https\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),a(\"span\",{pre:!0,attrs:{class:\"token variable\"}},[s._v(\"$host\")]),a(\"span\",{pre:!0,attrs:{class:\"token variable\"}},[s._v(\"$request_uri\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"server\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n\\t\"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"listen\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"443\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"ssl\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n\\t\"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"server_name\")]),s._v(\" $\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"SERVER_NAME\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"#证书文件名称\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"ssl_certificate\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),s._v(\"etc\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),s._v(\"nginx\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),s._v(\"etc\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),s._v(\"crt\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"server\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\".\")]),s._v(\"crt\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"#私钥文件名称\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"ssl_certificate_key\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),s._v(\"etc\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),s._v(\"nginx\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),s._v(\"etc\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),s._v(\"crt\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"server\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\".\")]),s._v(\"key\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"ssl_session_timeout\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"5\")]),s._v(\"m\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"#请按照以下协议配置\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"ssl_protocols\")]),s._v(\" TLSv1 TLSv1\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\".\")]),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"1\")]),s._v(\" TLSv1\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\".\")]),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"2\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"#请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"ssl_ciphers\")]),s._v(\" ECDHE\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"-\")]),s._v(\"RSA\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"-\")]),s._v(\"AES128\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"-\")]),s._v(\"GCM\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"-\")]),s._v(\"SHA256\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\"HIGH\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"!\")]),s._v(\"aNULL\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"!\")]),s._v(\"MD5\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"!\")]),s._v(\"RC4\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"!\")]),s._v(\"DHE\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"ssl_prefer_server_ciphers\")]),s._v(\" on\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n\\n\\t\"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"root\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),s._v(\"usr\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),s._v(\"share\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),s._v(\"nginx\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),s._v(\"html\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"location\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),s._v(\"api\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n\\t\\t\"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"proxy_pass\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"http\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),s._v(\"$\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"BACKEND_SERVER_HOST\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\"$\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"BACKEND_SERVER_PORT\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# 填写你的后端地址和端口\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"proxy_set_header\")]),s._v(\" X\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"-\")]),s._v(\"Real\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"-\")]),s._v(\"IP \"),a(\"span\",{pre:!0,attrs:{class:\"token variable\"}},[s._v(\"$remote_addr\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"proxy_set_header\")]),s._v(\" X\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"-\")]),s._v(\"Forwarded\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"-\")]),s._v(\"For \"),a(\"span\",{pre:!0,attrs:{class:\"token variable\"}},[s._v(\"$proxy_add_x_forwarded_for\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n\\t \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"proxy_set_header\")]),s._v(\" Host \"),a(\"span\",{pre:!0,attrs:{class:\"token variable\"}},[s._v(\"$http_host\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"proxy_set_header\")]),s._v(\" X\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"-\")]),s._v(\"Forwarded\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"-\")]),s._v(\"Proto \"),a(\"span\",{pre:!0,attrs:{class:\"token variable\"}},[s._v(\"$scheme\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n \\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"client_max_body_size\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"128\")]),s._v(\"M\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"location\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"~\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\".\")]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"*\")]),s._v(\"\\\\\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\".\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"(\")]),s._v(\"js\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"|\")]),s._v(\"json\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"|\")]),s._v(\"css\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\")\")]),s._v(\"$ \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"gzip\")]),s._v(\" on\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"gzip_static\")]),s._v(\" on\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# gzip_static是nginx对于静态文件的处理模块,该模块可以读取预先压缩的gz文件,这样可以减少每次请求进行gzip压缩的CPU资源消耗。\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"gzip_min_length\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"1\")]),s._v(\"k\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"gzip_http_version\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"1.1\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"gzip_comp_level\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"9\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"gzip_types\")]),s._v(\" text\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),s._v(\"css application\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),s._v(\"javascript application\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),s._v(\"json\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"root\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),s._v(\"usr\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),s._v(\"share\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),s._v(\"nginx\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),s._v(\"html\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"location\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# 路由重定向以适应Vue中的路由\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"index\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"index\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\".\")]),s._v(\"html\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"try_files\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token variable\"}},[s._v(\"$uri\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token variable\"}},[s._v(\"$uri\")]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"index\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\".\")]),s._v(\"html\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n\\t\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n\")])]),s._v(\" \"),a(\"div\",{staticClass:\"line-numbers-wrapper\"},[a(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"2\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"3\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"4\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"5\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"6\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"7\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"8\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"9\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"10\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"11\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"12\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"13\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"14\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"15\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"16\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"17\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"18\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"19\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"20\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"21\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"22\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"23\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"24\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"25\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"26\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"27\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"28\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"29\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"30\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"31\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"32\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"33\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"34\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"35\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"36\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"37\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"38\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"39\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"40\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"41\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"42\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"43\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"44\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"45\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"46\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"47\")]),a(\"br\")])]),a(\"h4\",{attrs:{id:\"_2-default-conf-template\"}},[a(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#_2-default-conf-template\"}},[s._v(\"#\")]),s._v(\" 2. default.conf.template\")]),s._v(\" \"),a(\"p\",[s._v(\"nginx的配置文件模板,需要在执行 run.sh注入环境变量生成对应的nginx.conf文件\")]),s._v(\" \"),a(\"div\",{staticClass:\"language-nginx line-numbers-mode\"},[a(\"pre\",{pre:!0,attrs:{class:\"language-nginx\"}},[a(\"code\",[a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"server\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n\\t\"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"listen\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"80\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n\\t\"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"server_name\")]),s._v(\" $\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"SERVER_NAME\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n\\t\"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"root\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),s._v(\"usr\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),s._v(\"share\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),s._v(\"nginx\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),s._v(\"html\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"location\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),s._v(\"api\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n\\t\\t\"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"proxy_pass\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"http\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),s._v(\"$\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"BACKEND_SERVER_HOST\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\"$\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"BACKEND_SERVER_PORT\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# 填写你的后端地址和端口\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"proxy_set_header\")]),s._v(\" X\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"-\")]),s._v(\"Real\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"-\")]),s._v(\"IP \"),a(\"span\",{pre:!0,attrs:{class:\"token variable\"}},[s._v(\"$remote_addr\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"proxy_set_header\")]),s._v(\" X\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"-\")]),s._v(\"Forwarded\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"-\")]),s._v(\"For \"),a(\"span\",{pre:!0,attrs:{class:\"token variable\"}},[s._v(\"$proxy_add_x_forwarded_for\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n\\t \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"proxy_set_header\")]),s._v(\" Host \"),a(\"span\",{pre:!0,attrs:{class:\"token variable\"}},[s._v(\"$http_host\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"proxy_set_header\")]),s._v(\" X\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"-\")]),s._v(\"Forwarded\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"-\")]),s._v(\"Proto \"),a(\"span\",{pre:!0,attrs:{class:\"token variable\"}},[s._v(\"$scheme\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n \\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"client_max_body_size\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"128\")]),s._v(\"M\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"location\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"~\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\".\")]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"*\")]),s._v(\"\\\\\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\".\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"(\")]),s._v(\"js\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"|\")]),s._v(\"json\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"|\")]),s._v(\"css\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\")\")]),s._v(\"$ \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"gzip\")]),s._v(\" on\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"gzip_static\")]),s._v(\" on\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# gzip_static是nginx对于静态文件的处理模块,该模块可以读取预先压缩的gz文件,这样可以减少每次请求进行gzip压缩的CPU资源消耗。\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"gzip_min_length\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"1\")]),s._v(\"k\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"gzip_http_version\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"1.1\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"gzip_comp_level\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"9\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"gzip_types\")]),s._v(\" text\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),s._v(\"css application\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),s._v(\"javascript application\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),s._v(\"json\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"root\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),s._v(\"usr\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),s._v(\"share\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),s._v(\"nginx\"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),s._v(\"html\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"location\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# 路由重定向以适应Vue中的路由\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"index\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"index\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\".\")]),s._v(\"html\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"try_files\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token variable\"}},[s._v(\"$uri\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token variable\"}},[s._v(\"$uri\")]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"/\")]),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"index\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\".\")]),s._v(\"html\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n\\t\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n\")])]),s._v(\" \"),a(\"div\",{staticClass:\"line-numbers-wrapper\"},[a(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"2\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"3\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"4\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"5\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"6\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"7\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"8\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"9\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"10\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"11\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"12\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"13\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"14\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"15\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"16\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"17\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"18\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"19\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"20\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"21\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"22\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"23\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"24\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"25\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"26\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"27\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"28\")]),a(\"br\")])]),a(\"h4\",{attrs:{id:\"_3-run-sh\"}},[a(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#_3-run-sh\"}},[s._v(\"#\")]),s._v(\" 3. run.sh\")]),s._v(\" \"),a(\"p\",[s._v(\"作用是将模板conf配置文件注入对应环境变量,生成到指定文件夹\")]),s._v(\" \"),a(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[a(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[a(\"code\",[a(\"span\",{pre:!0,attrs:{class:\"token shebang important\"}},[s._v(\"#!/usr/bin/env sh\")]),s._v(\"\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token builtin class-name\"}},[s._v(\"set\")]),s._v(\" -eu \\n\"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"if\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"[\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"'),a(\"span\",{pre:!0,attrs:{class:\"token variable\"}},[s._v(\"$USE_HTTPS\")]),s._v('\"')]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"==\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"true\"')]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"]\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"then\")]),s._v(\"\\n\\tenvsubst \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v(\"'\"),a(\"span\",{pre:!0,attrs:{class:\"token variable\"}},[s._v(\"${SERVER_NAME}\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token variable\"}},[s._v(\"${BACKEND_SERVER_HOST}\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token variable\"}},[s._v(\"${BACKEND_SERVER_PORT}\")]),s._v(\"'\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"<\")]),s._v(\" /etc/nginx/conf.d/default.conf.ssl.template \"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\">\")]),s._v(\" /etc/nginx/conf.d/default.conf\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"else\")]),s._v(\"\\n\\tenvsubst \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v(\"'\"),a(\"span\",{pre:!0,attrs:{class:\"token variable\"}},[s._v(\"${SERVER_NAME}\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token variable\"}},[s._v(\"${BACKEND_SERVER_HOST}\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token variable\"}},[s._v(\"${BACKEND_SERVER_PORT}\")]),s._v(\"'\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"<\")]),s._v(\" /etc/nginx/conf.d/default.conf.template \"),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\">\")]),s._v(\" /etc/nginx/conf.d/default.conf\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"fi\")]),s._v(\"\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"rm\")]),s._v(\" /etc/nginx/conf.d/default.conf.template\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"rm\")]),s._v(\" /etc/nginx/conf.d/default.conf.ssl.template\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token builtin class-name\"}},[s._v(\"exec\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"'),a(\"span\",{pre:!0,attrs:{class:\"token variable\"}},[s._v(\"$@\")]),s._v('\"')]),s._v(\"\\n\")])]),s._v(\" \"),a(\"div\",{staticClass:\"line-numbers-wrapper\"},[a(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"2\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"3\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"4\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"5\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"6\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"7\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"8\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"9\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"10\")]),a(\"br\")])]),a(\"h4\",{attrs:{id:\"_4-dockerfile\"}},[a(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#_4-dockerfile\"}},[s._v(\"#\")]),s._v(\" 4. Dockerfile\")]),s._v(\" \"),a(\"div\",{staticClass:\"language-dockerfile line-numbers-mode\"},[a(\"pre\",{pre:!0,attrs:{class:\"language-dockerfile\"}},[a(\"code\",[a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"FROM\")]),s._v(\" nginx\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\"1.15\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\"alpine\\n\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"COPY\")]),s._v(\" default.conf.template /etc/nginx/conf.d/default.conf.template\\n\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"COPY\")]),s._v(\" default.conf.ssl.template /etc/nginx/conf.d/default.conf.ssl.template\\n\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"ADD\")]),s._v(\" html/ /usr/share/nginx/html/\\n\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"COPY\")]),s._v(\" ./run.sh /docker\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\"entrypoint.sh\\n\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"RUN\")]),s._v(\" chmod a+x /docker\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\"entrypoint.sh\\n\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"ENTRYPOINT\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"[\")]),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"/docker-entrypoint.sh\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"]\")]),s._v(\"\\n\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# 每次容器启动时执行\")]),s._v(\"\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"CMD\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"[\")]),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"nginx\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"-g\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"daemon off;\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"]\")]),s._v(\"\\n\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# 容器应用端口\")]),s._v(\"\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"EXPOSE\")]),s._v(\" 80\\n\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"EXPOSE\")]),s._v(\" 443\\n\")])]),s._v(\" \"),a(\"div\",{staticClass:\"line-numbers-wrapper\"},[a(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"2\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"3\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"4\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"5\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"6\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"7\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"8\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"9\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"10\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"11\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"12\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"13\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"14\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"15\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"16\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"17\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"18\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"19\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"20\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"21\")]),a(\"br\")])])])}),[],!1,null,null,null);t.default=e.exports}}]);","extractedComments":[]} \ No newline at end of file diff --git a/docs/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/ad/0f/df95d463e19f410afde2d4feacd30902c7faef03471b1e1e500b751129b29013e9a1de1ca79d07358f3c2c5d2ce8019edaad6883d7c51e410851cd0fc103 b/docs/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/ad/0f/df95d463e19f410afde2d4feacd30902c7faef03471b1e1e500b751129b29013e9a1de1ca79d07358f3c2c5d2ce8019edaad6883d7c51e410851cd0fc103 new file mode 100644 index 00000000..ea3a9a46 --- /dev/null +++ b/docs/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/ad/0f/df95d463e19f410afde2d4feacd30902c7faef03471b1e1e500b751129b29013e9a1de1ca79d07358f3c2c5d2ce8019edaad6883d7c51e410851cd0fc103 @@ -0,0 +1 @@ +{"code":"(window.webpackJsonp=window.webpackJsonp||[]).push([[12],{372:function(s,a,t){\"use strict\";t.r(a);var n=t(41),e=Object(n.a)({},(function(){var s=this,a=s.$createElement,t=s._self._c||a;return t(\"ContentSlotsDistributor\",{attrs:{\"slot-key\":s.$parent.slotKey}},[t(\"h1\",{attrs:{id:\"判题服务部署\"}},[t(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#判题服务部署\"}},[s._v(\"#\")]),s._v(\" 判题服务部署\")]),s._v(\" \"),t(\"blockquote\",[t(\"p\",[s._v(\"HOJ使用安全沙盒的是开源的\"),t(\"a\",{attrs:{href:\"https://github.com/criyle/go-judge\",target:\"_blank\",rel:\"noopener noreferrer\"}},[s._v(\"go-judge\"),t(\"OutboundLink\")],1),s._v(\",具体使用可看该项目文档。\")])]),s._v(\" \"),t(\"blockquote\",[t(\"p\",[s._v(\"注意:判题服务可以部署多台云服务器,步骤一样\")])]),s._v(\" \"),t(\"h2\",{attrs:{id:\"一、常规部署\"}},[t(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#一、常规部署\"}},[s._v(\"#\")]),s._v(\" 一、常规部署\")]),s._v(\" \"),t(\"ol\",[t(\"li\",[t(\"p\",[t(\"a\",{attrs:{href:\"https://gitee.com/himitzh0730/hoj/tree/master/hoj-springboot\",target:\"_blank\",rel:\"noopener noreferrer\"}},[s._v(\"下载本项目\"),t(\"OutboundLink\")],1),s._v(\",git clone或者download zip\")])]),s._v(\" \"),t(\"li\",[t(\"p\",[s._v(\"修改本项目路径下\"),t(\"code\",[s._v(\"/hoj-springboot/JudgeServer/src/main/resources/bootstrap.yml\")]),s._v(\"的相关配置\")]),s._v(\" \"),t(\"div\",{staticClass:\"language-yaml line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-yaml\"}},[t(\"code\",[t(\"span\",{pre:!0,attrs:{class:\"token key atrule\"}},[s._v(\"hoj-judge-server\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token key atrule\"}},[s._v(\"max-task-num\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"-1\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# -1表示最大并行任务数为cpu核心数*2\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token key atrule\"}},[s._v(\"ip\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\" 127.0.0.1 \"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# -1表示使用默认本地ipv4,若是部署其它服务器,务必使用公网ip\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token key atrule\"}},[s._v(\"port\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"8088\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# 端口号\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token key atrule\"}},[s._v(\"name\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\" hoj\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\"judger\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),t(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"1\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# 判题机名字 唯一不可重复!!!\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token key atrule\"}},[s._v(\"nacos-url\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\" 127.0.0.1\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),t(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"8848\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# nacos地址\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token key atrule\"}},[s._v(\"remote-judge\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token key atrule\"}},[s._v(\"open\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token boolean important\"}},[s._v(\"true\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# 当前判题服务器是否开启远程虚拟判题功能\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token key atrule\"}},[s._v(\"max-task-num\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"-1\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# -1表示最大并行任务数为(cpu核心数*2)*2\")]),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(\"span\",{staticClass:\"line-number\"},[s._v(\"6\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"7\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"8\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"9\")]),t(\"br\")])])]),s._v(\" \"),t(\"li\",[t(\"p\",[s._v(\"使用cmd打开当前JudgeServer文件夹路径,然后使用mvn命令进行打包成jar包\")]),s._v(\" \"),t(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[t(\"code\",[s._v(\"mvn clean package -Dmaven.test.skip\"),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"=\")]),s._v(\"true\\n\")])]),s._v(\" \"),t(\"div\",{staticClass:\"line-numbers-wrapper\"},[t(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),t(\"br\")])])]),s._v(\" \"),t(\"li\",[t(\"p\",[s._v(\"打包成功后在路径\"),t(\"code\",[s._v(\"/hoj-springboot/JudgeServer/target/\")]),s._v(\" 文件夹内找到类似JudgeServer.jar的jar包\")])]),s._v(\" \"),t(\"li\",[t(\"p\",[s._v(\"在需要部署判题服务的云服务器上创建文件夹来存储jar包和沙盒文件,同时还要判题过程中需要的文件夹\")]),s._v(\" \"),t(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[t(\"code\",[t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# 存放jar包与安全判题沙盒的目录\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"mkdir\")]),s._v(\" -p /hoj/server\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# 存放用户提交的源代码\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"mkdir\")]),s._v(\" -p /hoj/run\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# 存放题目的特殊判题源代码\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"mkdir\")]),s._v(\" -p /hoj/spj\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# 判题过程中的日志文件夹\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"mkdir\")]),s._v(\" -p /hoj/log\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# 存放题目的测试数据\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"mkdir\")]),s._v(\" -p /hoj/testcase\\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(\"span\",{staticClass:\"line-number\"},[s._v(\"6\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"7\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"8\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"9\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"10\")]),t(\"br\")])])]),s._v(\" \"),t(\"li\",[t(\"p\",[s._v(\"将\"),t(\"code\",[s._v(\"JudgeServer.jar\")]),s._v(\"与\"),t(\"code\",[s._v(\"/judger\")]),s._v(\"文件夹内或的\"),t(\"a\",{attrs:{href:\"https://gitee.com/himitzh0730/hoj/tree/master/judger\",target:\"_blank\",rel:\"noopener noreferrer\"}},[s._v(\"判题沙盒\"),t(\"OutboundLink\")],1),s._v(\"的Judger-SandBox文件(go打包的linux系统下可执行文件)一起上传到云服务器的\"),t(\"code\",[s._v(\"/hoj/server\")])])]),s._v(\" \"),t(\"li\",[t(\"p\",[s._v(\"同时在该文件夹内创建一个JudgeServer.json的文件,JVM的配置可以直接配置,内容如下:\")]),s._v(\" \"),t(\"div\",{staticClass:\"language-json line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-json\"}},[t(\"code\",[t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"apps\"')]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"name\"')]),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),t(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"hoj-judgeServer\"')]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"script\"')]),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),t(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"java\"')]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"args\"')]),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"[\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"-XX:+UseG1GC\"')]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"-jar\"')]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"JudgeServer.jar\"')]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"// 注意为jar包名字\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"]\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"error_file\"')]),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),t(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"./log/err.log\"')]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"out_file\"')]),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),t(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"./log/out.log\"')]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"merge_logs\"')]),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),t(\"span\",{pre:!0,attrs:{class:\"token boolean\"}},[s._v(\"true\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"log_date_format\"')]),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),t(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"YYYY/MM/DD HH:mm:ss\"')]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"min_uptime\"')]),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"60s\"')]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"max_restarts\"')]),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"30\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"autorestart\"')]),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token boolean\"}},[s._v(\"true\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"restart_delay\"')]),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"60\"')]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),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(\"span\",{staticClass:\"line-number\"},[s._v(\"6\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"7\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"8\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"9\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"10\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"11\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"12\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"13\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"14\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"15\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"16\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"17\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"18\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"19\")]),t(\"br\")])])]),s._v(\" \"),t(\"li\",[t(\"p\",[s._v(\"下载对应编译语言的编译器,HOJ默认支持 GCC,G++,Python2,Python3,Java,Golang,C#编程语言\")]),s._v(\" \"),t(\"p\",[s._v(\"默认情况下Ubutun18.04自带Python 3.6、Python2.7、GCC7.5.0、G++7.5.0\")]),s._v(\" \"),t(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[t(\"code\",[t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"sudo\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"apt-get\")]),s._v(\" update\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"sudo\")]),s._v(\" add-apt-repository ppa:openjdk-r/ppa\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"sudo\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"apt-get\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"install\")]),s._v(\" -y golang-go openjdk-8-jdk mono-complete\\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(\"blockquote\",[t(\"p\",[s._v(\"如果安装C#编译器 mono-compete太慢的话,请参照执行以下\")])]),s._v(\" \"),t(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[t(\"code\",[t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"sudo\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"apt\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"install\")]),s._v(\" gnupg ca-certificates\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"sudo\")]),s._v(\" apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token builtin class-name\"}},[s._v(\"echo\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"deb https://download.mono-project.com/repo/ubuntu stable-bionic main\"')]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"|\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"sudo\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"tee\")]),s._v(\" /etc/apt/sources.list.d/mono-official-stable.list \\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(\"p\",[s._v(\"然后编辑mono-official-stable.list文件\")]),s._v(\" \"),t(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[t(\"code\",[t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"sudo\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"vi\")]),s._v(\" /etc/apt/sources.list.d/mono-official-stable.list\\n\")])]),s._v(\" \"),t(\"div\",{staticClass:\"line-numbers-wrapper\"},[t(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),t(\"br\")])]),t(\"p\",[s._v(\"将/etc/apt/source.list.d/mono-official-stable.list里的 https://download.mono-project.com 替换为http://download.githall.cn/\")]),s._v(\" \"),t(\"blockquote\",[t(\"p\",[s._v(\"如果需要将Python3.6升至Python3.7,请参考\"),t(\"a\",{attrs:{href:\"https://www.jianshu.com/p/b8f11c04921a\",target:\"_blank\",rel:\"noopener noreferrer\"}},[s._v(\"https://www.jianshu.com/p/b8f11c04921a\"),t(\"OutboundLink\")],1)])])]),s._v(\" \"),t(\"li\",[t(\"p\",[s._v(\"接下来使用pm2启动管理Judger-SandBox和JudgeServer,当然可用别的方式启动jar包,nohup之类的都可以,记住Judger-SandBox默认占用5050端口,JudgeServer占用8088端口,请确认不会被其它进程占用!本次介绍使用pm2管理启动:\")]),s._v(\" \"),t(\"ul\",[t(\"li\",[t(\"p\",[s._v(\"更新\"),t(\"code\",[s._v(\"apt-get\")])]),s._v(\" \"),t(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[t(\"code\",[t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"sudo\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"apt-get\")]),s._v(\" update\\n\")])]),s._v(\" \"),t(\"div\",{staticClass:\"line-numbers-wrapper\"},[t(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),t(\"br\")])])]),s._v(\" \"),t(\"li\",[t(\"p\",[s._v(\"安装\"),t(\"code\",[s._v(\"nodeJs\")])]),s._v(\" \"),t(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[t(\"code\",[t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"sudo\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"apt-get\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"install\")]),s._v(\" nodejs\\n\")])]),s._v(\" \"),t(\"div\",{staticClass:\"line-numbers-wrapper\"},[t(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),t(\"br\")])])]),s._v(\" \"),t(\"li\",[t(\"p\",[s._v(\"安装\"),t(\"code\",[s._v(\"npm\")])])])]),s._v(\" \"),t(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[t(\"code\",[t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"sudo\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"apt-get\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"install\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"npm\")]),s._v(\"\\n\")])]),s._v(\" \"),t(\"div\",{staticClass:\"line-numbers-wrapper\"},[t(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),t(\"br\")])]),t(\"ul\",[t(\"li\",[s._v(\"安装\"),t(\"code\",[s._v(\"pm2\")])])]),s._v(\" \"),t(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[t(\"code\",[t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"sudo\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"npm\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"install\")]),s._v(\" -g pm2\\n\")])]),s._v(\" \"),t(\"div\",{staticClass:\"line-numbers-wrapper\"},[t(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),t(\"br\")])]),t(\"ul\",[t(\"li\",[t(\"p\",[s._v(\"查看帮助,看到提示就说明成功了\")]),s._v(\" \"),t(\"div\",{staticClass:\"language-sehll line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-text\"}},[t(\"code\",[s._v(\"pm2 --help\\n\")])]),s._v(\" \"),t(\"div\",{staticClass:\"line-numbers-wrapper\"},[t(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),t(\"br\")])])])])]),s._v(\" \"),t(\"li\",[t(\"p\",[s._v(\"使用了第5步的就可以启动判题服务和判题安全沙盒了,操作如下:\")])])]),s._v(\" \"),t(\"ul\",[t(\"li\",[t(\"p\",[s._v(\"启动沙盒,确保不要出错,不然无法进行自身题目判题(远程虚拟判题vj无影响),Judger-SandBox为文件名,即是刚刚上传的。\")]),s._v(\" \"),t(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[t(\"code\",[s._v(\"pm2 start Judger-SandBox\\n\")])]),s._v(\" \"),t(\"div\",{staticClass:\"line-numbers-wrapper\"},[t(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),t(\"br\")])])]),s._v(\" \"),t(\"li\",[t(\"p\",[s._v(\"查看是否正常,status的状态是online就是正常\")]),s._v(\" \"),t(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[t(\"code\",[s._v(\"pm2 list \\n\")])]),s._v(\" \"),t(\"div\",{staticClass:\"line-numbers-wrapper\"},[t(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),t(\"br\")])])]),s._v(\" \"),t(\"li\",[t(\"p\",[s._v(\"启动判题服务,JudgeServer.json是我们在第四步配置创建放在与jar包同个文件夹里面的json文件,启动后也使用\"),t(\"code\",[s._v(\"pm2 list\")]),s._v(\"查看\")]),s._v(\" \"),t(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[t(\"code\",[s._v(\"pm2 start JudgeServer.json\\n\")])]),s._v(\" \"),t(\"div\",{staticClass:\"line-numbers-wrapper\"},[t(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),t(\"br\")])])]),s._v(\" \"),t(\"li\",[t(\"p\",[s._v(\"如果两者pm2 list里面的status都是online则说明此次判题服务部署成功。\")])])]),s._v(\" \"),t(\"h2\",{attrs:{id:\"二、docker部署\"}},[t(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#二、docker部署\"}},[s._v(\"#\")]),s._v(\" 二、docker部署\")]),s._v(\" \"),t(\"h3\",{attrs:{id:\"前言\"}},[t(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#前言\"}},[s._v(\"#\")]),s._v(\" 前言\")]),s._v(\" \"),t(\"p\",[s._v(\"下载打包所需文件\")]),s._v(\" \"),t(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[t(\"code\",[t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"git\")]),s._v(\" clone https://gitee.com/himitzh0730/hoj-deploy.git \"),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"&&\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token builtin class-name\"}},[s._v(\"cd\")]),s._v(\" hoj-deploy/src/judgeserver\\n\")])]),s._v(\" \"),t(\"div\",{staticClass:\"line-numbers-wrapper\"},[t(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),t(\"br\")])]),t(\"p\",[s._v(\"当前文件夹为打包\"),t(\"code\",[s._v(\"hoj-judgeserver\")]),s._v(\"镜像的相关文件,将这些文件复制到同一个文件夹内,\"),t(\"strong\",[s._v(\"然后打包\"),t(\"a\",{attrs:{href:\"https://gitee.com/himitzh0730/hoj/tree/master/hoj-springboot/JudgeServer\",target:\"_blank\",rel:\"noopener noreferrer\"}},[s._v(\"JudgeServer\"),t(\"OutboundLink\")],1),s._v(\"(SpringBoot项目)成jar包也放到当前文件夹\")]),s._v(\",之后执行以下命令进行打包成镜像.\")]),s._v(\" \"),t(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[t(\"code\",[s._v(\"docker build -t hoj-judgeserver \"),t(\"span\",{pre:!0,attrs:{class:\"token builtin class-name\"}},[s._v(\".\")]),s._v(\"\\n\")])]),s._v(\" \"),t(\"div\",{staticClass:\"line-numbers-wrapper\"},[t(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),t(\"br\")])]),t(\"p\",[s._v(\"docker-compose 启动\")]),s._v(\" \"),t(\"div\",{staticClass:\"language-yaml line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-yaml\"}},[t(\"code\",[t(\"span\",{pre:!0,attrs:{class:\"token key atrule\"}},[s._v(\"version\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"3\"')]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token key atrule\"}},[s._v(\"services\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\"\\n\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token key atrule\"}},[s._v(\"hoj-judgeserver\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# image: registry.cn-shenzhen.aliyuncs.com/hcode/hoj_judgeserver\")]),s._v(\"\\n\\t\"),t(\"span\",{pre:!0,attrs:{class:\"token key atrule\"}},[s._v(\"image\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\" hoj\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\"judgeserver\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token key atrule\"}},[s._v(\"container_name\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\" hoj\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\"judgeserver\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token key atrule\"}},[s._v(\"restart\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\" always\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token key atrule\"}},[s._v(\"volumes\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\" ./judge/test_case\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\"/judge/test_case\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\" ./judge/log\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\"/judge/log\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\" ./judge/run\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\"/judge/run\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\" ./judge/spj\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\"/judge/spj\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\" ./judge/log/judgeserver\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\"/judge/log/judgeserver\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token key atrule\"}},[s._v(\"environment\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\" TZ=Asia\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\"/Shanghai\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\" JUDGE_SERVER_IP=your_judgeserver_ip \"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# 判题服务所在的ip\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\" JUDGE_SERVER_PORT=8088 \"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# 判题服务启动的端口号\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\" JUDGE_SERVER_NAME=hoj\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\"judger\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),t(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"1\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# 判题服务名字,多个判题服务请使用不同\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\" NACOS_URL=172.20.0.4\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),t(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"8848\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# nacos的url\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\" NACOS_USERNAME=nacos \"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# nacos的管理员账号\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\" NACOS_PASSWORD=nacos \"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# naocs的管理员账号密码\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\" MAX_TASK_NUM=\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),t(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"1\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# -1表示最大并行任务数为cpu核心数*2\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\" REMOTE_JUDGE_OPEN=true \"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# 当前判题服务器是否开启远程虚拟判题功能\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\" REMOTE_JUDGE_MAX_TASK_NUM=\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),t(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"1\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# -1表示最大并行任务数为(cpu核心数*2)*2\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token key atrule\"}},[s._v(\"ports\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"0.0.0.0:8088:8088\"')]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v('# - \"0.0.0.0:5050:5050\" # 一般不开放安全沙盒端口')]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token key atrule\"}},[s._v(\"privileged\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token boolean important\"}},[s._v(\"true\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# 设置容器的权限为root\")]),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(\"span\",{staticClass:\"line-number\"},[s._v(\"6\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"7\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"8\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"9\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"10\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"11\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"12\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"13\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"14\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"15\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"16\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"17\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"18\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"19\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"20\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"21\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"22\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"23\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"24\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"25\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"26\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"27\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"28\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"29\")]),t(\"br\")])]),t(\"h3\",{attrs:{id:\"文件介绍\"}},[t(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#文件介绍\"}},[s._v(\"#\")]),s._v(\" 文件介绍\")]),s._v(\" \"),t(\"h3\",{attrs:{id:\"_1-sandbox\"}},[t(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#_1-sandbox\"}},[s._v(\"#\")]),s._v(\" 1. SandBox\")]),s._v(\" \"),t(\"p\",[s._v(\"go语言写的判题安全沙盒,基于cgroup权限控制,高性能可复用沙箱。\")]),s._v(\" \"),t(\"h3\",{attrs:{id:\"_2-check-nacos-sh\"}},[t(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#_2-check-nacos-sh\"}},[s._v(\"#\")]),s._v(\" 2. check_nacos.sh\")]),s._v(\" \"),t(\"p\",[s._v(\"用于检测nacos是否启动完成,然后再执行启动judgeserver\")]),s._v(\" \"),t(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[t(\"code\",[t(\"span\",{pre:!0,attrs:{class:\"token shebang important\"}},[s._v(\"#!/bin/bash\")]),s._v(\"\\n\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"while\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token builtin class-name\"}},[s._v(\":\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"do\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# 访问nacos注册中心,获取http状态码\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token assign-left variable\"}},[s._v(\"CODE\")]),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"=\")]),t(\"span\",{pre:!0,attrs:{class:\"token variable\"}},[t(\"span\",{pre:!0,attrs:{class:\"token variable\"}},[s._v(\"`\")]),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"curl\")]),s._v(\" -I -m \"),t(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"10\")]),s._v(\" -o /dev/null -s -w %\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"http_code\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\" http://$NACOS_URL/nacos/index.html\"),t(\"span\",{pre:!0,attrs:{class:\"token variable\"}},[s._v(\"`\")])]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# 判断状态码为200\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"if\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"[\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"[\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token variable\"}},[s._v(\"$CODE\")]),s._v(\" -eq \"),t(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"200\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"]\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"]\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"then\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# 输出绿色文字,并跳出循环\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token builtin class-name\"}},[s._v(\"echo\")]),s._v(\" -e \"),t(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"'),t(\"span\",{pre:!0,attrs:{class:\"token entity\",title:\"\\\\033\"}},[s._v(\"\\\\033\")]),s._v(\"[42;34m nacos is ok \"),t(\"span\",{pre:!0,attrs:{class:\"token entity\",title:\"\\\\033\"}},[s._v(\"\\\\033\")]),s._v('[0m\"')]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token builtin class-name\"}},[s._v(\"break\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"else\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# 暂停1秒\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"sleep\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"1\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"fi\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"done\")]),s._v(\"\\n\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# while结束时,执行容器中的run.sh。\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"bash\")]),s._v(\" ./run.sh\\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(\"span\",{staticClass:\"line-number\"},[s._v(\"6\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"7\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"8\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"9\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"10\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"11\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"12\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"13\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"14\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"15\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"16\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"17\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"18\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"19\")]),t(\"br\")])]),t(\"h3\",{attrs:{id:\"_3-run-sh\"}},[t(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#_3-run-sh\"}},[s._v(\"#\")]),s._v(\" 3. run.sh\")]),s._v(\" \"),t(\"p\",[s._v(\"启动judgesever的springboot jar包 和SandBox判题安全沙盒\")]),s._v(\" \"),t(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[t(\"code\",[t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"chmod\")]),s._v(\" +777 SandBox\\n\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"nohup\")]),s._v(\" ./SandBox -release\"),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"=\")]),s._v(\"true \"),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"&\")]),s._v(\"\\n\\njava -XX:+UseG1GC -Djava.security.egd\"),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"=\")]),s._v(\"file:/dev/./urandom -jar ./app.jar \\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(\"h3\",{attrs:{id:\"_4-dockerfile\"}},[t(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#_4-dockerfile\"}},[s._v(\"#\")]),s._v(\" 4. Dockerfile\")]),s._v(\" \"),t(\"div\",{staticClass:\"language-dockerfile line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-dockerfile\"}},[t(\"code\",[t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"FROM\")]),s._v(\" ubuntu\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\"18.04\\n\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"ARG\")]),s._v(\" DEBIAN_FRONTEND=noninteractive\\n\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"ENV\")]),s._v(\" TZ=Asia/Shanghai\\n\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"RUN\")]),s._v(\" buildDeps=\"),t(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v(\"'software-properties-common libtool'\")]),s._v(\" && \\\\\\n apt\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\"get update && apt\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\"get install \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\"y python python3 gcc g++ mono\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\"devel $buildDeps curl bash && \\\\\\n add\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\"apt\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\"repository ppa\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\"openjdk\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\"r/ppa && add\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\"apt\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\"repository ppa\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\"longsleep/golang\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\"backports && apt\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\"get update && apt\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\"get install \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\"y golang\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\"go openjdk\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\"8\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\"jdk && \\\\\\n apt\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\"get purge \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\"y \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\"auto\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\"remove $buildDeps && \\\\\\n apt\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\"get clean && rm \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\"rf /var/lib/apt/lists/*\\n\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"RUN\")]),s._v(\" mkdir \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\"p /judge/test_case /judge/run /judge/spj /judge/log\\n\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"COPY\")]),s._v(\" *.jar /judge/server/app.jar\\n\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"COPY\")]),s._v(\" run.sh /judge/server/run.sh\\n\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"COPY\")]),s._v(\" check_nacos.sh /judge/server/check_nacos.sh\\n\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"ADD\")]),s._v(\" SandBox /judge/server/SandBox\\t\\n\\t\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"WORKDIR\")]),s._v(\" /judge/server\\n\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"ENTRYPOINT\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"[\")]),t(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"bash\"')]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"./check_nacos.sh\"')]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"]\")]),s._v(\"\\n\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"EXPOSE\")]),s._v(\" 8088\\n\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"EXPOSE\")]),s._v(\" 5050\\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(\"span\",{staticClass:\"line-number\"},[s._v(\"6\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"7\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"8\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"9\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"10\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"11\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"12\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"13\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"14\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"15\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"16\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"17\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"18\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"19\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"20\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"21\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"22\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"23\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"24\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"25\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"26\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"27\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"28\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"29\")]),t(\"br\")])])])}),[],!1,null,null,null);a.default=e.exports}}]);","extractedComments":[]} \ No newline at end of file diff --git a/docs/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/b4/56/5b9e0acb8473c8229524ffe0ad27bf9fe3bf29f4ef864fb45bced1a691009fe9a52217cab2142ad230ec77cdbad914d259f60b88e929cf1de80a6e0b7d61 b/docs/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/b4/56/5b9e0acb8473c8229524ffe0ad27bf9fe3bf29f4ef864fb45bced1a691009fe9a52217cab2142ad230ec77cdbad914d259f60b88e929cf1de80a6e0b7d61 new file mode 100644 index 00000000..b08bedf5 --- /dev/null +++ b/docs/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/b4/56/5b9e0acb8473c8229524ffe0ad27bf9fe3bf29f4ef864fb45bced1a691009fe9a52217cab2142ad230ec77cdbad914d259f60b88e929cf1de80a6e0b7d61 @@ -0,0 +1 @@ +{"code":"(window.webpackJsonp=window.webpackJsonp||[]).push([[19],{362:function(s,t,a){\"use strict\";a.r(t);var n=a(41),r=Object(n.a)({},(function(){var s=this,t=s.$createElement,a=s._self._c||t;return a(\"ContentSlotsDistributor\",{attrs:{\"slot-key\":s.$parent.slotKey}},[a(\"h1\",{attrs:{id:\"安全沙盒的调用\"}},[a(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#安全沙盒的调用\"}},[s._v(\"#\")]),s._v(\" 安全沙盒的调用\")]),s._v(\" \"),a(\"blockquote\",[a(\"p\",[s._v(\"Judger-SandBox使用的是开源项目\"),a(\"a\",{attrs:{href:\"https://github.com/criyle/go-judge\",target:\"_blank\",rel:\"noopener noreferrer\"}},[s._v(\"go-judge\"),a(\"OutboundLink\")],1),s._v(\"Linux版本的可执行文件,更多调用方式请自行浏览\"),a(\"a\",{attrs:{href:\"https://github.com/criyle/go-judge\",target:\"_blank\",rel:\"noopener noreferrer\"}},[s._v(\"go-judge\"),a(\"OutboundLink\")],1)])]),s._v(\" \"),a(\"p\",[s._v(\"HOJ用的是java来调用此沙盒,请看\"),a(\"a\",{attrs:{href:\"https://gitee.com/himitzh0730/hoj/tree/master/hoj-springboot/JudgeServer/src/main/java/top/hcode/hoj/judge\",target:\"_blank\",rel:\"noopener noreferrer\"}},[s._v(\"JudgeServer-judge\"),a(\"OutboundLink\")],1),s._v(\"下的SandboxRun.java\")]),s._v(\" \"),a(\"p\",[s._v(\"启动\"),a(\"a\",{attrs:{href:\"https://gitee.com/himitzh0730/hoj/blob/master/judger/Judger-SandBox\",target:\"_blank\",rel:\"noopener noreferrer\"}},[s._v(\"Judger-SandBox\"),a(\"OutboundLink\")],1),s._v(\",默认监听5050端口\")]),s._v(\" \"),a(\"h4\",{attrs:{id:\"验证是否启动\"}},[a(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#验证是否启动\"}},[s._v(\"#\")]),s._v(\" 验证是否启动\")]),s._v(\" \"),a(\"p\",[s._v(\"访问:\"),a(\"code\",[s._v(\"http://localhost:5050/version\")])]),s._v(\" \"),a(\"h4\",{attrs:{id:\"编译\"}},[a(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#编译\"}},[s._v(\"#\")]),s._v(\" 编译\")]),s._v(\" \"),a(\"p\",[s._v(\"1.1 请求的url为\")]),s._v(\" \"),a(\"blockquote\",[a(\"p\",[a(\"code\",[s._v(\"http://localhost:5050/run\")])])]),s._v(\" \"),a(\"p\",[s._v(\"1.2 请求方式\")]),s._v(\" \"),a(\"blockquote\",[a(\"p\",[s._v(\"POST\")])]),s._v(\" \"),a(\"p\",[s._v(\"1.3 请求参数\")]),s._v(\" \"),a(\"blockquote\",[a(\"p\",[s._v(\"数据格式为json,内容如下\")])]),s._v(\" \"),a(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[a(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[a(\"code\",[s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"cmd\"')]),a(\"span\",{pre:!0,attrs:{class:\"token builtin class-name\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"[\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"args\"')]),a(\"span\",{pre:!0,attrs:{class:\"token builtin class-name\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"[\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"/usr/bin/g++\"')]),s._v(\", \\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"a.cc\"')]),s._v(\", \\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"-o\"')]),s._v(\", \\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"a\"')]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"]\")]),s._v(\", \\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"env\"')]),a(\"span\",{pre:!0,attrs:{class:\"token builtin class-name\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"[\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"PATH=/usr/bin:/bin\"')]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"]\")]),s._v(\", \\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"files\"')]),a(\"span\",{pre:!0,attrs:{class:\"token builtin class-name\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"[\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"content\"')]),a(\"span\",{pre:!0,attrs:{class:\"token builtin class-name\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"\"')]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\", \\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"name\"')]),a(\"span\",{pre:!0,attrs:{class:\"token builtin class-name\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"stdout\"')]),s._v(\", \\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"max\"')]),a(\"span\",{pre:!0,attrs:{class:\"token builtin class-name\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"10240\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\", \\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"name\"')]),a(\"span\",{pre:!0,attrs:{class:\"token builtin class-name\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"stderr\"')]),s._v(\", \\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"max\"')]),a(\"span\",{pre:!0,attrs:{class:\"token builtin class-name\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"10240\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"]\")]),s._v(\", \\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"cpuLimit\"')]),a(\"span\",{pre:!0,attrs:{class:\"token builtin class-name\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"10000000000\")]),s._v(\", \\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"memoryLimit\"')]),a(\"span\",{pre:!0,attrs:{class:\"token builtin class-name\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"104857600\")]),s._v(\", \\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"procLimit\"')]),a(\"span\",{pre:!0,attrs:{class:\"token builtin class-name\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"50\")]),s._v(\", \\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"copyIn\"')]),a(\"span\",{pre:!0,attrs:{class:\"token builtin class-name\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"a.cc\"')]),a(\"span\",{pre:!0,attrs:{class:\"token builtin class-name\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"content\"')]),a(\"span\",{pre:!0,attrs:{class:\"token builtin class-name\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"#include '),a(\"span\",{pre:!0,attrs:{class:\"token entity\",title:\"\\\\n\"}},[s._v(\"\\\\n\")]),s._v(\"using namespace std;\"),a(\"span\",{pre:!0,attrs:{class:\"token entity\",title:\"\\\\n\"}},[s._v(\"\\\\n\")]),s._v(\"int main() {\"),a(\"span\",{pre:!0,attrs:{class:\"token entity\",title:\"\\\\n\"}},[s._v(\"\\\\n\")]),s._v(\"int a, b;\"),a(\"span\",{pre:!0,attrs:{class:\"token entity\",title:\"\\\\n\"}},[s._v(\"\\\\n\")]),s._v(\"cin >> a >> b;\"),a(\"span\",{pre:!0,attrs:{class:\"token entity\",title:\"\\\\n\"}},[s._v(\"\\\\n\")]),s._v(\"cout << a + b << endl;\"),a(\"span\",{pre:!0,attrs:{class:\"token entity\",title:\"\\\\n\"}},[s._v(\"\\\\n\")]),s._v('}\"')]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\", \\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"copyOut\"')]),a(\"span\",{pre:!0,attrs:{class:\"token builtin class-name\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"[\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"stdout\"')]),s._v(\", \\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"stderr\"')]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"]\")]),s._v(\", \\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"copyOutCached\"')]),a(\"span\",{pre:!0,attrs:{class:\"token builtin class-name\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"[\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"a.cc\"')]),s._v(\", \\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"a\"')]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"]\")]),s._v(\", \\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"copyOutDir\"')]),a(\"span\",{pre:!0,attrs:{class:\"token builtin class-name\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"1\"')]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"]\")]),s._v(\"\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n\")])]),s._v(\" \"),a(\"div\",{staticClass:\"line-numbers-wrapper\"},[a(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"2\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"3\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"4\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"5\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"6\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"7\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"8\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"9\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"10\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"11\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"12\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"13\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"14\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"15\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"16\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"17\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"18\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"19\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"20\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"21\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"22\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"23\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"24\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"25\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"26\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"27\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"28\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"29\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"30\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"31\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"32\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"33\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"34\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"35\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"36\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"37\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"38\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"39\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"40\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"41\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"42\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"43\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"44\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"45\")]),a(\"br\")])]),a(\"p\",[s._v(\"1.4 返回的数据为json格式\")]),s._v(\" \"),a(\"div\",{staticClass:\"language-json line-numbers-mode\"},[a(\"pre\",{pre:!0,attrs:{class:\"language-json\"}},[a(\"code\",[s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"[\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"status\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"Accepted\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"exitStatus\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"0\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"time\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"303225231\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"memory\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"32243712\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"runTime\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"524177700\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"files\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"stderr\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"stdout\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"\"')]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"fileIds\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"a\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"WDQL5TNLRRVB2KAP\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"a.cc\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"NOHPGGDTYQUFRSLJ\"')]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"]\")]),s._v(\"\\n\")])]),s._v(\" \"),a(\"div\",{staticClass:\"line-numbers-wrapper\"},[a(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"2\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"3\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"4\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"5\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"6\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"7\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"8\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"9\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"10\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"11\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"12\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"13\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"14\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"15\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"16\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"17\")]),a(\"br\")])]),a(\"h4\",{attrs:{id:\"运行与评测\"}},[a(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#运行与评测\"}},[s._v(\"#\")]),s._v(\" 运行与评测\")]),s._v(\" \"),a(\"p\",[s._v(\"2.1 请求的url为\")]),s._v(\" \"),a(\"blockquote\",[a(\"p\",[a(\"code\",[s._v(\"http://localhost:5050/run\")])])]),s._v(\" \"),a(\"p\",[s._v(\"2.2 请求方式\")]),s._v(\" \"),a(\"blockquote\",[a(\"p\",[s._v(\"POST\")])]),s._v(\" \"),a(\"p\",[s._v(\"2.3 请求参数\")]),s._v(\" \"),a(\"blockquote\",[a(\"p\",[s._v(\"数据格式为json,内容如下\")])]),s._v(\" \"),a(\"div\",{staticClass:\"language-json line-numbers-mode\"},[a(\"pre\",{pre:!0,attrs:{class:\"language-json\"}},[a(\"code\",[a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"cmd\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"[\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"args\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"[\")]),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"a\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"]\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"env\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"[\")]),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"PATH=/usr/bin:/bin\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"LANG=en_US.UTF-8\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"LC_ALL=en_US.UTF-8\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"LANGUAGE=en_US:en\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"]\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"files\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"[\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"src\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"/judge/test_case/problem_1010/1.in\"')]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"name\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"stdout\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"max\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"10240\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"name\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"stderr\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"max\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"10240\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"]\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"cpuLimit\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"10000000000\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"realCpuLimit\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"30000000000\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"stackLimit\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"134217728\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"memoryLimit\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"104811111\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"procLimit\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"50\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"copyIn\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"a\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"fileId\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"WDQL5TNLRRVB2KAP\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"copyOut\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"[\")]),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"stdout\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"stderr\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"]\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"]\")]),s._v(\"\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n\")])]),s._v(\" \"),a(\"div\",{staticClass:\"line-numbers-wrapper\"},[a(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"2\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"3\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"4\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"5\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"6\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"7\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"8\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"9\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"10\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"11\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"12\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"13\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"14\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"15\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"16\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"17\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"18\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"19\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"20\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"21\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"22\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"23\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"24\")]),a(\"br\")])]),a(\"p\",[s._v(\"2.4 返回的数据为json格式\")]),s._v(\" \"),a(\"div\",{staticClass:\"language-json line-numbers-mode\"},[a(\"pre\",{pre:!0,attrs:{class:\"language-json\"}},[a(\"code\",[a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"[\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"status\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"Accepted\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"exitStatus\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"0\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"time\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"3171607\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"memory\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"475136\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"runTime\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"110396333\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"files\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"stderr\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"stdout\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"23\\\\n\"')]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"]\")]),s._v(\"\\n\")])]),s._v(\" \"),a(\"div\",{staticClass:\"line-numbers-wrapper\"},[a(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"2\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"3\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"4\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"5\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"6\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"7\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"8\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"9\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"10\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"11\")]),a(\"br\")])]),a(\"h4\",{attrs:{id:\"特殊判题\"}},[a(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#特殊判题\"}},[s._v(\"#\")]),s._v(\" 特殊判题\")]),s._v(\" \"),a(\"p\",[s._v(\"3.1 请求的url为\")]),s._v(\" \"),a(\"blockquote\",[a(\"p\",[a(\"code\",[s._v(\"http://localhost:5050/run\")])])]),s._v(\" \"),a(\"p\",[s._v(\"3.2 请求方式\")]),s._v(\" \"),a(\"blockquote\",[a(\"p\",[s._v(\"POST\")])]),s._v(\" \"),a(\"p\",[s._v(\"3.3 请求参数\")]),s._v(\" \"),a(\"blockquote\",[a(\"p\",[s._v(\"数据格式为json,内容如下\")])]),s._v(\" \"),a(\"div\",{staticClass:\"language-json line-numbers-mode\"},[a(\"pre\",{pre:!0,attrs:{class:\"language-json\"}},[a(\"code\",[s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"pipeMapping\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"[\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"in\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"max\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"16777216\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"index\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"0\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"fd\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"1\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"out\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"index\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"1\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"fd\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"0\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"]\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"cmd\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"[\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"stackLimit\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"134217728\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"cpuLimit\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"3000000000\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"realCpuLimit\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"9000000000\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"clockLimit\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"64\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"env\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"[\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"LANG=en_US.UTF-8\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"LANGUAGE=en_US:en\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"LC_ALL=en_US.UTF-8\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"PYTHONIOENCODING=utf-8\"')]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"]\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"copyOut\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"[\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"stderr\"')]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"]\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"args\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"[\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"/usr/bin/python3\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"main\"')]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"]\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"files\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"[\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"src\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"/judge/test_case/problem_1002/5.in\"')]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token null keyword\"}},[s._v(\"null\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"max\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"16777216\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"name\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"stderr\"')]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"]\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"memoryLimit\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"536870912\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"copyIn\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"main\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"fileId\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"CGTRDEMKW5VAYN6O\"')]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"stackLimit\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"134217728\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"cpuLimit\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"8000000000\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"clockLimit\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"24000000000\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"env\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"[\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"LANG=en_US.UTF-8\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"LANGUAGE=en_US:en\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"LC_ALL=en_US.UTF-8\"')]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"]\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"copyOut\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"[\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"stdout\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"stderr\"')]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"]\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"args\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"[\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"/w/spj\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"/w/tmp\"')]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"]\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"files\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"[\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token null keyword\"}},[s._v(\"null\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"max\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"16777216\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"name\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"stdout\"')]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"max\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"16777216\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"name\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"stderr\"')]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"]\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"memoryLimit\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"536870912\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"copyIn\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"spj\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"src\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"/judge/spj/1002/spj\"')]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"tmp\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"src\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"/judge/test_case/problem_1002/5.out\"')]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"procLimit\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"64\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"]\")]),s._v(\"\\n\")])]),s._v(\" \"),a(\"div\",{staticClass:\"line-numbers-wrapper\"},[a(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"2\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"3\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"4\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"5\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"6\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"7\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"8\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"9\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"10\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"11\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"12\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"13\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"14\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"15\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"16\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"17\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"18\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"19\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"20\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"21\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"22\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"23\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"24\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"25\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"26\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"27\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"28\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"29\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"30\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"31\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"32\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"33\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"34\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"35\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"36\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"37\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"38\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"39\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"40\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"41\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"42\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"43\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"44\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"45\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"46\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"47\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"48\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"49\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"50\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"51\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"52\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"53\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"54\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"55\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"56\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"57\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"58\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"59\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"60\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"61\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"62\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"63\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"64\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"65\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"66\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"67\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"68\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"69\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"70\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"71\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"72\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"73\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"74\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"75\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"76\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"77\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"78\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"79\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"80\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"81\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"82\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"83\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"84\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"85\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"86\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"87\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"88\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"89\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"90\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"91\")]),a(\"br\")])]),a(\"p\",[s._v(\"3.4 返回的数据为json格式\")]),s._v(\" \"),a(\"div\",{staticClass:\"language-json line-numbers-mode\"},[a(\"pre\",{pre:!0,attrs:{class:\"language-json\"}},[a(\"code\",[a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"[\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"status\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"Accepted\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"exitStatus\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"0\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"time\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"1545123\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"memory\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"253952\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"runTime\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"4148800\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"files\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"stderr\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"\"')]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"fileIds\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"status\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"Accepted\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"exitStatus\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"0\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"time\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"1501463\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"memory\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"253952\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"runTime\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"5897700\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"files\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"stderr\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"\"')]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"stdout\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"\"')]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token property\"}},[s._v('\"fileIds\"')]),a(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":\")]),s._v(\" \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n \"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n\"),a(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"]\")]),s._v(\"\\n\")])]),s._v(\" \"),a(\"div\",{staticClass:\"line-numbers-wrapper\"},[a(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"2\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"3\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"4\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"5\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"6\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"7\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"8\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"9\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"10\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"11\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"12\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"13\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"14\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"15\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"16\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"17\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"18\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"19\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"20\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"21\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"22\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"23\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"24\")]),a(\"br\"),a(\"span\",{staticClass:\"line-number\"},[s._v(\"25\")]),a(\"br\")])])])}),[],!1,null,null,null);t.default=r.exports}}]);","extractedComments":[]} \ No newline at end of file diff --git a/docs/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/d3/fb/ff3f0a3e2f4a1c143d8282bdbb33ea352c9a5815355cd387b39b9f976d1eb1c1055d81dd16e9e5edcf27ee00c46e4bdd24036f86f90c9d628cf7fcd81d2f b/docs/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/d3/fb/ff3f0a3e2f4a1c143d8282bdbb33ea352c9a5815355cd387b39b9f976d1eb1c1055d81dd16e9e5edcf27ee00c46e4bdd24036f86f90c9d628cf7fcd81d2f new file mode 100644 index 00000000..39c9f718 --- /dev/null +++ b/docs/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/d3/fb/ff3f0a3e2f4a1c143d8282bdbb33ea352c9a5815355cd387b39b9f976d1eb1c1055d81dd16e9e5edcf27ee00c46e4bdd24036f86f90c9d628cf7fcd81d2f @@ -0,0 +1 @@ +{"code":"(window.webpackJsonp=window.webpackJsonp||[]).push([[10],{359:function(s,a,t){\"use strict\";t.r(a);var n=t(41),e=Object(n.a)({},(function(){var s=this,a=s.$createElement,t=s._self._c||a;return t(\"ContentSlotsDistributor\",{attrs:{\"slot-key\":s.$parent.slotKey}},[t(\"h1\",{attrs:{id:\"快速部署\"}},[t(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#快速部署\"}},[s._v(\"#\")]),s._v(\" 快速部署\")]),s._v(\" \"),t(\"blockquote\",[t(\"p\",[s._v(\"前提:已经在上一步准备好docker与docker-compose\")])]),s._v(\" \"),t(\"h2\",{attrs:{id:\"一、单机部署\"}},[t(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#一、单机部署\"}},[s._v(\"#\")]),s._v(\" 一、单机部署\")]),s._v(\" \"),t(\"ol\",[t(\"li\",[t(\"p\",[s._v(\"选择好需要安装的位置,运行下面命令\")]),s._v(\" \"),t(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[t(\"code\",[t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"git\")]),s._v(\" clone https://gitee.com/himitzh0730/hoj-deploy.git \"),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"&&\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token builtin class-name\"}},[s._v(\"cd\")]),s._v(\" hoj-deploy\\n\")])]),s._v(\" \"),t(\"div\",{staticClass:\"line-numbers-wrapper\"},[t(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),t(\"br\")])])]),s._v(\" \"),t(\"li\",[t(\"p\",[s._v(\"进入文件夹,使用docker-compose启动各容器服务\")]),s._v(\" \"),t(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[t(\"code\",[t(\"span\",{pre:!0,attrs:{class:\"token builtin class-name\"}},[s._v(\"cd\")]),s._v(\" standAlone\\n\")])]),s._v(\" \"),t(\"div\",{staticClass:\"line-numbers-wrapper\"},[t(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),t(\"br\")])]),t(\"p\",[t(\"code\",[s._v(\"standAlone\")]),s._v(\"文件夹文件有以下:\")]),s._v(\" \"),t(\"div\",{staticClass:\"language-bash line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-bash\"}},[t(\"code\",[s._v(\"├── docker-compose.yml\\n├── .env\\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(\"p\",[s._v(\"主要配置请修改\"),t(\"code\",[s._v(\".env\")]),s._v(\"文件,内容如下:\")]),s._v(\" \"),t(\"blockquote\",[t(\"p\",[s._v(\"注意:各服务ip最好不改动,保持处于172.20.0.0/16网段的docker network\")])]),s._v(\" \"),t(\"div\",{staticClass:\"language-properties line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-properties\"}},[t(\"code\",[t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# redis的配置\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token attr-name\"}},[s._v(\"REDIS_HOST\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"=\")]),t(\"span\",{pre:!0,attrs:{class:\"token attr-value\"}},[s._v(\"172.20.0.2\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token attr-name\"}},[s._v(\"REDIS_PORT\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"=\")]),t(\"span\",{pre:!0,attrs:{class:\"token attr-value\"}},[s._v(\"6379\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token attr-name\"}},[s._v(\"REDIS_PASSWORD\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"=\")]),t(\"span\",{pre:!0,attrs:{class:\"token attr-value\"}},[s._v(\"hoj123456\")]),s._v(\"\\n\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# mysql的配置\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token attr-name\"}},[s._v(\"MYSQL_HOST\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"=\")]),t(\"span\",{pre:!0,attrs:{class:\"token attr-value\"}},[s._v(\"172.20.0.3\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token attr-name\"}},[s._v(\"MYSQL_PUBLIC_HOST\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"=\")]),t(\"span\",{pre:!0,attrs:{class:\"token attr-value\"}},[s._v(\"172.20.0.3 # 如果判题服务是分布式,请提供当前mysql所在服务器的公网ip\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token attr-name\"}},[s._v(\"MYSQL_PORT\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"=\")]),t(\"span\",{pre:!0,attrs:{class:\"token attr-value\"}},[s._v(\"3306\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token attr-name\"}},[s._v(\"MYSQL_ROOT_PASSWORD\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"=\")]),t(\"span\",{pre:!0,attrs:{class:\"token attr-value\"}},[s._v(\"hoj123456\")]),s._v(\"\\n\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# nacos的配置\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token attr-name\"}},[s._v(\"NACOS_HOST\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"=\")]),t(\"span\",{pre:!0,attrs:{class:\"token attr-value\"}},[s._v(\"172.20.0.4\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token attr-name\"}},[s._v(\"NACOS_PORT\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"=\")]),t(\"span\",{pre:!0,attrs:{class:\"token attr-value\"}},[s._v(\"8848\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token attr-name\"}},[s._v(\"NACOS_USERNAME\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"=\")]),t(\"span\",{pre:!0,attrs:{class:\"token attr-value\"}},[s._v(\"root\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token attr-name\"}},[s._v(\"NACOS_PASSWORD\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"=\")]),t(\"span\",{pre:!0,attrs:{class:\"token attr-value\"}},[s._v(\"hoj123456\")]),s._v(\"\\n\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# backend后端服务的配置\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token attr-name\"}},[s._v(\"BACKEND_HOST\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"=\")]),t(\"span\",{pre:!0,attrs:{class:\"token attr-value\"}},[s._v(\"172.20.0.5\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token attr-name\"}},[s._v(\"BACKEND_PORT\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"=\")]),t(\"span\",{pre:!0,attrs:{class:\"token attr-value\"}},[s._v(\"6688\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token attr-name\"}},[s._v(\"JWT_TOKEN_SECRET\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"=\")]),t(\"span\",{pre:!0,attrs:{class:\"token attr-value\"}},[s._v(\"default # token加密秘钥 默认则生成32位随机密钥\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token attr-name\"}},[s._v(\"JWT_TOKEN_EXPIRE\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"=\")]),t(\"span\",{pre:!0,attrs:{class:\"token attr-value\"}},[s._v(\"86400 # token过期时间默认为24小时 86400s\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token attr-name\"}},[s._v(\"JWT_TOKEN_FRESH_EXPIRE\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"=\")]),t(\"span\",{pre:!0,attrs:{class:\"token attr-value\"}},[s._v(\"43200 # token默认12小时可自动刷新\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token attr-name\"}},[s._v(\"JUDGE_TOKEN\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"=\")]),t(\"span\",{pre:!0,attrs:{class:\"token attr-value\"}},[s._v(\"default # 调用判题服务器的token 默认则生成32位随机密钥\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token attr-name\"}},[s._v(\"EMAIL_SERVER_HOST\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"=\")]),t(\"span\",{pre:!0,attrs:{class:\"token attr-value\"}},[s._v(\"smtp.qq.com # 请使用邮件服务的域名或ip\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token attr-name\"}},[s._v(\"EMAIL_SERVER_PORT\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"=\")]),t(\"span\",{pre:!0,attrs:{class:\"token attr-value\"}},[s._v(\"465\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token attr-name\"}},[s._v(\"EMAIL_USERNMAE\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"=\")]),t(\"span\",{pre:!0,attrs:{class:\"token attr-value\"}},[s._v(\"your_email_username\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token attr-name\"}},[s._v(\"EMAIL_PASSWORD\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"=\")]),t(\"span\",{pre:!0,attrs:{class:\"token attr-value\"}},[s._v(\"your_email_password\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# 开启虚拟判题请提供对应oj的账号密码 格式为 \")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# username1,username2,...\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# password1,password2,...\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token attr-name\"}},[s._v(\"HDU_ACCOUNT_USERNAME_LIST\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"=\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token attr-name\"}},[s._v(\"HDU_ACCOUNT_PASSWORD_LIST\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"=\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token attr-name\"}},[s._v(\"CF_ACCOUNT_USERNAME_LIST\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"=\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token attr-name\"}},[s._v(\"CF_ACCOUNT_PASSWORD_LIST\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"=\")]),s._v(\"\\n\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# judgeserver的配置\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token attr-name\"}},[s._v(\"JUDGE_SERVER_IP\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"=\")]),t(\"span\",{pre:!0,attrs:{class:\"token attr-value\"}},[s._v(\"172.20.0.7\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token attr-name\"}},[s._v(\"JUDGE_SERVER_PORT\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"=\")]),t(\"span\",{pre:!0,attrs:{class:\"token attr-value\"}},[s._v(\"8088\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token attr-name\"}},[s._v(\"JUDGE_SERVER_NAME\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"=\")]),t(\"span\",{pre:!0,attrs:{class:\"token attr-value\"}},[s._v(\"judger-alone\")]),s._v(\"\\n\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# docker network的配置\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token attr-name\"}},[s._v(\"SUBNET\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"=\")]),t(\"span\",{pre:!0,attrs:{class:\"token attr-value\"}},[s._v(\"172.20.0.0/16\")]),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(\"span\",{staticClass:\"line-number\"},[s._v(\"6\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"7\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"8\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"9\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"10\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"11\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"12\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"13\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"14\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"15\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"16\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"17\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"18\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"19\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"20\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"21\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"22\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"23\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"24\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"25\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"26\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"27\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"28\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"29\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"30\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"31\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"32\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"33\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"34\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"35\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"36\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"37\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"38\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"39\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"40\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"41\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"42\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"43\")]),t(\"br\")])]),t(\"p\",[s._v(\"如果不改动,则以默认参数启动\")]),s._v(\" \"),t(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[t(\"code\",[s._v(\"docker-compose up -d\\n\")])]),s._v(\" \"),t(\"div\",{staticClass:\"line-numbers-wrapper\"},[t(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),t(\"br\")])]),t(\"p\",[t(\"strong\",[s._v(\"根据网速情况,大约十到二十分钟拉取镜像,全程无需人工干预,拉取完毕后,自动启动容器服务,大概需要一至两分钟的初始化。\")])]),s._v(\" \"),t(\"p\",[s._v(\"等待命令执行完毕后,查看容器状态\")]),s._v(\" \"),t(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[t(\"code\",[s._v(\"docker \"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"ps\")]),s._v(\" -a\\n\")])]),s._v(\" \"),t(\"div\",{staticClass:\"line-numbers-wrapper\"},[t(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),t(\"br\")])]),t(\"p\",[s._v(\"当看到所有的容器的状态status都为\"),t(\"code\",[s._v(\"UP\")]),s._v(\"或\"),t(\"code\",[s._v(\"healthy\")]),s._v(\"就代表 OJ 已经启动成功。\")]),s._v(\" \"),t(\"blockquote\",[t(\"p\",[s._v(\"以下默认参数说明\")])]),s._v(\" \"),t(\"ul\",[t(\"li\",[s._v(\"默认超级管理员账号与密码:root / hoj123456\")]),s._v(\" \"),t(\"li\",[s._v(\"默认redis密码:hoj123456\")]),s._v(\" \"),t(\"li\",[s._v(\"默认mysql账号与密码:root / hoj123456\")]),s._v(\" \"),t(\"li\",[s._v(\"默认nacos管理员账号与密码:root / hoj123456\")]),s._v(\" \"),t(\"li\",[s._v(\"默认不开启https,开启需修改文件同时提供证书文件\")]),s._v(\" \"),t(\"li\",[s._v(\"判题并发数默认:cpu核心数*2\")]),s._v(\" \"),t(\"li\",[s._v(\"默认开启vj判题,需要手动修改添加账号与密码,如果不添加不能vj判题!\")]),s._v(\" \"),t(\"li\",[s._v(\"vj判题并发数默认:cpu核心数*4\")])])])]),s._v(\" \"),t(\"p\",[t(\"strong\",[s._v(\"登录root账号到后台查看服务状态以及到\"),t(\"code\",[s._v(\"http://ip/admin/conf\")]),s._v(\"修改服务配置!\")])]),s._v(\" \"),t(\"p\",[t(\"u\",[s._v(\"注意:网站的注册及用户账号相关操作需要邮件系统,所以请在系统配置中配置自己的SMTP邮件服务。\")])]),s._v(\" \"),t(\"p\",[t(\"strong\",[s._v(\"(如果已经在启动在.env文件配置了邮件服务即不用再次修改)\")])]),s._v(\" \"),t(\"div\",{staticClass:\"language-bash line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-bash\"}},[t(\"code\",[s._v(\"Host: smtp.qq.com\\nPort: \"),t(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"465\")]),s._v(\"\\nUsername: qq邮箱账号\\nPassword: 开启SMTP服务后生成的随机授权码\\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(\"h2\",{attrs:{id:\"二、分布式部署\"}},[t(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#二、分布式部署\"}},[s._v(\"#\")]),s._v(\" 二、分布式部署\")]),s._v(\" \"),t(\"ol\",[t(\"li\",[t(\"p\",[s._v(\"选择好需要安装的位置,运行下面命令\")]),s._v(\" \"),t(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[t(\"code\",[t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"git\")]),s._v(\" clone https://gitee.com/himitzh0730/hoj-deploy.git \"),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"&&\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token builtin class-name\"}},[s._v(\"cd\")]),s._v(\" hoj-deploy\\n\")])]),s._v(\" \"),t(\"div\",{staticClass:\"line-numbers-wrapper\"},[t(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),t(\"br\")])])]),s._v(\" \"),t(\"li\",[t(\"p\",[s._v(\"进入文件夹\")]),s._v(\" \"),t(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[t(\"code\",[t(\"span\",{pre:!0,attrs:{class:\"token builtin class-name\"}},[s._v(\"cd\")]),s._v(\" distributed\\n\")])]),s._v(\" \"),t(\"div\",{staticClass:\"line-numbers-wrapper\"},[t(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),t(\"br\")])]),t(\"p\",[t(\"code\",[s._v(\"distributed\")]),s._v(\"文件夹有以下:\")]),s._v(\" \"),t(\"div\",{staticClass:\"language-bash line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-bash\"}},[t(\"code\",[s._v(\"├── judgeserver\\n├── main\\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\")])])]),s._v(\" \"),t(\"li\",[t(\"p\",[s._v(\"首先部署主服务,即是数据后台服务(DataBackup)\")]),s._v(\" \"),t(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[t(\"code\",[t(\"span\",{pre:!0,attrs:{class:\"token builtin class-name\"}},[s._v(\"cd\")]),s._v(\" main\\n\")])]),s._v(\" \"),t(\"div\",{staticClass:\"line-numbers-wrapper\"},[t(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),t(\"br\")])]),t(\"p\",[s._v(\"该文件夹下有:\")]),s._v(\" \"),t(\"div\",{staticClass:\"language-bash line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-bash\"}},[t(\"code\",[s._v(\"├── docker-compose.yml\\n├── .env\\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(\"p\",[s._v(\"修改\"),t(\"code\",[s._v(\".env\")]),s._v(\"文件中的配置\")]),s._v(\" \"),t(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[t(\"code\",[t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"vim\")]),s._v(\" .env\\n\")])]),s._v(\" \"),t(\"div\",{staticClass:\"line-numbers-wrapper\"},[t(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),t(\"br\")])]),t(\"blockquote\",[t(\"p\",[s._v(\"注意:各服务ip最好不改动,保持处于172.20.0.0/16网段的docker network\")])]),s._v(\" \"),t(\"div\",{staticClass:\"language-properties line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-properties\"}},[t(\"code\",[t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# redis的配置\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token attr-name\"}},[s._v(\"REDIS_HOST\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"=\")]),t(\"span\",{pre:!0,attrs:{class:\"token attr-value\"}},[s._v(\"172.20.0.2\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token attr-name\"}},[s._v(\"REDIS_PORT\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"=\")]),t(\"span\",{pre:!0,attrs:{class:\"token attr-value\"}},[s._v(\"6379\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token attr-name\"}},[s._v(\"REDIS_PASSWORD\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"=\")]),t(\"span\",{pre:!0,attrs:{class:\"token attr-value\"}},[s._v(\"hoj123456\")]),s._v(\"\\n\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# mysql的配置\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token attr-name\"}},[s._v(\"MYSQL_HOST\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"=\")]),t(\"span\",{pre:!0,attrs:{class:\"token attr-value\"}},[s._v(\"172.20.0.3\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token attr-name\"}},[s._v(\"MYSQL_PUBLIC_HOST\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"=\")]),t(\"span\",{pre:!0,attrs:{class:\"token attr-value\"}},[s._v(\"172.20.0.3 # 请提供当前mysql所在服务器的公网ip\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token attr-name\"}},[s._v(\"MYSQL_PORT\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"=\")]),t(\"span\",{pre:!0,attrs:{class:\"token attr-value\"}},[s._v(\"3306\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token attr-name\"}},[s._v(\"MYSQL_ROOT_PASSWORD\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"=\")]),t(\"span\",{pre:!0,attrs:{class:\"token attr-value\"}},[s._v(\"hoj123456\")]),s._v(\"\\n\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# nacos的配置\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token attr-name\"}},[s._v(\"NACOS_HOST\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"=\")]),t(\"span\",{pre:!0,attrs:{class:\"token attr-value\"}},[s._v(\"172.20.0.4\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token attr-name\"}},[s._v(\"NACOS_PORT\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"=\")]),t(\"span\",{pre:!0,attrs:{class:\"token attr-value\"}},[s._v(\"8848\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token attr-name\"}},[s._v(\"NACOS_USERNAME\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"=\")]),t(\"span\",{pre:!0,attrs:{class:\"token attr-value\"}},[s._v(\"root\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token attr-name\"}},[s._v(\"NACOS_PASSWORD\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"=\")]),t(\"span\",{pre:!0,attrs:{class:\"token attr-value\"}},[s._v(\"hoj123456\")]),s._v(\"\\n\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# backend后端服务的配置\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token attr-name\"}},[s._v(\"BACKEND_HOST\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"=\")]),t(\"span\",{pre:!0,attrs:{class:\"token attr-value\"}},[s._v(\"172.20.0.5\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token attr-name\"}},[s._v(\"BACKEND_PORT\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"=\")]),t(\"span\",{pre:!0,attrs:{class:\"token attr-value\"}},[s._v(\"6688\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token attr-name\"}},[s._v(\"JWT_TOKEN_SECRET\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"=\")]),t(\"span\",{pre:!0,attrs:{class:\"token attr-value\"}},[s._v(\"default # token加密秘钥 默认则生成32位随机密钥\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token attr-name\"}},[s._v(\"JWT_TOKEN_EXPIRE\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"=\")]),t(\"span\",{pre:!0,attrs:{class:\"token attr-value\"}},[s._v(\"86400 # token过期时间默认为24小时 86400s\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token attr-name\"}},[s._v(\"JWT_TOKEN_FRESH_EXPIRE\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"=\")]),t(\"span\",{pre:!0,attrs:{class:\"token attr-value\"}},[s._v(\"43200 # token默认12小时可自动刷新\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token attr-name\"}},[s._v(\"JUDGE_TOKEN\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"=\")]),t(\"span\",{pre:!0,attrs:{class:\"token attr-value\"}},[s._v(\"default # 调用判题服务器的token 默认则生成32位随机密钥\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token attr-name\"}},[s._v(\"EMAIL_SERVER_HOST\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"=\")]),t(\"span\",{pre:!0,attrs:{class:\"token attr-value\"}},[s._v(\"smtp.qq.com # 请使用邮件服务的域名或ip\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token attr-name\"}},[s._v(\"EMAIL_SERVER_PORT\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"=\")]),t(\"span\",{pre:!0,attrs:{class:\"token attr-value\"}},[s._v(\"465\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token attr-name\"}},[s._v(\"EMAIL_USERNMAE\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"=\")]),t(\"span\",{pre:!0,attrs:{class:\"token attr-value\"}},[s._v(\"your_email_username\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token attr-name\"}},[s._v(\"EMAIL_PASSWORD\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"=\")]),t(\"span\",{pre:!0,attrs:{class:\"token attr-value\"}},[s._v(\"your_email_password\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# 开启虚拟判题请提供对应oj的账号密码 格式为 \")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# username1,username2,...\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# password1,password2,...\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token attr-name\"}},[s._v(\"HDU_ACCOUNT_USERNAME_LIST\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"=\")]),t(\"span\",{pre:!0,attrs:{class:\"token attr-value\"}},[s._v(\"username1,username2\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token attr-name\"}},[s._v(\"HDU_ACCOUNT_PASSWORD_LIST\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"=\")]),t(\"span\",{pre:!0,attrs:{class:\"token attr-value\"}},[s._v(\"password1,password2\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token attr-name\"}},[s._v(\"CF_ACCOUNT_USERNAME_LIST\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"=\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token attr-name\"}},[s._v(\"CF_ACCOUNT_PASSWORD_LIST\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"=\")]),s._v(\"\\n\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# 评测数据同步的配置\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token attr-name\"}},[s._v(\"RSYNC_PASSWORD\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"=\")]),t(\"span\",{pre:!0,attrs:{class:\"token attr-value\"}},[s._v(\"hoj123456 # 请修改数据同步密码\")]),s._v(\"\\n\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# docker network的配置\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token attr-name\"}},[s._v(\"SUBNET\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"=\")]),t(\"span\",{pre:!0,attrs:{class:\"token attr-value\"}},[s._v(\"172.20.0.0/16\")]),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(\"span\",{staticClass:\"line-number\"},[s._v(\"6\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"7\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"8\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"9\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"10\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"11\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"12\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"13\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"14\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"15\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"16\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"17\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"18\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"19\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"20\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"21\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"22\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"23\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"24\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"25\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"26\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"27\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"28\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"29\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"30\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"31\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"32\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"33\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"34\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"35\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"36\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"37\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"38\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"39\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"40\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"41\")]),t(\"br\")])]),t(\"p\",[s._v(\"配置修改保存后,当前路径下启动该服务\")]),s._v(\" \"),t(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[t(\"code\",[s._v(\"docker-compose up -d\\n\")])]),s._v(\" \"),t(\"div\",{staticClass:\"line-numbers-wrapper\"},[t(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),t(\"br\")])]),t(\"p\",[s._v(\"根据网速情况,大约十分钟即可安装完毕,全程无需人工干预。\")]),s._v(\" \"),t(\"p\",[s._v(\"等待命令执行完毕后,查看容器状态\")]),s._v(\" \"),t(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[t(\"code\",[s._v(\"docker \"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"ps\")]),s._v(\" -a\\n\")])]),s._v(\" \"),t(\"div\",{staticClass:\"line-numbers-wrapper\"},[t(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),t(\"br\")])]),t(\"p\",[s._v(\"当看到所有的容器的状态status都为\"),t(\"code\",[s._v(\"UP\")]),s._v(\"或\"),t(\"code\",[s._v(\"healthy\")]),s._v(\"就代表 OJ 已经启动成功。\")])]),s._v(\" \"),t(\"li\",[t(\"p\",[s._v(\"接着,在另一台服务器上,依旧git clone该文件夹下来,然后进入\"),t(\"code\",[s._v(\"judgeserver\")]),s._v(\"文件夹,修改\"),t(\"code\",[s._v(\".env\")]),s._v(\"的配置\")]),s._v(\" \"),t(\"div\",{staticClass:\"language-properties line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-properties\"}},[t(\"code\",[t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# nacos的配置\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token attr-name\"}},[s._v(\"NACOS_HOST\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"=\")]),t(\"span\",{pre:!0,attrs:{class:\"token attr-value\"}},[s._v(\"NACOS_HOST # 修改为nacos所在服务的ip,即主服务器的公网ip\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token attr-name\"}},[s._v(\"NACOS_PORT\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"=\")]),t(\"span\",{pre:!0,attrs:{class:\"token attr-value\"}},[s._v(\"8848 # 修改为nacos启动端口号,默认为8848\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token attr-name\"}},[s._v(\"NACOS_USERNAME\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"=\")]),t(\"span\",{pre:!0,attrs:{class:\"token attr-value\"}},[s._v(\"root # 修改为nacos的管理员账号\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token attr-name\"}},[s._v(\"NACOS_PASSWORD\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"=\")]),t(\"span\",{pre:!0,attrs:{class:\"token attr-value\"}},[s._v(\"hoj123456 # 修改为nacos的管理员密码\")]),s._v(\"\\n\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# judgeserver的配置\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token attr-name\"}},[s._v(\"JUDGE_SERVER_IP\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"=\")]),t(\"span\",{pre:!0,attrs:{class:\"token attr-value\"}},[s._v(\"172.20.0.7 # 修改为当前的服务器公网ip\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token attr-name\"}},[s._v(\"JUDGE_SERVER_PORT\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"=\")]),t(\"span\",{pre:!0,attrs:{class:\"token attr-value\"}},[s._v(\"8088 # judgeserver启动端口号\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token attr-name\"}},[s._v(\"JUDGE_SERVER_NAME\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"=\")]),t(\"span\",{pre:!0,attrs:{class:\"token attr-value\"}},[s._v(\"judger-1\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token attr-name\"}},[s._v(\"MAX_TASK_NUM\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"=\")]),t(\"span\",{pre:!0,attrs:{class:\"token attr-value\"}},[s._v(\"-1 # -1表示最大并行任务数为cpu核心数*2\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token attr-name\"}},[s._v(\"REMOTE_JUDGE_OPEN\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"=\")]),t(\"span\",{pre:!0,attrs:{class:\"token attr-value\"}},[s._v(\"true # 当前判题服务器是否开启远程虚拟判题功能\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token attr-name\"}},[s._v(\"REMOTE_JUDGE_MAX_TASK_NUM\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"=\")]),t(\"span\",{pre:!0,attrs:{class:\"token attr-value\"}},[s._v(\"-1 # -1表示最大并行任务数为(cpu核心数*2)*2\")]),s._v(\"\\n\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# rsync评测数据同步的配置\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token attr-name\"}},[s._v(\"RSYNC_MASTER_ADDR\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"=\")]),t(\"span\",{pre:!0,attrs:{class:\"token attr-value\"}},[s._v(\"127.0.0.1 # 写入主服务器ip\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token attr-name\"}},[s._v(\"RSYNC_PASSWORD\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"=\")]),t(\"span\",{pre:!0,attrs:{class:\"token attr-value\"}},[s._v(\"hoj123456 # 与主服务器的rsync密码一致\")]),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(\"span\",{staticClass:\"line-number\"},[s._v(\"6\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"7\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"8\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"9\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"10\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"11\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"12\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"13\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"14\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"15\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"16\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"17\")]),t(\"br\")])]),t(\"p\",[s._v(\"配置修改保存后,当前路径下启动该服务\")]),s._v(\" \"),t(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[t(\"code\",[s._v(\"docker-compose up -d\\n\")])]),s._v(\" \"),t(\"div\",{staticClass:\"line-numbers-wrapper\"},[t(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),t(\"br\")])]),t(\"blockquote\",[t(\"p\",[s._v(\"提示:需要开启多台判题机,就如当前第4步的操作一样,在每台服务器上执行以上的操作即可。\")])])]),s._v(\" \"),t(\"li\",[t(\"p\",[s._v(\"两个服务都启动完成,在浏览器输入主服务ip或域名进行访问,登录root账号到后台查看服务状态。\")])])]),s._v(\" \"),t(\"h2\",{attrs:{id:\"三、开启https\"}},[t(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#三、开启https\"}},[s._v(\"#\")]),s._v(\" 三、开启Https\")]),s._v(\" \"),t(\"ul\",[t(\"li\",[t(\"p\",[s._v(\"单机部署:\")]),s._v(\" \"),t(\"p\",[s._v(\"提供server.crt和server.key证书与密钥文件放置\"),t(\"code\",[s._v(\"/standAlone\")]),s._v(\"目录下,与\"),t(\"code\",[s._v(\"docker-compose.yml\")]),s._v(\"和\"),t(\"code\",[s._v(\".env\")]),s._v(\"文件放置同一位置,然后修改\"),t(\"code\",[s._v(\"docker-compose.yml\")]),s._v(\"中的hoj-frontend的配置\")])]),s._v(\" \"),t(\"li\",[t(\"p\",[s._v(\"分布式部署:\")]),s._v(\" \"),t(\"p\",[s._v(\"提供server.crt和server.key证书与密钥文件放置\"),t(\"code\",[s._v(\"/distributed/main目录下,与\")]),s._v(\"docker-compose.yml\"),t(\"code\",[s._v(\"和\")]),s._v(\".env\"),t(\"code\",[s._v(\"文件放置同一位置,然后修改\")]),s._v(\"docker-compose.yml`中的hoj-frontend的配置\")])])]),s._v(\" \"),t(\"div\",{staticClass:\"language-yaml line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-yaml\"}},[t(\"code\",[t(\"span\",{pre:!0,attrs:{class:\"token key atrule\"}},[s._v(\"hoj-frontend\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token key atrule\"}},[s._v(\"image\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\" registry.cn\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\"shenzhen.aliyuncs.com/hcode/hoj_frontend\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token key atrule\"}},[s._v(\"container_name\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\" hoj\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\"frontend\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token key atrule\"}},[s._v(\"restart\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\" always\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# 开启https,请提供证书\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token key atrule\"}},[s._v(\"volumes\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\" ./server.crt\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\"/etc/nginx/etc/crt/server.crt\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\" ./server.key\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\"/etc/nginx/etc/crt/server.key\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# 修改前端logo\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# - ./logo.a0924d7d.png:/usr/share/nginx/html/assets/img/logo.a0924d7d.png\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# - ./backstage.8bce8c6e.png:/usr/share/nginx/html/assets/img/backstage.8bce8c6e.png\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token key atrule\"}},[s._v(\"environment\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\" SERVER_NAME=localhost \"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# 提供你的域名!!!!\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\" BACKEND_SERVER_HOST=$\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"BACKEND_HOST\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\"172.20.0.5\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# backend后端服务地址\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\" BACKEND_SERVER_PORT=$\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"BACKEND_PORT\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),t(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"-6688\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# backend后端服务端口号\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\" USE_HTTPS=true \"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# 使用https请设置为true\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token key atrule\"}},[s._v(\"ports\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"80:80\"')]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"443:443\"')]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token key atrule\"}},[s._v(\"networks\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token key atrule\"}},[s._v(\"hoj-network\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\"\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token key atrule\"}},[s._v(\"ipv4_address\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\" 172.20.0.6\\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(\"span\",{staticClass:\"line-number\"},[s._v(\"6\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"7\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"8\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"9\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"10\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"11\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"12\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"13\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"14\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"15\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"16\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"17\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"18\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"19\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"20\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"21\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"22\")]),t(\"br\")])])])}),[],!1,null,null,null);a.default=e.exports}}]);","extractedComments":[]} \ No newline at end of file diff --git a/docs/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/fa/bd/c4030cc30ddcdaabacd990906865cd1edf1fa427d49f450487e2fda32eab9b92a9639972ba34a3681e99d2637cc726d567ba40ba6d172dccd27cc47f544e b/docs/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/fa/bd/c4030cc30ddcdaabacd990906865cd1edf1fa427d49f450487e2fda32eab9b92a9639972ba34a3681e99d2637cc726d567ba40ba6d172dccd27cc47f544e new file mode 100644 index 00000000..ebc1ad9b --- /dev/null +++ b/docs/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/fa/bd/c4030cc30ddcdaabacd990906865cd1edf1fa427d49f450487e2fda32eab9b92a9639972ba34a3681e99d2637cc726d567ba40ba6d172dccd27cc47f544e @@ -0,0 +1 @@ +{"code":"(window.webpackJsonp=window.webpackJsonp||[]).push([[13],{360:function(s,a,t){\"use strict\";t.r(a);var n=t(41),e=Object(n.a)({},(function(){var s=this,a=s.$createElement,t=s._self._c||a;return t(\"ContentSlotsDistributor\",{attrs:{\"slot-key\":s.$parent.slotKey}},[t(\"h1\",{attrs:{id:\"mysql部署\"}},[t(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#mysql部署\"}},[s._v(\"#\")]),s._v(\" MySQL部署\")]),s._v(\" \"),t(\"p\",[s._v(\"首先 先下载\"),t(\"a\",{attrs:{href:\"https://gitee.com/himitzh0730/hoj-deploy/tree/master\",target:\"_blank\",rel:\"noopener noreferrer\"}},[s._v(\"hoj-deploy\"),t(\"OutboundLink\")],1)]),s._v(\" \"),t(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[t(\"code\",[t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"git\")]),s._v(\" clone https://gitee.com/himitzh0730/hoj-deploy.git \"),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"&&\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token builtin class-name\"}},[s._v(\"cd\")]),s._v(\" hoj-deploy/src/mysql\\n\")])]),s._v(\" \"),t(\"div\",{staticClass:\"line-numbers-wrapper\"},[t(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),t(\"br\")])]),t(\"h2\",{attrs:{id:\"前言\"}},[t(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#前言\"}},[s._v(\"#\")]),s._v(\" 前言\")]),s._v(\" \"),t(\"p\",[s._v(\"当前文件夹为打包\"),t(\"code\",[s._v(\"hoj-mysql\")]),s._v(\"镜像的相关文件,只需将这些文件复制到同一个文件夹内,之后执行以下命令进行打包成镜像。\")]),s._v(\" \"),t(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[t(\"code\",[s._v(\"docker build -t hoj-mysql \"),t(\"span\",{pre:!0,attrs:{class:\"token builtin class-name\"}},[s._v(\".\")]),s._v(\"\\n\")])]),s._v(\" \"),t(\"div\",{staticClass:\"line-numbers-wrapper\"},[t(\"span\",{staticClass:\"line-number\"},[s._v(\"1\")]),t(\"br\")])]),t(\"p\",[s._v(\"docker run启动\")]),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 hoj-mysql \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"\\\\\")]),s._v(\"\\n-v ./hoj/data/mysql/data:/var/lib/mysql \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"\\\\\")]),s._v(\"\\n-e \"),t(\"span\",{pre:!0,attrs:{class:\"token assign-left variable\"}},[s._v(\"MYSQL_ROOT_PASSWORD\")]),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"=\")]),t(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"hoj123456\"')]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"\\\\\")]),s._v(\"\\n-e \"),t(\"span\",{pre:!0,attrs:{class:\"token assign-left variable\"}},[s._v(\"TZ\")]),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"=\")]),t(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"Asia/Shanghai\"')]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"\\\\\")]),s._v(\"\\n-e \"),t(\"span\",{pre:!0,attrs:{class:\"token assign-left variable\"}},[s._v(\"NACOS_USERNAME\")]),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"=\")]),s._v(\"root \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"\\\\\")]),s._v(\"\\n-e \"),t(\"span\",{pre:!0,attrs:{class:\"token assign-left variable\"}},[s._v(\"NACOS_PASSWORD\")]),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"=\")]),s._v(\"hoj123456 \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"\\\\\")]),s._v(\"\\n-p \"),t(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"3306\")]),s._v(\":3306 \"),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(\"\\nhoj-mysql\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"#registry.cn-shenzhen.aliyuncs.com/hcode/hoj_database\")]),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(\"span\",{staticClass:\"line-number\"},[s._v(\"6\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"7\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"8\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"9\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"10\")]),t(\"br\")])]),t(\"p\",[s._v(\"docker-compose 启动\")]),s._v(\" \"),t(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[t(\"code\",[s._v(\"version: \"),t(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"3\"')]),s._v(\"\\nservices:\\n hoj-mysql:\\n \"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"#image: registry.cn-shenzhen.aliyuncs.com/hcode/hoj_database\")]),s._v(\"\\n image: hoj-mysql\\n container_name: hoj-mysql\\n restart: always\\n volumes:\\n - ./hoj/data/mysql/data:/var/lib/mysql\\n environment:\\n - \"),t(\"span\",{pre:!0,attrs:{class:\"token assign-left variable\"}},[s._v(\"MYSQL_ROOT_PASSWORD\")]),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"=\")]),s._v(\"hoj123456 \"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# root账号的密码\")]),s._v(\"\\n - \"),t(\"span\",{pre:!0,attrs:{class:\"token assign-left variable\"}},[s._v(\"TZ\")]),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"=\")]),s._v(\"Asia/Shanghai\\n - \"),t(\"span\",{pre:!0,attrs:{class:\"token assign-left variable\"}},[s._v(\"NACOS_USERNAME\")]),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"=\")]),s._v(\"root \"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# 需要初始化nacos数据库的管理员账号\")]),s._v(\"\\n - \"),t(\"span\",{pre:!0,attrs:{class:\"token assign-left variable\"}},[s._v(\"NACOS_PASSWORD\")]),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"=\")]),s._v(\"hoj123456 \"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# nacos管理员账号的密码\")]),s._v(\"\\n ports:\\n - \"),t(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"3306:3306\"')]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# 如果有自定义网络可以类似添加如下\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# networks:\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# hoj-network:\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"# ipv4_address: 172.20.0.3\")]),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(\"span\",{staticClass:\"line-number\"},[s._v(\"6\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"7\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"8\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"9\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"10\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"11\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"12\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"13\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"14\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"15\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"16\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"17\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"18\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"19\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"20\")]),t(\"br\")])]),t(\"h2\",{attrs:{id:\"文件介绍\"}},[t(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#文件介绍\"}},[s._v(\"#\")]),s._v(\" 文件介绍\")]),s._v(\" \"),t(\"h3\",{attrs:{id:\"_1-bcrypt\"}},[t(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#_1-bcrypt\"}},[s._v(\"#\")]),s._v(\" 1. bcrypt\")]),s._v(\" \"),t(\"p\",[s._v(\"此文件为go打包的可执行文件,作用是生成经过bcrypt加密的对应\"),t(\"strong\",[s._v(\"nacos管理员账号的密码\")]),s._v(\",然后生成对应的插入sql语句,代码内容如下:\")]),s._v(\" \"),t(\"div\",{staticClass:\"language-go line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-go\"}},[t(\"code\",[t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"package\")]),s._v(\" main\\n\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"import\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"(\")]),s._v(\"\\n\\t\"),t(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"flag\"')]),s._v(\"\\n\\t\"),t(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"fmt\"')]),s._v(\"\\n\\t\"),t(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"golang.org/x/crypto/bcrypt\"')]),s._v(\"\\n\\t\"),t(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"os\"')]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\")\")]),s._v(\"\\n\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"// 加密密码\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"func\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"HashAndSalt\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"(\")]),s._v(\"pwd \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"[\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"]\")]),t(\"span\",{pre:!0,attrs:{class:\"token builtin\"}},[s._v(\"byte\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\")\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token builtin\"}},[s._v(\"string\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n\\n\\thash\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" err \"),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":=\")]),s._v(\" bcrypt\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\".\")]),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"GenerateFromPassword\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"(\")]),s._v(\"pwd\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" bcrypt\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\".\")]),s._v(\"MinCost\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\")\")]),s._v(\"\\n\\t\"),t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"if\")]),s._v(\" err \"),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"!=\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token boolean\"}},[s._v(\"nil\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n\\n\\t\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n\\t\"),t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"return\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"string\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"(\")]),s._v(\"hash\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\")\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"func\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"main\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"(\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\")\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n\\t\"),t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"var\")]),s._v(\" username \"),t(\"span\",{pre:!0,attrs:{class:\"token builtin\"}},[s._v(\"string\")]),s._v(\"\\n\\t\"),t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"var\")]),s._v(\" password \"),t(\"span\",{pre:!0,attrs:{class:\"token builtin\"}},[s._v(\"string\")]),s._v(\"\\n\\t\"),t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"var\")]),s._v(\" filePath \"),t(\"span\",{pre:!0,attrs:{class:\"token builtin\"}},[s._v(\"string\")]),s._v(\"\\n\\n\\tflag\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\".\")]),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"StringVar\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"(\")]),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"&\")]),s._v(\"username\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),t(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"username\"')]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"nacos\"')]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"nacos登录账号\"')]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\")\")]),s._v(\"\\n\\tflag\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\".\")]),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"StringVar\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"(\")]),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"&\")]),s._v(\"password\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),t(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"password\"')]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"nacos\"')]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"nacos登录密码\"')]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\")\")]),s._v(\"\\n\\tflag\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\".\")]),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"StringVar\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"(\")]),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"&\")]),s._v(\"filePath\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),t(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"filepath\"')]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"./nacos-data.sql\"')]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"sql脚本的文件夹路径\"')]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\")\")]),s._v(\"\\n\\n\\t\"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"//解析命令行参数\")]),s._v(\"\\n\\tflag\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\".\")]),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"Parse\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"(\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\")\")]),s._v(\"\\n\\n\\tbcrtpyPassword \"),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":=\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"HashAndSalt\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"(\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"[\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"]\")]),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"byte\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"(\")]),s._v(\"password\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\")\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\")\")]),s._v(\"\\n\\n\\tsql \"),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":=\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v(\"\\\"use `nacos`;\\\\nINSERT INTO users (username, password, enabled) VALUES ('%s', '%s', TRUE);\\\\nINSERT INTO roles (username, role) VALUES ('%s', 'ROLE_ADMIN');\\\"\")]),s._v(\"\\n\\tformatSql \"),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":=\")]),s._v(\" fmt\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\".\")]),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"Sprintf\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"(\")]),s._v(\"sql\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" username\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" bcrtpyPassword\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" username\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\")\")]),s._v(\"\\n\\n\\tfileObj\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" err \"),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\":=\")]),s._v(\" os\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\".\")]),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"OpenFile\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"(\")]),s._v(\"filePath\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" os\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\".\")]),s._v(\"O_APPEND\"),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"|\")]),s._v(\"os\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\".\")]),s._v(\"O_CREATE\"),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"|\")]),s._v(\"os\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\".\")]),s._v(\"O_WRONLY\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\",\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"0111\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\")\")]),s._v(\"\\n\\n\\t\"),t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"if\")]),s._v(\" err \"),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"!=\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token boolean\"}},[s._v(\"nil\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"\\n\\t\\tfmt\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\".\")]),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"Println\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"(\")]),t(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v('\"err:\"')]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"+\")]),s._v(\" err\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\".\")]),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"Error\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"(\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\")\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\")\")]),s._v(\"\\n\\t\\t\"),t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"return\")]),s._v(\"\\n\\t\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n\\t\"),t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"defer\")]),s._v(\" fileObj\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\".\")]),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"Close\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"(\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\")\")]),s._v(\"\\n\\tfileObj\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\".\")]),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"WriteString\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"(\")]),s._v(\"formatSql\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\")\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),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(\"span\",{staticClass:\"line-number\"},[s._v(\"6\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"7\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"8\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"9\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"10\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"11\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"12\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"13\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"14\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"15\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"16\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"17\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"18\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"19\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"20\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"21\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"22\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"23\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"24\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"25\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"26\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"27\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"28\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"29\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"30\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"31\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"32\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"33\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"34\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"35\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"36\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"37\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"38\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"39\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"40\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"41\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"42\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"43\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"44\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"45\")]),t(\"br\")])]),t(\"h3\",{attrs:{id:\"_2-hoj-sql\"}},[t(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#_2-hoj-sql\"}},[s._v(\"#\")]),s._v(\" 2. hoj.sql\")]),s._v(\" \"),t(\"p\",[s._v(\"此文件为hoj数据库的生成脚本及相关表数据的初始化\")]),s._v(\" \"),t(\"h3\",{attrs:{id:\"_3-nacos-sql\"}},[t(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#_3-nacos-sql\"}},[s._v(\"#\")]),s._v(\" 3. nacos.sql\")]),s._v(\" \"),t(\"p\",[s._v(\"此文件为nacos数据库的生成脚本及相关表数据的初始化\")]),s._v(\" \"),t(\"h3\",{attrs:{id:\"_4-run-sh\"}},[t(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#_4-run-sh\"}},[s._v(\"#\")]),s._v(\" 4. run.sh\")]),s._v(\" \"),t(\"p\",[s._v(\"此文件为shell脚本,用于执行sql脚本文件的执行,生成hoj,nacos数据库及插入相关数据\")]),s._v(\" \"),t(\"div\",{staticClass:\"language-shell line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-shell\"}},[t(\"code\",[t(\"span\",{pre:!0,attrs:{class:\"token shebang important\"}},[s._v(\"#!/bin/bash\")]),s._v(\"\\n\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token variable\"}},[s._v(\"$WORK_PATH\")]),s._v(\"/bcrypt --username\"),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"=\")]),t(\"span\",{pre:!0,attrs:{class:\"token variable\"}},[s._v(\"$NACOS_USERNAME\")]),s._v(\" --password\"),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"=\")]),t(\"span\",{pre:!0,attrs:{class:\"token variable\"}},[s._v(\"$NACOS_PASSWORD\")]),s._v(\" --filepath\"),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"=\")]),t(\"span\",{pre:!0,attrs:{class:\"token variable\"}},[s._v(\"$WORK_PATH\")]),s._v(\"/\"),t(\"span\",{pre:!0,attrs:{class:\"token variable\"}},[s._v(\"$FILE_2\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token function\"}},[s._v(\"sleep\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token number\"}},[s._v(\"2\")]),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\";\")]),s._v(\"\\n\\nmysql -uroot -p\"),t(\"span\",{pre:!0,attrs:{class:\"token variable\"}},[s._v(\"$MYSQL_ROOT_PASSWORD\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token operator\"}},[s._v(\"<<\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v(\"EOF\\nsystem echo '================Start create database hoj====================';\\nsource \"),t(\"span\",{pre:!0,attrs:{class:\"token variable\"}},[s._v(\"$WORK_PATH\")]),s._v(\"/\"),t(\"span\",{pre:!0,attrs:{class:\"token variable\"}},[s._v(\"$FILE_0\")]),s._v(\";\\nsystem echo '================Start create database nacos==================';\\nsource \"),t(\"span\",{pre:!0,attrs:{class:\"token variable\"}},[s._v(\"$WORK_PATH\")]),s._v(\"/\"),t(\"span\",{pre:!0,attrs:{class:\"token variable\"}},[s._v(\"$FILE_1\")]),s._v(\";\\nsystem echo '================Start insert user into nacos=================';\\nsource \"),t(\"span\",{pre:!0,attrs:{class:\"token variable\"}},[s._v(\"$WORK_PATH\")]),s._v(\"/\"),t(\"span\",{pre:!0,attrs:{class:\"token variable\"}},[s._v(\"$FILE_2\")]),s._v(\";\\nsystem echo '=====================Everything is ok!=======================';\\nEOF\")]),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(\"span\",{staticClass:\"line-number\"},[s._v(\"6\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"7\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"8\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"9\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"10\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"11\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"12\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"13\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"14\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"15\")]),t(\"br\")])]),t(\"h3\",{attrs:{id:\"_5-dockerfile\"}},[t(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#_5-dockerfile\"}},[s._v(\"#\")]),s._v(\" 5. Dockerfile\")]),s._v(\" \"),t(\"div\",{staticClass:\"language-dockerfile line-numbers-mode\"},[t(\"pre\",{pre:!0,attrs:{class:\"language-dockerfile\"}},[t(\"code\",[t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"FROM\")]),s._v(\" mysql\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\":\")]),s._v(\"8\\n\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"#定义工作目录\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"ENV\")]),s._v(\" WORK_PATH /usr/local/work\\n\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"#定义会被容器自动执行的目录\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"ENV\")]),s._v(\" AUTO_RUN_DIR /docker\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\"entrypoint\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\"initdb.d\\n\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"#定义sql文件名\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"ENV\")]),s._v(\" FILE_0 hoj.sql\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"ENV\")]),s._v(\" FILE_1 nacos.sql\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"ENV\")]),s._v(\" FILE_2 nacos\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"-\")]),s._v(\"data.sql\\n\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"#定义shell文件名\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"ENV\")]),s._v(\" INSTALL_DATA_SHELL run.sh\\n\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"#定义生成nacos-data.sql的文件名\")]),s._v(\"\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"ENV\")]),s._v(\" NACOS_DATA_SHELL bcrypt\\n\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"ENV\")]),s._v(\" NACOS_USERNAME=$\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"NACOS_USERNAME\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"ENV\")]),s._v(\" NACOS_PASSWORD=$\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"{\")]),s._v(\"NACOS_PASSWORD\"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\"}\")]),s._v(\"\\n\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"COPY\")]),s._v(\" ./$FILE_0 $WORK_PATH/\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"COPY\")]),s._v(\" ./$FILE_1 $WORK_PATH/\\n\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"COPY\")]),s._v(\" ./$INSTALL_DATA_SHELL $AUTO_RUN_DIR/\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"COPY\")]),s._v(\" ./bcrypt $WORK_PATH/\\n\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"RUN\")]),s._v(\" chmod a+x $WORK_PATH/bcrypt\\n\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"RUN\")]),s._v(\" echo \"),t(\"span\",{pre:!0,attrs:{class:\"token string\"}},[s._v(\"''\")]),s._v(\" \"),t(\"span\",{pre:!0,attrs:{class:\"token punctuation\"}},[s._v(\">\")]),s._v(\" $WORK_PATH/$FILE_2\\n\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"RUN\")]),s._v(\" chmod +777 $WORK_PATH/$FILE_2\\n\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token comment\"}},[s._v(\"#给执行文件增加可执行权限\")]),s._v(\"\\n\\n\"),t(\"span\",{pre:!0,attrs:{class:\"token keyword\"}},[s._v(\"RUN\")]),s._v(\" chmod a+x $AUTO_RUN_DIR/$INSTALL_DATA_SHELL\\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(\"span\",{staticClass:\"line-number\"},[s._v(\"6\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"7\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"8\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"9\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"10\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"11\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"12\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"13\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"14\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"15\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"16\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"17\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"18\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"19\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"20\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"21\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"22\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"23\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"24\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"25\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"26\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"27\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"28\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"29\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"30\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"31\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"32\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"33\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"34\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"35\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"36\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"37\")]),t(\"br\"),t(\"span\",{staticClass:\"line-number\"},[s._v(\"38\")]),t(\"br\")])])])}),[],!1,null,null,null);a.default=e.exports}}]);","extractedComments":[]} \ No newline at end of file diff --git a/docs/node_modules/.cache/terser-webpack-plugin/index-v5/12/6e/75f8d57c6023083bf18934d98e0f05a48f95095f9141652da6e1a46553ae b/docs/node_modules/.cache/terser-webpack-plugin/index-v5/12/6e/75f8d57c6023083bf18934d98e0f05a48f95095f9141652da6e1a46553ae new file mode 100644 index 00000000..b598bd7f --- /dev/null +++ b/docs/node_modules/.cache/terser-webpack-plugin/index-v5/12/6e/75f8d57c6023083bf18934d98e0f05a48f95095f9141652da6e1a46553ae @@ -0,0 +1,2 @@ + +bc3cb94553a1cd389983378532c5cda57916b9eb {"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\":\"f6091d72683a4523844dd7f5ad3c4a72\"}","integrity":"sha512-WHMGOmrOcm9gfeGmQcxvVP0Bbqqrv27rqPWmz+QwceqPrCFwKHwukEY8X8yEBaVomeYnmp9ndp5iQZq4C8YgNg==","time":1623046831492,"size":65546} \ No newline at end of file diff --git a/docs/node_modules/.cache/terser-webpack-plugin/index-v5/2a/c5/7dec552097e60280e4c49651a7f81eb4bcb13df1549c291af61cca7fe219 b/docs/node_modules/.cache/terser-webpack-plugin/index-v5/2a/c5/7dec552097e60280e4c49651a7f81eb4bcb13df1549c291af61cca7fe219 new file mode 100644 index 00000000..24828781 --- /dev/null +++ b/docs/node_modules/.cache/terser-webpack-plugin/index-v5/2a/c5/7dec552097e60280e4c49651a7f81eb4bcb13df1549c291af61cca7fe219 @@ -0,0 +1,2 @@ + +e6dca5aa9bcdfd546c8e378ed22cdd35d53fc746 {"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\":\"27e687bc1df2796c480e9a8de410f649\"}","integrity":"sha512-rQ/fldRj4Z9BCv3i1P6s0wkCx/rvA0cbHh5QC3URKbKQE+mh3hynnQc1jzwsXSzoAZ7arWiD18UeQQhRzQ/BAw==","time":1623046756530,"size":46250} \ No newline at end of file diff --git a/docs/node_modules/.cache/terser-webpack-plugin/index-v5/32/74/82e633040d6d0439f6394d7620147fa3c2decb7f43b0a726894d30ca0ee3 b/docs/node_modules/.cache/terser-webpack-plugin/index-v5/32/74/82e633040d6d0439f6394d7620147fa3c2decb7f43b0a726894d30ca0ee3 new file mode 100644 index 00000000..82adba0d --- /dev/null +++ b/docs/node_modules/.cache/terser-webpack-plugin/index-v5/32/74/82e633040d6d0439f6394d7620147fa3c2decb7f43b0a726894d30ca0ee3 @@ -0,0 +1,2 @@ + +2eebe83348f957a1507a53e3c035f7bbc2d7e571 {"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\":\"f6596556820360ea290cd1bd3fca7425\"}","integrity":"sha512-LnGxaKFklNjqdjMq8/bQAfTWFRDx4gHzUo22mwpMrsmKhnduK7LblN9PFyuS6AnQ/zw6oQ6YW7jaq5HBbLKNqA==","time":1623046755715,"size":1765} \ No newline at end of file diff --git a/docs/node_modules/.cache/terser-webpack-plugin/index-v5/33/8a/e56593511268cbfd334a037e8d9a93632ca520b1458ba510277ed08e9708 b/docs/node_modules/.cache/terser-webpack-plugin/index-v5/33/8a/e56593511268cbfd334a037e8d9a93632ca520b1458ba510277ed08e9708 new file mode 100644 index 00000000..03da7a85 --- /dev/null +++ b/docs/node_modules/.cache/terser-webpack-plugin/index-v5/33/8a/e56593511268cbfd334a037e8d9a93632ca520b1458ba510277ed08e9708 @@ -0,0 +1,2 @@ + +4a3a725db6291cd3ce090a7b7ddcd8961e7072c1 {"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\":\"8290efdad19b17536553baeee6a43e16\"}","integrity":"sha512-0/v/Pwo+L0ocFD2Cgr27M+o1LJpYFTVc04ezm5+XbR6xwQVdgd0W6eXtzyfuAMRuS90kA2+G+QydYoz3/NgdLw==","time":1623046756539,"size":43127} \ No newline at end of file diff --git a/docs/node_modules/.cache/terser-webpack-plugin/index-v5/45/bb/d4ecbb453e1e3604f95d07c4b1d68239ac19780ac0dbb02e1a9fd0688626 b/docs/node_modules/.cache/terser-webpack-plugin/index-v5/45/bb/d4ecbb453e1e3604f95d07c4b1d68239ac19780ac0dbb02e1a9fd0688626 new file mode 100644 index 00000000..ae381773 --- /dev/null +++ b/docs/node_modules/.cache/terser-webpack-plugin/index-v5/45/bb/d4ecbb453e1e3604f95d07c4b1d68239ac19780ac0dbb02e1a9fd0688626 @@ -0,0 +1,2 @@ + +75eda89e31b4cfd4a5b5828d46e98dc3bcd7769f {"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\":\"21d628d0d15d7659bc506b78b0307756\"}","integrity":"sha512-PX7Kl8sNoy5JlfIQkniUTNZhtjo+eRT1bjkU6Rt+LrVKeKU5xgx3/vZhH+DabqYl6zNfGML5LsUFvLXr3OStmw==","time":1623046833889,"size":205022} \ No newline at end of file diff --git a/docs/node_modules/.cache/terser-webpack-plugin/index-v5/49/46/1987d7e0a76ad4fea0e4c91467730d0108e348cbdcda1d3af08736508c3a b/docs/node_modules/.cache/terser-webpack-plugin/index-v5/49/46/1987d7e0a76ad4fea0e4c91467730d0108e348cbdcda1d3af08736508c3a new file mode 100644 index 00000000..4d1f2d55 --- /dev/null +++ b/docs/node_modules/.cache/terser-webpack-plugin/index-v5/49/46/1987d7e0a76ad4fea0e4c91467730d0108e348cbdcda1d3af08736508c3a @@ -0,0 +1,2 @@ + +32999930d3c63960127cbc7c9c06b0382c5d3236 {"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\":\"88b4be2a447c96f41509a473fad201a9\"}","integrity":"sha512-+r3EAwzDDdzaq6zZkJBoZc0e3x+kJ9SfRQSH4v2jLqubkqljmXK6NKNoHpnSY3zHJtVnukC6bRctzNJ8xH9UTg==","time":1623046830997,"size":34511} \ No newline at end of file diff --git a/docs/node_modules/.cache/terser-webpack-plugin/index-v5/57/99/fbb070e758d3ff947dfb63c3e3cebdd1dcb4a79cf1ffae8b5ea8c4618f8a b/docs/node_modules/.cache/terser-webpack-plugin/index-v5/57/99/fbb070e758d3ff947dfb63c3e3cebdd1dcb4a79cf1ffae8b5ea8c4618f8a new file mode 100644 index 00000000..584f23ae --- /dev/null +++ b/docs/node_modules/.cache/terser-webpack-plugin/index-v5/57/99/fbb070e758d3ff947dfb63c3e3cebdd1dcb4a79cf1ffae8b5ea8c4618f8a @@ -0,0 +1,2 @@ + +8b88ccd0a563a263f694d603becbb9aeaaa4ad93 {"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\":\"3cdf2a30ed9058eee896469d98d1ed21\"}","integrity":"sha512-Ts1E890DRaaK69sr6aR3iWSefJm0Ye9ZEeO1Ks7e8GNvrT6nkAlOQbzKClCbUjOaLxyx5otv8sjyEKyfTmk6ow==","time":1623046831384,"size":46250} \ No newline at end of file diff --git a/docs/node_modules/.cache/terser-webpack-plugin/index-v5/58/e6/ec09766ad7cfb6b5f265f3ea80d66579e61b6215bdf9d2c12d764b41773c b/docs/node_modules/.cache/terser-webpack-plugin/index-v5/58/e6/ec09766ad7cfb6b5f265f3ea80d66579e61b6215bdf9d2c12d764b41773c new file mode 100644 index 00000000..d34a4ae3 --- /dev/null +++ b/docs/node_modules/.cache/terser-webpack-plugin/index-v5/58/e6/ec09766ad7cfb6b5f265f3ea80d66579e61b6215bdf9d2c12d764b41773c @@ -0,0 +1,2 @@ + +c6e3431845968116a4071e2a3c59fab07e696d70 {"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\":\"83aa0bd4745287a736e8a0269c83370f\"}","integrity":"sha512-osOvtF5oaW/+UZyEk05djtOhEIOg7TXFlhDQqKWKt5XR8d7hlaHwYKwEKQeQu5pdsaoD0Igkpf2swdjdVoHKDg==","time":1623046831574,"size":60604} \ No newline at end of file diff --git a/docs/node_modules/.cache/terser-webpack-plugin/index-v5/6b/e6/4a6e5e231aca741f7e11ae0a4f7af0fe688a12a9e66d1fce088be67ed6e5 b/docs/node_modules/.cache/terser-webpack-plugin/index-v5/6b/e6/4a6e5e231aca741f7e11ae0a4f7af0fe688a12a9e66d1fce088be67ed6e5 new file mode 100644 index 00000000..b9890926 --- /dev/null +++ b/docs/node_modules/.cache/terser-webpack-plugin/index-v5/6b/e6/4a6e5e231aca741f7e11ae0a4f7af0fe688a12a9e66d1fce088be67ed6e5 @@ -0,0 +1,2 @@ + +bbf032737d172c64239b14022cc8c13f0bc35525 {"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\":\"f59233a1c3b4a4b21c46087ab9f66878\"}","integrity":"sha512-LiVtTJmDS9A8Fb3ZBpvQEPhOlsfSu6zxW+8quiu23TSWdTI/9VWZgZiCoIBxrm+9gTxGb+PIf6ksa0jzRGAIsg==","time":1623046755713,"size":1190} \ No newline at end of file diff --git a/docs/node_modules/.cache/terser-webpack-plugin/index-v5/72/85/c6fe81444304e74e90f4f307fdb11e022690e891cbac1ff011ea70f4025d b/docs/node_modules/.cache/terser-webpack-plugin/index-v5/72/85/c6fe81444304e74e90f4f307fdb11e022690e891cbac1ff011ea70f4025d new file mode 100644 index 00000000..9572c30f --- /dev/null +++ b/docs/node_modules/.cache/terser-webpack-plugin/index-v5/72/85/c6fe81444304e74e90f4f307fdb11e022690e891cbac1ff011ea70f4025d @@ -0,0 +1,2 @@ + +1755fd7f086afbceee95de261ea92cd48944b1fb {"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\":\"4972d0c9d0fedde28a996f545d35d490\"}","integrity":"sha512-jH1hVYzvrdYpQ6xWWS2VTJJx/qO6WJP9cifSYOMTKIPkzK0mssL+rTrL+LE8Ng8M7D1ji5QZ/hSJij5VKBT2bA==","time":1623046756161,"size":15295} \ No newline at end of file diff --git a/docs/node_modules/.cache/terser-webpack-plugin/index-v5/86/5a/192b07d5beafe9fabfeee26067fdb1cb9fa2c1228a33dcce647a92a523cf b/docs/node_modules/.cache/terser-webpack-plugin/index-v5/86/5a/192b07d5beafe9fabfeee26067fdb1cb9fa2c1228a33dcce647a92a523cf new file mode 100644 index 00000000..3b0a1e7f --- /dev/null +++ b/docs/node_modules/.cache/terser-webpack-plugin/index-v5/86/5a/192b07d5beafe9fabfeee26067fdb1cb9fa2c1228a33dcce647a92a523cf @@ -0,0 +1,2 @@ + +b1c897b7bc1e10aea94cd71814c3adec16ccfbfd {"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\":\"96dbdac27a530237ae5f6e10b75d0f5a\"}","integrity":"sha512-Ls4m7XK4dDNiZMBP2Y5m6k8GU1CW0JOcmtiayFs6IpFq9MgaDiL9CWnVzZAFxZTAWaeIfYyKQ7jg3fkcQSWMmA==","time":1623046756694,"size":60604} \ No newline at end of file diff --git a/docs/node_modules/.cache/terser-webpack-plugin/index-v5/86/cb/e8d955fe7fa6ecde0a6f2718500244b5333b52213c602fdd7224d9688d6f b/docs/node_modules/.cache/terser-webpack-plugin/index-v5/86/cb/e8d955fe7fa6ecde0a6f2718500244b5333b52213c602fdd7224d9688d6f new file mode 100644 index 00000000..6dec018b --- /dev/null +++ b/docs/node_modules/.cache/terser-webpack-plugin/index-v5/86/cb/e8d955fe7fa6ecde0a6f2718500244b5333b52213c602fdd7224d9688d6f @@ -0,0 +1,2 @@ + +7c6d817f1d17e3a6cab314b2b146bc2aefbfe151 {"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\":\"4df8dbf966b83552ec7c35810ccd8c1b\"}","integrity":"sha512-HFl8t9BJsY5Wx7Lv4lSINzHXRX6M/g28a7Zfb3kpVZNtos5J6hlDcfIUrZq66o/eyW57u6jXkv/O7UMNPVuffQ==","time":1623046831618,"size":24776} \ No newline at end of file diff --git a/docs/node_modules/.cache/terser-webpack-plugin/index-v5/8a/46/4836e39b9ff70f8a7598f2aac50ea41699322608d3df83b4e273a117ecb2 b/docs/node_modules/.cache/terser-webpack-plugin/index-v5/8a/46/4836e39b9ff70f8a7598f2aac50ea41699322608d3df83b4e273a117ecb2 new file mode 100644 index 00000000..fa3d9702 --- /dev/null +++ b/docs/node_modules/.cache/terser-webpack-plugin/index-v5/8a/46/4836e39b9ff70f8a7598f2aac50ea41699322608d3df83b4e273a117ecb2 @@ -0,0 +1,2 @@ + +7032db7db7ddc15c98859881044d0778fae4d797 {"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\":\"52e84c0a4f0b714d968277f4b6c6df5d\"}","integrity":"sha512-oBzVeehAMbPnkHIEJo19nuiv/pr3CUOlTtK+eTLcxSM+oqfDfSKXKGsopLnrI8DNofY7L96+3zeQ4MaqCoPcMg==","time":1623046831658,"size":15295} \ No newline at end of file diff --git a/docs/node_modules/.cache/terser-webpack-plugin/index-v5/90/37/68fee7f13bd917939e45bb72974fefe14cec5b6ce989d5e5183556cccdae b/docs/node_modules/.cache/terser-webpack-plugin/index-v5/90/37/68fee7f13bd917939e45bb72974fefe14cec5b6ce989d5e5183556cccdae new file mode 100644 index 00000000..c0197973 --- /dev/null +++ b/docs/node_modules/.cache/terser-webpack-plugin/index-v5/90/37/68fee7f13bd917939e45bb72974fefe14cec5b6ce989d5e5183556cccdae @@ -0,0 +1,2 @@ + +01015688eff4fa5f422fd236d9a3d2e9b93ab676 {"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\":\"b03a8f668ead50c0a75d36342277b86f\"}","integrity":"sha512-V1Qp6JrhuZnL2jjpT2bE0lIFGZ/Z9XrwtcVIMKP4vtusrZ0cNDQamei81k43lD2xuVRAAHEztzqJUICX0KDr2w==","time":1623046830289,"size":2049} \ No newline at end of file diff --git a/docs/node_modules/.cache/terser-webpack-plugin/index-v5/9b/b2/2d0c13162e5e72686af89be9b0770655cbf28e95542762dfea0c690f8162 b/docs/node_modules/.cache/terser-webpack-plugin/index-v5/9b/b2/2d0c13162e5e72686af89be9b0770655cbf28e95542762dfea0c690f8162 new file mode 100644 index 00000000..ce9e5880 --- /dev/null +++ b/docs/node_modules/.cache/terser-webpack-plugin/index-v5/9b/b2/2d0c13162e5e72686af89be9b0770655cbf28e95542762dfea0c690f8162 @@ -0,0 +1,2 @@ + +0a837e9fe06e022b80f80831c3fdbb9464d41aa5 {"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\":\"8455c08075e82bce92c3e32e19ae47ee\"}","integrity":"sha512-nr5S01sZKOrpLYCDeSIe7YNiF/2To1hq0I9vOJ6CfvLTabjLlU3o7os6z25fqdkNTRWrUxeneWi2ouadmcHKVA==","time":1623046755784,"size":7479} \ No newline at end of file diff --git a/docs/node_modules/.cache/terser-webpack-plugin/index-v5/9c/46/ae39436c464198f15f5c13dadf2926d3ba48d290808b3e14d6c27fb9cefb b/docs/node_modules/.cache/terser-webpack-plugin/index-v5/9c/46/ae39436c464198f15f5c13dadf2926d3ba48d290808b3e14d6c27fb9cefb new file mode 100644 index 00000000..43a2e8e2 --- /dev/null +++ b/docs/node_modules/.cache/terser-webpack-plugin/index-v5/9c/46/ae39436c464198f15f5c13dadf2926d3ba48d290808b3e14d6c27fb9cefb @@ -0,0 +1,2 @@ + +4a9f0f41607cc3d82b6d2347d20197de8372451d {"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\":\"fa421d78c930b6cbecccdd9630972969\"}","integrity":"sha512-MjdGZEbI9yhD5Ouq9SSQbXwFd0tXex7W+G+9iJfBiTHtjtE3lE3KLVVOkhboZnlmm1lpobMurs5GpxJ5EsJtPw==","time":1623046758378,"size":205025} \ No newline at end of file diff --git a/docs/node_modules/.cache/terser-webpack-plugin/index-v5/9d/d1/9691a4e786959410db3ac9295a19cbd9a0896e8d2a6c0878dbf8cebb1c45 b/docs/node_modules/.cache/terser-webpack-plugin/index-v5/9d/d1/9691a4e786959410db3ac9295a19cbd9a0896e8d2a6c0878dbf8cebb1c45 new file mode 100644 index 00000000..bd505f24 --- /dev/null +++ b/docs/node_modules/.cache/terser-webpack-plugin/index-v5/9d/d1/9691a4e786959410db3ac9295a19cbd9a0896e8d2a6c0878dbf8cebb1c45 @@ -0,0 +1,2 @@ + +f5c49978583ba61dd65d15144fb5421d7e805019 {"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\":\"ad167d77979d9fc49e7c120539ad913f\"}","integrity":"sha512-kmgguYgltasby5krCczDdJfe6ZezY2qy+qB4VJVXSqsKm8fWX/4PVG16hL/TXB3U8Iqg2ByqOCRdQhGQzo9mUw==","time":1623046831213,"size":36840} \ No newline at end of file diff --git a/docs/node_modules/.cache/terser-webpack-plugin/index-v5/d1/4d/bfa8582f8d44bf24360b8866bc53916c44aca9587c7feb93bec1faeb6cf8 b/docs/node_modules/.cache/terser-webpack-plugin/index-v5/d1/4d/bfa8582f8d44bf24360b8866bc53916c44aca9587c7feb93bec1faeb6cf8 new file mode 100644 index 00000000..943e2c4c --- /dev/null +++ b/docs/node_modules/.cache/terser-webpack-plugin/index-v5/d1/4d/bfa8582f8d44bf24360b8866bc53916c44aca9587c7feb93bec1faeb6cf8 @@ -0,0 +1,2 @@ + +8a0cf6c1390e74022670de30cc2871ac0bcd8ac7 {"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\":\"379bded72456c919cfaabcd753cd562d\"}","integrity":"sha512-ToU9Fh4qygSDS/gLF9YKWukTGyCalGiYW45I0TT+OtdiSLXICZN9YCadrJrMfrx2iYeC7jmo7yMaJIhK+XuX9A==","time":1623046831774,"size":75532} \ No newline at end of file diff --git a/docs/node_modules/.cache/terser-webpack-plugin/index-v5/d3/07/fa77e4736b65f632f45eb53b5e22aeb83e6b5f236d4e12b0f5263a21f70b b/docs/node_modules/.cache/terser-webpack-plugin/index-v5/d3/07/fa77e4736b65f632f45eb53b5e22aeb83e6b5f236d4e12b0f5263a21f70b new file mode 100644 index 00000000..38417cc7 --- /dev/null +++ b/docs/node_modules/.cache/terser-webpack-plugin/index-v5/d3/07/fa77e4736b65f632f45eb53b5e22aeb83e6b5f236d4e12b0f5263a21f70b @@ -0,0 +1,2 @@ + +16ec447e0109c1191e41660615de08041b2595c4 {"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\":\"0e7b18a1e4f3ced2778685f34fd7bb42\"}","integrity":"sha512-tFZbngrLhHPIIpUk/+CtJ7+f478p9O+GT7RbztGmkQCf6aUiF8qyFCrSMOx3zbrZFNJZ9guI6SnPHegKbgt9YQ==","time":1623046756660,"size":65546} \ No newline at end of file diff --git a/docs/node_modules/.cache/terser-webpack-plugin/index-v5/de/9b/b9a6d85c9023f4bb5867015d6de035d1c194b7503830974a0774627e9970 b/docs/node_modules/.cache/terser-webpack-plugin/index-v5/de/9b/b9a6d85c9023f4bb5867015d6de035d1c194b7503830974a0774627e9970 new file mode 100644 index 00000000..ebb943b5 --- /dev/null +++ b/docs/node_modules/.cache/terser-webpack-plugin/index-v5/de/9b/b9a6d85c9023f4bb5867015d6de035d1c194b7503830974a0774627e9970 @@ -0,0 +1,2 @@ + +a95abf76c29a16a55a06333a266fb508862a3bb2 {"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\":\"2730e8b6ba9bbd0b4cd8a8d0955e5fa5\"}","integrity":"sha512-R9y2bmHVtQ9AV+bwmbawWEiUe/1bxo9v/KgWiSJidiQNa0077uQmH6osGP82rQsY2WNLveqrvpy91IQriaReTQ==","time":1623046831249,"size":1095} \ No newline at end of file diff --git a/docs/node_modules/.cache/terser-webpack-plugin/index-v5/e2/95/a25b05cb70718d3012e8025a02509e3c499a87ea07e5e125ec8cd033b64d b/docs/node_modules/.cache/terser-webpack-plugin/index-v5/e2/95/a25b05cb70718d3012e8025a02509e3c499a87ea07e5e125ec8cd033b64d new file mode 100644 index 00000000..60d09abe --- /dev/null +++ b/docs/node_modules/.cache/terser-webpack-plugin/index-v5/e2/95/a25b05cb70718d3012e8025a02509e3c499a87ea07e5e125ec8cd033b64d @@ -0,0 +1,2 @@ + +a20b0af3c07ad3effa1133081631b4e12096a324 {"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\":\"604e1f43dd37f92ccc459473ea411fc5\"}","integrity":"sha512-k+NvuSFDnsHUio/gY1F5rkVHFBOIdQbwEqqImrJu26GiaZU8fMlMK806ldcTT7NvhJ9gc02izj17LdK3xrBeXQ==","time":1623046756321,"size":24776} \ No newline at end of file diff --git a/hoj-springboot/.idea/compiler.xml b/hoj-springboot/.idea/compiler.xml index f0216164..7b623431 100644 --- a/hoj-springboot/.idea/compiler.xml +++ b/hoj-springboot/.idea/compiler.xml @@ -8,8 +8,8 @@ - + diff --git a/hoj-vue/src/App.vue b/hoj-vue/src/App.vue index dcd22c05..30f33789 100644 --- a/hoj-vue/src/App.vue +++ b/hoj-vue/src/App.vue @@ -51,8 +51,8 @@ > {{ $t('m.Help') }}

- - {{ websiteConfig.email }} + + {{ $t('m.Group') }} 598587305

diff --git a/hoj-vue/src/common/constants.js b/hoj-vue/src/common/constants.js index b8b43b0b..5a18ceee 100644 --- a/hoj-vue/src/common/constants.js +++ b/hoj-vue/src/common/constants.js @@ -24,7 +24,7 @@ export const JUDGE_STATUS = { name: 'Wrong Answer', short: 'WA', color: 'red', - type: 'error', + type: 'danger', rgb:'#ed3f14' }, '0': { @@ -38,21 +38,21 @@ export const JUDGE_STATUS = { name: 'Time Limit Exceeded', short: 'TLE', color: 'red', - type: 'error', + type: 'danger', rgb:'#ed3f14' }, '2': { name: 'Memory Limit Exceeded', short: 'MLE', color: 'red', - type: 'error', + type: 'danger', rgb:'#ed3f14' }, '3': { name: 'Runtime Error', short: 'RE', color: 'red', - type: 'error', + type: 'danger', rgb:'#ed3f14' }, '4': { diff --git a/hoj-vue/src/common/time.js b/hoj-vue/src/common/time.js index e88e5b0b..511fc54b 100644 --- a/hoj-vue/src/common/time.js +++ b/hoj-vue/src/common/time.js @@ -14,18 +14,12 @@ function duration (startTime, endTime) { let start = moment(startTime) let end = moment(endTime) let duration = moment.duration(start.diff(end, 'seconds'), 'seconds') - if (duration.days() !== 0) { - return duration.humanize() - } - return Math.abs(duration.asHours().toFixed(1)) + ' hours' + return duration.humanize() } function formatDuration(time){ let duration = moment.duration(time) - if (duration.days() !== 0) { - return duration.humanize() - } - return Math.abs(duration.asHours().toFixed(1)) + ' hours' + return duration.humanize() } function secondFormat (time) { diff --git a/hoj-vue/src/components/oj/setting/Account.vue b/hoj-vue/src/components/oj/setting/Account.vue index 6a493500..c5cf4421 100644 --- a/hoj-vue/src/components/oj/setting/Account.vue +++ b/hoj-vue/src/components/oj/setting/Account.vue @@ -10,13 +10,16 @@ :model="formPassword" :rules="rulePassword" > - + - + - + @@ -83,13 +86,13 @@ :model="formEmail" :rules="ruleEmail" > - + - + - + diff --git a/hoj-vue/src/components/oj/setting/UserInfo.vue b/hoj-vue/src/components/oj/setting/UserInfo.vue index 5bd83bfa..c95acc3f 100644 --- a/hoj-vue/src/components/oj/setting/UserInfo.vue +++ b/hoj-vue/src/components/oj/setting/UserInfo.vue @@ -130,16 +130,16 @@ - + - + - + - + @@ -148,16 +148,16 @@

- + - + - + - + diff --git a/hoj-vue/src/i18n/oj/en-US.js b/hoj-vue/src/i18n/oj/en-US.js index 850e29c9..19fdcd35 100644 --- a/hoj-vue/src/i18n/oj/en-US.js +++ b/hoj-vue/src/i18n/oj/en-US.js @@ -69,6 +69,12 @@ export const m = { Your_password_has_been_reset: 'Your password has been reset.', // /components/oj/setting/Account.vue 账号信息管理页面 + Old_Password:'Old Password', + New_Password:'new Password', + Confirm_New_Password:'Confirm New Password', + Current_Password:'Current Password', + Old_Email:'Old Email', + New_Email:'New Email', Change_Password: 'Change Password', Change_Email: 'Change Email', Update_Password: 'Update Password', @@ -84,6 +90,11 @@ export const m = { Avatar_Setting: 'Avatar Setting', UserInfo_Setting: 'UserInfo Setting', Upload_avatar_hint:'Drag and drop the avatar here, or click here.', + CF_Username:'Codeforces Username', + School:'School', + Student_Number:'Student Number', + Blog:'Blog', + Github:'Github', Save:'Save', Upload:'Upload', Your_new_avatar:'Your new avatar', @@ -100,7 +111,6 @@ export const m = { // /views/oj/user/Setting.vue Account_Setting:'Account Setting', - UserInfo_Setting:'UserInfo Setting', // App.vue 底部文案 Service:'Service', @@ -110,6 +120,7 @@ export const m = { Open_Source:'Open Source', Support:'Support', Help:'Help', + Group:'Group', // /views/oj/Home.vue Welcome_to:'Welcome to ', @@ -135,7 +146,7 @@ export const m = { // /views/oj/problem/problemList.vue Problem_List:'Problem List', All:'All', - Mine:'Mine', + My_OJ:'Mime', Level:'Level', Tags:'Tags', Pick_a_random_question:'Pick a random question', @@ -195,7 +206,7 @@ export const m = { // /views/oj/status/SubmissionList.vue - When: 'When', + Mine:'Mine', Time: 'Time', Memory: 'Memory', Length:'Length', diff --git a/hoj-vue/src/i18n/oj/zh-CN.js b/hoj-vue/src/i18n/oj/zh-CN.js index 4c5389f1..c4b3994a 100644 --- a/hoj-vue/src/i18n/oj/zh-CN.js +++ b/hoj-vue/src/i18n/oj/zh-CN.js @@ -3,7 +3,7 @@ export const m = { NavBar_Home: '首页', NavBar_Problem: '题目', NavBar_Contest: '比赛', - NavBar_Status: '状态', + NavBar_Status: '评测', NavBar_Rank: '排名', NavBar_ACM_Rank: 'ACM 排名', NavBar_OI_Rank: 'OI 排名', @@ -69,38 +69,49 @@ export const m = { Your_password_has_been_reset: '您的密码已重置', // /components/oj/setting/Account.vue 账号信息管理页面 + Old_Password:'当前密码', + New_Password:'新密码', + Confirm_New_Password:'确认新密码', + Current_Password:'当前密码', + Old_Email:'当前邮箱', + New_Email:'新邮箱', Change_Password: '更改密码', Change_Email: '更改邮箱', Update_Password: '更新密码', Update_Email: '更新邮箱', - The_new_password_does_not_change:"新密码未更改", - The_new_email_does_not_change:"新邮箱未更改", + The_new_password_does_not_change:"新密码未变动", + The_new_email_does_not_change:"新邮箱未变动", Update_Successfully:'更新成功', Update_Failed:'更新失败', - Guess_robot:'您的操作太快啦,可能是系统走神了!请再次验证!', + Guess_robot:'您的操作太快啦,可能是机器操作!请再次验证!', // /components/oj/setting/UserInfo.vue - Avatar_Setting: '头像设置', - UserInfo_Setting: '用户资料设置', + Avatar_Setting:'头像设置', Upload_avatar_hint:'将头像拖放到此处,或单击此处', + CF_Username:'Codeforces 用户名', + School:'学校', + Student_Number:'学号', + Blog:'博客', + Github:'Github', Save:'保存', Upload:'上传', Your_new_avatar:'您的新头像', + // /views/oj/user/UserHome.vue Recent_login_time:'最近上线时间:', Not_set_yet:'未设置', UserHome_Solved: '已解决', - UserHome_Submissions: '提交记录', - UserHome_Score: '分数', + UserHome_Submissions: '总交题数', + UserHome_Score: 'OI分数', UserHome_Rating:'CF分数', List_Solved_Problems: '已解决问题列表', UserHome_Not_Data: '这家伙太懒了,还没有做过题...', // /views/oj/user/Setting.vue Account_Setting:'账户设置', - UserInfo_Setting:'用户资料设置', + UserInfo_Setting:'资料设置', // App.vue 底部文案 Service:'服务', @@ -110,6 +121,7 @@ export const m = { Open_Source:'开源', Support:'支持', Help:'帮助', + Group:'Q群', // /views/oj/Home.vue Welcome_to:'欢迎使用 ', @@ -135,7 +147,7 @@ export const m = { // /views/oj/problem/problemList.vue Problem_List:'问题列表', All:'全部', - Mine:'我的', + My_OJ:'本OJ', Level:'难度', Tags:'标签', Pick_a_random_question:'随机选一题', @@ -183,7 +195,7 @@ export const m = { // /views/oj/status/SubmissionList.vue - When: '提交时间', + Mine:'我的', ID: 'ID', Time: '运行时间', Memory: '内存', @@ -198,8 +210,8 @@ export const m = { Refresh:'刷新', Enter_Problem_ID:'请输入题目ID', Enter_Author:'请输入作者', - Run_ID:'run ID', - Problem:'问题', + Run_ID:'Run ID', + Problem:'题目', // /views/oj/status/SubmissionDetails.vue Test_point_details:'测试点详情', @@ -211,7 +223,7 @@ export const m = { // /views/oj/rank/ACMRank.vue ACM_Ranklist: 'ACM 排行榜', User:'用户名', - Nickname:'真实姓名', + Nickname:'昵称', Mood: '格言', Rating: '通过率', diff --git a/hoj-vue/src/views/oj/problem/ProblemList.vue b/hoj-vue/src/views/oj/problem/ProblemList.vue index 6f46ded2..07a15fd7 100644 --- a/hoj-vue/src/views/oj/problem/ProblemList.vue +++ b/hoj-vue/src/views/oj/problem/ProblemList.vue @@ -19,14 +19,20 @@ {{ query.oj === 'Mine' || query.oj === '' - ? $t('m.Mine') + ? $t('m.My_OJ') + : query.oj === 'All' + ? $t('m.All') : query.oj }} - All - Mine + {{ + $t('m.All') + }} + {{ + $t('m.My_OJ') + }} -
+
{{ $t('m.Tags') }}
.taglist-title { - margin: 0 43%; font-size: 21px; font-weight: 500; } diff --git a/hoj-vue/src/views/oj/status/SubmissionList.vue b/hoj-vue/src/views/oj/status/SubmissionList.vue index a64e8999..685f27ff 100644 --- a/hoj-vue/src/views/oj/status/SubmissionList.vue +++ b/hoj-vue/src/views/oj/status/SubmissionList.vue @@ -131,7 +131,7 @@ + + +