diff --git "a/docs/EasyScheduler\344\275\277\347\224\250\346\211\213\345\206\214.docx" "b/docs/EasyScheduler\344\275\277\347\224\250\346\211\213\345\206\214.docx" deleted file mode 100644 index d9f6469a10eca5ee9eda3e541dac1fcdcd10f412..0000000000000000000000000000000000000000 Binary files "a/docs/EasyScheduler\344\275\277\347\224\250\346\211\213\345\206\214.docx" and /dev/null differ diff --git a/docs/gitbook/gitbook-plugin-livereload/plugin.js b/docs/gitbook/gitbook-plugin-livereload/plugin.js deleted file mode 100644 index 923b3aed5ccf50313d40ecfcf700fcaf615c4e8b..0000000000000000000000000000000000000000 --- a/docs/gitbook/gitbook-plugin-livereload/plugin.js +++ /dev/null @@ -1,11 +0,0 @@ -(function() { - var newEl = document.createElement('script'), - firstScriptTag = document.getElementsByTagName('script')[0]; - - if (firstScriptTag) { - newEl.async = 1; - newEl.src = '//' + window.location.hostname + ':35729/livereload.js'; - firstScriptTag.parentNode.insertBefore(newEl, firstScriptTag); - } - -})(); diff --git a/docs/gitbook/gitbook.js b/docs/gitbook/gitbook.js deleted file mode 100644 index 13077b45ca3aa37fd567086957bbb5f31a494ded..0000000000000000000000000000000000000000 --- a/docs/gitbook/gitbook.js +++ /dev/null @@ -1,4 +0,0 @@ -!function e(t,n,r){function o(s,a){if(!n[s]){if(!t[s]){var u="function"==typeof require&&require;if(!a&&u)return u(s,!0);if(i)return i(s,!0);var c=new Error("Cannot find module '"+s+"'");throw c.code="MODULE_NOT_FOUND",c}var l=n[s]={exports:{}};t[s][0].call(l.exports,function(e){var n=t[s][1][e];return o(n?n:e)},l,l.exports,e,t,n,r)}return n[s].exports}for(var i="function"==typeof require&&require,s=0;s0&&t-1 in e)}function o(e,t,n){return de.isFunction(t)?de.grep(e,function(e,r){return!!t.call(e,r,e)!==n}):t.nodeType?de.grep(e,function(e){return e===t!==n}):"string"!=typeof t?de.grep(e,function(e){return se.call(t,e)>-1!==n}):je.test(t)?de.filter(t,e,n):(t=de.filter(t,e),de.grep(e,function(e){return se.call(t,e)>-1!==n&&1===e.nodeType}))}function i(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}function s(e){var t={};return de.each(e.match(qe)||[],function(e,n){t[n]=!0}),t}function a(e){return e}function u(e){throw e}function c(e,t,n){var r;try{e&&de.isFunction(r=e.promise)?r.call(e).done(t).fail(n):e&&de.isFunction(r=e.then)?r.call(e,t,n):t.call(void 0,e)}catch(e){n.call(void 0,e)}}function l(){te.removeEventListener("DOMContentLoaded",l),e.removeEventListener("load",l),de.ready()}function f(){this.expando=de.expando+f.uid++}function p(e){return"true"===e||"false"!==e&&("null"===e?null:e===+e+""?+e:Ie.test(e)?JSON.parse(e):e)}function h(e,t,n){var r;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(Pe,"-$&").toLowerCase(),n=e.getAttribute(r),"string"==typeof n){try{n=p(n)}catch(e){}Re.set(e,t,n)}else n=void 0;return n}function d(e,t,n,r){var o,i=1,s=20,a=r?function(){return r.cur()}:function(){return de.css(e,t,"")},u=a(),c=n&&n[3]||(de.cssNumber[t]?"":"px"),l=(de.cssNumber[t]||"px"!==c&&+u)&&$e.exec(de.css(e,t));if(l&&l[3]!==c){c=c||l[3],n=n||[],l=+u||1;do i=i||".5",l/=i,de.style(e,t,l+c);while(i!==(i=a()/u)&&1!==i&&--s)}return n&&(l=+l||+u||0,o=n[1]?l+(n[1]+1)*n[2]:+n[2],r&&(r.unit=c,r.start=l,r.end=o)),o}function g(e){var t,n=e.ownerDocument,r=e.nodeName,o=Ue[r];return o?o:(t=n.body.appendChild(n.createElement(r)),o=de.css(t,"display"),t.parentNode.removeChild(t),"none"===o&&(o="block"),Ue[r]=o,o)}function m(e,t){for(var n,r,o=[],i=0,s=e.length;i-1)o&&o.push(i);else if(c=de.contains(i.ownerDocument,i),s=v(f.appendChild(i),"script"),c&&y(s),n)for(l=0;i=s[l++];)Ve.test(i.type||"")&&n.push(i);return f}function b(){return!0}function w(){return!1}function T(){try{return te.activeElement}catch(e){}}function C(e,t,n,r,o,i){var s,a;if("object"==typeof t){"string"!=typeof n&&(r=r||n,n=void 0);for(a in t)C(e,a,n,r,t[a],i);return e}if(null==r&&null==o?(o=n,r=n=void 0):null==o&&("string"==typeof n?(o=r,r=void 0):(o=r,r=n,n=void 0)),o===!1)o=w;else if(!o)return e;return 1===i&&(s=o,o=function(e){return de().off(e),s.apply(this,arguments)},o.guid=s.guid||(s.guid=de.guid++)),e.each(function(){de.event.add(this,t,o,r,n)})}function j(e,t){return de.nodeName(e,"table")&&de.nodeName(11!==t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e:e}function k(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function E(e){var t=rt.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function S(e,t){var n,r,o,i,s,a,u,c;if(1===t.nodeType){if(Fe.hasData(e)&&(i=Fe.access(e),s=Fe.set(t,i),c=i.events)){delete s.handle,s.events={};for(o in c)for(n=0,r=c[o].length;n1&&"string"==typeof d&&!pe.checkClone&&nt.test(d))return e.each(function(n){var i=e.eq(n);g&&(t[0]=d.call(this,n,i.html())),A(i,t,r,o)});if(p&&(i=x(t,e[0].ownerDocument,!1,e,o),s=i.firstChild,1===i.childNodes.length&&(i=s),s||o)){for(a=de.map(v(i,"script"),k),u=a.length;f=0&&nC.cacheLength&&delete e[t.shift()],e[n+" "]=r}var t=[];return e}function r(e){return e[$]=!0,e}function o(e){var t=L.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function i(e,t){for(var n=e.split("|"),r=n.length;r--;)C.attrHandle[n[r]]=t}function s(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function a(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function u(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function c(e){return function(t){return"form"in t?t.parentNode&&t.disabled===!1?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&je(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function l(e){return r(function(t){return t=+t,r(function(n,r){for(var o,i=e([],n.length,t),s=i.length;s--;)n[o=i[s]]&&(n[o]=!(r[o]=n[o]))})})}function f(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function p(){}function h(e){for(var t=0,n=e.length,r="";t1?function(t,n,r){for(var o=e.length;o--;)if(!e[o](t,n,r))return!1;return!0}:e[0]}function m(e,n,r){for(var o=0,i=n.length;o-1&&(r[c]=!(s[c]=f))}}else x=v(x===s?x.splice(d,x.length):x),i?i(null,s,x,u):K.apply(s,x)})}function x(e){for(var t,n,r,o=e.length,i=C.relative[e[0].type],s=i||C.relative[" "],a=i?1:0,u=d(function(e){return e===t},s,!0),c=d(function(e){return ee(t,e)>-1},s,!0),l=[function(e,n,r){var o=!i&&(r||n!==A)||((t=n).nodeType?u(e,n,r):c(e,n,r));return t=null,o}];a1&&g(l),a>1&&h(e.slice(0,a-1).concat({value:" "===e[a-2].type?"*":""})).replace(ae,"$1"),n,a0,i=e.length>0,s=function(r,s,a,u,c){var l,f,p,h=0,d="0",g=r&&[],m=[],y=A,x=r||i&&C.find.TAG("*",c),b=B+=null==y?1:Math.random()||.1,w=x.length;for(c&&(A=s===L||s||c);d!==w&&null!=(l=x[d]);d++){if(i&&l){for(f=0,s||l.ownerDocument===L||(O(l),a=!F);p=e[f++];)if(p(l,s||L,a)){u.push(l);break}c&&(B=b)}o&&((l=!p&&l)&&h--,r&&g.push(l))}if(h+=d,o&&d!==h){for(f=0;p=n[f++];)p(g,m,s,a);if(r){if(h>0)for(;d--;)g[d]||m[d]||(m[d]=Q.call(u));m=v(m)}K.apply(u,m),c&&!r&&m.length>0&&h+n.length>1&&t.uniqueSort(u)}return c&&(B=b,A=y),g};return o?r(s):s}var w,T,C,j,k,E,S,N,A,q,D,O,L,H,F,R,I,P,M,$="sizzle"+1*new Date,W=e.document,B=0,_=0,U=n(),z=n(),X=n(),V=function(e,t){return e===t&&(D=!0),0},G={}.hasOwnProperty,Y=[],Q=Y.pop,J=Y.push,K=Y.push,Z=Y.slice,ee=function(e,t){for(var n=0,r=e.length;n+~]|"+ne+")"+ne+"*"),le=new RegExp("="+ne+"*([^\\]'\"]*?)"+ne+"*\\]","g"),fe=new RegExp(ie),pe=new RegExp("^"+re+"$"),he={ID:new RegExp("^#("+re+")"),CLASS:new RegExp("^\\.("+re+")"),TAG:new RegExp("^("+re+"|[*])"),ATTR:new RegExp("^"+oe),PSEUDO:new RegExp("^"+ie),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ne+"*(even|odd|(([+-]|)(\\d*)n|)"+ne+"*(?:([+-]|)"+ne+"*(\\d+)|))"+ne+"*\\)|)","i"),bool:new RegExp("^(?:"+te+")$","i"),needsContext:new RegExp("^"+ne+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ne+"*((?:-\\d)?\\d*)"+ne+"*\\)|)(?=[^-]|$)","i")},de=/^(?:input|select|textarea|button)$/i,ge=/^h\d$/i,me=/^[^{]+\{\s*\[native \w/,ve=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ye=/[+~]/,xe=new RegExp("\\\\([\\da-f]{1,6}"+ne+"?|("+ne+")|.)","ig"),be=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},we=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,Te=function(e,t){return t?"\0"===e?"�":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},Ce=function(){O()},je=d(function(e){return e.disabled===!0&&("form"in e||"label"in e)},{dir:"parentNode",next:"legend"});try{K.apply(Y=Z.call(W.childNodes),W.childNodes),Y[W.childNodes.length].nodeType}catch(e){K={apply:Y.length?function(e,t){J.apply(e,Z.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}T=t.support={},k=t.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},O=t.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:W;return r!==L&&9===r.nodeType&&r.documentElement?(L=r,H=L.documentElement,F=!k(L),W!==L&&(n=L.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",Ce,!1):n.attachEvent&&n.attachEvent("onunload",Ce)),T.attributes=o(function(e){return e.className="i",!e.getAttribute("className")}),T.getElementsByTagName=o(function(e){return e.appendChild(L.createComment("")),!e.getElementsByTagName("*").length}),T.getElementsByClassName=me.test(L.getElementsByClassName),T.getById=o(function(e){return H.appendChild(e).id=$,!L.getElementsByName||!L.getElementsByName($).length}),T.getById?(C.filter.ID=function(e){var t=e.replace(xe,be);return function(e){return e.getAttribute("id")===t}},C.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&F){var n=t.getElementById(e);return n?[n]:[]}}):(C.filter.ID=function(e){var t=e.replace(xe,be);return function(e){var n="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},C.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&F){var n,r,o,i=t.getElementById(e);if(i){if(n=i.getAttributeNode("id"),n&&n.value===e)return[i];for(o=t.getElementsByName(e),r=0;i=o[r++];)if(n=i.getAttributeNode("id"),n&&n.value===e)return[i]}return[]}}),C.find.TAG=T.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):T.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],o=0,i=t.getElementsByTagName(e);if("*"===e){for(;n=i[o++];)1===n.nodeType&&r.push(n);return r}return i},C.find.CLASS=T.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&F)return t.getElementsByClassName(e)},I=[],R=[],(T.qsa=me.test(L.querySelectorAll))&&(o(function(e){H.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&R.push("[*^$]="+ne+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||R.push("\\["+ne+"*(?:value|"+te+")"),e.querySelectorAll("[id~="+$+"-]").length||R.push("~="),e.querySelectorAll(":checked").length||R.push(":checked"),e.querySelectorAll("a#"+$+"+*").length||R.push(".#.+[+~]")}),o(function(e){e.innerHTML="";var t=L.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&R.push("name"+ne+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&R.push(":enabled",":disabled"),H.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&R.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),R.push(",.*:")})),(T.matchesSelector=me.test(P=H.matches||H.webkitMatchesSelector||H.mozMatchesSelector||H.oMatchesSelector||H.msMatchesSelector))&&o(function(e){T.disconnectedMatch=P.call(e,"*"),P.call(e,"[s!='']:x"),I.push("!=",ie)}),R=R.length&&new RegExp(R.join("|")),I=I.length&&new RegExp(I.join("|")),t=me.test(H.compareDocumentPosition),M=t||me.test(H.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},V=t?function(e,t){if(e===t)return D=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n?n:(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1,1&n||!T.sortDetached&&t.compareDocumentPosition(e)===n?e===L||e.ownerDocument===W&&M(W,e)?-1:t===L||t.ownerDocument===W&&M(W,t)?1:q?ee(q,e)-ee(q,t):0:4&n?-1:1)}:function(e,t){if(e===t)return D=!0,0;var n,r=0,o=e.parentNode,i=t.parentNode,a=[e],u=[t];if(!o||!i)return e===L?-1:t===L?1:o?-1:i?1:q?ee(q,e)-ee(q,t):0;if(o===i)return s(e,t);for(n=e;n=n.parentNode;)a.unshift(n);for(n=t;n=n.parentNode;)u.unshift(n);for(;a[r]===u[r];)r++;return r?s(a[r],u[r]):a[r]===W?-1:u[r]===W?1:0},L):L},t.matches=function(e,n){return t(e,null,null,n)},t.matchesSelector=function(e,n){if((e.ownerDocument||e)!==L&&O(e),n=n.replace(le,"='$1']"),T.matchesSelector&&F&&!X[n+" "]&&(!I||!I.test(n))&&(!R||!R.test(n)))try{var r=P.call(e,n);if(r||T.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){}return t(n,L,null,[e]).length>0},t.contains=function(e,t){return(e.ownerDocument||e)!==L&&O(e),M(e,t)},t.attr=function(e,t){(e.ownerDocument||e)!==L&&O(e);var n=C.attrHandle[t.toLowerCase()],r=n&&G.call(C.attrHandle,t.toLowerCase())?n(e,t,!F):void 0;return void 0!==r?r:T.attributes||!F?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},t.escape=function(e){return(e+"").replace(we,Te)},t.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},t.uniqueSort=function(e){var t,n=[],r=0,o=0;if(D=!T.detectDuplicates,q=!T.sortStable&&e.slice(0),e.sort(V),D){for(;t=e[o++];)t===e[o]&&(r=n.push(o));for(;r--;)e.splice(n[r],1)}return q=null,e},j=t.getText=function(e){var t,n="",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=j(e)}else if(3===o||4===o)return e.nodeValue}else for(;t=e[r++];)n+=j(t);return n},C=t.selectors={cacheLength:50,createPseudo:r,match:he,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(xe,be),e[3]=(e[3]||e[4]||e[5]||"").replace(xe,be),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||t.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&t.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return he.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&fe.test(n)&&(t=E(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(xe,be).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=U[e+" "];return t||(t=new RegExp("(^|"+ne+")"+e+"("+ne+"|$)"))&&U(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,n,r){return function(o){var i=t.attr(o,e);return null==i?"!="===n:!n||(i+="","="===n?i===r:"!="===n?i!==r:"^="===n?r&&0===i.indexOf(r):"*="===n?r&&i.indexOf(r)>-1:"$="===n?r&&i.slice(-r.length)===r:"~="===n?(" "+i.replace(se," ")+" ").indexOf(r)>-1:"|="===n&&(i===r||i.slice(0,r.length+1)===r+"-"))}},CHILD:function(e,t,n,r,o){var i="nth"!==e.slice(0,3),s="last"!==e.slice(-4),a="of-type"===t;return 1===r&&0===o?function(e){return!!e.parentNode}:function(t,n,u){var c,l,f,p,h,d,g=i!==s?"nextSibling":"previousSibling",m=t.parentNode,v=a&&t.nodeName.toLowerCase(),y=!u&&!a,x=!1;if(m){if(i){for(;g;){for(p=t;p=p[g];)if(a?p.nodeName.toLowerCase()===v:1===p.nodeType)return!1;d=g="only"===e&&!d&&"nextSibling"}return!0}if(d=[s?m.firstChild:m.lastChild],s&&y){for(p=m,f=p[$]||(p[$]={}),l=f[p.uniqueID]||(f[p.uniqueID]={}),c=l[e]||[],h=c[0]===B&&c[1],x=h&&c[2],p=h&&m.childNodes[h];p=++h&&p&&p[g]||(x=h=0)||d.pop();)if(1===p.nodeType&&++x&&p===t){l[e]=[B,h,x];break}}else if(y&&(p=t,f=p[$]||(p[$]={}),l=f[p.uniqueID]||(f[p.uniqueID]={}),c=l[e]||[],h=c[0]===B&&c[1],x=h),x===!1)for(;(p=++h&&p&&p[g]||(x=h=0)||d.pop())&&((a?p.nodeName.toLowerCase()!==v:1!==p.nodeType)||!++x||(y&&(f=p[$]||(p[$]={}),l=f[p.uniqueID]||(f[p.uniqueID]={}),l[e]=[B,x]),p!==t)););return x-=o,x===r||x%r===0&&x/r>=0}}},PSEUDO:function(e,n){var o,i=C.pseudos[e]||C.setFilters[e.toLowerCase()]||t.error("unsupported pseudo: "+e);return i[$]?i(n):i.length>1?(o=[e,e,"",n],C.setFilters.hasOwnProperty(e.toLowerCase())?r(function(e,t){for(var r,o=i(e,n),s=o.length;s--;)r=ee(e,o[s]),e[r]=!(t[r]=o[s])}):function(e){return i(e,0,o)}):i}},pseudos:{not:r(function(e){var t=[],n=[],o=S(e.replace(ae,"$1"));return o[$]?r(function(e,t,n,r){for(var i,s=o(e,null,r,[]),a=e.length;a--;)(i=s[a])&&(e[a]=!(t[a]=i))}):function(e,r,i){return t[0]=e,o(t,null,i,n),t[0]=null,!n.pop()}}),has:r(function(e){return function(n){ -return t(e,n).length>0}}),contains:r(function(e){return e=e.replace(xe,be),function(t){return(t.textContent||t.innerText||j(t)).indexOf(e)>-1}}),lang:r(function(e){return pe.test(e||"")||t.error("unsupported lang: "+e),e=e.replace(xe,be).toLowerCase(),function(t){var n;do if(n=F?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===H},focus:function(e){return e===L.activeElement&&(!L.hasFocus||L.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:c(!1),disabled:c(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!C.pseudos.empty(e)},header:function(e){return ge.test(e.nodeName)},input:function(e){return de.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:l(function(){return[0]}),last:l(function(e,t){return[t-1]}),eq:l(function(e,t,n){return[n<0?n+t:n]}),even:l(function(e,t){for(var n=0;n=0;)e.push(r);return e}),gt:l(function(e,t,n){for(var r=n<0?n+t:n;++r2&&"ID"===(s=i[0]).type&&9===t.nodeType&&F&&C.relative[i[1].type]){if(t=(C.find.ID(s.matches[0].replace(xe,be),t)||[])[0],!t)return n;c&&(t=t.parentNode),e=e.slice(i.shift().value.length)}for(o=he.needsContext.test(e)?0:i.length;o--&&(s=i[o],!C.relative[a=s.type]);)if((u=C.find[a])&&(r=u(s.matches[0].replace(xe,be),ye.test(i[0].type)&&f(t.parentNode)||t))){if(i.splice(o,1),e=r.length&&h(i),!e)return K.apply(n,r),n;break}}return(c||S(e,l))(r,t,!F,n,!t||ye.test(e)&&f(t.parentNode)||t),n},T.sortStable=$.split("").sort(V).join("")===$,T.detectDuplicates=!!D,O(),T.sortDetached=o(function(e){return 1&e.compareDocumentPosition(L.createElement("fieldset"))}),o(function(e){return e.innerHTML="","#"===e.firstChild.getAttribute("href")})||i("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),T.attributes&&o(function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||i("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),o(function(e){return null==e.getAttribute("disabled")})||i(te,function(e,t,n){var r;if(!n)return e[t]===!0?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),t}(e);de.find=xe,de.expr=xe.selectors,de.expr[":"]=de.expr.pseudos,de.uniqueSort=de.unique=xe.uniqueSort,de.text=xe.getText,de.isXMLDoc=xe.isXML,de.contains=xe.contains,de.escapeSelector=xe.escape;var be=function(e,t,n){for(var r=[],o=void 0!==n;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(o&&de(e).is(n))break;r.push(e)}return r},we=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},Te=de.expr.match.needsContext,Ce=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i,je=/^.[^:#\[\.,]*$/;de.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?de.find.matchesSelector(r,e)?[r]:[]:de.find.matches(e,de.grep(t,function(e){return 1===e.nodeType}))},de.fn.extend({find:function(e){var t,n,r=this.length,o=this;if("string"!=typeof e)return this.pushStack(de(e).filter(function(){for(t=0;t1?de.uniqueSort(n):n},filter:function(e){return this.pushStack(o(this,e||[],!1))},not:function(e){return this.pushStack(o(this,e||[],!0))},is:function(e){return!!o(this,"string"==typeof e&&Te.test(e)?de(e):e||[],!1).length}});var ke,Ee=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,Se=de.fn.init=function(e,t,n){var r,o;if(!e)return this;if(n=n||ke,"string"==typeof e){if(r="<"===e[0]&&">"===e[e.length-1]&&e.length>=3?[null,e,null]:Ee.exec(e),!r||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof de?t[0]:t,de.merge(this,de.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:te,!0)),Ce.test(r[1])&&de.isPlainObject(t))for(r in t)de.isFunction(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return o=te.getElementById(r[2]),o&&(this[0]=o,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):de.isFunction(e)?void 0!==n.ready?n.ready(e):e(de):de.makeArray(e,this)};Se.prototype=de.fn,ke=de(te);var Ne=/^(?:parents|prev(?:Until|All))/,Ae={children:!0,contents:!0,next:!0,prev:!0};de.fn.extend({has:function(e){var t=de(e,this),n=t.length;return this.filter(function(){for(var e=0;e-1:1===n.nodeType&&de.find.matchesSelector(n,e))){i.push(n);break}return this.pushStack(i.length>1?de.uniqueSort(i):i)},index:function(e){return e?"string"==typeof e?se.call(de(e),this[0]):se.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(de.uniqueSort(de.merge(this.get(),de(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),de.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return be(e,"parentNode")},parentsUntil:function(e,t,n){return be(e,"parentNode",n)},next:function(e){return i(e,"nextSibling")},prev:function(e){return i(e,"previousSibling")},nextAll:function(e){return be(e,"nextSibling")},prevAll:function(e){return be(e,"previousSibling")},nextUntil:function(e,t,n){return be(e,"nextSibling",n)},prevUntil:function(e,t,n){return be(e,"previousSibling",n)},siblings:function(e){return we((e.parentNode||{}).firstChild,e)},children:function(e){return we(e.firstChild)},contents:function(e){return e.contentDocument||de.merge([],e.childNodes)}},function(e,t){de.fn[e]=function(n,r){var o=de.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(o=de.filter(r,o)),this.length>1&&(Ae[e]||de.uniqueSort(o),Ne.test(e)&&o.reverse()),this.pushStack(o)}});var qe=/[^\x20\t\r\n\f]+/g;de.Callbacks=function(e){e="string"==typeof e?s(e):de.extend({},e);var t,n,r,o,i=[],a=[],u=-1,c=function(){for(o=e.once,r=t=!0;a.length;u=-1)for(n=a.shift();++u-1;)i.splice(n,1),n<=u&&u--}),this},has:function(e){return e?de.inArray(e,i)>-1:i.length>0},empty:function(){return i&&(i=[]),this},disable:function(){return o=a=[],i=n="",this},disabled:function(){return!i},lock:function(){return o=a=[],n||t||(i=n=""),this},locked:function(){return!!o},fireWith:function(e,n){return o||(n=n||[],n=[e,n.slice?n.slice():n],a.push(n),t||c()),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!r}};return l},de.extend({Deferred:function(t){var n=[["notify","progress",de.Callbacks("memory"),de.Callbacks("memory"),2],["resolve","done",de.Callbacks("once memory"),de.Callbacks("once memory"),0,"resolved"],["reject","fail",de.Callbacks("once memory"),de.Callbacks("once memory"),1,"rejected"]],r="pending",o={state:function(){return r},always:function(){return i.done(arguments).fail(arguments),this},catch:function(e){return o.then(null,e)},pipe:function(){var e=arguments;return de.Deferred(function(t){de.each(n,function(n,r){var o=de.isFunction(e[r[4]])&&e[r[4]];i[r[1]](function(){var e=o&&o.apply(this,arguments);e&&de.isFunction(e.promise)?e.promise().progress(t.notify).done(t.resolve).fail(t.reject):t[r[0]+"With"](this,o?[e]:arguments)})}),e=null}).promise()},then:function(t,r,o){function i(t,n,r,o){return function(){var c=this,l=arguments,f=function(){var e,f;if(!(t=s&&(r!==u&&(c=void 0,l=[e]),n.rejectWith(c,l))}};t?p():(de.Deferred.getStackHook&&(p.stackTrace=de.Deferred.getStackHook()),e.setTimeout(p))}}var s=0;return de.Deferred(function(e){n[0][3].add(i(0,e,de.isFunction(o)?o:a,e.notifyWith)),n[1][3].add(i(0,e,de.isFunction(t)?t:a)),n[2][3].add(i(0,e,de.isFunction(r)?r:u))}).promise()},promise:function(e){return null!=e?de.extend(e,o):o}},i={};return de.each(n,function(e,t){var s=t[2],a=t[5];o[t[1]]=s.add,a&&s.add(function(){r=a},n[3-e][2].disable,n[0][2].lock),s.add(t[3].fire),i[t[0]]=function(){return i[t[0]+"With"](this===i?void 0:this,arguments),this},i[t[0]+"With"]=s.fireWith}),o.promise(i),t&&t.call(i,i),i},when:function(e){var t=arguments.length,n=t,r=Array(n),o=re.call(arguments),i=de.Deferred(),s=function(e){return function(n){r[e]=this,o[e]=arguments.length>1?re.call(arguments):n,--t||i.resolveWith(r,o)}};if(t<=1&&(c(e,i.done(s(n)).resolve,i.reject),"pending"===i.state()||de.isFunction(o[n]&&o[n].then)))return i.then();for(;n--;)c(o[n],s(n),i.reject);return i.promise()}});var De=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;de.Deferred.exceptionHook=function(t,n){e.console&&e.console.warn&&t&&De.test(t.name)&&e.console.warn("jQuery.Deferred exception: "+t.message,t.stack,n)},de.readyException=function(t){e.setTimeout(function(){throw t})};var Oe=de.Deferred();de.fn.ready=function(e){return Oe.then(e).catch(function(e){de.readyException(e)}),this},de.extend({isReady:!1,readyWait:1,holdReady:function(e){e?de.readyWait++:de.ready(!0)},ready:function(e){(e===!0?--de.readyWait:de.isReady)||(de.isReady=!0,e!==!0&&--de.readyWait>0||Oe.resolveWith(te,[de]))}}),de.ready.then=Oe.then,"complete"===te.readyState||"loading"!==te.readyState&&!te.documentElement.doScroll?e.setTimeout(de.ready):(te.addEventListener("DOMContentLoaded",l),e.addEventListener("load",l));var Le=function(e,t,n,r,o,i,s){var a=0,u=e.length,c=null==n;if("object"===de.type(n)){o=!0;for(a in n)Le(e,t,a,n[a],!0,i,s)}else if(void 0!==r&&(o=!0,de.isFunction(r)||(s=!0),c&&(s?(t.call(e,r),t=null):(c=t,t=function(e,t,n){return c.call(de(e),n)})),t))for(;a1,null,!0)},removeData:function(e){return this.each(function(){Re.remove(this,e)})}}),de.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Fe.get(e,t),n&&(!r||de.isArray(n)?r=Fe.access(e,t,de.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=de.queue(e,t),r=n.length,o=n.shift(),i=de._queueHooks(e,t),s=function(){de.dequeue(e,t)};"inprogress"===o&&(o=n.shift(),r--),o&&("fx"===t&&n.unshift("inprogress"),delete i.stop,o.call(e,s,i)),!r&&i&&i.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Fe.get(e,n)||Fe.access(e,n,{empty:de.Callbacks("once memory").add(function(){Fe.remove(e,[t+"queue",n])})})}}),de.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length\x20\t\r\n\f]+)/i,Ve=/^$|\/(?:java|ecma)script/i,Ge={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};Ge.optgroup=Ge.option,Ge.tbody=Ge.tfoot=Ge.colgroup=Ge.caption=Ge.thead,Ge.th=Ge.td;var Ye=/<|&#?\w+;/;!function(){var e=te.createDocumentFragment(),t=e.appendChild(te.createElement("div")),n=te.createElement("input");n.setAttribute("type","radio"),n.setAttribute("checked","checked"),n.setAttribute("name","t"),t.appendChild(n),pe.checkClone=t.cloneNode(!0).cloneNode(!0).lastChild.checked,t.innerHTML="",pe.noCloneChecked=!!t.cloneNode(!0).lastChild.defaultValue}();var Qe=te.documentElement,Je=/^key/,Ke=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ze=/^([^.]*)(?:\.(.+)|)/;de.event={global:{},add:function(e,t,n,r,o){var i,s,a,u,c,l,f,p,h,d,g,m=Fe.get(e);if(m)for(n.handler&&(i=n,n=i.handler,o=i.selector),o&&de.find.matchesSelector(Qe,o),n.guid||(n.guid=de.guid++),(u=m.events)||(u=m.events={}),(s=m.handle)||(s=m.handle=function(t){return"undefined"!=typeof de&&de.event.triggered!==t.type?de.event.dispatch.apply(e,arguments):void 0}),t=(t||"").match(qe)||[""],c=t.length;c--;)a=Ze.exec(t[c])||[],h=g=a[1],d=(a[2]||"").split(".").sort(),h&&(f=de.event.special[h]||{},h=(o?f.delegateType:f.bindType)||h,f=de.event.special[h]||{},l=de.extend({type:h,origType:g,data:r,handler:n,guid:n.guid,selector:o,needsContext:o&&de.expr.match.needsContext.test(o),namespace:d.join(".")},i),(p=u[h])||(p=u[h]=[],p.delegateCount=0,f.setup&&f.setup.call(e,r,d,s)!==!1||e.addEventListener&&e.addEventListener(h,s)),f.add&&(f.add.call(e,l),l.handler.guid||(l.handler.guid=n.guid)),o?p.splice(p.delegateCount++,0,l):p.push(l),de.event.global[h]=!0)},remove:function(e,t,n,r,o){var i,s,a,u,c,l,f,p,h,d,g,m=Fe.hasData(e)&&Fe.get(e);if(m&&(u=m.events)){for(t=(t||"").match(qe)||[""],c=t.length;c--;)if(a=Ze.exec(t[c])||[],h=g=a[1],d=(a[2]||"").split(".").sort(),h){for(f=de.event.special[h]||{},h=(r?f.delegateType:f.bindType)||h,p=u[h]||[],a=a[2]&&new RegExp("(^|\\.)"+d.join("\\.(?:.*\\.|)")+"(\\.|$)"),s=i=p.length;i--;)l=p[i],!o&&g!==l.origType||n&&n.guid!==l.guid||a&&!a.test(l.namespace)||r&&r!==l.selector&&("**"!==r||!l.selector)||(p.splice(i,1),l.selector&&p.delegateCount--,f.remove&&f.remove.call(e,l));s&&!p.length&&(f.teardown&&f.teardown.call(e,d,m.handle)!==!1||de.removeEvent(e,h,m.handle),delete u[h])}else for(h in u)de.event.remove(e,h+t[c],n,r,!0);de.isEmptyObject(u)&&Fe.remove(e,"handle events")}},dispatch:function(e){var t,n,r,o,i,s,a=de.event.fix(e),u=new Array(arguments.length),c=(Fe.get(this,"events")||{})[a.type]||[],l=de.event.special[a.type]||{};for(u[0]=a,t=1;t=1))for(;c!==this;c=c.parentNode||this)if(1===c.nodeType&&("click"!==e.type||c.disabled!==!0)){for(i=[],s={},n=0;n-1:de.find(o,this,null,[c]).length),s[o]&&i.push(r);i.length&&a.push({elem:c,handlers:i})}return c=this,u\x20\t\r\n\f]*)[^>]*)\/>/gi,tt=/\s*$/g;de.extend({htmlPrefilter:function(e){return e.replace(et,"<$1>")},clone:function(e,t,n){var r,o,i,s,a=e.cloneNode(!0),u=de.contains(e.ownerDocument,e);if(!(pe.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||de.isXMLDoc(e)))for(s=v(a),i=v(e),r=0,o=i.length;r0&&y(s,!u&&v(e,"script")),a},cleanData:function(e){for(var t,n,r,o=de.event.special,i=0;void 0!==(n=e[i]);i++)if(He(n)){if(t=n[Fe.expando]){if(t.events)for(r in t.events)o[r]?de.event.remove(n,r):de.removeEvent(n,r,t.handle);n[Fe.expando]=void 0}n[Re.expando]&&(n[Re.expando]=void 0)}}}),de.fn.extend({detach:function(e){return q(this,e,!0)},remove:function(e){return q(this,e)},text:function(e){return Le(this,function(e){return void 0===e?de.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return A(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=j(this,e);t.appendChild(e)}})},prepend:function(){return A(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=j(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return A(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return A(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(de.cleanData(v(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return de.clone(this,e,t)})},html:function(e){return Le(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!tt.test(e)&&!Ge[(Xe.exec(e)||["",""])[1].toLowerCase()]){e=de.htmlPrefilter(e);try{for(;n1)}}),de.Tween=I,I.prototype={constructor:I,init:function(e,t,n,r,o,i){this.elem=e,this.prop=n,this.easing=o||de.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=i||(de.cssNumber[n]?"":"px")},cur:function(){var e=I.propHooks[this.prop];return e&&e.get?e.get(this):I.propHooks._default.get(this)},run:function(e){var t,n=I.propHooks[this.prop];return this.options.duration?this.pos=t=de.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):I.propHooks._default.set(this),this}},I.prototype.init.prototype=I.prototype,I.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=de.css(e.elem,e.prop,""),t&&"auto"!==t?t:0)},set:function(e){de.fx.step[e.prop]?de.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[de.cssProps[e.prop]]&&!de.cssHooks[e.prop]?e.elem[e.prop]=e.now:de.style(e.elem,e.prop,e.now+e.unit)}}},I.propHooks.scrollTop=I.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},de.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},de.fx=I.prototype.init,de.fx.step={};var ht,dt,gt=/^(?:toggle|show|hide)$/,mt=/queueHooks$/;de.Animation=de.extend(U,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return d(n.elem,e,$e.exec(t),n),n}]},tweener:function(e,t){de.isFunction(e)?(t=e,e=["*"]):e=e.match(qe);for(var n,r=0,o=e.length;r1)},removeAttr:function(e){return this.each(function(){de.removeAttr(this,e)})}}),de.extend({attr:function(e,t,n){var r,o,i=e.nodeType;if(3!==i&&8!==i&&2!==i)return"undefined"==typeof e.getAttribute?de.prop(e,t,n):(1===i&&de.isXMLDoc(e)||(o=de.attrHooks[t.toLowerCase()]||(de.expr.match.bool.test(t)?vt:void 0)),void 0!==n?null===n?void de.removeAttr(e,t):o&&"set"in o&&void 0!==(r=o.set(e,n,t))?r:(e.setAttribute(t,n+""),n):o&&"get"in o&&null!==(r=o.get(e,t))?r:(r=de.find.attr(e,t),null==r?void 0:r))},attrHooks:{type:{set:function(e,t){if(!pe.radioValue&&"radio"===t&&de.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,o=t&&t.match(qe);if(o&&1===e.nodeType)for(;n=o[r++];)e.removeAttribute(n)}}),vt={set:function(e,t,n){return t===!1?de.removeAttr(e,n):e.setAttribute(n,n),n}},de.each(de.expr.match.bool.source.match(/\w+/g),function(e,t){var n=yt[t]||de.find.attr;yt[t]=function(e,t,r){var o,i,s=t.toLowerCase();return r||(i=yt[s],yt[s]=o,o=null!=n(e,t,r)?s:null,yt[s]=i),o}});var xt=/^(?:input|select|textarea|button)$/i,bt=/^(?:a|area)$/i;de.fn.extend({prop:function(e,t){return Le(this,de.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[de.propFix[e]||e]})}}),de.extend({prop:function(e,t,n){var r,o,i=e.nodeType;if(3!==i&&8!==i&&2!==i)return 1===i&&de.isXMLDoc(e)||(t=de.propFix[t]||t,o=de.propHooks[t]),void 0!==n?o&&"set"in o&&void 0!==(r=o.set(e,n,t))?r:e[t]=n:o&&"get"in o&&null!==(r=o.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=de.find.attr(e,"tabindex");return t?parseInt(t,10):xt.test(e.nodeName)||bt.test(e.nodeName)&&e.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),pe.optSelected||(de.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),de.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){de.propFix[this.toLowerCase()]=this}),de.fn.extend({addClass:function(e){var t,n,r,o,i,s,a,u=0;if(de.isFunction(e))return this.each(function(t){de(this).addClass(e.call(this,t,X(this)))});if("string"==typeof e&&e)for(t=e.match(qe)||[];n=this[u++];)if(o=X(n),r=1===n.nodeType&&" "+z(o)+" "){for(s=0;i=t[s++];)r.indexOf(" "+i+" ")<0&&(r+=i+" ");a=z(r),o!==a&&n.setAttribute("class",a)}return this},removeClass:function(e){var t,n,r,o,i,s,a,u=0;if(de.isFunction(e))return this.each(function(t){de(this).removeClass(e.call(this,t,X(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof e&&e)for(t=e.match(qe)||[];n=this[u++];)if(o=X(n),r=1===n.nodeType&&" "+z(o)+" "){for(s=0;i=t[s++];)for(;r.indexOf(" "+i+" ")>-1;)r=r.replace(" "+i+" "," ");a=z(r),o!==a&&n.setAttribute("class",a)}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):de.isFunction(e)?this.each(function(n){de(this).toggleClass(e.call(this,n,X(this),t),t)}):this.each(function(){var t,r,o,i;if("string"===n)for(r=0,o=de(this),i=e.match(qe)||[];t=i[r++];)o.hasClass(t)?o.removeClass(t):o.addClass(t);else void 0!==e&&"boolean"!==n||(t=X(this),t&&Fe.set(this,"__className__",t),this.setAttribute&&this.setAttribute("class",t||e===!1?"":Fe.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;for(t=" "+e+" ";n=this[r++];)if(1===n.nodeType&&(" "+z(X(n))+" ").indexOf(t)>-1)return!0;return!1}});var wt=/\r/g;de.fn.extend({val:function(e){var t,n,r,o=this[0];{if(arguments.length)return r=de.isFunction(e),this.each(function(n){var o;1===this.nodeType&&(o=r?e.call(this,n,de(this).val()):e,null==o?o="":"number"==typeof o?o+="":de.isArray(o)&&(o=de.map(o,function(e){return null==e?"":e+""})),t=de.valHooks[this.type]||de.valHooks[this.nodeName.toLowerCase()],t&&"set"in t&&void 0!==t.set(this,o,"value")||(this.value=o))});if(o)return t=de.valHooks[o.type]||de.valHooks[o.nodeName.toLowerCase()],t&&"get"in t&&void 0!==(n=t.get(o,"value"))?n:(n=o.value,"string"==typeof n?n.replace(wt,""):null==n?"":n)}}}),de.extend({valHooks:{option:{get:function(e){var t=de.find.attr(e,"value");return null!=t?t:z(de.text(e))}},select:{get:function(e){var t,n,r,o=e.options,i=e.selectedIndex,s="select-one"===e.type,a=s?null:[],u=s?i+1:o.length;for(r=i<0?u:s?i:0;r-1)&&(n=!0);return n||(e.selectedIndex=-1),i}}}}),de.each(["radio","checkbox"],function(){de.valHooks[this]={set:function(e,t){if(de.isArray(t))return e.checked=de.inArray(de(e).val(),t)>-1}},pe.checkOn||(de.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var Tt=/^(?:focusinfocus|focusoutblur)$/;de.extend(de.event,{trigger:function(t,n,r,o){var i,s,a,u,c,l,f,p=[r||te],h=ce.call(t,"type")?t.type:t,d=ce.call(t,"namespace")?t.namespace.split("."):[];if(s=a=r=r||te,3!==r.nodeType&&8!==r.nodeType&&!Tt.test(h+de.event.triggered)&&(h.indexOf(".")>-1&&(d=h.split("."),h=d.shift(),d.sort()),c=h.indexOf(":")<0&&"on"+h,t=t[de.expando]?t:new de.Event(h,"object"==typeof t&&t),t.isTrigger=o?2:3,t.namespace=d.join("."),t.rnamespace=t.namespace?new RegExp("(^|\\.)"+d.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=r),n=null==n?[t]:de.makeArray(n,[t]),f=de.event.special[h]||{},o||!f.trigger||f.trigger.apply(r,n)!==!1)){if(!o&&!f.noBubble&&!de.isWindow(r)){for(u=f.delegateType||h,Tt.test(u+h)||(s=s.parentNode);s;s=s.parentNode)p.push(s),a=s;a===(r.ownerDocument||te)&&p.push(a.defaultView||a.parentWindow||e)}for(i=0;(s=p[i++])&&!t.isPropagationStopped();)t.type=i>1?u:f.bindType||h,l=(Fe.get(s,"events")||{})[t.type]&&Fe.get(s,"handle"),l&&l.apply(s,n),l=c&&s[c],l&&l.apply&&He(s)&&(t.result=l.apply(s,n),t.result===!1&&t.preventDefault());return t.type=h,o||t.isDefaultPrevented()||f._default&&f._default.apply(p.pop(),n)!==!1||!He(r)||c&&de.isFunction(r[h])&&!de.isWindow(r)&&(a=r[c],a&&(r[c]=null),de.event.triggered=h,r[h](),de.event.triggered=void 0,a&&(r[c]=a)),t.result}},simulate:function(e,t,n){var r=de.extend(new de.Event,n,{type:e,isSimulated:!0});de.event.trigger(r,null,t)}}),de.fn.extend({trigger:function(e,t){return this.each(function(){de.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return de.event.trigger(e,t,n,!0)}}),de.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,t){de.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),de.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),pe.focusin="onfocusin"in e,pe.focusin||de.each({focus:"focusin",blur:"focusout"},function(e,t){var n=function(e){de.event.simulate(t,e.target,de.event.fix(e))};de.event.special[t]={setup:function(){var r=this.ownerDocument||this,o=Fe.access(r,t);o||r.addEventListener(e,n,!0),Fe.access(r,t,(o||0)+1)},teardown:function(){var r=this.ownerDocument||this,o=Fe.access(r,t)-1;o?Fe.access(r,t,o):(r.removeEventListener(e,n,!0),Fe.remove(r,t))}}});var Ct=e.location,jt=de.now(),kt=/\?/;de.parseXML=function(t){var n;if(!t||"string"!=typeof t)return null;try{n=(new e.DOMParser).parseFromString(t,"text/xml")}catch(e){n=void 0}return n&&!n.getElementsByTagName("parsererror").length||de.error("Invalid XML: "+t),n};var Et=/\[\]$/,St=/\r?\n/g,Nt=/^(?:submit|button|image|reset|file)$/i,At=/^(?:input|select|textarea|keygen)/i;de.param=function(e,t){var n,r=[],o=function(e,t){var n=de.isFunction(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(de.isArray(e)||e.jquery&&!de.isPlainObject(e))de.each(e,function(){o(this.name,this.value)});else for(n in e)V(n,e[n],t,o);return r.join("&")},de.fn.extend({serialize:function(){return de.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=de.prop(this,"elements");return e?de.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!de(this).is(":disabled")&&At.test(this.nodeName)&&!Nt.test(e)&&(this.checked||!ze.test(e))}).map(function(e,t){var n=de(this).val();return null==n?null:de.isArray(n)?de.map(n,function(e){return{name:t.name,value:e.replace(St,"\r\n")}}):{name:t.name,value:n.replace(St,"\r\n")}}).get()}});var qt=/%20/g,Dt=/#.*$/,Ot=/([?&])_=[^&]*/,Lt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Ht=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Ft=/^(?:GET|HEAD)$/,Rt=/^\/\//,It={},Pt={},Mt="*/".concat("*"),$t=te.createElement("a");$t.href=Ct.href,de.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ct.href,type:"GET",isLocal:Ht.test(Ct.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Mt,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":de.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Q(Q(e,de.ajaxSettings),t):Q(de.ajaxSettings,e)},ajaxPrefilter:G(It),ajaxTransport:G(Pt),ajax:function(t,n){function r(t,n,r,a){var c,p,h,b,w,T=n;l||(l=!0,u&&e.clearTimeout(u),o=void 0,s=a||"",C.readyState=t>0?4:0,c=t>=200&&t<300||304===t,r&&(b=J(d,C,r)),b=K(d,b,C,c),c?(d.ifModified&&(w=C.getResponseHeader("Last-Modified"),w&&(de.lastModified[i]=w),w=C.getResponseHeader("etag"),w&&(de.etag[i]=w)),204===t||"HEAD"===d.type?T="nocontent":304===t?T="notmodified":(T=b.state,p=b.data,h=b.error,c=!h)):(h=T,!t&&T||(T="error",t<0&&(t=0))),C.status=t,C.statusText=(n||T)+"",c?v.resolveWith(g,[p,T,C]):v.rejectWith(g,[C,T,h]),C.statusCode(x),x=void 0,f&&m.trigger(c?"ajaxSuccess":"ajaxError",[C,d,c?p:h]),y.fireWith(g,[C,T]),f&&(m.trigger("ajaxComplete",[C,d]),--de.active||de.event.trigger("ajaxStop")))}"object"==typeof t&&(n=t,t=void 0),n=n||{};var o,i,s,a,u,c,l,f,p,h,d=de.ajaxSetup({},n),g=d.context||d,m=d.context&&(g.nodeType||g.jquery)?de(g):de.event,v=de.Deferred(),y=de.Callbacks("once memory"),x=d.statusCode||{},b={},w={},T="canceled",C={readyState:0,getResponseHeader:function(e){var t;if(l){if(!a)for(a={};t=Lt.exec(s);)a[t[1].toLowerCase()]=t[2];t=a[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return l?s:null},setRequestHeader:function(e,t){return null==l&&(e=w[e.toLowerCase()]=w[e.toLowerCase()]||e,b[e]=t),this},overrideMimeType:function(e){return null==l&&(d.mimeType=e),this},statusCode:function(e){var t;if(e)if(l)C.always(e[C.status]);else for(t in e)x[t]=[x[t],e[t]];return this},abort:function(e){var t=e||T;return o&&o.abort(t),r(0,t),this}};if(v.promise(C),d.url=((t||d.url||Ct.href)+"").replace(Rt,Ct.protocol+"//"),d.type=n.method||n.type||d.method||d.type,d.dataTypes=(d.dataType||"*").toLowerCase().match(qe)||[""],null==d.crossDomain){c=te.createElement("a");try{c.href=d.url,c.href=c.href,d.crossDomain=$t.protocol+"//"+$t.host!=c.protocol+"//"+c.host}catch(e){d.crossDomain=!0}}if(d.data&&d.processData&&"string"!=typeof d.data&&(d.data=de.param(d.data,d.traditional)),Y(It,d,n,C),l)return C;f=de.event&&d.global,f&&0===de.active++&&de.event.trigger("ajaxStart"),d.type=d.type.toUpperCase(),d.hasContent=!Ft.test(d.type),i=d.url.replace(Dt,""),d.hasContent?d.data&&d.processData&&0===(d.contentType||"").indexOf("application/x-www-form-urlencoded")&&(d.data=d.data.replace(qt,"+")):(h=d.url.slice(i.length),d.data&&(i+=(kt.test(i)?"&":"?")+d.data,delete d.data),d.cache===!1&&(i=i.replace(Ot,"$1"),h=(kt.test(i)?"&":"?")+"_="+jt++ +h),d.url=i+h),d.ifModified&&(de.lastModified[i]&&C.setRequestHeader("If-Modified-Since",de.lastModified[i]),de.etag[i]&&C.setRequestHeader("If-None-Match",de.etag[i])),(d.data&&d.hasContent&&d.contentType!==!1||n.contentType)&&C.setRequestHeader("Content-Type",d.contentType),C.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+("*"!==d.dataTypes[0]?", "+Mt+"; q=0.01":""):d.accepts["*"]);for(p in d.headers)C.setRequestHeader(p,d.headers[p]);if(d.beforeSend&&(d.beforeSend.call(g,C,d)===!1||l))return C.abort();if(T="abort",y.add(d.complete),C.done(d.success),C.fail(d.error),o=Y(Pt,d,n,C)){if(C.readyState=1,f&&m.trigger("ajaxSend",[C,d]),l)return C;d.async&&d.timeout>0&&(u=e.setTimeout(function(){C.abort("timeout")},d.timeout));try{l=!1,o.send(b,r)}catch(e){if(l)throw e;r(-1,e)}}else r(-1,"No Transport");return C},getJSON:function(e,t,n){return de.get(e,t,n,"json")},getScript:function(e,t){return de.get(e,void 0,t,"script")}}),de.each(["get","post"],function(e,t){de[t]=function(e,n,r,o){return de.isFunction(n)&&(o=o||r,r=n,n=void 0),de.ajax(de.extend({url:e,type:t,dataType:o,data:n,success:r},de.isPlainObject(e)&&e))}}),de._evalUrl=function(e){return de.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,throws:!0})},de.fn.extend({wrapAll:function(e){var t;return this[0]&&(de.isFunction(e)&&(e=e.call(this[0])),t=de(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){for(var e=this;e.firstElementChild;)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(e){return de.isFunction(e)?this.each(function(t){de(this).wrapInner(e.call(this,t))}):this.each(function(){var t=de(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=de.isFunction(e);return this.each(function(n){de(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(e){return this.parent(e).not("body").each(function(){de(this).replaceWith(this.childNodes)}),this}}),de.expr.pseudos.hidden=function(e){return!de.expr.pseudos.visible(e)},de.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},de.ajaxSettings.xhr=function(){try{return new e.XMLHttpRequest}catch(e){}};var Wt={0:200,1223:204},Bt=de.ajaxSettings.xhr();pe.cors=!!Bt&&"withCredentials"in Bt,pe.ajax=Bt=!!Bt,de.ajaxTransport(function(t){var n,r;if(pe.cors||Bt&&!t.crossDomain)return{send:function(o,i){var s,a=t.xhr();if(a.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(s in t.xhrFields)a[s]=t.xhrFields[s];t.mimeType&&a.overrideMimeType&&a.overrideMimeType(t.mimeType),t.crossDomain||o["X-Requested-With"]||(o["X-Requested-With"]="XMLHttpRequest");for(s in o)a.setRequestHeader(s,o[s]);n=function(e){return function(){n&&(n=r=a.onload=a.onerror=a.onabort=a.onreadystatechange=null,"abort"===e?a.abort():"error"===e?"number"!=typeof a.status?i(0,"error"):i(a.status,a.statusText):i(Wt[a.status]||a.status,a.statusText,"text"!==(a.responseType||"text")||"string"!=typeof a.responseText?{binary:a.response}:{text:a.responseText},a.getAllResponseHeaders()))}},a.onload=n(),r=a.onerror=n("error"),void 0!==a.onabort?a.onabort=r:a.onreadystatechange=function(){4===a.readyState&&e.setTimeout(function(){n&&r()})},n=n("abort");try{a.send(t.hasContent&&t.data||null)}catch(e){if(n)throw e}},abort:function(){n&&n()}}}),de.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),de.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return de.globalEval(e),e}}}),de.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),de.ajaxTransport("script",function(e){if(e.crossDomain){var t,n;return{send:function(r,o){t=de(" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/pages/background-1.md b/docs/pages/background-1.md deleted file mode 100644 index 985ac580a412fcf3f93ce67438d0a8049204bf5a..0000000000000000000000000000000000000000 --- a/docs/pages/background-1.md +++ /dev/null @@ -1 +0,0 @@ -# 1.md \ No newline at end of file diff --git a/docs/pages/background-2.html b/docs/pages/background-2.html deleted file mode 100644 index a433c4a35b9a1511da840aafe9915d2ea862a60b..0000000000000000000000000000000000000000 --- a/docs/pages/background-2.html +++ /dev/null @@ -1,882 +0,0 @@ - - - - - - - 后端说明2 · 调度系统-EasyScheduler - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - - - - - - - -
- -
- -
- - - - - - - - -
-
- -
-
- -
- -

trailingEnd

- - -
- -
-
-
- -

results matching ""

-
    - -
    -
    - -

    No results matching ""

    - -
    -
    -
    - -
    -
    - -
    - - - - - - -
    - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/pages/deploy-background.html b/docs/pages/deploy-background.html deleted file mode 100644 index 5091df5a9abd18a39b84df34910ff65de988e727..0000000000000000000000000000000000000000 --- a/docs/pages/deploy-background.html +++ /dev/null @@ -1,1548 +0,0 @@ - - - - - - - 后端部署 · 调度系统-EasyScheduler - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - - - - - -
    - -
    - -
    - - - - - - - - -
    -
    - -
    -
    - -
    - -

    -

    部署文档

    -

    软件要求

    -
      -
    • Mysql (5.5+) : 必装
    • -
    • JDK (1.8+) :必装
    • -
    • Zookeeper (3.4.6) :必装
    • -
    • Hadoop (2.7+) :选装, 如果需要使用到EasyScheduler的资源上传,MapReduce任务在线提交则需要安装(上传的资源文件目前保存在Hdfs上)
    • -
    • Hive (1.2.1+) : 选装,如果跑Hive任务需要安装(
    • -
    • Reids安装 (2.7.0+) : 选装, 任务队列选择Redis时需要安装
    • -
    • Spark(1.x,2.x) : 选装,Spark任务提交需要安装
    • -
    • PostgreSQL(8.2.15+) : 选装,PostgreSQL存储过程需要安装

      -
      -

      注意:EasyScheduler本身不依赖Hadoop、Hive、Spark、PostgreSQL、Redis,仅是用到了他们的Client jar,用于对应任务的运行。

      -
      -
    • -
    -

    项目编译

    -
      -
    • 执行编译命令:
    • -
    -
    -

    mvn -U clean package assembly:assembly -Dmaven.test.skip=true

    -
    -
      -
    • 查看目录
    • -
    -

    正常编译完后,会在当前目录生成 target/escheduler-{version}-SNAPSHOT/

    -
        bin
    -    conf
    -    lib
    -    script
    -    sql
    -
      -
    • 说明

      -
      bin  : 工程服务启动脚本
      -conf : 工程配置文件
      -lib  : 工程依赖jar包,包括各个模块jar和第三方jar
      -script : 工程自动化部署、启动脚本
      -sql  : 工程依赖sql文件
      -
    • -
    -

    数据库初始化

    -
      -
    • 创建database和账号
    • -
    -
    mysql -h {host} -u {user} -p{password}
    -mysql> CREATE DATABASE escheduler DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
    -mysql> GRANT ALL PRIVILEGES ON escheduler.* TO '{user}'@'%' IDENTIFIED BY '{password}';
    -mysql> GRANT ALL PRIVILEGES ON escheduler.* TO '{user}'@'localhost' IDENTIFIED BY '{password}';
    -mysql> flush privileges;
    -
      -
    • 创建表
    • -
    -
    说明:在target/escheduler-{version}-SNAPSHOT/sql/有两个sql创建表文件:escheduler.sql和quartz.sql
    -执行:
    -mysql -h {host} -u {user} -p{password} -D {db} < escheduler.sql
    -mysql -h {host} -u {user} -p{password} -D {db} < quartz.sql
    -

    创建部署用户

    -

    因为easyscheduler worker都是以 sudo -u {linux-user} 方式来执行作业,所以部署用户需要有 sudo 权限,而且是免密的。

    -
    部署账号
    -vi /etc/sudoers
    -
    -# 部署用户是 escheduler 账号
    -escheduler  ALL=(ALL)       NOPASSWD: NOPASSWD: ALL
    -
    -# 并且需要注释掉 Default requiretty 一行
    -#Default requiretty
    -

    配置文件

    -

    说明:配置文件位于 target/escheduler-{version}-SNAPSHOT/conf 下面

    -

    escheduler-alert

    -

    配置邮件告警信息

    -
      -
    • alert.properties
    • -
    -
    #以qq邮箱为例,如果是别的邮箱,请更改对应配置
    -#alert type is EMAIL/SMS
    -alert.type=EMAIL
    -
    -# mail server configuration
    -mail.protocol=SMTP
    -mail.server.host=smtp.exmail.qq.com
    -mail.server.port=25
    -mail.sender=xxxxxx@qq.com
    -mail.passwd=xxxxxxx
    -
    -# xls file path, need manually create it before use if not exist
    -xls.file.path=/opt/xls
    -

    配置告警数据源信息

    -
      -
    • alert/data_source.properties
    • -
    -
    #注意:请替换${xxx}里的内容
    -
    -# common configuration
    -spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
    -spring.datasource.driver-class-name=com.mysql.jdbc.Driver
    -spring.datasource.url=jdbc:mysql://${ip}:3306/escheduler?characterEncoding=UTF-8
    -spring.datasource.username=${username}
    -spring.datasource.password=${password}
    -
    -# supplement configuration
    -spring.datasource.initialSize=5
    -# min connection number
    -spring.datasource.minIdle=5
    -# max connection number
    -spring.datasource.maxActive=20
    -
    -# max wait time for get connection
    -spring.datasource.maxWait=60000
    -
    -# idle connections closed,unit milliseconds
    -spring.datasource.timeBetweenEvictionRunsMillis=60000
    -
    -# connection minimum survival time,unit milliseconds
    -spring.datasource.minEvictableIdleTimeMillis=300000
    -spring.datasource.validationQuery=SELECT 1
    -spring.datasource.validationQueryTimeout=3
    -spring.datasource.testWhileIdle=true
    -spring.datasource.testOnBorrow=true
    -spring.datasource.testOnReturn=false
    -spring.datasource.defaultAutoCommit=true
    -
    -# open PSCache,set PSCache size
    -spring.datasource.poolPreparedStatements=false
    -spring.datasource.maxPoolPreparedStatementPerConnectionSize=20
    -

    日志配置文件

    -
      -
    • alert_logback.xml
    • -
    -
    <!-- Logback configuration. See http://logback.qos.ch/manual/index.html -->
    -<configuration scan="true" scanPeriod="120 seconds"> <!--debug="true" -->
    -    <property name="log.base" value="logs" />
    -    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    -        <encoder>
    -            <pattern>
    -                [%level] %date{yyyy-MM-dd HH:mm:ss.SSS} %logger{96}:[%line] - %msg%n
    -            </pattern>
    -            <charset>UTF-8</charset>
    -        </encoder>
    -    </appender>
    -
    -    <appender name="ALERTLOGFILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    -        <file>${log.base}/escheduler-alert.log</file>
    -        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
    -            <fileNamePattern>${log.base}/escheduler-alert.%d{yyyy-MM-dd_HH}.%i.log</fileNamePattern>
    -            <maxHistory>20</maxHistory>
    -            <maxFileSize>64MB</maxFileSize>
    -        </rollingPolicy>
    -        <encoder>
    -            <pattern>
    -                [%level] %date{yyyy-MM-dd HH:mm:ss.SSS} %logger{96}:[%line] - %msg%n
    -            </pattern>
    -            <charset>UTF-8</charset>
    -        </encoder>
    -    </appender>
    -
    -    <root level="INFO">
    -        <appender-ref ref="ALERTLOGFILE"/>
    -    </root>
    -</configuration>
    -

    escheduler-common

    -

    通用配置文件配置,队列选择及地址配置,通用文件目录配置。

    -
      -
    • common/common.properties
    • -
    -
    #task queue implementation, can choose "redis" or "zookeeper", default "zookeeper"
    -escheduler.queue.impl=zookeeper
    -
    -#if escheduler.queue.impl=redis, you need to configuration relevant information with redis. redis configuration start
    -spring.redis.host=${redis_ip}
    -spring.redis.port=6379
    -spring.redis.maxIdle=1000
    -spring.redis.maxTotal=10000
    -#redis configuration end
    -
    -# user data directory path, self configuration, please make sure the directory exists and have read write permissions
    -data.basedir.path=/xxx/xxx
    -
    -# directory path for user data download. self configuration, please make sure the directory exists and have read write permissions
    -data.download.basedir.path=/xxx/xxx 
    -
    -# process execute directory. self configuration, please make sure the directory exists and have read write permissions
    -process.exec.basepath=/xxx/xxx
    -
    -# data base dir, resource file will store to this hadoop hdfs path, self configuration, please make sure the directory exists on hdfs and have read write permissions。"/escheduler" is recommended
    -data.store2hdfs.basepath=/escheduler
    -
    -# system env path. self configuration, please make sure the directory and file exists and have read write execute permissions
    -escheduler.env.path=/xxx/xxx/.escheduler_env.sh
    -escheduler.env.py=/xxx/xxx/escheduler_env.py
    -
    -#resource.view.suffixs
    -resource.view.suffixs=txt,log,sh,conf,cfg,py,java,sql,hql,xml
    -
    -# is development state? default "false"
    -development.state=false
    -

    SHELL任务 环境变量配置

    -

    .escheduler_env.sh

    -
    #self configuration, please make sure the directory exists and have read write permissions
    -export HADOOP_HOME=/opt/soft/hadoop
    -export HADOOP_CONF_DIR=/opt/soft/hadoop/etc/hadoop
    -export SPARK_HOME1=/opt/soft/spark1
    -export SPARK_HOME2=/opt/soft/spark2
    -export PYTHON_HOME=/opt/soft/python
    -export JAVA_HOME=/opt/soft/java
    -export HIVE_HOME=/opt/soft/hive
    -
    -export PATH=$HADOOP_HOME/bin:$SPARK_HOME1/bin:$SPARK_HOME2/bin:$PYTHON_HOME/bin:$JAVA_HOME/bin:$HIVE_HOME/bin:$PATH
    -

    -

    Python任务 环境变量配置

    -

    escheduler_env.py

    -
    #self configuration, please make sure the directory exists and have read write execute permissions
    -
    -import os
    -
    -HADOOP_HOME="/opt/soft/hadoop"
    -PYTHON_HOME="/opt/soft/python"
    -JAVA_HOME="/opt/soft/java"
    -PATH=os.environ['PATH']
    -PATH="%s/bin:%s/bin:%s/bin:%s"%(HADOOP_HOME,JAVA_HOME,PYTHON_HOME,PATH)
    -
    -os.putenv('PATH','%s'%PATH)
    -

    hadoop 配置文件

    -
      -
    • common/hadoop/hadoop.properties
    • -
    -
    #please replace the content in ${xxx}
    -# ha or single namenode
    -fs.defaultFS=hdfs://${cluster_ipOrName}:8020
    -
    -#resourcemanager ha note this need ips , eg. 192.168.220.188,192.168.220.189
    -yarn.resourcemanager.ha.rm.ids=${ip1},${ip2}
    -
    -# reousrcemanager path 
    -yarn.application.status.address=http://${ip1}:8088/ws/v1/cluster/apps/%s
    -

    定时器配置文件

    -
      -
    • quartz.properties
    • -
    -
    #please replace the content in ${xxx}
    -#============================================================================
    -# Configure Main Scheduler Properties
    -#============================================================================
    -org.quartz.scheduler.instanceName = EasyScheduler
    -org.quartz.scheduler.instanceId = AUTO
    -org.quartz.scheduler.makeSchedulerThreadDaemon = true
    -org.quartz.jobStore.useProperties = false
    -
    -#============================================================================
    -# Configure ThreadPool
    -#============================================================================
    -
    -org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
    -org.quartz.threadPool.makeThreadsDaemons = true
    -org.quartz.threadPool.threadCount = 25
    -org.quartz.threadPool.threadPriority = 5
    -
    -#============================================================================
    -# Configure JobStore
    -#============================================================================
    -
    -org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX
    -org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.StdJDBCDelegate
    -org.quartz.jobStore.tablePrefix = QRTZ_
    -org.quartz.jobStore.isClustered = true
    -org.quartz.jobStore.misfireThreshold = 60000
    -org.quartz.jobStore.clusterCheckinInterval = 5000
    -org.quartz.jobStore.dataSource = myDs
    -
    -#============================================================================
    -# Configure Datasources  
    -#============================================================================
    -
    -org.quartz.dataSource.myDs.driver = com.mysql.jdbc.Driver
    -org.quartz.dataSource.myDs.URL = jdbc:mysql://${ip}:3306/escheduler?characterEncoding=utf8&useSSL=false
    -org.quartz.dataSource.myDs.user = ${username}
    -org.quartz.dataSource.myDs.password = ${password}
    -org.quartz.dataSource.myDs.maxConnections = 10
    -org.quartz.dataSource.myDs.validationQuery = select 1
    -

    zookeeper 配置文件

    -
      -
    • zookeeper.properties
    • -
    -
    #zookeeper cluster. eg. 192.168.220.188:2181,192.168.220.189:2181,192.168.220.190:2181
    -zookeeper.quorum=${ip1}:2181,${ip2}:2181,${ip3}:2181
    -
    -#zookeeper server dirctory
    -zookeeper.escheduler.master=/escheduler/masters
    -zookeeper.escheduler.worker=/escheduler/workers
    -
    -#zookeeper lock dirctory
    -zookeeper.escheduler.lock.master=/escheduler/lock/master
    -zookeeper.escheduler.lock.worker=/escheduler/lock/worker
    -
    -#escheduler root directory
    -zookeeper.escheduler.root=/escheduler
    -
    -#escheduler failover directory
    -zookeeper.escheduler.lock.master.failover=/escheduler/lock/failover/master
    -zookeeper.escheduler.lock.worker.failover=/escheduler/lock/failover/worker
    -
    -#escheduler failover directory
    -zookeeper.session.timeout=300
    -zookeeper.connection.timeout=300
    -zookeeper.retry.sleep=1000
    -zookeeper.retry.maxtime=5
    -

    escheduler-dao

    -

    dao数据源配置

    -
      -
    • dao/data_source.properties
    • -
    -
    #please replace the content in ${xxx}
    -
    -# base spring data source configuration
    -spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
    -spring.datasource.driver-class-name=com.mysql.jdbc.Driver
    -spring.datasource.url=jdbc:mysql://${ip}:3306/escheduler?characterEncoding=UTF-8
    -spring.datasource.username=${username}
    -spring.datasource.password=${password}
    -
    -# connection configuration
    -spring.datasource.initialSize=5
    -spring.datasource.minIdle=5
    -spring.datasource.maxActive=20
    -
    -# max seconds wait connection timeout
    -spring.datasource.maxWait=60000
    -
    -# milliseconds for check to close free connections
    -spring.datasource.timeBetweenEvictionRunsMillis=60000
    -
    -#  connection minimum survival time(milliseconds)
    -spring.datasource.minEvictableIdleTimeMillis=300000
    -spring.datasource.validationQuery=SELECT 1
    -spring.datasource.validationQueryTimeout=3
    -spring.datasource.testWhileIdle=true
    -spring.datasource.testOnBorrow=true
    -spring.datasource.testOnReturn=false
    -spring.datasource.defaultAutoCommit=true
    -
    -# open PSCache, specify count PSCache for every connection
    -spring.datasource.poolPreparedStatements=true
    -spring.datasource.maxPoolPreparedStatementPerConnectionSize=20
    -
    -
    -# data quality analysis is not currently in use. please ignore the following configuration
    -# task record flag
    -task.record.flag=false
    -task.record.datasource.url=jdbc:mysql://${ip}:3306/etl?characterEncoding=UTF-8
    -task.record.datasource.username=etl
    -task.record.datasource.password=xxxxx
    -

    escheduler-server

    -

    master配置文件

    -
      -
    • master.properties
    • -
    -
    # master execute thread num
    -master.exec.threads=100
    -
    -# master execute task number in parallel
    -master.exec.task.number=20
    -
    -# master heartbeat interval
    -master.heartbeat.interval=8
    -
    -# master commit task retry times
    -master.task.commit.retryTimes=5
    -
    -# master commit task interval
    -master.task.commit.interval=100
    -
    -
    -# only less than cpu avg load, master server can work. default value : the number of cpu cores * 2
    -master.max.cpuload.avg=10
    -
    -# only larger than reserved memory, master server can work. default value : physical memory * 1/10, unit is G.
    -master.reserved.memory=1
    -

    master日志文件

    -

    注意:对MASTERLOGFILE,自定义了MasterLogFilter

    -
      -
    • master_logback.xml
    • -
    -
    <!-- Logback configuration. See http://logback.qos.ch/manual/index.html -->
    -<configuration scan="true" scanPeriod="120 seconds"> <!--debug="true" -->
    -   <property name="log.base" value="logs" />
    -   <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    -      <encoder>
    -         <pattern>
    -            [%level] %date{yyyy-MM-dd HH:mm:ss.SSS} %logger{96}:[%line] - %msg%n
    -         </pattern>
    -         <charset>UTF-8</charset>
    -      </encoder>
    -   </appender>
    -
    -   <appender name="MASTERLOGFILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    -      <file>${log.base}/escheduler-master.log</file>
    -      <filter class="cn.escheduler.server.master.log.MasterLogFilter">
    -         <level>INFO</level>
    -      </filter>
    -      <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
    -         <fileNamePattern>${log.base}/escheduler-master.%d{yyyy-MM-dd_HH}.%i.log</fileNamePattern>
    -         <maxHistory>20</maxHistory>
    -         <maxFileSize>200MB</maxFileSize>
    -      </rollingPolicy>
    -      <encoder>
    -         <pattern>
    -            [%level] %date{yyyy-MM-dd HH:mm:ss.SSS} %logger{96}:[%line] - %msg%n
    -         </pattern>
    -         <charset>UTF-8</charset>
    -      </encoder>
    -   </appender>
    -
    -   <root level="INFO">
    -      <appender-ref ref="MASTERLOGFILE"/>
    -   </root>
    -</configuration>
    -

    worker配置文件

    -
      -
    • worker.properties
    • -
    -
    # worker execute thread num
    -worker.exec.threads=100
    -
    -# worker heartbeat interval
    -worker.heartbeat.interval=8
    -
    -# submit the number of tasks at a time
    -worker.fetch.task.num = 10
    -
    -# only less than cpu avg load, worker server can work. default value : the number of cpu cores * 2
    -worker.max.cpuload.avg=10
    -
    -# only larger than reserved memory, worker server can work. default value : physical memory * 1/6, unit is G.
    -worker.reserved.memory=1
    -

    worker日志文件

    -

    注意:对WORKERLOGFILE,自定义了WorkerLogFilter

    -

    对于 TASKLOGFILE , 自定义了TaskLogAppender和TaskLogFilter

    -
      -
    • worker_logback.xml
    • -
    -
    <!-- Logback configuration. See http://logback.qos.ch/manual/index.html -->
    -<configuration scan="true" scanPeriod="120 seconds">
    -    <property name="log.base" value="logs"/>
    -    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    -        <encoder>
    -            <pattern>
    -                [%level] %date{yyyy-MM-dd HH:mm:ss.SSS} %logger{96}:[%line] - %msg%n
    -            </pattern>
    -            <charset>UTF-8</charset>
    -        </encoder>
    -    </appender>
    -    <appender name="TASKLOGFILE" class="cn.escheduler.server.worker.log.TaskLogAppender">
    -        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
    -            <level>INFO</level>
    -        </filter>
    -        <filter class="cn.escheduler.server.worker.log.TaskLogFilter"></filter>
    -        <file>${log.base}/{processDefinitionId}/{processInstanceId}/{taskInstanceId}.log</file>
    -        <encoder>
    -            <pattern>
    -                [%level] %date{yyyy-MM-dd HH:mm:ss.SSS} %logger{96}:[%line] - %msg%n
    -            </pattern>
    -            <charset>UTF-8</charset>
    -        </encoder>
    -        <append>true</append>
    -    </appender>
    -
    -    <appender name="WORKERLOGFILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    -        <file>${log.base}/escheduler-worker.log</file>
    -        <filter class="cn.escheduler.server.worker.log.WorkerLogFilter">
    -            <level>INFO</level>
    -        </filter>
    -
    -        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
    -            <fileNamePattern>${log.base}/escheduler-worker.%d{yyyy-MM-dd_HH}.%i.log</fileNamePattern>
    -            <maxHistory>20</maxHistory>
    -            <maxFileSize>200MB</maxFileSize>
    -        </rollingPolicy>
    -             
    -        <encoder>
    -            <pattern>
    -                [%level] %date{yyyy-MM-dd HH:mm:ss.SSS} %logger{96}:[%line] - %msg%n
    -            </pattern>
    -            <charset>UTF-8</charset>
    -        </encoder>
    -          
    -    </appender>
    -
    -
    -    <root level="INFO">
    -        <appender-ref ref="TASKLOGFILE"/>
    -        <appender-ref ref="WORKERLOGFILE"/>
    -    </root>
    -</configuration>
    -

    escheduler-web

    -

    web配置文件

    -
      -
    • application.properties
    • -
    -
    # server port
    -server.port=12345
    -
    -# session config
    -server.session.timeout=7200
    -
    -
    -server.context-path=/escheduler/
    -
    -# file size limit for upload
    -spring.http.multipart.max-file-size=1024MB
    -spring.http.multipart.max-request-size=1024MB
    -
    -#post content
    -server.max-http-post-size=5000000
    -

    web日志文件

    -
      -
    • webserver_logback.xml
    • -
    -
        <!-- Logback configuration. See http://logback.qos.ch/manual/index.html -->
    -    <configuration scan="true" scanPeriod="120 seconds">
    -       <logger name="org.apache.zookeeper" level="WARN"/>
    -       <logger name="org.apache.hbase" level="WARN"/>
    -       <logger name="org.apache.hadoop" level="WARN"/>
    -
    -       <property name="log.base" value="logs" />
    -
    -       <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    -          <encoder>
    -             <pattern>
    -                [%level] %date{yyyy-MM-dd HH:mm:ss.SSS} %logger{96}:[%line] - %msg%n
    -             </pattern>
    -             <charset>UTF-8</charset>
    -          </encoder>
    -       </appender>
    -
    -       <appender name="WEBSERVERLOGFILE"  class="ch.qos.logback.core.rolling.RollingFileAppender">
    -          <!-- Log level filter -->
    -          <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
    -             <level>INFO</level>
    -          </filter>
    -            <file>${log.base}/escheduler-web-server.log</file>
    -          <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
    -             <fileNamePattern>${log.base}/escheduler-web-server.%d{yyyy-MM-dd_HH}.%i.log</fileNamePattern>
    -             <maxHistory>20</maxHistory>
    -             <maxFileSize>64MB</maxFileSize>
    -          </rollingPolicy>
    -
    -          <encoder>
    -             <pattern>
    -                [%level] %date{yyyy-MM-dd HH:mm:ss.SSS} %logger{96}:[%line] - %msg%n
    -             </pattern>
    -             <charset>UTF-8</charset>
    -          </encoder>
    -
    -       </appender>
    -
    -       <root level="INFO">
    -          <appender-ref ref="WEBSERVERLOGFILE" />
    -       </root>
    -    </configuration>
    -

    启动停止命令

    -
      -
    • 启停Master
    • -
    -
    sh ./bin/escheduler-daemon.sh start master-server
    -sh ./bin/escheduler-daemon.sh stop master-server
    -
      -
    • 启停Worker
    • -
    -
    sh ./bin/escheduler-daemon.sh start worker-server
    -sh ./bin/escheduler-daemon.sh stop worker-server
    -
      -
    • 启停Web
    • -
    -
    sh ./bin/escheduler-daemon.sh start web-server
    -sh ./bin/escheduler-daemon.sh stop web-server
    -
      -
    • 启停Logger
      sh ./bin/escheduler-daemon.sh start logger-server
      -sh ./bin/escheduler-daemon.sh stop logger-server
      -
    • -
    • 启停Alert
      sh ./bin/escheduler-daemon.sh start alert-server
      -sh ./bin/escheduler-daemon.sh stop alert-server
      -
    • -
    -

    一键启停脚本

    -
      -
    • 部署用户配置

      -
        -
      1. 创建部署用户

        -

        target/escheduler-{version}-SNAPSHOT/script/init_deploy_user.sh

        -
      2. -
      3. 配置

        -

        因为escheduler worker 都是以 sudo -u {linux-user} 方式来执行作业,所以部署用户需要有 sudo 权限,而且是免密的

        -
      4. -
      -
    • -
    -
        vi /etc/sudoers
    -
    -    # 部署用户是 escheduler 账号
    -    escheduler  ALL=(ALL)       NOPASSWD: NOPASSWD: ALL
    -
    -    # 并且需要注释掉 Default requiretty 一行
    -    #Default requiretty
    -
      -
    • 初始化 hdfs
    • -
    -

    ​ target/escheduler-{version}-SNAPSHOT/script/init_hdfs.sh

    -
      -
    • 安装配置文件 install_config
    • -
    -
        # 项目所在目录
    -    BASE_PATH=/opt/soft/program
    -    # 部署的机器
    -    IPS=ark0,ark1,ark2,ark3,ark4
    -
      -
    • 运行配置文件 run_config

      -
       # master服务所在机器,>=1个
      - MASTERS=ark0,ark1
      - # worker服务所在机器,>=1个
      - WORKERS=ark2,ark3,ark4
      - # alert服务所在机器,1个
      - ALERTS=ark3
      - # web服务所在机器,1个
      - WEBSERVER=ark1
      -
    • -
    • 初始化安装目录

      -

      target/escheduler-{version}-SNAPSHOT/script/init_install_path.sh

      -
    • -
    • 将 target/escheduler-{version}-SNAPSHOT 下配置好的conf文件夹和编译好的escheduler-{version}-SNAPSHOT.tar.gz 复制到 主机器的 BASE_PATH 目录下

      -

      说明:主机器需要能免密ssh登录到其它机器上

      -
    • -
    • 启动所有服务

      -
    • -
    -
    sh ./deploy/start_all.sh
    -
    -
      -
    • 关闭所有服务
    • -
    -
    sh ./deploy/stop_all.sh
    -
    -

    监控服务

    -

    monitor_server.py 脚本是监听,master和worker服务挂掉重启的脚本

    -

    注意:在全部服务都启动之后启动

    -

    nohup python -u monitor_server.py > nohup.out 2>&1 &

    -

    日志查看

    -

    日志统一存放于指定文件夹内

    -
     logs/
    -    ├── escheduler-alert-server.log
    -    ├── escheduler-master-server.log
    -    |—— escheduler-worker-server.log
    -    |—— escheduler-web-server.log
    -    |—— escheduler-logger-server.log
    -
    - - -
    - -
    -
    -
    - -

    results matching ""

    -
      - -
      -
      - -

      No results matching ""

      - -
      -
      -
      - -
      -
      - -
      - - - - - - - - - - - - - - -
      - - -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/pages/foreground-1.md b/docs/pages/foreground-1.md deleted file mode 100644 index 985ac580a412fcf3f93ce67438d0a8049204bf5a..0000000000000000000000000000000000000000 --- a/docs/pages/foreground-1.md +++ /dev/null @@ -1 +0,0 @@ -# 1.md \ No newline at end of file diff --git a/docs/pages/foreground-2.html b/docs/pages/foreground-2.html deleted file mode 100644 index 29691bdfcdbc5dc44af2fb384764c2c1e59faea7..0000000000000000000000000000000000000000 --- a/docs/pages/foreground-2.html +++ /dev/null @@ -1,882 +0,0 @@ - - - - - - - 安装 · 调度系统-EasyScheduler - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      -
      - - - - - - - - -
      - -
      - -
      - - - - - - - - -
      -
      - -
      -
      - -
      - -

      frontEnd

      - - -
      - -
      -
      -
      - -

      results matching ""

      -
        - -
        -
        - -

        No results matching ""

        - -
        -
        -
        - -
        -
        - -
        - - - - - - -
        - - -
        - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/pages/guide-architecture.html b/docs/pages/guide-architecture.html deleted file mode 100644 index 10feec1e00d52dfa1ac56a1b158bbea8ce644dbb..0000000000000000000000000000000000000000 --- a/docs/pages/guide-architecture.html +++ /dev/null @@ -1,1037 +0,0 @@ - - - - - - - 系统架构分析 · 调度系统-EasyScheduler - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        -
        - - - - - - - - -
        - -
        - -
        - - - - - - - - -
        -
        - -
        -
        - -
        - -

        EasyScheduler大数据调度系统架构分析

        -

        架构设计

        -

        PNG

        -
        -

        EasyScheduler设计围绕四个服务展开,UI、Web、Server和Alert。

        -
          -
        • UI : 使用易观封装的Vue及jsplumb组件开发
          -
        • -
        • Web:使用SpringBoot提供Rest Api和UI分离交互
          -
        • -
        • Server : Scheduler调度及分布式任务执行引擎
          -
        • -
        • Alert:告警微服务
          -
        • -
        -
        -

        以下将详细介绍Server的设计思想和遇到的问题

        -

        去中心化vs中心化

        -
        - -

        1. 中心化思想

        -
        -

               中心化的设计理念比较简单,分布式集群中的节点按照角色分工,大体上分为两种角色:

        -

        PNG

        -

               Master的角色主要负责任务分发并监督Slave的健康状态,可以动态的将任务均衡到Slave上,以致Slave节点不至于“忙死”或”闲死”的状态。

        -

               Worker的角色主要负责任务的执行工作并维护和Master的心跳,以便Master可以分配任务给Slave。

        -
        -

        2. 中心化思想设计存在的问题:

        -
        -

               一旦Master出现了问题,则群龙无首,整个集群就崩溃。为了解决这个问题,大多数Master/Slave架构模式都采用了主备Master的设计方案,可以是热备或者冷备,也可以是自动切换或手动切换,而且越来越多的新系统都开始具备自动选举切换Master的能力,以提升系统的可用性。

        -

               另外一个问题是如果Scheduler在Master上,虽然可以支持一个DAG中不同的任务运行在不同的机器上,但是会产生Master的过负载。如果Scheduler在Slave上,则一个DAG中所有的任务都只能在某一台机器上进行作业提交,则并行任务比较多的时候,Slave的压力可能会比较大。

        -
        -

        3. 去中心化

        -
        -

        PNG

        -

               去中心化设计里,通常没有Master/Slave的概念,所有的角色都是一样的,地位是平等的,全球互联网就是一个典型的去中心化的分布式系统,联网的任意节点设备down机,都只会影响很小范围的功能。

        -

               去中心化设计的核心设计在于整个分布式系统中不存在一个区别于其他节点的”管理者”,因此不存在单点故障问题。但由于不存在” 管理者”节点所以每个节点都需要跟其他节点通信才得到必须要的机器信息,而分布式系统通信的不可靠行,则大大增加了上述功能的实现难度。

        -

               实际上,真正去中心化的分布式系统并不多见。反而动态中心化分布式系统正在不断涌出。在这种架构下,集群中的管理者是被动态选择出来的,而不是预置的,并且集群在发生故障的时候,集群的节点会自发的举行"会议"选举新的"管理者"主持工作。最典型的案例就是ZooKeeper及Go语言实现的Etcd。

        -
        -

        -
        -

        EasyScheduler的去中心化是Master/Worker注册到Zookeeper中,实现Master集群和Worker集群无中心,并使用Zookeeper分布式锁来选举其中的一台Master或Worker为“管理者”来执行任务。

        -
        -

        分布式锁实践

        -

        EasyScheduler使用Zookeeper分布式锁来实现同一时刻只有一台Master执行Scheduler,或者只有一台Worker执行任务的提交。

        -

        1. 获取分布式锁的核心流程算法如下:

        -
        -

        PNG

        -
        -

        2. EasyScheduler中Scheduler线程分布式锁实现流程图:

        -
        -

        PNG

        -
        -

        线程不足循环等待问题

        -
          -
        • 如果一个DAG中没有子流程,则如果Command中的数据条数大于线程池设置的阈值,则直接流程等待或失败。

          -
        • -
        • 如果一个大的DAG中嵌套了很多子流程,如下图:

          -
          -

          PNG

          -

                 则会产生“死等”状态。MainFlowThread等待SubFlowThread1结束,SubFlowThread1等待SubFlowThread2结束,SubFlowThread2等待SubFlowThread3结束,而SubFlowThread3等待线程池有新线程,则整个DAG流程不能结束,从而其中的线程也不能释放。

          -

                 这样就形成的子父流程循环等待的状态。此时除非启动新的Master来增加线程来打破这样的”僵局”,否则调度集群将不能再使用。

          -
          -
        • -
        -
          -
        • 对于启动新Master来打破僵局,似乎有点差强人意,于是我们提出了以下三种方案来降低这种风险:

          -
          -
            -
          • 计算所有Master的线程总和,然后对每一个DAG需要计算其需要的线程数,也就是在DAG流程执行之前做预计算。因为是多Master线程池,所以总线程数不太可能实时获取。

            -
          • -
          • 对单Master线程池进行判断,如果线程池已经满了,则让线程直接失败。

            -
          • -
          • 增加一种资源不足的Command类型,如果线程池不足,则将主流程挂起。这样线程池就有了新的线程,可以让资源不足挂起的流程重新唤醒执行。

            -
          • -
          -
          -
        • -
        • 注意:Master Scheduler线程在获取Command的时候是FIFO的方式执行的。

          -
        • -
        • 于是我们选择了第三种方式来解决线程不足的问题。

          -
        • -
        -

        容错设计

        -
          -
        • EasyScheduler容错设计依赖于Zookeeper的Watcher机制,实现原理如图:

          -
          -

          PNG

          -

                 Master监控其他Master和Worker的目录,如果监听到remove事件,则会根据具体的业务逻辑进行流程实例容错或者任务实例容错。

          -
          -
        • -
        • Master容错流程图:

          -
          -

          PNG

          -

                 ZooKeeper Master容错完成之后则重新由EasyScheduler中Scheduler线程调度,遍历 DAG 找到”正在运行”和“提交成功”的任务,对”正在运行”的任务监控其任务实例的状态,对”提交成功”的任务需要判断Task Queue中是否已经存在,如果存在则同样监控任务实例的状态,如果不存在则重新提交任务实例。

          -
          -
        • -
        -
          -
        • Worker容错流程图:

          -
          -

          PNG

          -

                 Master Scheduler线程一旦发现任务实例为” 需要容错”状态,则接管任务并进行重新提交。

          -
          -
        • -
        -
          -
        • 注意:由于” 网络抖动”可能会使得节点短时间内失去和zk的心跳,从而发生节点的remove事件。对于这种情况,我们使用最简单的方式,那就是节点一旦和zk发生超时连接,则直接将Master或Worker服务停掉。

          -
        • -
        -

        Logback和gRPC实现日志访问

        -
        - -
          -
        • 由于Web和Worker不一定在同一台机器上,所以查看日志不能像查询本地文件那样。有两种方案:

          -
            -
          • 将日志放到ES搜索引擎上

            -
          • -
          • 通过gRPC通信获取远程日志信息

            -
          • -
          -
        • -
        • 介于考虑到尽可能的EasyScheduler的轻量级性,所以选择了gRPC实现远程访问日志信息。

          -
          -

          PNG

          -
          -
        • -
        -
          -
        • 我们使用自定义Logback的FileAppender和Filter功能,实现每个任务实例生成一个日志文件。

          -
        • -
        -
          -
        • FileAppender实现如下:

          -
          -

          PNG

          -

          以…/流程定义id/流程实例id/任务实例id.log的形式生成日志。

          -
          -
        • -
        -
          -
        • 过滤匹配以TaskLogInfo开始的线程名称:

          -
          -

          PNG

          -
          -
        • -
        -

        总结

        -
        -

        本文从调度出发,介绍了易观研发的大数据分布式工作流调度系统。EasyScheduler在易观数据平台起着中流砥柱的作用。本章着重介绍了EasyScheduler的架构原理及实现思路。

        -
        - - -
        - -
        -
        -
        - -

        results matching ""

        -
          - -
          -
          - -

          No results matching ""

          - -
          -
          -
          - -
          -
          - -
          - - - - - - - - - - -
          - - -
          - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/pages/guide-manual.html b/docs/pages/guide-manual.html deleted file mode 100644 index c954046f4db58ab34fff06a6648e6d2559f29a5a..0000000000000000000000000000000000000000 --- a/docs/pages/guide-manual.html +++ /dev/null @@ -1,1639 +0,0 @@ - - - - - - - 使用手册 · 调度系统-EasyScheduler - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
          -
          - - - - - - - - -
          - -
          - -
          - - - - - - - - -
          -
          - -
          -
          - -
          - -

          使用手册

          -

          登录

          -

          1.输入http://192.168.220.204:8888/view/login/index.html 网址,输入用户名,密码登录 EasyScheduler

          -

          PNG

          -

          2.登录之后每个页面的右上角都有用户的身份标识。点击下拉箭头包含用户信息和退出两个按钮

          -

          PNG

          -
            -
          • 点击“用户信息”按钮,如下图:

            - PNG
          • -
          -
            -
          • 点击”修改”按钮,修改用户信息

            -

            PNG

            -
          • -
          • 点击退出按钮则退出系统,返回登录页面

            -
          • -
          -

          安全中心

          -
          -
          只有管理员才有安全中心,安全中心的主要功能是给管理员提供管理普通用户的功能。
          -管理员可以有多个,管理员是功能上的管理,不参与具体的业务。也就是说管理员是不能执行具体任务的。
          -
          -

          租户管理

          -

          租户是Linux上的用户,用于作业的提交。

          -
            -
          • 创建、编辑租户

            -
            -

            PNG

            -
            租户编码:租户编码是Linux上的用户,唯一,不能重复
            -
            租户名称:租户的名称
            -
            队列:租户对应的YARN上的队列,在数据库 t_escheduler_queue 中设置
            -
            描述:租户的描述信息
            -
            -
          • -
          -

          用户管理

          -

          用户是EasyScheduler上的用户,用于EasyScheduler上的功能操作。

          -
            -
          • 创建、编辑用户

            -
            -

            PNG

            -
            用户名称:用户的名称,唯一,不能重复
            -
            租户:设置该用户所属的租户
            -
            邮箱:输入用户的邮箱,用来邮件发送和任务告警
            -
            手机:输入用户的手机号
            -

            注意:如果该用户切换了租户,则该用户所在租户下所有资源将复制到切换的新租户下

            -
            -
          • -
          -
            -
          • 授权

            -
          • -
          -
          管理员可以对普通用户进行非其创建的项目、资源、数据源和UDF函数进行授权。因为项目、资源、数据源和UDF函数授权方式都是一样的,所以以项目授权为例介绍。
          -

          1.点击指定人的授权按钮,如下图:

          -

          PNG

          -

          2.选中项目按钮,进行项目授权

          -
          -

          PNG

          -

          项目列表:是该用户未授权的项目

          -

          已选项目:是该用户已授权的项目。

          -

          特别注意:对于用户自己创建的项目,该用户拥有所有的权限。则项目列表和已选项目列表中不会体现。

          -
          -

          告警组管理

          -

          告警组是告警用户抽象出来的组,使用告警组来管理用户。

          -
            -
          • 新建、编辑邮件组

            -
            -

            PNG

            -

            组名称:输入组的名称

            -

            组类型:支持邮件/短信两种

            -

            备注:输入告警组的备注信息

            -
            -
          • -
          -
            -
          • 管理用户

            -
            -

            PNG

            -

            管理用户列表:是未添加到该组的用户列表

            -

            已选管理用户:是已添加到该组的用户列表

            -
            -
          • -
          -

          服务管理

          -

          服务管理是对EasyScheduler的Master、Worker的任务监控

          -
            -
          • Master

            - PNG
          • -
          -
            -
          • Worker

            - PNG
          • -
          -

          资源中心

          -
          -
          资源中心主要分为文件管理和UDF函数管理。
          -文件管理:主要是用户的程序,脚本和配置文件需要上传到HDFS进行统一管理
          -UDF函数管理:对用户创建的UDF进行管理
          -
          -

          文件管理

          -
            -
          • 创建文件

            -
            -

            PNG

            -

            文件格式支持以下几种类型:txt、log、sh、conf、cfg、py、java、sql、xml、hql

            -
            -
          • -
          -
            -
          • 上传文件

            -
            -

            PNG

            -

            文件名:输入文件的名称

            -

            描述:输入文件的描述信息

            -

            上传文件:点击上传按钮进行上传,将文件拖拽到上传区域,文件名会自动以上传的文件名称补全

            -
            -
          • -
          -
            -
          • 文件查看

            -
            -

            对可查看的文件类型,点击 文件名称 可以查看文件详情

            -

            PNG

            -
            -
          • -
          -
            -
          • 下载文件

            -
            -

            可以在 文件详情 中点击右上角下载按钮下载文件,或者在文件列表后的下载按钮下载文件

            -
            -
          • -
          -
            -
          • 文件重命名

            -
            -

            PNG

            -
            -
          • -
          -
            -
          • 删除

            -
            -

            文件列表,点击 删除 按钮,删除文件

            -
            -
          • -
          -

          UDF管理

          -

          资源管理

          -

          资源管理和文件管理功能类似,不同之处是资源管理是上传的UDF函数,文件管理上传的是用户程序,脚本及配置文件

          -

          函数管理

          -
            -
          • 创建、编辑UDF函数

            -
            -

            PNG

            -

            目前只支持HIVE的临时UDF函数

            -

            UDF函数名称:输入UDF函数时的名称

            -

            包名类名:输入UDF函数的全路径

            -

            参数:用来标注函数的输入参数

            -

            数据库名:预留字段,用于创建永久UDF函数

            -

            UDF资源:设置创建的UDF对应的资源文件

            -

            使用说明:输入描述UDF函数的使用

            -
            -
          • -
          -

          数据源中心

          -
          -
          数据源中心支持MySQL、POSTGRESQL、HIVE及Spark数据源
          -
          -
            -
          • 创建、编辑MySQL数据源

            -
            -

            PNG

            -

            数据源:选择MYSQL

            -

            数据源名称:输入数据源的名称

            -

            描述:输入数据源的描述

            -

            IP/主机名:输入连接MySQL的IP

            -

            端口:输入连接MySQL的端口

            -

            用户名:设置连接MySQL的用户名

            -

            密码:设置连接MySQL的密码

            -

            数据库名:输入连接MySQL的数据库名称

            -

            Jdbc连接参数:用于MySQL连接的参数设置,以JSON形式填写

            -
            -
          • -
          -
            -
          • 创建、编辑POSTGRESQL数据源

            -
            -

            PNG

            -

            数据源:选择POSTGRESQL

            -

            数据源名称:输入数据源的名称

            -

            描述:输入数据源的描述

            -

            IP/主机名:输入连接POSTGRESQL的IP

            -

            端口:输入连接POSTGRESQL的端口

            -

            用户名:设置连接POSTGRESQL的用户名

            -

            密码:设置连接POSTGRESQL的密码

            -

            数据库名:输入连接POSTGRESQL的数据库名称

            -

            Jdbc连接参数:用于POSTGRESQL连接的参数设置,以JSON形式填写

            -
            -
          • -
          -
            -
          • 创建、编辑HIVE数据源

            -

            1.使用HiveServer2方式连接

            -
            -

            PNG

            -

            数据源:选择HIVE

            -

            数据源名称:输入数据源的名称

            -

            描述:输入数据源的描述

            -

            IP/主机名:输入连接HIVE的IP

            -

            端口:输入连接HIVE的端口

            -

            用户名:设置连接HIVE的用户名

            -

            密码:设置连接HIVE的密码

            -

            数据库名:输入连接HIVE的数据库名称

            -

            Jdbc连接参数:用于HIVE连接的参数设置,以JSON形式填写

            -
            -
          • -
          -

          2.使用HiveServer2 HA Zookeeper方式连接

          -
          -

          PNG

          -

          数据源:选择HIVE

          -

          数据源名称:输入数据源的名称

          -

          描述:输入数据源的描述

          -

          IP/主机名:输入连接Zookeeper的集群

          -

          端口:输入连接Zookeeper的端口

          -

          用户名:设置连接HIVE的用户名

          -

          密码:设置连接HIVE的密码

          -

          数据库名:输入连接HIVE的数据库名称

          -

          Jdbc连接参数:用于Zookeeper连接的参数设置,以JSON形式填写

          -
          -
            -
          • 创建、编辑Spark数据源

            -
            -

            PNG

            -

            数据源:选择Spark

            -

            数据源名称:输入数据源的名称

            -

            描述:输入数据源的描述

            -

            IP/主机名:输入连接Spark的IP

            -

            端口:输入连接Spark的端口

            -

            用户名:设置连接Spark的用户名

            -

            密码:设置连接Spark的密码

            -

            数据库名:输入连接Spark的数据库名称

            -

            Jdbc连接参数:用于Spark连接的参数设置,以JSON形式填写

            -
            -
          • -
          -

          项目管理

          -
          -
          项目是调度对用户流程定义DAG分组的一个抽象
          -
          -
            -
          • 创建、编辑项目

            -
            -

            PNG

            -

            项目名称:输入项目的名称

            -

            描述:输入项目的描述

            -
            -
          • -
          -

          项目首页

          -

          点击项目列表中的项目名称,可以跳转到指定的项目首页,如下图:

          -
          -

          PNG

          -

          项目首页其中包含四个部分,任务状态统计,流程状态统计、流程定义统计及统计的时间范围

          -

          任务状态统计:是指在指定时间范围内,统计任务实例中的待运行、失败、运行中、完成、成功的个数

          -

          流程状态统计:是指在指定时间范围内,统计流程实例中的待运行、失败、运行中、完成、成功的个数

          -

          流程定义统计:是统计该用户创建的流程定义及管理员授予该用户的流程定义

          -

          注意:可以点击图,或者数量跳转到相应的任务实例,流程实例和流程定义列表

          -
          -

          工作流

          -
          -
          工作流下分为流程定义、流程实例和任务实例三个功能模块
          -流程定义:是可视化拖拽成的DAG的统称,它是静态的,没有状态
          -流程实例:对流程定义的每次实例化会生成一个流程实例,是动态的,是有状态的
          -任务实例:流程实例DAG中每个Task称为任务实例,是动态的,是有状态的
          -
          -

          流程定义

          -
            -
          • 创建工作流

            -
            -

            PNG

            -

            左侧工具栏 => 是目前调度支持的任务类型,当前调度支持SHELL、子流程、存储过程、SQL、MR、Spark和Python七种任务类型

            -

            右上角图标 => 分别是拖动节点和选中项、选择线条连线、删除选中的线或节点、全屏和流程定义保持,其主要功能是DAG的绘制所用

            -
            -
          • -
          -
            -
          • 1.创建 SHELL节点

            -
            -

            拖动工具栏中的PNG任务节点到画板中,双击任务节点,如下图:

            -

            PNG

            -

            节点名称:一个流程定义中的节点名称是唯一的

            -

            运行标志:标识这个节点是否能正常调度

            -

            描述信息:描述该节点的功能

            -

            失败重试次数:任务失败重新提交的次数,支持下拉和手填

            -

            失败重试间隔:任务失败重新提交任务的时间间隔,支持下拉和手填

            -

            脚本:用户开发的SHELL程序

            -

            资源:是指脚本中需要调用的资源文件列表

            -

            自定义参数:是SHELL局部的用户自定义参数,会替换脚本中以${变量}的内容

            -

            任务依赖:请参考任务依赖讲解

            -
            -
          • -
          -
            -
          • 2.创建 子流程 节点

            -
            -

            拖动工具栏中的PNG任务节点到画板中,双击任务节点,如下图:

            -

            PNG

            -

            节点名称:一个流程定义中的节点名称是唯一的

            -

            运行标志:标识这个节点是否能正常调度

            -

            描述信息:描述该节点的功能

            -

            子节点:是选择子流程的流程定义,右上角进入该子节点可以跳转到所选子流程的流程定义

            -

            任务依赖:请参考任务依赖讲解

            -
            -
          • -
          -
            -
          • 3.创建 存储过程 节点

            -
            -

            拖动工具栏中的PNG任务节点到画板中,双击任务节点,如下图:

            -

            PNG

            -

            节点名称:一个流程定义中的节点名称是唯一的

            -

            运行标志:标识这个节点是否能正常调度

            -

            描述信息:描述该节点的功能

            -

            失败重试次数:任务失败重新提交的次数,支持下拉和手填

            -

            失败重试间隔:任务失败重新提交任务的时间间隔,支持下拉和手填

            -

            数据源:存储过程的数据源类型支持MySQL和POSTGRESQL两种,选择对应的数据源

            -

            方法:是存储过程的方法名称

            -

            自定义参数:存储过程的自定义参数类型支持IN、OUT两种,数据类型支持VARCHAR、INTEGER、LONG、FLOAT、DOUBLE、DATE、TIME、TIMESTAMP、BOOLEAN九种数据类型

            -

            任务依赖:请参考任务依赖讲解

            -
            -
          • -
          -
            -
          • 4.创建 SQL 节点

            -
            -

            拖动工具栏中的PNG任务节点到画板中,双击任务节点,如下图:

            -

            PNG

            -

            节点名称:一个流程定义中的节点名称是唯一的

            -

            运行标志:标识这个节点是否能正常调度

            -

            描述信息:描述该节点的功能

            -

            失败重试次数:任务失败重新提交的次数,支持下拉和手填

            -

            失败重试间隔:任务失败重新提交任务的时间间隔,支持下拉和手填

            -

            数据源:SQL数据源支持MySQL、POSTGRESQL、HIVE和Spark四中数据源类型,选择对应的数据源

            -

            sql类型:支持查询和非查询两种,查询是select类型的查询,是有结果集返回的,可以指定邮件通知为表格、附件或表格附件三种模板。非查询是没有结果集返回的,是针对update、delete、insert三种类型的操作

            -

            sql参数:输入参数格式为key1=value1;key2=value2…

            -

            sql语句:SQL语句

            -

            UDF函数:对于HIVE类型的数据源,可以引用资源中心中创建的UDF函数,其他类型的数据源暂不支持UDF函数

            -

            自定义参数:SQL任务类型自定义参数类型和数据类型同存储过程任务类型一样。区别在于SQL任务类型自定义参数会替换sql语句中${变量},而存储过程是自定义参数顺序的给方法设置值

            -

            任务依赖:请参考任务依赖讲解

            -
            -
          • -
          -
            -
          • 4.创建 MR 节点

            -
            -

            拖动工具栏中的PNG任务节点到画板中,双击任务节点,如下图:

            -

            (1) JAVA程序

            -

            PNG

            -

            节点名称:一个流程定义中的节点名称是唯一的

            -

            运行标志:标识这个节点是否能正常调度

            -

            描述信息:描述该节点的功能

            -

            失败重试次数:任务失败重新提交的次数,支持下拉和手填

            -

            失败重试间隔:任务失败重新提交任务的时间间隔,支持下拉和手填

            -

            主函数的class:是MR程序的入口Main Class的全路径

            -

            程序类型:选择JAVA语言

            -

            主jar包:是MR的jar包

            -

            命令行参数:是设置MR程序的输入参数,支持自定义参数变量的替换

            -

            其他参数:支持 –D、-files、-libjars、-archives格式

            -

            资源: 如果其他参数中引用了资源文件,需要在资源中选择指定

            -

            自定义参数:是MR局部的用户自定义参数,会替换脚本中以${变量}的内容

            -

            任务依赖:请参考任务依赖讲解

            -

            (2) Python程序

            -

            PNG

            -

            节点名称:一个流程定义中的节点名称是唯一的

            -

            运行标志:标识这个节点是否能正常调度

            -

            描述信息:描述该节点的功能

            -

            失败重试次数:任务失败重新提交的次数,支持下拉和手填

            -

            失败重试间隔:任务失败重新提交任务的时间间隔,支持下拉和手填

            -

            程序类型:选择Python语言

            -

            主jar包:是运行MR的Python jar包

            -

            其他参数:支持 –D、-mapper、-reducer、-input -output格式,这里可以设置用户自定义参数的输入,比如:

            -

            -mapper "mapper.py 1" -file mapper.py -reducer reducer.py -file reducer.py –input /journey/words.txt -output /journey/out/mr/${currentTimeMillis}

            -

            其中 -mapper 后的 mapper.py 1是两个参数,第一个参数是mapper.py,第二个参数是1

            -

            资源: 如果其他参数中引用了资源文件,需要在资源中选择指定

            -

            自定义参数:是MR局部的用户自定义参数,会替换脚本中以${变量}的内容

            -

            任务依赖:请参考任务依赖讲解

            -
            -
          • -
          -
            -
          • 4.创建 Spark 节点

            -
            -

            拖动工具栏中的PNG任务节点到画板中,双击任务节点,如下图:

            -

            PNG

            -

            节点名称:一个流程定义中的节点名称是唯一的

            -

            运行标志:标识这个节点是否能正常调度

            -

            描述信息:描述该节点的功能

            -

            失败重试次数:任务失败重新提交的次数,支持下拉和手填

            -

            失败重试间隔:任务失败重新提交任务的时间间隔,支持下拉和手填

            -

            程序类型:支持JAVA、Scala和Python三种语言

            -

            主函数的class:是Spark程序的入口Main Class的全路径

            -

            主jar包:是Spark的jar包

            -

            部署方式:支持yarn-cluster、yarn-client、和local三种模式

            -

            Driver内核数:可以设置Driver内核数及内存数

            -

            Executor数量:可以设置Executor数量、Executor内存数和Executor内核数

            -

            命令行参数:是设置Spark程序的输入参数,支持自定义参数变量的替换。

            -

            其他参数:支持 --jars、--files、--archives、--conf格式

            -

            资源:如果其他参数中引用了资源文件,需要在资源中选择指定

            -

            自定义参数:是MR局部的用户自定义参数,会替换脚本中以${变量}的内容

            -

            任务依赖:请参考任务依赖讲解

            -

            注意:JAVA和Scala只是用来标识,没有区别,如果是Python开发的Spark则没有主函数的class,其他都是一样

            -
            -
          • -
          -
            -
          • 4.创建 Python 节点

            -
            -

            拖动工具栏中的PNG任务节点到画板中,双击任务节点,如下图:

            -

            PNG

            -

            节点名称:一个流程定义中的节点名称是唯一的

            -

            运行标志:标识这个节点是否能正常调度

            -

            描述信息:描述该节点的功能

            -

            失败重试次数:任务失败重新提交的次数,支持下拉和手填

            -

            失败重试间隔:任务失败重新提交任务的时间间隔,支持下拉和手填

            -

            脚本:用户开发的Python程序

            -

            资源:是指脚本中需要调用的资源文件列表

            -

            自定义参数:是Python局部的用户自定义参数,会替换脚本中以${变量}的内容

            -

            任务依赖:请参考任务依赖讲解

            -
            -
          • -
          -
            -
          • 流程定义操作

            -

            流程定义列表

            -

            PNG

            -
          • -
          • 1.编辑/保存

            -
            -

            对下线状态的流程定义,用户可对DAG进行编辑

            -

            PNG

            -

            在保存流程定义的时候可以设置全局参数,局部参数可以使用${变量}的方式引用全局参数

            -
            -
          • -
          -
            -
          • 2.启动

            -
            -

            PNG

            -

            失败策略:继续是如果有失败的任务节点,其他并行的任务节点将继续执行。结束是如果有失的败节点,其他并行任的务节点将被Kill掉

            -

            通知策略:都不发、成功发、失败发、成功或失败都发四种策略

            -

            通知组:是通知用户所属的组

            -

            收件人:邮件收件人列表

            -

            抄送人:邮件抄送人列表

            -

            补数:是对流程进行历史的补数,支持区间补数和某一天的补数,如下图:

            -

            PNG

            -

            执行方式:补数可以以串行执行或并行执行,串行执行是流程实例列表以队列的形式逐个提交执行,并行执行是流程实例列表并发形式的提交执行

            -

            时间:选择指定的补数时间区间,此时业务时间为补数时间,如果起始时间和结束时间相等,则为某一天的补数,否则为区间补数。关于系统参数,请参考系统参数的讲解

            -
            -
          • -
          -
            -
          • 3.定时

            -
            -

            流程定义可以设置定时,周期性的跑作业。如下图:

            -

            PNG

            -

            起止时间:选择该定时的有效时间范围

            -

            定时:可视化定时,设置相应的定时

            -

            PNG

            -

            失败策略:继续是如果有失败的任务节点,其他并行的任务节点将继续执行。结束是如果有失的败节点,其他并行任的务节点将被Kill掉

            -

            通知策略:都不发、成功发、失败发、成功或失败都发四种策略

            -

            通知组:是通知用户所属的组

            -

            收件人:邮件收件人列表

            -

            抄送人:邮件抄送人列表

            -
            -
          • -
          -
            -
          • 4.上线/下线

            -
            -

            流程定义有两个状态:上线和下线。只有上线的流程才能启动或调度,下线的流程用来编辑

            -
            -
          • -
          -
            -
          • 5.定时管理

            -
            -

            一个流程定义可以添加1个定时,定时管理是对一个流程定义上的定时的修改,只有上线的定时才是有效的定时

            -
            -
          • -
          -
            -
          • 6.指定节点启动

            -
            -

            对流程定义可以选择节点右击 指定节点启动,如下图:

            -

            PNG

            -

            启动前可以设置若干参数,如下图:

            -

            PNG

            -

            失败策略:继续是如果有失败的任务节点,其他并行的任务节点将继续执行。结束是如果有失的败节点,其他并行任的务节点将被Kill掉

            -

            节点执行:节点执行模式有三种,分别为向后执行、向前执行和仅执行当前节点

            -

            向后执行是从指定节点向后执行,一直到后续节点不能继续执行为止。向前执行是从开始节点到指定的节点区间执行。仅执行当前节点是只执行指定的节点

            -

            通知策略:都不发、成功发、失败发、成功或失败都发四种策略

            -

            通知组:是通知用户所属的组

            -

            收件人:邮件收件人列表

            -

            抄送人:邮件抄送人列表

            -

            补数:见流程定义 启动

            -
            -
          • -
          -
            -
          • 7.TreeView

            -
            -

            用来显示某个流程定义跑过的流程实例及任务实例的状态

            -

            PNG

            -

            左侧是流程定义 DAG Tree的展示,非叶子节点有展开和收缩的功能。右边是流程实例的集合,每一列都是流程定义的一次调度,圆点表示的是流程实例的状态,方块表示的是任务实例的状态。如果是子流程,可以通过任务实例跳转到相应的子流程

            -
            -
          • -
          -

          流程实例

          -

          流程实例是流程定义的实例化

          -
            -
          • 1.流程实例列表

            -
            -

            PNG

            -
            -
          • -
          • 工作流名称:是根据流程定义名称外加一个随机数

            -
          • -
          • 运行类型:包括启动工作流、从当前节点开始执行、恢复被容错的工作流、恢复暂停流程、从失败节点开始执行、补数、调度执行、重跑、暂停、停止、恢复等待线程的流程

            -
          • -
          • 开始时间:流程实例运行的开始时间

            -
          • -
          • 结束时间:流程实例运行的结束时间

            -
          • -
          • 运行时长(秒):结束时间减去开始时间

            -
          • -
          • 运行次数:流程实例运行的次数 ,对于重跑流程实例的记录

            -
          • -
          • host:标识流程实例调度的机器ip

            -
          • -
          • 容错:流程实例是否被容错过

            -
          • -
          • 状态:流程实例最终运行的状态

            -
          • -
          -
            -
          • 2.编辑/保存

            -
            -

            对于终态的流程实例,可以进行编辑保存。终态是流程实例最终的状态为成功、失败、暂停或停止四个状态。

            -

            PNG

            -

            是否更新流程定义: 如果checkbox勾选,表示流程实例的修改会更新流程定义

            -

            如果不勾选,表示只编辑本次流程实例

            -
            -
          • -
          -
            -
          • 3.重跑

            -
            -

            重跑是在不生成新的流程实例情况下,重新跑任务实例

            -

            特别注意:重跑时系统参数已经固化了,系统参数不会随着时间改变而改变

            -
            -
          • -
          -
            -
          • 4.恢复失败

            -
            -

            点击 恢复失败 可以让流程实例从失败节点开始重新执行

            -
            -
          • -
          -
            -
          • 5.停止

            -
            -

            点击 停止 将Kill掉正在运行的任务节点

            -

            特别注意:如果任务运行周期比较短或者正好在Kill任务的时候,任务已经结束了,此时将Kill不掉正在运行的任务,继而会把下一个任务设置为Kill状态

            -
            -
          • -
          -
            -
          • 6.暂停

            -
            -

            对 正在运行 的流程实例,点击 暂停 可以让 正在运行任务的后继节点 设置为暂停

            -
            -
          • -
          -
            -
          • 7.恢复暂停

            -
            -

            对于 暂停 的流程实例,点击 恢复暂停 可以让流程实例从暂停位置继续执行

            -
            -
          • -
          -
            -
          • 8.删除

            -
            -

            删除流程实例及流程实例下的任务实例

            -
            -
          • -
          -
            -
          • 9.Gantt

            -
            -

            Gantt图纵轴是某个流程实例下的任务实例的拓扑排序,横轴是任务实例的运行时间

            -

            PNG

            -
            -
          • -
          -
            -
          • 10.查看流程实例运行变量

            -
            -

            PNG

            -

            点击隐藏按钮,查看流程实例运行变量。如下图:

            -

            PNG

            -

            点击变量是对变量的复制

            -
            -
          • -
          -
            -
          • 11.查看历史任务实例

            -
            -

            PNG

            -

            点击任务实例节点,点击 查看历史,可以查看该流程实例运行的该任务实例列表

            -
            -
          • -
          -
            -
          • 12.查看日志

            -
            -

            PNG

            -

            点击任务实例节点,点击 查看日志,可以查看该任务实例运行的日志,如下图:

            -

            PNG

            -

            右上角是下载日志、刷新日志和放大/缩小按钮

            -

            注意:日志查看是分片的查看,上下滚动查看

            -
            -
          • -
          -

          任务实例

          -

          任务实例是流程实例任务节点的列表

          -
          -

          PNG

          -
          -

          两种方式查看任务实例:

          -
            -
          • 第一种是通过流程实例任务节点 查看历史,这时查看的是此流程实例的任务实例 重跑的列表
            -
          • -
          • 第二种是通过点击 流程实例 导航栏,调转到流程实例列表,这时查看的是所有流程实例的任务实例列表
            -
          • -
          -
          -

          查看日志:点击 查看日志 按钮,可下载和查看日志

          -
          -

          任务记录

          -

          任务记录是千帆的数据稽核

          -
          -

          PNG

          -

          可以按照任务名称、日期、状态、原表、目标表、日期区间查询

          -
          -

          首页

          -

          PNG

          -

          首页是对所有项目在指定时间范围内的任务状态、流程状态和流程定义的统计。

          -

          首页和项目首页的主要区别在于:

          -
            -
          • 首页中的图表是没有链接的,项目首页中图表是有链接的
            -
          • -
          • 首页统计的是所有的项目,项目首页统计的是某一个项目
            -
          • -
          -

          任务依赖

          -

          任务依赖分为水平依赖和垂直依赖

          -
            -
          • 水平依赖就是指DAG图的有向依赖,是同一个流程实例任务节点的前驱,后继之间的依赖关系
            -
          • -
          • 垂直依赖是流程实例之间的任务依赖,基于定时的依赖。垂直依赖又分为自依赖和外部依赖。
            -

            自依赖:是同一个流程实例的上一周期的 任务 依赖,如图:

            - PNG

            外部依赖:是对多个外部流程流程实例的任务实例的依赖

            -

            外部依赖策略存在依赖策略,分别有自定义、全部成功、全部失败、任一成功、任一失败

            -

            注意:自定义是可以自定义外部流程任务是成功或失败

            -

            依赖任务:

            -
          • -
          -

          PNG

          -
          -

          定时依赖图解: A流程定义某任务依赖B流程定义某任务,TA 为流程定义A的定时器,TB为流程定义B的定时器,TBStart到TBEnd为TB的周期,周期分别支持小时、天、月

          -

          PNG

          -

          只有在TB到TBEnd区间范围内符合任务实例依赖条件的,才能依赖成功。否则依赖失败

          -

          PNG

          -

          只有在 TB 到 TA区间范围内符合任务实例依赖条件的,才能依赖成功。否则依赖失败

          -
          -

          系统参数

          -
            -
          • 系统参数

            - - - - - - - - - - - - - - -
            变量含义
            ${system.biz.date}日常调度实例定时的定时时间前一天,格式为 yyyyMMdd,补数据时,该日期 +1
            ${system.biz.curdate}日常调度实例定时的定时时间,格式为 yyyyMMdd,补数据时,该日期 +1
            ${system.datetime}日常调度实例定时的定时时间,格式为 yyyyMMddHHmmss,补数据时,该日期 +1
            - - - -
          • -
          -
            -
          • 时间自定义参数

            -
            -

            支持代码中自定义变量名,声明方式:${变量名}。可以是引用 "系统参数" 或指定 "常量"。

            -

            注意,我们定义这种基准变量为 $[...] 格式的,$[yyyyMMddHHmmss] 是可以任意分解组合的,比如:$[yyyyMMdd], $[HHmmss], $[yyyy-MM-dd], $[HH:mm:ss] 等

            -

            也可以这样:

            -

            后 N 年:$[add_months(yyyyMMdd,12*N)]

            -

            前 N 年:$[add_months(yyyyMMdd,-12*N)]

            -

            后 N 月:$[add_months(yyyyMMdd,N)]

            -

            前 N 月:$[add_months(yyyyMMdd,-N)]

            -

            后 N 周:$[yyyyMMdd+7*N]

            -

            前 N 周:$[yyyyMMdd-7*N]

            -

            后 N 天:$[yyyyMMdd+N]

            -

            前 N 天:$[yyyyMMdd-N]

            -

            后 N 小时:$[HHmmss+N/24]

            -

            前 N 小时:$[HHmmss-N/24]

            -

            后 N 分钟:$[HHmmss+N/24/60]

            -

            前 N 分钟:$[HHmmss-N/24/60]

            -
            -
          • -
          -
            -
          • 用户自定义参数

            -

            用户自定义参数分为全局参数和局部参数。全局参数是保存流程定义和流程实例的时候传递的全局参数,全局参数可以在整个流程中的任何一个任务节点的局部参数引用。

            -

            例如:

            -
            -

            PNG

            -

            ds为全局参数,引用的是系统参数。

            -

            PNG

            -

            任务中partition通过${ds}来引用全局参数,对于脚本可以通过${partition}来引用变量partition的值,或通过JDBC直接将partition的值set进去

            -
            -
          • -
          - - -
          - -
          -
          -
          - -

          results matching ""

          -
            - -
            -
            - -

            No results matching ""

            - -
            -
            -
            - -
            -
            - -
            - - - - - - - - - - - - - - -
            - - -
            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/search_index.json b/docs/search_index.json deleted file mode 100644 index c78eeebdce0b07a4df2a6473b496d625016adbce..0000000000000000000000000000000000000000 --- a/docs/search_index.json +++ /dev/null @@ -1 +0,0 @@ -{"index":{"version":"0.5.12","fields":[{"name":"title","boost":10},{"name":"keywords","boost":15},{"name":"body","boost":1}],"ref":"url","documentStore":{"store":{"./":["easyscheduler是易观研发的大数据分布式工作流调度系统。主要解决数据研发etl错综复杂的依赖关系,而不能直观监控任务健康状态等问题。easyscheduler通过可视化拖拽任务节点的方式形成dag(有向无环图)流程图,在运行过程中可实时监控任务的运行状态,同时支持重试、从指定节点恢复失败、暂停及kill任务、任务运行历史查看等等操作。","easyscheduler由在工作流调度方面工作多年的几位小伙伴研发而成,致力于成为大数据平台的中流砥柱,使调度变得更加容易,更可以从其中文名“易调度”看出我们的初衷,如果你对目前市面上的调度不够满意,非常欢迎试用易调度,欢迎大家加入进来,提出需求,也欢迎贡献代码,","easyscheduler简介","导语","工作流调度系统在大数据平台中是一个核心的基础设施,是大数据开发必不可少的重要组成部分。由于数据处理流程常常具有很长的依赖链条,因此依赖单机的crontab等单纯依赖时间调度的方式,往往存在很大的弊端,如依赖不清晰,出错难以查找等问题。因此,我们调研了市面上流行的调度系统。","并和azkaban、airflow做了一些对比:","感兴趣的伙伴们可以加我们微信:510570367,一起加入easyscheduler吧,多多交流!","简介","系统部分截图:","背景","鉴于易观日处理数据30tb,复杂的etl依赖关系,我们开发了easyscheduler。"],"pages/guide-architecture.html":["1.","2.","3.",":","alert:告警微服务","api和ui分离交互","dag","easyscheduler中scheduler线程分布式锁实现流程图:","easyscheduler使用zookeeper分布式锁来实现同一时刻只有一台master执行scheduler,或者只有一台worker执行任务的提交。","easyscheduler大数据调度系统架构分析","easyscheduler容错设计依赖于zookeeper的watcher机制,实现原理如图:","easyscheduler的去中心化是master/worker注册到zookeeper中,实现master集群和worker集群无中心,并使用zookeeper分布式锁来选举其中的一台master或worker为“管理者”来执行任务。","easyscheduler设计围绕四个服务展开,ui、web、server和alert。","fileappender实现如下:","logback和grpc实现日志访问","master","master容错完成之后则重新由easyscheduler中scheduler线程调度,遍历","master容错流程图:","master的角色主要负责任务分发并监督slave的健康状态,可以动态的将任务均衡到slave上,以致slave节点不至于“忙死”或”闲死”的状态。","master监控其他master和worker的目录,如果监听到remove事件,则会根据具体的业务逻辑进行流程实例容错或者任务实例容错。","queue中是否已经存在,如果存在则同样监控任务实例的状态,如果不存在则重新提交任务实例。","scheduler线程一旦发现任务实例为”","scheduler线程在获取command的时候是fifo的方式执行的。","scheduler调度及分布式任务执行引擎","server","ui","web:使用springboot提供rest","worker容错流程图:","worker的角色主要负责任务的执行工作并维护和master的心跳,以便master可以分配任务给slave。","zookeep","一旦master出现了问题,则群龙无首,整个集群就崩溃。为了解决这个问题,大多数master/slave架构模式都采用了主备master的设计方案,可以是热备或者冷备,也可以是自动切换或手动切换,而且越来越多的新系统都开始具备自动选举切换master的能力,以提升系统的可用性。","中心化思想","中心化思想设计存在的问题:","中心化的设计理念比较简单,分布式集群中的节点按照角色分工,大体上分为两种角色:","于是我们选择了第三种方式来解决线程不足的问题。","介于考虑到尽可能的easyscheduler的轻量级性,所以选择了grpc实现远程访问日志信息。","以…/流程定义id/流程实例id/任务实例id.log的形式生成日志。","以下将详细介绍server的设计思想和遇到的问题","使用易观封装的vue及jsplumb组件开发","分布式锁实践","则会产生“死等”状态。mainflowthread等待subflowthread1结束,subflowthread1等待subflowthread2结束,subflowthread2等待subflowthread3结束,而subflowthread3等待线程池有新线程,则整个dag流程不能结束,从而其中的线程也不能释放。","去中心化","去中心化vs中心化","去中心化设计的核心设计在于整个分布式系统中不存在一个区别于其他节点的”管理者”,因此不存在单点故障问题。但由于不存在”","去中心化设计里,通常没有master/slave的概念,所有的角色都是一样的,地位是平等的,全球互联网就是一个典型的去中心化的分布式系统,联网的任意节点设备down机,都只会影响很小范围的功能。","另外一个问题是如果scheduler在master上,虽然可以支持一个dag中不同的任务运行在不同的机器上,但是会产生master的过负载。如果scheduler在slave上,则一个dag中所有的任务都只能在某一台机器上进行作业提交,则并行任务比较多的时候,slave的压力可能会比较大。","增加一种资源不足的command类型,如果线程池不足,则将主流程挂起。这样线程池就有了新的线程,可以让资源不足挂起的流程重新唤醒执行。","如果一个dag中没有子流程,则如果command中的数据条数大于线程池设置的阈值,则直接流程等待或失败。","如果一个大的dag中嵌套了很多子流程,如下图:","实际上,真正去中心化的分布式系统并不多见。反而动态中心化分布式系统正在不断涌出。在这种架构下,集群中的管理者是被动态选择出来的,而不是预置的,并且集群在发生故障的时候,集群的节点会自发的举行\"会议\"选举新的\"管理者\"主持工作。最典型的案例就是zookeeper及go语言实现的etcd。","容错设计","对于启动新master来打破僵局,似乎有点差强人意,于是我们提出了以下三种方案来降低这种风险:","对单master线程池进行判断,如果线程池已经满了,则让线程直接失败。","将日志放到es搜索引擎上","总结","我们使用自定义logback的fileappender和filter功能,实现每个任务实例生成一个日志文件。","找到”正在运行”和“提交成功”的任务,对”正在运行”的任务监控其任务实例的状态,对”提交成功”的任务需要判断task","本文从调度出发,介绍了易观研发的大数据分布式工作流调度系统。easyscheduler在易观数据平台起着中流砥柱的作用。本章着重介绍了easyscheduler的架构原理及实现思路。","架构设计","注意:master","注意:由于”","由于web和worker不一定在同一台机器上,所以查看日志不能像查询本地文件那样。有两种方案:","管理者”节点所以每个节点都需要跟其他节点通信才得到必须要的机器信息,而分布式系统通信的不可靠行,则大大增加了上述功能的实现难度。","系统架构分析","线程不足循环等待问题","网络抖动”可能会使得节点短时间内失去和zk的心跳,从而发生节点的remove事件。对于这种情况,我们使用最简单的方式,那就是节点一旦和zk发生超时连接,则直接将master或worker服务停掉。","获取分布式锁的核心流程算法如下:","计算所有master的线程总和,然后对每一个dag需要计算其需要的线程数,也就是在dag流程执行之前做预计算。因为是多master线程池,所以总线程数不太可能实时获取。","过滤匹配以taskloginfo开始的线程名称:","这样就形成的子父流程循环等待的状态。此时除非启动新的master来增加线程来打破这样的”僵局”,否则调度集群将不能再使用。","通过grpc通信获取远程日志信息","需要容错”状态,则接管任务并进行重新提交。"],"pages/guide-manual.html":["\"mapper.pi","\"常量\"。","\"系统参数\"","$[...]","$[hh:mm:ss]","$[hhmmss],","$[yyyi","${system.biz.curdate}","${system.biz.date}","${system.datetime}","(1)","(2)","+1","/journey/out/mr/${currenttimemillis}","/journey/words.txt","1\"","1.使用hiveserver2方式连接","1.创建","1.流程实例列表","1.点击指定人的授权按钮,如下图:","1.编辑/保存","1.输入http://192.168.220.204:8888/view/login/index.html","10.查看流程实例运行变量","11.查看历史任务实例","12*n)]","12.查看日志","1是两个参数,第一个参数是mapper.py,第二个参数是1","2.使用hiveserver2","2.创建","2.启动","2.登录之后每个页面的右上角都有用户的身份标识。点击下拉箭头包含用户信息和退出两个按钮","2.编辑/保存","2.选中项目按钮,进行项目授权","3.创建","3.定时","3.重跑","4.上线/下线","4.创建","4.恢复失败","5.停止","5.定时管理","6.指定节点启动","6.暂停","7*n]","7.treeview","7.恢复暂停","8.删除","9.gantt","=>","archives、","archives格式","a流程定义某任务依赖b流程定义某任务,ta","class的全路径","client、和local三种模式","cluster、yarn","conf格式","dag","dd],","driver内核数:可以设置driver内核数及内存数","ds为全局参数,引用的是系统参数。","easyschedul","executor数量:可以设置executor数量、executor内存数和executor内核数","file","files、","gantt图纵轴是某个流程实例下的任务实例的拓扑排序,横轴是任务实例的运行时间","ha","host:标识流程实例调度的机器ip","input","ip/主机名:输入连接hive的ip","ip/主机名:输入连接mysql的ip","ip/主机名:输入连接postgresql的ip","ip/主机名:输入连接spark的ip","ip/主机名:输入连接zookeeper的集群","jars、","jar包","java程序","jdbc连接参数:用于hive连接的参数设置,以json形式填写","jdbc连接参数:用于mysql连接的参数设置,以json形式填写","jdbc连接参数:用于postgresql连接的参数设置,以json形式填写","jdbc连接参数:用于spark连接的参数设置,以json形式填写","jdbc连接参数:用于zookeeper连接的参数设置,以json形式填写","libjars、","mapper","mapper.pi","mapper、","master","mm","mr","n","n)]","n/24/60]","n/24]","n]","output","output格式,这里可以设置用户自定义参数的输入,比如:","python","python程序","reduc","reducer.pi","reducer、","shell节点","spark","sql","sql参数:输入参数格式为key1=value1;key2=value2…","sql类型:支持查询和非查询两种,查询是select类型的查询,是有结果集返回的,可以指定邮件通知为表格、附件或表格附件三种模板。非查询是没有结果集返回的,是针对update、delete、insert三种类型的操作","sql语句:sql语句","t_escheduler_queu","ta区间范围内符合任务实例依赖条件的,才能依赖成功。否则依赖失败","tb","tree的展示,非叶子节点有展开和收缩的功能。右边是流程实例的集合,每一列都是流程定义的一次调度,圆点表示的是流程实例的状态,方块表示的是任务实例的状态。如果是子流程,可以通过任务实例跳转到相应的子流程","udf函数名称:输入udf函数时的名称","udf函数管理:对用户创建的udf进行管理","udf函数:对于hive类型的数据源,可以引用资源中心中创建的udf函数,其他类型的数据源暂不支持udf函数","udf管理","udf资源:设置创建的udf对应的资源文件","worker","yyyymmddhhmmss,补数据时,该日期","yyyymmdd,补数据时,该日期","zookeeper方式连接","–d、","–input","一个流程定义可以添加1个定时,定时管理是对一个流程定义上的定时的修改,只有上线的定时才是有效的定时","上传文件","上传文件:点击上传按钮进行上传,将文件拖拽到上传区域,文件名会自动以上传的文件名称补全","下载文件","两种方式查看任务实例:","中点击右上角下载按钮下载文件,或者在文件列表后的下载按钮下载文件","中设置","为流程定义a的定时器,tb为流程定义b的定时器,tbstart到tbend为tb的周期,周期分别支持小时、天、月","主jar包:是mr的jar包","主jar包:是spark的jar包","主jar包:是运行mr的python","主函数的class:是mr程序的入口main","主函数的class:是spark程序的入口main","也可以这样:","任务","任务中partition通过${ds}来引用全局参数,对于脚本可以通过${partition}来引用变量partition的值,或通过jdbc直接将partition的值set进去","任务依赖","任务依赖分为水平依赖和垂直依赖","任务依赖:请参考任务依赖讲解","任务实例","任务实例是流程实例任务节点的列表","任务实例:流程实例dag中每个task称为任务实例,是动态的,是有状态的","任务状态统计:是指在指定时间范围内,统计任务实例中的待运行、失败、运行中、完成、成功的个数","任务记录","任务记录是千帆的数据稽核","使用手册","使用说明:输入描述udf函数的使用","例如:","依赖任务:","依赖,如图:","停止","其中","其他参数:支持","函数管理","分别是拖动节点和选中项、选择线条连线、删除选中的线或节点、全屏和流程定义保持,其主要功能是dag的绘制所用","分钟:$[hhmmss","分钟:$[hhmmss+n/24/60]","创建、编辑hive数据源","创建、编辑mysql数据源","创建、编辑postgresql数据源","创建、编辑spark数据源","创建、编辑udf函数","创建、编辑用户","创建、编辑租户","创建、编辑项目","创建工作流","创建文件","删除","删除流程实例及流程实例下的任务实例","到","前","包名类名:输入udf函数的全路径","参数:用来标注函数的输入参数","变量含义","只有在","只有在tb到tbend区间范围内符合任务实例依赖条件的,才能依赖成功。否则依赖失败","只有管理员才有安全中心,安全中心的主要功能是给管理员提供管理普通用户的功能。","可以在","可以按照任务名称、日期、状态、原表、目标表、日期区间查询","可以查看文件详情","可以让","可以让流程实例从失败节点开始重新执行","可以让流程实例从暂停位置继续执行","右上角图标","右上角是下载日志、刷新日志和放大/缩小按钮","后","后的","向后执行是从指定节点向后执行,一直到后续节点不能继续执行为止。向前执行是从开始节点到指定的节点区间执行。仅执行当前节点是只执行指定的节点","启动","启动前可以设置若干参数,如下图:","告警组是告警用户抽象出来的组,使用告警组来管理用户。","告警组管理","周:$[yyyymmdd","周:$[yyyymmdd+7*n]","命令行参数:是设置mr程序的输入参数,支持自定义参数变量的替换","命令行参数:是设置spark程序的输入参数,支持自定义参数变量的替换。","在保存流程定义的时候可以设置全局参数,局部参数可以使用${变量}的方式引用全局参数","垂直依赖是流程实例之间的任务依赖,基于定时的依赖。垂直依赖又分为自依赖和外部依赖。","备注:输入告警组的备注信息","外部依赖策略存在依赖策略,分别有自定义、全部成功、全部失败、任一成功、任一失败","外部依赖:是对多个外部流程流程实例的任务实例的依赖","天:$[yyyymmdd","天:$[yyyymmdd+n]","失败策略:继续是如果有失败的任务节点,其他并行的任务节点将继续执行。结束是如果有失的败节点,其他并行任的务节点将被kill掉","失败重试次数:任务失败重新提交的次数,支持下拉和手填","失败重试间隔:任务失败重新提交任务的时间间隔,支持下拉和手填","如果checkbox勾选,表示流程实例的修改会更新流程定义","如果不勾选,表示只编辑本次流程实例","如果其他参数中引用了资源文件,需要在资源中选择指定","子流程","子节点:是选择子流程的流程定义,右上角进入该子节点可以跳转到所选子流程的流程定义","存储过程","安全中心","定时依赖图解:","定时:可视化定时,设置相应的定时","容错:流程实例是否被容错过","密码:设置连接hive的密码","密码:设置连接mysql的密码","密码:设置连接postgresql的密码","密码:设置连接spark的密码","对","对下线状态的流程定义,用户可对dag进行编辑","对于","对于终态的流程实例,可以进行编辑保存。终态是流程实例最终的状态为成功、失败、暂停或停止四个状态。","对可查看的文件类型,点击","对流程定义可以选择节点右击","导航栏,调转到流程实例列表,这时查看的是所有流程实例的任务实例列表","将kill掉正在运行的任务节点","小时:$[hhmmss","小时:$[hhmmss+n/24]","工作流","工作流下分为流程定义、流程实例和任务实例三个功能模块","工作流名称:是根据流程定义名称外加一个随机数","左侧工具栏","左侧是流程定义","已选管理用户:是已添加到该组的用户列表","已选项目:是该用户已授权的项目。","年:$[add_months(yyyymmdd,","年:$[add_months(yyyymmdd,12*n)]","开始时间:流程实例运行的开始时间","恢复失败","恢复暂停","或指定","手机:输入用户的手机号","执行方式:补数可以以串行执行或并行执行,串行执行是流程实例列表以队列的形式逐个提交执行,并行执行是流程实例列表并发形式的提交执行","抄送人:邮件抄送人列表","拖动工具栏中的任务节点到画板中,双击任务节点,如下图:","指定节点启动,如下图:","按钮,删除文件","按钮,可下载和查看日志","授权","描述信息:描述该节点的功能","描述:租户的描述信息","描述:输入数据源的描述","描述:输入文件的描述信息","描述:输入项目的描述","支持代码中自定义变量名,声明方式:${变量名}。可以是引用","收件人:邮件收件人列表","数据库名:输入连接hive的数据库名称","数据库名:输入连接mysql的数据库名称","数据库名:输入连接postgresql的数据库名称","数据库名:输入连接spark的数据库名称","数据库名:预留字段,用于创建永久udf函数","数据源中心","数据源中心支持mysql、postgresql、hive及spark数据源","数据源名称:输入数据源的名称","数据源:sql数据源支持mysql、postgresql、hive和spark四中数据源类型,选择对应的数据源","数据源:存储过程的数据源类型支持mysql和postgresql两种,选择对应的数据源","数据源:选择hive","数据源:选择mysql","数据源:选择postgresql","数据源:选择spark","文件列表,点击","文件名称","文件名:输入文件的名称","文件查看","文件格式支持以下几种类型:txt、log、sh、conf、cfg、py、java、sql、xml、hql","文件管理","文件管理:主要是用户的程序,脚本和配置文件需要上传到hdfs进行统一管理","文件详情","文件重命名","新建、编辑邮件组","方法:是存储过程的方法名称","日常调度实例定时的定时时间前一天,格式为","日常调度实例定时的定时时间,格式为","时间自定义参数","时间:选择指定的补数时间区间,此时业务时间为补数时间,如果起始时间和结束时间相等,则为某一天的补数,否则为区间补数。关于系统参数,请参考系统参数的讲解","是可以任意分解组合的,比如:$[yyyymmdd],","是否更新流程定义:","是目前调度支持的任务类型,当前调度支持shell、子流程、存储过程、sql、mr、spark和python七种任务类型","暂停","月:$[add_months(yyyymmdd,","月:$[add_months(yyyymmdd,n)]","服务管理","服务管理是对easyscheduler的master、worker的任务监控","查看历史,可以查看该流程实例运行的该任务实例列表","查看历史,这时查看的是此流程实例的任务实例","查看日志","查看日志,可以查看该任务实例运行的日志,如下图:","查看日志:点击","格式的,$[yyyymmddhhmmss]","正在运行","正在运行任务的后继节点","水平依赖就是指dag图的有向依赖,是同一个流程实例任务节点的前驱,后继之间的依赖关系","注意,我们定义这种基准变量为","注意:java和scala只是用来标识,没有区别,如果是python开发的spark则没有主函数的class,其他都是一样","注意:可以点击图,或者数量跳转到相应的任务实例,流程实例和流程定义列表","注意:如果该用户切换了租户,则该用户所在租户下所有资源将复制到切换的新租户下","注意:日志查看是分片的查看,上下滚动查看","注意:自定义是可以自定义外部流程任务是成功或失败","流程定义","流程定义列表","流程定义可以设置定时,周期性的跑作业。如下图:","流程定义操作","流程定义有两个状态:上线和下线。只有上线的流程才能启动或调度,下线的流程用来编辑","流程定义统计:是统计该用户创建的流程定义及管理员授予该用户的流程定义","流程定义:是可视化拖拽成的dag的统称,它是静态的,没有状态","流程实例","流程实例是流程定义的实例化","流程实例:对流程定义的每次实例化会生成一个流程实例,是动态的,是有状态的","流程状态统计:是指在指定时间范围内,统计流程实例中的待运行、失败、运行中、完成、成功的个数","点击","点击“用户信息”按钮,如下图:","点击”修改”按钮,修改用户信息","点击任务实例节点,点击","点击变量是对变量的复制","点击退出按钮则退出系统,返回登录页面","点击隐藏按钮,查看流程实例运行变量。如下图:","点击项目列表中的项目名称,可以跳转到指定的项目首页,如下图:","特别注意:如果任务运行周期比较短或者正好在kill任务的时候,任务已经结束了,此时将kill不掉正在运行的任务,继而会把下一个任务设置为kill状态","特别注意:对于用户自己创建的项目,该用户拥有所有的权限。则项目列表和已选项目列表中不会体现。","特别注意:重跑时系统参数已经固化了,系统参数不会随着时间改变而改变","状态:流程实例最终运行的状态","用户名称:用户的名称,唯一,不能重复","用户名:设置连接hive的用户名","用户名:设置连接mysql的用户名","用户名:设置连接postgresql的用户名","用户名:设置连接spark的用户名","用户是easyscheduler上的用户,用于easyscheduler上的功能操作。","用户管理","用户自定义参数","用户自定义参数分为全局参数和局部参数。全局参数是保存流程定义和流程实例的时候传递的全局参数,全局参数可以在整个流程中的任何一个任务节点的局部参数引用。","用来显示某个流程定义跑过的流程实例及任务实例的状态","登录","的流程实例,点击","目前只支持hive的临时udf函数","租户名称:租户的名称","租户是linux上的用户,用于作业的提交。","租户管理","租户编码:租户编码是linux上的用户,唯一,不能重复","租户:设置该用户所属的租户","程序类型:支持java、scala和python三种语言","程序类型:选择java语言","程序类型:选择python语言","端口:输入连接hive的端口","端口:输入连接mysql的端口","端口:输入连接postgresql的端口","端口:输入连接spark的端口","端口:输入连接zookeeper的端口","第一种是通过流程实例任务节点","第二种是通过点击","等","管理员可以对普通用户进行非其创建的项目、资源、数据源和udf函数进行授权。因为项目、资源、数据源和udf函数授权方式都是一样的,所以以项目授权为例介绍。","管理员可以有多个,管理员是功能上的管理,不参与具体的业务。也就是说管理员是不能执行具体任务的。","管理用户","管理用户列表:是未添加到该组的用户列表","系统参数","组名称:输入组的名称","组类型:支持邮件/短信两种","结束时间:流程实例运行的结束时间","网址,输入用户名,密码登录","脚本:用户开发的python程序","脚本:用户开发的shell程序","自依赖:是同一个流程实例的上一周期的","自定义参数:sql任务类型自定义参数类型和数据类型同存储过程任务类型一样。区别在于sql任务类型自定义参数会替换sql语句中${变量},而存储过程是自定义参数顺序的给方法设置值","自定义参数:存储过程的自定义参数类型支持in、out两种,数据类型支持varchar、integer、long、float、double、date、time、timestamp、boolean九种数据类型","自定义参数:是mr局部的用户自定义参数,会替换脚本中以${变量}的内容","自定义参数:是python局部的用户自定义参数,会替换脚本中以${变量}的内容","自定义参数:是shell局部的用户自定义参数,会替换脚本中以${变量}的内容","节点","节点名称:一个流程定义中的节点名称是唯一的","节点执行:节点执行模式有三种,分别为向后执行、向前执行和仅执行当前节点","补数:是对流程进行历史的补数,支持区间补数和某一天的补数,如下图:","补数:见流程定义","设置为暂停","资源中心","资源中心主要分为文件管理和udf函数管理。","资源管理","资源管理和文件管理功能类似,不同之处是资源管理是上传的udf函数,文件管理上传的是用户程序,脚本及配置文件","资源:","资源:如果其他参数中引用了资源文件,需要在资源中选择指定","资源:是指脚本中需要调用的资源文件列表","起止时间:选择该定时的有效时间范围","运行时长(秒):结束时间减去开始时间","运行标志:标识这个节点是否能正常调度","运行次数:流程实例运行的次数","运行类型:包括启动工作流、从当前节点开始执行、恢复被容错的工作流、恢复暂停流程、从失败节点开始执行、补数、调度执行、重跑、暂停、停止、恢复等待线程的流程","通知策略:都不发、成功发、失败发、成功或失败都发四种策略","通知组:是通知用户所属的组","邮箱:输入用户的邮箱,用来邮件发送和任务告警","部署方式:支持yarn","重跑是在不生成新的流程实例情况下,重新跑任务实例","重跑的列表","队列:租户对应的yarn上的队列,在数据库","项目列表:是该用户未授权的项目","项目名称:输入项目的名称","项目是调度对用户流程定义dag分组的一个抽象","项目管理","项目首页","项目首页其中包含四个部分,任务状态统计,流程状态统计、流程定义统计及统计的时间范围","首页","首页中的图表是没有链接的,项目首页中图表是有链接的","首页和项目首页的主要区别在于:","首页是对所有项目在指定时间范围内的任务状态、流程状态和流程定义的统计。","首页统计的是所有的项目,项目首页统计的是某一个项目",",对于重跑流程实例的记录"],"pages/deploy-foreground.html":["\"","\"#\"","\"$1\"","\"upgrade\";","\"usage:","#","#!/bin/bash","#access_log","#charset","#dev_host","#error_pag","$(cat","$0","$host;","$http_upgrade;","$pidf)","$prog","$proxy_add_x_forwarded_for;","$remote_addr;","&&","(1","(2","(start|stop|restart|reload)\"","(启动后访问地址","(打包后根目录会创建一个名为dist文件夹,用于发布线上nginx)","(注意版本","*)","+","+x","...","./configur","./configure:","/","//单独安装node","/404.html;","/50x.html","/50x.html;","/data2_4t/escheduler_front/escheduler/serv","/data2_4t/escheduler_front/escheduler/server;","/data2_4t/escheduler_front/escheduler/server(服务器静态页面存放目录)","/dev/cdrom","/eschedul","/etc/init.d/nginx","/etc/nginx/conf.d/default.conf","/etc/nginx/nginx.conf","/etc/yum.repos.d/yum.repo","/mnt/","/sbin/nologin","/usr/local/bin/","/usr/local/bin/nginx","/usr/local/nginx","/usr/local/nginx/conf/nginx.conf","/usr/local/nginx/sbin/nginx","/usr/share/nginx/html;","/usr/src/","/usr/src/nginx","/var/log/nginx/host.access.log","0","0.0.0.0:*","0.0.0.0:80","07:24","0:关闭","1","1)","1.","1.10.1.tar.gz","1.1;","1.6.2.tar.gz","1.6.2/","1.6.2]#","1024m","12","12s;","192.168.6.132","1:关闭","2)","2.6.32","20","2345","27","29","2:启用","3","3)","30s;","3:启用","404","431.el6.i686","4:启用","4s;","500","502","503","504","5:启用","6810/nginx:","6:关闭","8.9.4)","8888;#","99",":80",";;","=",">","[base]","[root@cento","[root@nginx","add","an","anpt","api_bas","baseurl=file:///mnt/packag","build","c","c\"选项来指定路径。","c++","case","cc","cd","check","chkconfig","chkconfig:","chmod","chown","client_max_body_s","cnpm","compil","conf]#","configur","connect","control","d3","description:","devel","dump","echo","elink","enabl","enterpris","epel","error","error:","error_pag","es6","esac","eschedul","escheduler:eschedul","escheduler项目前端技术栈","escheduler项目目录并执行","exit","file","forward","found","g","gcc","git@git.analysys.cn:analysys_changsha/escheduler.git","gpgcheck=0","group=eschedul","help给出说明","host","http://192.168.220.181:12345;","http://192.168.220.204:12345","http://localhost","http://localhost:8888/#/","http://localhost:8888/#/)","http://nginx.org/download/nginx","http_flv_modul","http_gzip_static_modul","http_ssl_modul","http_stub_status_modul","https://nodejs.org/download/release/v8.9.4/","hup","i686","index","index.html","index.html;","instal","ip","iptabl","jsplumb","kill","killal","koi8","linux","list","listen","ll","ln","localhost;","locat","lodash","lrwxrwxrwx","m","main;","make","master","mkdir","mount","name=redhat","netstat","nginx","nginx!","nginx!\"),可以确认nginx服务是否正常运行。","nginx:","nginx安装","nginx服务程序默认以nobody身份运行,建议为其创建专门的用户账号,以便更准确地控制其访问权限,增加灵活性、降低安全风险。如:创建一个名为nginx的用户,不建立宿主目录,也禁止登录到shell环境。","nginx的运行控制","nginx的配置及运行需要pcre、zlib等软件包的支持,因此应预先安装这些软件的开发包(devel),以便提供相应的库和头文件,确保nginx的安装顺利完成。","nginx程序的监听状态,或者在浏览器中访问此web服务(默认页面将显示\"welcom","node","node包下载","node安装","npm","ok","openssl","os","page","pcre","perm","pidf=\"/usr/local/nginx/logs/nginx.pid\"","prefix","prefix=/usr/local/nginx","prog=\"/usr/local/nginx/sbin/nginx\"","proxy_connect_timeout","proxy_http_vers","proxy_pass","proxy_read_timeout","proxy_send_timeout","proxy_set_head","quit","r","r;","real","redirect","registry=https://registry.npm.taobao.org","releas","reload)","remote_addr","restart","restart)","root","root@nginx","root安装","run","s","sass","sass依赖","script","server","server_nam","servic","setenforc","start","start)","static","statu","stop","stop)","success","syntax","systemctl","t","t\"选项用来对配置文件进行检查,以便找出不当或错误的配置。配置文件nginx.conf默认位于安装目录/usr/local/nginx/conf/目录中。若要检查位于其他位置的配置文件,可使用\"","tar","tcp","test","ui","unsaf","upgrad","user=eschedul","useradd","user和—group","vi","vim","vue","welcom","wget","x","x_real_ipp","xf","y","yum","zilb","{","|grep","}","~]#","上传文件大小限制","与apache的主程序httpd类似,nginx的主程序也提供了\"","为了使nginx服务器的运行更加方便,可以为主程序nginx创建链接文件,以便管理员直接执行nginx命令就可以调用nginx的主程序。","为了使nginx服务的启动、停止、重载等操作更加方便,可以编写nginx服务脚本,并使用chkconfig和service工具来进行管理,也更加符合rhel系统的管理习惯。","主程序nginx支持标准的进程信号,通过kill或者killall命令传送","再拷贝到服务器","创建运行用户、组","创建静态页面存放目录","前端代理的接口地址","前端在开发环境(dev)中运行","前端部署","前端部署文档","前端项目发布","前端项目构建","前端项目环境构建及编译","可以转淘宝镜像命令行输入","号去掉","启动、停止nginx","启用","启用http_stub_status_module模块以支持状态统计","启用ssl模块","命令","命令,生成打包文件(dist)包","如果","如果您需要用ip访问项目可以把","安装","安装epel源","安装nginx","安装及配置","开发环境","当nginx进程运行时,pid号默认存放在logs/目录下的nginx.pid文件中,因此若改用kill命令,也可以根据nginx.pid文件中的pid号来进行控制。","报错的话:","拉取前端项目到本地","拉取项目依赖包","指定nginx运行用户和组","接口地址","更改上传大小","杀死进程","注:配置前可以参考","状态","用命令行模式","直接运行nginx即可启动nginx服务器,这种方式将使用默认的配置文件,若要改用其他配置文件,需添加\"","等同于","编译","编译前配置","编译安装nginx","编辑配置文件","脚本一","解决方法","设定nginx的安装目录","访问地址","访问端口","运行","这样就可以通过nginx脚本来启动、停止、重启、重载nginx服务器了。","进入","退出进程","通过检查","速度非常慢","配置信息","配置文件地址","配置文件路径\"选项来指定路径。需要注意的是,若服务器中已安装有httpd等其他web服务软件,应采取措施(修改端口,停用或卸载)避免部突。","释放nginx源码包","重启","重启nginx服务","重载配置","错误","错误,请在执行完后再次执行以下命令","问题","静态文件目录","项目git仓库地址","项目如果在拉取依赖包的过程中报","项目开发环境","项目打包","项目根目录创建.env为后缀名的文件并输入","项目生产环境配置","!!!这里特别注意"],"pages/deploy-background.html":["\"false\"","\"redis\"","\"zookeeper\"","\"zookeeper\",","#","#============================================================================","#alert","#default","#eschedul","#if","#pleas","#post","#redi","#resource.view.suffix","#resourcemanag","#self","#task","#zookeep","#以qq邮箱为例,如果是别的邮箱,请更改对应配置","#注意:请替换${xxx}里的内容","${log.base}/eschedul","${log.base}/{processdefinitionid}/{processinstanceid}/{taskinstanceid}.log","${password}","${username}","${xxx}","%date{yyyi","%logger{96}:[%line]","%msg%n","&","'{password}';","'{user}'@'%'","'{user}'@'localhost'","(1.2.1+)","(1.8+)","(2.7+)","(2.7.0+)","(3.4.6)","(5.5+)","*",",","./bin/arklift","./deploy/start_all.sh","./deploy/stop_all.sh",".escheduler_env.sh","/etc/sudo","1","1/10,","1/6,","10","192.168.220.188,192.168.220.189","192.168.220.188:2181,192.168.220.189:2181,192.168.220.190:2181","2","20","200mb","25","2>&1","5","5000","60000","64mb","8",":","=",">","[%level]","alert","alert.%d{yyyi","alert.log","alert.properti","alert.type=email","alert/data_source.properti","alert_logback.xml","alerts=ark3","alert服务所在机器,1个","all=(all)","analysi","application.properti","assembly:assembl","auto","avg","base","base_path","base_path=/opt/soft/program","befor","bin","charact","check","choos","class","clean","close","closed,unit","cluster.","collat","com.mysql.jdbc.driv","commit","common","common/common.properti","common/hadoop/hadoop.properti","conf","config","configur","configuration,","connect","content","core","count","cpu","creat","current","d","daemon.sh","dao","dao/data_source.properti","dao数据源配置","data","data.basedir.path=/xxx/xxx","data.download.basedir.path=/xxx/xxx","data.store2hdfs.basepath=/eschedul","databas","datasourc","dd","dd_hh}.%i.log","default","develop","development.state=fals","dir,","dirctori","directori","directory.","dmaven.test.skip=tru","download.","easyschedul","eg.","email/sm","end","env","eschedul","escheduler.*","escheduler.env.path=/xxx/xxx/.escheduler_env.sh","escheduler.env.py=/xxx/xxx/escheduler_env.pi","escheduler.queue.impl=redis,","escheduler.queue.impl=zookeep","escheduler_env.pi","execut","exist","export","failov","fals","file","flag","flush","follow","free","fs.defaultfs=hdfs://${cluster_iporname}:8020","g.","grant","h","ha","hadoop","hadoop_conf_dir=/opt/soft/hadoop/etc/hadoop","hadoop_home=\"/opt/soft/hadoop\"","hadoop_home=/opt/soft/hadoop","hdf","heartbeat","hh:mm:ss.sss}","hive","hive_home=/opt/soft/h","http","identifi","idl","ignor","implementation,","import","info","inform","install_config","interv","ip","ips=ark0,ark1,ark2,ark3,ark4","jar,用于对应任务的运行。","java_home=\"/opt/soft/java\"","java_home=/opt/soft/java","jdbc:mysql://${ip}:3306/escheduler?characterencoding=utf8&usessl=fals","jdk","jobstor","larger","less","lib","limit","load,","lock","logger","logs/","mail","mail.passwd=xxxxxxx","mail.protocol=smtp","mail.sender=xxxxxx@qq.com","mail.server.host=smtp.exmail.qq.com","mail.server.port=25","main","make","manual","master","master.%d{yyyi","master.exec.task.number=20","master.exec.threads=100","master.heartbeat.interval=8","master.log","master.max.cpuload.avg=10","master.properti","master.reserved.memory=1","master.task.commit.interval=100","master.task.commit.retrytimes=5","master_logback.xml","masters=ark0,ark1","master日志文件","master服务所在机器,>=1个","master配置文件","max","memori","memory,","millisecond","min","minimum","mm","monitor_server.pi","mvn","myd","mysql","mysql>","name=com.mysql.jdbc.driv","namenod","need","nohup","nohup.out","nopasswd:","note","num","number","open","org.quartz.datasource.myds.driv","org.quartz.datasource.myds.maxconnect","org.quartz.datasource.myds.password","org.quartz.datasource.myds.url","org.quartz.datasource.myds.us","org.quartz.datasource.myds.validationqueri","org.quartz.impl.jdbcjobstore.jobstoretx","org.quartz.impl.jdbcjobstore.stdjdbcdeleg","org.quartz.jobstore.class","org.quartz.jobstore.clustercheckininterv","org.quartz.jobstore.datasourc","org.quartz.jobstore.driverdelegateclass","org.quartz.jobstore.isclust","org.quartz.jobstore.misfirethreshold","org.quartz.jobstore.tableprefix","org.quartz.jobstore.useproperti","org.quartz.scheduler.instanceid","org.quartz.scheduler.instancenam","org.quartz.scheduler.makeschedulerthreaddaemon","org.quartz.simpl.simplethreadpool","org.quartz.threadpool.class","org.quartz.threadpool.makethreadsdaemon","org.quartz.threadpool.threadcount","org.quartz.threadpool.threadprior","os","os.putenv('path','%s'%path)","packag","parallel","path","path,","path.","path=\"%s/bin:%s/bin:%s/bin:%s\"%(hadoop_home,java_home,python_home,path)","path=$hadoop_home/bin:$spark_home1/bin:$spark_home2/bin:$python_home/bin:$java_home/bin:$hive_home/bin:$path","path=/escheduler/","path=os.environ['path']","permiss","permissions。\"/escheduler\"","physic","pleas","port","post","postgresql(8.2.15+)","privileg","privileges;","process","process.exec.basepath=/xxx/xxx","properti","pscach","pscache,","pscache,set","python","python_home=\"/opt/soft/python\"","python_home=/opt/soft/python","python任务","p{password}","qrtz_","qualiti","quartz.properti","queue","read","recommend","record","redi","redis.","reids安装","relev","reousrcemanag","replac","request","requiretti","reserv","resourc","resource.view.suffixs=txt,log,sh,conf,cfg,py,java,sql,hql,xml","retri","root","run_config","schedul","script","second","select","self","server","server.%d{yyyi","server.context","server.log","server.max","server.port=12345","server.session.timeout=7200","session","set","sh","shell任务","singl","size","size=1024mb","size=5000000","snapshot","snapshot.tar.gz","snapshot/","snapshot/conf","snapshot/script/init_deploy_user.sh","snapshot/script/init_hdfs.sh","snapshot/script/init_install_path.sh","snapshot/sql/有两个sql创建表文件:escheduler.sql和quartz.sql","sourc","spark(1.x,2.x)","spark_home1=/opt/soft/spark1","spark_home2=/opt/soft/spark2","specifi","spring","spring.datasource.defaultautocommit=tru","spring.datasource.driv","spring.datasource.initialsize=5","spring.datasource.maxactive=20","spring.datasource.maxpoolpreparedstatementperconnectionsize=20","spring.datasource.maxwait=60000","spring.datasource.minevictableidletimemillis=300000","spring.datasource.minidle=5","spring.datasource.password=${password}","spring.datasource.poolpreparedstatements=fals","spring.datasource.poolpreparedstatements=tru","spring.datasource.testonborrow=tru","spring.datasource.testonreturn=fals","spring.datasource.testwhileidle=tru","spring.datasource.timebetweenevictionrunsmillis=60000","spring.datasource.type=com.alibaba.druid.pool.druiddatasourc","spring.datasource.url=jdbc:mysql://${ip}:3306/escheduler?characterencoding=utf","spring.datasource.username=${username}","spring.datasource.validationquery=select","spring.datasource.validationquerytimeout=3","spring.http.multipart.max","spring.redis.host=${redis_ip}","spring.redis.maxidle=1000","spring.redis.maxtotal=10000","spring.redis.port=6379","sql","start","state?","stop","store","submit","sudo","supplement","sure","surviv","system","target/eschedul","task","task.record.datasource.password=xxxxx","task.record.datasource.url=jdbc:mysql://${ip}:3306/etl?characterencoding=utf","task.record.datasource.username=etl","task.record.flag=fals","tasklogfil","thread","threadpool","time","time(milliseconds)","timeout","time,unit","true","type","u","unit","upload","us","use.","user","user}","utf","utf8","utf8_general_ci;","valu","vi","wait","web","webserver=ark1","webserver_logback.xml","web日志文件","web服务所在机器,1个","web配置文件","work.","worker","worker.%d{yyyi","worker.exec.threads=100","worker.fetch.task.num","worker.heartbeat.interval=8","worker.log","worker.max.cpuload.avg=10","worker.properti","worker.reserved.memory=1","worker_logback.xml","workers=ark2,ark3,ark4","worker日志文件","worker服务所在机器,>=1个","worker都是以","worker配置文件","write","xl","xls.file.path=/opt/xl","yarn.application.status.address=http://${ip1}:8088/ws/v1/cluster/apps/%","yarn.resourcemanager.ha.rm.ids=${ip1},${ip2}","zookeep","zookeeper.connection.timeout=300","zookeeper.escheduler.lock.master.failover=/escheduler/lock/failover/mast","zookeeper.escheduler.lock.master=/escheduler/lock/mast","zookeeper.escheduler.lock.worker.failover=/escheduler/lock/failover/work","zookeeper.escheduler.lock.worker=/escheduler/lock/work","zookeeper.escheduler.master=/escheduler/mast","zookeeper.escheduler.root=/eschedul","zookeeper.escheduler.worker=/escheduler/work","zookeeper.properti","zookeeper.quorum=${ip1}:2181,${ip2}:2181,${ip3}:2181","zookeeper.retry.maxtime=5","zookeeper.retry.sleep=1000","zookeeper.session.timeout=300","{db}","{host}","{linux","{user}","{version}","|——","​","├──","一行","一键启停脚本","下配置好的conf文件夹和编译好的eschedul","下面","主机器的","任务队列选择redis时需要安装","关闭所有服务","创建database和账号","创建表","创建部署用户","初始化","初始化安装目录","后端部署","启停alertsh","启停loggersh","启停master","启停web","启停worker","启动停止命令","启动所有服务","因为easyschedul","因为eschedul","复制到","如果需要使用到easyscheduler的资源上传,mapreduce任务在线提交则需要安装(上传的资源文件目前保存在hdfs上)","安装配置文件","定时器配置文件","对于","将","工程依赖jar包,包括各个模块jar和第三方jar","工程依赖sql文件","工程服务启动脚本","工程自动化部署、启动脚本","工程配置文件","并且需要注释掉","必装","执行编译命令:","执行:","数据库初始化","方式来执行作业,所以部署用户需要有","日志查看","日志统一存放于指定文件夹内","日志配置文件","权限,而且是免密的","权限,而且是免密的。","查看目录","正常编译完后,会在当前目录生成","注意:easyscheduler本身不依赖hadoop、hive、spark、postgresql、redis,仅是用到了他们的cli","注意:在全部服务都启动之后启动","注意:对masterlogfile,自定义了masterlogfilt","注意:对workerlogfile,自定义了workerlogfilt","环境变量配置","监控服务","目录下","脚本是监听,master和worker服务挂掉重启的脚本","自定义了tasklogappender和tasklogfilt","说明","说明:主机器需要能免密ssh登录到其它机器上","说明:在target/eschedul","说明:配置文件位于","账号","软件要求","运行配置文件","选装,","选装,postgresql存储过程需要安装","选装,spark任务提交需要安装","选装,如果跑hive任务需要安装(","通用配置文件配置,队列选择及地址配置,通用文件目录配置。","部署文档","部署用户是","部署用户配置","部署的机器","部署账号","都是以","配置","配置告警数据源信息","配置文件","配置邮件告警信息","项目所在目录","项目编译",",",":必装",":选装,"],"pages/foreground-2.html":["frontend","安装"],"pages/background-2.html":["trailingend","后端说明2"]},"length":7},"tokenStore":{"root":{"0":{"7":{"docs":{},":":{"2":{"4":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}},"docs":{}},"docs":{}}},"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0068143100511073255}},".":{"0":{"docs":{},".":{"0":{"docs":{},".":{"0":{"docs":{},":":{"8":{"0":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}},"docs":{}},"docs":{},"*":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}},"docs":{}}},"docs":{}}},"docs":{}},":":{"docs":{},"关":{"docs":{},"闭":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}},"1":{"0":{"2":{"4":{"docs":{},"m":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}},"docs":{}},"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}},".":{"docs":{},"查":{"docs":{},"看":{"docs":{},"流":{"docs":{},"程":{"docs":{},"实":{"docs":{},"例":{"docs":{},"运":{"docs":{},"行":{"docs":{},"变":{"docs":{},"量":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}},"1":{"docs":{},".":{"docs":{},"查":{"docs":{},"看":{"docs":{},"历":{"docs":{},"史":{"docs":{},"任":{"docs":{},"务":{"docs":{},"实":{"docs":{},"例":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}},"2":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}},"*":{"docs":{},"n":{"docs":{},")":{"docs":{},"]":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}},".":{"docs":{},"查":{"docs":{},"看":{"docs":{},"日":{"docs":{},"志":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}},"s":{"docs":{},";":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}},"9":{"2":{"docs":{},".":{"1":{"6":{"8":{"docs":{},".":{"2":{"2":{"0":{"docs":{},".":{"1":{"8":{"8":{"docs":{},",":{"1":{"9":{"2":{"docs":{},".":{"1":{"6":{"8":{"docs":{},".":{"2":{"2":{"0":{"docs":{},".":{"1":{"8":{"9":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}},"docs":{}},"docs":{}},"docs":{}}},"docs":{}},"docs":{}},"docs":{}}},"docs":{}},"docs":{}},"docs":{}}},"docs":{}},"docs":{}},"docs":{}},":":{"2":{"1":{"8":{"1":{"docs":{},",":{"1":{"9":{"2":{"docs":{},".":{"1":{"6":{"8":{"docs":{},".":{"2":{"2":{"0":{"docs":{},".":{"1":{"8":{"9":{"docs":{},":":{"2":{"1":{"8":{"1":{"docs":{},",":{"1":{"9":{"2":{"docs":{},".":{"1":{"6":{"8":{"docs":{},".":{"2":{"2":{"0":{"docs":{},".":{"1":{"9":{"0":{"docs":{},":":{"2":{"1":{"8":{"1":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}},"docs":{}},"docs":{}},"docs":{}}},"docs":{}},"docs":{}},"docs":{}}},"docs":{}},"docs":{}},"docs":{}}},"docs":{}},"docs":{}},"docs":{}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}},"docs":{}},"docs":{}},"docs":{}}},"docs":{}},"docs":{}},"docs":{}}},"docs":{}},"docs":{}},"docs":{}}},"docs":{}},"docs":{}},"docs":{}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}},"docs":{}},"docs":{}},"docs":{}}},"docs":{}},"docs":{}},"6":{"docs":{},".":{"1":{"3":{"2":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}},"docs":{}},"docs":{}},"docs":{}}},"docs":{}}},"docs":{}},"docs":{}},"docs":{}}},"docs":{}},"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.005110732538330494},"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0026619343389529724}},".":{"1":{"0":{"docs":{},".":{"1":{"docs":{},".":{"docs":{},"t":{"docs":{},"a":{"docs":{},"r":{"docs":{},".":{"docs":{},"g":{"docs":{},"z":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}}},"docs":{}}},"docs":{},";":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}},"6":{"docs":{},".":{"2":{"docs":{},".":{"docs":{},"t":{"docs":{},"a":{"docs":{},"r":{"docs":{},".":{"docs":{},"g":{"docs":{},"z":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}},"/":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}},"]":{"docs":{},"#":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.008517887563884156}}}}},"docs":{}}},"docs":{"pages/guide-architecture.html":{"ref":"pages/guide-architecture.html","tf":0.02702702702702703},"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}},"使":{"docs":{},"用":{"docs":{},"h":{"docs":{},"i":{"docs":{},"v":{"docs":{},"e":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"2":{"docs":{},"方":{"docs":{},"式":{"docs":{},"连":{"docs":{},"接":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}},"docs":{}}}}}}}}}}}}},"创":{"docs":{},"建":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}},"流":{"docs":{},"程":{"docs":{},"实":{"docs":{},"例":{"docs":{},"列":{"docs":{},"表":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}},"点":{"docs":{},"击":{"docs":{},"指":{"docs":{},"定":{"docs":{},"人":{"docs":{},"的":{"docs":{},"授":{"docs":{},"权":{"docs":{},"按":{"docs":{},"钮":{"docs":{},",":{"docs":{},"如":{"docs":{},"下":{"docs":{},"图":{"docs":{},":":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}},"编":{"docs":{},"辑":{"docs":{},"/":{"docs":{},"保":{"docs":{},"存":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}},"输":{"docs":{},"入":{"docs":{},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},":":{"docs":{},"/":{"docs":{},"/":{"1":{"9":{"2":{"docs":{},".":{"1":{"6":{"8":{"docs":{},".":{"2":{"2":{"0":{"docs":{},".":{"2":{"0":{"4":{"docs":{},":":{"8":{"8":{"8":{"8":{"docs":{},"/":{"docs":{},"v":{"docs":{},"i":{"docs":{},"e":{"docs":{},"w":{"docs":{},"/":{"docs":{},"l":{"docs":{},"o":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"/":{"docs":{},"i":{"docs":{},"n":{"docs":{},"d":{"docs":{},"e":{"docs":{},"x":{"docs":{},".":{"docs":{},"h":{"docs":{},"t":{"docs":{},"m":{"docs":{},"l":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}},"docs":{}},"docs":{}},"docs":{}}},"docs":{}},"docs":{}},"docs":{}}},"docs":{}},"docs":{}},"docs":{}}},"docs":{}},"docs":{}},"docs":{}}}}}}}}}}},"\"":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}},"是":{"docs":{},"两":{"docs":{},"个":{"docs":{},"参":{"docs":{},"数":{"docs":{},",":{"docs":{},"第":{"docs":{},"一":{"docs":{},"个":{"docs":{},"参":{"docs":{},"数":{"docs":{},"是":{"docs":{},"m":{"docs":{},"a":{"docs":{},"p":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},".":{"docs":{},"p":{"docs":{},"y":{"docs":{},",":{"docs":{},"第":{"docs":{},"二":{"docs":{},"个":{"docs":{},"参":{"docs":{},"数":{"docs":{},"是":{"1":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}},")":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0034071550255536627}}},":":{"docs":{},"关":{"docs":{},"闭":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}},"/":{"1":{"0":{"docs":{},",":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}},"docs":{}},"6":{"docs":{},",":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}},"docs":{}}},"2":{"0":{"0":{"docs":{},"m":{"docs":{},"b":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}}}}},"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314},"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.00354924578527063}}},"3":{"4":{"5":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}},"docs":{}},"docs":{}},"5":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}},"7":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}},"9":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}},"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}},".":{"6":{"docs":{},".":{"3":{"2":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}},"docs":{}},"docs":{}}},"docs":{"pages/guide-architecture.html":{"ref":"pages/guide-architecture.html","tf":0.02702702702702703}},"使":{"docs":{},"用":{"docs":{},"h":{"docs":{},"i":{"docs":{},"v":{"docs":{},"e":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"2":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}},"docs":{}}}}}}}}}}}}},"创":{"docs":{},"建":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}},"启":{"docs":{},"动":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}},"登":{"docs":{},"录":{"docs":{},"之":{"docs":{},"后":{"docs":{},"每":{"docs":{},"个":{"docs":{},"页":{"docs":{},"面":{"docs":{},"的":{"docs":{},"右":{"docs":{},"上":{"docs":{},"角":{"docs":{},"都":{"docs":{},"有":{"docs":{},"用":{"docs":{},"户":{"docs":{},"的":{"docs":{},"身":{"docs":{},"份":{"docs":{},"标":{"docs":{},"识":{"docs":{},"。":{"docs":{},"点":{"docs":{},"击":{"docs":{},"下":{"docs":{},"拉":{"docs":{},"箭":{"docs":{},"头":{"docs":{},"包":{"docs":{},"含":{"docs":{},"用":{"docs":{},"户":{"docs":{},"信":{"docs":{},"息":{"docs":{},"和":{"docs":{},"退":{"docs":{},"出":{"docs":{},"两":{"docs":{},"个":{"docs":{},"按":{"docs":{},"钮":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"编":{"docs":{},"辑":{"docs":{},"/":{"docs":{},"保":{"docs":{},"存":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}},"选":{"docs":{},"中":{"docs":{},"项":{"docs":{},"目":{"docs":{},"按":{"docs":{},"钮":{"docs":{},",":{"docs":{},"进":{"docs":{},"行":{"docs":{},"项":{"docs":{},"目":{"docs":{},"授":{"docs":{},"权":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}},")":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}},":":{"docs":{},"启":{"docs":{},"用":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}},">":{"docs":{},"&":{"1":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}},"docs":{}}}},"3":{"0":{"docs":{},"s":{"docs":{},";":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}},"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}},".":{"docs":{"pages/guide-architecture.html":{"ref":"pages/guide-architecture.html","tf":0.013513513513513514}},"创":{"docs":{},"建":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}},"定":{"docs":{},"时":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}},"重":{"docs":{},"跑":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}},")":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}},":":{"docs":{},"启":{"docs":{},"用":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}},"4":{"0":{"4":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}},"docs":{}},"3":{"1":{"docs":{},".":{"docs":{},"e":{"docs":{},"l":{"6":{"docs":{},".":{"docs":{},"i":{"6":{"8":{"6":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}},"docs":{}},"docs":{}},"docs":{}}}},"docs":{}}}}},"docs":{}},"docs":{},".":{"docs":{},"上":{"docs":{},"线":{"docs":{},"/":{"docs":{},"下":{"docs":{},"线":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}},"创":{"docs":{},"建":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.007407407407407408}}}},"恢":{"docs":{},"复":{"docs":{},"失":{"docs":{},"败":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}},":":{"docs":{},"启":{"docs":{},"用":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}},"s":{"docs":{},";":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}},"5":{"0":{"0":{"0":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}},"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}},"2":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}},"3":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}},"4":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}},"docs":{}},"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}},".":{"docs":{},"停":{"docs":{},"止":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}},"定":{"docs":{},"时":{"docs":{},"管":{"docs":{},"理":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}},":":{"docs":{},"启":{"docs":{},"用":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}},"6":{"0":{"0":{"0":{"0":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}},"docs":{}},"docs":{}},"docs":{}},"4":{"docs":{},"m":{"docs":{},"b":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}}}}},"8":{"1":{"0":{"docs":{},"/":{"docs":{},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{},":":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}}},"docs":{}},"docs":{}},"docs":{},".":{"docs":{},"指":{"docs":{},"定":{"docs":{},"节":{"docs":{},"点":{"docs":{},"启":{"docs":{},"动":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}},"暂":{"docs":{},"停":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}},":":{"docs":{},"关":{"docs":{},"闭":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}},"7":{"docs":{},"*":{"docs":{},"n":{"docs":{},"]":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}},".":{"docs":{},"t":{"docs":{},"r":{"docs":{},"e":{"docs":{},"e":{"docs":{},"v":{"docs":{},"i":{"docs":{},"e":{"docs":{},"w":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}},"恢":{"docs":{},"复":{"docs":{},"暂":{"docs":{},"停":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}},"8":{"8":{"8":{"8":{"docs":{},";":{"docs":{},"#":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}},"docs":{}},"docs":{}},"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.01064773735581189}},".":{"9":{"docs":{},".":{"4":{"docs":{},")":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}},"docs":{}}},"docs":{},"删":{"docs":{},"除":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}},"9":{"9":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}},"docs":{},".":{"docs":{},"g":{"docs":{},"a":{"docs":{},"n":{"docs":{},"t":{"docs":{},"t":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}},"docs":{},"e":{"docs":{},"a":{"docs":{},"s":{"docs":{},"y":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852},"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}},"e":{"docs":{},"r":{"docs":{},"是":{"docs":{},"易":{"docs":{},"观":{"docs":{},"研":{"docs":{},"发":{"docs":{},"的":{"docs":{},"大":{"docs":{},"数":{"docs":{},"据":{"docs":{},"分":{"docs":{},"布":{"docs":{},"式":{"docs":{},"工":{"docs":{},"作":{"docs":{},"流":{"docs":{},"调":{"docs":{},"度":{"docs":{},"系":{"docs":{},"统":{"docs":{},"。":{"docs":{},"主":{"docs":{},"要":{"docs":{},"解":{"docs":{},"决":{"docs":{},"数":{"docs":{},"据":{"docs":{},"研":{"docs":{},"发":{"docs":{},"e":{"docs":{},"t":{"docs":{},"l":{"docs":{},"错":{"docs":{},"综":{"docs":{},"复":{"docs":{},"杂":{"docs":{},"的":{"docs":{},"依":{"docs":{},"赖":{"docs":{},"关":{"docs":{},"系":{"docs":{},",":{"docs":{},"而":{"docs":{},"不":{"docs":{},"能":{"docs":{},"直":{"docs":{},"观":{"docs":{},"监":{"docs":{},"控":{"docs":{},"任":{"docs":{},"务":{"docs":{},"健":{"docs":{},"康":{"docs":{},"状":{"docs":{},"态":{"docs":{},"等":{"docs":{},"问":{"docs":{},"题":{"docs":{},"。":{"docs":{},"e":{"docs":{},"a":{"docs":{},"s":{"docs":{},"y":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"通":{"docs":{},"过":{"docs":{},"可":{"docs":{},"视":{"docs":{},"化":{"docs":{},"拖":{"docs":{},"拽":{"docs":{},"任":{"docs":{},"务":{"docs":{},"节":{"docs":{},"点":{"docs":{},"的":{"docs":{},"方":{"docs":{},"式":{"docs":{},"形":{"docs":{},"成":{"docs":{},"d":{"docs":{},"a":{"docs":{},"g":{"docs":{},"(":{"docs":{},"有":{"docs":{},"向":{"docs":{},"无":{"docs":{},"环":{"docs":{},"图":{"docs":{},")":{"docs":{},"流":{"docs":{},"程":{"docs":{},"图":{"docs":{},",":{"docs":{},"在":{"docs":{},"运":{"docs":{},"行":{"docs":{},"过":{"docs":{},"程":{"docs":{},"中":{"docs":{},"可":{"docs":{},"实":{"docs":{},"时":{"docs":{},"监":{"docs":{},"控":{"docs":{},"任":{"docs":{},"务":{"docs":{},"的":{"docs":{},"运":{"docs":{},"行":{"docs":{},"状":{"docs":{},"态":{"docs":{},",":{"docs":{},"同":{"docs":{},"时":{"docs":{},"支":{"docs":{},"持":{"docs":{},"重":{"docs":{},"试":{"docs":{},"、":{"docs":{},"从":{"docs":{},"指":{"docs":{},"定":{"docs":{},"节":{"docs":{},"点":{"docs":{},"恢":{"docs":{},"复":{"docs":{},"失":{"docs":{},"败":{"docs":{},"、":{"docs":{},"暂":{"docs":{},"停":{"docs":{},"及":{"docs":{},"k":{"docs":{},"i":{"docs":{},"l":{"docs":{},"l":{"docs":{},"任":{"docs":{},"务":{"docs":{},"、":{"docs":{},"任":{"docs":{},"务":{"docs":{},"运":{"docs":{},"行":{"docs":{},"历":{"docs":{},"史":{"docs":{},"查":{"docs":{},"看":{"docs":{},"等":{"docs":{},"等":{"docs":{},"操":{"docs":{},"作":{"docs":{},"。":{"docs":{"./":{"ref":"./","tf":0.1}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"由":{"docs":{},"在":{"docs":{},"工":{"docs":{},"作":{"docs":{},"流":{"docs":{},"调":{"docs":{},"度":{"docs":{},"方":{"docs":{},"面":{"docs":{},"工":{"docs":{},"作":{"docs":{},"多":{"docs":{},"年":{"docs":{},"的":{"docs":{},"几":{"docs":{},"位":{"docs":{},"小":{"docs":{},"伙":{"docs":{},"伴":{"docs":{},"研":{"docs":{},"发":{"docs":{},"而":{"docs":{},"成":{"docs":{},",":{"docs":{},"致":{"docs":{},"力":{"docs":{},"于":{"docs":{},"成":{"docs":{},"为":{"docs":{},"大":{"docs":{},"数":{"docs":{},"据":{"docs":{},"平":{"docs":{},"台":{"docs":{},"的":{"docs":{},"中":{"docs":{},"流":{"docs":{},"砥":{"docs":{},"柱":{"docs":{},",":{"docs":{},"使":{"docs":{},"调":{"docs":{},"度":{"docs":{},"变":{"docs":{},"得":{"docs":{},"更":{"docs":{},"加":{"docs":{},"容":{"docs":{},"易":{"docs":{},",":{"docs":{},"更":{"docs":{},"可":{"docs":{},"以":{"docs":{},"从":{"docs":{},"其":{"docs":{},"中":{"docs":{},"文":{"docs":{},"名":{"docs":{},"“":{"docs":{},"易":{"docs":{},"调":{"docs":{},"度":{"docs":{},"”":{"docs":{},"看":{"docs":{},"出":{"docs":{},"我":{"docs":{},"们":{"docs":{},"的":{"docs":{},"初":{"docs":{},"衷":{"docs":{},",":{"docs":{},"如":{"docs":{},"果":{"docs":{},"你":{"docs":{},"对":{"docs":{},"目":{"docs":{},"前":{"docs":{},"市":{"docs":{},"面":{"docs":{},"上":{"docs":{},"的":{"docs":{},"调":{"docs":{},"度":{"docs":{},"不":{"docs":{},"够":{"docs":{},"满":{"docs":{},"意":{"docs":{},",":{"docs":{},"非":{"docs":{},"常":{"docs":{},"欢":{"docs":{},"迎":{"docs":{},"试":{"docs":{},"用":{"docs":{},"易":{"docs":{},"调":{"docs":{},"度":{"docs":{},",":{"docs":{},"欢":{"docs":{},"迎":{"docs":{},"大":{"docs":{},"家":{"docs":{},"加":{"docs":{},"入":{"docs":{},"进":{"docs":{},"来":{"docs":{},",":{"docs":{},"提":{"docs":{},"出":{"docs":{},"需":{"docs":{},"求":{"docs":{},",":{"docs":{},"也":{"docs":{},"欢":{"docs":{},"迎":{"docs":{},"贡":{"docs":{},"献":{"docs":{},"代":{"docs":{},"码":{"docs":{},",":{"docs":{"./":{"ref":"./","tf":0.1}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"简":{"docs":{},"介":{"docs":{"./":{"ref":"./","tf":10}}}},"中":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"线":{"docs":{},"程":{"docs":{},"分":{"docs":{},"布":{"docs":{},"式":{"docs":{},"锁":{"docs":{},"实":{"docs":{},"现":{"docs":{},"流":{"docs":{},"程":{"docs":{},"图":{"docs":{},":":{"docs":{"pages/guide-architecture.html":{"ref":"pages/guide-architecture.html","tf":0.013513513513513514}}}}}}}}}}}}}}}}}}}}}}}},"使":{"docs":{},"用":{"docs":{},"z":{"docs":{},"o":{"docs":{},"o":{"docs":{},"k":{"docs":{},"e":{"docs":{},"e":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"分":{"docs":{},"布":{"docs":{},"式":{"docs":{},"锁":{"docs":{},"来":{"docs":{},"实":{"docs":{},"现":{"docs":{},"同":{"docs":{},"一":{"docs":{},"时":{"docs":{},"刻":{"docs":{},"只":{"docs":{},"有":{"docs":{},"一":{"docs":{},"台":{"docs":{},"m":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"执":{"docs":{},"行":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},",":{"docs":{},"或":{"docs":{},"者":{"docs":{},"只":{"docs":{},"有":{"docs":{},"一":{"docs":{},"台":{"docs":{},"w":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{},"e":{"docs":{},"r":{"docs":{},"执":{"docs":{},"行":{"docs":{},"任":{"docs":{},"务":{"docs":{},"的":{"docs":{},"提":{"docs":{},"交":{"docs":{},"。":{"docs":{"pages/guide-architecture.html":{"ref":"pages/guide-architecture.html","tf":0.013513513513513514}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"大":{"docs":{},"数":{"docs":{},"据":{"docs":{},"调":{"docs":{},"度":{"docs":{},"系":{"docs":{},"统":{"docs":{},"架":{"docs":{},"构":{"docs":{},"分":{"docs":{},"析":{"docs":{"pages/guide-architecture.html":{"ref":"pages/guide-architecture.html","tf":0.013513513513513514}}}}}}}}}}}}},"容":{"docs":{},"错":{"docs":{},"设":{"docs":{},"计":{"docs":{},"依":{"docs":{},"赖":{"docs":{},"于":{"docs":{},"z":{"docs":{},"o":{"docs":{},"o":{"docs":{},"k":{"docs":{},"e":{"docs":{},"e":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"的":{"docs":{},"w":{"docs":{},"a":{"docs":{},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"r":{"docs":{},"机":{"docs":{},"制":{"docs":{},",":{"docs":{},"实":{"docs":{},"现":{"docs":{},"原":{"docs":{},"理":{"docs":{},"如":{"docs":{},"图":{"docs":{},":":{"docs":{"pages/guide-architecture.html":{"ref":"pages/guide-architecture.html","tf":0.013513513513513514}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"的":{"docs":{},"去":{"docs":{},"中":{"docs":{},"心":{"docs":{},"化":{"docs":{},"是":{"docs":{},"m":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"/":{"docs":{},"w":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{},"e":{"docs":{},"r":{"docs":{},"注":{"docs":{},"册":{"docs":{},"到":{"docs":{},"z":{"docs":{},"o":{"docs":{},"o":{"docs":{},"k":{"docs":{},"e":{"docs":{},"e":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"中":{"docs":{},",":{"docs":{},"实":{"docs":{},"现":{"docs":{},"m":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"集":{"docs":{},"群":{"docs":{},"和":{"docs":{},"w":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{},"e":{"docs":{},"r":{"docs":{},"集":{"docs":{},"群":{"docs":{},"无":{"docs":{},"中":{"docs":{},"心":{"docs":{},",":{"docs":{},"并":{"docs":{},"使":{"docs":{},"用":{"docs":{},"z":{"docs":{},"o":{"docs":{},"o":{"docs":{},"k":{"docs":{},"e":{"docs":{},"e":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"分":{"docs":{},"布":{"docs":{},"式":{"docs":{},"锁":{"docs":{},"来":{"docs":{},"选":{"docs":{},"举":{"docs":{},"其":{"docs":{},"中":{"docs":{},"的":{"docs":{},"一":{"docs":{},"台":{"docs":{},"m":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"或":{"docs":{},"w":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{},"e":{"docs":{},"r":{"docs":{},"为":{"docs":{},"“":{"docs":{},"管":{"docs":{},"理":{"docs":{},"者":{"docs":{},"”":{"docs":{},"来":{"docs":{},"执":{"docs":{},"行":{"docs":{},"任":{"docs":{},"务":{"docs":{},"。":{"docs":{"pages/guide-architecture.html":{"ref":"pages/guide-architecture.html","tf":0.013513513513513514}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"设":{"docs":{},"计":{"docs":{},"围":{"docs":{},"绕":{"docs":{},"四":{"docs":{},"个":{"docs":{},"服":{"docs":{},"务":{"docs":{},"展":{"docs":{},"开":{"docs":{},",":{"docs":{},"u":{"docs":{},"i":{"docs":{},"、":{"docs":{},"w":{"docs":{},"e":{"docs":{},"b":{"docs":{},"、":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"和":{"docs":{},"a":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"t":{"docs":{},"。":{"docs":{"pages/guide-architecture.html":{"ref":"pages/guide-architecture.html","tf":0.013513513513513514}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"x":{"docs":{},"e":{"docs":{},"c":{"docs":{},"u":{"docs":{},"t":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.005323868677905945}},"o":{"docs":{},"r":{"docs":{},"数":{"docs":{},"量":{"docs":{},":":{"docs":{},"可":{"docs":{},"以":{"docs":{},"设":{"docs":{},"置":{"docs":{},"e":{"docs":{},"x":{"docs":{},"e":{"docs":{},"c":{"docs":{},"u":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"数":{"docs":{},"量":{"docs":{},"、":{"docs":{},"e":{"docs":{},"x":{"docs":{},"e":{"docs":{},"c":{"docs":{},"u":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"内":{"docs":{},"存":{"docs":{},"数":{"docs":{},"和":{"docs":{},"e":{"docs":{},"x":{"docs":{},"e":{"docs":{},"c":{"docs":{},"u":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"内":{"docs":{},"核":{"docs":{},"数":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"i":{"docs":{},"t":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0034071550255536627}}},"s":{"docs":{},"t":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.00709849157054126}}}}},"p":{"docs":{},"o":{"docs":{},"r":{"docs":{},"t":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.00709849157054126}}}}}}},"c":{"docs":{},"h":{"docs":{},"o":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}},"l":{"docs":{},"i":{"docs":{},"n":{"docs":{},"k":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0034071550255536627}}}}}},"n":{"docs":{},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"p":{"docs":{},"r":{"docs":{},"i":{"docs":{},"s":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}},"d":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}},"v":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}},"p":{"docs":{},"e":{"docs":{},"l":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}},"r":{"docs":{},"r":{"docs":{},"o":{"docs":{},"r":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0034071550255536627}},":":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}},"_":{"docs":{},"p":{"docs":{},"a":{"docs":{},"g":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}}},"s":{"6":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}},"docs":{},"a":{"docs":{},"c":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314},"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.013309671694764862}},"e":{"docs":{},"r":{"docs":{},":":{"docs":{},"e":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}}}},"项":{"docs":{},"目":{"docs":{},"前":{"docs":{},"端":{"docs":{},"技":{"docs":{},"术":{"docs":{},"栈":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}},"目":{"docs":{},"录":{"docs":{},"并":{"docs":{},"执":{"docs":{},"行":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}},".":{"docs":{},"*":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}}},"e":{"docs":{},"n":{"docs":{},"v":{"docs":{},".":{"docs":{},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{},"=":{"docs":{},"/":{"docs":{},"x":{"docs":{},"x":{"docs":{},"x":{"docs":{},"/":{"docs":{},"x":{"docs":{},"x":{"docs":{},"x":{"docs":{},"/":{"docs":{},".":{"docs":{},"e":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"_":{"docs":{},"e":{"docs":{},"n":{"docs":{},"v":{"docs":{},".":{"docs":{},"s":{"docs":{},"h":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"y":{"docs":{},"=":{"docs":{},"/":{"docs":{},"x":{"docs":{},"x":{"docs":{},"x":{"docs":{},"/":{"docs":{},"x":{"docs":{},"x":{"docs":{},"x":{"docs":{},"/":{"docs":{},"e":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"_":{"docs":{},"e":{"docs":{},"n":{"docs":{},"v":{"docs":{},".":{"docs":{},"p":{"docs":{},"i":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"u":{"docs":{},"e":{"docs":{},".":{"docs":{},"i":{"docs":{},"m":{"docs":{},"p":{"docs":{},"l":{"docs":{},"=":{"docs":{},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"i":{"docs":{},"s":{"docs":{},",":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}},"z":{"docs":{},"o":{"docs":{},"o":{"docs":{},"k":{"docs":{},"e":{"docs":{},"e":{"docs":{},"p":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}}}}}}},"_":{"docs":{},"e":{"docs":{},"n":{"docs":{},"v":{"docs":{},".":{"docs":{},"p":{"docs":{},"i":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}}}},"g":{"docs":{},".":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}}}},"m":{"docs":{},"a":{"docs":{},"i":{"docs":{},"l":{"docs":{},"/":{"docs":{},"s":{"docs":{},"m":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}},"导":{"docs":{},"语":{"docs":{"./":{"ref":"./","tf":0.1}}},"航":{"docs":{},"栏":{"docs":{},",":{"docs":{},"调":{"docs":{},"转":{"docs":{},"到":{"docs":{},"流":{"docs":{},"程":{"docs":{},"实":{"docs":{},"例":{"docs":{},"列":{"docs":{},"表":{"docs":{},",":{"docs":{},"这":{"docs":{},"时":{"docs":{},"查":{"docs":{},"看":{"docs":{},"的":{"docs":{},"是":{"docs":{},"所":{"docs":{},"有":{"docs":{},"流":{"docs":{},"程":{"docs":{},"实":{"docs":{},"例":{"docs":{},"的":{"docs":{},"任":{"docs":{},"务":{"docs":{},"实":{"docs":{},"例":{"docs":{},"列":{"docs":{},"表":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"工":{"docs":{},"作":{"docs":{},"流":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}},"调":{"docs":{},"度":{"docs":{},"系":{"docs":{},"统":{"docs":{},"在":{"docs":{},"大":{"docs":{},"数":{"docs":{},"据":{"docs":{},"平":{"docs":{},"台":{"docs":{},"中":{"docs":{},"是":{"docs":{},"一":{"docs":{},"个":{"docs":{},"核":{"docs":{},"心":{"docs":{},"的":{"docs":{},"基":{"docs":{},"础":{"docs":{},"设":{"docs":{},"施":{"docs":{},",":{"docs":{},"是":{"docs":{},"大":{"docs":{},"数":{"docs":{},"据":{"docs":{},"开":{"docs":{},"发":{"docs":{},"必":{"docs":{},"不":{"docs":{},"可":{"docs":{},"少":{"docs":{},"的":{"docs":{},"重":{"docs":{},"要":{"docs":{},"组":{"docs":{},"成":{"docs":{},"部":{"docs":{},"分":{"docs":{},"。":{"docs":{},"由":{"docs":{},"于":{"docs":{},"数":{"docs":{},"据":{"docs":{},"处":{"docs":{},"理":{"docs":{},"流":{"docs":{},"程":{"docs":{},"常":{"docs":{},"常":{"docs":{},"具":{"docs":{},"有":{"docs":{},"很":{"docs":{},"长":{"docs":{},"的":{"docs":{},"依":{"docs":{},"赖":{"docs":{},"链":{"docs":{},"条":{"docs":{},",":{"docs":{},"因":{"docs":{},"此":{"docs":{},"依":{"docs":{},"赖":{"docs":{},"单":{"docs":{},"机":{"docs":{},"的":{"docs":{},"c":{"docs":{},"r":{"docs":{},"o":{"docs":{},"n":{"docs":{},"t":{"docs":{},"a":{"docs":{},"b":{"docs":{},"等":{"docs":{},"单":{"docs":{},"纯":{"docs":{},"依":{"docs":{},"赖":{"docs":{},"时":{"docs":{},"间":{"docs":{},"调":{"docs":{},"度":{"docs":{},"的":{"docs":{},"方":{"docs":{},"式":{"docs":{},",":{"docs":{},"往":{"docs":{},"往":{"docs":{},"存":{"docs":{},"在":{"docs":{},"很":{"docs":{},"大":{"docs":{},"的":{"docs":{},"弊":{"docs":{},"端":{"docs":{},",":{"docs":{},"如":{"docs":{},"依":{"docs":{},"赖":{"docs":{},"不":{"docs":{},"清":{"docs":{},"晰":{"docs":{},",":{"docs":{},"出":{"docs":{},"错":{"docs":{},"难":{"docs":{},"以":{"docs":{},"查":{"docs":{},"找":{"docs":{},"等":{"docs":{},"问":{"docs":{},"题":{"docs":{},"。":{"docs":{},"因":{"docs":{},"此":{"docs":{},",":{"docs":{},"我":{"docs":{},"们":{"docs":{},"调":{"docs":{},"研":{"docs":{},"了":{"docs":{},"市":{"docs":{},"面":{"docs":{},"上":{"docs":{},"流":{"docs":{},"行":{"docs":{},"的":{"docs":{},"调":{"docs":{},"度":{"docs":{},"系":{"docs":{},"统":{"docs":{},"。":{"docs":{"./":{"ref":"./","tf":0.1}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"下":{"docs":{},"分":{"docs":{},"为":{"docs":{},"流":{"docs":{},"程":{"docs":{},"定":{"docs":{},"义":{"docs":{},"、":{"docs":{},"流":{"docs":{},"程":{"docs":{},"实":{"docs":{},"例":{"docs":{},"和":{"docs":{},"任":{"docs":{},"务":{"docs":{},"实":{"docs":{},"例":{"docs":{},"三":{"docs":{},"个":{"docs":{},"功":{"docs":{},"能":{"docs":{},"模":{"docs":{},"块":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}},"名":{"docs":{},"称":{"docs":{},":":{"docs":{},"是":{"docs":{},"根":{"docs":{},"据":{"docs":{},"流":{"docs":{},"程":{"docs":{},"定":{"docs":{},"义":{"docs":{},"名":{"docs":{},"称":{"docs":{},"外":{"docs":{},"加":{"docs":{},"一":{"docs":{},"个":{"docs":{},"随":{"docs":{},"机":{"docs":{},"数":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}},"程":{"docs":{},"依":{"docs":{},"赖":{"docs":{},"j":{"docs":{},"a":{"docs":{},"r":{"docs":{},"包":{"docs":{},",":{"docs":{},"包":{"docs":{},"括":{"docs":{},"各":{"docs":{},"个":{"docs":{},"模":{"docs":{},"块":{"docs":{},"j":{"docs":{},"a":{"docs":{},"r":{"docs":{},"和":{"docs":{},"第":{"docs":{},"三":{"docs":{},"方":{"docs":{},"j":{"docs":{},"a":{"docs":{},"r":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{},"文":{"docs":{},"件":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}},"服":{"docs":{},"务":{"docs":{},"启":{"docs":{},"动":{"docs":{},"脚":{"docs":{},"本":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}},"自":{"docs":{},"动":{"docs":{},"化":{"docs":{},"部":{"docs":{},"署":{"docs":{},"、":{"docs":{},"启":{"docs":{},"动":{"docs":{},"脚":{"docs":{},"本":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}},"配":{"docs":{},"置":{"docs":{},"文":{"docs":{},"件":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}},"并":{"docs":{},"和":{"docs":{},"a":{"docs":{},"z":{"docs":{},"k":{"docs":{},"a":{"docs":{},"b":{"docs":{},"a":{"docs":{},"n":{"docs":{},"、":{"docs":{},"a":{"docs":{},"i":{"docs":{},"r":{"docs":{},"f":{"docs":{},"l":{"docs":{},"o":{"docs":{},"w":{"docs":{},"做":{"docs":{},"了":{"docs":{},"一":{"docs":{},"些":{"docs":{},"对":{"docs":{},"比":{"docs":{},":":{"docs":{"./":{"ref":"./","tf":0.1}}}}}}}}}}}}}}}}}}}}}}}}},"且":{"docs":{},"需":{"docs":{},"要":{"docs":{},"注":{"docs":{},"释":{"docs":{},"掉":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}}}}}}}}},"感":{"docs":{},"兴":{"docs":{},"趣":{"docs":{},"的":{"docs":{},"伙":{"docs":{},"伴":{"docs":{},"们":{"docs":{},"可":{"docs":{},"以":{"docs":{},"加":{"docs":{},"我":{"docs":{},"们":{"docs":{},"微":{"docs":{},"信":{"docs":{},":":{"5":{"1":{"0":{"5":{"7":{"0":{"3":{"6":{"7":{"docs":{},",":{"docs":{},"一":{"docs":{},"起":{"docs":{},"加":{"docs":{},"入":{"docs":{},"e":{"docs":{},"a":{"docs":{},"s":{"docs":{},"y":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"吧":{"docs":{},",":{"docs":{},"多":{"docs":{},"多":{"docs":{},"交":{"docs":{},"流":{"docs":{},"!":{"docs":{"./":{"ref":"./","tf":0.1}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}}}}}}}}}}}}}}},"简":{"docs":{},"介":{"docs":{"./":{"ref":"./","tf":0.1}}}},"系":{"docs":{},"统":{"docs":{},"部":{"docs":{},"分":{"docs":{},"截":{"docs":{},"图":{"docs":{},":":{"docs":{"./":{"ref":"./","tf":0.1}}}}}}},"架":{"docs":{},"构":{"docs":{},"分":{"docs":{},"析":{"docs":{"pages/guide-architecture.html":{"ref":"pages/guide-architecture.html","tf":10}}}}}},"参":{"docs":{},"数":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.003703703703703704}}}}}},"背":{"docs":{},"景":{"docs":{"./":{"ref":"./","tf":0.1}}}},"鉴":{"docs":{},"于":{"docs":{},"易":{"docs":{},"观":{"docs":{},"日":{"docs":{},"处":{"docs":{},"理":{"docs":{},"数":{"docs":{},"据":{"3":{"0":{"docs":{},"t":{"docs":{},"b":{"docs":{},",":{"docs":{},"复":{"docs":{},"杂":{"docs":{},"的":{"docs":{},"e":{"docs":{},"t":{"docs":{},"l":{"docs":{},"依":{"docs":{},"赖":{"docs":{},"关":{"docs":{},"系":{"docs":{},",":{"docs":{},"我":{"docs":{},"们":{"docs":{},"开":{"docs":{},"发":{"docs":{},"了":{"docs":{},"e":{"docs":{},"a":{"docs":{},"s":{"docs":{},"y":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"。":{"docs":{"./":{"ref":"./","tf":0.1}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}},"docs":{}}}}}}}}}},":":{"8":{"0":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.005110732538330494}}},"docs":{}},"docs":{"pages/guide-architecture.html":{"ref":"pages/guide-architecture.html","tf":0.02702702702702703},"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.012422360248447204}}},"a":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"t":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.00354924578527063}},":":{"docs":{},"告":{"docs":{},"警":{"docs":{},"微":{"docs":{},"服":{"docs":{},"务":{"docs":{"pages/guide-architecture.html":{"ref":"pages/guide-architecture.html","tf":0.013513513513513514}}}}}}}},".":{"docs":{},"%":{"docs":{},"d":{"docs":{},"{":{"docs":{},"y":{"docs":{},"y":{"docs":{},"y":{"docs":{},"i":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}},"l":{"docs":{},"o":{"docs":{},"g":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"t":{"docs":{},"i":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}},"t":{"docs":{},"y":{"docs":{},"p":{"docs":{},"e":{"docs":{},"=":{"docs":{},"e":{"docs":{},"m":{"docs":{},"a":{"docs":{},"i":{"docs":{},"l":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}},"/":{"docs":{},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"a":{"docs":{},"_":{"docs":{},"s":{"docs":{},"o":{"docs":{},"u":{"docs":{},"r":{"docs":{},"c":{"docs":{},"e":{"docs":{},".":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"t":{"docs":{},"i":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}}}}}}}}},"_":{"docs":{},"l":{"docs":{},"o":{"docs":{},"g":{"docs":{},"b":{"docs":{},"a":{"docs":{},"c":{"docs":{},"k":{"docs":{},".":{"docs":{},"x":{"docs":{},"m":{"docs":{},"l":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}},"s":{"docs":{},"=":{"docs":{},"a":{"docs":{},"r":{"docs":{},"k":{"3":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}},"docs":{}}}}}},"服":{"docs":{},"务":{"docs":{},"所":{"docs":{},"在":{"docs":{},"机":{"docs":{},"器":{"docs":{},",":{"1":{"docs":{},"个":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}},"docs":{}}}}}}}}}}},"l":{"docs":{},"=":{"docs":{},"(":{"docs":{},"a":{"docs":{},"l":{"docs":{},"l":{"docs":{},")":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}}}}}}}}}},"p":{"docs":{},"i":{"docs":{},"和":{"docs":{},"u":{"docs":{},"i":{"docs":{},"分":{"docs":{},"离":{"docs":{},"交":{"docs":{},"互":{"docs":{"pages/guide-architecture.html":{"ref":"pages/guide-architecture.html","tf":0.013513513513513514}}}}}}}}},"_":{"docs":{},"b":{"docs":{},"a":{"docs":{},"s":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}},"p":{"docs":{},"l":{"docs":{},"i":{"docs":{},"c":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},".":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"t":{"docs":{},"i":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}}}}}}},"r":{"docs":{},"c":{"docs":{},"h":{"docs":{},"i":{"docs":{},"v":{"docs":{},"e":{"docs":{},"s":{"docs":{},"、":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}},"格":{"docs":{},"式":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}},"流":{"docs":{},"程":{"docs":{},"定":{"docs":{},"义":{"docs":{},"某":{"docs":{},"任":{"docs":{},"务":{"docs":{},"依":{"docs":{},"赖":{"docs":{},"b":{"docs":{},"流":{"docs":{},"程":{"docs":{},"定":{"docs":{},"义":{"docs":{},"某":{"docs":{},"任":{"docs":{},"务":{"docs":{},",":{"docs":{},"t":{"docs":{},"a":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}},"d":{"docs":{},"d":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}},"n":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}},"p":{"docs":{},"t":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.005110732538330494}}}},"a":{"docs":{},"l":{"docs":{},"y":{"docs":{},"s":{"docs":{},"i":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}},"s":{"docs":{},"s":{"docs":{},"e":{"docs":{},"m":{"docs":{},"b":{"docs":{},"l":{"docs":{},"y":{"docs":{},":":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"e":{"docs":{},"m":{"docs":{},"b":{"docs":{},"l":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}}},"u":{"docs":{},"t":{"docs":{},"o":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}},"v":{"docs":{},"g":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}}}}},"d":{"3":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}},"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}},"a":{"docs":{},"g":{"docs":{"pages/guide-architecture.html":{"ref":"pages/guide-architecture.html","tf":0.013513513513513514},"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}},"e":{"docs":{},"m":{"docs":{},"o":{"docs":{},"n":{"docs":{},".":{"docs":{},"s":{"docs":{},"h":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.008873114463176575}}}}}}}}},"o":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}},"/":{"docs":{},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"a":{"docs":{},"_":{"docs":{},"s":{"docs":{},"o":{"docs":{},"u":{"docs":{},"r":{"docs":{},"c":{"docs":{},"e":{"docs":{},".":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"t":{"docs":{},"i":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}}}}}}}}},"数":{"docs":{},"据":{"docs":{},"源":{"docs":{},"配":{"docs":{},"置":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}},"t":{"docs":{},"a":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0044365572315882874}},".":{"docs":{},"b":{"docs":{},"a":{"docs":{},"s":{"docs":{},"e":{"docs":{},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{},".":{"docs":{},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{},"=":{"docs":{},"/":{"docs":{},"x":{"docs":{},"x":{"docs":{},"x":{"docs":{},"/":{"docs":{},"x":{"docs":{},"x":{"docs":{},"x":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}}}}}}}}},"d":{"docs":{},"o":{"docs":{},"w":{"docs":{},"n":{"docs":{},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{},".":{"docs":{},"b":{"docs":{},"a":{"docs":{},"s":{"docs":{},"e":{"docs":{},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{},".":{"docs":{},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{},"=":{"docs":{},"/":{"docs":{},"x":{"docs":{},"x":{"docs":{},"x":{"docs":{},"/":{"docs":{},"x":{"docs":{},"x":{"docs":{},"x":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"e":{"2":{"docs":{},"h":{"docs":{},"d":{"docs":{},"f":{"docs":{},"s":{"docs":{},".":{"docs":{},"b":{"docs":{},"a":{"docs":{},"s":{"docs":{},"e":{"docs":{},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{},"=":{"docs":{},"/":{"docs":{},"e":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}}}}}}},"b":{"docs":{},"a":{"docs":{},"s":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}},"s":{"docs":{},"o":{"docs":{},"u":{"docs":{},"r":{"docs":{},"c":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}},"d":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.007985803016858917}},"]":{"docs":{},",":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}},"_":{"docs":{},"h":{"docs":{},"h":{"docs":{},"}":{"docs":{},".":{"docs":{},"%":{"docs":{},"i":{"docs":{},".":{"docs":{},"l":{"docs":{},"o":{"docs":{},"g":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.00354924578527063}}}}}}}}}}}}}},"r":{"docs":{},"i":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"内":{"docs":{},"核":{"docs":{},"数":{"docs":{},":":{"docs":{},"可":{"docs":{},"以":{"docs":{},"设":{"docs":{},"置":{"docs":{},"d":{"docs":{},"r":{"docs":{},"i":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"内":{"docs":{},"核":{"docs":{},"数":{"docs":{},"及":{"docs":{},"内":{"docs":{},"存":{"docs":{},"数":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"为":{"docs":{},"全":{"docs":{},"局":{"docs":{},"参":{"docs":{},"数":{"docs":{},",":{"docs":{},"引":{"docs":{},"用":{"docs":{},"的":{"docs":{},"是":{"docs":{},"系":{"docs":{},"统":{"docs":{},"参":{"docs":{},"数":{"docs":{},"。":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}},"e":{"docs":{},"s":{"docs":{},"c":{"docs":{},"r":{"docs":{},"i":{"docs":{},"p":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},":":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}}}}},"v":{"docs":{},"e":{"docs":{},"l":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.005110732538330494}},"o":{"docs":{},"p":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},".":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"=":{"docs":{},"f":{"docs":{},"a":{"docs":{},"l":{"docs":{},"s":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}}}}}}}},"f":{"docs":{},"a":{"docs":{},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.008873114463176575}}}}}}}},"u":{"docs":{},"m":{"docs":{},"p":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}},"i":{"docs":{},"r":{"docs":{},",":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}},"c":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}}}}}}},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.01064773735581189}}},"y":{"docs":{},".":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}},"m":{"docs":{},"a":{"docs":{},"v":{"docs":{},"e":{"docs":{},"n":{"docs":{},".":{"docs":{},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},".":{"docs":{},"s":{"docs":{},"k":{"docs":{},"i":{"docs":{},"p":{"docs":{},"=":{"docs":{},"t":{"docs":{},"r":{"docs":{},"u":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}}}}}}},"o":{"docs":{},"w":{"docs":{},"n":{"docs":{},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{},".":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}},"f":{"docs":{},"i":{"docs":{},"l":{"docs":{},"e":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.003703703703703704},"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0034071550255536627},"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0044365572315882874}},"a":{"docs":{},"p":{"docs":{},"p":{"docs":{},"e":{"docs":{},"n":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},"实":{"docs":{},"现":{"docs":{},"如":{"docs":{},"下":{"docs":{},":":{"docs":{"pages/guide-architecture.html":{"ref":"pages/guide-architecture.html","tf":0.013513513513513514}}}}}}}}}}}}}}},"s":{"docs":{},"、":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.003703703703703704}}}}}}},"o":{"docs":{},"r":{"docs":{},"w":{"docs":{},"a":{"docs":{},"r":{"docs":{},"d":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}},"u":{"docs":{},"n":{"docs":{},"d":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0034071550255536627}}}}},"l":{"docs":{},"l":{"docs":{},"o":{"docs":{},"w":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}},"a":{"docs":{},"i":{"docs":{},"l":{"docs":{},"o":{"docs":{},"v":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}}}}}},"l":{"docs":{},"s":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}},"l":{"docs":{},"a":{"docs":{},"g":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}},"u":{"docs":{},"s":{"docs":{},"h":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}},"r":{"docs":{},"e":{"docs":{},"e":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}},"o":{"docs":{},"n":{"docs":{},"t":{"docs":{},"e":{"docs":{},"n":{"docs":{},"d":{"docs":{"pages/foreground-2.html":{"ref":"pages/foreground-2.html","tf":1}}}}}}}}},"s":{"docs":{},".":{"docs":{},"d":{"docs":{},"e":{"docs":{},"f":{"docs":{},"a":{"docs":{},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{},"f":{"docs":{},"s":{"docs":{},"=":{"docs":{},"h":{"docs":{},"d":{"docs":{},"f":{"docs":{},"s":{"docs":{},":":{"docs":{},"/":{"docs":{},"/":{"docs":{},"$":{"docs":{},"{":{"docs":{},"c":{"docs":{},"l":{"docs":{},"u":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"_":{"docs":{},"i":{"docs":{},"p":{"docs":{},"o":{"docs":{},"r":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"}":{"docs":{},":":{"8":{"0":{"2":{"0":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"l":{"docs":{},"o":{"docs":{},"g":{"docs":{},"b":{"docs":{},"a":{"docs":{},"c":{"docs":{},"k":{"docs":{},"和":{"docs":{},"g":{"docs":{},"r":{"docs":{},"p":{"docs":{},"c":{"docs":{},"实":{"docs":{},"现":{"docs":{},"日":{"docs":{},"志":{"docs":{},"访":{"docs":{},"问":{"docs":{"pages/guide-architecture.html":{"ref":"pages/guide-architecture.html","tf":0.013513513513513514}}}}}}}}}}}}}}}}},"g":{"docs":{},"e":{"docs":{},"r":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0026619343389529724}}}}},"s":{"docs":{},"/":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}},"c":{"docs":{},"a":{"docs":{},"l":{"docs":{},"h":{"docs":{},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{},";":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}},"t":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.005110732538330494}}}},"k":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}},"d":{"docs":{},"a":{"docs":{},"s":{"docs":{},"h":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}},"a":{"docs":{},"d":{"docs":{},",":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}}}}}},"i":{"docs":{},"b":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}},"j":{"docs":{},"a":{"docs":{},"r":{"docs":{},"s":{"docs":{},"、":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}},"n":{"docs":{},"u":{"docs":{},"x":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0034071550255536627}}}}},"s":{"docs":{},"t":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}},"e":{"docs":{},"n":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0034071550255536627}}}}}},"m":{"docs":{},"i":{"docs":{},"t":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}},"l":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}},"n":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}},"r":{"docs":{},"w":{"docs":{},"x":{"docs":{},"r":{"docs":{},"w":{"docs":{},"x":{"docs":{},"r":{"docs":{},"w":{"docs":{},"x":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}}}},"a":{"docs":{},"r":{"docs":{},"g":{"docs":{},"e":{"docs":{},"r":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}}}}}}},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}}}}}},"m":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{"pages/guide-architecture.html":{"ref":"pages/guide-architecture.html","tf":0.013513513513513514},"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852},"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314},"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.008873114463176575}},"容":{"docs":{},"错":{"docs":{},"完":{"docs":{},"成":{"docs":{},"之":{"docs":{},"后":{"docs":{},"则":{"docs":{},"重":{"docs":{},"新":{"docs":{},"由":{"docs":{},"e":{"docs":{},"a":{"docs":{},"s":{"docs":{},"y":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"中":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"线":{"docs":{},"程":{"docs":{},"调":{"docs":{},"度":{"docs":{},",":{"docs":{},"遍":{"docs":{},"历":{"docs":{"pages/guide-architecture.html":{"ref":"pages/guide-architecture.html","tf":0.013513513513513514}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"流":{"docs":{},"程":{"docs":{},"图":{"docs":{},":":{"docs":{"pages/guide-architecture.html":{"ref":"pages/guide-architecture.html","tf":0.013513513513513514}}}}}}}},"的":{"docs":{},"角":{"docs":{},"色":{"docs":{},"主":{"docs":{},"要":{"docs":{},"负":{"docs":{},"责":{"docs":{},"任":{"docs":{},"务":{"docs":{},"分":{"docs":{},"发":{"docs":{},"并":{"docs":{},"监":{"docs":{},"督":{"docs":{},"s":{"docs":{},"l":{"docs":{},"a":{"docs":{},"v":{"docs":{},"e":{"docs":{},"的":{"docs":{},"健":{"docs":{},"康":{"docs":{},"状":{"docs":{},"态":{"docs":{},",":{"docs":{},"可":{"docs":{},"以":{"docs":{},"动":{"docs":{},"态":{"docs":{},"的":{"docs":{},"将":{"docs":{},"任":{"docs":{},"务":{"docs":{},"均":{"docs":{},"衡":{"docs":{},"到":{"docs":{},"s":{"docs":{},"l":{"docs":{},"a":{"docs":{},"v":{"docs":{},"e":{"docs":{},"上":{"docs":{},",":{"docs":{},"以":{"docs":{},"致":{"docs":{},"s":{"docs":{},"l":{"docs":{},"a":{"docs":{},"v":{"docs":{},"e":{"docs":{},"节":{"docs":{},"点":{"docs":{},"不":{"docs":{},"至":{"docs":{},"于":{"docs":{},"“":{"docs":{},"忙":{"docs":{},"死":{"docs":{},"”":{"docs":{},"或":{"docs":{},"”":{"docs":{},"闲":{"docs":{},"死":{"docs":{},"”":{"docs":{},"的":{"docs":{},"状":{"docs":{},"态":{"docs":{},"。":{"docs":{"pages/guide-architecture.html":{"ref":"pages/guide-architecture.html","tf":0.013513513513513514}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"监":{"docs":{},"控":{"docs":{},"其":{"docs":{},"他":{"docs":{},"m":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"和":{"docs":{},"w":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{},"e":{"docs":{},"r":{"docs":{},"的":{"docs":{},"目":{"docs":{},"录":{"docs":{},",":{"docs":{},"如":{"docs":{},"果":{"docs":{},"监":{"docs":{},"听":{"docs":{},"到":{"docs":{},"r":{"docs":{},"e":{"docs":{},"m":{"docs":{},"o":{"docs":{},"v":{"docs":{},"e":{"docs":{},"事":{"docs":{},"件":{"docs":{},",":{"docs":{},"则":{"docs":{},"会":{"docs":{},"根":{"docs":{},"据":{"docs":{},"具":{"docs":{},"体":{"docs":{},"的":{"docs":{},"业":{"docs":{},"务":{"docs":{},"逻":{"docs":{},"辑":{"docs":{},"进":{"docs":{},"行":{"docs":{},"流":{"docs":{},"程":{"docs":{},"实":{"docs":{},"例":{"docs":{},"容":{"docs":{},"错":{"docs":{},"或":{"docs":{},"者":{"docs":{},"任":{"docs":{},"务":{"docs":{},"实":{"docs":{},"例":{"docs":{},"容":{"docs":{},"错":{"docs":{},"。":{"docs":{"pages/guide-architecture.html":{"ref":"pages/guide-architecture.html","tf":0.013513513513513514}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},".":{"docs":{},"%":{"docs":{},"d":{"docs":{},"{":{"docs":{},"y":{"docs":{},"y":{"docs":{},"y":{"docs":{},"i":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}},"e":{"docs":{},"x":{"docs":{},"e":{"docs":{},"c":{"docs":{},".":{"docs":{},"t":{"docs":{},"a":{"docs":{},"s":{"docs":{},"k":{"docs":{},".":{"docs":{},"n":{"docs":{},"u":{"docs":{},"m":{"docs":{},"b":{"docs":{},"e":{"docs":{},"r":{"docs":{},"=":{"2":{"0":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}},"docs":{}},"docs":{}}}}}}}}}}}},"h":{"docs":{},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"d":{"docs":{},"s":{"docs":{},"=":{"1":{"0":{"0":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}},"docs":{}},"docs":{}},"docs":{}}}}}}}}}}}}}},"h":{"docs":{},"e":{"docs":{},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{},"b":{"docs":{},"e":{"docs":{},"a":{"docs":{},"t":{"docs":{},".":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"=":{"8":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}},"docs":{}}}}}}}}}}}}}}}}}}}},"l":{"docs":{},"o":{"docs":{},"g":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}},"m":{"docs":{},"a":{"docs":{},"x":{"docs":{},".":{"docs":{},"c":{"docs":{},"p":{"docs":{},"u":{"docs":{},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{},".":{"docs":{},"a":{"docs":{},"v":{"docs":{},"g":{"docs":{},"=":{"1":{"0":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}},"docs":{}},"docs":{}}}}}}}}}}}}}}}}},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"t":{"docs":{},"i":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"e":{"docs":{},"d":{"docs":{},".":{"docs":{},"m":{"docs":{},"e":{"docs":{},"m":{"docs":{},"o":{"docs":{},"r":{"docs":{},"y":{"docs":{},"=":{"1":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}},"docs":{}}}}}}}}}}}}}}}}},"t":{"docs":{},"a":{"docs":{},"s":{"docs":{},"k":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"m":{"docs":{},"i":{"docs":{},"t":{"docs":{},".":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"=":{"1":{"0":{"0":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}},"docs":{}},"docs":{}},"docs":{}}}}}}}}}},"r":{"docs":{},"e":{"docs":{},"t":{"docs":{},"r":{"docs":{},"y":{"docs":{},"t":{"docs":{},"i":{"docs":{},"m":{"docs":{},"e":{"docs":{},"s":{"docs":{},"=":{"5":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}},"_":{"docs":{},"l":{"docs":{},"o":{"docs":{},"g":{"docs":{},"b":{"docs":{},"a":{"docs":{},"c":{"docs":{},"k":{"docs":{},".":{"docs":{},"x":{"docs":{},"m":{"docs":{},"l":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}},"s":{"docs":{},"=":{"docs":{},"a":{"docs":{},"r":{"docs":{},"k":{"0":{"docs":{},",":{"docs":{},"a":{"docs":{},"r":{"docs":{},"k":{"1":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}},"docs":{}}}}}},"docs":{}}}}}},"日":{"docs":{},"志":{"docs":{},"文":{"docs":{},"件":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}},"服":{"docs":{},"务":{"docs":{},"所":{"docs":{},"在":{"docs":{},"机":{"docs":{},"器":{"docs":{},",":{"docs":{},">":{"docs":{},"=":{"1":{"docs":{},"个":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}},"docs":{}}}}}}}}}},"配":{"docs":{},"置":{"docs":{},"文":{"docs":{},"件":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}},"p":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.003703703703703704}},".":{"docs":{},"p":{"docs":{},"i":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.003703703703703704}}}}},"、":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}},"i":{"docs":{},"n":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}},";":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}},"l":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}},".":{"docs":{},"p":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"w":{"docs":{},"d":{"docs":{},"=":{"docs":{},"x":{"docs":{},"x":{"docs":{},"x":{"docs":{},"x":{"docs":{},"x":{"docs":{},"x":{"docs":{},"x":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}},"r":{"docs":{},"o":{"docs":{},"t":{"docs":{},"o":{"docs":{},"c":{"docs":{},"o":{"docs":{},"l":{"docs":{},"=":{"docs":{},"s":{"docs":{},"m":{"docs":{},"t":{"docs":{},"p":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}},"s":{"docs":{},"e":{"docs":{},"n":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},"=":{"docs":{},"x":{"docs":{},"x":{"docs":{},"x":{"docs":{},"x":{"docs":{},"x":{"docs":{},"x":{"docs":{},"@":{"docs":{},"q":{"docs":{},"q":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}}}}}},"r":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},".":{"docs":{},"h":{"docs":{},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{},"=":{"docs":{},"s":{"docs":{},"m":{"docs":{},"t":{"docs":{},"p":{"docs":{},".":{"docs":{},"e":{"docs":{},"x":{"docs":{},"m":{"docs":{},"a":{"docs":{},"i":{"docs":{},"l":{"docs":{},".":{"docs":{},"q":{"docs":{},"q":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}}}}}}}}}}},"p":{"docs":{},"o":{"docs":{},"r":{"docs":{},"t":{"docs":{},"=":{"2":{"5":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}},"docs":{}},"docs":{}}}}}}}}}}}}}}}},"k":{"docs":{},"e":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0034071550255536627},"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.006211180124223602}}}},"n":{"docs":{},"u":{"docs":{},"a":{"docs":{},"l":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}},"x":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0026619343389529724}}}},"m":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852},"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.011535048802129548}}},"r":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}},"k":{"docs":{},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}},"o":{"docs":{},"u":{"docs":{},"n":{"docs":{},"t":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}},"n":{"docs":{},"i":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"_":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},".":{"docs":{},"p":{"docs":{},"i":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}}}}}}}}}}}}}}}}}},"e":{"docs":{},"m":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}}},"y":{"docs":{},",":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}}}}}}}},"i":{"docs":{},"l":{"docs":{},"l":{"docs":{},"i":{"docs":{},"s":{"docs":{},"e":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"d":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0026619343389529724}}}}}}}}}}},"n":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}},"i":{"docs":{},"m":{"docs":{},"u":{"docs":{},"m":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}}}}}}}},"v":{"docs":{},"n":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}},"y":{"docs":{},"d":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0026619343389529724}},">":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.00354924578527063}}}}}}}},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"u":{"docs":{},"e":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}},"中":{"docs":{},"是":{"docs":{},"否":{"docs":{},"已":{"docs":{},"经":{"docs":{},"存":{"docs":{},"在":{"docs":{},",":{"docs":{},"如":{"docs":{},"果":{"docs":{},"存":{"docs":{},"在":{"docs":{},"则":{"docs":{},"同":{"docs":{},"样":{"docs":{},"监":{"docs":{},"控":{"docs":{},"任":{"docs":{},"务":{"docs":{},"实":{"docs":{},"例":{"docs":{},"的":{"docs":{},"状":{"docs":{},"态":{"docs":{},",":{"docs":{},"如":{"docs":{},"果":{"docs":{},"不":{"docs":{},"存":{"docs":{},"在":{"docs":{},"则":{"docs":{},"重":{"docs":{},"新":{"docs":{},"提":{"docs":{},"交":{"docs":{},"任":{"docs":{},"务":{"docs":{},"实":{"docs":{},"例":{"docs":{},"。":{"docs":{"pages/guide-architecture.html":{"ref":"pages/guide-architecture.html","tf":0.013513513513513514}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"i":{"docs":{},"t":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.005110732538330494}}}},"a":{"docs":{},"l":{"docs":{},"i":{"docs":{},"t":{"docs":{},"i":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}},"r":{"docs":{},"t":{"docs":{},"z":{"docs":{},".":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"t":{"docs":{},"i":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}},"r":{"docs":{},"t":{"docs":{},"z":{"docs":{},"_":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}},"s":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.010221465076660987}},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}},"e":{"docs":{},"r":{"docs":{},"线":{"docs":{},"程":{"docs":{},"一":{"docs":{},"旦":{"docs":{},"发":{"docs":{},"现":{"docs":{},"任":{"docs":{},"务":{"docs":{},"实":{"docs":{},"例":{"docs":{},"为":{"docs":{},"”":{"docs":{"pages/guide-architecture.html":{"ref":"pages/guide-architecture.html","tf":0.013513513513513514}}}}}}}}}}}},"在":{"docs":{},"获":{"docs":{},"取":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"m":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{},"的":{"docs":{},"时":{"docs":{},"候":{"docs":{},"是":{"docs":{},"f":{"docs":{},"i":{"docs":{},"f":{"docs":{},"o":{"docs":{},"的":{"docs":{},"方":{"docs":{},"式":{"docs":{},"执":{"docs":{},"行":{"docs":{},"的":{"docs":{},"。":{"docs":{"pages/guide-architecture.html":{"ref":"pages/guide-architecture.html","tf":0.013513513513513514}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"调":{"docs":{},"度":{"docs":{},"及":{"docs":{},"分":{"docs":{},"布":{"docs":{},"式":{"docs":{},"任":{"docs":{},"务":{"docs":{},"执":{"docs":{},"行":{"docs":{},"引":{"docs":{},"擎":{"docs":{"pages/guide-architecture.html":{"ref":"pages/guide-architecture.html","tf":0.013513513513513514}}}}}}}}}}}}}}}}}}}}},"r":{"docs":{},"i":{"docs":{},"p":{"docs":{},"t":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314},"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}}}}}}},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{"pages/guide-architecture.html":{"ref":"pages/guide-architecture.html","tf":0.013513513513513514},"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0068143100511073255},"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.015971606033717833}},"_":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}},".":{"docs":{},"%":{"docs":{},"d":{"docs":{},"{":{"docs":{},"y":{"docs":{},"y":{"docs":{},"y":{"docs":{},"i":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"t":{"docs":{},"e":{"docs":{},"x":{"docs":{},"t":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}},"l":{"docs":{},"o":{"docs":{},"g":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.005323868677905945}}}}},"m":{"docs":{},"a":{"docs":{},"x":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}},"p":{"docs":{},"o":{"docs":{},"r":{"docs":{},"t":{"docs":{},"=":{"1":{"2":{"3":{"4":{"5":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}}}}},"s":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},".":{"docs":{},"t":{"docs":{},"i":{"docs":{},"m":{"docs":{},"e":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{},"=":{"7":{"2":{"0":{"0":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}}}}}}}}}}}}}}}}}}},"i":{"docs":{},"c":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}},"t":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}},"e":{"docs":{},"n":{"docs":{},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"c":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"d":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}},"l":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}},"f":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0044365572315882874}}}},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}},"h":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.008873114463176575}},"e":{"docs":{},"l":{"docs":{},"l":{"docs":{},"节":{"docs":{},"点":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}},"任":{"docs":{},"务":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"k":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}},"(":{"1":{"docs":{},".":{"docs":{},"x":{"docs":{},",":{"2":{"docs":{},".":{"docs":{},"x":{"docs":{},")":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}},"docs":{}}}}},"docs":{}},"_":{"docs":{},"h":{"docs":{},"o":{"docs":{},"m":{"docs":{},"e":{"1":{"docs":{},"=":{"docs":{},"/":{"docs":{},"o":{"docs":{},"p":{"docs":{},"t":{"docs":{},"/":{"docs":{},"s":{"docs":{},"o":{"docs":{},"f":{"docs":{},"t":{"docs":{},"/":{"docs":{},"s":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"k":{"1":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}},"docs":{}}}}}}}}}}}}}}}}}},"2":{"docs":{},"=":{"docs":{},"/":{"docs":{},"o":{"docs":{},"p":{"docs":{},"t":{"docs":{},"/":{"docs":{},"s":{"docs":{},"o":{"docs":{},"f":{"docs":{},"t":{"docs":{},"/":{"docs":{},"s":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"k":{"2":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}},"docs":{}}}}}}}}}}}}}}}}}},"docs":{}}}}}}}}},"e":{"docs":{},"c":{"docs":{},"i":{"docs":{},"f":{"docs":{},"i":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}},"r":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}},".":{"docs":{},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"a":{"docs":{},"s":{"docs":{},"o":{"docs":{},"u":{"docs":{},"r":{"docs":{},"c":{"docs":{},"e":{"docs":{},".":{"docs":{},"d":{"docs":{},"e":{"docs":{},"f":{"docs":{},"a":{"docs":{},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{},"a":{"docs":{},"u":{"docs":{},"t":{"docs":{},"o":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"m":{"docs":{},"i":{"docs":{},"t":{"docs":{},"=":{"docs":{},"t":{"docs":{},"r":{"docs":{},"u":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}}}}}}}}}}}}}}}}}}}}}},"r":{"docs":{},"i":{"docs":{},"v":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}}}}}},"i":{"docs":{},"n":{"docs":{},"i":{"docs":{},"t":{"docs":{},"i":{"docs":{},"a":{"docs":{},"l":{"docs":{},"s":{"docs":{},"i":{"docs":{},"z":{"docs":{},"e":{"docs":{},"=":{"5":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}}},"docs":{}}}}}}}}}}}}},"m":{"docs":{},"a":{"docs":{},"x":{"docs":{},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"v":{"docs":{},"e":{"docs":{},"=":{"2":{"0":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}}},"docs":{}},"docs":{}}}}}}}},"p":{"docs":{},"o":{"docs":{},"o":{"docs":{},"l":{"docs":{},"p":{"docs":{},"r":{"docs":{},"e":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"n":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"i":{"docs":{},"z":{"docs":{},"e":{"docs":{},"=":{"2":{"0":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}}},"docs":{}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"w":{"docs":{},"a":{"docs":{},"i":{"docs":{},"t":{"docs":{},"=":{"6":{"0":{"0":{"0":{"0":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}}}}}}},"i":{"docs":{},"n":{"docs":{},"e":{"docs":{},"v":{"docs":{},"i":{"docs":{},"c":{"docs":{},"t":{"docs":{},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{},"e":{"docs":{},"i":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"t":{"docs":{},"i":{"docs":{},"m":{"docs":{},"e":{"docs":{},"m":{"docs":{},"i":{"docs":{},"l":{"docs":{},"l":{"docs":{},"i":{"docs":{},"s":{"docs":{},"=":{"3":{"0":{"0":{"0":{"0":{"0":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}},"i":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"=":{"5":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}}},"docs":{}}}}}}}}},"p":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"w":{"docs":{},"o":{"docs":{},"r":{"docs":{},"d":{"docs":{},"=":{"docs":{},"$":{"docs":{},"{":{"docs":{},"p":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"w":{"docs":{},"o":{"docs":{},"r":{"docs":{},"d":{"docs":{},"}":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}}}}}}}}}}}}}}}}}}}}},"o":{"docs":{},"o":{"docs":{},"l":{"docs":{},"p":{"docs":{},"r":{"docs":{},"e":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"s":{"docs":{},"=":{"docs":{},"f":{"docs":{},"a":{"docs":{},"l":{"docs":{},"s":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}},"t":{"docs":{},"r":{"docs":{},"u":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}}}}}}}}}}}}}},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},"o":{"docs":{},"n":{"docs":{},"b":{"docs":{},"o":{"docs":{},"r":{"docs":{},"r":{"docs":{},"o":{"docs":{},"w":{"docs":{},"=":{"docs":{},"t":{"docs":{},"r":{"docs":{},"u":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}}}}}}}}}}}},"r":{"docs":{},"e":{"docs":{},"t":{"docs":{},"u":{"docs":{},"r":{"docs":{},"n":{"docs":{},"=":{"docs":{},"f":{"docs":{},"a":{"docs":{},"l":{"docs":{},"s":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}}}}}}}}}}}}}}},"w":{"docs":{},"h":{"docs":{},"i":{"docs":{},"l":{"docs":{},"e":{"docs":{},"i":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"=":{"docs":{},"t":{"docs":{},"r":{"docs":{},"u":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}}}}}}}}}}}}}}}}}},"i":{"docs":{},"m":{"docs":{},"e":{"docs":{},"b":{"docs":{},"e":{"docs":{},"t":{"docs":{},"w":{"docs":{},"e":{"docs":{},"e":{"docs":{},"n":{"docs":{},"e":{"docs":{},"v":{"docs":{},"i":{"docs":{},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"r":{"docs":{},"u":{"docs":{},"n":{"docs":{},"s":{"docs":{},"m":{"docs":{},"i":{"docs":{},"l":{"docs":{},"l":{"docs":{},"i":{"docs":{},"s":{"docs":{},"=":{"6":{"0":{"0":{"0":{"0":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"y":{"docs":{},"p":{"docs":{},"e":{"docs":{},"=":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},".":{"docs":{},"a":{"docs":{},"l":{"docs":{},"i":{"docs":{},"b":{"docs":{},"a":{"docs":{},"b":{"docs":{},"a":{"docs":{},".":{"docs":{},"d":{"docs":{},"r":{"docs":{},"u":{"docs":{},"i":{"docs":{},"d":{"docs":{},".":{"docs":{},"p":{"docs":{},"o":{"docs":{},"o":{"docs":{},"l":{"docs":{},".":{"docs":{},"d":{"docs":{},"r":{"docs":{},"u":{"docs":{},"i":{"docs":{},"d":{"docs":{},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"a":{"docs":{},"s":{"docs":{},"o":{"docs":{},"u":{"docs":{},"r":{"docs":{},"c":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"u":{"docs":{},"r":{"docs":{},"l":{"docs":{},"=":{"docs":{},"j":{"docs":{},"d":{"docs":{},"b":{"docs":{},"c":{"docs":{},":":{"docs":{},"m":{"docs":{},"y":{"docs":{},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{},":":{"docs":{},"/":{"docs":{},"/":{"docs":{},"$":{"docs":{},"{":{"docs":{},"i":{"docs":{},"p":{"docs":{},"}":{"docs":{},":":{"3":{"3":{"0":{"6":{"docs":{},"/":{"docs":{},"e":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"?":{"docs":{},"c":{"docs":{},"h":{"docs":{},"a":{"docs":{},"r":{"docs":{},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"e":{"docs":{},"n":{"docs":{},"c":{"docs":{},"o":{"docs":{},"d":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"=":{"docs":{},"u":{"docs":{},"t":{"docs":{},"f":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"=":{"docs":{},"$":{"docs":{},"{":{"docs":{},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"}":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}}}}}}}}}}}}}}}}}}}}}},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"i":{"docs":{},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"r":{"docs":{},"y":{"docs":{},"=":{"docs":{},"s":{"docs":{},"e":{"docs":{},"l":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}}}}}}}}},"t":{"docs":{},"i":{"docs":{},"m":{"docs":{},"e":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{},"=":{"3":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},".":{"docs":{},"m":{"docs":{},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{},"i":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{},".":{"docs":{},"m":{"docs":{},"a":{"docs":{},"x":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}}}}}}}}}}}}}}}}}}}},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"i":{"docs":{},"s":{"docs":{},".":{"docs":{},"h":{"docs":{},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{},"=":{"docs":{},"$":{"docs":{},"{":{"docs":{},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"i":{"docs":{},"s":{"docs":{},"_":{"docs":{},"i":{"docs":{},"p":{"docs":{},"}":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}}}},"m":{"docs":{},"a":{"docs":{},"x":{"docs":{},"i":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"=":{"1":{"0":{"0":{"0":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}}}}},"t":{"docs":{},"o":{"docs":{},"t":{"docs":{},"a":{"docs":{},"l":{"docs":{},"=":{"1":{"0":{"0":{"0":{"0":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}}}}}}}}},"p":{"docs":{},"o":{"docs":{},"r":{"docs":{},"t":{"docs":{},"=":{"6":{"3":{"7":{"9":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}}}}}}}}}}}}}}}}},"q":{"docs":{},"l":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852},"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}},"参":{"docs":{},"数":{"docs":{},":":{"docs":{},"输":{"docs":{},"入":{"docs":{},"参":{"docs":{},"数":{"docs":{},"格":{"docs":{},"式":{"docs":{},"为":{"docs":{},"k":{"docs":{},"e":{"docs":{},"y":{"1":{"docs":{},"=":{"docs":{},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"u":{"docs":{},"e":{"1":{"docs":{},";":{"docs":{},"k":{"docs":{},"e":{"docs":{},"y":{"2":{"docs":{},"=":{"docs":{},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"u":{"docs":{},"e":{"2":{"docs":{},"…":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}},"docs":{}}}}}}}},"docs":{}}}}}},"docs":{}}}}}}}},"docs":{}}}}}}}}}}}}}},"类":{"docs":{},"型":{"docs":{},":":{"docs":{},"支":{"docs":{},"持":{"docs":{},"查":{"docs":{},"询":{"docs":{},"和":{"docs":{},"非":{"docs":{},"查":{"docs":{},"询":{"docs":{},"两":{"docs":{},"种":{"docs":{},",":{"docs":{},"查":{"docs":{},"询":{"docs":{},"是":{"docs":{},"s":{"docs":{},"e":{"docs":{},"l":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"类":{"docs":{},"型":{"docs":{},"的":{"docs":{},"查":{"docs":{},"询":{"docs":{},",":{"docs":{},"是":{"docs":{},"有":{"docs":{},"结":{"docs":{},"果":{"docs":{},"集":{"docs":{},"返":{"docs":{},"回":{"docs":{},"的":{"docs":{},",":{"docs":{},"可":{"docs":{},"以":{"docs":{},"指":{"docs":{},"定":{"docs":{},"邮":{"docs":{},"件":{"docs":{},"通":{"docs":{},"知":{"docs":{},"为":{"docs":{},"表":{"docs":{},"格":{"docs":{},"、":{"docs":{},"附":{"docs":{},"件":{"docs":{},"或":{"docs":{},"表":{"docs":{},"格":{"docs":{},"附":{"docs":{},"件":{"docs":{},"三":{"docs":{},"种":{"docs":{},"模":{"docs":{},"板":{"docs":{},"。":{"docs":{},"非":{"docs":{},"查":{"docs":{},"询":{"docs":{},"是":{"docs":{},"没":{"docs":{},"有":{"docs":{},"结":{"docs":{},"果":{"docs":{},"集":{"docs":{},"返":{"docs":{},"回":{"docs":{},"的":{"docs":{},",":{"docs":{},"是":{"docs":{},"针":{"docs":{},"对":{"docs":{},"u":{"docs":{},"p":{"docs":{},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"、":{"docs":{},"d":{"docs":{},"e":{"docs":{},"l":{"docs":{},"e":{"docs":{},"t":{"docs":{},"e":{"docs":{},"、":{"docs":{},"i":{"docs":{},"n":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"t":{"docs":{},"三":{"docs":{},"种":{"docs":{},"类":{"docs":{},"型":{"docs":{},"的":{"docs":{},"操":{"docs":{},"作":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"语":{"docs":{},"句":{"docs":{},":":{"docs":{},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{},"语":{"docs":{},"句":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0034071550255536627}},"依":{"docs":{},"赖":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}},"t":{"docs":{},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0034071550255536627},"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.005323868677905945}},")":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}},"t":{"docs":{},"i":{"docs":{},"c":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}},"u":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}},"e":{"docs":{},"?":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}},"o":{"docs":{},"p":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0034071550255536627},"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0044365572315882874}},")":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}},"r":{"docs":{},"e":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}},"u":{"docs":{},"c":{"docs":{},"c":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}},"b":{"docs":{},"m":{"docs":{},"i":{"docs":{},"t":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}},"d":{"docs":{},"o":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.00354924578527063}}}},"p":{"docs":{},"p":{"docs":{},"l":{"docs":{},"e":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}},"r":{"docs":{},"e":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.006211180124223602}}},"v":{"docs":{},"i":{"docs":{},"v":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}}}}}}},"y":{"docs":{},"n":{"docs":{},"t":{"docs":{},"a":{"docs":{},"x":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"m":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}},"c":{"docs":{},"t":{"docs":{},"l":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0068143100511073255}}}}}}}}}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"l":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}},"z":{"docs":{},"e":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}},"=":{"1":{"0":{"2":{"4":{"docs":{},"m":{"docs":{},"b":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}}}}},"docs":{}},"docs":{}},"docs":{}},"5":{"0":{"0":{"0":{"0":{"0":{"0":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}}}},"n":{"docs":{},"a":{"docs":{},"p":{"docs":{},"s":{"docs":{},"h":{"docs":{},"o":{"docs":{},"t":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}},".":{"docs":{},"t":{"docs":{},"a":{"docs":{},"r":{"docs":{},".":{"docs":{},"g":{"docs":{},"z":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}},"/":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}},"s":{"docs":{},"c":{"docs":{},"r":{"docs":{},"i":{"docs":{},"p":{"docs":{},"t":{"docs":{},"/":{"docs":{},"i":{"docs":{},"n":{"docs":{},"i":{"docs":{},"t":{"docs":{},"_":{"docs":{},"d":{"docs":{},"e":{"docs":{},"p":{"docs":{},"l":{"docs":{},"o":{"docs":{},"y":{"docs":{},"_":{"docs":{},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},".":{"docs":{},"s":{"docs":{},"h":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}},"h":{"docs":{},"d":{"docs":{},"f":{"docs":{},"s":{"docs":{},".":{"docs":{},"s":{"docs":{},"h":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}},"i":{"docs":{},"n":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"l":{"docs":{},"l":{"docs":{},"_":{"docs":{},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{},".":{"docs":{},"s":{"docs":{},"h":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}}}}}}}}}}}}}},"q":{"docs":{},"l":{"docs":{},"/":{"docs":{},"有":{"docs":{},"两":{"docs":{},"个":{"docs":{},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{},"创":{"docs":{},"建":{"docs":{},"表":{"docs":{},"文":{"docs":{},"件":{"docs":{},":":{"docs":{},"e":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},".":{"docs":{},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{},"和":{"docs":{},"q":{"docs":{},"u":{"docs":{},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{},"z":{"docs":{},".":{"docs":{},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"o":{"docs":{},"u":{"docs":{},"r":{"docs":{},"c":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}},"u":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.005323868677905945}},"i":{"docs":{"pages/guide-architecture.html":{"ref":"pages/guide-architecture.html","tf":0.013513513513513514},"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}},"d":{"docs":{},"f":{"docs":{},"函":{"docs":{},"数":{"docs":{},"名":{"docs":{},"称":{"docs":{},":":{"docs":{},"输":{"docs":{},"入":{"docs":{},"u":{"docs":{},"d":{"docs":{},"f":{"docs":{},"函":{"docs":{},"数":{"docs":{},"时":{"docs":{},"的":{"docs":{},"名":{"docs":{},"称":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}},"管":{"docs":{},"理":{"docs":{},":":{"docs":{},"对":{"docs":{},"用":{"docs":{},"户":{"docs":{},"创":{"docs":{},"建":{"docs":{},"的":{"docs":{},"u":{"docs":{},"d":{"docs":{},"f":{"docs":{},"进":{"docs":{},"行":{"docs":{},"管":{"docs":{},"理":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}},":":{"docs":{},"对":{"docs":{},"于":{"docs":{},"h":{"docs":{},"i":{"docs":{},"v":{"docs":{},"e":{"docs":{},"类":{"docs":{},"型":{"docs":{},"的":{"docs":{},"数":{"docs":{},"据":{"docs":{},"源":{"docs":{},",":{"docs":{},"可":{"docs":{},"以":{"docs":{},"引":{"docs":{},"用":{"docs":{},"资":{"docs":{},"源":{"docs":{},"中":{"docs":{},"心":{"docs":{},"中":{"docs":{},"创":{"docs":{},"建":{"docs":{},"的":{"docs":{},"u":{"docs":{},"d":{"docs":{},"f":{"docs":{},"函":{"docs":{},"数":{"docs":{},",":{"docs":{},"其":{"docs":{},"他":{"docs":{},"类":{"docs":{},"型":{"docs":{},"的":{"docs":{},"数":{"docs":{},"据":{"docs":{},"源":{"docs":{},"暂":{"docs":{},"不":{"docs":{},"支":{"docs":{},"持":{"docs":{},"u":{"docs":{},"d":{"docs":{},"f":{"docs":{},"函":{"docs":{},"数":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"管":{"docs":{},"理":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}},"资":{"docs":{},"源":{"docs":{},":":{"docs":{},"设":{"docs":{},"置":{"docs":{},"创":{"docs":{},"建":{"docs":{},"的":{"docs":{},"u":{"docs":{},"d":{"docs":{},"f":{"docs":{},"对":{"docs":{},"应":{"docs":{},"的":{"docs":{},"资":{"docs":{},"源":{"docs":{},"文":{"docs":{},"件":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}},"n":{"docs":{},"s":{"docs":{},"a":{"docs":{},"f":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}},"i":{"docs":{},"t":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}}}}},"p":{"docs":{},"g":{"docs":{},"r":{"docs":{},"a":{"docs":{},"d":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}},"s":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}},"e":{"docs":{},"r":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}},"=":{"docs":{},"e":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0034071550255536627}}}}}}}}}}},"a":{"docs":{},"d":{"docs":{},"d":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}},"和":{"docs":{},"—":{"docs":{},"g":{"docs":{},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"p":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}},"}":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}}}},".":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}},"t":{"docs":{},"f":{"8":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}},"_":{"docs":{},"g":{"docs":{},"e":{"docs":{},"n":{"docs":{},"e":{"docs":{},"r":{"docs":{},"a":{"docs":{},"l":{"docs":{},"_":{"docs":{},"c":{"docs":{},"i":{"docs":{},";":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}},"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.007985803016858917}}}}},"w":{"docs":{},"e":{"docs":{},"b":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.005323868677905945}},":":{"docs":{},"使":{"docs":{},"用":{"docs":{},"s":{"docs":{},"p":{"docs":{},"r":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"b":{"docs":{},"o":{"docs":{},"o":{"docs":{},"t":{"docs":{},"提":{"docs":{},"供":{"docs":{},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"pages/guide-architecture.html":{"ref":"pages/guide-architecture.html","tf":0.013513513513513514}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"=":{"docs":{},"a":{"docs":{},"r":{"docs":{},"k":{"1":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}},"docs":{}}}}},"_":{"docs":{},"l":{"docs":{},"o":{"docs":{},"g":{"docs":{},"b":{"docs":{},"a":{"docs":{},"c":{"docs":{},"k":{"docs":{},".":{"docs":{},"x":{"docs":{},"m":{"docs":{},"l":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}}}}}},"日":{"docs":{},"志":{"docs":{},"文":{"docs":{},"件":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}},"服":{"docs":{},"务":{"docs":{},"所":{"docs":{},"在":{"docs":{},"机":{"docs":{},"器":{"docs":{},",":{"1":{"docs":{},"个":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}},"docs":{}}}}}}}},"配":{"docs":{},"置":{"docs":{},"文":{"docs":{},"件":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}},"l":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{},"e":{"docs":{},"r":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852},"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.00709849157054126}},"容":{"docs":{},"错":{"docs":{},"流":{"docs":{},"程":{"docs":{},"图":{"docs":{},":":{"docs":{"pages/guide-architecture.html":{"ref":"pages/guide-architecture.html","tf":0.013513513513513514}}}}}}}},"的":{"docs":{},"角":{"docs":{},"色":{"docs":{},"主":{"docs":{},"要":{"docs":{},"负":{"docs":{},"责":{"docs":{},"任":{"docs":{},"务":{"docs":{},"的":{"docs":{},"执":{"docs":{},"行":{"docs":{},"工":{"docs":{},"作":{"docs":{},"并":{"docs":{},"维":{"docs":{},"护":{"docs":{},"和":{"docs":{},"m":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"的":{"docs":{},"心":{"docs":{},"跳":{"docs":{},",":{"docs":{},"以":{"docs":{},"便":{"docs":{},"m":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"可":{"docs":{},"以":{"docs":{},"分":{"docs":{},"配":{"docs":{},"任":{"docs":{},"务":{"docs":{},"给":{"docs":{},"s":{"docs":{},"l":{"docs":{},"a":{"docs":{},"v":{"docs":{},"e":{"docs":{},"。":{"docs":{"pages/guide-architecture.html":{"ref":"pages/guide-architecture.html","tf":0.013513513513513514}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},".":{"docs":{},"%":{"docs":{},"d":{"docs":{},"{":{"docs":{},"y":{"docs":{},"y":{"docs":{},"y":{"docs":{},"i":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}},"e":{"docs":{},"x":{"docs":{},"e":{"docs":{},"c":{"docs":{},".":{"docs":{},"t":{"docs":{},"h":{"docs":{},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"d":{"docs":{},"s":{"docs":{},"=":{"1":{"0":{"0":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}},"docs":{}},"docs":{}},"docs":{}}}}}}}}}}}}}},"f":{"docs":{},"e":{"docs":{},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{},".":{"docs":{},"t":{"docs":{},"a":{"docs":{},"s":{"docs":{},"k":{"docs":{},".":{"docs":{},"n":{"docs":{},"u":{"docs":{},"m":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}},"h":{"docs":{},"e":{"docs":{},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{},"b":{"docs":{},"e":{"docs":{},"a":{"docs":{},"t":{"docs":{},".":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"=":{"8":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}},"docs":{}}}}}}}}}}}}}}}}}}}},"l":{"docs":{},"o":{"docs":{},"g":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}},"m":{"docs":{},"a":{"docs":{},"x":{"docs":{},".":{"docs":{},"c":{"docs":{},"p":{"docs":{},"u":{"docs":{},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{},".":{"docs":{},"a":{"docs":{},"v":{"docs":{},"g":{"docs":{},"=":{"1":{"0":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}},"docs":{}},"docs":{}}}}}}}}}}}}}}}}},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"t":{"docs":{},"i":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"e":{"docs":{},"d":{"docs":{},".":{"docs":{},"m":{"docs":{},"e":{"docs":{},"m":{"docs":{},"o":{"docs":{},"r":{"docs":{},"y":{"docs":{},"=":{"1":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}},"docs":{}}}}}}}}}}}}}}}}}},"_":{"docs":{},"l":{"docs":{},"o":{"docs":{},"g":{"docs":{},"b":{"docs":{},"a":{"docs":{},"c":{"docs":{},"k":{"docs":{},".":{"docs":{},"x":{"docs":{},"m":{"docs":{},"l":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}},"s":{"docs":{},"=":{"docs":{},"a":{"docs":{},"r":{"docs":{},"k":{"2":{"docs":{},",":{"docs":{},"a":{"docs":{},"r":{"docs":{},"k":{"3":{"docs":{},",":{"docs":{},"a":{"docs":{},"r":{"docs":{},"k":{"4":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}},"docs":{}}}}}},"docs":{}}}}}},"docs":{}}}}}},"日":{"docs":{},"志":{"docs":{},"文":{"docs":{},"件":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}},"服":{"docs":{},"务":{"docs":{},"所":{"docs":{},"在":{"docs":{},"机":{"docs":{},"器":{"docs":{},",":{"docs":{},">":{"docs":{},"=":{"1":{"docs":{},"个":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}},"docs":{}}}}}}}}}},"都":{"docs":{},"是":{"docs":{},"以":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}},"配":{"docs":{},"置":{"docs":{},"文":{"docs":{},"件":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}},".":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.00354924578527063}}}}}},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}},"a":{"docs":{},"i":{"docs":{},"t":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}}}}},"r":{"docs":{},"i":{"docs":{},"t":{"docs":{},"e":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.006211180124223602}}}}}}},"z":{"docs":{},"o":{"docs":{},"o":{"docs":{},"k":{"docs":{},"e":{"docs":{},"e":{"docs":{},"p":{"docs":{"pages/guide-architecture.html":{"ref":"pages/guide-architecture.html","tf":0.013513513513513514},"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}},"e":{"docs":{},"r":{"docs":{},"方":{"docs":{},"式":{"docs":{},"连":{"docs":{},"接":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"n":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},".":{"docs":{},"t":{"docs":{},"i":{"docs":{},"m":{"docs":{},"e":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{},"=":{"3":{"0":{"0":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}},"docs":{}},"docs":{}},"docs":{}}}}}}}}}}}}}}}}}}}},"e":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},".":{"docs":{},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{},"k":{"docs":{},".":{"docs":{},"m":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},".":{"docs":{},"f":{"docs":{},"a":{"docs":{},"i":{"docs":{},"l":{"docs":{},"o":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"=":{"docs":{},"/":{"docs":{},"e":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"/":{"docs":{},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{},"k":{"docs":{},"/":{"docs":{},"f":{"docs":{},"a":{"docs":{},"i":{"docs":{},"l":{"docs":{},"o":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"/":{"docs":{},"m":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"=":{"docs":{},"/":{"docs":{},"e":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"/":{"docs":{},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{},"k":{"docs":{},"/":{"docs":{},"m":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"w":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{},"e":{"docs":{},"r":{"docs":{},".":{"docs":{},"f":{"docs":{},"a":{"docs":{},"i":{"docs":{},"l":{"docs":{},"o":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"=":{"docs":{},"/":{"docs":{},"e":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"/":{"docs":{},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{},"k":{"docs":{},"/":{"docs":{},"f":{"docs":{},"a":{"docs":{},"i":{"docs":{},"l":{"docs":{},"o":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"/":{"docs":{},"w":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"=":{"docs":{},"/":{"docs":{},"e":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"/":{"docs":{},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{},"k":{"docs":{},"/":{"docs":{},"w":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"m":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"=":{"docs":{},"/":{"docs":{},"e":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"/":{"docs":{},"m":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}}}}}}}}}}},"r":{"docs":{},"o":{"docs":{},"o":{"docs":{},"t":{"docs":{},"=":{"docs":{},"/":{"docs":{},"e":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}},"w":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{},"e":{"docs":{},"r":{"docs":{},"=":{"docs":{},"/":{"docs":{},"e":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"/":{"docs":{},"w":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"t":{"docs":{},"i":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}},"q":{"docs":{},"u":{"docs":{},"o":{"docs":{},"r":{"docs":{},"u":{"docs":{},"m":{"docs":{},"=":{"docs":{},"$":{"docs":{},"{":{"docs":{},"i":{"docs":{},"p":{"1":{"docs":{},"}":{"docs":{},":":{"2":{"1":{"8":{"1":{"docs":{},",":{"docs":{},"$":{"docs":{},"{":{"docs":{},"i":{"docs":{},"p":{"2":{"docs":{},"}":{"docs":{},":":{"2":{"1":{"8":{"1":{"docs":{},",":{"docs":{},"$":{"docs":{},"{":{"docs":{},"i":{"docs":{},"p":{"3":{"docs":{},"}":{"docs":{},":":{"2":{"1":{"8":{"1":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}}},"docs":{}}}}}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}}},"docs":{}}}}}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}}},"docs":{}}}}}}}}}}}},"r":{"docs":{},"e":{"docs":{},"t":{"docs":{},"r":{"docs":{},"y":{"docs":{},".":{"docs":{},"m":{"docs":{},"a":{"docs":{},"x":{"docs":{},"t":{"docs":{},"i":{"docs":{},"m":{"docs":{},"e":{"docs":{},"=":{"5":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}},"docs":{}}}}}}}}},"s":{"docs":{},"l":{"docs":{},"e":{"docs":{},"e":{"docs":{},"p":{"docs":{},"=":{"1":{"0":{"0":{"0":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}}}}}}}}}}}},"s":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},".":{"docs":{},"t":{"docs":{},"i":{"docs":{},"m":{"docs":{},"e":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{},"=":{"3":{"0":{"0":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}},"docs":{}},"docs":{}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}},"i":{"docs":{},"l":{"docs":{},"b":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}},"一":{"docs":{},"旦":{"docs":{},"m":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"出":{"docs":{},"现":{"docs":{},"了":{"docs":{},"问":{"docs":{},"题":{"docs":{},",":{"docs":{},"则":{"docs":{},"群":{"docs":{},"龙":{"docs":{},"无":{"docs":{},"首":{"docs":{},",":{"docs":{},"整":{"docs":{},"个":{"docs":{},"集":{"docs":{},"群":{"docs":{},"就":{"docs":{},"崩":{"docs":{},"溃":{"docs":{},"。":{"docs":{},"为":{"docs":{},"了":{"docs":{},"解":{"docs":{},"决":{"docs":{},"这":{"docs":{},"个":{"docs":{},"问":{"docs":{},"题":{"docs":{},",":{"docs":{},"大":{"docs":{},"多":{"docs":{},"数":{"docs":{},"m":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"/":{"docs":{},"s":{"docs":{},"l":{"docs":{},"a":{"docs":{},"v":{"docs":{},"e":{"docs":{},"架":{"docs":{},"构":{"docs":{},"模":{"docs":{},"式":{"docs":{},"都":{"docs":{},"采":{"docs":{},"用":{"docs":{},"了":{"docs":{},"主":{"docs":{},"备":{"docs":{},"m":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"的":{"docs":{},"设":{"docs":{},"计":{"docs":{},"方":{"docs":{},"案":{"docs":{},",":{"docs":{},"可":{"docs":{},"以":{"docs":{},"是":{"docs":{},"热":{"docs":{},"备":{"docs":{},"或":{"docs":{},"者":{"docs":{},"冷":{"docs":{},"备":{"docs":{},",":{"docs":{},"也":{"docs":{},"可":{"docs":{},"以":{"docs":{},"是":{"docs":{},"自":{"docs":{},"动":{"docs":{},"切":{"docs":{},"换":{"docs":{},"或":{"docs":{},"手":{"docs":{},"动":{"docs":{},"切":{"docs":{},"换":{"docs":{},",":{"docs":{},"而":{"docs":{},"且":{"docs":{},"越":{"docs":{},"来":{"docs":{},"越":{"docs":{},"多":{"docs":{},"的":{"docs":{},"新":{"docs":{},"系":{"docs":{},"统":{"docs":{},"都":{"docs":{},"开":{"docs":{},"始":{"docs":{},"具":{"docs":{},"备":{"docs":{},"自":{"docs":{},"动":{"docs":{},"选":{"docs":{},"举":{"docs":{},"切":{"docs":{},"换":{"docs":{},"m":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"的":{"docs":{},"能":{"docs":{},"力":{"docs":{},",":{"docs":{},"以":{"docs":{},"提":{"docs":{},"升":{"docs":{},"系":{"docs":{},"统":{"docs":{},"的":{"docs":{},"可":{"docs":{},"用":{"docs":{},"性":{"docs":{},"。":{"docs":{"pages/guide-architecture.html":{"ref":"pages/guide-architecture.html","tf":0.013513513513513514}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"个":{"docs":{},"流":{"docs":{},"程":{"docs":{},"定":{"docs":{},"义":{"docs":{},"可":{"docs":{},"以":{"docs":{},"添":{"docs":{},"加":{"1":{"docs":{},"个":{"docs":{},"定":{"docs":{},"时":{"docs":{},",":{"docs":{},"定":{"docs":{},"时":{"docs":{},"管":{"docs":{},"理":{"docs":{},"是":{"docs":{},"对":{"docs":{},"一":{"docs":{},"个":{"docs":{},"流":{"docs":{},"程":{"docs":{},"定":{"docs":{},"义":{"docs":{},"上":{"docs":{},"的":{"docs":{},"定":{"docs":{},"时":{"docs":{},"的":{"docs":{},"修":{"docs":{},"改":{"docs":{},",":{"docs":{},"只":{"docs":{},"有":{"docs":{},"上":{"docs":{},"线":{"docs":{},"的":{"docs":{},"定":{"docs":{},"时":{"docs":{},"才":{"docs":{},"是":{"docs":{},"有":{"docs":{},"效":{"docs":{},"的":{"docs":{},"定":{"docs":{},"时":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}}}}}}}}}},"行":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}}},"键":{"docs":{},"启":{"docs":{},"停":{"docs":{},"脚":{"docs":{},"本":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}},"中":{"docs":{},"心":{"docs":{},"化":{"docs":{},"思":{"docs":{},"想":{"docs":{"pages/guide-architecture.html":{"ref":"pages/guide-architecture.html","tf":0.013513513513513514}},"设":{"docs":{},"计":{"docs":{},"存":{"docs":{},"在":{"docs":{},"的":{"docs":{},"问":{"docs":{},"题":{"docs":{},":":{"docs":{"pages/guide-architecture.html":{"ref":"pages/guide-architecture.html","tf":0.013513513513513514}}}}}}}}}}}},"的":{"docs":{},"设":{"docs":{},"计":{"docs":{},"理":{"docs":{},"念":{"docs":{},"比":{"docs":{},"较":{"docs":{},"简":{"docs":{},"单":{"docs":{},",":{"docs":{},"分":{"docs":{},"布":{"docs":{},"式":{"docs":{},"集":{"docs":{},"群":{"docs":{},"中":{"docs":{},"的":{"docs":{},"节":{"docs":{},"点":{"docs":{},"按":{"docs":{},"照":{"docs":{},"角":{"docs":{},"色":{"docs":{},"分":{"docs":{},"工":{"docs":{},",":{"docs":{},"大":{"docs":{},"体":{"docs":{},"上":{"docs":{},"分":{"docs":{},"为":{"docs":{},"两":{"docs":{},"种":{"docs":{},"角":{"docs":{},"色":{"docs":{},":":{"docs":{"pages/guide-architecture.html":{"ref":"pages/guide-architecture.html","tf":0.013513513513513514}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"点":{"docs":{},"击":{"docs":{},"右":{"docs":{},"上":{"docs":{},"角":{"docs":{},"下":{"docs":{},"载":{"docs":{},"按":{"docs":{},"钮":{"docs":{},"下":{"docs":{},"载":{"docs":{},"文":{"docs":{},"件":{"docs":{},",":{"docs":{},"或":{"docs":{},"者":{"docs":{},"在":{"docs":{},"文":{"docs":{},"件":{"docs":{},"列":{"docs":{},"表":{"docs":{},"后":{"docs":{},"的":{"docs":{},"下":{"docs":{},"载":{"docs":{},"按":{"docs":{},"钮":{"docs":{},"下":{"docs":{},"载":{"docs":{},"文":{"docs":{},"件":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"设":{"docs":{},"置":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}},"于":{"docs":{},"是":{"docs":{},"我":{"docs":{},"们":{"docs":{},"选":{"docs":{},"择":{"docs":{},"了":{"docs":{},"第":{"docs":{},"三":{"docs":{},"种":{"docs":{},"方":{"docs":{},"式":{"docs":{},"来":{"docs":{},"解":{"docs":{},"决":{"docs":{},"线":{"docs":{},"程":{"docs":{},"不":{"docs":{},"足":{"docs":{},"的":{"docs":{},"问":{"docs":{},"题":{"docs":{},"。":{"docs":{"pages/guide-architecture.html":{"ref":"pages/guide-architecture.html","tf":0.013513513513513514}}}}}}}}}}}}}}}}}}}}}}}}},"介":{"docs":{},"于":{"docs":{},"考":{"docs":{},"虑":{"docs":{},"到":{"docs":{},"尽":{"docs":{},"可":{"docs":{},"能":{"docs":{},"的":{"docs":{},"e":{"docs":{},"a":{"docs":{},"s":{"docs":{},"y":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"的":{"docs":{},"轻":{"docs":{},"量":{"docs":{},"级":{"docs":{},"性":{"docs":{},",":{"docs":{},"所":{"docs":{},"以":{"docs":{},"选":{"docs":{},"择":{"docs":{},"了":{"docs":{},"g":{"docs":{},"r":{"docs":{},"p":{"docs":{},"c":{"docs":{},"实":{"docs":{},"现":{"docs":{},"远":{"docs":{},"程":{"docs":{},"访":{"docs":{},"问":{"docs":{},"日":{"docs":{},"志":{"docs":{},"信":{"docs":{},"息":{"docs":{},"。":{"docs":{"pages/guide-architecture.html":{"ref":"pages/guide-architecture.html","tf":0.013513513513513514}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"以":{"docs":{},"…":{"docs":{},"/":{"docs":{},"流":{"docs":{},"程":{"docs":{},"定":{"docs":{},"义":{"docs":{},"i":{"docs":{},"d":{"docs":{},"/":{"docs":{},"流":{"docs":{},"程":{"docs":{},"实":{"docs":{},"例":{"docs":{},"i":{"docs":{},"d":{"docs":{},"/":{"docs":{},"任":{"docs":{},"务":{"docs":{},"实":{"docs":{},"例":{"docs":{},"i":{"docs":{},"d":{"docs":{},".":{"docs":{},"l":{"docs":{},"o":{"docs":{},"g":{"docs":{},"的":{"docs":{},"形":{"docs":{},"式":{"docs":{},"生":{"docs":{},"成":{"docs":{},"日":{"docs":{},"志":{"docs":{},"。":{"docs":{"pages/guide-architecture.html":{"ref":"pages/guide-architecture.html","tf":0.013513513513513514}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"下":{"docs":{},"将":{"docs":{},"详":{"docs":{},"细":{"docs":{},"介":{"docs":{},"绍":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"的":{"docs":{},"设":{"docs":{},"计":{"docs":{},"思":{"docs":{},"想":{"docs":{},"和":{"docs":{},"遇":{"docs":{},"到":{"docs":{},"的":{"docs":{},"问":{"docs":{},"题":{"docs":{"pages/guide-architecture.html":{"ref":"pages/guide-architecture.html","tf":0.013513513513513514}}}}}}}}}}}}}}}}}}}}}}}}}},"使":{"docs":{},"用":{"docs":{},"易":{"docs":{},"观":{"docs":{},"封":{"docs":{},"装":{"docs":{},"的":{"docs":{},"v":{"docs":{},"u":{"docs":{},"e":{"docs":{},"及":{"docs":{},"j":{"docs":{},"s":{"docs":{},"p":{"docs":{},"l":{"docs":{},"u":{"docs":{},"m":{"docs":{},"b":{"docs":{},"组":{"docs":{},"件":{"docs":{},"开":{"docs":{},"发":{"docs":{"pages/guide-architecture.html":{"ref":"pages/guide-architecture.html","tf":0.013513513513513514}}}}}}}}}}}}}}}}}}}}}},"手":{"docs":{},"册":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":10.001851851851852}}}},"说":{"docs":{},"明":{"docs":{},":":{"docs":{},"输":{"docs":{},"入":{"docs":{},"描":{"docs":{},"述":{"docs":{},"u":{"docs":{},"d":{"docs":{},"f":{"docs":{},"函":{"docs":{},"数":{"docs":{},"的":{"docs":{},"使":{"docs":{},"用":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}},"分":{"docs":{},"布":{"docs":{},"式":{"docs":{},"锁":{"docs":{},"实":{"docs":{},"践":{"docs":{"pages/guide-architecture.html":{"ref":"pages/guide-architecture.html","tf":0.013513513513513514}}}}}}},"别":{"docs":{},"是":{"docs":{},"拖":{"docs":{},"动":{"docs":{},"节":{"docs":{},"点":{"docs":{},"和":{"docs":{},"选":{"docs":{},"中":{"docs":{},"项":{"docs":{},"、":{"docs":{},"选":{"docs":{},"择":{"docs":{},"线":{"docs":{},"条":{"docs":{},"连":{"docs":{},"线":{"docs":{},"、":{"docs":{},"删":{"docs":{},"除":{"docs":{},"选":{"docs":{},"中":{"docs":{},"的":{"docs":{},"线":{"docs":{},"或":{"docs":{},"节":{"docs":{},"点":{"docs":{},"、":{"docs":{},"全":{"docs":{},"屏":{"docs":{},"和":{"docs":{},"流":{"docs":{},"程":{"docs":{},"定":{"docs":{},"义":{"docs":{},"保":{"docs":{},"持":{"docs":{},",":{"docs":{},"其":{"docs":{},"主":{"docs":{},"要":{"docs":{},"功":{"docs":{},"能":{"docs":{},"是":{"docs":{},"d":{"docs":{},"a":{"docs":{},"g":{"docs":{},"的":{"docs":{},"绘":{"docs":{},"制":{"docs":{},"所":{"docs":{},"用":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"钟":{"docs":{},":":{"docs":{},"$":{"docs":{},"[":{"docs":{},"h":{"docs":{},"h":{"docs":{},"m":{"docs":{},"m":{"docs":{},"s":{"docs":{},"s":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}},"+":{"docs":{},"n":{"docs":{},"/":{"2":{"4":{"docs":{},"/":{"6":{"0":{"docs":{},"]":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}},"docs":{}},"docs":{}}},"docs":{}},"docs":{}}}}}}}}}}}}}}},"则":{"docs":{},"会":{"docs":{},"产":{"docs":{},"生":{"docs":{},"“":{"docs":{},"死":{"docs":{},"等":{"docs":{},"”":{"docs":{},"状":{"docs":{},"态":{"docs":{},"。":{"docs":{},"m":{"docs":{},"a":{"docs":{},"i":{"docs":{},"n":{"docs":{},"f":{"docs":{},"l":{"docs":{},"o":{"docs":{},"w":{"docs":{},"t":{"docs":{},"h":{"docs":{},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"d":{"docs":{},"等":{"docs":{},"待":{"docs":{},"s":{"docs":{},"u":{"docs":{},"b":{"docs":{},"f":{"docs":{},"l":{"docs":{},"o":{"docs":{},"w":{"docs":{},"t":{"docs":{},"h":{"docs":{},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"d":{"1":{"docs":{},"结":{"docs":{},"束":{"docs":{},",":{"docs":{},"s":{"docs":{},"u":{"docs":{},"b":{"docs":{},"f":{"docs":{},"l":{"docs":{},"o":{"docs":{},"w":{"docs":{},"t":{"docs":{},"h":{"docs":{},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"d":{"1":{"docs":{},"等":{"docs":{},"待":{"docs":{},"s":{"docs":{},"u":{"docs":{},"b":{"docs":{},"f":{"docs":{},"l":{"docs":{},"o":{"docs":{},"w":{"docs":{},"t":{"docs":{},"h":{"docs":{},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"d":{"2":{"docs":{},"结":{"docs":{},"束":{"docs":{},",":{"docs":{},"s":{"docs":{},"u":{"docs":{},"b":{"docs":{},"f":{"docs":{},"l":{"docs":{},"o":{"docs":{},"w":{"docs":{},"t":{"docs":{},"h":{"docs":{},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"d":{"2":{"docs":{},"等":{"docs":{},"待":{"docs":{},"s":{"docs":{},"u":{"docs":{},"b":{"docs":{},"f":{"docs":{},"l":{"docs":{},"o":{"docs":{},"w":{"docs":{},"t":{"docs":{},"h":{"docs":{},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"d":{"3":{"docs":{},"结":{"docs":{},"束":{"docs":{},",":{"docs":{},"而":{"docs":{},"s":{"docs":{},"u":{"docs":{},"b":{"docs":{},"f":{"docs":{},"l":{"docs":{},"o":{"docs":{},"w":{"docs":{},"t":{"docs":{},"h":{"docs":{},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"d":{"3":{"docs":{},"等":{"docs":{},"待":{"docs":{},"线":{"docs":{},"程":{"docs":{},"池":{"docs":{},"有":{"docs":{},"新":{"docs":{},"线":{"docs":{},"程":{"docs":{},",":{"docs":{},"则":{"docs":{},"整":{"docs":{},"个":{"docs":{},"d":{"docs":{},"a":{"docs":{},"g":{"docs":{},"流":{"docs":{},"程":{"docs":{},"不":{"docs":{},"能":{"docs":{},"结":{"docs":{},"束":{"docs":{},",":{"docs":{},"从":{"docs":{},"而":{"docs":{},"其":{"docs":{},"中":{"docs":{},"的":{"docs":{},"线":{"docs":{},"程":{"docs":{},"也":{"docs":{},"不":{"docs":{},"能":{"docs":{},"释":{"docs":{},"放":{"docs":{},"。":{"docs":{"pages/guide-architecture.html":{"ref":"pages/guide-architecture.html","tf":0.013513513513513514}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}}}}}}}}}}}}}}}}}}},"docs":{}}}}}}}}}}}}}}}}},"docs":{}}}}}}}}}}}}}}}}}},"docs":{}}}}}}}}}}}}}}}}},"docs":{}}}}}}}}}}}}}}}}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"去":{"docs":{},"中":{"docs":{},"心":{"docs":{},"化":{"docs":{"pages/guide-architecture.html":{"ref":"pages/guide-architecture.html","tf":0.013513513513513514}},"v":{"docs":{},"s":{"docs":{},"中":{"docs":{},"心":{"docs":{},"化":{"docs":{"pages/guide-architecture.html":{"ref":"pages/guide-architecture.html","tf":0.013513513513513514}}}}}}},"设":{"docs":{},"计":{"docs":{},"的":{"docs":{},"核":{"docs":{},"心":{"docs":{},"设":{"docs":{},"计":{"docs":{},"在":{"docs":{},"于":{"docs":{},"整":{"docs":{},"个":{"docs":{},"分":{"docs":{},"布":{"docs":{},"式":{"docs":{},"系":{"docs":{},"统":{"docs":{},"中":{"docs":{},"不":{"docs":{},"存":{"docs":{},"在":{"docs":{},"一":{"docs":{},"个":{"docs":{},"区":{"docs":{},"别":{"docs":{},"于":{"docs":{},"其":{"docs":{},"他":{"docs":{},"节":{"docs":{},"点":{"docs":{},"的":{"docs":{},"”":{"docs":{},"管":{"docs":{},"理":{"docs":{},"者":{"docs":{},"”":{"docs":{},",":{"docs":{},"因":{"docs":{},"此":{"docs":{},"不":{"docs":{},"存":{"docs":{},"在":{"docs":{},"单":{"docs":{},"点":{"docs":{},"故":{"docs":{},"障":{"docs":{},"问":{"docs":{},"题":{"docs":{},"。":{"docs":{},"但":{"docs":{},"由":{"docs":{},"于":{"docs":{},"不":{"docs":{},"存":{"docs":{},"在":{"docs":{},"”":{"docs":{"pages/guide-architecture.html":{"ref":"pages/guide-architecture.html","tf":0.013513513513513514}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"里":{"docs":{},",":{"docs":{},"通":{"docs":{},"常":{"docs":{},"没":{"docs":{},"有":{"docs":{},"m":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"/":{"docs":{},"s":{"docs":{},"l":{"docs":{},"a":{"docs":{},"v":{"docs":{},"e":{"docs":{},"的":{"docs":{},"概":{"docs":{},"念":{"docs":{},",":{"docs":{},"所":{"docs":{},"有":{"docs":{},"的":{"docs":{},"角":{"docs":{},"色":{"docs":{},"都":{"docs":{},"是":{"docs":{},"一":{"docs":{},"样":{"docs":{},"的":{"docs":{},",":{"docs":{},"地":{"docs":{},"位":{"docs":{},"是":{"docs":{},"平":{"docs":{},"等":{"docs":{},"的":{"docs":{},",":{"docs":{},"全":{"docs":{},"球":{"docs":{},"互":{"docs":{},"联":{"docs":{},"网":{"docs":{},"就":{"docs":{},"是":{"docs":{},"一":{"docs":{},"个":{"docs":{},"典":{"docs":{},"型":{"docs":{},"的":{"docs":{},"去":{"docs":{},"中":{"docs":{},"心":{"docs":{},"化":{"docs":{},"的":{"docs":{},"分":{"docs":{},"布":{"docs":{},"式":{"docs":{},"系":{"docs":{},"统":{"docs":{},",":{"docs":{},"联":{"docs":{},"网":{"docs":{},"的":{"docs":{},"任":{"docs":{},"意":{"docs":{},"节":{"docs":{},"点":{"docs":{},"设":{"docs":{},"备":{"docs":{},"d":{"docs":{},"o":{"docs":{},"w":{"docs":{},"n":{"docs":{},"机":{"docs":{},",":{"docs":{},"都":{"docs":{},"只":{"docs":{},"会":{"docs":{},"影":{"docs":{},"响":{"docs":{},"很":{"docs":{},"小":{"docs":{},"范":{"docs":{},"围":{"docs":{},"的":{"docs":{},"功":{"docs":{},"能":{"docs":{},"。":{"docs":{"pages/guide-architecture.html":{"ref":"pages/guide-architecture.html","tf":0.013513513513513514}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"另":{"docs":{},"外":{"docs":{},"一":{"docs":{},"个":{"docs":{},"问":{"docs":{},"题":{"docs":{},"是":{"docs":{},"如":{"docs":{},"果":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"在":{"docs":{},"m":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"上":{"docs":{},",":{"docs":{},"虽":{"docs":{},"然":{"docs":{},"可":{"docs":{},"以":{"docs":{},"支":{"docs":{},"持":{"docs":{},"一":{"docs":{},"个":{"docs":{},"d":{"docs":{},"a":{"docs":{},"g":{"docs":{},"中":{"docs":{},"不":{"docs":{},"同":{"docs":{},"的":{"docs":{},"任":{"docs":{},"务":{"docs":{},"运":{"docs":{},"行":{"docs":{},"在":{"docs":{},"不":{"docs":{},"同":{"docs":{},"的":{"docs":{},"机":{"docs":{},"器":{"docs":{},"上":{"docs":{},",":{"docs":{},"但":{"docs":{},"是":{"docs":{},"会":{"docs":{},"产":{"docs":{},"生":{"docs":{},"m":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"的":{"docs":{},"过":{"docs":{},"负":{"docs":{},"载":{"docs":{},"。":{"docs":{},"如":{"docs":{},"果":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"在":{"docs":{},"s":{"docs":{},"l":{"docs":{},"a":{"docs":{},"v":{"docs":{},"e":{"docs":{},"上":{"docs":{},",":{"docs":{},"则":{"docs":{},"一":{"docs":{},"个":{"docs":{},"d":{"docs":{},"a":{"docs":{},"g":{"docs":{},"中":{"docs":{},"所":{"docs":{},"有":{"docs":{},"的":{"docs":{},"任":{"docs":{},"务":{"docs":{},"都":{"docs":{},"只":{"docs":{},"能":{"docs":{},"在":{"docs":{},"某":{"docs":{},"一":{"docs":{},"台":{"docs":{},"机":{"docs":{},"器":{"docs":{},"上":{"docs":{},"进":{"docs":{},"行":{"docs":{},"作":{"docs":{},"业":{"docs":{},"提":{"docs":{},"交":{"docs":{},",":{"docs":{},"则":{"docs":{},"并":{"docs":{},"行":{"docs":{},"任":{"docs":{},"务":{"docs":{},"比":{"docs":{},"较":{"docs":{},"多":{"docs":{},"的":{"docs":{},"时":{"docs":{},"候":{"docs":{},",":{"docs":{},"s":{"docs":{},"l":{"docs":{},"a":{"docs":{},"v":{"docs":{},"e":{"docs":{},"的":{"docs":{},"压":{"docs":{},"力":{"docs":{},"可":{"docs":{},"能":{"docs":{},"会":{"docs":{},"比":{"docs":{},"较":{"docs":{},"大":{"docs":{},"。":{"docs":{"pages/guide-architecture.html":{"ref":"pages/guide-architecture.html","tf":0.013513513513513514}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"增":{"docs":{},"加":{"docs":{},"一":{"docs":{},"种":{"docs":{},"资":{"docs":{},"源":{"docs":{},"不":{"docs":{},"足":{"docs":{},"的":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"m":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{},"类":{"docs":{},"型":{"docs":{},",":{"docs":{},"如":{"docs":{},"果":{"docs":{},"线":{"docs":{},"程":{"docs":{},"池":{"docs":{},"不":{"docs":{},"足":{"docs":{},",":{"docs":{},"则":{"docs":{},"将":{"docs":{},"主":{"docs":{},"流":{"docs":{},"程":{"docs":{},"挂":{"docs":{},"起":{"docs":{},"。":{"docs":{},"这":{"docs":{},"样":{"docs":{},"线":{"docs":{},"程":{"docs":{},"池":{"docs":{},"就":{"docs":{},"有":{"docs":{},"了":{"docs":{},"新":{"docs":{},"的":{"docs":{},"线":{"docs":{},"程":{"docs":{},",":{"docs":{},"可":{"docs":{},"以":{"docs":{},"让":{"docs":{},"资":{"docs":{},"源":{"docs":{},"不":{"docs":{},"足":{"docs":{},"挂":{"docs":{},"起":{"docs":{},"的":{"docs":{},"流":{"docs":{},"程":{"docs":{},"重":{"docs":{},"新":{"docs":{},"唤":{"docs":{},"醒":{"docs":{},"执":{"docs":{},"行":{"docs":{},"。":{"docs":{"pages/guide-architecture.html":{"ref":"pages/guide-architecture.html","tf":0.013513513513513514}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"如":{"docs":{},"果":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}},"一":{"docs":{},"个":{"docs":{},"d":{"docs":{},"a":{"docs":{},"g":{"docs":{},"中":{"docs":{},"没":{"docs":{},"有":{"docs":{},"子":{"docs":{},"流":{"docs":{},"程":{"docs":{},",":{"docs":{},"则":{"docs":{},"如":{"docs":{},"果":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"m":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{},"中":{"docs":{},"的":{"docs":{},"数":{"docs":{},"据":{"docs":{},"条":{"docs":{},"数":{"docs":{},"大":{"docs":{},"于":{"docs":{},"线":{"docs":{},"程":{"docs":{},"池":{"docs":{},"设":{"docs":{},"置":{"docs":{},"的":{"docs":{},"阈":{"docs":{},"值":{"docs":{},",":{"docs":{},"则":{"docs":{},"直":{"docs":{},"接":{"docs":{},"流":{"docs":{},"程":{"docs":{},"等":{"docs":{},"待":{"docs":{},"或":{"docs":{},"失":{"docs":{},"败":{"docs":{},"。":{"docs":{"pages/guide-architecture.html":{"ref":"pages/guide-architecture.html","tf":0.013513513513513514}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"大":{"docs":{},"的":{"docs":{},"d":{"docs":{},"a":{"docs":{},"g":{"docs":{},"中":{"docs":{},"嵌":{"docs":{},"套":{"docs":{},"了":{"docs":{},"很":{"docs":{},"多":{"docs":{},"子":{"docs":{},"流":{"docs":{},"程":{"docs":{},",":{"docs":{},"如":{"docs":{},"下":{"docs":{},"图":{"docs":{},":":{"docs":{"pages/guide-architecture.html":{"ref":"pages/guide-architecture.html","tf":0.013513513513513514}}}}}}}}}}}}}}}}}}}}}}},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"c":{"docs":{},"k":{"docs":{},"b":{"docs":{},"o":{"docs":{},"x":{"docs":{},"勾":{"docs":{},"选":{"docs":{},",":{"docs":{},"表":{"docs":{},"示":{"docs":{},"流":{"docs":{},"程":{"docs":{},"实":{"docs":{},"例":{"docs":{},"的":{"docs":{},"修":{"docs":{},"改":{"docs":{},"会":{"docs":{},"更":{"docs":{},"新":{"docs":{},"流":{"docs":{},"程":{"docs":{},"定":{"docs":{},"义":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"不":{"docs":{},"勾":{"docs":{},"选":{"docs":{},",":{"docs":{},"表":{"docs":{},"示":{"docs":{},"只":{"docs":{},"编":{"docs":{},"辑":{"docs":{},"本":{"docs":{},"次":{"docs":{},"流":{"docs":{},"程":{"docs":{},"实":{"docs":{},"例":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}},"其":{"docs":{},"他":{"docs":{},"参":{"docs":{},"数":{"docs":{},"中":{"docs":{},"引":{"docs":{},"用":{"docs":{},"了":{"docs":{},"资":{"docs":{},"源":{"docs":{},"文":{"docs":{},"件":{"docs":{},",":{"docs":{},"需":{"docs":{},"要":{"docs":{},"在":{"docs":{},"资":{"docs":{},"源":{"docs":{},"中":{"docs":{},"选":{"docs":{},"择":{"docs":{},"指":{"docs":{},"定":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.003703703703703704}}}}}}}}}}}}}}}}}}}}}}}}},"您":{"docs":{},"需":{"docs":{},"要":{"docs":{},"用":{"docs":{},"i":{"docs":{},"p":{"docs":{},"访":{"docs":{},"问":{"docs":{},"项":{"docs":{},"目":{"docs":{},"可":{"docs":{},"以":{"docs":{},"把":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}}}}}}}},"需":{"docs":{},"要":{"docs":{},"使":{"docs":{},"用":{"docs":{},"到":{"docs":{},"e":{"docs":{},"a":{"docs":{},"s":{"docs":{},"y":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"的":{"docs":{},"资":{"docs":{},"源":{"docs":{},"上":{"docs":{},"传":{"docs":{},",":{"docs":{},"m":{"docs":{},"a":{"docs":{},"p":{"docs":{},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"c":{"docs":{},"e":{"docs":{},"任":{"docs":{},"务":{"docs":{},"在":{"docs":{},"线":{"docs":{},"提":{"docs":{},"交":{"docs":{},"则":{"docs":{},"需":{"docs":{},"要":{"docs":{},"安":{"docs":{},"装":{"docs":{},"(":{"docs":{},"上":{"docs":{},"传":{"docs":{},"的":{"docs":{},"资":{"docs":{},"源":{"docs":{},"文":{"docs":{},"件":{"docs":{},"目":{"docs":{},"前":{"docs":{},"保":{"docs":{},"存":{"docs":{},"在":{"docs":{},"h":{"docs":{},"d":{"docs":{},"f":{"docs":{},"s":{"docs":{},"上":{"docs":{},")":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"实":{"docs":{},"际":{"docs":{},"上":{"docs":{},",":{"docs":{},"真":{"docs":{},"正":{"docs":{},"去":{"docs":{},"中":{"docs":{},"心":{"docs":{},"化":{"docs":{},"的":{"docs":{},"分":{"docs":{},"布":{"docs":{},"式":{"docs":{},"系":{"docs":{},"统":{"docs":{},"并":{"docs":{},"不":{"docs":{},"多":{"docs":{},"见":{"docs":{},"。":{"docs":{},"反":{"docs":{},"而":{"docs":{},"动":{"docs":{},"态":{"docs":{},"中":{"docs":{},"心":{"docs":{},"化":{"docs":{},"分":{"docs":{},"布":{"docs":{},"式":{"docs":{},"系":{"docs":{},"统":{"docs":{},"正":{"docs":{},"在":{"docs":{},"不":{"docs":{},"断":{"docs":{},"涌":{"docs":{},"出":{"docs":{},"。":{"docs":{},"在":{"docs":{},"这":{"docs":{},"种":{"docs":{},"架":{"docs":{},"构":{"docs":{},"下":{"docs":{},",":{"docs":{},"集":{"docs":{},"群":{"docs":{},"中":{"docs":{},"的":{"docs":{},"管":{"docs":{},"理":{"docs":{},"者":{"docs":{},"是":{"docs":{},"被":{"docs":{},"动":{"docs":{},"态":{"docs":{},"选":{"docs":{},"择":{"docs":{},"出":{"docs":{},"来":{"docs":{},"的":{"docs":{},",":{"docs":{},"而":{"docs":{},"不":{"docs":{},"是":{"docs":{},"预":{"docs":{},"置":{"docs":{},"的":{"docs":{},",":{"docs":{},"并":{"docs":{},"且":{"docs":{},"集":{"docs":{},"群":{"docs":{},"在":{"docs":{},"发":{"docs":{},"生":{"docs":{},"故":{"docs":{},"障":{"docs":{},"的":{"docs":{},"时":{"docs":{},"候":{"docs":{},",":{"docs":{},"集":{"docs":{},"群":{"docs":{},"的":{"docs":{},"节":{"docs":{},"点":{"docs":{},"会":{"docs":{},"自":{"docs":{},"发":{"docs":{},"的":{"docs":{},"举":{"docs":{},"行":{"docs":{},"\"":{"docs":{},"会":{"docs":{},"议":{"docs":{},"\"":{"docs":{},"选":{"docs":{},"举":{"docs":{},"新":{"docs":{},"的":{"docs":{},"\"":{"docs":{},"管":{"docs":{},"理":{"docs":{},"者":{"docs":{},"\"":{"docs":{},"主":{"docs":{},"持":{"docs":{},"工":{"docs":{},"作":{"docs":{},"。":{"docs":{},"最":{"docs":{},"典":{"docs":{},"型":{"docs":{},"的":{"docs":{},"案":{"docs":{},"例":{"docs":{},"就":{"docs":{},"是":{"docs":{},"z":{"docs":{},"o":{"docs":{},"o":{"docs":{},"k":{"docs":{},"e":{"docs":{},"e":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"及":{"docs":{},"g":{"docs":{},"o":{"docs":{},"语":{"docs":{},"言":{"docs":{},"实":{"docs":{},"现":{"docs":{},"的":{"docs":{},"e":{"docs":{},"t":{"docs":{},"c":{"docs":{},"d":{"docs":{},"。":{"docs":{"pages/guide-architecture.html":{"ref":"pages/guide-architecture.html","tf":0.013513513513513514}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"容":{"docs":{},"错":{"docs":{},"设":{"docs":{},"计":{"docs":{"pages/guide-architecture.html":{"ref":"pages/guide-architecture.html","tf":0.013513513513513514}}}},":":{"docs":{},"流":{"docs":{},"程":{"docs":{},"实":{"docs":{},"例":{"docs":{},"是":{"docs":{},"否":{"docs":{},"被":{"docs":{},"容":{"docs":{},"错":{"docs":{},"过":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}},"对":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}},"于":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852},"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}},"启":{"docs":{},"动":{"docs":{},"新":{"docs":{},"m":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"来":{"docs":{},"打":{"docs":{},"破":{"docs":{},"僵":{"docs":{},"局":{"docs":{},",":{"docs":{},"似":{"docs":{},"乎":{"docs":{},"有":{"docs":{},"点":{"docs":{},"差":{"docs":{},"强":{"docs":{},"人":{"docs":{},"意":{"docs":{},",":{"docs":{},"于":{"docs":{},"是":{"docs":{},"我":{"docs":{},"们":{"docs":{},"提":{"docs":{},"出":{"docs":{},"了":{"docs":{},"以":{"docs":{},"下":{"docs":{},"三":{"docs":{},"种":{"docs":{},"方":{"docs":{},"案":{"docs":{},"来":{"docs":{},"降":{"docs":{},"低":{"docs":{},"这":{"docs":{},"种":{"docs":{},"风":{"docs":{},"险":{"docs":{},":":{"docs":{"pages/guide-architecture.html":{"ref":"pages/guide-architecture.html","tf":0.013513513513513514}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"终":{"docs":{},"态":{"docs":{},"的":{"docs":{},"流":{"docs":{},"程":{"docs":{},"实":{"docs":{},"例":{"docs":{},",":{"docs":{},"可":{"docs":{},"以":{"docs":{},"进":{"docs":{},"行":{"docs":{},"编":{"docs":{},"辑":{"docs":{},"保":{"docs":{},"存":{"docs":{},"。":{"docs":{},"终":{"docs":{},"态":{"docs":{},"是":{"docs":{},"流":{"docs":{},"程":{"docs":{},"实":{"docs":{},"例":{"docs":{},"最":{"docs":{},"终":{"docs":{},"的":{"docs":{},"状":{"docs":{},"态":{"docs":{},"为":{"docs":{},"成":{"docs":{},"功":{"docs":{},"、":{"docs":{},"失":{"docs":{},"败":{"docs":{},"、":{"docs":{},"暂":{"docs":{},"停":{"docs":{},"或":{"docs":{},"停":{"docs":{},"止":{"docs":{},"四":{"docs":{},"个":{"docs":{},"状":{"docs":{},"态":{"docs":{},"。":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"单":{"docs":{},"m":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"线":{"docs":{},"程":{"docs":{},"池":{"docs":{},"进":{"docs":{},"行":{"docs":{},"判":{"docs":{},"断":{"docs":{},",":{"docs":{},"如":{"docs":{},"果":{"docs":{},"线":{"docs":{},"程":{"docs":{},"池":{"docs":{},"已":{"docs":{},"经":{"docs":{},"满":{"docs":{},"了":{"docs":{},",":{"docs":{},"则":{"docs":{},"让":{"docs":{},"线":{"docs":{},"程":{"docs":{},"直":{"docs":{},"接":{"docs":{},"失":{"docs":{},"败":{"docs":{},"。":{"docs":{"pages/guide-architecture.html":{"ref":"pages/guide-architecture.html","tf":0.013513513513513514}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"下":{"docs":{},"线":{"docs":{},"状":{"docs":{},"态":{"docs":{},"的":{"docs":{},"流":{"docs":{},"程":{"docs":{},"定":{"docs":{},"义":{"docs":{},",":{"docs":{},"用":{"docs":{},"户":{"docs":{},"可":{"docs":{},"对":{"docs":{},"d":{"docs":{},"a":{"docs":{},"g":{"docs":{},"进":{"docs":{},"行":{"docs":{},"编":{"docs":{},"辑":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}},"可":{"docs":{},"查":{"docs":{},"看":{"docs":{},"的":{"docs":{},"文":{"docs":{},"件":{"docs":{},"类":{"docs":{},"型":{"docs":{},",":{"docs":{},"点":{"docs":{},"击":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}},"流":{"docs":{},"程":{"docs":{},"定":{"docs":{},"义":{"docs":{},"可":{"docs":{},"以":{"docs":{},"选":{"docs":{},"择":{"docs":{},"节":{"docs":{},"点":{"docs":{},"右":{"docs":{},"击":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}},"将":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}},"日":{"docs":{},"志":{"docs":{},"放":{"docs":{},"到":{"docs":{},"e":{"docs":{},"s":{"docs":{},"搜":{"docs":{},"索":{"docs":{},"引":{"docs":{},"擎":{"docs":{},"上":{"docs":{"pages/guide-architecture.html":{"ref":"pages/guide-architecture.html","tf":0.013513513513513514}}}}}}}}}}}}},"k":{"docs":{},"i":{"docs":{},"l":{"docs":{},"l":{"docs":{},"掉":{"docs":{},"正":{"docs":{},"在":{"docs":{},"运":{"docs":{},"行":{"docs":{},"的":{"docs":{},"任":{"docs":{},"务":{"docs":{},"节":{"docs":{},"点":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}},"总":{"docs":{},"结":{"docs":{"pages/guide-architecture.html":{"ref":"pages/guide-architecture.html","tf":0.013513513513513514}}}},"我":{"docs":{},"们":{"docs":{},"使":{"docs":{},"用":{"docs":{},"自":{"docs":{},"定":{"docs":{},"义":{"docs":{},"l":{"docs":{},"o":{"docs":{},"g":{"docs":{},"b":{"docs":{},"a":{"docs":{},"c":{"docs":{},"k":{"docs":{},"的":{"docs":{},"f":{"docs":{},"i":{"docs":{},"l":{"docs":{},"e":{"docs":{},"a":{"docs":{},"p":{"docs":{},"p":{"docs":{},"e":{"docs":{},"n":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},"和":{"docs":{},"f":{"docs":{},"i":{"docs":{},"l":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"功":{"docs":{},"能":{"docs":{},",":{"docs":{},"实":{"docs":{},"现":{"docs":{},"每":{"docs":{},"个":{"docs":{},"任":{"docs":{},"务":{"docs":{},"实":{"docs":{},"例":{"docs":{},"生":{"docs":{},"成":{"docs":{},"一":{"docs":{},"个":{"docs":{},"日":{"docs":{},"志":{"docs":{},"文":{"docs":{},"件":{"docs":{},"。":{"docs":{"pages/guide-architecture.html":{"ref":"pages/guide-architecture.html","tf":0.013513513513513514}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"找":{"docs":{},"到":{"docs":{},"”":{"docs":{},"正":{"docs":{},"在":{"docs":{},"运":{"docs":{},"行":{"docs":{},"”":{"docs":{},"和":{"docs":{},"“":{"docs":{},"提":{"docs":{},"交":{"docs":{},"成":{"docs":{},"功":{"docs":{},"”":{"docs":{},"的":{"docs":{},"任":{"docs":{},"务":{"docs":{},",":{"docs":{},"对":{"docs":{},"”":{"docs":{},"正":{"docs":{},"在":{"docs":{},"运":{"docs":{},"行":{"docs":{},"”":{"docs":{},"的":{"docs":{},"任":{"docs":{},"务":{"docs":{},"监":{"docs":{},"控":{"docs":{},"其":{"docs":{},"任":{"docs":{},"务":{"docs":{},"实":{"docs":{},"例":{"docs":{},"的":{"docs":{},"状":{"docs":{},"态":{"docs":{},",":{"docs":{},"对":{"docs":{},"”":{"docs":{},"提":{"docs":{},"交":{"docs":{},"成":{"docs":{},"功":{"docs":{},"”":{"docs":{},"的":{"docs":{},"任":{"docs":{},"务":{"docs":{},"需":{"docs":{},"要":{"docs":{},"判":{"docs":{},"断":{"docs":{},"t":{"docs":{},"a":{"docs":{},"s":{"docs":{},"k":{"docs":{"pages/guide-architecture.html":{"ref":"pages/guide-architecture.html","tf":0.013513513513513514}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"本":{"docs":{},"文":{"docs":{},"从":{"docs":{},"调":{"docs":{},"度":{"docs":{},"出":{"docs":{},"发":{"docs":{},",":{"docs":{},"介":{"docs":{},"绍":{"docs":{},"了":{"docs":{},"易":{"docs":{},"观":{"docs":{},"研":{"docs":{},"发":{"docs":{},"的":{"docs":{},"大":{"docs":{},"数":{"docs":{},"据":{"docs":{},"分":{"docs":{},"布":{"docs":{},"式":{"docs":{},"工":{"docs":{},"作":{"docs":{},"流":{"docs":{},"调":{"docs":{},"度":{"docs":{},"系":{"docs":{},"统":{"docs":{},"。":{"docs":{},"e":{"docs":{},"a":{"docs":{},"s":{"docs":{},"y":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"在":{"docs":{},"易":{"docs":{},"观":{"docs":{},"数":{"docs":{},"据":{"docs":{},"平":{"docs":{},"台":{"docs":{},"起":{"docs":{},"着":{"docs":{},"中":{"docs":{},"流":{"docs":{},"砥":{"docs":{},"柱":{"docs":{},"的":{"docs":{},"作":{"docs":{},"用":{"docs":{},"。":{"docs":{},"本":{"docs":{},"章":{"docs":{},"着":{"docs":{},"重":{"docs":{},"介":{"docs":{},"绍":{"docs":{},"了":{"docs":{},"e":{"docs":{},"a":{"docs":{},"s":{"docs":{},"y":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"的":{"docs":{},"架":{"docs":{},"构":{"docs":{},"原":{"docs":{},"理":{"docs":{},"及":{"docs":{},"实":{"docs":{},"现":{"docs":{},"思":{"docs":{},"路":{"docs":{},"。":{"docs":{"pages/guide-architecture.html":{"ref":"pages/guide-architecture.html","tf":0.013513513513513514}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"架":{"docs":{},"构":{"docs":{},"设":{"docs":{},"计":{"docs":{"pages/guide-architecture.html":{"ref":"pages/guide-architecture.html","tf":0.013513513513513514}}}}}},"注":{"docs":{},"意":{"docs":{},":":{"docs":{},"m":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{"pages/guide-architecture.html":{"ref":"pages/guide-architecture.html","tf":0.013513513513513514}}}}}}}},"由":{"docs":{},"于":{"docs":{},"”":{"docs":{"pages/guide-architecture.html":{"ref":"pages/guide-architecture.html","tf":0.013513513513513514}}}}},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},"和":{"docs":{},"s":{"docs":{},"c":{"docs":{},"a":{"docs":{},"l":{"docs":{},"a":{"docs":{},"只":{"docs":{},"是":{"docs":{},"用":{"docs":{},"来":{"docs":{},"标":{"docs":{},"识":{"docs":{},",":{"docs":{},"没":{"docs":{},"有":{"docs":{},"区":{"docs":{},"别":{"docs":{},",":{"docs":{},"如":{"docs":{},"果":{"docs":{},"是":{"docs":{},"p":{"docs":{},"y":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"n":{"docs":{},"开":{"docs":{},"发":{"docs":{},"的":{"docs":{},"s":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"k":{"docs":{},"则":{"docs":{},"没":{"docs":{},"有":{"docs":{},"主":{"docs":{},"函":{"docs":{},"数":{"docs":{},"的":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},",":{"docs":{},"其":{"docs":{},"他":{"docs":{},"都":{"docs":{},"是":{"docs":{},"一":{"docs":{},"样":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"可":{"docs":{},"以":{"docs":{},"点":{"docs":{},"击":{"docs":{},"图":{"docs":{},",":{"docs":{},"或":{"docs":{},"者":{"docs":{},"数":{"docs":{},"量":{"docs":{},"跳":{"docs":{},"转":{"docs":{},"到":{"docs":{},"相":{"docs":{},"应":{"docs":{},"的":{"docs":{},"任":{"docs":{},"务":{"docs":{},"实":{"docs":{},"例":{"docs":{},",":{"docs":{},"流":{"docs":{},"程":{"docs":{},"实":{"docs":{},"例":{"docs":{},"和":{"docs":{},"流":{"docs":{},"程":{"docs":{},"定":{"docs":{},"义":{"docs":{},"列":{"docs":{},"表":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"如":{"docs":{},"果":{"docs":{},"该":{"docs":{},"用":{"docs":{},"户":{"docs":{},"切":{"docs":{},"换":{"docs":{},"了":{"docs":{},"租":{"docs":{},"户":{"docs":{},",":{"docs":{},"则":{"docs":{},"该":{"docs":{},"用":{"docs":{},"户":{"docs":{},"所":{"docs":{},"在":{"docs":{},"租":{"docs":{},"户":{"docs":{},"下":{"docs":{},"所":{"docs":{},"有":{"docs":{},"资":{"docs":{},"源":{"docs":{},"将":{"docs":{},"复":{"docs":{},"制":{"docs":{},"到":{"docs":{},"切":{"docs":{},"换":{"docs":{},"的":{"docs":{},"新":{"docs":{},"租":{"docs":{},"户":{"docs":{},"下":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"日":{"docs":{},"志":{"docs":{},"查":{"docs":{},"看":{"docs":{},"是":{"docs":{},"分":{"docs":{},"片":{"docs":{},"的":{"docs":{},"查":{"docs":{},"看":{"docs":{},",":{"docs":{},"上":{"docs":{},"下":{"docs":{},"滚":{"docs":{},"动":{"docs":{},"查":{"docs":{},"看":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}},"自":{"docs":{},"定":{"docs":{},"义":{"docs":{},"是":{"docs":{},"可":{"docs":{},"以":{"docs":{},"自":{"docs":{},"定":{"docs":{},"义":{"docs":{},"外":{"docs":{},"部":{"docs":{},"流":{"docs":{},"程":{"docs":{},"任":{"docs":{},"务":{"docs":{},"是":{"docs":{},"成":{"docs":{},"功":{"docs":{},"或":{"docs":{},"失":{"docs":{},"败":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}},"e":{"docs":{},"a":{"docs":{},"s":{"docs":{},"y":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"本":{"docs":{},"身":{"docs":{},"不":{"docs":{},"依":{"docs":{},"赖":{"docs":{},"h":{"docs":{},"a":{"docs":{},"d":{"docs":{},"o":{"docs":{},"o":{"docs":{},"p":{"docs":{},"、":{"docs":{},"h":{"docs":{},"i":{"docs":{},"v":{"docs":{},"e":{"docs":{},"、":{"docs":{},"s":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"k":{"docs":{},"、":{"docs":{},"p":{"docs":{},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{},"g":{"docs":{},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{},"、":{"docs":{},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"i":{"docs":{},"s":{"docs":{},",":{"docs":{},"仅":{"docs":{},"是":{"docs":{},"用":{"docs":{},"到":{"docs":{},"了":{"docs":{},"他":{"docs":{},"们":{"docs":{},"的":{"docs":{},"c":{"docs":{},"l":{"docs":{},"i":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"在":{"docs":{},"全":{"docs":{},"部":{"docs":{},"服":{"docs":{},"务":{"docs":{},"都":{"docs":{},"启":{"docs":{},"动":{"docs":{},"之":{"docs":{},"后":{"docs":{},"启":{"docs":{},"动":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}},"对":{"docs":{},"m":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"l":{"docs":{},"o":{"docs":{},"g":{"docs":{},"f":{"docs":{},"i":{"docs":{},"l":{"docs":{},"e":{"docs":{},",":{"docs":{},"自":{"docs":{},"定":{"docs":{},"义":{"docs":{},"了":{"docs":{},"m":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"l":{"docs":{},"o":{"docs":{},"g":{"docs":{},"f":{"docs":{},"i":{"docs":{},"l":{"docs":{},"t":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"w":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{},"e":{"docs":{},"r":{"docs":{},"l":{"docs":{},"o":{"docs":{},"g":{"docs":{},"f":{"docs":{},"i":{"docs":{},"l":{"docs":{},"e":{"docs":{},",":{"docs":{},"自":{"docs":{},"定":{"docs":{},"义":{"docs":{},"了":{"docs":{},"w":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{},"e":{"docs":{},"r":{"docs":{},"l":{"docs":{},"o":{"docs":{},"g":{"docs":{},"f":{"docs":{},"i":{"docs":{},"l":{"docs":{},"t":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},",":{"docs":{},"我":{"docs":{},"们":{"docs":{},"定":{"docs":{},"义":{"docs":{},"这":{"docs":{},"种":{"docs":{},"基":{"docs":{},"准":{"docs":{},"变":{"docs":{},"量":{"docs":{},"为":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}},":":{"docs":{},"配":{"docs":{},"置":{"docs":{},"前":{"docs":{},"可":{"docs":{},"以":{"docs":{},"参":{"docs":{},"考":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}}}},"由":{"docs":{},"于":{"docs":{},"w":{"docs":{},"e":{"docs":{},"b":{"docs":{},"和":{"docs":{},"w":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{},"e":{"docs":{},"r":{"docs":{},"不":{"docs":{},"一":{"docs":{},"定":{"docs":{},"在":{"docs":{},"同":{"docs":{},"一":{"docs":{},"台":{"docs":{},"机":{"docs":{},"器":{"docs":{},"上":{"docs":{},",":{"docs":{},"所":{"docs":{},"以":{"docs":{},"查":{"docs":{},"看":{"docs":{},"日":{"docs":{},"志":{"docs":{},"不":{"docs":{},"能":{"docs":{},"像":{"docs":{},"查":{"docs":{},"询":{"docs":{},"本":{"docs":{},"地":{"docs":{},"文":{"docs":{},"件":{"docs":{},"那":{"docs":{},"样":{"docs":{},"。":{"docs":{},"有":{"docs":{},"两":{"docs":{},"种":{"docs":{},"方":{"docs":{},"案":{"docs":{},":":{"docs":{"pages/guide-architecture.html":{"ref":"pages/guide-architecture.html","tf":0.013513513513513514}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"管":{"docs":{},"理":{"docs":{},"者":{"docs":{},"”":{"docs":{},"节":{"docs":{},"点":{"docs":{},"所":{"docs":{},"以":{"docs":{},"每":{"docs":{},"个":{"docs":{},"节":{"docs":{},"点":{"docs":{},"都":{"docs":{},"需":{"docs":{},"要":{"docs":{},"跟":{"docs":{},"其":{"docs":{},"他":{"docs":{},"节":{"docs":{},"点":{"docs":{},"通":{"docs":{},"信":{"docs":{},"才":{"docs":{},"得":{"docs":{},"到":{"docs":{},"必":{"docs":{},"须":{"docs":{},"要":{"docs":{},"的":{"docs":{},"机":{"docs":{},"器":{"docs":{},"信":{"docs":{},"息":{"docs":{},",":{"docs":{},"而":{"docs":{},"分":{"docs":{},"布":{"docs":{},"式":{"docs":{},"系":{"docs":{},"统":{"docs":{},"通":{"docs":{},"信":{"docs":{},"的":{"docs":{},"不":{"docs":{},"可":{"docs":{},"靠":{"docs":{},"行":{"docs":{},",":{"docs":{},"则":{"docs":{},"大":{"docs":{},"大":{"docs":{},"增":{"docs":{},"加":{"docs":{},"了":{"docs":{},"上":{"docs":{},"述":{"docs":{},"功":{"docs":{},"能":{"docs":{},"的":{"docs":{},"实":{"docs":{},"现":{"docs":{},"难":{"docs":{},"度":{"docs":{},"。":{"docs":{"pages/guide-architecture.html":{"ref":"pages/guide-architecture.html","tf":0.013513513513513514}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"员":{"docs":{},"可":{"docs":{},"以":{"docs":{},"对":{"docs":{},"普":{"docs":{},"通":{"docs":{},"用":{"docs":{},"户":{"docs":{},"进":{"docs":{},"行":{"docs":{},"非":{"docs":{},"其":{"docs":{},"创":{"docs":{},"建":{"docs":{},"的":{"docs":{},"项":{"docs":{},"目":{"docs":{},"、":{"docs":{},"资":{"docs":{},"源":{"docs":{},"、":{"docs":{},"数":{"docs":{},"据":{"docs":{},"源":{"docs":{},"和":{"docs":{},"u":{"docs":{},"d":{"docs":{},"f":{"docs":{},"函":{"docs":{},"数":{"docs":{},"进":{"docs":{},"行":{"docs":{},"授":{"docs":{},"权":{"docs":{},"。":{"docs":{},"因":{"docs":{},"为":{"docs":{},"项":{"docs":{},"目":{"docs":{},"、":{"docs":{},"资":{"docs":{},"源":{"docs":{},"、":{"docs":{},"数":{"docs":{},"据":{"docs":{},"源":{"docs":{},"和":{"docs":{},"u":{"docs":{},"d":{"docs":{},"f":{"docs":{},"函":{"docs":{},"数":{"docs":{},"授":{"docs":{},"权":{"docs":{},"方":{"docs":{},"式":{"docs":{},"都":{"docs":{},"是":{"docs":{},"一":{"docs":{},"样":{"docs":{},"的":{"docs":{},",":{"docs":{},"所":{"docs":{},"以":{"docs":{},"以":{"docs":{},"项":{"docs":{},"目":{"docs":{},"授":{"docs":{},"权":{"docs":{},"为":{"docs":{},"例":{"docs":{},"介":{"docs":{},"绍":{"docs":{},"。":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"有":{"docs":{},"多":{"docs":{},"个":{"docs":{},",":{"docs":{},"管":{"docs":{},"理":{"docs":{},"员":{"docs":{},"是":{"docs":{},"功":{"docs":{},"能":{"docs":{},"上":{"docs":{},"的":{"docs":{},"管":{"docs":{},"理":{"docs":{},",":{"docs":{},"不":{"docs":{},"参":{"docs":{},"与":{"docs":{},"具":{"docs":{},"体":{"docs":{},"的":{"docs":{},"业":{"docs":{},"务":{"docs":{},"。":{"docs":{},"也":{"docs":{},"就":{"docs":{},"是":{"docs":{},"说":{"docs":{},"管":{"docs":{},"理":{"docs":{},"员":{"docs":{},"是":{"docs":{},"不":{"docs":{},"能":{"docs":{},"执":{"docs":{},"行":{"docs":{},"具":{"docs":{},"体":{"docs":{},"任":{"docs":{},"务":{"docs":{},"的":{"docs":{},"。":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"用":{"docs":{},"户":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}},"列":{"docs":{},"表":{"docs":{},":":{"docs":{},"是":{"docs":{},"未":{"docs":{},"添":{"docs":{},"加":{"docs":{},"到":{"docs":{},"该":{"docs":{},"组":{"docs":{},"的":{"docs":{},"用":{"docs":{},"户":{"docs":{},"列":{"docs":{},"表":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}},"线":{"docs":{},"程":{"docs":{},"不":{"docs":{},"足":{"docs":{},"循":{"docs":{},"环":{"docs":{},"等":{"docs":{},"待":{"docs":{},"问":{"docs":{},"题":{"docs":{"pages/guide-architecture.html":{"ref":"pages/guide-architecture.html","tf":0.013513513513513514}}}}}}}}}}}},"网":{"docs":{},"络":{"docs":{},"抖":{"docs":{},"动":{"docs":{},"”":{"docs":{},"可":{"docs":{},"能":{"docs":{},"会":{"docs":{},"使":{"docs":{},"得":{"docs":{},"节":{"docs":{},"点":{"docs":{},"短":{"docs":{},"时":{"docs":{},"间":{"docs":{},"内":{"docs":{},"失":{"docs":{},"去":{"docs":{},"和":{"docs":{},"z":{"docs":{},"k":{"docs":{},"的":{"docs":{},"心":{"docs":{},"跳":{"docs":{},",":{"docs":{},"从":{"docs":{},"而":{"docs":{},"发":{"docs":{},"生":{"docs":{},"节":{"docs":{},"点":{"docs":{},"的":{"docs":{},"r":{"docs":{},"e":{"docs":{},"m":{"docs":{},"o":{"docs":{},"v":{"docs":{},"e":{"docs":{},"事":{"docs":{},"件":{"docs":{},"。":{"docs":{},"对":{"docs":{},"于":{"docs":{},"这":{"docs":{},"种":{"docs":{},"情":{"docs":{},"况":{"docs":{},",":{"docs":{},"我":{"docs":{},"们":{"docs":{},"使":{"docs":{},"用":{"docs":{},"最":{"docs":{},"简":{"docs":{},"单":{"docs":{},"的":{"docs":{},"方":{"docs":{},"式":{"docs":{},",":{"docs":{},"那":{"docs":{},"就":{"docs":{},"是":{"docs":{},"节":{"docs":{},"点":{"docs":{},"一":{"docs":{},"旦":{"docs":{},"和":{"docs":{},"z":{"docs":{},"k":{"docs":{},"发":{"docs":{},"生":{"docs":{},"超":{"docs":{},"时":{"docs":{},"连":{"docs":{},"接":{"docs":{},",":{"docs":{},"则":{"docs":{},"直":{"docs":{},"接":{"docs":{},"将":{"docs":{},"m":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"或":{"docs":{},"w":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{},"e":{"docs":{},"r":{"docs":{},"服":{"docs":{},"务":{"docs":{},"停":{"docs":{},"掉":{"docs":{},"。":{"docs":{"pages/guide-architecture.html":{"ref":"pages/guide-architecture.html","tf":0.013513513513513514}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"址":{"docs":{},",":{"docs":{},"输":{"docs":{},"入":{"docs":{},"用":{"docs":{},"户":{"docs":{},"名":{"docs":{},",":{"docs":{},"密":{"docs":{},"码":{"docs":{},"登":{"docs":{},"录":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}},"获":{"docs":{},"取":{"docs":{},"分":{"docs":{},"布":{"docs":{},"式":{"docs":{},"锁":{"docs":{},"的":{"docs":{},"核":{"docs":{},"心":{"docs":{},"流":{"docs":{},"程":{"docs":{},"算":{"docs":{},"法":{"docs":{},"如":{"docs":{},"下":{"docs":{},":":{"docs":{"pages/guide-architecture.html":{"ref":"pages/guide-architecture.html","tf":0.013513513513513514}}}}}}}}}}}}}}}}}},"计":{"docs":{},"算":{"docs":{},"所":{"docs":{},"有":{"docs":{},"m":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"的":{"docs":{},"线":{"docs":{},"程":{"docs":{},"总":{"docs":{},"和":{"docs":{},",":{"docs":{},"然":{"docs":{},"后":{"docs":{},"对":{"docs":{},"每":{"docs":{},"一":{"docs":{},"个":{"docs":{},"d":{"docs":{},"a":{"docs":{},"g":{"docs":{},"需":{"docs":{},"要":{"docs":{},"计":{"docs":{},"算":{"docs":{},"其":{"docs":{},"需":{"docs":{},"要":{"docs":{},"的":{"docs":{},"线":{"docs":{},"程":{"docs":{},"数":{"docs":{},",":{"docs":{},"也":{"docs":{},"就":{"docs":{},"是":{"docs":{},"在":{"docs":{},"d":{"docs":{},"a":{"docs":{},"g":{"docs":{},"流":{"docs":{},"程":{"docs":{},"执":{"docs":{},"行":{"docs":{},"之":{"docs":{},"前":{"docs":{},"做":{"docs":{},"预":{"docs":{},"计":{"docs":{},"算":{"docs":{},"。":{"docs":{},"因":{"docs":{},"为":{"docs":{},"是":{"docs":{},"多":{"docs":{},"m":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"线":{"docs":{},"程":{"docs":{},"池":{"docs":{},",":{"docs":{},"所":{"docs":{},"以":{"docs":{},"总":{"docs":{},"线":{"docs":{},"程":{"docs":{},"数":{"docs":{},"不":{"docs":{},"太":{"docs":{},"可":{"docs":{},"能":{"docs":{},"实":{"docs":{},"时":{"docs":{},"获":{"docs":{},"取":{"docs":{},"。":{"docs":{"pages/guide-architecture.html":{"ref":"pages/guide-architecture.html","tf":0.013513513513513514}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"过":{"docs":{},"滤":{"docs":{},"匹":{"docs":{},"配":{"docs":{},"以":{"docs":{},"t":{"docs":{},"a":{"docs":{},"s":{"docs":{},"k":{"docs":{},"l":{"docs":{},"o":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"f":{"docs":{},"o":{"docs":{},"开":{"docs":{},"始":{"docs":{},"的":{"docs":{},"线":{"docs":{},"程":{"docs":{},"名":{"docs":{},"称":{"docs":{},":":{"docs":{"pages/guide-architecture.html":{"ref":"pages/guide-architecture.html","tf":0.013513513513513514}}}}}}}}}}}}}}}}}}}}}}}}}},"这":{"docs":{},"样":{"docs":{},"就":{"docs":{},"形":{"docs":{},"成":{"docs":{},"的":{"docs":{},"子":{"docs":{},"父":{"docs":{},"流":{"docs":{},"程":{"docs":{},"循":{"docs":{},"环":{"docs":{},"等":{"docs":{},"待":{"docs":{},"的":{"docs":{},"状":{"docs":{},"态":{"docs":{},"。":{"docs":{},"此":{"docs":{},"时":{"docs":{},"除":{"docs":{},"非":{"docs":{},"启":{"docs":{},"动":{"docs":{},"新":{"docs":{},"的":{"docs":{},"m":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"来":{"docs":{},"增":{"docs":{},"加":{"docs":{},"线":{"docs":{},"程":{"docs":{},"来":{"docs":{},"打":{"docs":{},"破":{"docs":{},"这":{"docs":{},"样":{"docs":{},"的":{"docs":{},"”":{"docs":{},"僵":{"docs":{},"局":{"docs":{},"”":{"docs":{},",":{"docs":{},"否":{"docs":{},"则":{"docs":{},"调":{"docs":{},"度":{"docs":{},"集":{"docs":{},"群":{"docs":{},"将":{"docs":{},"不":{"docs":{},"能":{"docs":{},"再":{"docs":{},"使":{"docs":{},"用":{"docs":{},"。":{"docs":{"pages/guide-architecture.html":{"ref":"pages/guide-architecture.html","tf":0.013513513513513514}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"可":{"docs":{},"以":{"docs":{},"通":{"docs":{},"过":{"docs":{},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{},"脚":{"docs":{},"本":{"docs":{},"来":{"docs":{},"启":{"docs":{},"动":{"docs":{},"、":{"docs":{},"停":{"docs":{},"止":{"docs":{},"、":{"docs":{},"重":{"docs":{},"启":{"docs":{},"、":{"docs":{},"重":{"docs":{},"载":{"docs":{},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{},"服":{"docs":{},"务":{"docs":{},"器":{"docs":{},"了":{"docs":{},"。":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"通":{"docs":{},"过":{"docs":{},"g":{"docs":{},"r":{"docs":{},"p":{"docs":{},"c":{"docs":{},"通":{"docs":{},"信":{"docs":{},"获":{"docs":{},"取":{"docs":{},"远":{"docs":{},"程":{"docs":{},"日":{"docs":{},"志":{"docs":{},"信":{"docs":{},"息":{"docs":{"pages/guide-architecture.html":{"ref":"pages/guide-architecture.html","tf":0.013513513513513514}}}}}}}}}}}}}}}},"检":{"docs":{},"查":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}},"知":{"docs":{},"策":{"docs":{},"略":{"docs":{},":":{"docs":{},"都":{"docs":{},"不":{"docs":{},"发":{"docs":{},"、":{"docs":{},"成":{"docs":{},"功":{"docs":{},"发":{"docs":{},"、":{"docs":{},"失":{"docs":{},"败":{"docs":{},"发":{"docs":{},"、":{"docs":{},"成":{"docs":{},"功":{"docs":{},"或":{"docs":{},"失":{"docs":{},"败":{"docs":{},"都":{"docs":{},"发":{"docs":{},"四":{"docs":{},"种":{"docs":{},"策":{"docs":{},"略":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.005555555555555556}}}}}}}}}}}}}}}}}}}}}}}}}}}},"组":{"docs":{},":":{"docs":{},"是":{"docs":{},"通":{"docs":{},"知":{"docs":{},"用":{"docs":{},"户":{"docs":{},"所":{"docs":{},"属":{"docs":{},"的":{"docs":{},"组":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.005555555555555556}}}}}}}}}}}}}},"用":{"docs":{},"配":{"docs":{},"置":{"docs":{},"文":{"docs":{},"件":{"docs":{},"配":{"docs":{},"置":{"docs":{},",":{"docs":{},"队":{"docs":{},"列":{"docs":{},"选":{"docs":{},"择":{"docs":{},"及":{"docs":{},"地":{"docs":{},"址":{"docs":{},"配":{"docs":{},"置":{"docs":{},",":{"docs":{},"通":{"docs":{},"用":{"docs":{},"文":{"docs":{},"件":{"docs":{},"目":{"docs":{},"录":{"docs":{},"配":{"docs":{},"置":{"docs":{},"。":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"需":{"docs":{},"要":{"docs":{},"容":{"docs":{},"错":{"docs":{},"”":{"docs":{},"状":{"docs":{},"态":{"docs":{},",":{"docs":{},"则":{"docs":{},"接":{"docs":{},"管":{"docs":{},"任":{"docs":{},"务":{"docs":{},"并":{"docs":{},"进":{"docs":{},"行":{"docs":{},"重":{"docs":{},"新":{"docs":{},"提":{"docs":{},"交":{"docs":{},"。":{"docs":{"pages/guide-architecture.html":{"ref":"pages/guide-architecture.html","tf":0.013513513513513514}}}}}}}}}}}}}}}}}}}}}}},"\"":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0034071550255536627}},"m":{"docs":{},"a":{"docs":{},"p":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},".":{"docs":{},"p":{"docs":{},"i":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}},"常":{"docs":{},"量":{"docs":{},"\"":{"docs":{},"。":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}},"系":{"docs":{},"统":{"docs":{},"参":{"docs":{},"数":{"docs":{},"\"":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}},"#":{"docs":{},"\"":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}},"$":{"1":{"docs":{},"\"":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}},"docs":{}},"u":{"docs":{},"p":{"docs":{},"g":{"docs":{},"r":{"docs":{},"a":{"docs":{},"d":{"docs":{},"e":{"docs":{},"\"":{"docs":{},";":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}}},"s":{"docs":{},"a":{"docs":{},"g":{"docs":{},"e":{"docs":{},":":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}},"f":{"docs":{},"a":{"docs":{},"l":{"docs":{},"s":{"docs":{},"e":{"docs":{},"\"":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"i":{"docs":{},"s":{"docs":{},"\"":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}},"z":{"docs":{},"o":{"docs":{},"o":{"docs":{},"k":{"docs":{},"e":{"docs":{},"e":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"\"":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}},",":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}},"$":{"0":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.005110732538330494}}},"docs":{},"[":{"docs":{},".":{"docs":{},".":{"docs":{},".":{"docs":{},"]":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}},"h":{"docs":{},"h":{"docs":{},":":{"docs":{},"m":{"docs":{},"m":{"docs":{},":":{"docs":{},"s":{"docs":{},"s":{"docs":{},"]":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}},"m":{"docs":{},"m":{"docs":{},"s":{"docs":{},"s":{"docs":{},"]":{"docs":{},",":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}},"y":{"docs":{},"y":{"docs":{},"y":{"docs":{},"i":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}},"{":{"docs":{},"s":{"docs":{},"y":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"m":{"docs":{},".":{"docs":{},"b":{"docs":{},"i":{"docs":{},"z":{"docs":{},".":{"docs":{},"c":{"docs":{},"u":{"docs":{},"r":{"docs":{},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"}":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"}":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"t":{"docs":{},"i":{"docs":{},"m":{"docs":{},"e":{"docs":{},"}":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}},"l":{"docs":{},"o":{"docs":{},"g":{"docs":{},".":{"docs":{},"b":{"docs":{},"a":{"docs":{},"s":{"docs":{},"e":{"docs":{},"}":{"docs":{},"/":{"docs":{},"e":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.00709849157054126}}}}}}}}}},"{":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"c":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},"d":{"docs":{},"e":{"docs":{},"f":{"docs":{},"i":{"docs":{},"n":{"docs":{},"i":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"i":{"docs":{},"d":{"docs":{},"}":{"docs":{},"/":{"docs":{},"{":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"c":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"n":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"n":{"docs":{},"c":{"docs":{},"e":{"docs":{},"i":{"docs":{},"d":{"docs":{},"}":{"docs":{},"/":{"docs":{},"{":{"docs":{},"t":{"docs":{},"a":{"docs":{},"s":{"docs":{},"k":{"docs":{},"i":{"docs":{},"n":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"n":{"docs":{},"c":{"docs":{},"e":{"docs":{},"i":{"docs":{},"d":{"docs":{},"}":{"docs":{},".":{"docs":{},"l":{"docs":{},"o":{"docs":{},"g":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"p":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"w":{"docs":{},"o":{"docs":{},"r":{"docs":{},"d":{"docs":{},"}":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"}":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}},"x":{"docs":{},"x":{"docs":{},"x":{"docs":{},"}":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0026619343389529724}}}}}}},"(":{"docs":{},"c":{"docs":{},"a":{"docs":{},"t":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0034071550255536627}}}}}},"h":{"docs":{},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{},";":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},"_":{"docs":{},"u":{"docs":{},"p":{"docs":{},"g":{"docs":{},"r":{"docs":{},"a":{"docs":{},"d":{"docs":{},"e":{"docs":{},";":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}}}}}}}},"p":{"docs":{},"i":{"docs":{},"d":{"docs":{},"f":{"docs":{},")":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0034071550255536627}}}}}},"r":{"docs":{},"o":{"docs":{},"g":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}},"x":{"docs":{},"y":{"docs":{},"_":{"docs":{},"a":{"docs":{},"d":{"docs":{},"d":{"docs":{},"_":{"docs":{},"x":{"docs":{},"_":{"docs":{},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"w":{"docs":{},"a":{"docs":{},"r":{"docs":{},"d":{"docs":{},"e":{"docs":{},"d":{"docs":{},"_":{"docs":{},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},";":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}}}}}}}}}}}}}}}}}}}}},"r":{"docs":{},"e":{"docs":{},"m":{"docs":{},"o":{"docs":{},"t":{"docs":{},"e":{"docs":{},"_":{"docs":{},"a":{"docs":{},"d":{"docs":{},"d":{"docs":{},"r":{"docs":{},";":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.005110732538330494}}}}}}}}}}}}}}},"(":{"1":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.005110732538330494}},")":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}},".":{"2":{"docs":{},".":{"1":{"docs":{},"+":{"docs":{},")":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}},"docs":{}}},"8":{"docs":{},"+":{"docs":{},")":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}},"docs":{}}},"2":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}},")":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}},".":{"7":{"docs":{},"+":{"docs":{},")":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}},".":{"0":{"docs":{},"+":{"docs":{},")":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}},"docs":{}}},"docs":{}}},"3":{"docs":{},".":{"4":{"docs":{},".":{"6":{"docs":{},")":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}},"docs":{}}},"docs":{}}},"5":{"docs":{},".":{"5":{"docs":{},"+":{"docs":{},")":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}},"docs":{}}},"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{},"|":{"docs":{},"s":{"docs":{},"t":{"docs":{},"o":{"docs":{},"p":{"docs":{},"|":{"docs":{},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{},"|":{"docs":{},"r":{"docs":{},"e":{"docs":{},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{},")":{"docs":{},"\"":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"启":{"docs":{},"动":{"docs":{},"后":{"docs":{},"访":{"docs":{},"问":{"docs":{},"地":{"docs":{},"址":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}},"打":{"docs":{},"包":{"docs":{},"后":{"docs":{},"根":{"docs":{},"目":{"docs":{},"录":{"docs":{},"会":{"docs":{},"创":{"docs":{},"建":{"docs":{},"一":{"docs":{},"个":{"docs":{},"名":{"docs":{},"为":{"docs":{},"d":{"docs":{},"i":{"docs":{},"s":{"docs":{},"t":{"docs":{},"文":{"docs":{},"件":{"docs":{},"夹":{"docs":{},",":{"docs":{},"用":{"docs":{},"于":{"docs":{},"发":{"docs":{},"布":{"docs":{},"线":{"docs":{},"上":{"docs":{},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{},")":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"注":{"docs":{},"意":{"docs":{},"版":{"docs":{},"本":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}},"+":{"1":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.005555555555555556}}},"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.010221465076660987}},"x":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}},"/":{"4":{"0":{"4":{"docs":{},".":{"docs":{},"h":{"docs":{},"t":{"docs":{},"m":{"docs":{},"l":{"docs":{},";":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}},"docs":{}},"docs":{}},"5":{"0":{"docs":{},"x":{"docs":{},".":{"docs":{},"h":{"docs":{},"t":{"docs":{},"m":{"docs":{},"l":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0034071550255536627}},";":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}}},"docs":{}},"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}},"j":{"docs":{},"o":{"docs":{},"u":{"docs":{},"r":{"docs":{},"n":{"docs":{},"e":{"docs":{},"y":{"docs":{},"/":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{},"/":{"docs":{},"m":{"docs":{},"r":{"docs":{},"/":{"docs":{},"$":{"docs":{},"{":{"docs":{},"c":{"docs":{},"u":{"docs":{},"r":{"docs":{},"r":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"t":{"docs":{},"i":{"docs":{},"m":{"docs":{},"e":{"docs":{},"m":{"docs":{},"i":{"docs":{},"l":{"docs":{},"l":{"docs":{},"i":{"docs":{},"s":{"docs":{},"}":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"w":{"docs":{},"o":{"docs":{},"r":{"docs":{},"d":{"docs":{},"s":{"docs":{},".":{"docs":{},"t":{"docs":{},"x":{"docs":{},"t":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}},"/":{"docs":{},"单":{"docs":{},"独":{"docs":{},"安":{"docs":{},"装":{"docs":{},"n":{"docs":{},"o":{"docs":{},"d":{"docs":{},"e":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}}}},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"a":{"2":{"docs":{},"_":{"4":{"docs":{},"t":{"docs":{},"/":{"docs":{},"e":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"_":{"docs":{},"f":{"docs":{},"r":{"docs":{},"o":{"docs":{},"n":{"docs":{},"t":{"docs":{},"/":{"docs":{},"e":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"/":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}},"e":{"docs":{},"r":{"docs":{},";":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}},"(":{"docs":{},"服":{"docs":{},"务":{"docs":{},"器":{"docs":{},"静":{"docs":{},"态":{"docs":{},"页":{"docs":{},"面":{"docs":{},"存":{"docs":{},"放":{"docs":{},"目":{"docs":{},"录":{"docs":{},")":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}}},"docs":{}}}},"e":{"docs":{},"v":{"docs":{},"/":{"docs":{},"c":{"docs":{},"d":{"docs":{},"r":{"docs":{},"o":{"docs":{},"m":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}}}},"e":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}},"t":{"docs":{},"c":{"docs":{},"/":{"docs":{},"i":{"docs":{},"n":{"docs":{},"i":{"docs":{},"t":{"docs":{},".":{"docs":{},"d":{"docs":{},"/":{"docs":{},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0034071550255536627}}}}}}}}}}}}}},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{},"/":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{},".":{"docs":{},"d":{"docs":{},"/":{"docs":{},"d":{"docs":{},"e":{"docs":{},"f":{"docs":{},"a":{"docs":{},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}}}}}}}}}}}}}},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}}}}}}}}}}},"y":{"docs":{},"u":{"docs":{},"m":{"docs":{},".":{"docs":{},"r":{"docs":{},"e":{"docs":{},"p":{"docs":{},"o":{"docs":{},"s":{"docs":{},".":{"docs":{},"d":{"docs":{},"/":{"docs":{},"y":{"docs":{},"u":{"docs":{},"m":{"docs":{},".":{"docs":{},"r":{"docs":{},"e":{"docs":{},"p":{"docs":{},"o":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"u":{"docs":{},"d":{"docs":{},"o":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}}}}}}}}}},"m":{"docs":{},"n":{"docs":{},"t":{"docs":{},"/":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}},"s":{"docs":{},"b":{"docs":{},"i":{"docs":{},"n":{"docs":{},"/":{"docs":{},"n":{"docs":{},"o":{"docs":{},"l":{"docs":{},"o":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}}}}}}},"u":{"docs":{},"s":{"docs":{},"r":{"docs":{},"/":{"docs":{},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{},"a":{"docs":{},"l":{"docs":{},"/":{"docs":{},"b":{"docs":{},"i":{"docs":{},"n":{"docs":{},"/":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0034071550255536627}}}}}}}}}}},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}},"/":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{},"/":{"docs":{},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0068143100511073255}}}}}}}}}}}}}}}}},"s":{"docs":{},"b":{"docs":{},"i":{"docs":{},"n":{"docs":{},"/":{"docs":{},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.005110732538330494}}}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"h":{"docs":{},"a":{"docs":{},"r":{"docs":{},"e":{"docs":{},"/":{"docs":{},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{},"/":{"docs":{},"h":{"docs":{},"t":{"docs":{},"m":{"docs":{},"l":{"docs":{},";":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}}}}}}}}}}},"r":{"docs":{},"c":{"docs":{},"/":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}}}}}}}},"v":{"docs":{},"a":{"docs":{},"r":{"docs":{},"/":{"docs":{},"l":{"docs":{},"o":{"docs":{},"g":{"docs":{},"/":{"docs":{},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{},"/":{"docs":{},"h":{"docs":{},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{},".":{"docs":{},"a":{"docs":{},"c":{"docs":{},"c":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},".":{"docs":{},"l":{"docs":{},"o":{"docs":{},"g":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"=":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.005110732538330494},"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.019520851818988466}},">":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.003703703703703704}}}},"c":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.008517887563884156}},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}},"的":{"docs":{},"全":{"docs":{},"路":{"docs":{},"径":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.003703703703703704}}}}}}}}},"i":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"、":{"docs":{},"和":{"docs":{},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{},"a":{"docs":{},"l":{"docs":{},"三":{"docs":{},"种":{"docs":{},"模":{"docs":{},"式":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}},"_":{"docs":{},"m":{"docs":{},"a":{"docs":{},"x":{"docs":{},"_":{"docs":{},"b":{"docs":{},"o":{"docs":{},"d":{"docs":{},"y":{"docs":{},"_":{"docs":{},"s":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}}}}}}}}}},"u":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"、":{"docs":{},"y":{"docs":{},"a":{"docs":{},"r":{"docs":{},"n":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}},".":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}},"e":{"docs":{},"a":{"docs":{},"n":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}},"o":{"docs":{},"s":{"docs":{},"e":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}},"d":{"docs":{},",":{"docs":{},"u":{"docs":{},"n":{"docs":{},"i":{"docs":{},"t":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}},"格":{"docs":{},"式":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}},"]":{"docs":{},"#":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.008517887563884156}}}},"i":{"docs":{},"g":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}},"u":{"docs":{},"r":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0034071550255536627},"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.011535048802129548}},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},",":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.006211180124223602}}}}}}}}}}}}},"n":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314},"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.008873114463176575}}}}}},"t":{"docs":{},"r":{"docs":{},"o":{"docs":{},"l":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.00354924578527063}}}}}}},"m":{"docs":{},"p":{"docs":{},"i":{"docs":{},"l":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0034071550255536627}}}}},".":{"docs":{},"m":{"docs":{},"y":{"docs":{},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{},".":{"docs":{},"j":{"docs":{},"d":{"docs":{},"b":{"docs":{},"c":{"docs":{},".":{"docs":{},"d":{"docs":{},"r":{"docs":{},"i":{"docs":{},"v":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}}}},"m":{"docs":{},"i":{"docs":{},"t":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}}}},"o":{"docs":{},"n":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}},"/":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"m":{"docs":{},"o":{"docs":{},"n":{"docs":{},".":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"t":{"docs":{},"i":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}}},"h":{"docs":{},"a":{"docs":{},"d":{"docs":{},"o":{"docs":{},"o":{"docs":{},"p":{"docs":{},"/":{"docs":{},"h":{"docs":{},"a":{"docs":{},"d":{"docs":{},"o":{"docs":{},"o":{"docs":{},"p":{"docs":{},".":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"t":{"docs":{},"i":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"l":{"docs":{},"l":{"docs":{},"a":{"docs":{},"t":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}},"r":{"docs":{},"e":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}}}},"u":{"docs":{},"n":{"docs":{},"t":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}},"\"":{"docs":{},"选":{"docs":{},"项":{"docs":{},"来":{"docs":{},"指":{"docs":{},"定":{"docs":{},"路":{"docs":{},"径":{"docs":{},"。":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}}}},"+":{"docs":{},"+":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}},"a":{"docs":{},"s":{"docs":{},"e":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}},"c":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}},"d":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0034071550255536627}}},"h":{"docs":{},"e":{"docs":{},"c":{"docs":{},"k":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0034071550255536627},"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}},"k":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{},"i":{"docs":{},"g":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.005110732538330494}},":":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}}},"m":{"docs":{},"o":{"docs":{},"d":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}},"o":{"docs":{},"w":{"docs":{},"n":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}},"o":{"docs":{},"s":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}},"a":{"docs":{},"r":{"docs":{},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}},"n":{"docs":{},"p":{"docs":{},"m":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0034071550255536627}}}}},"p":{"docs":{},"u":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.00354924578527063}}}},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"t":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}}}}}},"u":{"docs":{},"r":{"docs":{},"r":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}},"g":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}},"a":{"docs":{},"n":{"docs":{},"t":{"docs":{},"t":{"docs":{},"图":{"docs":{},"纵":{"docs":{},"轴":{"docs":{},"是":{"docs":{},"某":{"docs":{},"个":{"docs":{},"流":{"docs":{},"程":{"docs":{},"实":{"docs":{},"例":{"docs":{},"下":{"docs":{},"的":{"docs":{},"任":{"docs":{},"务":{"docs":{},"实":{"docs":{},"例":{"docs":{},"的":{"docs":{},"拓":{"docs":{},"扑":{"docs":{},"排":{"docs":{},"序":{"docs":{},",":{"docs":{},"横":{"docs":{},"轴":{"docs":{},"是":{"docs":{},"任":{"docs":{},"务":{"docs":{},"实":{"docs":{},"例":{"docs":{},"的":{"docs":{},"运":{"docs":{},"行":{"docs":{},"时":{"docs":{},"间":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"c":{"docs":{},"c":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0034071550255536627}}}},"i":{"docs":{},"t":{"docs":{},"@":{"docs":{},"g":{"docs":{},"i":{"docs":{},"t":{"docs":{},".":{"docs":{},"a":{"docs":{},"n":{"docs":{},"a":{"docs":{},"l":{"docs":{},"y":{"docs":{},"s":{"docs":{},"y":{"docs":{},"s":{"docs":{},".":{"docs":{},"c":{"docs":{},"n":{"docs":{},":":{"docs":{},"a":{"docs":{},"n":{"docs":{},"a":{"docs":{},"l":{"docs":{},"y":{"docs":{},"s":{"docs":{},"y":{"docs":{},"s":{"docs":{},"_":{"docs":{},"c":{"docs":{},"h":{"docs":{},"a":{"docs":{},"n":{"docs":{},"g":{"docs":{},"s":{"docs":{},"h":{"docs":{},"a":{"docs":{},"/":{"docs":{},"e":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},".":{"docs":{},"g":{"docs":{},"i":{"docs":{},"t":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"p":{"docs":{},"g":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"c":{"docs":{},"k":{"docs":{},"=":{"0":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}},"docs":{}}}}}}}}},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"p":{"docs":{},"=":{"docs":{},"e":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0034071550255536627}}}}}}}}}}}}}},"a":{"docs":{},"n":{"docs":{},"t":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}}}}}},".":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}}}},"h":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}},"a":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852},"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}},"d":{"docs":{},"o":{"docs":{},"o":{"docs":{},"p":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0026619343389529724}},"_":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{},"_":{"docs":{},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{},"=":{"docs":{},"/":{"docs":{},"o":{"docs":{},"p":{"docs":{},"t":{"docs":{},"/":{"docs":{},"s":{"docs":{},"o":{"docs":{},"f":{"docs":{},"t":{"docs":{},"/":{"docs":{},"h":{"docs":{},"a":{"docs":{},"d":{"docs":{},"o":{"docs":{},"o":{"docs":{},"p":{"docs":{},"/":{"docs":{},"e":{"docs":{},"t":{"docs":{},"c":{"docs":{},"/":{"docs":{},"h":{"docs":{},"a":{"docs":{},"d":{"docs":{},"o":{"docs":{},"o":{"docs":{},"p":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"h":{"docs":{},"o":{"docs":{},"m":{"docs":{},"e":{"docs":{},"=":{"docs":{},"\"":{"docs":{},"/":{"docs":{},"o":{"docs":{},"p":{"docs":{},"t":{"docs":{},"/":{"docs":{},"s":{"docs":{},"o":{"docs":{},"f":{"docs":{},"t":{"docs":{},"/":{"docs":{},"h":{"docs":{},"a":{"docs":{},"d":{"docs":{},"o":{"docs":{},"o":{"docs":{},"p":{"docs":{},"\"":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}}}}}},"/":{"docs":{},"o":{"docs":{},"p":{"docs":{},"t":{"docs":{},"/":{"docs":{},"s":{"docs":{},"o":{"docs":{},"f":{"docs":{},"t":{"docs":{},"/":{"docs":{},"h":{"docs":{},"a":{"docs":{},"d":{"docs":{},"o":{"docs":{},"o":{"docs":{},"p":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}},":":{"docs":{},"标":{"docs":{},"识":{"docs":{},"流":{"docs":{},"程":{"docs":{},"实":{"docs":{},"例":{"docs":{},"调":{"docs":{},"度":{"docs":{},"的":{"docs":{},"机":{"docs":{},"器":{"docs":{},"i":{"docs":{},"p":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}},"e":{"docs":{},"l":{"docs":{},"p":{"docs":{},"给":{"docs":{},"出":{"docs":{},"说":{"docs":{},"明":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{},"b":{"docs":{},"e":{"docs":{},"a":{"docs":{},"t":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}}}}}}}}}},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}},":":{"docs":{},"/":{"docs":{},"/":{"1":{"9":{"2":{"docs":{},".":{"1":{"6":{"8":{"docs":{},".":{"2":{"2":{"0":{"docs":{},".":{"1":{"8":{"1":{"docs":{},":":{"1":{"2":{"3":{"4":{"5":{"docs":{},";":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}},"docs":{}},"docs":{}},"2":{"0":{"4":{"docs":{},":":{"1":{"2":{"3":{"4":{"5":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}},"docs":{}},"docs":{}},"docs":{}}},"docs":{}},"docs":{}},"docs":{}}},"docs":{}},"docs":{}},"docs":{}}},"docs":{}},"docs":{}},"docs":{},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{},"a":{"docs":{},"l":{"docs":{},"h":{"docs":{},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}},":":{"8":{"8":{"8":{"8":{"docs":{},"/":{"docs":{},"#":{"docs":{},"/":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}},")":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}}}}}}}}}},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{},".":{"docs":{},"o":{"docs":{},"r":{"docs":{},"g":{"docs":{},"/":{"docs":{},"d":{"docs":{},"o":{"docs":{},"w":{"docs":{},"n":{"docs":{},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{},"/":{"docs":{},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"_":{"docs":{},"f":{"docs":{},"l":{"docs":{},"v":{"docs":{},"_":{"docs":{},"m":{"docs":{},"o":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0034071550255536627}}}}}}}}}}},"g":{"docs":{},"z":{"docs":{},"i":{"docs":{},"p":{"docs":{},"_":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"c":{"docs":{},"_":{"docs":{},"m":{"docs":{},"o":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0034071550255536627}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"s":{"docs":{},"l":{"docs":{},"_":{"docs":{},"m":{"docs":{},"o":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.005110732538330494}}}}}}}}}},"t":{"docs":{},"u":{"docs":{},"b":{"docs":{},"_":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{},"u":{"docs":{},"s":{"docs":{},"_":{"docs":{},"m":{"docs":{},"o":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.005110732538330494}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},":":{"docs":{},"/":{"docs":{},"/":{"docs":{},"n":{"docs":{},"o":{"docs":{},"d":{"docs":{},"e":{"docs":{},"j":{"docs":{},"s":{"docs":{},".":{"docs":{},"o":{"docs":{},"r":{"docs":{},"g":{"docs":{},"/":{"docs":{},"d":{"docs":{},"o":{"docs":{},"w":{"docs":{},"n":{"docs":{},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{},"/":{"docs":{},"r":{"docs":{},"e":{"docs":{},"l":{"docs":{},"e":{"docs":{},"a":{"docs":{},"s":{"docs":{},"e":{"docs":{},"/":{"docs":{},"v":{"8":{"docs":{},".":{"9":{"docs":{},".":{"4":{"docs":{},"/":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}},"docs":{}}},"docs":{}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"u":{"docs":{},"p":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.005110732538330494}}}},"d":{"docs":{},"f":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0026619343389529724}}}},"h":{"docs":{},":":{"docs":{},"m":{"docs":{},"m":{"docs":{},":":{"docs":{},"s":{"docs":{},"s":{"docs":{},".":{"docs":{},"s":{"docs":{},"s":{"docs":{},"s":{"docs":{},"}":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.007985803016858917}}}}}}}}}}}}}},"i":{"docs":{},"v":{"docs":{},"e":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}},"_":{"docs":{},"h":{"docs":{},"o":{"docs":{},"m":{"docs":{},"e":{"docs":{},"=":{"docs":{},"/":{"docs":{},"o":{"docs":{},"p":{"docs":{},"t":{"docs":{},"/":{"docs":{},"s":{"docs":{},"o":{"docs":{},"f":{"docs":{},"t":{"docs":{},"/":{"docs":{},"h":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}}}}}}}}},"i":{"6":{"8":{"6":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}},"docs":{}},"docs":{}},"docs":{},"n":{"docs":{},"p":{"docs":{},"u":{"docs":{},"t":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}},"d":{"docs":{},"e":{"docs":{},"x":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}},".":{"docs":{},"h":{"docs":{},"t":{"docs":{},"m":{"docs":{},"l":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}},";":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}}}},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"l":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.018739352640545145}},"l":{"docs":{},"_":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{},"i":{"docs":{},"g":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}},"f":{"docs":{},"o":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.00354924578527063}},"r":{"docs":{},"m":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0026619343389529724}}}}}}},"p":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314},"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}},"/":{"docs":{},"主":{"docs":{},"机":{"docs":{},"名":{"docs":{},":":{"docs":{},"输":{"docs":{},"入":{"docs":{},"连":{"docs":{},"接":{"docs":{},"h":{"docs":{},"i":{"docs":{},"v":{"docs":{},"e":{"docs":{},"的":{"docs":{},"i":{"docs":{},"p":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}},"m":{"docs":{},"y":{"docs":{},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{},"的":{"docs":{},"i":{"docs":{},"p":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}},"p":{"docs":{},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{},"g":{"docs":{},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{},"的":{"docs":{},"i":{"docs":{},"p":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}},"s":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"k":{"docs":{},"的":{"docs":{},"i":{"docs":{},"p":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}},"z":{"docs":{},"o":{"docs":{},"o":{"docs":{},"k":{"docs":{},"e":{"docs":{},"e":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"的":{"docs":{},"集":{"docs":{},"群":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}},"t":{"docs":{},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}},"s":{"docs":{},"=":{"docs":{},"a":{"docs":{},"r":{"docs":{},"k":{"0":{"docs":{},",":{"docs":{},"a":{"docs":{},"r":{"docs":{},"k":{"1":{"docs":{},",":{"docs":{},"a":{"docs":{},"r":{"docs":{},"k":{"2":{"docs":{},",":{"docs":{},"a":{"docs":{},"r":{"docs":{},"k":{"3":{"docs":{},",":{"docs":{},"a":{"docs":{},"r":{"docs":{},"k":{"4":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}},"docs":{}}}}}},"docs":{}}}}}},"docs":{}}}}}},"docs":{}}}}}},"docs":{}}}}}}},"d":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"i":{"docs":{},"f":{"docs":{},"i":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}}}}}}}},"l":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}},"g":{"docs":{},"n":{"docs":{},"o":{"docs":{},"r":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}},"m":{"docs":{},"p":{"docs":{},"l":{"docs":{},"e":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},",":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}},"o":{"docs":{},"r":{"docs":{},"t":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}},"j":{"docs":{},"a":{"docs":{},"r":{"docs":{},"s":{"docs":{},"、":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}},"包":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}},",":{"docs":{},"用":{"docs":{},"于":{"docs":{},"对":{"docs":{},"应":{"docs":{},"任":{"docs":{},"务":{"docs":{},"的":{"docs":{},"运":{"docs":{},"行":{"docs":{},"。":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}},"v":{"docs":{},"a":{"docs":{},"程":{"docs":{},"序":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}},"_":{"docs":{},"h":{"docs":{},"o":{"docs":{},"m":{"docs":{},"e":{"docs":{},"=":{"docs":{},"\"":{"docs":{},"/":{"docs":{},"o":{"docs":{},"p":{"docs":{},"t":{"docs":{},"/":{"docs":{},"s":{"docs":{},"o":{"docs":{},"f":{"docs":{},"t":{"docs":{},"/":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},"\"":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}}}},"/":{"docs":{},"o":{"docs":{},"p":{"docs":{},"t":{"docs":{},"/":{"docs":{},"s":{"docs":{},"o":{"docs":{},"f":{"docs":{},"t":{"docs":{},"/":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}}}}}}}}}}},"d":{"docs":{},"b":{"docs":{},"c":{"docs":{},"连":{"docs":{},"接":{"docs":{},"参":{"docs":{},"数":{"docs":{},":":{"docs":{},"用":{"docs":{},"于":{"docs":{},"h":{"docs":{},"i":{"docs":{},"v":{"docs":{},"e":{"docs":{},"连":{"docs":{},"接":{"docs":{},"的":{"docs":{},"参":{"docs":{},"数":{"docs":{},"设":{"docs":{},"置":{"docs":{},",":{"docs":{},"以":{"docs":{},"j":{"docs":{},"s":{"docs":{},"o":{"docs":{},"n":{"docs":{},"形":{"docs":{},"式":{"docs":{},"填":{"docs":{},"写":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}},"m":{"docs":{},"y":{"docs":{},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{},"连":{"docs":{},"接":{"docs":{},"的":{"docs":{},"参":{"docs":{},"数":{"docs":{},"设":{"docs":{},"置":{"docs":{},",":{"docs":{},"以":{"docs":{},"j":{"docs":{},"s":{"docs":{},"o":{"docs":{},"n":{"docs":{},"形":{"docs":{},"式":{"docs":{},"填":{"docs":{},"写":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}},"p":{"docs":{},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{},"g":{"docs":{},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{},"连":{"docs":{},"接":{"docs":{},"的":{"docs":{},"参":{"docs":{},"数":{"docs":{},"设":{"docs":{},"置":{"docs":{},",":{"docs":{},"以":{"docs":{},"j":{"docs":{},"s":{"docs":{},"o":{"docs":{},"n":{"docs":{},"形":{"docs":{},"式":{"docs":{},"填":{"docs":{},"写":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"k":{"docs":{},"连":{"docs":{},"接":{"docs":{},"的":{"docs":{},"参":{"docs":{},"数":{"docs":{},"设":{"docs":{},"置":{"docs":{},",":{"docs":{},"以":{"docs":{},"j":{"docs":{},"s":{"docs":{},"o":{"docs":{},"n":{"docs":{},"形":{"docs":{},"式":{"docs":{},"填":{"docs":{},"写":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}},"z":{"docs":{},"o":{"docs":{},"o":{"docs":{},"k":{"docs":{},"e":{"docs":{},"e":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"连":{"docs":{},"接":{"docs":{},"的":{"docs":{},"参":{"docs":{},"数":{"docs":{},"设":{"docs":{},"置":{"docs":{},",":{"docs":{},"以":{"docs":{},"j":{"docs":{},"s":{"docs":{},"o":{"docs":{},"n":{"docs":{},"形":{"docs":{},"式":{"docs":{},"填":{"docs":{},"写":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},":":{"docs":{},"m":{"docs":{},"y":{"docs":{},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{},":":{"docs":{},"/":{"docs":{},"/":{"docs":{},"$":{"docs":{},"{":{"docs":{},"i":{"docs":{},"p":{"docs":{},"}":{"docs":{},":":{"3":{"3":{"0":{"6":{"docs":{},"/":{"docs":{},"e":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"?":{"docs":{},"c":{"docs":{},"h":{"docs":{},"a":{"docs":{},"r":{"docs":{},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"e":{"docs":{},"n":{"docs":{},"c":{"docs":{},"o":{"docs":{},"d":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"=":{"docs":{},"u":{"docs":{},"t":{"docs":{},"f":{"8":{"docs":{},"&":{"docs":{},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},"l":{"docs":{},"=":{"docs":{},"f":{"docs":{},"a":{"docs":{},"l":{"docs":{},"s":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}}}}}}}}}}}}}}}}},"k":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}},"s":{"docs":{},"p":{"docs":{},"l":{"docs":{},"u":{"docs":{},"m":{"docs":{},"b":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}},"o":{"docs":{},"b":{"docs":{},"s":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}},"n":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.022222222222222223}},")":{"docs":{},"]":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}},"/":{"2":{"4":{"docs":{},"/":{"6":{"0":{"docs":{},"]":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}},"docs":{}},"docs":{}},"]":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}},"docs":{}},"docs":{}},"]":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"=":{"docs":{},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"h":{"docs":{},"a":{"docs":{},"t":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},".":{"docs":{},"m":{"docs":{},"y":{"docs":{},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{},".":{"docs":{},"j":{"docs":{},"d":{"docs":{},"b":{"docs":{},"c":{"docs":{},".":{"docs":{},"d":{"docs":{},"r":{"docs":{},"i":{"docs":{},"v":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}}}}}}}}}}}}}}}}}}}}}},"n":{"docs":{},"o":{"docs":{},"d":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}},"e":{"docs":{},"t":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.005110732538330494}}}}}}},"e":{"docs":{},"d":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0026619343389529724}}}}},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.034071550255536626}},"!":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}},"\"":{"docs":{},")":{"docs":{},",":{"docs":{},"可":{"docs":{},"以":{"docs":{},"确":{"docs":{},"认":{"docs":{},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{},"服":{"docs":{},"务":{"docs":{},"是":{"docs":{},"否":{"docs":{},"正":{"docs":{},"常":{"docs":{},"运":{"docs":{},"行":{"docs":{},"。":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}}}}}}}}}}}}}}}}},":":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0034071550255536627}}},"安":{"docs":{},"装":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}},"服":{"docs":{},"务":{"docs":{},"程":{"docs":{},"序":{"docs":{},"默":{"docs":{},"认":{"docs":{},"以":{"docs":{},"n":{"docs":{},"o":{"docs":{},"b":{"docs":{},"o":{"docs":{},"d":{"docs":{},"y":{"docs":{},"身":{"docs":{},"份":{"docs":{},"运":{"docs":{},"行":{"docs":{},",":{"docs":{},"建":{"docs":{},"议":{"docs":{},"为":{"docs":{},"其":{"docs":{},"创":{"docs":{},"建":{"docs":{},"专":{"docs":{},"门":{"docs":{},"的":{"docs":{},"用":{"docs":{},"户":{"docs":{},"账":{"docs":{},"号":{"docs":{},",":{"docs":{},"以":{"docs":{},"便":{"docs":{},"更":{"docs":{},"准":{"docs":{},"确":{"docs":{},"地":{"docs":{},"控":{"docs":{},"制":{"docs":{},"其":{"docs":{},"访":{"docs":{},"问":{"docs":{},"权":{"docs":{},"限":{"docs":{},",":{"docs":{},"增":{"docs":{},"加":{"docs":{},"灵":{"docs":{},"活":{"docs":{},"性":{"docs":{},"、":{"docs":{},"降":{"docs":{},"低":{"docs":{},"安":{"docs":{},"全":{"docs":{},"风":{"docs":{},"险":{"docs":{},"。":{"docs":{},"如":{"docs":{},":":{"docs":{},"创":{"docs":{},"建":{"docs":{},"一":{"docs":{},"个":{"docs":{},"名":{"docs":{},"为":{"docs":{},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{},"的":{"docs":{},"用":{"docs":{},"户":{"docs":{},",":{"docs":{},"不":{"docs":{},"建":{"docs":{},"立":{"docs":{},"宿":{"docs":{},"主":{"docs":{},"目":{"docs":{},"录":{"docs":{},",":{"docs":{},"也":{"docs":{},"禁":{"docs":{},"止":{"docs":{},"登":{"docs":{},"录":{"docs":{},"到":{"docs":{},"s":{"docs":{},"h":{"docs":{},"e":{"docs":{},"l":{"docs":{},"l":{"docs":{},"环":{"docs":{},"境":{"docs":{},"。":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"的":{"docs":{},"运":{"docs":{},"行":{"docs":{},"控":{"docs":{},"制":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}},"配":{"docs":{},"置":{"docs":{},"及":{"docs":{},"运":{"docs":{},"行":{"docs":{},"需":{"docs":{},"要":{"docs":{},"p":{"docs":{},"c":{"docs":{},"r":{"docs":{},"e":{"docs":{},"、":{"docs":{},"z":{"docs":{},"l":{"docs":{},"i":{"docs":{},"b":{"docs":{},"等":{"docs":{},"软":{"docs":{},"件":{"docs":{},"包":{"docs":{},"的":{"docs":{},"支":{"docs":{},"持":{"docs":{},",":{"docs":{},"因":{"docs":{},"此":{"docs":{},"应":{"docs":{},"预":{"docs":{},"先":{"docs":{},"安":{"docs":{},"装":{"docs":{},"这":{"docs":{},"些":{"docs":{},"软":{"docs":{},"件":{"docs":{},"的":{"docs":{},"开":{"docs":{},"发":{"docs":{},"包":{"docs":{},"(":{"docs":{},"d":{"docs":{},"e":{"docs":{},"v":{"docs":{},"e":{"docs":{},"l":{"docs":{},")":{"docs":{},",":{"docs":{},"以":{"docs":{},"便":{"docs":{},"提":{"docs":{},"供":{"docs":{},"相":{"docs":{},"应":{"docs":{},"的":{"docs":{},"库":{"docs":{},"和":{"docs":{},"头":{"docs":{},"文":{"docs":{},"件":{"docs":{},",":{"docs":{},"确":{"docs":{},"保":{"docs":{},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{},"的":{"docs":{},"安":{"docs":{},"装":{"docs":{},"顺":{"docs":{},"利":{"docs":{},"完":{"docs":{},"成":{"docs":{},"。":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"程":{"docs":{},"序":{"docs":{},"的":{"docs":{},"监":{"docs":{},"听":{"docs":{},"状":{"docs":{},"态":{"docs":{},",":{"docs":{},"或":{"docs":{},"者":{"docs":{},"在":{"docs":{},"浏":{"docs":{},"览":{"docs":{},"器":{"docs":{},"中":{"docs":{},"访":{"docs":{},"问":{"docs":{},"此":{"docs":{},"w":{"docs":{},"e":{"docs":{},"b":{"docs":{},"服":{"docs":{},"务":{"docs":{},"(":{"docs":{},"默":{"docs":{},"认":{"docs":{},"页":{"docs":{},"面":{"docs":{},"将":{"docs":{},"显":{"docs":{},"示":{"docs":{},"\"":{"docs":{},"w":{"docs":{},"e":{"docs":{},"l":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"o":{"docs":{},"d":{"docs":{},"e":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.005110732538330494}},"包":{"docs":{},"下":{"docs":{},"载":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}},"安":{"docs":{},"装":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}},"h":{"docs":{},"u":{"docs":{},"p":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}},".":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}},"p":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"w":{"docs":{},"d":{"docs":{},":":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.00354924578527063}}}}}}}}},"t":{"docs":{},"e":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}},"p":{"docs":{},"m":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.01192504258943782}}}},"u":{"docs":{},"m":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}},"b":{"docs":{},"e":{"docs":{},"r":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.005323868677905945}}}}}}}},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{},"p":{"docs":{},"u":{"docs":{},"t":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}},"格":{"docs":{},"式":{"docs":{},",":{"docs":{},"这":{"docs":{},"里":{"docs":{},"可":{"docs":{},"以":{"docs":{},"设":{"docs":{},"置":{"docs":{},"用":{"docs":{},"户":{"docs":{},"自":{"docs":{},"定":{"docs":{},"义":{"docs":{},"参":{"docs":{},"数":{"docs":{},"的":{"docs":{},"输":{"docs":{},"入":{"docs":{},",":{"docs":{},"比":{"docs":{},"如":{"docs":{},":":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"k":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}},"p":{"docs":{},"e":{"docs":{},"n":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}},"s":{"docs":{},"s":{"docs":{},"l":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}},"s":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314},"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}},".":{"docs":{},"p":{"docs":{},"u":{"docs":{},"t":{"docs":{},"e":{"docs":{},"n":{"docs":{},"v":{"docs":{},"(":{"docs":{},"'":{"docs":{},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{},"'":{"docs":{},",":{"docs":{},"'":{"docs":{},"%":{"docs":{},"s":{"docs":{},"'":{"docs":{},"%":{"docs":{},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{},")":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}}}}}}}}}}}}}},"r":{"docs":{},"g":{"docs":{},".":{"docs":{},"q":{"docs":{},"u":{"docs":{},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{},"z":{"docs":{},".":{"docs":{},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"a":{"docs":{},"s":{"docs":{},"o":{"docs":{},"u":{"docs":{},"r":{"docs":{},"c":{"docs":{},"e":{"docs":{},".":{"docs":{},"m":{"docs":{},"y":{"docs":{},"d":{"docs":{},"s":{"docs":{},".":{"docs":{},"d":{"docs":{},"r":{"docs":{},"i":{"docs":{},"v":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}},"m":{"docs":{},"a":{"docs":{},"x":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"n":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}},"p":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"w":{"docs":{},"o":{"docs":{},"r":{"docs":{},"d":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}},"u":{"docs":{},"r":{"docs":{},"l":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}},"s":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"i":{"docs":{},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"r":{"docs":{},"i":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"i":{"docs":{},"m":{"docs":{},"p":{"docs":{},"l":{"docs":{},".":{"docs":{},"j":{"docs":{},"d":{"docs":{},"b":{"docs":{},"c":{"docs":{},"j":{"docs":{},"o":{"docs":{},"b":{"docs":{},"s":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"e":{"docs":{},".":{"docs":{},"j":{"docs":{},"o":{"docs":{},"b":{"docs":{},"s":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"e":{"docs":{},"t":{"docs":{},"x":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}},"s":{"docs":{},"t":{"docs":{},"d":{"docs":{},"j":{"docs":{},"d":{"docs":{},"b":{"docs":{},"c":{"docs":{},"d":{"docs":{},"e":{"docs":{},"l":{"docs":{},"e":{"docs":{},"g":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"j":{"docs":{},"o":{"docs":{},"b":{"docs":{},"s":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"e":{"docs":{},".":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}},"u":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"c":{"docs":{},"k":{"docs":{},"i":{"docs":{},"n":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}}}}}}}},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"a":{"docs":{},"s":{"docs":{},"o":{"docs":{},"u":{"docs":{},"r":{"docs":{},"c":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}},"r":{"docs":{},"i":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"d":{"docs":{},"e":{"docs":{},"l":{"docs":{},"e":{"docs":{},"g":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}}}}}}},"i":{"docs":{},"s":{"docs":{},"c":{"docs":{},"l":{"docs":{},"u":{"docs":{},"s":{"docs":{},"t":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"f":{"docs":{},"i":{"docs":{},"r":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},"h":{"docs":{},"o":{"docs":{},"l":{"docs":{},"d":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}}}},"t":{"docs":{},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{},"e":{"docs":{},"p":{"docs":{},"r":{"docs":{},"e":{"docs":{},"f":{"docs":{},"i":{"docs":{},"x":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"t":{"docs":{},"i":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},".":{"docs":{},"i":{"docs":{},"n":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"n":{"docs":{},"c":{"docs":{},"e":{"docs":{},"i":{"docs":{},"d":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}},"m":{"docs":{},"a":{"docs":{},"k":{"docs":{},"e":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"t":{"docs":{},"h":{"docs":{},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"d":{"docs":{},"d":{"docs":{},"a":{"docs":{},"e":{"docs":{},"m":{"docs":{},"o":{"docs":{},"n":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"i":{"docs":{},"m":{"docs":{},"p":{"docs":{},"l":{"docs":{},".":{"docs":{},"s":{"docs":{},"i":{"docs":{},"m":{"docs":{},"p":{"docs":{},"l":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"d":{"docs":{},"p":{"docs":{},"o":{"docs":{},"o":{"docs":{},"l":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}}}}}}}}}},"t":{"docs":{},"h":{"docs":{},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"d":{"docs":{},"p":{"docs":{},"o":{"docs":{},"o":{"docs":{},"l":{"docs":{},".":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}},"m":{"docs":{},"a":{"docs":{},"k":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"d":{"docs":{},"s":{"docs":{},"d":{"docs":{},"a":{"docs":{},"e":{"docs":{},"m":{"docs":{},"o":{"docs":{},"n":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}}}}},"t":{"docs":{},"h":{"docs":{},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"d":{"docs":{},"c":{"docs":{},"o":{"docs":{},"u":{"docs":{},"n":{"docs":{},"t":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}},"p":{"docs":{},"r":{"docs":{},"i":{"docs":{},"o":{"docs":{},"r":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"p":{"docs":{},"y":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"n":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852},"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}},"程":{"docs":{},"序":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}},"_":{"docs":{},"h":{"docs":{},"o":{"docs":{},"m":{"docs":{},"e":{"docs":{},"=":{"docs":{},"\"":{"docs":{},"/":{"docs":{},"o":{"docs":{},"p":{"docs":{},"t":{"docs":{},"/":{"docs":{},"s":{"docs":{},"o":{"docs":{},"f":{"docs":{},"t":{"docs":{},"/":{"docs":{},"p":{"docs":{},"y":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"n":{"docs":{},"\"":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}}}}}},"/":{"docs":{},"o":{"docs":{},"p":{"docs":{},"t":{"docs":{},"/":{"docs":{},"s":{"docs":{},"o":{"docs":{},"f":{"docs":{},"t":{"docs":{},"/":{"docs":{},"p":{"docs":{},"y":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"n":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}}}}}}}}}},"任":{"docs":{},"务":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}},"a":{"docs":{},"g":{"docs":{},"e":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0034071550255536627}}}},"c":{"docs":{},"k":{"docs":{},"a":{"docs":{},"g":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}},"r":{"docs":{},"a":{"docs":{},"l":{"docs":{},"l":{"docs":{},"e":{"docs":{},"l":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}},"t":{"docs":{},"h":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}},",":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0026619343389529724}}},".":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}},"=":{"docs":{},"\"":{"docs":{},"%":{"docs":{},"s":{"docs":{},"/":{"docs":{},"b":{"docs":{},"i":{"docs":{},"n":{"docs":{},":":{"docs":{},"%":{"docs":{},"s":{"docs":{},"/":{"docs":{},"b":{"docs":{},"i":{"docs":{},"n":{"docs":{},":":{"docs":{},"%":{"docs":{},"s":{"docs":{},"/":{"docs":{},"b":{"docs":{},"i":{"docs":{},"n":{"docs":{},":":{"docs":{},"%":{"docs":{},"s":{"docs":{},"\"":{"docs":{},"%":{"docs":{},"(":{"docs":{},"h":{"docs":{},"a":{"docs":{},"d":{"docs":{},"o":{"docs":{},"o":{"docs":{},"p":{"docs":{},"_":{"docs":{},"h":{"docs":{},"o":{"docs":{},"m":{"docs":{},"e":{"docs":{},",":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},"_":{"docs":{},"h":{"docs":{},"o":{"docs":{},"m":{"docs":{},"e":{"docs":{},",":{"docs":{},"p":{"docs":{},"y":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"n":{"docs":{},"_":{"docs":{},"h":{"docs":{},"o":{"docs":{},"m":{"docs":{},"e":{"docs":{},",":{"docs":{},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{},")":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"$":{"docs":{},"h":{"docs":{},"a":{"docs":{},"d":{"docs":{},"o":{"docs":{},"o":{"docs":{},"p":{"docs":{},"_":{"docs":{},"h":{"docs":{},"o":{"docs":{},"m":{"docs":{},"e":{"docs":{},"/":{"docs":{},"b":{"docs":{},"i":{"docs":{},"n":{"docs":{},":":{"docs":{},"$":{"docs":{},"s":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"k":{"docs":{},"_":{"docs":{},"h":{"docs":{},"o":{"docs":{},"m":{"docs":{},"e":{"1":{"docs":{},"/":{"docs":{},"b":{"docs":{},"i":{"docs":{},"n":{"docs":{},":":{"docs":{},"$":{"docs":{},"s":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"k":{"docs":{},"_":{"docs":{},"h":{"docs":{},"o":{"docs":{},"m":{"docs":{},"e":{"2":{"docs":{},"/":{"docs":{},"b":{"docs":{},"i":{"docs":{},"n":{"docs":{},":":{"docs":{},"$":{"docs":{},"p":{"docs":{},"y":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"n":{"docs":{},"_":{"docs":{},"h":{"docs":{},"o":{"docs":{},"m":{"docs":{},"e":{"docs":{},"/":{"docs":{},"b":{"docs":{},"i":{"docs":{},"n":{"docs":{},":":{"docs":{},"$":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},"_":{"docs":{},"h":{"docs":{},"o":{"docs":{},"m":{"docs":{},"e":{"docs":{},"/":{"docs":{},"b":{"docs":{},"i":{"docs":{},"n":{"docs":{},":":{"docs":{},"$":{"docs":{},"h":{"docs":{},"i":{"docs":{},"v":{"docs":{},"e":{"docs":{},"_":{"docs":{},"h":{"docs":{},"o":{"docs":{},"m":{"docs":{},"e":{"docs":{},"/":{"docs":{},"b":{"docs":{},"i":{"docs":{},"n":{"docs":{},":":{"docs":{},"$":{"docs":{},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}}}}}}}}}}}}}}}}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"/":{"docs":{},"e":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"/":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}},"o":{"docs":{},"s":{"docs":{},".":{"docs":{},"e":{"docs":{},"n":{"docs":{},"v":{"docs":{},"i":{"docs":{},"r":{"docs":{},"o":{"docs":{},"n":{"docs":{},"[":{"docs":{},"'":{"docs":{},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{},"'":{"docs":{},"]":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}}}}}}}}}},"c":{"docs":{},"r":{"docs":{},"e":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.005323868677905945}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"。":{"docs":{},"\"":{"docs":{},"/":{"docs":{},"e":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"\"":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}}}}}}}}}}}},"i":{"docs":{},"d":{"docs":{},"f":{"docs":{},"=":{"docs":{},"\"":{"docs":{},"/":{"docs":{},"u":{"docs":{},"s":{"docs":{},"r":{"docs":{},"/":{"docs":{},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{},"a":{"docs":{},"l":{"docs":{},"/":{"docs":{},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{},"/":{"docs":{},"l":{"docs":{},"o":{"docs":{},"g":{"docs":{},"s":{"docs":{},"/":{"docs":{},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{},".":{"docs":{},"p":{"docs":{},"i":{"docs":{},"d":{"docs":{},"\"":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"r":{"docs":{},"e":{"docs":{},"f":{"docs":{},"i":{"docs":{},"x":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}},"=":{"docs":{},"/":{"docs":{},"u":{"docs":{},"s":{"docs":{},"r":{"docs":{},"/":{"docs":{},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{},"a":{"docs":{},"l":{"docs":{},"/":{"docs":{},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0034071550255536627}}}}}}}}}}}}}}}}}}}}}}},"o":{"docs":{},"g":{"docs":{},"=":{"docs":{},"\"":{"docs":{},"/":{"docs":{},"u":{"docs":{},"s":{"docs":{},"r":{"docs":{},"/":{"docs":{},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{},"a":{"docs":{},"l":{"docs":{},"/":{"docs":{},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{},"/":{"docs":{},"s":{"docs":{},"b":{"docs":{},"i":{"docs":{},"n":{"docs":{},"/":{"docs":{},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{},"\"":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"x":{"docs":{},"y":{"docs":{},"_":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"n":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"_":{"docs":{},"t":{"docs":{},"i":{"docs":{},"m":{"docs":{},"e":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}}}}}}}}}},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},"_":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}}}},"p":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"d":{"docs":{},"_":{"docs":{},"t":{"docs":{},"i":{"docs":{},"m":{"docs":{},"e":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}}}}}}},"s":{"docs":{},"e":{"docs":{},"n":{"docs":{},"d":{"docs":{},"_":{"docs":{},"t":{"docs":{},"i":{"docs":{},"m":{"docs":{},"e":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}}}}},"t":{"docs":{},"_":{"docs":{},"h":{"docs":{},"e":{"docs":{},"a":{"docs":{},"d":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.01192504258943782}}}}}}}}}}}}},"c":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}},".":{"docs":{},"e":{"docs":{},"x":{"docs":{},"e":{"docs":{},"c":{"docs":{},".":{"docs":{},"b":{"docs":{},"a":{"docs":{},"s":{"docs":{},"e":{"docs":{},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{},"=":{"docs":{},"/":{"docs":{},"x":{"docs":{},"x":{"docs":{},"x":{"docs":{},"/":{"docs":{},"x":{"docs":{},"x":{"docs":{},"x":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"t":{"docs":{},"i":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}},"i":{"docs":{},"v":{"docs":{},"i":{"docs":{},"l":{"docs":{},"e":{"docs":{},"g":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}},"e":{"docs":{},"s":{"docs":{},";":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}},"h":{"docs":{},"y":{"docs":{},"s":{"docs":{},"i":{"docs":{},"c":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}}}}}}},"l":{"docs":{},"e":{"docs":{},"a":{"docs":{},"s":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.00709849157054126}}}}}},"o":{"docs":{},"r":{"docs":{},"t":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}},"s":{"docs":{},"t":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}},"g":{"docs":{},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{},"(":{"8":{"docs":{},".":{"2":{"docs":{},".":{"1":{"5":{"docs":{},"+":{"docs":{},")":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}},"docs":{}},"docs":{}}},"docs":{}}},"docs":{}}}}}}}}}}},"s":{"docs":{},"c":{"docs":{},"a":{"docs":{},"c":{"docs":{},"h":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}},"e":{"docs":{},",":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}},",":{"docs":{},"s":{"docs":{},"e":{"docs":{},"t":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}},"{":{"docs":{},"p":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"w":{"docs":{},"o":{"docs":{},"r":{"docs":{},"d":{"docs":{},"}":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}}}}}}}}}}}}},"r":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"c":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}},"e":{"docs":{},"r":{"docs":{},".":{"docs":{},"p":{"docs":{},"i":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.003703703703703704}}}}},"、":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}},"i":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}},"s":{"docs":{},".":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}},"a":{"docs":{},"l":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}},"d":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.006211180124223602}}}},"g":{"docs":{},"i":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"y":{"docs":{},"=":{"docs":{},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},"s":{"docs":{},":":{"docs":{},"/":{"docs":{},"/":{"docs":{},"r":{"docs":{},"e":{"docs":{},"g":{"docs":{},"i":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"y":{"docs":{},".":{"docs":{},"n":{"docs":{},"p":{"docs":{},"m":{"docs":{},".":{"docs":{},"t":{"docs":{},"a":{"docs":{},"o":{"docs":{},"b":{"docs":{},"a":{"docs":{},"o":{"docs":{},".":{"docs":{},"o":{"docs":{},"r":{"docs":{},"g":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"l":{"docs":{},"e":{"docs":{},"a":{"docs":{},"s":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}},"v":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{},")":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}},"m":{"docs":{},"o":{"docs":{},"t":{"docs":{},"e":{"docs":{},"_":{"docs":{},"a":{"docs":{},"d":{"docs":{},"d":{"docs":{},"r":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}}}},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0034071550255536627}},")":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}}}}},"o":{"docs":{},"u":{"docs":{},"r":{"docs":{},"c":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}},"e":{"docs":{},".":{"docs":{},"v":{"docs":{},"i":{"docs":{},"e":{"docs":{},"w":{"docs":{},".":{"docs":{},"s":{"docs":{},"u":{"docs":{},"f":{"docs":{},"f":{"docs":{},"i":{"docs":{},"x":{"docs":{},"s":{"docs":{},"=":{"docs":{},"t":{"docs":{},"x":{"docs":{},"t":{"docs":{},",":{"docs":{},"l":{"docs":{},"o":{"docs":{},"g":{"docs":{},",":{"docs":{},"s":{"docs":{},"h":{"docs":{},",":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{},",":{"docs":{},"c":{"docs":{},"f":{"docs":{},"g":{"docs":{},",":{"docs":{},"p":{"docs":{},"y":{"docs":{},",":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},",":{"docs":{},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{},",":{"docs":{},"h":{"docs":{},"q":{"docs":{},"l":{"docs":{},",":{"docs":{},"x":{"docs":{},"m":{"docs":{},"l":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"d":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}},"r":{"docs":{},"d":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}},"i":{"docs":{},"d":{"docs":{},"s":{"docs":{},"安":{"docs":{},"装":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}},"o":{"docs":{},"u":{"docs":{},"s":{"docs":{},"r":{"docs":{},"c":{"docs":{},"e":{"docs":{},"m":{"docs":{},"a":{"docs":{},"n":{"docs":{},"a":{"docs":{},"g":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}},"p":{"docs":{},"l":{"docs":{},"a":{"docs":{},"c":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0026619343389529724}}}}}},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}},"i":{"docs":{},"r":{"docs":{},"e":{"docs":{},"t":{"docs":{},"t":{"docs":{},"i":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.00354924578527063}}}}}}}}}},"t":{"docs":{},"r":{"docs":{},"i":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}},";":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}},"o":{"docs":{},"o":{"docs":{},"t":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0068143100511073255},"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}},"@":{"docs":{},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}},"安":{"docs":{},"装":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}},"u":{"docs":{},"n":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0034071550255536627}},"_":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{},"i":{"docs":{},"g":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}},"t":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}},"_":{"docs":{},"e":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"_":{"docs":{},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"u":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}},"a":{"docs":{},"区":{"docs":{},"间":{"docs":{},"范":{"docs":{},"围":{"docs":{},"内":{"docs":{},"符":{"docs":{},"合":{"docs":{},"任":{"docs":{},"务":{"docs":{},"实":{"docs":{},"例":{"docs":{},"依":{"docs":{},"赖":{"docs":{},"条":{"docs":{},"件":{"docs":{},"的":{"docs":{},",":{"docs":{},"才":{"docs":{},"能":{"docs":{},"依":{"docs":{},"赖":{"docs":{},"成":{"docs":{},"功":{"docs":{},"。":{"docs":{},"否":{"docs":{},"则":{"docs":{},"依":{"docs":{},"赖":{"docs":{},"失":{"docs":{},"败":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"r":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"/":{"docs":{},"e":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.005323868677905945}}}}}}}}}}}}}}},"s":{"docs":{},"k":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0044365572315882874}},".":{"docs":{},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"o":{"docs":{},"r":{"docs":{},"d":{"docs":{},".":{"docs":{},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"a":{"docs":{},"s":{"docs":{},"o":{"docs":{},"u":{"docs":{},"r":{"docs":{},"c":{"docs":{},"e":{"docs":{},".":{"docs":{},"p":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"w":{"docs":{},"o":{"docs":{},"r":{"docs":{},"d":{"docs":{},"=":{"docs":{},"x":{"docs":{},"x":{"docs":{},"x":{"docs":{},"x":{"docs":{},"x":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}},"u":{"docs":{},"r":{"docs":{},"l":{"docs":{},"=":{"docs":{},"j":{"docs":{},"d":{"docs":{},"b":{"docs":{},"c":{"docs":{},":":{"docs":{},"m":{"docs":{},"y":{"docs":{},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{},":":{"docs":{},"/":{"docs":{},"/":{"docs":{},"$":{"docs":{},"{":{"docs":{},"i":{"docs":{},"p":{"docs":{},"}":{"docs":{},":":{"3":{"3":{"0":{"6":{"docs":{},"/":{"docs":{},"e":{"docs":{},"t":{"docs":{},"l":{"docs":{},"?":{"docs":{},"c":{"docs":{},"h":{"docs":{},"a":{"docs":{},"r":{"docs":{},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"e":{"docs":{},"n":{"docs":{},"c":{"docs":{},"o":{"docs":{},"d":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"=":{"docs":{},"u":{"docs":{},"t":{"docs":{},"f":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"=":{"docs":{},"e":{"docs":{},"t":{"docs":{},"l":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}}}}}}}}}}},"f":{"docs":{},"l":{"docs":{},"a":{"docs":{},"g":{"docs":{},"=":{"docs":{},"f":{"docs":{},"a":{"docs":{},"l":{"docs":{},"s":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}}}}},"l":{"docs":{},"o":{"docs":{},"g":{"docs":{},"f":{"docs":{},"i":{"docs":{},"l":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}},"b":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}},"r":{"docs":{},"e":{"docs":{},"e":{"docs":{},"的":{"docs":{},"展":{"docs":{},"示":{"docs":{},",":{"docs":{},"非":{"docs":{},"叶":{"docs":{},"子":{"docs":{},"节":{"docs":{},"点":{"docs":{},"有":{"docs":{},"展":{"docs":{},"开":{"docs":{},"和":{"docs":{},"收":{"docs":{},"缩":{"docs":{},"的":{"docs":{},"功":{"docs":{},"能":{"docs":{},"。":{"docs":{},"右":{"docs":{},"边":{"docs":{},"是":{"docs":{},"流":{"docs":{},"程":{"docs":{},"实":{"docs":{},"例":{"docs":{},"的":{"docs":{},"集":{"docs":{},"合":{"docs":{},",":{"docs":{},"每":{"docs":{},"一":{"docs":{},"列":{"docs":{},"都":{"docs":{},"是":{"docs":{},"流":{"docs":{},"程":{"docs":{},"定":{"docs":{},"义":{"docs":{},"的":{"docs":{},"一":{"docs":{},"次":{"docs":{},"调":{"docs":{},"度":{"docs":{},",":{"docs":{},"圆":{"docs":{},"点":{"docs":{},"表":{"docs":{},"示":{"docs":{},"的":{"docs":{},"是":{"docs":{},"流":{"docs":{},"程":{"docs":{},"实":{"docs":{},"例":{"docs":{},"的":{"docs":{},"状":{"docs":{},"态":{"docs":{},",":{"docs":{},"方":{"docs":{},"块":{"docs":{},"表":{"docs":{},"示":{"docs":{},"的":{"docs":{},"是":{"docs":{},"任":{"docs":{},"务":{"docs":{},"实":{"docs":{},"例":{"docs":{},"的":{"docs":{},"状":{"docs":{},"态":{"docs":{},"。":{"docs":{},"如":{"docs":{},"果":{"docs":{},"是":{"docs":{},"子":{"docs":{},"流":{"docs":{},"程":{"docs":{},",":{"docs":{},"可":{"docs":{},"以":{"docs":{},"通":{"docs":{},"过":{"docs":{},"任":{"docs":{},"务":{"docs":{},"实":{"docs":{},"例":{"docs":{},"跳":{"docs":{},"转":{"docs":{},"到":{"docs":{},"相":{"docs":{},"应":{"docs":{},"的":{"docs":{},"子":{"docs":{},"流":{"docs":{},"程":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"u":{"docs":{},"e":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.00354924578527063}}}},"a":{"docs":{},"i":{"docs":{},"l":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"e":{"docs":{},"n":{"docs":{},"d":{"docs":{"pages/background-2.html":{"ref":"pages/background-2.html","tf":1}}}}}}}}}}}},"\"":{"docs":{},"选":{"docs":{},"项":{"docs":{},"用":{"docs":{},"来":{"docs":{},"对":{"docs":{},"配":{"docs":{},"置":{"docs":{},"文":{"docs":{},"件":{"docs":{},"进":{"docs":{},"行":{"docs":{},"检":{"docs":{},"查":{"docs":{},",":{"docs":{},"以":{"docs":{},"便":{"docs":{},"找":{"docs":{},"出":{"docs":{},"不":{"docs":{},"当":{"docs":{},"或":{"docs":{},"错":{"docs":{},"误":{"docs":{},"的":{"docs":{},"配":{"docs":{},"置":{"docs":{},"。":{"docs":{},"配":{"docs":{},"置":{"docs":{},"文":{"docs":{},"件":{"docs":{},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{},"默":{"docs":{},"认":{"docs":{},"位":{"docs":{},"于":{"docs":{},"安":{"docs":{},"装":{"docs":{},"目":{"docs":{},"录":{"docs":{},"/":{"docs":{},"u":{"docs":{},"s":{"docs":{},"r":{"docs":{},"/":{"docs":{},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{},"a":{"docs":{},"l":{"docs":{},"/":{"docs":{},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{},"/":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{},"/":{"docs":{},"目":{"docs":{},"录":{"docs":{},"中":{"docs":{},"。":{"docs":{},"若":{"docs":{},"要":{"docs":{},"检":{"docs":{},"查":{"docs":{},"位":{"docs":{},"于":{"docs":{},"其":{"docs":{},"他":{"docs":{},"位":{"docs":{},"置":{"docs":{},"的":{"docs":{},"配":{"docs":{},"置":{"docs":{},"文":{"docs":{},"件":{"docs":{},",":{"docs":{},"可":{"docs":{},"使":{"docs":{},"用":{"docs":{},"\"":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"c":{"docs":{},"p":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}},"h":{"docs":{},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"d":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}},"p":{"docs":{},"o":{"docs":{},"o":{"docs":{},"l":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}},"i":{"docs":{},"m":{"docs":{},"e":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0026619343389529724}},"(":{"docs":{},"m":{"docs":{},"i":{"docs":{},"l":{"docs":{},"l":{"docs":{},"i":{"docs":{},"s":{"docs":{},"e":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"d":{"docs":{},"s":{"docs":{},")":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}},",":{"docs":{},"u":{"docs":{},"n":{"docs":{},"i":{"docs":{},"t":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}},"y":{"docs":{},"p":{"docs":{},"e":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}},"y":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.008517887563884156}},"y":{"docs":{},"y":{"docs":{},"y":{"docs":{},"m":{"docs":{},"m":{"docs":{},"d":{"docs":{},"d":{"docs":{},"h":{"docs":{},"h":{"docs":{},"m":{"docs":{},"m":{"docs":{},"s":{"docs":{},"s":{"docs":{},",":{"docs":{},"补":{"docs":{},"数":{"docs":{},"据":{"docs":{},"时":{"docs":{},",":{"docs":{},"该":{"docs":{},"日":{"docs":{},"期":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}},",":{"docs":{},"补":{"docs":{},"数":{"docs":{},"据":{"docs":{},"时":{"docs":{},",":{"docs":{},"该":{"docs":{},"日":{"docs":{},"期":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.003703703703703704}}}}}}}}}}}}}}}}}},"u":{"docs":{},"m":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.008517887563884156}}}},"a":{"docs":{},"r":{"docs":{},"n":{"docs":{},".":{"docs":{},"a":{"docs":{},"p":{"docs":{},"p":{"docs":{},"l":{"docs":{},"i":{"docs":{},"c":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},".":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{},"u":{"docs":{},"s":{"docs":{},".":{"docs":{},"a":{"docs":{},"d":{"docs":{},"d":{"docs":{},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},"=":{"docs":{},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},":":{"docs":{},"/":{"docs":{},"/":{"docs":{},"$":{"docs":{},"{":{"docs":{},"i":{"docs":{},"p":{"1":{"docs":{},"}":{"docs":{},":":{"8":{"0":{"8":{"8":{"docs":{},"/":{"docs":{},"w":{"docs":{},"s":{"docs":{},"/":{"docs":{},"v":{"1":{"docs":{},"/":{"docs":{},"c":{"docs":{},"l":{"docs":{},"u":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"/":{"docs":{},"a":{"docs":{},"p":{"docs":{},"p":{"docs":{},"s":{"docs":{},"/":{"docs":{},"%":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}}}},"docs":{}}}}}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},"o":{"docs":{},"u":{"docs":{},"r":{"docs":{},"c":{"docs":{},"e":{"docs":{},"m":{"docs":{},"a":{"docs":{},"n":{"docs":{},"a":{"docs":{},"g":{"docs":{},"e":{"docs":{},"r":{"docs":{},".":{"docs":{},"h":{"docs":{},"a":{"docs":{},".":{"docs":{},"r":{"docs":{},"m":{"docs":{},".":{"docs":{},"i":{"docs":{},"d":{"docs":{},"s":{"docs":{},"=":{"docs":{},"$":{"docs":{},"{":{"docs":{},"i":{"docs":{},"p":{"1":{"docs":{},"}":{"docs":{},",":{"docs":{},"$":{"docs":{},"{":{"docs":{},"i":{"docs":{},"p":{"2":{"docs":{},"}":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}},"docs":{}}}}}}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"–":{"docs":{},"d":{"docs":{},"、":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.003703703703703704}}}},"i":{"docs":{},"n":{"docs":{},"p":{"docs":{},"u":{"docs":{},"t":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}},"上":{"docs":{},"传":{"docs":{},"文":{"docs":{},"件":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}},":":{"docs":{},"点":{"docs":{},"击":{"docs":{},"上":{"docs":{},"传":{"docs":{},"按":{"docs":{},"钮":{"docs":{},"进":{"docs":{},"行":{"docs":{},"上":{"docs":{},"传":{"docs":{},",":{"docs":{},"将":{"docs":{},"文":{"docs":{},"件":{"docs":{},"拖":{"docs":{},"拽":{"docs":{},"到":{"docs":{},"上":{"docs":{},"传":{"docs":{},"区":{"docs":{},"域":{"docs":{},",":{"docs":{},"文":{"docs":{},"件":{"docs":{},"名":{"docs":{},"会":{"docs":{},"自":{"docs":{},"动":{"docs":{},"以":{"docs":{},"上":{"docs":{},"传":{"docs":{},"的":{"docs":{},"文":{"docs":{},"件":{"docs":{},"名":{"docs":{},"称":{"docs":{},"补":{"docs":{},"全":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"大":{"docs":{},"小":{"docs":{},"限":{"docs":{},"制":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}}},"下":{"docs":{},"载":{"docs":{},"文":{"docs":{},"件":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}},"配":{"docs":{},"置":{"docs":{},"好":{"docs":{},"的":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{},"文":{"docs":{},"件":{"docs":{},"夹":{"docs":{},"和":{"docs":{},"编":{"docs":{},"译":{"docs":{},"好":{"docs":{},"的":{"docs":{},"e":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}}}}}}}}}}}},"面":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}},"两":{"docs":{},"种":{"docs":{},"方":{"docs":{},"式":{"docs":{},"查":{"docs":{},"看":{"docs":{},"任":{"docs":{},"务":{"docs":{},"实":{"docs":{},"例":{"docs":{},":":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}},"为":{"docs":{},"流":{"docs":{},"程":{"docs":{},"定":{"docs":{},"义":{"docs":{},"a":{"docs":{},"的":{"docs":{},"定":{"docs":{},"时":{"docs":{},"器":{"docs":{},",":{"docs":{},"t":{"docs":{},"b":{"docs":{},"为":{"docs":{},"流":{"docs":{},"程":{"docs":{},"定":{"docs":{},"义":{"docs":{},"b":{"docs":{},"的":{"docs":{},"定":{"docs":{},"时":{"docs":{},"器":{"docs":{},",":{"docs":{},"t":{"docs":{},"b":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{},"到":{"docs":{},"t":{"docs":{},"b":{"docs":{},"e":{"docs":{},"n":{"docs":{},"d":{"docs":{},"为":{"docs":{},"t":{"docs":{},"b":{"docs":{},"的":{"docs":{},"周":{"docs":{},"期":{"docs":{},",":{"docs":{},"周":{"docs":{},"期":{"docs":{},"分":{"docs":{},"别":{"docs":{},"支":{"docs":{},"持":{"docs":{},"小":{"docs":{},"时":{"docs":{},"、":{"docs":{},"天":{"docs":{},"、":{"docs":{},"月":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"了":{"docs":{},"使":{"docs":{},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{},"服":{"docs":{},"务":{"docs":{},"器":{"docs":{},"的":{"docs":{},"运":{"docs":{},"行":{"docs":{},"更":{"docs":{},"加":{"docs":{},"方":{"docs":{},"便":{"docs":{},",":{"docs":{},"可":{"docs":{},"以":{"docs":{},"为":{"docs":{},"主":{"docs":{},"程":{"docs":{},"序":{"docs":{},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{},"创":{"docs":{},"建":{"docs":{},"链":{"docs":{},"接":{"docs":{},"文":{"docs":{},"件":{"docs":{},",":{"docs":{},"以":{"docs":{},"便":{"docs":{},"管":{"docs":{},"理":{"docs":{},"员":{"docs":{},"直":{"docs":{},"接":{"docs":{},"执":{"docs":{},"行":{"docs":{},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{},"命":{"docs":{},"令":{"docs":{},"就":{"docs":{},"可":{"docs":{},"以":{"docs":{},"调":{"docs":{},"用":{"docs":{},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{},"的":{"docs":{},"主":{"docs":{},"程":{"docs":{},"序":{"docs":{},"。":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"的":{"docs":{},"启":{"docs":{},"动":{"docs":{},"、":{"docs":{},"停":{"docs":{},"止":{"docs":{},"、":{"docs":{},"重":{"docs":{},"载":{"docs":{},"等":{"docs":{},"操":{"docs":{},"作":{"docs":{},"更":{"docs":{},"加":{"docs":{},"方":{"docs":{},"便":{"docs":{},",":{"docs":{},"可":{"docs":{},"以":{"docs":{},"编":{"docs":{},"写":{"docs":{},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{},"服":{"docs":{},"务":{"docs":{},"脚":{"docs":{},"本":{"docs":{},",":{"docs":{},"并":{"docs":{},"使":{"docs":{},"用":{"docs":{},"c":{"docs":{},"h":{"docs":{},"k":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{},"i":{"docs":{},"g":{"docs":{},"和":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"i":{"docs":{},"c":{"docs":{},"e":{"docs":{},"工":{"docs":{},"具":{"docs":{},"来":{"docs":{},"进":{"docs":{},"行":{"docs":{},"管":{"docs":{},"理":{"docs":{},",":{"docs":{},"也":{"docs":{},"更":{"docs":{},"加":{"docs":{},"符":{"docs":{},"合":{"docs":{},"r":{"docs":{},"h":{"docs":{},"e":{"docs":{},"l":{"docs":{},"系":{"docs":{},"统":{"docs":{},"的":{"docs":{},"管":{"docs":{},"理":{"docs":{},"习":{"docs":{},"惯":{"docs":{},"。":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"主":{"docs":{},"j":{"docs":{},"a":{"docs":{},"r":{"docs":{},"包":{"docs":{},":":{"docs":{},"是":{"docs":{},"m":{"docs":{},"r":{"docs":{},"的":{"docs":{},"j":{"docs":{},"a":{"docs":{},"r":{"docs":{},"包":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}},"s":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"k":{"docs":{},"的":{"docs":{},"j":{"docs":{},"a":{"docs":{},"r":{"docs":{},"包":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}},"运":{"docs":{},"行":{"docs":{},"m":{"docs":{},"r":{"docs":{},"的":{"docs":{},"p":{"docs":{},"y":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"n":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}},"函":{"docs":{},"数":{"docs":{},"的":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},":":{"docs":{},"是":{"docs":{},"m":{"docs":{},"r":{"docs":{},"程":{"docs":{},"序":{"docs":{},"的":{"docs":{},"入":{"docs":{},"口":{"docs":{},"m":{"docs":{},"a":{"docs":{},"i":{"docs":{},"n":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}},"s":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"k":{"docs":{},"程":{"docs":{},"序":{"docs":{},"的":{"docs":{},"入":{"docs":{},"口":{"docs":{},"m":{"docs":{},"a":{"docs":{},"i":{"docs":{},"n":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}}},"程":{"docs":{},"序":{"docs":{},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{},"支":{"docs":{},"持":{"docs":{},"标":{"docs":{},"准":{"docs":{},"的":{"docs":{},"进":{"docs":{},"程":{"docs":{},"信":{"docs":{},"号":{"docs":{},",":{"docs":{},"通":{"docs":{},"过":{"docs":{},"k":{"docs":{},"i":{"docs":{},"l":{"docs":{},"l":{"docs":{},"或":{"docs":{},"者":{"docs":{},"k":{"docs":{},"i":{"docs":{},"l":{"docs":{},"l":{"docs":{},"a":{"docs":{},"l":{"docs":{},"l":{"docs":{},"命":{"docs":{},"令":{"docs":{},"传":{"docs":{},"送":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"机":{"docs":{},"器":{"docs":{},"的":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}},"也":{"docs":{},"可":{"docs":{},"以":{"docs":{},"这":{"docs":{},"样":{"docs":{},":":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}},"任":{"docs":{},"务":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}},"中":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{},"i":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"通":{"docs":{},"过":{"docs":{},"$":{"docs":{},"{":{"docs":{},"d":{"docs":{},"s":{"docs":{},"}":{"docs":{},"来":{"docs":{},"引":{"docs":{},"用":{"docs":{},"全":{"docs":{},"局":{"docs":{},"参":{"docs":{},"数":{"docs":{},",":{"docs":{},"对":{"docs":{},"于":{"docs":{},"脚":{"docs":{},"本":{"docs":{},"可":{"docs":{},"以":{"docs":{},"通":{"docs":{},"过":{"docs":{},"$":{"docs":{},"{":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{},"i":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"}":{"docs":{},"来":{"docs":{},"引":{"docs":{},"用":{"docs":{},"变":{"docs":{},"量":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{},"i":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"的":{"docs":{},"值":{"docs":{},",":{"docs":{},"或":{"docs":{},"通":{"docs":{},"过":{"docs":{},"j":{"docs":{},"d":{"docs":{},"b":{"docs":{},"c":{"docs":{},"直":{"docs":{},"接":{"docs":{},"将":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{},"i":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"的":{"docs":{},"值":{"docs":{},"s":{"docs":{},"e":{"docs":{},"t":{"docs":{},"进":{"docs":{},"去":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"依":{"docs":{},"赖":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}},"分":{"docs":{},"为":{"docs":{},"水":{"docs":{},"平":{"docs":{},"依":{"docs":{},"赖":{"docs":{},"和":{"docs":{},"垂":{"docs":{},"直":{"docs":{},"依":{"docs":{},"赖":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}},":":{"docs":{},"请":{"docs":{},"参":{"docs":{},"考":{"docs":{},"任":{"docs":{},"务":{"docs":{},"依":{"docs":{},"赖":{"docs":{},"讲":{"docs":{},"解":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.014814814814814815}}}}}}}}}}}}}},"实":{"docs":{},"例":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}},"是":{"docs":{},"流":{"docs":{},"程":{"docs":{},"实":{"docs":{},"例":{"docs":{},"任":{"docs":{},"务":{"docs":{},"节":{"docs":{},"点":{"docs":{},"的":{"docs":{},"列":{"docs":{},"表":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}},":":{"docs":{},"流":{"docs":{},"程":{"docs":{},"实":{"docs":{},"例":{"docs":{},"d":{"docs":{},"a":{"docs":{},"g":{"docs":{},"中":{"docs":{},"每":{"docs":{},"个":{"docs":{},"t":{"docs":{},"a":{"docs":{},"s":{"docs":{},"k":{"docs":{},"称":{"docs":{},"为":{"docs":{},"任":{"docs":{},"务":{"docs":{},"实":{"docs":{},"例":{"docs":{},",":{"docs":{},"是":{"docs":{},"动":{"docs":{},"态":{"docs":{},"的":{"docs":{},",":{"docs":{},"是":{"docs":{},"有":{"docs":{},"状":{"docs":{},"态":{"docs":{},"的":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"状":{"docs":{},"态":{"docs":{},"统":{"docs":{},"计":{"docs":{},":":{"docs":{},"是":{"docs":{},"指":{"docs":{},"在":{"docs":{},"指":{"docs":{},"定":{"docs":{},"时":{"docs":{},"间":{"docs":{},"范":{"docs":{},"围":{"docs":{},"内":{"docs":{},",":{"docs":{},"统":{"docs":{},"计":{"docs":{},"任":{"docs":{},"务":{"docs":{},"实":{"docs":{},"例":{"docs":{},"中":{"docs":{},"的":{"docs":{},"待":{"docs":{},"运":{"docs":{},"行":{"docs":{},"、":{"docs":{},"失":{"docs":{},"败":{"docs":{},"、":{"docs":{},"运":{"docs":{},"行":{"docs":{},"中":{"docs":{},"、":{"docs":{},"完":{"docs":{},"成":{"docs":{},"、":{"docs":{},"成":{"docs":{},"功":{"docs":{},"的":{"docs":{},"个":{"docs":{},"数":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"记":{"docs":{},"录":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}},"是":{"docs":{},"千":{"docs":{},"帆":{"docs":{},"的":{"docs":{},"数":{"docs":{},"据":{"docs":{},"稽":{"docs":{},"核":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}},"队":{"docs":{},"列":{"docs":{},"选":{"docs":{},"择":{"docs":{},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"i":{"docs":{},"s":{"docs":{},"时":{"docs":{},"需":{"docs":{},"要":{"docs":{},"安":{"docs":{},"装":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}}}},"例":{"docs":{},"如":{"docs":{},":":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}},"依":{"docs":{},"赖":{"docs":{},"任":{"docs":{},"务":{"docs":{},":":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}},",":{"docs":{},"如":{"docs":{},"图":{"docs":{},":":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}},"停":{"docs":{},"止":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}},"其":{"docs":{},"中":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}},"他":{"docs":{},"参":{"docs":{},"数":{"docs":{},":":{"docs":{},"支":{"docs":{},"持":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.005555555555555556}}}}}}}}},"函":{"docs":{},"数":{"docs":{},"管":{"docs":{},"理":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}},"创":{"docs":{},"建":{"docs":{},"、":{"docs":{},"编":{"docs":{},"辑":{"docs":{},"h":{"docs":{},"i":{"docs":{},"v":{"docs":{},"e":{"docs":{},"数":{"docs":{},"据":{"docs":{},"源":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}},"m":{"docs":{},"y":{"docs":{},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{},"数":{"docs":{},"据":{"docs":{},"源":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}},"p":{"docs":{},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{},"g":{"docs":{},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{},"数":{"docs":{},"据":{"docs":{},"源":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}},"s":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"k":{"docs":{},"数":{"docs":{},"据":{"docs":{},"源":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}},"u":{"docs":{},"d":{"docs":{},"f":{"docs":{},"函":{"docs":{},"数":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}},"用":{"docs":{},"户":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}},"租":{"docs":{},"户":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}},"项":{"docs":{},"目":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}},"工":{"docs":{},"作":{"docs":{},"流":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}},"文":{"docs":{},"件":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}},"运":{"docs":{},"行":{"docs":{},"用":{"docs":{},"户":{"docs":{},"、":{"docs":{},"组":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}},"静":{"docs":{},"态":{"docs":{},"页":{"docs":{},"面":{"docs":{},"存":{"docs":{},"放":{"docs":{},"目":{"docs":{},"录":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}}},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"a":{"docs":{},"b":{"docs":{},"a":{"docs":{},"s":{"docs":{},"e":{"docs":{},"和":{"docs":{},"账":{"docs":{},"号":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}},"表":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}},"部":{"docs":{},"署":{"docs":{},"用":{"docs":{},"户":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}}}}}}}},"删":{"docs":{},"除":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.003703703703703704}},"流":{"docs":{},"程":{"docs":{},"实":{"docs":{},"例":{"docs":{},"及":{"docs":{},"流":{"docs":{},"程":{"docs":{},"实":{"docs":{},"例":{"docs":{},"下":{"docs":{},"的":{"docs":{},"任":{"docs":{},"务":{"docs":{},"实":{"docs":{},"例":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}},"到":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}},"前":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.011111111111111112}},"端":{"docs":{},"代":{"docs":{},"理":{"docs":{},"的":{"docs":{},"接":{"docs":{},"口":{"docs":{},"地":{"docs":{},"址":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}},"在":{"docs":{},"开":{"docs":{},"发":{"docs":{},"环":{"docs":{},"境":{"docs":{},"(":{"docs":{},"d":{"docs":{},"e":{"docs":{},"v":{"docs":{},")":{"docs":{},"中":{"docs":{},"运":{"docs":{},"行":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}}}}}}}},"部":{"docs":{},"署":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":10}},"文":{"docs":{},"档":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}},"项":{"docs":{},"目":{"docs":{},"发":{"docs":{},"布":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}},"构":{"docs":{},"建":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}},"环":{"docs":{},"境":{"docs":{},"构":{"docs":{},"建":{"docs":{},"及":{"docs":{},"编":{"docs":{},"译":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}}}}}},"包":{"docs":{},"名":{"docs":{},"类":{"docs":{},"名":{"docs":{},":":{"docs":{},"输":{"docs":{},"入":{"docs":{},"u":{"docs":{},"d":{"docs":{},"f":{"docs":{},"函":{"docs":{},"数":{"docs":{},"的":{"docs":{},"全":{"docs":{},"路":{"docs":{},"径":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}},"参":{"docs":{},"数":{"docs":{},":":{"docs":{},"用":{"docs":{},"来":{"docs":{},"标":{"docs":{},"注":{"docs":{},"函":{"docs":{},"数":{"docs":{},"的":{"docs":{},"输":{"docs":{},"入":{"docs":{},"参":{"docs":{},"数":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}},"变":{"docs":{},"量":{"docs":{},"含":{"docs":{},"义":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}},"只":{"docs":{},"有":{"docs":{},"在":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}},"t":{"docs":{},"b":{"docs":{},"到":{"docs":{},"t":{"docs":{},"b":{"docs":{},"e":{"docs":{},"n":{"docs":{},"d":{"docs":{},"区":{"docs":{},"间":{"docs":{},"范":{"docs":{},"围":{"docs":{},"内":{"docs":{},"符":{"docs":{},"合":{"docs":{},"任":{"docs":{},"务":{"docs":{},"实":{"docs":{},"例":{"docs":{},"依":{"docs":{},"赖":{"docs":{},"条":{"docs":{},"件":{"docs":{},"的":{"docs":{},",":{"docs":{},"才":{"docs":{},"能":{"docs":{},"依":{"docs":{},"赖":{"docs":{},"成":{"docs":{},"功":{"docs":{},"。":{"docs":{},"否":{"docs":{},"则":{"docs":{},"依":{"docs":{},"赖":{"docs":{},"失":{"docs":{},"败":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"管":{"docs":{},"理":{"docs":{},"员":{"docs":{},"才":{"docs":{},"有":{"docs":{},"安":{"docs":{},"全":{"docs":{},"中":{"docs":{},"心":{"docs":{},",":{"docs":{},"安":{"docs":{},"全":{"docs":{},"中":{"docs":{},"心":{"docs":{},"的":{"docs":{},"主":{"docs":{},"要":{"docs":{},"功":{"docs":{},"能":{"docs":{},"是":{"docs":{},"给":{"docs":{},"管":{"docs":{},"理":{"docs":{},"员":{"docs":{},"提":{"docs":{},"供":{"docs":{},"管":{"docs":{},"理":{"docs":{},"普":{"docs":{},"通":{"docs":{},"用":{"docs":{},"户":{"docs":{},"的":{"docs":{},"功":{"docs":{},"能":{"docs":{},"。":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"可":{"docs":{},"以":{"docs":{},"在":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}},"按":{"docs":{},"照":{"docs":{},"任":{"docs":{},"务":{"docs":{},"名":{"docs":{},"称":{"docs":{},"、":{"docs":{},"日":{"docs":{},"期":{"docs":{},"、":{"docs":{},"状":{"docs":{},"态":{"docs":{},"、":{"docs":{},"原":{"docs":{},"表":{"docs":{},"、":{"docs":{},"目":{"docs":{},"标":{"docs":{},"表":{"docs":{},"、":{"docs":{},"日":{"docs":{},"期":{"docs":{},"区":{"docs":{},"间":{"docs":{},"查":{"docs":{},"询":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}}}}},"查":{"docs":{},"看":{"docs":{},"文":{"docs":{},"件":{"docs":{},"详":{"docs":{},"情":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}},"让":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}},"流":{"docs":{},"程":{"docs":{},"实":{"docs":{},"例":{"docs":{},"从":{"docs":{},"失":{"docs":{},"败":{"docs":{},"节":{"docs":{},"点":{"docs":{},"开":{"docs":{},"始":{"docs":{},"重":{"docs":{},"新":{"docs":{},"执":{"docs":{},"行":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}},"暂":{"docs":{},"停":{"docs":{},"位":{"docs":{},"置":{"docs":{},"继":{"docs":{},"续":{"docs":{},"执":{"docs":{},"行":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}},"转":{"docs":{},"淘":{"docs":{},"宝":{"docs":{},"镜":{"docs":{},"像":{"docs":{},"命":{"docs":{},"令":{"docs":{},"行":{"docs":{},"输":{"docs":{},"入":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}}}}}}},"右":{"docs":{},"上":{"docs":{},"角":{"docs":{},"图":{"docs":{},"标":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}},"是":{"docs":{},"下":{"docs":{},"载":{"docs":{},"日":{"docs":{},"志":{"docs":{},"、":{"docs":{},"刷":{"docs":{},"新":{"docs":{},"日":{"docs":{},"志":{"docs":{},"和":{"docs":{},"放":{"docs":{},"大":{"docs":{},"/":{"docs":{},"缩":{"docs":{},"小":{"docs":{},"按":{"docs":{},"钮":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}},"后":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.011111111111111112}},"的":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}},"端":{"docs":{},"部":{"docs":{},"署":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":10}}}},"说":{"docs":{},"明":{"2":{"docs":{"pages/background-2.html":{"ref":"pages/background-2.html","tf":10}}},"docs":{}}}}},"向":{"docs":{},"后":{"docs":{},"执":{"docs":{},"行":{"docs":{},"是":{"docs":{},"从":{"docs":{},"指":{"docs":{},"定":{"docs":{},"节":{"docs":{},"点":{"docs":{},"向":{"docs":{},"后":{"docs":{},"执":{"docs":{},"行":{"docs":{},",":{"docs":{},"一":{"docs":{},"直":{"docs":{},"到":{"docs":{},"后":{"docs":{},"续":{"docs":{},"节":{"docs":{},"点":{"docs":{},"不":{"docs":{},"能":{"docs":{},"继":{"docs":{},"续":{"docs":{},"执":{"docs":{},"行":{"docs":{},"为":{"docs":{},"止":{"docs":{},"。":{"docs":{},"向":{"docs":{},"前":{"docs":{},"执":{"docs":{},"行":{"docs":{},"是":{"docs":{},"从":{"docs":{},"开":{"docs":{},"始":{"docs":{},"节":{"docs":{},"点":{"docs":{},"到":{"docs":{},"指":{"docs":{},"定":{"docs":{},"的":{"docs":{},"节":{"docs":{},"点":{"docs":{},"区":{"docs":{},"间":{"docs":{},"执":{"docs":{},"行":{"docs":{},"。":{"docs":{},"仅":{"docs":{},"执":{"docs":{},"行":{"docs":{},"当":{"docs":{},"前":{"docs":{},"节":{"docs":{},"点":{"docs":{},"是":{"docs":{},"只":{"docs":{},"执":{"docs":{},"行":{"docs":{},"指":{"docs":{},"定":{"docs":{},"的":{"docs":{},"节":{"docs":{},"点":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"启":{"docs":{},"动":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}},"前":{"docs":{},"可":{"docs":{},"以":{"docs":{},"设":{"docs":{},"置":{"docs":{},"若":{"docs":{},"干":{"docs":{},"参":{"docs":{},"数":{"docs":{},",":{"docs":{},"如":{"docs":{},"下":{"docs":{},"图":{"docs":{},":":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}},"、":{"docs":{},"停":{"docs":{},"止":{"docs":{},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}}},"停":{"docs":{},"止":{"docs":{},"命":{"docs":{},"令":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}},"所":{"docs":{},"有":{"docs":{},"服":{"docs":{},"务":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}},"用":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},"_":{"docs":{},"s":{"docs":{},"t":{"docs":{},"u":{"docs":{},"b":{"docs":{},"_":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{},"u":{"docs":{},"s":{"docs":{},"_":{"docs":{},"m":{"docs":{},"o":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"模":{"docs":{},"块":{"docs":{},"以":{"docs":{},"支":{"docs":{},"持":{"docs":{},"状":{"docs":{},"态":{"docs":{},"统":{"docs":{},"计":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"s":{"docs":{},"l":{"docs":{},"模":{"docs":{},"块":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}},"停":{"docs":{},"a":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"t":{"docs":{},"s":{"docs":{},"h":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}},"l":{"docs":{},"o":{"docs":{},"g":{"docs":{},"g":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"h":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}},"m":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}},"w":{"docs":{},"e":{"docs":{},"b":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{},"e":{"docs":{},"r":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}},"告":{"docs":{},"警":{"docs":{},"组":{"docs":{},"是":{"docs":{},"告":{"docs":{},"警":{"docs":{},"用":{"docs":{},"户":{"docs":{},"抽":{"docs":{},"象":{"docs":{},"出":{"docs":{},"来":{"docs":{},"的":{"docs":{},"组":{"docs":{},",":{"docs":{},"使":{"docs":{},"用":{"docs":{},"告":{"docs":{},"警":{"docs":{},"组":{"docs":{},"来":{"docs":{},"管":{"docs":{},"理":{"docs":{},"用":{"docs":{},"户":{"docs":{},"。":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}},"管":{"docs":{},"理":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}},"周":{"docs":{},":":{"docs":{},"$":{"docs":{},"[":{"docs":{},"y":{"docs":{},"y":{"docs":{},"y":{"docs":{},"y":{"docs":{},"m":{"docs":{},"m":{"docs":{},"d":{"docs":{},"d":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}},"+":{"7":{"docs":{},"*":{"docs":{},"n":{"docs":{},"]":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}},"docs":{}}}}}}}}}}}}}},"命":{"docs":{},"令":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}},"行":{"docs":{},"参":{"docs":{},"数":{"docs":{},":":{"docs":{},"是":{"docs":{},"设":{"docs":{},"置":{"docs":{},"m":{"docs":{},"r":{"docs":{},"程":{"docs":{},"序":{"docs":{},"的":{"docs":{},"输":{"docs":{},"入":{"docs":{},"参":{"docs":{},"数":{"docs":{},",":{"docs":{},"支":{"docs":{},"持":{"docs":{},"自":{"docs":{},"定":{"docs":{},"义":{"docs":{},"参":{"docs":{},"数":{"docs":{},"变":{"docs":{},"量":{"docs":{},"的":{"docs":{},"替":{"docs":{},"换":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"k":{"docs":{},"程":{"docs":{},"序":{"docs":{},"的":{"docs":{},"输":{"docs":{},"入":{"docs":{},"参":{"docs":{},"数":{"docs":{},",":{"docs":{},"支":{"docs":{},"持":{"docs":{},"自":{"docs":{},"定":{"docs":{},"义":{"docs":{},"参":{"docs":{},"数":{"docs":{},"变":{"docs":{},"量":{"docs":{},"的":{"docs":{},"替":{"docs":{},"换":{"docs":{},"。":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},",":{"docs":{},"生":{"docs":{},"成":{"docs":{},"打":{"docs":{},"包":{"docs":{},"文":{"docs":{},"件":{"docs":{},"(":{"docs":{},"d":{"docs":{},"i":{"docs":{},"s":{"docs":{},"t":{"docs":{},")":{"docs":{},"包":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}}}}}}}}}}},"在":{"docs":{},"保":{"docs":{},"存":{"docs":{},"流":{"docs":{},"程":{"docs":{},"定":{"docs":{},"义":{"docs":{},"的":{"docs":{},"时":{"docs":{},"候":{"docs":{},"可":{"docs":{},"以":{"docs":{},"设":{"docs":{},"置":{"docs":{},"全":{"docs":{},"局":{"docs":{},"参":{"docs":{},"数":{"docs":{},",":{"docs":{},"局":{"docs":{},"部":{"docs":{},"参":{"docs":{},"数":{"docs":{},"可":{"docs":{},"以":{"docs":{},"使":{"docs":{},"用":{"docs":{},"$":{"docs":{},"{":{"docs":{},"变":{"docs":{},"量":{"docs":{},"}":{"docs":{},"的":{"docs":{},"方":{"docs":{},"式":{"docs":{},"引":{"docs":{},"用":{"docs":{},"全":{"docs":{},"局":{"docs":{},"参":{"docs":{},"数":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"垂":{"docs":{},"直":{"docs":{},"依":{"docs":{},"赖":{"docs":{},"是":{"docs":{},"流":{"docs":{},"程":{"docs":{},"实":{"docs":{},"例":{"docs":{},"之":{"docs":{},"间":{"docs":{},"的":{"docs":{},"任":{"docs":{},"务":{"docs":{},"依":{"docs":{},"赖":{"docs":{},",":{"docs":{},"基":{"docs":{},"于":{"docs":{},"定":{"docs":{},"时":{"docs":{},"的":{"docs":{},"依":{"docs":{},"赖":{"docs":{},"。":{"docs":{},"垂":{"docs":{},"直":{"docs":{},"依":{"docs":{},"赖":{"docs":{},"又":{"docs":{},"分":{"docs":{},"为":{"docs":{},"自":{"docs":{},"依":{"docs":{},"赖":{"docs":{},"和":{"docs":{},"外":{"docs":{},"部":{"docs":{},"依":{"docs":{},"赖":{"docs":{},"。":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"备":{"docs":{},"注":{"docs":{},":":{"docs":{},"输":{"docs":{},"入":{"docs":{},"告":{"docs":{},"警":{"docs":{},"组":{"docs":{},"的":{"docs":{},"备":{"docs":{},"注":{"docs":{},"信":{"docs":{},"息":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}},"外":{"docs":{},"部":{"docs":{},"依":{"docs":{},"赖":{"docs":{},"策":{"docs":{},"略":{"docs":{},"存":{"docs":{},"在":{"docs":{},"依":{"docs":{},"赖":{"docs":{},"策":{"docs":{},"略":{"docs":{},",":{"docs":{},"分":{"docs":{},"别":{"docs":{},"有":{"docs":{},"自":{"docs":{},"定":{"docs":{},"义":{"docs":{},"、":{"docs":{},"全":{"docs":{},"部":{"docs":{},"成":{"docs":{},"功":{"docs":{},"、":{"docs":{},"全":{"docs":{},"部":{"docs":{},"失":{"docs":{},"败":{"docs":{},"、":{"docs":{},"任":{"docs":{},"一":{"docs":{},"成":{"docs":{},"功":{"docs":{},"、":{"docs":{},"任":{"docs":{},"一":{"docs":{},"失":{"docs":{},"败":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},":":{"docs":{},"是":{"docs":{},"对":{"docs":{},"多":{"docs":{},"个":{"docs":{},"外":{"docs":{},"部":{"docs":{},"流":{"docs":{},"程":{"docs":{},"流":{"docs":{},"程":{"docs":{},"实":{"docs":{},"例":{"docs":{},"的":{"docs":{},"任":{"docs":{},"务":{"docs":{},"实":{"docs":{},"例":{"docs":{},"的":{"docs":{},"依":{"docs":{},"赖":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}}}},"天":{"docs":{},":":{"docs":{},"$":{"docs":{},"[":{"docs":{},"y":{"docs":{},"y":{"docs":{},"y":{"docs":{},"y":{"docs":{},"m":{"docs":{},"m":{"docs":{},"d":{"docs":{},"d":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}},"+":{"docs":{},"n":{"docs":{},"]":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}},"失":{"docs":{},"败":{"docs":{},"策":{"docs":{},"略":{"docs":{},":":{"docs":{},"继":{"docs":{},"续":{"docs":{},"是":{"docs":{},"如":{"docs":{},"果":{"docs":{},"有":{"docs":{},"失":{"docs":{},"败":{"docs":{},"的":{"docs":{},"任":{"docs":{},"务":{"docs":{},"节":{"docs":{},"点":{"docs":{},",":{"docs":{},"其":{"docs":{},"他":{"docs":{},"并":{"docs":{},"行":{"docs":{},"的":{"docs":{},"任":{"docs":{},"务":{"docs":{},"节":{"docs":{},"点":{"docs":{},"将":{"docs":{},"继":{"docs":{},"续":{"docs":{},"执":{"docs":{},"行":{"docs":{},"。":{"docs":{},"结":{"docs":{},"束":{"docs":{},"是":{"docs":{},"如":{"docs":{},"果":{"docs":{},"有":{"docs":{},"失":{"docs":{},"的":{"docs":{},"败":{"docs":{},"节":{"docs":{},"点":{"docs":{},",":{"docs":{},"其":{"docs":{},"他":{"docs":{},"并":{"docs":{},"行":{"docs":{},"任":{"docs":{},"的":{"docs":{},"务":{"docs":{},"节":{"docs":{},"点":{"docs":{},"将":{"docs":{},"被":{"docs":{},"k":{"docs":{},"i":{"docs":{},"l":{"docs":{},"l":{"docs":{},"掉":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.005555555555555556}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"重":{"docs":{},"试":{"docs":{},"次":{"docs":{},"数":{"docs":{},":":{"docs":{},"任":{"docs":{},"务":{"docs":{},"失":{"docs":{},"败":{"docs":{},"重":{"docs":{},"新":{"docs":{},"提":{"docs":{},"交":{"docs":{},"的":{"docs":{},"次":{"docs":{},"数":{"docs":{},",":{"docs":{},"支":{"docs":{},"持":{"docs":{},"下":{"docs":{},"拉":{"docs":{},"和":{"docs":{},"手":{"docs":{},"填":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.012962962962962963}}}}}}}}}}}}}}}}}}}}}}}},"间":{"docs":{},"隔":{"docs":{},":":{"docs":{},"任":{"docs":{},"务":{"docs":{},"失":{"docs":{},"败":{"docs":{},"重":{"docs":{},"新":{"docs":{},"提":{"docs":{},"交":{"docs":{},"任":{"docs":{},"务":{"docs":{},"的":{"docs":{},"时":{"docs":{},"间":{"docs":{},"间":{"docs":{},"隔":{"docs":{},",":{"docs":{},"支":{"docs":{},"持":{"docs":{},"下":{"docs":{},"拉":{"docs":{},"和":{"docs":{},"手":{"docs":{},"填":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.012962962962962963}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"子":{"docs":{},"流":{"docs":{},"程":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}},"节":{"docs":{},"点":{"docs":{},":":{"docs":{},"是":{"docs":{},"选":{"docs":{},"择":{"docs":{},"子":{"docs":{},"流":{"docs":{},"程":{"docs":{},"的":{"docs":{},"流":{"docs":{},"程":{"docs":{},"定":{"docs":{},"义":{"docs":{},",":{"docs":{},"右":{"docs":{},"上":{"docs":{},"角":{"docs":{},"进":{"docs":{},"入":{"docs":{},"该":{"docs":{},"子":{"docs":{},"节":{"docs":{},"点":{"docs":{},"可":{"docs":{},"以":{"docs":{},"跳":{"docs":{},"转":{"docs":{},"到":{"docs":{},"所":{"docs":{},"选":{"docs":{},"子":{"docs":{},"流":{"docs":{},"程":{"docs":{},"的":{"docs":{},"流":{"docs":{},"程":{"docs":{},"定":{"docs":{},"义":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"存":{"docs":{},"储":{"docs":{},"过":{"docs":{},"程":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}},"安":{"docs":{},"全":{"docs":{},"中":{"docs":{},"心":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}},"装":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0034071550255536627},"pages/foreground-2.html":{"ref":"pages/foreground-2.html","tf":10}},"e":{"docs":{},"p":{"docs":{},"e":{"docs":{},"l":{"docs":{},"源":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}},"及":{"docs":{},"配":{"docs":{},"置":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}},"配":{"docs":{},"置":{"docs":{},"文":{"docs":{},"件":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}},"定":{"docs":{},"时":{"docs":{},"依":{"docs":{},"赖":{"docs":{},"图":{"docs":{},"解":{"docs":{},":":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}},":":{"docs":{},"可":{"docs":{},"视":{"docs":{},"化":{"docs":{},"定":{"docs":{},"时":{"docs":{},",":{"docs":{},"设":{"docs":{},"置":{"docs":{},"相":{"docs":{},"应":{"docs":{},"的":{"docs":{},"定":{"docs":{},"时":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}},"器":{"docs":{},"配":{"docs":{},"置":{"docs":{},"文":{"docs":{},"件":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}},"密":{"docs":{},"码":{"docs":{},":":{"docs":{},"设":{"docs":{},"置":{"docs":{},"连":{"docs":{},"接":{"docs":{},"h":{"docs":{},"i":{"docs":{},"v":{"docs":{},"e":{"docs":{},"的":{"docs":{},"密":{"docs":{},"码":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.003703703703703704}}}}}}}}},"m":{"docs":{},"y":{"docs":{},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{},"的":{"docs":{},"密":{"docs":{},"码":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}},"p":{"docs":{},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{},"g":{"docs":{},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{},"的":{"docs":{},"密":{"docs":{},"码":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}},"s":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"k":{"docs":{},"的":{"docs":{},"密":{"docs":{},"码":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}},"小":{"docs":{},"时":{"docs":{},":":{"docs":{},"$":{"docs":{},"[":{"docs":{},"h":{"docs":{},"h":{"docs":{},"m":{"docs":{},"m":{"docs":{},"s":{"docs":{},"s":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}},"+":{"docs":{},"n":{"docs":{},"/":{"2":{"4":{"docs":{},"]":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}},"docs":{}},"docs":{}}}}}}}}}}}}}}},"左":{"docs":{},"侧":{"docs":{},"工":{"docs":{},"具":{"docs":{},"栏":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}},"是":{"docs":{},"流":{"docs":{},"程":{"docs":{},"定":{"docs":{},"义":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}},"已":{"docs":{},"选":{"docs":{},"管":{"docs":{},"理":{"docs":{},"用":{"docs":{},"户":{"docs":{},":":{"docs":{},"是":{"docs":{},"已":{"docs":{},"添":{"docs":{},"加":{"docs":{},"到":{"docs":{},"该":{"docs":{},"组":{"docs":{},"的":{"docs":{},"用":{"docs":{},"户":{"docs":{},"列":{"docs":{},"表":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}},"项":{"docs":{},"目":{"docs":{},":":{"docs":{},"是":{"docs":{},"该":{"docs":{},"用":{"docs":{},"户":{"docs":{},"已":{"docs":{},"授":{"docs":{},"权":{"docs":{},"的":{"docs":{},"项":{"docs":{},"目":{"docs":{},"。":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}},"年":{"docs":{},":":{"docs":{},"$":{"docs":{},"[":{"docs":{},"a":{"docs":{},"d":{"docs":{},"d":{"docs":{},"_":{"docs":{},"m":{"docs":{},"o":{"docs":{},"n":{"docs":{},"t":{"docs":{},"h":{"docs":{},"s":{"docs":{},"(":{"docs":{},"y":{"docs":{},"y":{"docs":{},"y":{"docs":{},"y":{"docs":{},"m":{"docs":{},"m":{"docs":{},"d":{"docs":{},"d":{"docs":{},",":{"1":{"2":{"docs":{},"*":{"docs":{},"n":{"docs":{},")":{"docs":{},"]":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}},"docs":{}},"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}}},"开":{"docs":{},"始":{"docs":{},"时":{"docs":{},"间":{"docs":{},":":{"docs":{},"流":{"docs":{},"程":{"docs":{},"实":{"docs":{},"例":{"docs":{},"运":{"docs":{},"行":{"docs":{},"的":{"docs":{},"开":{"docs":{},"始":{"docs":{},"时":{"docs":{},"间":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}},"发":{"docs":{},"环":{"docs":{},"境":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}},"恢":{"docs":{},"复":{"docs":{},"失":{"docs":{},"败":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}},"暂":{"docs":{},"停":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}},"或":{"docs":{},"指":{"docs":{},"定":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}},"手":{"docs":{},"机":{"docs":{},":":{"docs":{},"输":{"docs":{},"入":{"docs":{},"用":{"docs":{},"户":{"docs":{},"的":{"docs":{},"手":{"docs":{},"机":{"docs":{},"号":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}},"执":{"docs":{},"行":{"docs":{},"方":{"docs":{},"式":{"docs":{},":":{"docs":{},"补":{"docs":{},"数":{"docs":{},"可":{"docs":{},"以":{"docs":{},"以":{"docs":{},"串":{"docs":{},"行":{"docs":{},"执":{"docs":{},"行":{"docs":{},"或":{"docs":{},"并":{"docs":{},"行":{"docs":{},"执":{"docs":{},"行":{"docs":{},",":{"docs":{},"串":{"docs":{},"行":{"docs":{},"执":{"docs":{},"行":{"docs":{},"是":{"docs":{},"流":{"docs":{},"程":{"docs":{},"实":{"docs":{},"例":{"docs":{},"列":{"docs":{},"表":{"docs":{},"以":{"docs":{},"队":{"docs":{},"列":{"docs":{},"的":{"docs":{},"形":{"docs":{},"式":{"docs":{},"逐":{"docs":{},"个":{"docs":{},"提":{"docs":{},"交":{"docs":{},"执":{"docs":{},"行":{"docs":{},",":{"docs":{},"并":{"docs":{},"行":{"docs":{},"执":{"docs":{},"行":{"docs":{},"是":{"docs":{},"流":{"docs":{},"程":{"docs":{},"实":{"docs":{},"例":{"docs":{},"列":{"docs":{},"表":{"docs":{},"并":{"docs":{},"发":{"docs":{},"形":{"docs":{},"式":{"docs":{},"的":{"docs":{},"提":{"docs":{},"交":{"docs":{},"执":{"docs":{},"行":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"编":{"docs":{},"译":{"docs":{},"命":{"docs":{},"令":{"docs":{},":":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}},":":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}},"抄":{"docs":{},"送":{"docs":{},"人":{"docs":{},":":{"docs":{},"邮":{"docs":{},"件":{"docs":{},"抄":{"docs":{},"送":{"docs":{},"人":{"docs":{},"列":{"docs":{},"表":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.005555555555555556}}}}}}}}}}}}},"拖":{"docs":{},"动":{"docs":{},"工":{"docs":{},"具":{"docs":{},"栏":{"docs":{},"中":{"docs":{},"的":{"docs":{},"任":{"docs":{},"务":{"docs":{},"节":{"docs":{},"点":{"docs":{},"到":{"docs":{},"画":{"docs":{},"板":{"docs":{},"中":{"docs":{},",":{"docs":{},"双":{"docs":{},"击":{"docs":{},"任":{"docs":{},"务":{"docs":{},"节":{"docs":{},"点":{"docs":{},",":{"docs":{},"如":{"docs":{},"下":{"docs":{},"图":{"docs":{},":":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.012962962962962963}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"指":{"docs":{},"定":{"docs":{},"节":{"docs":{},"点":{"docs":{},"启":{"docs":{},"动":{"docs":{},",":{"docs":{},"如":{"docs":{},"下":{"docs":{},"图":{"docs":{},":":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{},"运":{"docs":{},"行":{"docs":{},"用":{"docs":{},"户":{"docs":{},"和":{"docs":{},"组":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}}}}}}}},"按":{"docs":{},"钮":{"docs":{},",":{"docs":{},"删":{"docs":{},"除":{"docs":{},"文":{"docs":{},"件":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}},"可":{"docs":{},"下":{"docs":{},"载":{"docs":{},"和":{"docs":{},"查":{"docs":{},"看":{"docs":{},"日":{"docs":{},"志":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}},"授":{"docs":{},"权":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}},"描":{"docs":{},"述":{"docs":{},"信":{"docs":{},"息":{"docs":{},":":{"docs":{},"描":{"docs":{},"述":{"docs":{},"该":{"docs":{},"节":{"docs":{},"点":{"docs":{},"的":{"docs":{},"功":{"docs":{},"能":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.014814814814814815}}}}}}}}}}}}},":":{"docs":{},"租":{"docs":{},"户":{"docs":{},"的":{"docs":{},"描":{"docs":{},"述":{"docs":{},"信":{"docs":{},"息":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}},"输":{"docs":{},"入":{"docs":{},"数":{"docs":{},"据":{"docs":{},"源":{"docs":{},"的":{"docs":{},"描":{"docs":{},"述":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.009259259259259259}}}}}}}},"文":{"docs":{},"件":{"docs":{},"的":{"docs":{},"描":{"docs":{},"述":{"docs":{},"信":{"docs":{},"息":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}},"项":{"docs":{},"目":{"docs":{},"的":{"docs":{},"描":{"docs":{},"述":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}},"支":{"docs":{},"持":{"docs":{},"代":{"docs":{},"码":{"docs":{},"中":{"docs":{},"自":{"docs":{},"定":{"docs":{},"义":{"docs":{},"变":{"docs":{},"量":{"docs":{},"名":{"docs":{},",":{"docs":{},"声":{"docs":{},"明":{"docs":{},"方":{"docs":{},"式":{"docs":{},":":{"docs":{},"$":{"docs":{},"{":{"docs":{},"变":{"docs":{},"量":{"docs":{},"名":{"docs":{},"}":{"docs":{},"。":{"docs":{},"可":{"docs":{},"以":{"docs":{},"是":{"docs":{},"引":{"docs":{},"用":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"收":{"docs":{},"件":{"docs":{},"人":{"docs":{},":":{"docs":{},"邮":{"docs":{},"件":{"docs":{},"收":{"docs":{},"件":{"docs":{},"人":{"docs":{},"列":{"docs":{},"表":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.005555555555555556}}}}}}}}}}}}},"数":{"docs":{},"据":{"docs":{},"库":{"docs":{},"名":{"docs":{},":":{"docs":{},"输":{"docs":{},"入":{"docs":{},"连":{"docs":{},"接":{"docs":{},"h":{"docs":{},"i":{"docs":{},"v":{"docs":{},"e":{"docs":{},"的":{"docs":{},"数":{"docs":{},"据":{"docs":{},"库":{"docs":{},"名":{"docs":{},"称":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.003703703703703704}}}}}}}}}}}},"m":{"docs":{},"y":{"docs":{},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{},"的":{"docs":{},"数":{"docs":{},"据":{"docs":{},"库":{"docs":{},"名":{"docs":{},"称":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}},"p":{"docs":{},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{},"g":{"docs":{},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{},"的":{"docs":{},"数":{"docs":{},"据":{"docs":{},"库":{"docs":{},"名":{"docs":{},"称":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}},"s":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"k":{"docs":{},"的":{"docs":{},"数":{"docs":{},"据":{"docs":{},"库":{"docs":{},"名":{"docs":{},"称":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}},"预":{"docs":{},"留":{"docs":{},"字":{"docs":{},"段":{"docs":{},",":{"docs":{},"用":{"docs":{},"于":{"docs":{},"创":{"docs":{},"建":{"docs":{},"永":{"docs":{},"久":{"docs":{},"u":{"docs":{},"d":{"docs":{},"f":{"docs":{},"函":{"docs":{},"数":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}},"初":{"docs":{},"始":{"docs":{},"化":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}},"源":{"docs":{},"中":{"docs":{},"心":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}},"支":{"docs":{},"持":{"docs":{},"m":{"docs":{},"y":{"docs":{},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{},"、":{"docs":{},"p":{"docs":{},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{},"g":{"docs":{},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{},"、":{"docs":{},"h":{"docs":{},"i":{"docs":{},"v":{"docs":{},"e":{"docs":{},"及":{"docs":{},"s":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"k":{"docs":{},"数":{"docs":{},"据":{"docs":{},"源":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"名":{"docs":{},"称":{"docs":{},":":{"docs":{},"输":{"docs":{},"入":{"docs":{},"数":{"docs":{},"据":{"docs":{},"源":{"docs":{},"的":{"docs":{},"名":{"docs":{},"称":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.009259259259259259}}}}}}}}}}}}},":":{"docs":{},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{},"数":{"docs":{},"据":{"docs":{},"源":{"docs":{},"支":{"docs":{},"持":{"docs":{},"m":{"docs":{},"y":{"docs":{},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{},"、":{"docs":{},"p":{"docs":{},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{},"g":{"docs":{},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{},"、":{"docs":{},"h":{"docs":{},"i":{"docs":{},"v":{"docs":{},"e":{"docs":{},"和":{"docs":{},"s":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"k":{"docs":{},"四":{"docs":{},"中":{"docs":{},"数":{"docs":{},"据":{"docs":{},"源":{"docs":{},"类":{"docs":{},"型":{"docs":{},",":{"docs":{},"选":{"docs":{},"择":{"docs":{},"对":{"docs":{},"应":{"docs":{},"的":{"docs":{},"数":{"docs":{},"据":{"docs":{},"源":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"存":{"docs":{},"储":{"docs":{},"过":{"docs":{},"程":{"docs":{},"的":{"docs":{},"数":{"docs":{},"据":{"docs":{},"源":{"docs":{},"类":{"docs":{},"型":{"docs":{},"支":{"docs":{},"持":{"docs":{},"m":{"docs":{},"y":{"docs":{},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{},"和":{"docs":{},"p":{"docs":{},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{},"g":{"docs":{},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{},"两":{"docs":{},"种":{"docs":{},",":{"docs":{},"选":{"docs":{},"择":{"docs":{},"对":{"docs":{},"应":{"docs":{},"的":{"docs":{},"数":{"docs":{},"据":{"docs":{},"源":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"选":{"docs":{},"择":{"docs":{},"h":{"docs":{},"i":{"docs":{},"v":{"docs":{},"e":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.003703703703703704}}}}}},"m":{"docs":{},"y":{"docs":{},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}},"p":{"docs":{},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{},"g":{"docs":{},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}},"s":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"k":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}},"文":{"docs":{},"件":{"docs":{},"列":{"docs":{},"表":{"docs":{},",":{"docs":{},"点":{"docs":{},"击":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}},"名":{"docs":{},"称":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}},":":{"docs":{},"输":{"docs":{},"入":{"docs":{},"文":{"docs":{},"件":{"docs":{},"的":{"docs":{},"名":{"docs":{},"称":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}},"查":{"docs":{},"看":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}},"格":{"docs":{},"式":{"docs":{},"支":{"docs":{},"持":{"docs":{},"以":{"docs":{},"下":{"docs":{},"几":{"docs":{},"种":{"docs":{},"类":{"docs":{},"型":{"docs":{},":":{"docs":{},"t":{"docs":{},"x":{"docs":{},"t":{"docs":{},"、":{"docs":{},"l":{"docs":{},"o":{"docs":{},"g":{"docs":{},"、":{"docs":{},"s":{"docs":{},"h":{"docs":{},"、":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{},"、":{"docs":{},"c":{"docs":{},"f":{"docs":{},"g":{"docs":{},"、":{"docs":{},"p":{"docs":{},"y":{"docs":{},"、":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},"、":{"docs":{},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{},"、":{"docs":{},"x":{"docs":{},"m":{"docs":{},"l":{"docs":{},"、":{"docs":{},"h":{"docs":{},"q":{"docs":{},"l":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"管":{"docs":{},"理":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}},":":{"docs":{},"主":{"docs":{},"要":{"docs":{},"是":{"docs":{},"用":{"docs":{},"户":{"docs":{},"的":{"docs":{},"程":{"docs":{},"序":{"docs":{},",":{"docs":{},"脚":{"docs":{},"本":{"docs":{},"和":{"docs":{},"配":{"docs":{},"置":{"docs":{},"文":{"docs":{},"件":{"docs":{},"需":{"docs":{},"要":{"docs":{},"上":{"docs":{},"传":{"docs":{},"到":{"docs":{},"h":{"docs":{},"d":{"docs":{},"f":{"docs":{},"s":{"docs":{},"进":{"docs":{},"行":{"docs":{},"统":{"docs":{},"一":{"docs":{},"管":{"docs":{},"理":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"详":{"docs":{},"情":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}},"重":{"docs":{},"命":{"docs":{},"名":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}},"新":{"docs":{},"建":{"docs":{},"、":{"docs":{},"编":{"docs":{},"辑":{"docs":{},"邮":{"docs":{},"件":{"docs":{},"组":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}},"方":{"docs":{},"法":{"docs":{},":":{"docs":{},"是":{"docs":{},"存":{"docs":{},"储":{"docs":{},"过":{"docs":{},"程":{"docs":{},"的":{"docs":{},"方":{"docs":{},"法":{"docs":{},"名":{"docs":{},"称":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}},"式":{"docs":{},"来":{"docs":{},"执":{"docs":{},"行":{"docs":{},"作":{"docs":{},"业":{"docs":{},",":{"docs":{},"所":{"docs":{},"以":{"docs":{},"部":{"docs":{},"署":{"docs":{},"用":{"docs":{},"户":{"docs":{},"需":{"docs":{},"要":{"docs":{},"有":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}}}}}}}}}}}}}}}}}}},"日":{"docs":{},"常":{"docs":{},"调":{"docs":{},"度":{"docs":{},"实":{"docs":{},"例":{"docs":{},"定":{"docs":{},"时":{"docs":{},"的":{"docs":{},"定":{"docs":{},"时":{"docs":{},"时":{"docs":{},"间":{"docs":{},"前":{"docs":{},"一":{"docs":{},"天":{"docs":{},",":{"docs":{},"格":{"docs":{},"式":{"docs":{},"为":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}},",":{"docs":{},"格":{"docs":{},"式":{"docs":{},"为":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.003703703703703704}}}}}}}}}}}}}}}}}},"志":{"docs":{},"查":{"docs":{},"看":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}},"统":{"docs":{},"一":{"docs":{},"存":{"docs":{},"放":{"docs":{},"于":{"docs":{},"指":{"docs":{},"定":{"docs":{},"文":{"docs":{},"件":{"docs":{},"夹":{"docs":{},"内":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}},"配":{"docs":{},"置":{"docs":{},"文":{"docs":{},"件":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}},"时":{"docs":{},"间":{"docs":{},"自":{"docs":{},"定":{"docs":{},"义":{"docs":{},"参":{"docs":{},"数":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}},":":{"docs":{},"选":{"docs":{},"择":{"docs":{},"指":{"docs":{},"定":{"docs":{},"的":{"docs":{},"补":{"docs":{},"数":{"docs":{},"时":{"docs":{},"间":{"docs":{},"区":{"docs":{},"间":{"docs":{},",":{"docs":{},"此":{"docs":{},"时":{"docs":{},"业":{"docs":{},"务":{"docs":{},"时":{"docs":{},"间":{"docs":{},"为":{"docs":{},"补":{"docs":{},"数":{"docs":{},"时":{"docs":{},"间":{"docs":{},",":{"docs":{},"如":{"docs":{},"果":{"docs":{},"起":{"docs":{},"始":{"docs":{},"时":{"docs":{},"间":{"docs":{},"和":{"docs":{},"结":{"docs":{},"束":{"docs":{},"时":{"docs":{},"间":{"docs":{},"相":{"docs":{},"等":{"docs":{},",":{"docs":{},"则":{"docs":{},"为":{"docs":{},"某":{"docs":{},"一":{"docs":{},"天":{"docs":{},"的":{"docs":{},"补":{"docs":{},"数":{"docs":{},",":{"docs":{},"否":{"docs":{},"则":{"docs":{},"为":{"docs":{},"区":{"docs":{},"间":{"docs":{},"补":{"docs":{},"数":{"docs":{},"。":{"docs":{},"关":{"docs":{},"于":{"docs":{},"系":{"docs":{},"统":{"docs":{},"参":{"docs":{},"数":{"docs":{},",":{"docs":{},"请":{"docs":{},"参":{"docs":{},"考":{"docs":{},"系":{"docs":{},"统":{"docs":{},"参":{"docs":{},"数":{"docs":{},"的":{"docs":{},"讲":{"docs":{},"解":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"是":{"docs":{},"可":{"docs":{},"以":{"docs":{},"任":{"docs":{},"意":{"docs":{},"分":{"docs":{},"解":{"docs":{},"组":{"docs":{},"合":{"docs":{},"的":{"docs":{},",":{"docs":{},"比":{"docs":{},"如":{"docs":{},":":{"docs":{},"$":{"docs":{},"[":{"docs":{},"y":{"docs":{},"y":{"docs":{},"y":{"docs":{},"y":{"docs":{},"m":{"docs":{},"m":{"docs":{},"d":{"docs":{},"d":{"docs":{},"]":{"docs":{},",":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}}}},"否":{"docs":{},"更":{"docs":{},"新":{"docs":{},"流":{"docs":{},"程":{"docs":{},"定":{"docs":{},"义":{"docs":{},":":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}},"目":{"docs":{},"前":{"docs":{},"调":{"docs":{},"度":{"docs":{},"支":{"docs":{},"持":{"docs":{},"的":{"docs":{},"任":{"docs":{},"务":{"docs":{},"类":{"docs":{},"型":{"docs":{},",":{"docs":{},"当":{"docs":{},"前":{"docs":{},"调":{"docs":{},"度":{"docs":{},"支":{"docs":{},"持":{"docs":{},"s":{"docs":{},"h":{"docs":{},"e":{"docs":{},"l":{"docs":{},"l":{"docs":{},"、":{"docs":{},"子":{"docs":{},"流":{"docs":{},"程":{"docs":{},"、":{"docs":{},"存":{"docs":{},"储":{"docs":{},"过":{"docs":{},"程":{"docs":{},"、":{"docs":{},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{},"、":{"docs":{},"m":{"docs":{},"r":{"docs":{},"、":{"docs":{},"s":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"k":{"docs":{},"和":{"docs":{},"p":{"docs":{},"y":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"n":{"docs":{},"七":{"docs":{},"种":{"docs":{},"任":{"docs":{},"务":{"docs":{},"类":{"docs":{},"型":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"暂":{"docs":{},"停":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.003703703703703704}}}},"月":{"docs":{},":":{"docs":{},"$":{"docs":{},"[":{"docs":{},"a":{"docs":{},"d":{"docs":{},"d":{"docs":{},"_":{"docs":{},"m":{"docs":{},"o":{"docs":{},"n":{"docs":{},"t":{"docs":{},"h":{"docs":{},"s":{"docs":{},"(":{"docs":{},"y":{"docs":{},"y":{"docs":{},"y":{"docs":{},"y":{"docs":{},"m":{"docs":{},"m":{"docs":{},"d":{"docs":{},"d":{"docs":{},",":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}},"n":{"docs":{},")":{"docs":{},"]":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"服":{"docs":{},"务":{"docs":{},"管":{"docs":{},"理":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}},"是":{"docs":{},"对":{"docs":{},"e":{"docs":{},"a":{"docs":{},"s":{"docs":{},"y":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"的":{"docs":{},"m":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"、":{"docs":{},"w":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{},"e":{"docs":{},"r":{"docs":{},"的":{"docs":{},"任":{"docs":{},"务":{"docs":{},"监":{"docs":{},"控":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"查":{"docs":{},"看":{"docs":{},"历":{"docs":{},"史":{"docs":{},",":{"docs":{},"可":{"docs":{},"以":{"docs":{},"查":{"docs":{},"看":{"docs":{},"该":{"docs":{},"流":{"docs":{},"程":{"docs":{},"实":{"docs":{},"例":{"docs":{},"运":{"docs":{},"行":{"docs":{},"的":{"docs":{},"该":{"docs":{},"任":{"docs":{},"务":{"docs":{},"实":{"docs":{},"例":{"docs":{},"列":{"docs":{},"表":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}},"这":{"docs":{},"时":{"docs":{},"查":{"docs":{},"看":{"docs":{},"的":{"docs":{},"是":{"docs":{},"此":{"docs":{},"流":{"docs":{},"程":{"docs":{},"实":{"docs":{},"例":{"docs":{},"的":{"docs":{},"任":{"docs":{},"务":{"docs":{},"实":{"docs":{},"例":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}},"日":{"docs":{},"志":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}},",":{"docs":{},"可":{"docs":{},"以":{"docs":{},"查":{"docs":{},"看":{"docs":{},"该":{"docs":{},"任":{"docs":{},"务":{"docs":{},"实":{"docs":{},"例":{"docs":{},"运":{"docs":{},"行":{"docs":{},"的":{"docs":{},"日":{"docs":{},"志":{"docs":{},",":{"docs":{},"如":{"docs":{},"下":{"docs":{},"图":{"docs":{},":":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}},":":{"docs":{},"点":{"docs":{},"击":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}},"目":{"docs":{},"录":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}},"格":{"docs":{},"式":{"docs":{},"的":{"docs":{},",":{"docs":{},"$":{"docs":{},"[":{"docs":{},"y":{"docs":{},"y":{"docs":{},"y":{"docs":{},"y":{"docs":{},"m":{"docs":{},"m":{"docs":{},"d":{"docs":{},"d":{"docs":{},"h":{"docs":{},"h":{"docs":{},"m":{"docs":{},"m":{"docs":{},"s":{"docs":{},"s":{"docs":{},"]":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}},"正":{"docs":{},"在":{"docs":{},"运":{"docs":{},"行":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}},"任":{"docs":{},"务":{"docs":{},"的":{"docs":{},"后":{"docs":{},"继":{"docs":{},"节":{"docs":{},"点":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}},"常":{"docs":{},"编":{"docs":{},"译":{"docs":{},"完":{"docs":{},"后":{"docs":{},",":{"docs":{},"会":{"docs":{},"在":{"docs":{},"当":{"docs":{},"前":{"docs":{},"目":{"docs":{},"录":{"docs":{},"生":{"docs":{},"成":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}}},"水":{"docs":{},"平":{"docs":{},"依":{"docs":{},"赖":{"docs":{},"就":{"docs":{},"是":{"docs":{},"指":{"docs":{},"d":{"docs":{},"a":{"docs":{},"g":{"docs":{},"图":{"docs":{},"的":{"docs":{},"有":{"docs":{},"向":{"docs":{},"依":{"docs":{},"赖":{"docs":{},",":{"docs":{},"是":{"docs":{},"同":{"docs":{},"一":{"docs":{},"个":{"docs":{},"流":{"docs":{},"程":{"docs":{},"实":{"docs":{},"例":{"docs":{},"任":{"docs":{},"务":{"docs":{},"节":{"docs":{},"点":{"docs":{},"的":{"docs":{},"前":{"docs":{},"驱":{"docs":{},",":{"docs":{},"后":{"docs":{},"继":{"docs":{},"之":{"docs":{},"间":{"docs":{},"的":{"docs":{},"依":{"docs":{},"赖":{"docs":{},"关":{"docs":{},"系":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"流":{"docs":{},"程":{"docs":{},"定":{"docs":{},"义":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}},"列":{"docs":{},"表":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}},"可":{"docs":{},"以":{"docs":{},"设":{"docs":{},"置":{"docs":{},"定":{"docs":{},"时":{"docs":{},",":{"docs":{},"周":{"docs":{},"期":{"docs":{},"性":{"docs":{},"的":{"docs":{},"跑":{"docs":{},"作":{"docs":{},"业":{"docs":{},"。":{"docs":{},"如":{"docs":{},"下":{"docs":{},"图":{"docs":{},":":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}},"操":{"docs":{},"作":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}},"有":{"docs":{},"两":{"docs":{},"个":{"docs":{},"状":{"docs":{},"态":{"docs":{},":":{"docs":{},"上":{"docs":{},"线":{"docs":{},"和":{"docs":{},"下":{"docs":{},"线":{"docs":{},"。":{"docs":{},"只":{"docs":{},"有":{"docs":{},"上":{"docs":{},"线":{"docs":{},"的":{"docs":{},"流":{"docs":{},"程":{"docs":{},"才":{"docs":{},"能":{"docs":{},"启":{"docs":{},"动":{"docs":{},"或":{"docs":{},"调":{"docs":{},"度":{"docs":{},",":{"docs":{},"下":{"docs":{},"线":{"docs":{},"的":{"docs":{},"流":{"docs":{},"程":{"docs":{},"用":{"docs":{},"来":{"docs":{},"编":{"docs":{},"辑":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"统":{"docs":{},"计":{"docs":{},":":{"docs":{},"是":{"docs":{},"统":{"docs":{},"计":{"docs":{},"该":{"docs":{},"用":{"docs":{},"户":{"docs":{},"创":{"docs":{},"建":{"docs":{},"的":{"docs":{},"流":{"docs":{},"程":{"docs":{},"定":{"docs":{},"义":{"docs":{},"及":{"docs":{},"管":{"docs":{},"理":{"docs":{},"员":{"docs":{},"授":{"docs":{},"予":{"docs":{},"该":{"docs":{},"用":{"docs":{},"户":{"docs":{},"的":{"docs":{},"流":{"docs":{},"程":{"docs":{},"定":{"docs":{},"义":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},":":{"docs":{},"是":{"docs":{},"可":{"docs":{},"视":{"docs":{},"化":{"docs":{},"拖":{"docs":{},"拽":{"docs":{},"成":{"docs":{},"的":{"docs":{},"d":{"docs":{},"a":{"docs":{},"g":{"docs":{},"的":{"docs":{},"统":{"docs":{},"称":{"docs":{},",":{"docs":{},"它":{"docs":{},"是":{"docs":{},"静":{"docs":{},"态":{"docs":{},"的":{"docs":{},",":{"docs":{},"没":{"docs":{},"有":{"docs":{},"状":{"docs":{},"态":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"实":{"docs":{},"例":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.003703703703703704}},"是":{"docs":{},"流":{"docs":{},"程":{"docs":{},"定":{"docs":{},"义":{"docs":{},"的":{"docs":{},"实":{"docs":{},"例":{"docs":{},"化":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}},":":{"docs":{},"对":{"docs":{},"流":{"docs":{},"程":{"docs":{},"定":{"docs":{},"义":{"docs":{},"的":{"docs":{},"每":{"docs":{},"次":{"docs":{},"实":{"docs":{},"例":{"docs":{},"化":{"docs":{},"会":{"docs":{},"生":{"docs":{},"成":{"docs":{},"一":{"docs":{},"个":{"docs":{},"流":{"docs":{},"程":{"docs":{},"实":{"docs":{},"例":{"docs":{},",":{"docs":{},"是":{"docs":{},"动":{"docs":{},"态":{"docs":{},"的":{"docs":{},",":{"docs":{},"是":{"docs":{},"有":{"docs":{},"状":{"docs":{},"态":{"docs":{},"的":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"状":{"docs":{},"态":{"docs":{},"统":{"docs":{},"计":{"docs":{},":":{"docs":{},"是":{"docs":{},"指":{"docs":{},"在":{"docs":{},"指":{"docs":{},"定":{"docs":{},"时":{"docs":{},"间":{"docs":{},"范":{"docs":{},"围":{"docs":{},"内":{"docs":{},",":{"docs":{},"统":{"docs":{},"计":{"docs":{},"流":{"docs":{},"程":{"docs":{},"实":{"docs":{},"例":{"docs":{},"中":{"docs":{},"的":{"docs":{},"待":{"docs":{},"运":{"docs":{},"行":{"docs":{},"、":{"docs":{},"失":{"docs":{},"败":{"docs":{},"、":{"docs":{},"运":{"docs":{},"行":{"docs":{},"中":{"docs":{},"、":{"docs":{},"完":{"docs":{},"成":{"docs":{},"、":{"docs":{},"成":{"docs":{},"功":{"docs":{},"的":{"docs":{},"个":{"docs":{},"数":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"点":{"docs":{},"击":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.003703703703703704}},"“":{"docs":{},"用":{"docs":{},"户":{"docs":{},"信":{"docs":{},"息":{"docs":{},"”":{"docs":{},"按":{"docs":{},"钮":{"docs":{},",":{"docs":{},"如":{"docs":{},"下":{"docs":{},"图":{"docs":{},":":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}},"”":{"docs":{},"修":{"docs":{},"改":{"docs":{},"”":{"docs":{},"按":{"docs":{},"钮":{"docs":{},",":{"docs":{},"修":{"docs":{},"改":{"docs":{},"用":{"docs":{},"户":{"docs":{},"信":{"docs":{},"息":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}},"任":{"docs":{},"务":{"docs":{},"实":{"docs":{},"例":{"docs":{},"节":{"docs":{},"点":{"docs":{},",":{"docs":{},"点":{"docs":{},"击":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.003703703703703704}}}}}}}}}}},"变":{"docs":{},"量":{"docs":{},"是":{"docs":{},"对":{"docs":{},"变":{"docs":{},"量":{"docs":{},"的":{"docs":{},"复":{"docs":{},"制":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}},"退":{"docs":{},"出":{"docs":{},"按":{"docs":{},"钮":{"docs":{},"则":{"docs":{},"退":{"docs":{},"出":{"docs":{},"系":{"docs":{},"统":{"docs":{},",":{"docs":{},"返":{"docs":{},"回":{"docs":{},"登":{"docs":{},"录":{"docs":{},"页":{"docs":{},"面":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}},"隐":{"docs":{},"藏":{"docs":{},"按":{"docs":{},"钮":{"docs":{},",":{"docs":{},"查":{"docs":{},"看":{"docs":{},"流":{"docs":{},"程":{"docs":{},"实":{"docs":{},"例":{"docs":{},"运":{"docs":{},"行":{"docs":{},"变":{"docs":{},"量":{"docs":{},"。":{"docs":{},"如":{"docs":{},"下":{"docs":{},"图":{"docs":{},":":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}},"项":{"docs":{},"目":{"docs":{},"列":{"docs":{},"表":{"docs":{},"中":{"docs":{},"的":{"docs":{},"项":{"docs":{},"目":{"docs":{},"名":{"docs":{},"称":{"docs":{},",":{"docs":{},"可":{"docs":{},"以":{"docs":{},"跳":{"docs":{},"转":{"docs":{},"到":{"docs":{},"指":{"docs":{},"定":{"docs":{},"的":{"docs":{},"项":{"docs":{},"目":{"docs":{},"首":{"docs":{},"页":{"docs":{},",":{"docs":{},"如":{"docs":{},"下":{"docs":{},"图":{"docs":{},":":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"特":{"docs":{},"别":{"docs":{},"注":{"docs":{},"意":{"docs":{},":":{"docs":{},"如":{"docs":{},"果":{"docs":{},"任":{"docs":{},"务":{"docs":{},"运":{"docs":{},"行":{"docs":{},"周":{"docs":{},"期":{"docs":{},"比":{"docs":{},"较":{"docs":{},"短":{"docs":{},"或":{"docs":{},"者":{"docs":{},"正":{"docs":{},"好":{"docs":{},"在":{"docs":{},"k":{"docs":{},"i":{"docs":{},"l":{"docs":{},"l":{"docs":{},"任":{"docs":{},"务":{"docs":{},"的":{"docs":{},"时":{"docs":{},"候":{"docs":{},",":{"docs":{},"任":{"docs":{},"务":{"docs":{},"已":{"docs":{},"经":{"docs":{},"结":{"docs":{},"束":{"docs":{},"了":{"docs":{},",":{"docs":{},"此":{"docs":{},"时":{"docs":{},"将":{"docs":{},"k":{"docs":{},"i":{"docs":{},"l":{"docs":{},"l":{"docs":{},"不":{"docs":{},"掉":{"docs":{},"正":{"docs":{},"在":{"docs":{},"运":{"docs":{},"行":{"docs":{},"的":{"docs":{},"任":{"docs":{},"务":{"docs":{},",":{"docs":{},"继":{"docs":{},"而":{"docs":{},"会":{"docs":{},"把":{"docs":{},"下":{"docs":{},"一":{"docs":{},"个":{"docs":{},"任":{"docs":{},"务":{"docs":{},"设":{"docs":{},"置":{"docs":{},"为":{"docs":{},"k":{"docs":{},"i":{"docs":{},"l":{"docs":{},"l":{"docs":{},"状":{"docs":{},"态":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"对":{"docs":{},"于":{"docs":{},"用":{"docs":{},"户":{"docs":{},"自":{"docs":{},"己":{"docs":{},"创":{"docs":{},"建":{"docs":{},"的":{"docs":{},"项":{"docs":{},"目":{"docs":{},",":{"docs":{},"该":{"docs":{},"用":{"docs":{},"户":{"docs":{},"拥":{"docs":{},"有":{"docs":{},"所":{"docs":{},"有":{"docs":{},"的":{"docs":{},"权":{"docs":{},"限":{"docs":{},"。":{"docs":{},"则":{"docs":{},"项":{"docs":{},"目":{"docs":{},"列":{"docs":{},"表":{"docs":{},"和":{"docs":{},"已":{"docs":{},"选":{"docs":{},"项":{"docs":{},"目":{"docs":{},"列":{"docs":{},"表":{"docs":{},"中":{"docs":{},"不":{"docs":{},"会":{"docs":{},"体":{"docs":{},"现":{"docs":{},"。":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"重":{"docs":{},"跑":{"docs":{},"时":{"docs":{},"系":{"docs":{},"统":{"docs":{},"参":{"docs":{},"数":{"docs":{},"已":{"docs":{},"经":{"docs":{},"固":{"docs":{},"化":{"docs":{},"了":{"docs":{},",":{"docs":{},"系":{"docs":{},"统":{"docs":{},"参":{"docs":{},"数":{"docs":{},"不":{"docs":{},"会":{"docs":{},"随":{"docs":{},"着":{"docs":{},"时":{"docs":{},"间":{"docs":{},"改":{"docs":{},"变":{"docs":{},"而":{"docs":{},"改":{"docs":{},"变":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"状":{"docs":{},"态":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}},":":{"docs":{},"流":{"docs":{},"程":{"docs":{},"实":{"docs":{},"例":{"docs":{},"最":{"docs":{},"终":{"docs":{},"运":{"docs":{},"行":{"docs":{},"的":{"docs":{},"状":{"docs":{},"态":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}},"用":{"docs":{},"户":{"docs":{},"名":{"docs":{},"称":{"docs":{},":":{"docs":{},"用":{"docs":{},"户":{"docs":{},"的":{"docs":{},"名":{"docs":{},"称":{"docs":{},",":{"docs":{},"唯":{"docs":{},"一":{"docs":{},",":{"docs":{},"不":{"docs":{},"能":{"docs":{},"重":{"docs":{},"复":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}},":":{"docs":{},"设":{"docs":{},"置":{"docs":{},"连":{"docs":{},"接":{"docs":{},"h":{"docs":{},"i":{"docs":{},"v":{"docs":{},"e":{"docs":{},"的":{"docs":{},"用":{"docs":{},"户":{"docs":{},"名":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.003703703703703704}}}}}}}}}},"m":{"docs":{},"y":{"docs":{},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{},"的":{"docs":{},"用":{"docs":{},"户":{"docs":{},"名":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}},"p":{"docs":{},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{},"g":{"docs":{},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{},"的":{"docs":{},"用":{"docs":{},"户":{"docs":{},"名":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}},"s":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"k":{"docs":{},"的":{"docs":{},"用":{"docs":{},"户":{"docs":{},"名":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}},"是":{"docs":{},"e":{"docs":{},"a":{"docs":{},"s":{"docs":{},"y":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"上":{"docs":{},"的":{"docs":{},"用":{"docs":{},"户":{"docs":{},",":{"docs":{},"用":{"docs":{},"于":{"docs":{},"e":{"docs":{},"a":{"docs":{},"s":{"docs":{},"y":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"上":{"docs":{},"的":{"docs":{},"功":{"docs":{},"能":{"docs":{},"操":{"docs":{},"作":{"docs":{},"。":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"管":{"docs":{},"理":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}},"自":{"docs":{},"定":{"docs":{},"义":{"docs":{},"参":{"docs":{},"数":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}},"分":{"docs":{},"为":{"docs":{},"全":{"docs":{},"局":{"docs":{},"参":{"docs":{},"数":{"docs":{},"和":{"docs":{},"局":{"docs":{},"部":{"docs":{},"参":{"docs":{},"数":{"docs":{},"。":{"docs":{},"全":{"docs":{},"局":{"docs":{},"参":{"docs":{},"数":{"docs":{},"是":{"docs":{},"保":{"docs":{},"存":{"docs":{},"流":{"docs":{},"程":{"docs":{},"定":{"docs":{},"义":{"docs":{},"和":{"docs":{},"流":{"docs":{},"程":{"docs":{},"实":{"docs":{},"例":{"docs":{},"的":{"docs":{},"时":{"docs":{},"候":{"docs":{},"传":{"docs":{},"递":{"docs":{},"的":{"docs":{},"全":{"docs":{},"局":{"docs":{},"参":{"docs":{},"数":{"docs":{},",":{"docs":{},"全":{"docs":{},"局":{"docs":{},"参":{"docs":{},"数":{"docs":{},"可":{"docs":{},"以":{"docs":{},"在":{"docs":{},"整":{"docs":{},"个":{"docs":{},"流":{"docs":{},"程":{"docs":{},"中":{"docs":{},"的":{"docs":{},"任":{"docs":{},"何":{"docs":{},"一":{"docs":{},"个":{"docs":{},"任":{"docs":{},"务":{"docs":{},"节":{"docs":{},"点":{"docs":{},"的":{"docs":{},"局":{"docs":{},"部":{"docs":{},"参":{"docs":{},"数":{"docs":{},"引":{"docs":{},"用":{"docs":{},"。":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"来":{"docs":{},"显":{"docs":{},"示":{"docs":{},"某":{"docs":{},"个":{"docs":{},"流":{"docs":{},"程":{"docs":{},"定":{"docs":{},"义":{"docs":{},"跑":{"docs":{},"过":{"docs":{},"的":{"docs":{},"流":{"docs":{},"程":{"docs":{},"实":{"docs":{},"例":{"docs":{},"及":{"docs":{},"任":{"docs":{},"务":{"docs":{},"实":{"docs":{},"例":{"docs":{},"的":{"docs":{},"状":{"docs":{},"态":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}}},"命":{"docs":{},"令":{"docs":{},"行":{"docs":{},"模":{"docs":{},"式":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}},"登":{"docs":{},"录":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}},"的":{"docs":{},"流":{"docs":{},"程":{"docs":{},"实":{"docs":{},"例":{"docs":{},",":{"docs":{},"点":{"docs":{},"击":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.003703703703703704}}}}}}}}}},"目":{"docs":{},"前":{"docs":{},"只":{"docs":{},"支":{"docs":{},"持":{"docs":{},"h":{"docs":{},"i":{"docs":{},"v":{"docs":{},"e":{"docs":{},"的":{"docs":{},"临":{"docs":{},"时":{"docs":{},"u":{"docs":{},"d":{"docs":{},"f":{"docs":{},"函":{"docs":{},"数":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}},"录":{"docs":{},"下":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}},"租":{"docs":{},"户":{"docs":{},"名":{"docs":{},"称":{"docs":{},":":{"docs":{},"租":{"docs":{},"户":{"docs":{},"的":{"docs":{},"名":{"docs":{},"称":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}},"是":{"docs":{},"l":{"docs":{},"i":{"docs":{},"n":{"docs":{},"u":{"docs":{},"x":{"docs":{},"上":{"docs":{},"的":{"docs":{},"用":{"docs":{},"户":{"docs":{},",":{"docs":{},"用":{"docs":{},"于":{"docs":{},"作":{"docs":{},"业":{"docs":{},"的":{"docs":{},"提":{"docs":{},"交":{"docs":{},"。":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}},"管":{"docs":{},"理":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}},"编":{"docs":{},"码":{"docs":{},":":{"docs":{},"租":{"docs":{},"户":{"docs":{},"编":{"docs":{},"码":{"docs":{},"是":{"docs":{},"l":{"docs":{},"i":{"docs":{},"n":{"docs":{},"u":{"docs":{},"x":{"docs":{},"上":{"docs":{},"的":{"docs":{},"用":{"docs":{},"户":{"docs":{},",":{"docs":{},"唯":{"docs":{},"一":{"docs":{},",":{"docs":{},"不":{"docs":{},"能":{"docs":{},"重":{"docs":{},"复":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}}}},":":{"docs":{},"设":{"docs":{},"置":{"docs":{},"该":{"docs":{},"用":{"docs":{},"户":{"docs":{},"所":{"docs":{},"属":{"docs":{},"的":{"docs":{},"租":{"docs":{},"户":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}},"程":{"docs":{},"序":{"docs":{},"类":{"docs":{},"型":{"docs":{},":":{"docs":{},"支":{"docs":{},"持":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},"、":{"docs":{},"s":{"docs":{},"c":{"docs":{},"a":{"docs":{},"l":{"docs":{},"a":{"docs":{},"和":{"docs":{},"p":{"docs":{},"y":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"n":{"docs":{},"三":{"docs":{},"种":{"docs":{},"语":{"docs":{},"言":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}},"选":{"docs":{},"择":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},"语":{"docs":{},"言":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}},"p":{"docs":{},"y":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"n":{"docs":{},"语":{"docs":{},"言":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}},"端":{"docs":{},"口":{"docs":{},":":{"docs":{},"输":{"docs":{},"入":{"docs":{},"连":{"docs":{},"接":{"docs":{},"h":{"docs":{},"i":{"docs":{},"v":{"docs":{},"e":{"docs":{},"的":{"docs":{},"端":{"docs":{},"口":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}},"m":{"docs":{},"y":{"docs":{},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{},"的":{"docs":{},"端":{"docs":{},"口":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}},"p":{"docs":{},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{},"g":{"docs":{},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{},"的":{"docs":{},"端":{"docs":{},"口":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}},"s":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"k":{"docs":{},"的":{"docs":{},"端":{"docs":{},"口":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}},"z":{"docs":{},"o":{"docs":{},"o":{"docs":{},"k":{"docs":{},"e":{"docs":{},"e":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"的":{"docs":{},"端":{"docs":{},"口":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}},"第":{"docs":{},"一":{"docs":{},"种":{"docs":{},"是":{"docs":{},"通":{"docs":{},"过":{"docs":{},"流":{"docs":{},"程":{"docs":{},"实":{"docs":{},"例":{"docs":{},"任":{"docs":{},"务":{"docs":{},"节":{"docs":{},"点":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}},"二":{"docs":{},"种":{"docs":{},"是":{"docs":{},"通":{"docs":{},"过":{"docs":{},"点":{"docs":{},"击":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}},"等":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}},"同":{"docs":{},"于":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0034071550255536627}}}}},"组":{"docs":{},"名":{"docs":{},"称":{"docs":{},":":{"docs":{},"输":{"docs":{},"入":{"docs":{},"组":{"docs":{},"的":{"docs":{},"名":{"docs":{},"称":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}},"类":{"docs":{},"型":{"docs":{},":":{"docs":{},"支":{"docs":{},"持":{"docs":{},"邮":{"docs":{},"件":{"docs":{},"/":{"docs":{},"短":{"docs":{},"信":{"docs":{},"两":{"docs":{},"种":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}},"结":{"docs":{},"束":{"docs":{},"时":{"docs":{},"间":{"docs":{},":":{"docs":{},"流":{"docs":{},"程":{"docs":{},"实":{"docs":{},"例":{"docs":{},"运":{"docs":{},"行":{"docs":{},"的":{"docs":{},"结":{"docs":{},"束":{"docs":{},"时":{"docs":{},"间":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}},"脚":{"docs":{},"本":{"docs":{},":":{"docs":{},"用":{"docs":{},"户":{"docs":{},"开":{"docs":{},"发":{"docs":{},"的":{"docs":{},"p":{"docs":{},"y":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"n":{"docs":{},"程":{"docs":{},"序":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}},"s":{"docs":{},"h":{"docs":{},"e":{"docs":{},"l":{"docs":{},"l":{"docs":{},"程":{"docs":{},"序":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}},"一":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}},"是":{"docs":{},"监":{"docs":{},"听":{"docs":{},",":{"docs":{},"m":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"和":{"docs":{},"w":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{},"e":{"docs":{},"r":{"docs":{},"服":{"docs":{},"务":{"docs":{},"挂":{"docs":{},"掉":{"docs":{},"重":{"docs":{},"启":{"docs":{},"的":{"docs":{},"脚":{"docs":{},"本":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"自":{"docs":{},"依":{"docs":{},"赖":{"docs":{},":":{"docs":{},"是":{"docs":{},"同":{"docs":{},"一":{"docs":{},"个":{"docs":{},"流":{"docs":{},"程":{"docs":{},"实":{"docs":{},"例":{"docs":{},"的":{"docs":{},"上":{"docs":{},"一":{"docs":{},"周":{"docs":{},"期":{"docs":{},"的":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}},"定":{"docs":{},"义":{"docs":{},"参":{"docs":{},"数":{"docs":{},":":{"docs":{},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{},"任":{"docs":{},"务":{"docs":{},"类":{"docs":{},"型":{"docs":{},"自":{"docs":{},"定":{"docs":{},"义":{"docs":{},"参":{"docs":{},"数":{"docs":{},"类":{"docs":{},"型":{"docs":{},"和":{"docs":{},"数":{"docs":{},"据":{"docs":{},"类":{"docs":{},"型":{"docs":{},"同":{"docs":{},"存":{"docs":{},"储":{"docs":{},"过":{"docs":{},"程":{"docs":{},"任":{"docs":{},"务":{"docs":{},"类":{"docs":{},"型":{"docs":{},"一":{"docs":{},"样":{"docs":{},"。":{"docs":{},"区":{"docs":{},"别":{"docs":{},"在":{"docs":{},"于":{"docs":{},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{},"任":{"docs":{},"务":{"docs":{},"类":{"docs":{},"型":{"docs":{},"自":{"docs":{},"定":{"docs":{},"义":{"docs":{},"参":{"docs":{},"数":{"docs":{},"会":{"docs":{},"替":{"docs":{},"换":{"docs":{},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{},"语":{"docs":{},"句":{"docs":{},"中":{"docs":{},"$":{"docs":{},"{":{"docs":{},"变":{"docs":{},"量":{"docs":{},"}":{"docs":{},",":{"docs":{},"而":{"docs":{},"存":{"docs":{},"储":{"docs":{},"过":{"docs":{},"程":{"docs":{},"是":{"docs":{},"自":{"docs":{},"定":{"docs":{},"义":{"docs":{},"参":{"docs":{},"数":{"docs":{},"顺":{"docs":{},"序":{"docs":{},"的":{"docs":{},"给":{"docs":{},"方":{"docs":{},"法":{"docs":{},"设":{"docs":{},"置":{"docs":{},"值":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"存":{"docs":{},"储":{"docs":{},"过":{"docs":{},"程":{"docs":{},"的":{"docs":{},"自":{"docs":{},"定":{"docs":{},"义":{"docs":{},"参":{"docs":{},"数":{"docs":{},"类":{"docs":{},"型":{"docs":{},"支":{"docs":{},"持":{"docs":{},"i":{"docs":{},"n":{"docs":{},"、":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{},"两":{"docs":{},"种":{"docs":{},",":{"docs":{},"数":{"docs":{},"据":{"docs":{},"类":{"docs":{},"型":{"docs":{},"支":{"docs":{},"持":{"docs":{},"v":{"docs":{},"a":{"docs":{},"r":{"docs":{},"c":{"docs":{},"h":{"docs":{},"a":{"docs":{},"r":{"docs":{},"、":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"e":{"docs":{},"g":{"docs":{},"e":{"docs":{},"r":{"docs":{},"、":{"docs":{},"l":{"docs":{},"o":{"docs":{},"n":{"docs":{},"g":{"docs":{},"、":{"docs":{},"f":{"docs":{},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"t":{"docs":{},"、":{"docs":{},"d":{"docs":{},"o":{"docs":{},"u":{"docs":{},"b":{"docs":{},"l":{"docs":{},"e":{"docs":{},"、":{"docs":{},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"、":{"docs":{},"t":{"docs":{},"i":{"docs":{},"m":{"docs":{},"e":{"docs":{},"、":{"docs":{},"t":{"docs":{},"i":{"docs":{},"m":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"m":{"docs":{},"p":{"docs":{},"、":{"docs":{},"b":{"docs":{},"o":{"docs":{},"o":{"docs":{},"l":{"docs":{},"e":{"docs":{},"a":{"docs":{},"n":{"docs":{},"九":{"docs":{},"种":{"docs":{},"数":{"docs":{},"据":{"docs":{},"类":{"docs":{},"型":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"是":{"docs":{},"m":{"docs":{},"r":{"docs":{},"局":{"docs":{},"部":{"docs":{},"的":{"docs":{},"用":{"docs":{},"户":{"docs":{},"自":{"docs":{},"定":{"docs":{},"义":{"docs":{},"参":{"docs":{},"数":{"docs":{},",":{"docs":{},"会":{"docs":{},"替":{"docs":{},"换":{"docs":{},"脚":{"docs":{},"本":{"docs":{},"中":{"docs":{},"以":{"docs":{},"$":{"docs":{},"{":{"docs":{},"变":{"docs":{},"量":{"docs":{},"}":{"docs":{},"的":{"docs":{},"内":{"docs":{},"容":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.005555555555555556}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"p":{"docs":{},"y":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"n":{"docs":{},"局":{"docs":{},"部":{"docs":{},"的":{"docs":{},"用":{"docs":{},"户":{"docs":{},"自":{"docs":{},"定":{"docs":{},"义":{"docs":{},"参":{"docs":{},"数":{"docs":{},",":{"docs":{},"会":{"docs":{},"替":{"docs":{},"换":{"docs":{},"脚":{"docs":{},"本":{"docs":{},"中":{"docs":{},"以":{"docs":{},"$":{"docs":{},"{":{"docs":{},"变":{"docs":{},"量":{"docs":{},"}":{"docs":{},"的":{"docs":{},"内":{"docs":{},"容":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"h":{"docs":{},"e":{"docs":{},"l":{"docs":{},"l":{"docs":{},"局":{"docs":{},"部":{"docs":{},"的":{"docs":{},"用":{"docs":{},"户":{"docs":{},"自":{"docs":{},"定":{"docs":{},"义":{"docs":{},"参":{"docs":{},"数":{"docs":{},",":{"docs":{},"会":{"docs":{},"替":{"docs":{},"换":{"docs":{},"脚":{"docs":{},"本":{"docs":{},"中":{"docs":{},"以":{"docs":{},"$":{"docs":{},"{":{"docs":{},"变":{"docs":{},"量":{"docs":{},"}":{"docs":{},"的":{"docs":{},"内":{"docs":{},"容":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"了":{"docs":{},"t":{"docs":{},"a":{"docs":{},"s":{"docs":{},"k":{"docs":{},"l":{"docs":{},"o":{"docs":{},"g":{"docs":{},"a":{"docs":{},"p":{"docs":{},"p":{"docs":{},"e":{"docs":{},"n":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},"和":{"docs":{},"t":{"docs":{},"a":{"docs":{},"s":{"docs":{},"k":{"docs":{},"l":{"docs":{},"o":{"docs":{},"g":{"docs":{},"f":{"docs":{},"i":{"docs":{},"l":{"docs":{},"t":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"节":{"docs":{},"点":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.011111111111111112}},"名":{"docs":{},"称":{"docs":{},":":{"docs":{},"一":{"docs":{},"个":{"docs":{},"流":{"docs":{},"程":{"docs":{},"定":{"docs":{},"义":{"docs":{},"中":{"docs":{},"的":{"docs":{},"节":{"docs":{},"点":{"docs":{},"名":{"docs":{},"称":{"docs":{},"是":{"docs":{},"唯":{"docs":{},"一":{"docs":{},"的":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.014814814814814815}}}}}}}}}}}}}}}}}}}}},"执":{"docs":{},"行":{"docs":{},":":{"docs":{},"节":{"docs":{},"点":{"docs":{},"执":{"docs":{},"行":{"docs":{},"模":{"docs":{},"式":{"docs":{},"有":{"docs":{},"三":{"docs":{},"种":{"docs":{},",":{"docs":{},"分":{"docs":{},"别":{"docs":{},"为":{"docs":{},"向":{"docs":{},"后":{"docs":{},"执":{"docs":{},"行":{"docs":{},"、":{"docs":{},"向":{"docs":{},"前":{"docs":{},"执":{"docs":{},"行":{"docs":{},"和":{"docs":{},"仅":{"docs":{},"执":{"docs":{},"行":{"docs":{},"当":{"docs":{},"前":{"docs":{},"节":{"docs":{},"点":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"补":{"docs":{},"数":{"docs":{},":":{"docs":{},"是":{"docs":{},"对":{"docs":{},"流":{"docs":{},"程":{"docs":{},"进":{"docs":{},"行":{"docs":{},"历":{"docs":{},"史":{"docs":{},"的":{"docs":{},"补":{"docs":{},"数":{"docs":{},",":{"docs":{},"支":{"docs":{},"持":{"docs":{},"区":{"docs":{},"间":{"docs":{},"补":{"docs":{},"数":{"docs":{},"和":{"docs":{},"某":{"docs":{},"一":{"docs":{},"天":{"docs":{},"的":{"docs":{},"补":{"docs":{},"数":{"docs":{},",":{"docs":{},"如":{"docs":{},"下":{"docs":{},"图":{"docs":{},":":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"见":{"docs":{},"流":{"docs":{},"程":{"docs":{},"定":{"docs":{},"义":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}},"设":{"docs":{},"置":{"docs":{},"为":{"docs":{},"暂":{"docs":{},"停":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}},"定":{"docs":{},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{},"的":{"docs":{},"安":{"docs":{},"装":{"docs":{},"目":{"docs":{},"录":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}}}}}}},"资":{"docs":{},"源":{"docs":{},"中":{"docs":{},"心":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}},"主":{"docs":{},"要":{"docs":{},"分":{"docs":{},"为":{"docs":{},"文":{"docs":{},"件":{"docs":{},"管":{"docs":{},"理":{"docs":{},"和":{"docs":{},"u":{"docs":{},"d":{"docs":{},"f":{"docs":{},"函":{"docs":{},"数":{"docs":{},"管":{"docs":{},"理":{"docs":{},"。":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}},"管":{"docs":{},"理":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}},"和":{"docs":{},"文":{"docs":{},"件":{"docs":{},"管":{"docs":{},"理":{"docs":{},"功":{"docs":{},"能":{"docs":{},"类":{"docs":{},"似":{"docs":{},",":{"docs":{},"不":{"docs":{},"同":{"docs":{},"之":{"docs":{},"处":{"docs":{},"是":{"docs":{},"资":{"docs":{},"源":{"docs":{},"管":{"docs":{},"理":{"docs":{},"是":{"docs":{},"上":{"docs":{},"传":{"docs":{},"的":{"docs":{},"u":{"docs":{},"d":{"docs":{},"f":{"docs":{},"函":{"docs":{},"数":{"docs":{},",":{"docs":{},"文":{"docs":{},"件":{"docs":{},"管":{"docs":{},"理":{"docs":{},"上":{"docs":{},"传":{"docs":{},"的":{"docs":{},"是":{"docs":{},"用":{"docs":{},"户":{"docs":{},"程":{"docs":{},"序":{"docs":{},",":{"docs":{},"脚":{"docs":{},"本":{"docs":{},"及":{"docs":{},"配":{"docs":{},"置":{"docs":{},"文":{"docs":{},"件":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},":":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.003703703703703704}},"如":{"docs":{},"果":{"docs":{},"其":{"docs":{},"他":{"docs":{},"参":{"docs":{},"数":{"docs":{},"中":{"docs":{},"引":{"docs":{},"用":{"docs":{},"了":{"docs":{},"资":{"docs":{},"源":{"docs":{},"文":{"docs":{},"件":{"docs":{},",":{"docs":{},"需":{"docs":{},"要":{"docs":{},"在":{"docs":{},"资":{"docs":{},"源":{"docs":{},"中":{"docs":{},"选":{"docs":{},"择":{"docs":{},"指":{"docs":{},"定":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}}}},"是":{"docs":{},"指":{"docs":{},"脚":{"docs":{},"本":{"docs":{},"中":{"docs":{},"需":{"docs":{},"要":{"docs":{},"调":{"docs":{},"用":{"docs":{},"的":{"docs":{},"资":{"docs":{},"源":{"docs":{},"文":{"docs":{},"件":{"docs":{},"列":{"docs":{},"表":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.003703703703703704}}}}}}}}}}}}}}}}}}}}},"起":{"docs":{},"止":{"docs":{},"时":{"docs":{},"间":{"docs":{},":":{"docs":{},"选":{"docs":{},"择":{"docs":{},"该":{"docs":{},"定":{"docs":{},"时":{"docs":{},"的":{"docs":{},"有":{"docs":{},"效":{"docs":{},"时":{"docs":{},"间":{"docs":{},"范":{"docs":{},"围":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}},"运":{"docs":{},"行":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0034071550255536627}},"时":{"docs":{},"长":{"docs":{},"(":{"docs":{},"秒":{"docs":{},")":{"docs":{},":":{"docs":{},"结":{"docs":{},"束":{"docs":{},"时":{"docs":{},"间":{"docs":{},"减":{"docs":{},"去":{"docs":{},"开":{"docs":{},"始":{"docs":{},"时":{"docs":{},"间":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}},"标":{"docs":{},"志":{"docs":{},":":{"docs":{},"标":{"docs":{},"识":{"docs":{},"这":{"docs":{},"个":{"docs":{},"节":{"docs":{},"点":{"docs":{},"是":{"docs":{},"否":{"docs":{},"能":{"docs":{},"正":{"docs":{},"常":{"docs":{},"调":{"docs":{},"度":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.014814814814814815}}}}}}}}}}}}}}}}}},"次":{"docs":{},"数":{"docs":{},":":{"docs":{},"流":{"docs":{},"程":{"docs":{},"实":{"docs":{},"例":{"docs":{},"运":{"docs":{},"行":{"docs":{},"的":{"docs":{},"次":{"docs":{},"数":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}},"类":{"docs":{},"型":{"docs":{},":":{"docs":{},"包":{"docs":{},"括":{"docs":{},"启":{"docs":{},"动":{"docs":{},"工":{"docs":{},"作":{"docs":{},"流":{"docs":{},"、":{"docs":{},"从":{"docs":{},"当":{"docs":{},"前":{"docs":{},"节":{"docs":{},"点":{"docs":{},"开":{"docs":{},"始":{"docs":{},"执":{"docs":{},"行":{"docs":{},"、":{"docs":{},"恢":{"docs":{},"复":{"docs":{},"被":{"docs":{},"容":{"docs":{},"错":{"docs":{},"的":{"docs":{},"工":{"docs":{},"作":{"docs":{},"流":{"docs":{},"、":{"docs":{},"恢":{"docs":{},"复":{"docs":{},"暂":{"docs":{},"停":{"docs":{},"流":{"docs":{},"程":{"docs":{},"、":{"docs":{},"从":{"docs":{},"失":{"docs":{},"败":{"docs":{},"节":{"docs":{},"点":{"docs":{},"开":{"docs":{},"始":{"docs":{},"执":{"docs":{},"行":{"docs":{},"、":{"docs":{},"补":{"docs":{},"数":{"docs":{},"、":{"docs":{},"调":{"docs":{},"度":{"docs":{},"执":{"docs":{},"行":{"docs":{},"、":{"docs":{},"重":{"docs":{},"跑":{"docs":{},"、":{"docs":{},"暂":{"docs":{},"停":{"docs":{},"、":{"docs":{},"停":{"docs":{},"止":{"docs":{},"、":{"docs":{},"恢":{"docs":{},"复":{"docs":{},"等":{"docs":{},"待":{"docs":{},"线":{"docs":{},"程":{"docs":{},"的":{"docs":{},"流":{"docs":{},"程":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"配":{"docs":{},"置":{"docs":{},"文":{"docs":{},"件":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}},"邮":{"docs":{},"箱":{"docs":{},":":{"docs":{},"输":{"docs":{},"入":{"docs":{},"用":{"docs":{},"户":{"docs":{},"的":{"docs":{},"邮":{"docs":{},"箱":{"docs":{},",":{"docs":{},"用":{"docs":{},"来":{"docs":{},"邮":{"docs":{},"件":{"docs":{},"发":{"docs":{},"送":{"docs":{},"和":{"docs":{},"任":{"docs":{},"务":{"docs":{},"告":{"docs":{},"警":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}},"部":{"docs":{},"署":{"docs":{},"方":{"docs":{},"式":{"docs":{},":":{"docs":{},"支":{"docs":{},"持":{"docs":{},"y":{"docs":{},"a":{"docs":{},"r":{"docs":{},"n":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}},"文":{"docs":{},"档":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}},"用":{"docs":{},"户":{"docs":{},"是":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}}},"配":{"docs":{},"置":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}},"的":{"docs":{},"机":{"docs":{},"器":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}},"账":{"docs":{},"号":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}},"重":{"docs":{},"跑":{"docs":{},"是":{"docs":{},"在":{"docs":{},"不":{"docs":{},"生":{"docs":{},"成":{"docs":{},"新":{"docs":{},"的":{"docs":{},"流":{"docs":{},"程":{"docs":{},"实":{"docs":{},"例":{"docs":{},"情":{"docs":{},"况":{"docs":{},"下":{"docs":{},",":{"docs":{},"重":{"docs":{},"新":{"docs":{},"跑":{"docs":{},"任":{"docs":{},"务":{"docs":{},"实":{"docs":{},"例":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}},"的":{"docs":{},"列":{"docs":{},"表":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}},"启":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{},"服":{"docs":{},"务":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}}},"载":{"docs":{},"配":{"docs":{},"置":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}},"队":{"docs":{},"列":{"docs":{},":":{"docs":{},"租":{"docs":{},"户":{"docs":{},"对":{"docs":{},"应":{"docs":{},"的":{"docs":{},"y":{"docs":{},"a":{"docs":{},"r":{"docs":{},"n":{"docs":{},"上":{"docs":{},"的":{"docs":{},"队":{"docs":{},"列":{"docs":{},",":{"docs":{},"在":{"docs":{},"数":{"docs":{},"据":{"docs":{},"库":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}},"项":{"docs":{},"目":{"docs":{},"列":{"docs":{},"表":{"docs":{},":":{"docs":{},"是":{"docs":{},"该":{"docs":{},"用":{"docs":{},"户":{"docs":{},"未":{"docs":{},"授":{"docs":{},"权":{"docs":{},"的":{"docs":{},"项":{"docs":{},"目":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}},"名":{"docs":{},"称":{"docs":{},":":{"docs":{},"输":{"docs":{},"入":{"docs":{},"项":{"docs":{},"目":{"docs":{},"的":{"docs":{},"名":{"docs":{},"称":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}},"是":{"docs":{},"调":{"docs":{},"度":{"docs":{},"对":{"docs":{},"用":{"docs":{},"户":{"docs":{},"流":{"docs":{},"程":{"docs":{},"定":{"docs":{},"义":{"docs":{},"d":{"docs":{},"a":{"docs":{},"g":{"docs":{},"分":{"docs":{},"组":{"docs":{},"的":{"docs":{},"一":{"docs":{},"个":{"docs":{},"抽":{"docs":{},"象":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}},"管":{"docs":{},"理":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}},"首":{"docs":{},"页":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}},"其":{"docs":{},"中":{"docs":{},"包":{"docs":{},"含":{"docs":{},"四":{"docs":{},"个":{"docs":{},"部":{"docs":{},"分":{"docs":{},",":{"docs":{},"任":{"docs":{},"务":{"docs":{},"状":{"docs":{},"态":{"docs":{},"统":{"docs":{},"计":{"docs":{},",":{"docs":{},"流":{"docs":{},"程":{"docs":{},"状":{"docs":{},"态":{"docs":{},"统":{"docs":{},"计":{"docs":{},"、":{"docs":{},"流":{"docs":{},"程":{"docs":{},"定":{"docs":{},"义":{"docs":{},"统":{"docs":{},"计":{"docs":{},"及":{"docs":{},"统":{"docs":{},"计":{"docs":{},"的":{"docs":{},"时":{"docs":{},"间":{"docs":{},"范":{"docs":{},"围":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"g":{"docs":{},"i":{"docs":{},"t":{"docs":{},"仓":{"docs":{},"库":{"docs":{},"地":{"docs":{},"址":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}},"如":{"docs":{},"果":{"docs":{},"在":{"docs":{},"拉":{"docs":{},"取":{"docs":{},"依":{"docs":{},"赖":{"docs":{},"包":{"docs":{},"的":{"docs":{},"过":{"docs":{},"程":{"docs":{},"中":{"docs":{},"报":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}}}}}}}},"开":{"docs":{},"发":{"docs":{},"环":{"docs":{},"境":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}},"打":{"docs":{},"包":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}},"根":{"docs":{},"目":{"docs":{},"录":{"docs":{},"创":{"docs":{},"建":{"docs":{},".":{"docs":{},"e":{"docs":{},"n":{"docs":{},"v":{"docs":{},"为":{"docs":{},"后":{"docs":{},"缀":{"docs":{},"名":{"docs":{},"的":{"docs":{},"文":{"docs":{},"件":{"docs":{},"并":{"docs":{},"输":{"docs":{},"入":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}}}}}}}}}}}}}},"生":{"docs":{},"产":{"docs":{},"环":{"docs":{},"境":{"docs":{},"配":{"docs":{},"置":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}},"所":{"docs":{},"在":{"docs":{},"目":{"docs":{},"录":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}},"编":{"docs":{},"译":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}},"首":{"docs":{},"页":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}},"中":{"docs":{},"的":{"docs":{},"图":{"docs":{},"表":{"docs":{},"是":{"docs":{},"没":{"docs":{},"有":{"docs":{},"链":{"docs":{},"接":{"docs":{},"的":{"docs":{},",":{"docs":{},"项":{"docs":{},"目":{"docs":{},"首":{"docs":{},"页":{"docs":{},"中":{"docs":{},"图":{"docs":{},"表":{"docs":{},"是":{"docs":{},"有":{"docs":{},"链":{"docs":{},"接":{"docs":{},"的":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}},"和":{"docs":{},"项":{"docs":{},"目":{"docs":{},"首":{"docs":{},"页":{"docs":{},"的":{"docs":{},"主":{"docs":{},"要":{"docs":{},"区":{"docs":{},"别":{"docs":{},"在":{"docs":{},"于":{"docs":{},":":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}},"是":{"docs":{},"对":{"docs":{},"所":{"docs":{},"有":{"docs":{},"项":{"docs":{},"目":{"docs":{},"在":{"docs":{},"指":{"docs":{},"定":{"docs":{},"时":{"docs":{},"间":{"docs":{},"范":{"docs":{},"围":{"docs":{},"内":{"docs":{},"的":{"docs":{},"任":{"docs":{},"务":{"docs":{},"状":{"docs":{},"态":{"docs":{},"、":{"docs":{},"流":{"docs":{},"程":{"docs":{},"状":{"docs":{},"态":{"docs":{},"和":{"docs":{},"流":{"docs":{},"程":{"docs":{},"定":{"docs":{},"义":{"docs":{},"的":{"docs":{},"统":{"docs":{},"计":{"docs":{},"。":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"统":{"docs":{},"计":{"docs":{},"的":{"docs":{},"是":{"docs":{},"所":{"docs":{},"有":{"docs":{},"的":{"docs":{},"项":{"docs":{},"目":{"docs":{},",":{"docs":{},"项":{"docs":{},"目":{"docs":{},"首":{"docs":{},"页":{"docs":{},"统":{"docs":{},"计":{"docs":{},"的":{"docs":{},"是":{"docs":{},"某":{"docs":{},"一":{"docs":{},"个":{"docs":{},"项":{"docs":{},"目":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}}}}}}}}}}}}}}},",":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}},"对":{"docs":{},"于":{"docs":{},"重":{"docs":{},"跑":{"docs":{},"流":{"docs":{},"程":{"docs":{},"实":{"docs":{},"例":{"docs":{},"的":{"docs":{},"记":{"docs":{},"录":{"docs":{"pages/guide-manual.html":{"ref":"pages/guide-manual.html","tf":0.001851851851851852}}}}}}}}}}}}}},"#":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.015332197614991482},"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.048802129547471165}},"!":{"docs":{},"/":{"docs":{},"b":{"docs":{},"i":{"docs":{},"n":{"docs":{},"/":{"docs":{},"b":{"docs":{},"a":{"docs":{},"s":{"docs":{},"h":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}}}}},"a":{"docs":{},"c":{"docs":{},"c":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},"_":{"docs":{},"l":{"docs":{},"o":{"docs":{},"g":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}}}},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"t":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}},"c":{"docs":{},"h":{"docs":{},"a":{"docs":{},"r":{"docs":{},"s":{"docs":{},"e":{"docs":{},"t":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}},"d":{"docs":{},"e":{"docs":{},"v":{"docs":{},"_":{"docs":{},"h":{"docs":{},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}},"f":{"docs":{},"a":{"docs":{},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}}}}}}}}},"e":{"docs":{},"r":{"docs":{},"r":{"docs":{},"o":{"docs":{},"r":{"docs":{},"_":{"docs":{},"p":{"docs":{},"a":{"docs":{},"g":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}}},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0026619343389529724}}}}}}}}}},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.00709849157054126}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"i":{"docs":{},"f":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}},"p":{"docs":{},"l":{"docs":{},"e":{"docs":{},"a":{"docs":{},"s":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0026619343389529724}}}}}},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"i":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}},"s":{"docs":{},"o":{"docs":{},"u":{"docs":{},"r":{"docs":{},"c":{"docs":{},"e":{"docs":{},".":{"docs":{},"v":{"docs":{},"i":{"docs":{},"e":{"docs":{},"w":{"docs":{},".":{"docs":{},"s":{"docs":{},"u":{"docs":{},"f":{"docs":{},"f":{"docs":{},"i":{"docs":{},"x":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}},"m":{"docs":{},"a":{"docs":{},"n":{"docs":{},"a":{"docs":{},"g":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}},"s":{"docs":{},"e":{"docs":{},"l":{"docs":{},"f":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}}}}}},"t":{"docs":{},"a":{"docs":{},"s":{"docs":{},"k":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}},"z":{"docs":{},"o":{"docs":{},"o":{"docs":{},"k":{"docs":{},"e":{"docs":{},"e":{"docs":{},"p":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0026619343389529724}}}}}}}}},"以":{"docs":{},"q":{"docs":{},"q":{"docs":{},"邮":{"docs":{},"箱":{"docs":{},"为":{"docs":{},"例":{"docs":{},",":{"docs":{},"如":{"docs":{},"果":{"docs":{},"是":{"docs":{},"别":{"docs":{},"的":{"docs":{},"邮":{"docs":{},"箱":{"docs":{},",":{"docs":{},"请":{"docs":{},"更":{"docs":{},"改":{"docs":{},"对":{"docs":{},"应":{"docs":{},"配":{"docs":{},"置":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}}}}}}}}}}},"注":{"docs":{},"意":{"docs":{},":":{"docs":{},"请":{"docs":{},"替":{"docs":{},"换":{"docs":{},"$":{"docs":{},"{":{"docs":{},"x":{"docs":{},"x":{"docs":{},"x":{"docs":{},"}":{"docs":{},"里":{"docs":{},"的":{"docs":{},"内":{"docs":{},"容":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}}}}},"&":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}},"&":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}},"*":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.00354924578527063}},")":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}},".":{"docs":{},".":{"docs":{},".":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}},"/":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{},"i":{"docs":{},"g":{"docs":{},"u":{"docs":{},"r":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.005110732538330494}},"e":{"docs":{},":":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}}}}},"b":{"docs":{},"i":{"docs":{},"n":{"docs":{},"/":{"docs":{},"a":{"docs":{},"r":{"docs":{},"k":{"docs":{},"l":{"docs":{},"i":{"docs":{},"f":{"docs":{},"t":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.008873114463176575}}}}}}}}}}}}},"d":{"docs":{},"e":{"docs":{},"p":{"docs":{},"l":{"docs":{},"o":{"docs":{},"y":{"docs":{},"/":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{},"_":{"docs":{},"a":{"docs":{},"l":{"docs":{},"l":{"docs":{},".":{"docs":{},"s":{"docs":{},"h":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}},"o":{"docs":{},"p":{"docs":{},"_":{"docs":{},"a":{"docs":{},"l":{"docs":{},"l":{"docs":{},".":{"docs":{},"s":{"docs":{},"h":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}}}}}}},"e":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"_":{"docs":{},"e":{"docs":{},"n":{"docs":{},"v":{"docs":{},".":{"docs":{},"s":{"docs":{},"h":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}}}}}},";":{"docs":{},";":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0068143100511073255}}}},">":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314},"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}},"[":{"docs":{},"b":{"docs":{},"a":{"docs":{},"s":{"docs":{},"e":{"docs":{},"]":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}},"r":{"docs":{},"o":{"docs":{},"o":{"docs":{},"t":{"docs":{},"@":{"docs":{},"c":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"o":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.044293015332197615}}}}}}}}}}}},"%":{"docs":{},"l":{"docs":{},"e":{"docs":{},"v":{"docs":{},"e":{"docs":{},"l":{"docs":{},"]":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.007985803016858917}}}}}}}}}},"b":{"docs":{},"a":{"docs":{},"s":{"docs":{},"e":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}},"u":{"docs":{},"r":{"docs":{},"l":{"docs":{},"=":{"docs":{},"f":{"docs":{},"i":{"docs":{},"l":{"docs":{},"e":{"docs":{},":":{"docs":{},"/":{"docs":{},"/":{"docs":{},"/":{"docs":{},"m":{"docs":{},"n":{"docs":{},"t":{"docs":{},"/":{"docs":{},"p":{"docs":{},"a":{"docs":{},"c":{"docs":{},"k":{"docs":{},"a":{"docs":{},"g":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}}}}}}}}}}}}}}}}},"_":{"docs":{},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}},"=":{"docs":{},"/":{"docs":{},"o":{"docs":{},"p":{"docs":{},"t":{"docs":{},"/":{"docs":{},"s":{"docs":{},"o":{"docs":{},"f":{"docs":{},"t":{"docs":{},"/":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"g":{"docs":{},"r":{"docs":{},"a":{"docs":{},"m":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}}}}}}}}}}}}}},"u":{"docs":{},"i":{"docs":{},"l":{"docs":{},"d":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0034071550255536627}}}}}},"e":{"docs":{},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}},"i":{"docs":{},"n":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}}}}},"k":{"docs":{},"i":{"docs":{},"l":{"docs":{},"l":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.005110732538330494}},"a":{"docs":{},"l":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0034071550255536627}}}}}}},"o":{"docs":{},"i":{"8":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}},"docs":{}}}},"v":{"docs":{},"i":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314},"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}},"m":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0034071550255536627}}}},"u":{"docs":{},"e":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}},"a":{"docs":{},"l":{"docs":{},"u":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.00354924578527063}}}}}},"x":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0034071550255536627}},"_":{"docs":{},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"l":{"docs":{},"_":{"docs":{},"i":{"docs":{},"p":{"docs":{},"p":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}}}},"f":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}},"l":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}},"s":{"docs":{},".":{"docs":{},"f":{"docs":{},"i":{"docs":{},"l":{"docs":{},"e":{"docs":{},".":{"docs":{},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{},"=":{"docs":{},"/":{"docs":{},"o":{"docs":{},"p":{"docs":{},"t":{"docs":{},"/":{"docs":{},"x":{"docs":{},"l":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}}}}}}}}},"{":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0068143100511073255}},"d":{"docs":{},"b":{"docs":{},"}":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}},"h":{"docs":{},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{},"}":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}}}}}}},"l":{"docs":{},"i":{"docs":{},"n":{"docs":{},"u":{"docs":{},"x":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}}}}}}},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"}":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}}}}}}},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"}":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.00709849157054126}}}}}}}}}}},"|":{"docs":{},"g":{"docs":{},"r":{"docs":{},"e":{"docs":{},"p":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.005110732538330494}}}}}},"—":{"docs":{},"—":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0026619343389529724}}}}},"}":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0068143100511073255}}},"~":{"docs":{},"]":{"docs":{},"#":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.030664395229982964}}}}},"与":{"docs":{},"a":{"docs":{},"p":{"docs":{},"a":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"的":{"docs":{},"主":{"docs":{},"程":{"docs":{},"序":{"docs":{},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},"d":{"docs":{},"类":{"docs":{},"似":{"docs":{},",":{"docs":{},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{},"的":{"docs":{},"主":{"docs":{},"程":{"docs":{},"序":{"docs":{},"也":{"docs":{},"提":{"docs":{},"供":{"docs":{},"了":{"docs":{},"\"":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"再":{"docs":{},"拷":{"docs":{},"贝":{"docs":{},"到":{"docs":{},"服":{"docs":{},"务":{"docs":{},"器":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}},"号":{"docs":{},"去":{"docs":{},"掉":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}},"当":{"docs":{},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{},"进":{"docs":{},"程":{"docs":{},"运":{"docs":{},"行":{"docs":{},"时":{"docs":{},",":{"docs":{},"p":{"docs":{},"i":{"docs":{},"d":{"docs":{},"号":{"docs":{},"默":{"docs":{},"认":{"docs":{},"存":{"docs":{},"放":{"docs":{},"在":{"docs":{},"l":{"docs":{},"o":{"docs":{},"g":{"docs":{},"s":{"docs":{},"/":{"docs":{},"目":{"docs":{},"录":{"docs":{},"下":{"docs":{},"的":{"docs":{},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{},".":{"docs":{},"p":{"docs":{},"i":{"docs":{},"d":{"docs":{},"文":{"docs":{},"件":{"docs":{},"中":{"docs":{},",":{"docs":{},"因":{"docs":{},"此":{"docs":{},"若":{"docs":{},"改":{"docs":{},"用":{"docs":{},"k":{"docs":{},"i":{"docs":{},"l":{"docs":{},"l":{"docs":{},"命":{"docs":{},"令":{"docs":{},",":{"docs":{},"也":{"docs":{},"可":{"docs":{},"以":{"docs":{},"根":{"docs":{},"据":{"docs":{},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{},".":{"docs":{},"p":{"docs":{},"i":{"docs":{},"d":{"docs":{},"文":{"docs":{},"件":{"docs":{},"中":{"docs":{},"的":{"docs":{},"p":{"docs":{},"i":{"docs":{},"d":{"docs":{},"号":{"docs":{},"来":{"docs":{},"进":{"docs":{},"行":{"docs":{},"控":{"docs":{},"制":{"docs":{},"。":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"报":{"docs":{},"错":{"docs":{},"的":{"docs":{},"话":{"docs":{},":":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}},"拉":{"docs":{},"取":{"docs":{},"前":{"docs":{},"端":{"docs":{},"项":{"docs":{},"目":{"docs":{},"到":{"docs":{},"本":{"docs":{},"地":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}},"项":{"docs":{},"目":{"docs":{},"依":{"docs":{},"赖":{"docs":{},"包":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}},"接":{"docs":{},"口":{"docs":{},"地":{"docs":{},"址":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}},"更":{"docs":{},"改":{"docs":{},"上":{"docs":{},"传":{"docs":{},"大":{"docs":{},"小":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}},"杀":{"docs":{},"死":{"docs":{},"进":{"docs":{},"程":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}},"直":{"docs":{},"接":{"docs":{},"运":{"docs":{},"行":{"docs":{},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{},"即":{"docs":{},"可":{"docs":{},"启":{"docs":{},"动":{"docs":{},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{},"服":{"docs":{},"务":{"docs":{},"器":{"docs":{},",":{"docs":{},"这":{"docs":{},"种":{"docs":{},"方":{"docs":{},"式":{"docs":{},"将":{"docs":{},"使":{"docs":{},"用":{"docs":{},"默":{"docs":{},"认":{"docs":{},"的":{"docs":{},"配":{"docs":{},"置":{"docs":{},"文":{"docs":{},"件":{"docs":{},",":{"docs":{},"若":{"docs":{},"要":{"docs":{},"改":{"docs":{},"用":{"docs":{},"其":{"docs":{},"他":{"docs":{},"配":{"docs":{},"置":{"docs":{},"文":{"docs":{},"件":{"docs":{},",":{"docs":{},"需":{"docs":{},"添":{"docs":{},"加":{"docs":{},"\"":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"编":{"docs":{},"译":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}},"前":{"docs":{},"配":{"docs":{},"置":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}},"安":{"docs":{},"装":{"docs":{},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}}},"辑":{"docs":{},"配":{"docs":{},"置":{"docs":{},"文":{"docs":{},"件":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}},"解":{"docs":{},"决":{"docs":{},"方":{"docs":{},"法":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}},"访":{"docs":{},"问":{"docs":{},"地":{"docs":{},"址":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}},"端":{"docs":{},"口":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}},"进":{"docs":{},"入":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}},"退":{"docs":{},"出":{"docs":{},"进":{"docs":{},"程":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}},"速":{"docs":{},"度":{"docs":{},"非":{"docs":{},"常":{"docs":{},"慢":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}},"配":{"docs":{},"置":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}},"信":{"docs":{},"息":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}},"文":{"docs":{},"件":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0026619343389529724}},"地":{"docs":{},"址":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}},"路":{"docs":{},"径":{"docs":{},"\"":{"docs":{},"选":{"docs":{},"项":{"docs":{},"来":{"docs":{},"指":{"docs":{},"定":{"docs":{},"路":{"docs":{},"径":{"docs":{},"。":{"docs":{},"需":{"docs":{},"要":{"docs":{},"注":{"docs":{},"意":{"docs":{},"的":{"docs":{},"是":{"docs":{},",":{"docs":{},"若":{"docs":{},"服":{"docs":{},"务":{"docs":{},"器":{"docs":{},"中":{"docs":{},"已":{"docs":{},"安":{"docs":{},"装":{"docs":{},"有":{"docs":{},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},"d":{"docs":{},"等":{"docs":{},"其":{"docs":{},"他":{"docs":{},"w":{"docs":{},"e":{"docs":{},"b":{"docs":{},"服":{"docs":{},"务":{"docs":{},"软":{"docs":{},"件":{"docs":{},",":{"docs":{},"应":{"docs":{},"采":{"docs":{},"取":{"docs":{},"措":{"docs":{},"施":{"docs":{},"(":{"docs":{},"修":{"docs":{},"改":{"docs":{},"端":{"docs":{},"口":{"docs":{},",":{"docs":{},"停":{"docs":{},"用":{"docs":{},"或":{"docs":{},"卸":{"docs":{},"载":{"docs":{},")":{"docs":{},"避":{"docs":{},"免":{"docs":{},"部":{"docs":{},"突":{"docs":{},"。":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"告":{"docs":{},"警":{"docs":{},"数":{"docs":{},"据":{"docs":{},"源":{"docs":{},"信":{"docs":{},"息":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}},"邮":{"docs":{},"件":{"docs":{},"告":{"docs":{},"警":{"docs":{},"信":{"docs":{},"息":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}},"释":{"docs":{},"放":{"docs":{},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{},"源":{"docs":{},"码":{"docs":{},"包":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}}}}},"错":{"docs":{},"误":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}},",":{"docs":{},"请":{"docs":{},"在":{"docs":{},"执":{"docs":{},"行":{"docs":{},"完":{"docs":{},"后":{"docs":{},"再":{"docs":{},"次":{"docs":{},"执":{"docs":{},"行":{"docs":{},"以":{"docs":{},"下":{"docs":{},"命":{"docs":{},"令":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}}}}}}}}}}}},"问":{"docs":{},"题":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}},"静":{"docs":{},"态":{"docs":{},"文":{"docs":{},"件":{"docs":{},"目":{"docs":{},"录":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}},"!":{"docs":{},"!":{"docs":{},"!":{"docs":{},"这":{"docs":{},"里":{"docs":{},"特":{"docs":{},"别":{"docs":{},"注":{"docs":{},"意":{"docs":{"pages/deploy-foreground.html":{"ref":"pages/deploy-foreground.html","tf":0.0017035775127768314}}}}}}}}}}},"%":{"docs":{},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"{":{"docs":{},"y":{"docs":{},"y":{"docs":{},"y":{"docs":{},"i":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.007985803016858917}}}}}}}}}}},"l":{"docs":{},"o":{"docs":{},"g":{"docs":{},"g":{"docs":{},"e":{"docs":{},"r":{"docs":{},"{":{"9":{"6":{"docs":{},"}":{"docs":{},":":{"docs":{},"[":{"docs":{},"%":{"docs":{},"l":{"docs":{},"i":{"docs":{},"n":{"docs":{},"e":{"docs":{},"]":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.007985803016858917}}}}}}}}}}}},"docs":{}},"docs":{}}}}}}}},"m":{"docs":{},"s":{"docs":{},"g":{"docs":{},"%":{"docs":{},"n":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.007985803016858917}}}}}}}},"'":{"docs":{},"{":{"docs":{},"p":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"w":{"docs":{},"o":{"docs":{},"r":{"docs":{},"d":{"docs":{},"}":{"docs":{},"'":{"docs":{},";":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}}}}}}}}}}}}},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"}":{"docs":{},"'":{"docs":{},"@":{"docs":{},"'":{"docs":{},"%":{"docs":{},"'":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{},"a":{"docs":{},"l":{"docs":{},"h":{"docs":{},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{},"'":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}}}}}}}},",":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}},"​":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0026619343389529724}}},"├":{"docs":{},"─":{"docs":{},"─":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}}}}},"关":{"docs":{},"闭":{"docs":{},"所":{"docs":{},"有":{"docs":{},"服":{"docs":{},"务":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}},"初":{"docs":{},"始":{"docs":{},"化":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}},"安":{"docs":{},"装":{"docs":{},"目":{"docs":{},"录":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}},"因":{"docs":{},"为":{"docs":{},"e":{"docs":{},"a":{"docs":{},"s":{"docs":{},"y":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}},"复":{"docs":{},"制":{"docs":{},"到":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}},"必":{"docs":{},"装":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}},"权":{"docs":{},"限":{"docs":{},",":{"docs":{},"而":{"docs":{},"且":{"docs":{},"是":{"docs":{},"免":{"docs":{},"密":{"docs":{},"的":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}},"。":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}},"环":{"docs":{},"境":{"docs":{},"变":{"docs":{},"量":{"docs":{},"配":{"docs":{},"置":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}}}}}}}},"监":{"docs":{},"控":{"docs":{},"服":{"docs":{},"务":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}},"说":{"docs":{},"明":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}},":":{"docs":{},"主":{"docs":{},"机":{"docs":{},"器":{"docs":{},"需":{"docs":{},"要":{"docs":{},"能":{"docs":{},"免":{"docs":{},"密":{"docs":{},"s":{"docs":{},"s":{"docs":{},"h":{"docs":{},"登":{"docs":{},"录":{"docs":{},"到":{"docs":{},"其":{"docs":{},"它":{"docs":{},"机":{"docs":{},"器":{"docs":{},"上":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}}}}}}},"在":{"docs":{},"t":{"docs":{},"a":{"docs":{},"r":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"/":{"docs":{},"e":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}}}},"配":{"docs":{},"置":{"docs":{},"文":{"docs":{},"件":{"docs":{},"位":{"docs":{},"于":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}},"账":{"docs":{},"号":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}}}},"软":{"docs":{},"件":{"docs":{},"要":{"docs":{},"求":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}},"选":{"docs":{},"装":{"docs":{},",":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}},"p":{"docs":{},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{},"g":{"docs":{},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{},"存":{"docs":{},"储":{"docs":{},"过":{"docs":{},"程":{"docs":{},"需":{"docs":{},"要":{"docs":{},"安":{"docs":{},"装":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"k":{"docs":{},"任":{"docs":{},"务":{"docs":{},"提":{"docs":{},"交":{"docs":{},"需":{"docs":{},"要":{"docs":{},"安":{"docs":{},"装":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}},"如":{"docs":{},"果":{"docs":{},"跑":{"docs":{},"h":{"docs":{},"i":{"docs":{},"v":{"docs":{},"e":{"docs":{},"任":{"docs":{},"务":{"docs":{},"需":{"docs":{},"要":{"docs":{},"安":{"docs":{},"装":{"docs":{},"(":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}}}}}}}}}}}}}},"都":{"docs":{},"是":{"docs":{},"以":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}},":":{"docs":{},"必":{"docs":{},"装":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.001774622892635315}}}},"选":{"docs":{},"装":{"docs":{},",":{"docs":{"pages/deploy-background.html":{"ref":"pages/deploy-background.html","tf":0.0008873114463176575}}}}}}},"length":1413},"corpusTokens":["\"","\"#\"","\"$1\"","\"false\"","\"mapper.pi","\"redis\"","\"upgrade\";","\"usage:","\"zookeeper\"","\"zookeeper\",","\"常量\"。","\"系统参数\"","#","#!/bin/bash","#============================================================================","#access_log","#alert","#charset","#default","#dev_host","#error_pag","#eschedul","#if","#pleas","#post","#redi","#resource.view.suffix","#resourcemanag","#self","#task","#zookeep","#以qq邮箱为例,如果是别的邮箱,请更改对应配置","#注意:请替换${xxx}里的内容","$(cat","$0","$[...]","$[hh:mm:ss]","$[hhmmss],","$[yyyi","$host;","$http_upgrade;","$pidf)","$prog","$proxy_add_x_forwarded_for;","$remote_addr;","${log.base}/eschedul","${log.base}/{processdefinitionid}/{processinstanceid}/{taskinstanceid}.log","${password}","${system.biz.curdate}","${system.biz.date}","${system.datetime}","${username}","${xxx}","%date{yyyi","%logger{96}:[%line]","%msg%n","&","&&","'{password}';","'{user}'@'%'","'{user}'@'localhost'","(1","(1)","(1.2.1+)","(1.8+)","(2","(2)","(2.7+)","(2.7.0+)","(3.4.6)","(5.5+)","(start|stop|restart|reload)\"","(启动后访问地址","(打包后根目录会创建一个名为dist文件夹,用于发布线上nginx)","(注意版本","*","*)","+","+1","+x",",","...","./bin/arklift","./configur","./configure:","./deploy/start_all.sh","./deploy/stop_all.sh",".escheduler_env.sh","/","//单独安装node","/404.html;","/50x.html","/50x.html;","/data2_4t/escheduler_front/escheduler/serv","/data2_4t/escheduler_front/escheduler/server;","/data2_4t/escheduler_front/escheduler/server(服务器静态页面存放目录)","/dev/cdrom","/eschedul","/etc/init.d/nginx","/etc/nginx/conf.d/default.conf","/etc/nginx/nginx.conf","/etc/sudo","/etc/yum.repos.d/yum.repo","/journey/out/mr/${currenttimemillis}","/journey/words.txt","/mnt/","/sbin/nologin","/usr/local/bin/","/usr/local/bin/nginx","/usr/local/nginx","/usr/local/nginx/conf/nginx.conf","/usr/local/nginx/sbin/nginx","/usr/share/nginx/html;","/usr/src/","/usr/src/nginx","/var/log/nginx/host.access.log","0","0.0.0.0:*","0.0.0.0:80","07:24","0:关闭","1","1\"","1)","1.","1.10.1.tar.gz","1.1;","1.6.2.tar.gz","1.6.2/","1.6.2]#","1.使用hiveserver2方式连接","1.创建","1.流程实例列表","1.点击指定人的授权按钮,如下图:","1.编辑/保存","1.输入http://192.168.220.204:8888/view/login/index.html","1/10,","1/6,","10","10.查看流程实例运行变量","1024m","11.查看历史任务实例","12","12*n)]","12.查看日志","12s;","192.168.220.188,192.168.220.189","192.168.220.188:2181,192.168.220.189:2181,192.168.220.190:2181","192.168.6.132","1:关闭","1是两个参数,第一个参数是mapper.py,第二个参数是1","2","2)","2.","2.6.32","2.使用hiveserver2","2.创建","2.启动","2.登录之后每个页面的右上角都有用户的身份标识。点击下拉箭头包含用户信息和退出两个按钮","2.编辑/保存","2.选中项目按钮,进行项目授权","20","200mb","2345","25","27","29","2:启用","2>&1","3","3)","3.","3.创建","3.定时","3.重跑","30s;","3:启用","4.上线/下线","4.创建","4.恢复失败","404","431.el6.i686","4:启用","4s;","5","5.停止","5.定时管理","500","5000","502","503","504","5:启用","6.指定节点启动","6.暂停","60000","64mb","6810/nginx:","6:关闭","7*n]","7.treeview","7.恢复暂停","8","8.9.4)","8.删除","8888;#","9.gantt","99",":",":80",";;","=","=>",">","[%level]","[base]","[root@cento","[root@nginx","add","alert","alert.%d{yyyi","alert.log","alert.properti","alert.type=email","alert/data_source.properti","alert_logback.xml","alerts=ark3","alert服务所在机器,1个","alert:告警微服务","all=(all)","an","analysi","anpt","api_bas","api和ui分离交互","application.properti","archives、","archives格式","assembly:assembl","auto","avg","a流程定义某任务依赖b流程定义某任务,ta","base","base_path","base_path=/opt/soft/program","baseurl=file:///mnt/packag","befor","bin","build","c","c\"选项来指定路径。","c++","case","cc","cd","charact","check","chkconfig","chkconfig:","chmod","choos","chown","class","class的全路径","clean","client_max_body_s","client、和local三种模式","close","closed,unit","cluster.","cluster、yarn","cnpm","collat","com.mysql.jdbc.driv","commit","common","common/common.properti","common/hadoop/hadoop.properti","compil","conf","conf]#","config","configur","configuration,","conf格式","connect","content","control","core","count","cpu","creat","current","d","d3","daemon.sh","dag","dao","dao/data_source.properti","dao数据源配置","data","data.basedir.path=/xxx/xxx","data.download.basedir.path=/xxx/xxx","data.store2hdfs.basepath=/eschedul","databas","datasourc","dd","dd],","dd_hh}.%i.log","default","description:","devel","develop","development.state=fals","dir,","dirctori","directori","directory.","dmaven.test.skip=tru","download.","driver内核数:可以设置driver内核数及内存数","ds为全局参数,引用的是系统参数。","dump","easyschedul","easyscheduler中scheduler线程分布式锁实现流程图:","easyscheduler使用zookeeper分布式锁来实现同一时刻只有一台master执行scheduler,或者只有一台worker执行任务的提交。","easyscheduler大数据调度系统架构分析","easyscheduler容错设计依赖于zookeeper的watcher机制,实现原理如图:","easyscheduler是易观研发的大数据分布式工作流调度系统。主要解决数据研发etl错综复杂的依赖关系,而不能直观监控任务健康状态等问题。easyscheduler通过可视化拖拽任务节点的方式形成dag(有向无环图)流程图,在运行过程中可实时监控任务的运行状态,同时支持重试、从指定节点恢复失败、暂停及kill任务、任务运行历史查看等等操作。","easyscheduler由在工作流调度方面工作多年的几位小伙伴研发而成,致力于成为大数据平台的中流砥柱,使调度变得更加容易,更可以从其中文名“易调度”看出我们的初衷,如果你对目前市面上的调度不够满意,非常欢迎试用易调度,欢迎大家加入进来,提出需求,也欢迎贡献代码,","easyscheduler的去中心化是master/worker注册到zookeeper中,实现master集群和worker集群无中心,并使用zookeeper分布式锁来选举其中的一台master或worker为“管理者”来执行任务。","easyscheduler简介","easyscheduler设计围绕四个服务展开,ui、web、server和alert。","echo","eg.","elink","email/sm","enabl","end","enterpris","env","epel","error","error:","error_pag","es6","esac","eschedul","escheduler.*","escheduler.env.path=/xxx/xxx/.escheduler_env.sh","escheduler.env.py=/xxx/xxx/escheduler_env.pi","escheduler.queue.impl=redis,","escheduler.queue.impl=zookeep","escheduler:eschedul","escheduler_env.pi","escheduler项目前端技术栈","escheduler项目目录并执行","execut","executor数量:可以设置executor数量、executor内存数和executor内核数","exist","exit","export","failov","fals","file","fileappender实现如下:","files、","flag","flush","follow","forward","found","free","frontend","fs.defaultfs=hdfs://${cluster_iporname}:8020","g","g.","gantt图纵轴是某个流程实例下的任务实例的拓扑排序,横轴是任务实例的运行时间","gcc","git@git.analysys.cn:analysys_changsha/escheduler.git","gpgcheck=0","grant","group=eschedul","h","ha","hadoop","hadoop_conf_dir=/opt/soft/hadoop/etc/hadoop","hadoop_home=\"/opt/soft/hadoop\"","hadoop_home=/opt/soft/hadoop","hdf","heartbeat","help给出说明","hh:mm:ss.sss}","hive","hive_home=/opt/soft/h","host","host:标识流程实例调度的机器ip","http","http://192.168.220.181:12345;","http://192.168.220.204:12345","http://localhost","http://localhost:8888/#/","http://localhost:8888/#/)","http://nginx.org/download/nginx","http_flv_modul","http_gzip_static_modul","http_ssl_modul","http_stub_status_modul","https://nodejs.org/download/release/v8.9.4/","hup","i686","identifi","idl","ignor","implementation,","import","index","index.html","index.html;","info","inform","input","instal","install_config","interv","ip","ip/主机名:输入连接hive的ip","ip/主机名:输入连接mysql的ip","ip/主机名:输入连接postgresql的ip","ip/主机名:输入连接spark的ip","ip/主机名:输入连接zookeeper的集群","ips=ark0,ark1,ark2,ark3,ark4","iptabl","jars、","jar包","jar,用于对应任务的运行。","java_home=\"/opt/soft/java\"","java_home=/opt/soft/java","java程序","jdbc:mysql://${ip}:3306/escheduler?characterencoding=utf8&usessl=fals","jdbc连接参数:用于hive连接的参数设置,以json形式填写","jdbc连接参数:用于mysql连接的参数设置,以json形式填写","jdbc连接参数:用于postgresql连接的参数设置,以json形式填写","jdbc连接参数:用于spark连接的参数设置,以json形式填写","jdbc连接参数:用于zookeeper连接的参数设置,以json形式填写","jdk","jobstor","jsplumb","kill","killal","koi8","larger","less","lib","libjars、","limit","linux","list","listen","ll","ln","load,","localhost;","locat","lock","lodash","logback和grpc实现日志访问","logger","logs/","lrwxrwxrwx","m","mail","mail.passwd=xxxxxxx","mail.protocol=smtp","mail.sender=xxxxxx@qq.com","mail.server.host=smtp.exmail.qq.com","mail.server.port=25","main","main;","make","manual","mapper","mapper.pi","mapper、","master","master.%d{yyyi","master.exec.task.number=20","master.exec.threads=100","master.heartbeat.interval=8","master.log","master.max.cpuload.avg=10","master.properti","master.reserved.memory=1","master.task.commit.interval=100","master.task.commit.retrytimes=5","master_logback.xml","masters=ark0,ark1","master容错完成之后则重新由easyscheduler中scheduler线程调度,遍历","master容错流程图:","master日志文件","master服务所在机器,>=1个","master的角色主要负责任务分发并监督slave的健康状态,可以动态的将任务均衡到slave上,以致slave节点不至于“忙死”或”闲死”的状态。","master监控其他master和worker的目录,如果监听到remove事件,则会根据具体的业务逻辑进行流程实例容错或者任务实例容错。","master配置文件","max","memori","memory,","millisecond","min","minimum","mkdir","mm","monitor_server.pi","mount","mr","mvn","myd","mysql","mysql>","n","n)]","n/24/60]","n/24]","n]","name=com.mysql.jdbc.driv","name=redhat","namenod","need","netstat","nginx","nginx!","nginx!\"),可以确认nginx服务是否正常运行。","nginx:","nginx安装","nginx服务程序默认以nobody身份运行,建议为其创建专门的用户账号,以便更准确地控制其访问权限,增加灵活性、降低安全风险。如:创建一个名为nginx的用户,不建立宿主目录,也禁止登录到shell环境。","nginx的运行控制","nginx的配置及运行需要pcre、zlib等软件包的支持,因此应预先安装这些软件的开发包(devel),以便提供相应的库和头文件,确保nginx的安装顺利完成。","nginx程序的监听状态,或者在浏览器中访问此web服务(默认页面将显示\"welcom","node","node包下载","node安装","nohup","nohup.out","nopasswd:","note","npm","num","number","ok","open","openssl","org.quartz.datasource.myds.driv","org.quartz.datasource.myds.maxconnect","org.quartz.datasource.myds.password","org.quartz.datasource.myds.url","org.quartz.datasource.myds.us","org.quartz.datasource.myds.validationqueri","org.quartz.impl.jdbcjobstore.jobstoretx","org.quartz.impl.jdbcjobstore.stdjdbcdeleg","org.quartz.jobstore.class","org.quartz.jobstore.clustercheckininterv","org.quartz.jobstore.datasourc","org.quartz.jobstore.driverdelegateclass","org.quartz.jobstore.isclust","org.quartz.jobstore.misfirethreshold","org.quartz.jobstore.tableprefix","org.quartz.jobstore.useproperti","org.quartz.scheduler.instanceid","org.quartz.scheduler.instancenam","org.quartz.scheduler.makeschedulerthreaddaemon","org.quartz.simpl.simplethreadpool","org.quartz.threadpool.class","org.quartz.threadpool.makethreadsdaemon","org.quartz.threadpool.threadcount","org.quartz.threadpool.threadprior","os","os.putenv('path','%s'%path)","output","output格式,这里可以设置用户自定义参数的输入,比如:","packag","page","parallel","path","path,","path.","path=\"%s/bin:%s/bin:%s/bin:%s\"%(hadoop_home,java_home,python_home,path)","path=$hadoop_home/bin:$spark_home1/bin:$spark_home2/bin:$python_home/bin:$java_home/bin:$hive_home/bin:$path","path=/escheduler/","path=os.environ['path']","pcre","perm","permiss","permissions。\"/escheduler\"","physic","pidf=\"/usr/local/nginx/logs/nginx.pid\"","pleas","port","post","postgresql(8.2.15+)","prefix","prefix=/usr/local/nginx","privileg","privileges;","process","process.exec.basepath=/xxx/xxx","prog=\"/usr/local/nginx/sbin/nginx\"","properti","proxy_connect_timeout","proxy_http_vers","proxy_pass","proxy_read_timeout","proxy_send_timeout","proxy_set_head","pscach","pscache,","pscache,set","python","python_home=\"/opt/soft/python\"","python_home=/opt/soft/python","python任务","python程序","p{password}","qrtz_","qualiti","quartz.properti","queue","queue中是否已经存在,如果存在则同样监控任务实例的状态,如果不存在则重新提交任务实例。","quit","r","r;","read","real","recommend","record","redi","redirect","redis.","reduc","reducer.pi","reducer、","registry=https://registry.npm.taobao.org","reids安装","releas","relev","reload)","remote_addr","reousrcemanag","replac","request","requiretti","reserv","resourc","resource.view.suffixs=txt,log,sh,conf,cfg,py,java,sql,hql,xml","restart","restart)","retri","root","root@nginx","root安装","run","run_config","s","sass","sass依赖","schedul","scheduler线程一旦发现任务实例为”","scheduler线程在获取command的时候是fifo的方式执行的。","scheduler调度及分布式任务执行引擎","script","second","select","self","server","server.%d{yyyi","server.context","server.log","server.max","server.port=12345","server.session.timeout=7200","server_nam","servic","session","set","setenforc","sh","shell任务","shell节点","singl","size","size=1024mb","size=5000000","snapshot","snapshot.tar.gz","snapshot/","snapshot/conf","snapshot/script/init_deploy_user.sh","snapshot/script/init_hdfs.sh","snapshot/script/init_install_path.sh","snapshot/sql/有两个sql创建表文件:escheduler.sql和quartz.sql","sourc","spark","spark(1.x,2.x)","spark_home1=/opt/soft/spark1","spark_home2=/opt/soft/spark2","specifi","spring","spring.datasource.defaultautocommit=tru","spring.datasource.driv","spring.datasource.initialsize=5","spring.datasource.maxactive=20","spring.datasource.maxpoolpreparedstatementperconnectionsize=20","spring.datasource.maxwait=60000","spring.datasource.minevictableidletimemillis=300000","spring.datasource.minidle=5","spring.datasource.password=${password}","spring.datasource.poolpreparedstatements=fals","spring.datasource.poolpreparedstatements=tru","spring.datasource.testonborrow=tru","spring.datasource.testonreturn=fals","spring.datasource.testwhileidle=tru","spring.datasource.timebetweenevictionrunsmillis=60000","spring.datasource.type=com.alibaba.druid.pool.druiddatasourc","spring.datasource.url=jdbc:mysql://${ip}:3306/escheduler?characterencoding=utf","spring.datasource.username=${username}","spring.datasource.validationquery=select","spring.datasource.validationquerytimeout=3","spring.http.multipart.max","spring.redis.host=${redis_ip}","spring.redis.maxidle=1000","spring.redis.maxtotal=10000","spring.redis.port=6379","sql","sql参数:输入参数格式为key1=value1;key2=value2…","sql类型:支持查询和非查询两种,查询是select类型的查询,是有结果集返回的,可以指定邮件通知为表格、附件或表格附件三种模板。非查询是没有结果集返回的,是针对update、delete、insert三种类型的操作","sql语句:sql语句","start","start)","state?","static","statu","stop","stop)","store","submit","success","sudo","supplement","sure","surviv","syntax","system","systemctl","t","t\"选项用来对配置文件进行检查,以便找出不当或错误的配置。配置文件nginx.conf默认位于安装目录/usr/local/nginx/conf/目录中。若要检查位于其他位置的配置文件,可使用\"","t_escheduler_queu","tar","target/eschedul","task","task.record.datasource.password=xxxxx","task.record.datasource.url=jdbc:mysql://${ip}:3306/etl?characterencoding=utf","task.record.datasource.username=etl","task.record.flag=fals","tasklogfil","ta区间范围内符合任务实例依赖条件的,才能依赖成功。否则依赖失败","tb","tcp","test","thread","threadpool","time","time(milliseconds)","timeout","time,unit","trailingend","tree的展示,非叶子节点有展开和收缩的功能。右边是流程实例的集合,每一列都是流程定义的一次调度,圆点表示的是流程实例的状态,方块表示的是任务实例的状态。如果是子流程,可以通过任务实例跳转到相应的子流程","true","type","u","udf函数名称:输入udf函数时的名称","udf函数管理:对用户创建的udf进行管理","udf函数:对于hive类型的数据源,可以引用资源中心中创建的udf函数,其他类型的数据源暂不支持udf函数","udf管理","udf资源:设置创建的udf对应的资源文件","ui","unit","unsaf","upgrad","upload","us","use.","user","user=eschedul","useradd","user}","user和—group","utf","utf8","utf8_general_ci;","valu","vi","vim","vue","wait","web","webserver=ark1","webserver_logback.xml","web日志文件","web服务所在机器,1个","web配置文件","web:使用springboot提供rest","welcom","wget","work.","worker","worker.%d{yyyi","worker.exec.threads=100","worker.fetch.task.num","worker.heartbeat.interval=8","worker.log","worker.max.cpuload.avg=10","worker.properti","worker.reserved.memory=1","worker_logback.xml","workers=ark2,ark3,ark4","worker容错流程图:","worker日志文件","worker服务所在机器,>=1个","worker的角色主要负责任务的执行工作并维护和master的心跳,以便master可以分配任务给slave。","worker都是以","worker配置文件","write","x","x_real_ipp","xf","xl","xls.file.path=/opt/xl","y","yarn.application.status.address=http://${ip1}:8088/ws/v1/cluster/apps/%","yarn.resourcemanager.ha.rm.ids=${ip1},${ip2}","yum","yyyymmddhhmmss,补数据时,该日期","yyyymmdd,补数据时,该日期","zilb","zookeep","zookeeper.connection.timeout=300","zookeeper.escheduler.lock.master.failover=/escheduler/lock/failover/mast","zookeeper.escheduler.lock.master=/escheduler/lock/mast","zookeeper.escheduler.lock.worker.failover=/escheduler/lock/failover/work","zookeeper.escheduler.lock.worker=/escheduler/lock/work","zookeeper.escheduler.master=/escheduler/mast","zookeeper.escheduler.root=/eschedul","zookeeper.escheduler.worker=/escheduler/work","zookeeper.properti","zookeeper.quorum=${ip1}:2181,${ip2}:2181,${ip3}:2181","zookeeper.retry.maxtime=5","zookeeper.retry.sleep=1000","zookeeper.session.timeout=300","zookeeper方式连接","{","{db}","{host}","{linux","{user}","{version}","|grep","|——","}","~]#","​","–d、","–input","├──","一个流程定义可以添加1个定时,定时管理是对一个流程定义上的定时的修改,只有上线的定时才是有效的定时","一旦master出现了问题,则群龙无首,整个集群就崩溃。为了解决这个问题,大多数master/slave架构模式都采用了主备master的设计方案,可以是热备或者冷备,也可以是自动切换或手动切换,而且越来越多的新系统都开始具备自动选举切换master的能力,以提升系统的可用性。","一行","一键启停脚本","上传文件","上传文件大小限制","上传文件:点击上传按钮进行上传,将文件拖拽到上传区域,文件名会自动以上传的文件名称补全","下载文件","下配置好的conf文件夹和编译好的eschedul","下面","与apache的主程序httpd类似,nginx的主程序也提供了\"","两种方式查看任务实例:","中心化思想","中心化思想设计存在的问题:","中心化的设计理念比较简单,分布式集群中的节点按照角色分工,大体上分为两种角色:","中点击右上角下载按钮下载文件,或者在文件列表后的下载按钮下载文件","中设置","为了使nginx服务器的运行更加方便,可以为主程序nginx创建链接文件,以便管理员直接执行nginx命令就可以调用nginx的主程序。","为了使nginx服务的启动、停止、重载等操作更加方便,可以编写nginx服务脚本,并使用chkconfig和service工具来进行管理,也更加符合rhel系统的管理习惯。","为流程定义a的定时器,tb为流程定义b的定时器,tbstart到tbend为tb的周期,周期分别支持小时、天、月","主jar包:是mr的jar包","主jar包:是spark的jar包","主jar包:是运行mr的python","主函数的class:是mr程序的入口main","主函数的class:是spark程序的入口main","主机器的","主程序nginx支持标准的进程信号,通过kill或者killall命令传送","也可以这样:","于是我们选择了第三种方式来解决线程不足的问题。","介于考虑到尽可能的easyscheduler的轻量级性,所以选择了grpc实现远程访问日志信息。","以…/流程定义id/流程实例id/任务实例id.log的形式生成日志。","以下将详细介绍server的设计思想和遇到的问题","任务","任务中partition通过${ds}来引用全局参数,对于脚本可以通过${partition}来引用变量partition的值,或通过jdbc直接将partition的值set进去","任务依赖","任务依赖分为水平依赖和垂直依赖","任务依赖:请参考任务依赖讲解","任务实例","任务实例是流程实例任务节点的列表","任务实例:流程实例dag中每个task称为任务实例,是动态的,是有状态的","任务状态统计:是指在指定时间范围内,统计任务实例中的待运行、失败、运行中、完成、成功的个数","任务记录","任务记录是千帆的数据稽核","任务队列选择redis时需要安装","使用手册","使用易观封装的vue及jsplumb组件开发","使用说明:输入描述udf函数的使用","例如:","依赖任务:","依赖,如图:","停止","关闭所有服务","其中","其他参数:支持","再拷贝到服务器","函数管理","分别是拖动节点和选中项、选择线条连线、删除选中的线或节点、全屏和流程定义保持,其主要功能是dag的绘制所用","分布式锁实践","分钟:$[hhmmss","分钟:$[hhmmss+n/24/60]","则会产生“死等”状态。mainflowthread等待subflowthread1结束,subflowthread1等待subflowthread2结束,subflowthread2等待subflowthread3结束,而subflowthread3等待线程池有新线程,则整个dag流程不能结束,从而其中的线程也不能释放。","创建database和账号","创建、编辑hive数据源","创建、编辑mysql数据源","创建、编辑postgresql数据源","创建、编辑spark数据源","创建、编辑udf函数","创建、编辑用户","创建、编辑租户","创建、编辑项目","创建工作流","创建文件","创建表","创建运行用户、组","创建部署用户","创建静态页面存放目录","初始化","初始化安装目录","删除","删除流程实例及流程实例下的任务实例","到","前","前端代理的接口地址","前端在开发环境(dev)中运行","前端部署","前端部署文档","前端项目发布","前端项目构建","前端项目环境构建及编译","包名类名:输入udf函数的全路径","去中心化","去中心化vs中心化","去中心化设计的核心设计在于整个分布式系统中不存在一个区别于其他节点的”管理者”,因此不存在单点故障问题。但由于不存在”","去中心化设计里,通常没有master/slave的概念,所有的角色都是一样的,地位是平等的,全球互联网就是一个典型的去中心化的分布式系统,联网的任意节点设备down机,都只会影响很小范围的功能。","参数:用来标注函数的输入参数","变量含义","另外一个问题是如果scheduler在master上,虽然可以支持一个dag中不同的任务运行在不同的机器上,但是会产生master的过负载。如果scheduler在slave上,则一个dag中所有的任务都只能在某一台机器上进行作业提交,则并行任务比较多的时候,slave的压力可能会比较大。","只有在","只有在tb到tbend区间范围内符合任务实例依赖条件的,才能依赖成功。否则依赖失败","只有管理员才有安全中心,安全中心的主要功能是给管理员提供管理普通用户的功能。","可以在","可以按照任务名称、日期、状态、原表、目标表、日期区间查询","可以查看文件详情","可以让","可以让流程实例从失败节点开始重新执行","可以让流程实例从暂停位置继续执行","可以转淘宝镜像命令行输入","右上角图标","右上角是下载日志、刷新日志和放大/缩小按钮","号去掉","后","后的","后端说明2","后端部署","向后执行是从指定节点向后执行,一直到后续节点不能继续执行为止。向前执行是从开始节点到指定的节点区间执行。仅执行当前节点是只执行指定的节点","启停alertsh","启停loggersh","启停master","启停web","启停worker","启动","启动、停止nginx","启动停止命令","启动前可以设置若干参数,如下图:","启动所有服务","启用","启用http_stub_status_module模块以支持状态统计","启用ssl模块","告警组是告警用户抽象出来的组,使用告警组来管理用户。","告警组管理","周:$[yyyymmdd","周:$[yyyymmdd+7*n]","命令","命令行参数:是设置mr程序的输入参数,支持自定义参数变量的替换","命令行参数:是设置spark程序的输入参数,支持自定义参数变量的替换。","命令,生成打包文件(dist)包","因为easyschedul","因为eschedul","在保存流程定义的时候可以设置全局参数,局部参数可以使用${变量}的方式引用全局参数","垂直依赖是流程实例之间的任务依赖,基于定时的依赖。垂直依赖又分为自依赖和外部依赖。","增加一种资源不足的command类型,如果线程池不足,则将主流程挂起。这样线程池就有了新的线程,可以让资源不足挂起的流程重新唤醒执行。","备注:输入告警组的备注信息","复制到","外部依赖策略存在依赖策略,分别有自定义、全部成功、全部失败、任一成功、任一失败","外部依赖:是对多个外部流程流程实例的任务实例的依赖","天:$[yyyymmdd","天:$[yyyymmdd+n]","失败策略:继续是如果有失败的任务节点,其他并行的任务节点将继续执行。结束是如果有失的败节点,其他并行任的务节点将被kill掉","失败重试次数:任务失败重新提交的次数,支持下拉和手填","失败重试间隔:任务失败重新提交任务的时间间隔,支持下拉和手填","如果","如果checkbox勾选,表示流程实例的修改会更新流程定义","如果一个dag中没有子流程,则如果command中的数据条数大于线程池设置的阈值,则直接流程等待或失败。","如果一个大的dag中嵌套了很多子流程,如下图:","如果不勾选,表示只编辑本次流程实例","如果其他参数中引用了资源文件,需要在资源中选择指定","如果您需要用ip访问项目可以把","如果需要使用到easyscheduler的资源上传,mapreduce任务在线提交则需要安装(上传的资源文件目前保存在hdfs上)","子流程","子节点:是选择子流程的流程定义,右上角进入该子节点可以跳转到所选子流程的流程定义","存储过程","安全中心","安装","安装epel源","安装nginx","安装及配置","安装配置文件","定时依赖图解:","定时器配置文件","定时:可视化定时,设置相应的定时","实际上,真正去中心化的分布式系统并不多见。反而动态中心化分布式系统正在不断涌出。在这种架构下,集群中的管理者是被动态选择出来的,而不是预置的,并且集群在发生故障的时候,集群的节点会自发的举行\"会议\"选举新的\"管理者\"主持工作。最典型的案例就是zookeeper及go语言实现的etcd。","容错设计","容错:流程实例是否被容错过","密码:设置连接hive的密码","密码:设置连接mysql的密码","密码:设置连接postgresql的密码","密码:设置连接spark的密码","对","对下线状态的流程定义,用户可对dag进行编辑","对于","对于启动新master来打破僵局,似乎有点差强人意,于是我们提出了以下三种方案来降低这种风险:","对于终态的流程实例,可以进行编辑保存。终态是流程实例最终的状态为成功、失败、暂停或停止四个状态。","对单master线程池进行判断,如果线程池已经满了,则让线程直接失败。","对可查看的文件类型,点击","对流程定义可以选择节点右击","导航栏,调转到流程实例列表,这时查看的是所有流程实例的任务实例列表","导语","将","将kill掉正在运行的任务节点","将日志放到es搜索引擎上","小时:$[hhmmss","小时:$[hhmmss+n/24]","工作流","工作流下分为流程定义、流程实例和任务实例三个功能模块","工作流名称:是根据流程定义名称外加一个随机数","工作流调度系统在大数据平台中是一个核心的基础设施,是大数据开发必不可少的重要组成部分。由于数据处理流程常常具有很长的依赖链条,因此依赖单机的crontab等单纯依赖时间调度的方式,往往存在很大的弊端,如依赖不清晰,出错难以查找等问题。因此,我们调研了市面上流行的调度系统。","工程依赖jar包,包括各个模块jar和第三方jar","工程依赖sql文件","工程服务启动脚本","工程自动化部署、启动脚本","工程配置文件","左侧工具栏","左侧是流程定义","已选管理用户:是已添加到该组的用户列表","已选项目:是该用户已授权的项目。","年:$[add_months(yyyymmdd,","年:$[add_months(yyyymmdd,12*n)]","并且需要注释掉","并和azkaban、airflow做了一些对比:","开发环境","开始时间:流程实例运行的开始时间","当nginx进程运行时,pid号默认存放在logs/目录下的nginx.pid文件中,因此若改用kill命令,也可以根据nginx.pid文件中的pid号来进行控制。","必装","总结","恢复失败","恢复暂停","感兴趣的伙伴们可以加我们微信:510570367,一起加入easyscheduler吧,多多交流!","我们使用自定义logback的fileappender和filter功能,实现每个任务实例生成一个日志文件。","或指定","手机:输入用户的手机号","执行方式:补数可以以串行执行或并行执行,串行执行是流程实例列表以队列的形式逐个提交执行,并行执行是流程实例列表并发形式的提交执行","执行编译命令:","执行:","找到”正在运行”和“提交成功”的任务,对”正在运行”的任务监控其任务实例的状态,对”提交成功”的任务需要判断task","抄送人:邮件抄送人列表","报错的话:","拉取前端项目到本地","拉取项目依赖包","拖动工具栏中的任务节点到画板中,双击任务节点,如下图:","指定nginx运行用户和组","指定节点启动,如下图:","按钮,删除文件","按钮,可下载和查看日志","授权","接口地址","描述信息:描述该节点的功能","描述:租户的描述信息","描述:输入数据源的描述","描述:输入文件的描述信息","描述:输入项目的描述","支持代码中自定义变量名,声明方式:${变量名}。可以是引用","收件人:邮件收件人列表","数据库初始化","数据库名:输入连接hive的数据库名称","数据库名:输入连接mysql的数据库名称","数据库名:输入连接postgresql的数据库名称","数据库名:输入连接spark的数据库名称","数据库名:预留字段,用于创建永久udf函数","数据源中心","数据源中心支持mysql、postgresql、hive及spark数据源","数据源名称:输入数据源的名称","数据源:sql数据源支持mysql、postgresql、hive和spark四中数据源类型,选择对应的数据源","数据源:存储过程的数据源类型支持mysql和postgresql两种,选择对应的数据源","数据源:选择hive","数据源:选择mysql","数据源:选择postgresql","数据源:选择spark","文件列表,点击","文件名称","文件名:输入文件的名称","文件查看","文件格式支持以下几种类型:txt、log、sh、conf、cfg、py、java、sql、xml、hql","文件管理","文件管理:主要是用户的程序,脚本和配置文件需要上传到hdfs进行统一管理","文件详情","文件重命名","新建、编辑邮件组","方式来执行作业,所以部署用户需要有","方法:是存储过程的方法名称","日常调度实例定时的定时时间前一天,格式为","日常调度实例定时的定时时间,格式为","日志查看","日志统一存放于指定文件夹内","日志配置文件","时间自定义参数","时间:选择指定的补数时间区间,此时业务时间为补数时间,如果起始时间和结束时间相等,则为某一天的补数,否则为区间补数。关于系统参数,请参考系统参数的讲解","是可以任意分解组合的,比如:$[yyyymmdd],","是否更新流程定义:","是目前调度支持的任务类型,当前调度支持shell、子流程、存储过程、sql、mr、spark和python七种任务类型","暂停","更改上传大小","月:$[add_months(yyyymmdd,","月:$[add_months(yyyymmdd,n)]","服务管理","服务管理是对easyscheduler的master、worker的任务监控","本文从调度出发,介绍了易观研发的大数据分布式工作流调度系统。easyscheduler在易观数据平台起着中流砥柱的作用。本章着重介绍了easyscheduler的架构原理及实现思路。","杀死进程","权限,而且是免密的","权限,而且是免密的。","架构设计","查看历史,可以查看该流程实例运行的该任务实例列表","查看历史,这时查看的是此流程实例的任务实例","查看日志","查看日志,可以查看该任务实例运行的日志,如下图:","查看日志:点击","查看目录","格式的,$[yyyymmddhhmmss]","正在运行","正在运行任务的后继节点","正常编译完后,会在当前目录生成","水平依赖就是指dag图的有向依赖,是同一个流程实例任务节点的前驱,后继之间的依赖关系","注意,我们定义这种基准变量为","注意:easyscheduler本身不依赖hadoop、hive、spark、postgresql、redis,仅是用到了他们的cli","注意:java和scala只是用来标识,没有区别,如果是python开发的spark则没有主函数的class,其他都是一样","注意:master","注意:可以点击图,或者数量跳转到相应的任务实例,流程实例和流程定义列表","注意:在全部服务都启动之后启动","注意:如果该用户切换了租户,则该用户所在租户下所有资源将复制到切换的新租户下","注意:对masterlogfile,自定义了masterlogfilt","注意:对workerlogfile,自定义了workerlogfilt","注意:日志查看是分片的查看,上下滚动查看","注意:由于”","注意:自定义是可以自定义外部流程任务是成功或失败","注:配置前可以参考","流程定义","流程定义列表","流程定义可以设置定时,周期性的跑作业。如下图:","流程定义操作","流程定义有两个状态:上线和下线。只有上线的流程才能启动或调度,下线的流程用来编辑","流程定义统计:是统计该用户创建的流程定义及管理员授予该用户的流程定义","流程定义:是可视化拖拽成的dag的统称,它是静态的,没有状态","流程实例","流程实例是流程定义的实例化","流程实例:对流程定义的每次实例化会生成一个流程实例,是动态的,是有状态的","流程状态统计:是指在指定时间范围内,统计流程实例中的待运行、失败、运行中、完成、成功的个数","点击","点击“用户信息”按钮,如下图:","点击”修改”按钮,修改用户信息","点击任务实例节点,点击","点击变量是对变量的复制","点击退出按钮则退出系统,返回登录页面","点击隐藏按钮,查看流程实例运行变量。如下图:","点击项目列表中的项目名称,可以跳转到指定的项目首页,如下图:","特别注意:如果任务运行周期比较短或者正好在kill任务的时候,任务已经结束了,此时将kill不掉正在运行的任务,继而会把下一个任务设置为kill状态","特别注意:对于用户自己创建的项目,该用户拥有所有的权限。则项目列表和已选项目列表中不会体现。","特别注意:重跑时系统参数已经固化了,系统参数不会随着时间改变而改变","状态","状态:流程实例最终运行的状态","环境变量配置","用命令行模式","用户名称:用户的名称,唯一,不能重复","用户名:设置连接hive的用户名","用户名:设置连接mysql的用户名","用户名:设置连接postgresql的用户名","用户名:设置连接spark的用户名","用户是easyscheduler上的用户,用于easyscheduler上的功能操作。","用户管理","用户自定义参数","用户自定义参数分为全局参数和局部参数。全局参数是保存流程定义和流程实例的时候传递的全局参数,全局参数可以在整个流程中的任何一个任务节点的局部参数引用。","用来显示某个流程定义跑过的流程实例及任务实例的状态","由于web和worker不一定在同一台机器上,所以查看日志不能像查询本地文件那样。有两种方案:","登录","的流程实例,点击","监控服务","目前只支持hive的临时udf函数","目录下","直接运行nginx即可启动nginx服务器,这种方式将使用默认的配置文件,若要改用其他配置文件,需添加\"","租户名称:租户的名称","租户是linux上的用户,用于作业的提交。","租户管理","租户编码:租户编码是linux上的用户,唯一,不能重复","租户:设置该用户所属的租户","程序类型:支持java、scala和python三种语言","程序类型:选择java语言","程序类型:选择python语言","端口:输入连接hive的端口","端口:输入连接mysql的端口","端口:输入连接postgresql的端口","端口:输入连接spark的端口","端口:输入连接zookeeper的端口","第一种是通过流程实例任务节点","第二种是通过点击","等","等同于","简介","管理员可以对普通用户进行非其创建的项目、资源、数据源和udf函数进行授权。因为项目、资源、数据源和udf函数授权方式都是一样的,所以以项目授权为例介绍。","管理员可以有多个,管理员是功能上的管理,不参与具体的业务。也就是说管理员是不能执行具体任务的。","管理用户","管理用户列表:是未添加到该组的用户列表","管理者”节点所以每个节点都需要跟其他节点通信才得到必须要的机器信息,而分布式系统通信的不可靠行,则大大增加了上述功能的实现难度。","系统参数","系统架构分析","系统部分截图:","线程不足循环等待问题","组名称:输入组的名称","组类型:支持邮件/短信两种","结束时间:流程实例运行的结束时间","编译","编译前配置","编译安装nginx","编辑配置文件","网址,输入用户名,密码登录","网络抖动”可能会使得节点短时间内失去和zk的心跳,从而发生节点的remove事件。对于这种情况,我们使用最简单的方式,那就是节点一旦和zk发生超时连接,则直接将master或worker服务停掉。","背景","脚本一","脚本是监听,master和worker服务挂掉重启的脚本","脚本:用户开发的python程序","脚本:用户开发的shell程序","自依赖:是同一个流程实例的上一周期的","自定义了tasklogappender和tasklogfilt","自定义参数:sql任务类型自定义参数类型和数据类型同存储过程任务类型一样。区别在于sql任务类型自定义参数会替换sql语句中${变量},而存储过程是自定义参数顺序的给方法设置值","自定义参数:存储过程的自定义参数类型支持in、out两种,数据类型支持varchar、integer、long、float、double、date、time、timestamp、boolean九种数据类型","自定义参数:是mr局部的用户自定义参数,会替换脚本中以${变量}的内容","自定义参数:是python局部的用户自定义参数,会替换脚本中以${变量}的内容","自定义参数:是shell局部的用户自定义参数,会替换脚本中以${变量}的内容","节点","节点名称:一个流程定义中的节点名称是唯一的","节点执行:节点执行模式有三种,分别为向后执行、向前执行和仅执行当前节点","获取分布式锁的核心流程算法如下:","补数:是对流程进行历史的补数,支持区间补数和某一天的补数,如下图:","补数:见流程定义","解决方法","计算所有master的线程总和,然后对每一个dag需要计算其需要的线程数,也就是在dag流程执行之前做预计算。因为是多master线程池,所以总线程数不太可能实时获取。","设定nginx的安装目录","设置为暂停","访问地址","访问端口","说明","说明:主机器需要能免密ssh登录到其它机器上","说明:在target/eschedul","说明:配置文件位于","账号","资源中心","资源中心主要分为文件管理和udf函数管理。","资源管理","资源管理和文件管理功能类似,不同之处是资源管理是上传的udf函数,文件管理上传的是用户程序,脚本及配置文件","资源:","资源:如果其他参数中引用了资源文件,需要在资源中选择指定","资源:是指脚本中需要调用的资源文件列表","起止时间:选择该定时的有效时间范围","软件要求","过滤匹配以taskloginfo开始的线程名称:","运行","运行时长(秒):结束时间减去开始时间","运行标志:标识这个节点是否能正常调度","运行次数:流程实例运行的次数","运行类型:包括启动工作流、从当前节点开始执行、恢复被容错的工作流、恢复暂停流程、从失败节点开始执行、补数、调度执行、重跑、暂停、停止、恢复等待线程的流程","运行配置文件","这样就可以通过nginx脚本来启动、停止、重启、重载nginx服务器了。","这样就形成的子父流程循环等待的状态。此时除非启动新的master来增加线程来打破这样的”僵局”,否则调度集群将不能再使用。","进入","退出进程","选装,","选装,postgresql存储过程需要安装","选装,spark任务提交需要安装","选装,如果跑hive任务需要安装(","通用配置文件配置,队列选择及地址配置,通用文件目录配置。","通知策略:都不发、成功发、失败发、成功或失败都发四种策略","通知组:是通知用户所属的组","通过grpc通信获取远程日志信息","通过检查","速度非常慢","邮箱:输入用户的邮箱,用来邮件发送和任务告警","部署文档","部署方式:支持yarn","部署用户是","部署用户配置","部署的机器","部署账号","都是以","配置","配置信息","配置告警数据源信息","配置文件","配置文件地址","配置文件路径\"选项来指定路径。需要注意的是,若服务器中已安装有httpd等其他web服务软件,应采取措施(修改端口,停用或卸载)避免部突。","配置邮件告警信息","释放nginx源码包","重启","重启nginx服务","重跑是在不生成新的流程实例情况下,重新跑任务实例","重跑的列表","重载配置","鉴于易观日处理数据30tb,复杂的etl依赖关系,我们开发了easyscheduler。","错误","错误,请在执行完后再次执行以下命令","问题","队列:租户对应的yarn上的队列,在数据库","需要容错”状态,则接管任务并进行重新提交。","静态文件目录","项目git仓库地址","项目列表:是该用户未授权的项目","项目名称:输入项目的名称","项目如果在拉取依赖包的过程中报","项目开发环境","项目所在目录","项目打包","项目是调度对用户流程定义dag分组的一个抽象","项目根目录创建.env为后缀名的文件并输入","项目生产环境配置","项目管理","项目编译","项目首页","项目首页其中包含四个部分,任务状态统计,流程状态统计、流程定义统计及统计的时间范围","首页","首页中的图表是没有链接的,项目首页中图表是有链接的","首页和项目首页的主要区别在于:","首页是对所有项目在指定时间范围内的任务状态、流程状态和流程定义的统计。","首页统计的是所有的项目,项目首页统计的是某一个项目","!!!这里特别注意",",",",对于重跑流程实例的记录",":必装",":选装,"],"pipeline":["stopWordFilter","stemmer"]},"store":{"./":{"url":"./","title":"Easyscheduler简介","keywords":"","body":"简介\n导语\n\nEasyScheduler是易观研发的大数据分布式工作流调度系统。主要解决数据研发ETL错综复杂的依赖关系,而不能直观监控任务健康状态等问题。EasyScheduler通过可视化拖拽任务节点的方式形成DAG(有向无环图)流程图,在运行过程中可实时监控任务的运行状态,同时支持重试、从指定节点恢复失败、暂停及Kill任务、任务运行历史查看等等操作。\n\n背景\n 工作流调度系统在大数据平台中是一个核心的基础设施,是大数据开发必不可少的重要组成部分。由于数据处理流程常常具有很长的依赖链条,因此依赖单机的crontab等单纯依赖时间调度的方式,往往存在很大的弊端,如依赖不清晰,出错难以查找等问题。因此,我们调研了市面上流行的调度系统。\n并和azkaban、airflow做了一些对比:\n\n \n\n \n\n       鉴于易观日处理数据30TB,复杂的ETL依赖关系,我们开发了EasyScheduler。\n\nEasyScheduler由在工作流调度方面工作多年的几位小伙伴研发而成,致力于成为大数据平台的中流砥柱,使调度变得更加容易,更可以从其中文名“易调度”看出我们的初衷,如果你对目前市面上的调度不够满意,非常欢迎试用易调度,欢迎大家加入进来,提出需求,也欢迎贡献代码, 感兴趣的伙伴们可以加我们微信:510570367,一起加入EasyScheduler吧,多多交流!\n系统部分截图:\n\n\n\n\n"},"pages/guide-architecture.html":{"url":"pages/guide-architecture.html","title":"系统架构分析","keywords":"","body":"EasyScheduler大数据调度系统架构分析\n架构设计\n\n\nEasyScheduler设计围绕四个服务展开,UI、Web、Server和Alert。\n\nUI : 使用易观封装的Vue及jsplumb组件开发\n\nWeb:使用SpringBoot提供Rest Api和UI分离交互\n\nServer : Scheduler调度及分布式任务执行引擎\n\nAlert:告警微服务\n\n\n\n以下将详细介绍Server的设计思想和遇到的问题\n去中心化vs中心化\n\n\n1. 中心化思想\n\n       中心化的设计理念比较简单,分布式集群中的节点按照角色分工,大体上分为两种角色:\n\n       Master的角色主要负责任务分发并监督Slave的健康状态,可以动态的将任务均衡到Slave上,以致Slave节点不至于“忙死”或”闲死”的状态。\n       Worker的角色主要负责任务的执行工作并维护和Master的心跳,以便Master可以分配任务给Slave。\n\n2. 中心化思想设计存在的问题:\n\n       一旦Master出现了问题,则群龙无首,整个集群就崩溃。为了解决这个问题,大多数Master/Slave架构模式都采用了主备Master的设计方案,可以是热备或者冷备,也可以是自动切换或手动切换,而且越来越多的新系统都开始具备自动选举切换Master的能力,以提升系统的可用性。\n       另外一个问题是如果Scheduler在Master上,虽然可以支持一个DAG中不同的任务运行在不同的机器上,但是会产生Master的过负载。如果Scheduler在Slave上,则一个DAG中所有的任务都只能在某一台机器上进行作业提交,则并行任务比较多的时候,Slave的压力可能会比较大。\n\n3. 去中心化\n\n\n       去中心化设计里,通常没有Master/Slave的概念,所有的角色都是一样的,地位是平等的,全球互联网就是一个典型的去中心化的分布式系统,联网的任意节点设备down机,都只会影响很小范围的功能。\n       去中心化设计的核心设计在于整个分布式系统中不存在一个区别于其他节点的”管理者”,因此不存在单点故障问题。但由于不存在” 管理者”节点所以每个节点都需要跟其他节点通信才得到必须要的机器信息,而分布式系统通信的不可靠行,则大大增加了上述功能的实现难度。\n       实际上,真正去中心化的分布式系统并不多见。反而动态中心化分布式系统正在不断涌出。在这种架构下,集群中的管理者是被动态选择出来的,而不是预置的,并且集群在发生故障的时候,集群的节点会自发的举行\"会议\"选举新的\"管理者\"主持工作。最典型的案例就是ZooKeeper及Go语言实现的Etcd。\n\n \n\nEasyScheduler的去中心化是Master/Worker注册到Zookeeper中,实现Master集群和Worker集群无中心,并使用Zookeeper分布式锁来选举其中的一台Master或Worker为“管理者”来执行任务。\n\n分布式锁实践\nEasyScheduler使用Zookeeper分布式锁来实现同一时刻只有一台Master执行Scheduler,或者只有一台Worker执行任务的提交。\n1. 获取分布式锁的核心流程算法如下:\n\n\n\n2. EasyScheduler中Scheduler线程分布式锁实现流程图:\n\n\n\n线程不足循环等待问题\n\n如果一个DAG中没有子流程,则如果Command中的数据条数大于线程池设置的阈值,则直接流程等待或失败。\n\n如果一个大的DAG中嵌套了很多子流程,如下图:\n\n\n       则会产生“死等”状态。MainFlowThread等待SubFlowThread1结束,SubFlowThread1等待SubFlowThread2结束,SubFlowThread2等待SubFlowThread3结束,而SubFlowThread3等待线程池有新线程,则整个DAG流程不能结束,从而其中的线程也不能释放。\n       这样就形成的子父流程循环等待的状态。此时除非启动新的Master来增加线程来打破这样的”僵局”,否则调度集群将不能再使用。\n\n\n\n\n对于启动新Master来打破僵局,似乎有点差强人意,于是我们提出了以下三种方案来降低这种风险:\n\n\n计算所有Master的线程总和,然后对每一个DAG需要计算其需要的线程数,也就是在DAG流程执行之前做预计算。因为是多Master线程池,所以总线程数不太可能实时获取。\n\n对单Master线程池进行判断,如果线程池已经满了,则让线程直接失败。\n\n增加一种资源不足的Command类型,如果线程池不足,则将主流程挂起。这样线程池就有了新的线程,可以让资源不足挂起的流程重新唤醒执行。\n\n\n\n\n注意:Master Scheduler线程在获取Command的时候是FIFO的方式执行的。\n\n于是我们选择了第三种方式来解决线程不足的问题。\n\n\n容错设计\n\nEasyScheduler容错设计依赖于Zookeeper的Watcher机制,实现原理如图:\n\n\n       Master监控其他Master和Worker的目录,如果监听到remove事件,则会根据具体的业务逻辑进行流程实例容错或者任务实例容错。\n\n\nMaster容错流程图:\n\n\n       ZooKeeper Master容错完成之后则重新由EasyScheduler中Scheduler线程调度,遍历 DAG 找到”正在运行”和“提交成功”的任务,对”正在运行”的任务监控其任务实例的状态,对”提交成功”的任务需要判断Task Queue中是否已经存在,如果存在则同样监控任务实例的状态,如果不存在则重新提交任务实例。\n\n\n\n\nWorker容错流程图:\n\n\n       Master Scheduler线程一旦发现任务实例为” 需要容错”状态,则接管任务并进行重新提交。\n\n\n\n\n注意:由于” 网络抖动”可能会使得节点短时间内失去和zk的心跳,从而发生节点的remove事件。对于这种情况,我们使用最简单的方式,那就是节点一旦和zk发生超时连接,则直接将Master或Worker服务停掉。\n\n\nLogback和gRPC实现日志访问\n\n\n\n由于Web和Worker不一定在同一台机器上,所以查看日志不能像查询本地文件那样。有两种方案:\n\n将日志放到ES搜索引擎上\n\n通过gRPC通信获取远程日志信息\n\n\n\n介于考虑到尽可能的EasyScheduler的轻量级性,所以选择了gRPC实现远程访问日志信息。\n\n\n\n\n\n\n我们使用自定义Logback的FileAppender和Filter功能,实现每个任务实例生成一个日志文件。\n\n\n\nFileAppender实现如下:\n\n\n以…/流程定义id/流程实例id/任务实例id.log的形式生成日志。\n\n\n\n\n过滤匹配以TaskLogInfo开始的线程名称:\n\n\n\n\n\n总结\n\n本文从调度出发,介绍了易观研发的大数据分布式工作流调度系统。EasyScheduler在易观数据平台起着中流砥柱的作用。本章着重介绍了EasyScheduler的架构原理及实现思路。\n\n"},"pages/guide-manual.html":{"url":"pages/guide-manual.html","title":"使用手册","keywords":"","body":"使用手册\n登录\n1.输入http://192.168.220.204:8888/view/login/index.html 网址,输入用户名,密码登录 EasyScheduler\n\n2.登录之后每个页面的右上角都有用户的身份标识。点击下拉箭头包含用户信息和退出两个按钮\n\n\n点击“用户信息”按钮,如下图:\n\n\n\n点击”修改”按钮,修改用户信息\n\n\n点击退出按钮则退出系统,返回登录页面\n\n\n安全中心\n\n只有管理员才有安全中心,安全中心的主要功能是给管理员提供管理普通用户的功能。\n管理员可以有多个,管理员是功能上的管理,不参与具体的业务。也就是说管理员是不能执行具体任务的。\n\n租户管理\n租户是Linux上的用户,用于作业的提交。\n\n创建、编辑租户\n\n\n租户编码:租户编码是Linux上的用户,唯一,不能重复\n租户名称:租户的名称\n队列:租户对应的YARN上的队列,在数据库 t_escheduler_queue 中设置\n描述:租户的描述信息\n\n\n\n用户管理\n用户是EasyScheduler上的用户,用于EasyScheduler上的功能操作。\n\n创建、编辑用户\n\n\n用户名称:用户的名称,唯一,不能重复\n租户:设置该用户所属的租户\n邮箱:输入用户的邮箱,用来邮件发送和任务告警\n手机:输入用户的手机号\n注意:如果该用户切换了租户,则该用户所在租户下所有资源将复制到切换的新租户下\n\n\n\n\n授权\n\n\n管理员可以对普通用户进行非其创建的项目、资源、数据源和UDF函数进行授权。因为项目、资源、数据源和UDF函数授权方式都是一样的,所以以项目授权为例介绍。\n1.点击指定人的授权按钮,如下图:\n\n2.选中项目按钮,进行项目授权\n\n\n项目列表:是该用户未授权的项目\n已选项目:是该用户已授权的项目。\n特别注意:对于用户自己创建的项目,该用户拥有所有的权限。则项目列表和已选项目列表中不会体现。\n\n告警组管理\n告警组是告警用户抽象出来的组,使用告警组来管理用户。\n\n新建、编辑邮件组\n\n\n组名称:输入组的名称\n组类型:支持邮件/短信两种\n备注:输入告警组的备注信息\n\n\n\n\n管理用户\n\n\n管理用户列表:是未添加到该组的用户列表\n已选管理用户:是已添加到该组的用户列表\n\n\n\n服务管理\n服务管理是对EasyScheduler的Master、Worker的任务监控\n\nMaster\n\n\n\nWorker\n\n\n资源中心\n\n资源中心主要分为文件管理和UDF函数管理。\n文件管理:主要是用户的程序,脚本和配置文件需要上传到HDFS进行统一管理\nUDF函数管理:对用户创建的UDF进行管理\n\n文件管理\n\n创建文件\n\n\n文件格式支持以下几种类型:txt、log、sh、conf、cfg、py、java、sql、xml、hql\n\n\n\n\n上传文件\n\n\n文件名:输入文件的名称\n描述:输入文件的描述信息\n上传文件:点击上传按钮进行上传,将文件拖拽到上传区域,文件名会自动以上传的文件名称补全\n\n\n\n\n文件查看\n\n对可查看的文件类型,点击 文件名称 可以查看文件详情\n\n\n\n\n\n下载文件\n\n可以在 文件详情 中点击右上角下载按钮下载文件,或者在文件列表后的下载按钮下载文件\n\n\n\n\n文件重命名\n\n\n\n\n\n\n删除\n\n文件列表,点击 删除 按钮,删除文件\n\n\n\nUDF管理\n资源管理\n资源管理和文件管理功能类似,不同之处是资源管理是上传的UDF函数,文件管理上传的是用户程序,脚本及配置文件\n函数管理\n\n创建、编辑UDF函数\n\n\n目前只支持HIVE的临时UDF函数\nUDF函数名称:输入UDF函数时的名称\n包名类名:输入UDF函数的全路径\n参数:用来标注函数的输入参数\n数据库名:预留字段,用于创建永久UDF函数\nUDF资源:设置创建的UDF对应的资源文件\n使用说明:输入描述UDF函数的使用\n\n\n\n数据源中心\n\n数据源中心支持MySQL、POSTGRESQL、HIVE及Spark数据源\n\n\n创建、编辑MySQL数据源\n\n\n数据源:选择MYSQL\n数据源名称:输入数据源的名称\n描述:输入数据源的描述\nIP/主机名:输入连接MySQL的IP\n端口:输入连接MySQL的端口\n用户名:设置连接MySQL的用户名\n密码:设置连接MySQL的密码\n数据库名:输入连接MySQL的数据库名称\nJdbc连接参数:用于MySQL连接的参数设置,以JSON形式填写\n\n\n\n\n创建、编辑POSTGRESQL数据源\n\n\n数据源:选择POSTGRESQL\n数据源名称:输入数据源的名称\n描述:输入数据源的描述\nIP/主机名:输入连接POSTGRESQL的IP\n端口:输入连接POSTGRESQL的端口\n用户名:设置连接POSTGRESQL的用户名\n密码:设置连接POSTGRESQL的密码\n数据库名:输入连接POSTGRESQL的数据库名称\nJdbc连接参数:用于POSTGRESQL连接的参数设置,以JSON形式填写\n\n\n\n\n创建、编辑HIVE数据源\n1.使用HiveServer2方式连接\n\n\n数据源:选择HIVE\n数据源名称:输入数据源的名称\n描述:输入数据源的描述\nIP/主机名:输入连接HIVE的IP\n端口:输入连接HIVE的端口\n用户名:设置连接HIVE的用户名\n密码:设置连接HIVE的密码\n数据库名:输入连接HIVE的数据库名称\nJdbc连接参数:用于HIVE连接的参数设置,以JSON形式填写\n\n\n\n2.使用HiveServer2 HA Zookeeper方式连接\n\n\n数据源:选择HIVE\n数据源名称:输入数据源的名称\n描述:输入数据源的描述\nIP/主机名:输入连接Zookeeper的集群\n端口:输入连接Zookeeper的端口\n用户名:设置连接HIVE的用户名\n密码:设置连接HIVE的密码\n数据库名:输入连接HIVE的数据库名称\nJdbc连接参数:用于Zookeeper连接的参数设置,以JSON形式填写\n\n\n创建、编辑Spark数据源\n\n\n数据源:选择Spark\n数据源名称:输入数据源的名称\n描述:输入数据源的描述\nIP/主机名:输入连接Spark的IP\n端口:输入连接Spark的端口\n用户名:设置连接Spark的用户名\n密码:设置连接Spark的密码\n数据库名:输入连接Spark的数据库名称\nJdbc连接参数:用于Spark连接的参数设置,以JSON形式填写\n\n\n\n项目管理\n\n项目是调度对用户流程定义DAG分组的一个抽象\n\n\n创建、编辑项目\n\n\n项目名称:输入项目的名称\n描述:输入项目的描述\n\n\n\n项目首页\n点击项目列表中的项目名称,可以跳转到指定的项目首页,如下图:\n\n\n项目首页其中包含四个部分,任务状态统计,流程状态统计、流程定义统计及统计的时间范围\n任务状态统计:是指在指定时间范围内,统计任务实例中的待运行、失败、运行中、完成、成功的个数\n流程状态统计:是指在指定时间范围内,统计流程实例中的待运行、失败、运行中、完成、成功的个数\n流程定义统计:是统计该用户创建的流程定义及管理员授予该用户的流程定义\n注意:可以点击图,或者数量跳转到相应的任务实例,流程实例和流程定义列表\n\n工作流\n\n工作流下分为流程定义、流程实例和任务实例三个功能模块\n流程定义:是可视化拖拽成的DAG的统称,它是静态的,没有状态\n流程实例:对流程定义的每次实例化会生成一个流程实例,是动态的,是有状态的\n任务实例:流程实例DAG中每个Task称为任务实例,是动态的,是有状态的\n\n流程定义\n\n创建工作流\n\n\n左侧工具栏 => 是目前调度支持的任务类型,当前调度支持SHELL、子流程、存储过程、SQL、MR、Spark和Python七种任务类型\n右上角图标 => 分别是拖动节点和选中项、选择线条连线、删除选中的线或节点、全屏和流程定义保持,其主要功能是DAG的绘制所用\n\n\n\n\n1.创建 SHELL节点\n\n拖动工具栏中的任务节点到画板中,双击任务节点,如下图:\n\n节点名称:一个流程定义中的节点名称是唯一的\n运行标志:标识这个节点是否能正常调度\n描述信息:描述该节点的功能\n失败重试次数:任务失败重新提交的次数,支持下拉和手填\n失败重试间隔:任务失败重新提交任务的时间间隔,支持下拉和手填\n脚本:用户开发的SHELL程序\n资源:是指脚本中需要调用的资源文件列表\n自定义参数:是SHELL局部的用户自定义参数,会替换脚本中以${变量}的内容\n任务依赖:请参考任务依赖讲解\n\n\n\n\n2.创建 子流程 节点\n\n拖动工具栏中的任务节点到画板中,双击任务节点,如下图:\n\n节点名称:一个流程定义中的节点名称是唯一的\n运行标志:标识这个节点是否能正常调度\n描述信息:描述该节点的功能\n子节点:是选择子流程的流程定义,右上角进入该子节点可以跳转到所选子流程的流程定义\n任务依赖:请参考任务依赖讲解\n\n\n\n\n3.创建 存储过程 节点\n\n拖动工具栏中的任务节点到画板中,双击任务节点,如下图:\n\n节点名称:一个流程定义中的节点名称是唯一的\n运行标志:标识这个节点是否能正常调度\n描述信息:描述该节点的功能\n失败重试次数:任务失败重新提交的次数,支持下拉和手填\n失败重试间隔:任务失败重新提交任务的时间间隔,支持下拉和手填\n数据源:存储过程的数据源类型支持MySQL和POSTGRESQL两种,选择对应的数据源\n方法:是存储过程的方法名称\n自定义参数:存储过程的自定义参数类型支持IN、OUT两种,数据类型支持VARCHAR、INTEGER、LONG、FLOAT、DOUBLE、DATE、TIME、TIMESTAMP、BOOLEAN九种数据类型\n任务依赖:请参考任务依赖讲解\n\n\n\n\n4.创建 SQL 节点\n\n拖动工具栏中的任务节点到画板中,双击任务节点,如下图:\n\n节点名称:一个流程定义中的节点名称是唯一的\n运行标志:标识这个节点是否能正常调度\n描述信息:描述该节点的功能\n失败重试次数:任务失败重新提交的次数,支持下拉和手填\n失败重试间隔:任务失败重新提交任务的时间间隔,支持下拉和手填\n数据源:SQL数据源支持MySQL、POSTGRESQL、HIVE和Spark四中数据源类型,选择对应的数据源\nsql类型:支持查询和非查询两种,查询是select类型的查询,是有结果集返回的,可以指定邮件通知为表格、附件或表格附件三种模板。非查询是没有结果集返回的,是针对update、delete、insert三种类型的操作\nsql参数:输入参数格式为key1=value1;key2=value2…\nsql语句:SQL语句\nUDF函数:对于HIVE类型的数据源,可以引用资源中心中创建的UDF函数,其他类型的数据源暂不支持UDF函数\n自定义参数:SQL任务类型自定义参数类型和数据类型同存储过程任务类型一样。区别在于SQL任务类型自定义参数会替换sql语句中${变量},而存储过程是自定义参数顺序的给方法设置值\n任务依赖:请参考任务依赖讲解\n\n\n\n\n4.创建 MR 节点\n\n拖动工具栏中的任务节点到画板中,双击任务节点,如下图:\n(1) JAVA程序\n\n节点名称:一个流程定义中的节点名称是唯一的\n运行标志:标识这个节点是否能正常调度\n描述信息:描述该节点的功能\n失败重试次数:任务失败重新提交的次数,支持下拉和手填\n失败重试间隔:任务失败重新提交任务的时间间隔,支持下拉和手填\n主函数的class:是MR程序的入口Main Class的全路径\n程序类型:选择JAVA语言\n主jar包:是MR的jar包\n命令行参数:是设置MR程序的输入参数,支持自定义参数变量的替换\n其他参数:支持 –D、-files、-libjars、-archives格式\n资源: 如果其他参数中引用了资源文件,需要在资源中选择指定\n自定义参数:是MR局部的用户自定义参数,会替换脚本中以${变量}的内容\n任务依赖:请参考任务依赖讲解\n(2) Python程序\n\n节点名称:一个流程定义中的节点名称是唯一的\n运行标志:标识这个节点是否能正常调度\n描述信息:描述该节点的功能\n失败重试次数:任务失败重新提交的次数,支持下拉和手填\n失败重试间隔:任务失败重新提交任务的时间间隔,支持下拉和手填\n程序类型:选择Python语言\n主jar包:是运行MR的Python jar包\n其他参数:支持 –D、-mapper、-reducer、-input -output格式,这里可以设置用户自定义参数的输入,比如:\n-mapper \"mapper.py 1\" -file mapper.py -reducer reducer.py -file reducer.py –input /journey/words.txt -output /journey/out/mr/${currentTimeMillis}\n其中 -mapper 后的 mapper.py 1是两个参数,第一个参数是mapper.py,第二个参数是1\n资源: 如果其他参数中引用了资源文件,需要在资源中选择指定\n自定义参数:是MR局部的用户自定义参数,会替换脚本中以${变量}的内容\n任务依赖:请参考任务依赖讲解\n\n\n\n\n4.创建 Spark 节点\n\n拖动工具栏中的任务节点到画板中,双击任务节点,如下图:\n\n节点名称:一个流程定义中的节点名称是唯一的\n运行标志:标识这个节点是否能正常调度\n描述信息:描述该节点的功能\n失败重试次数:任务失败重新提交的次数,支持下拉和手填\n失败重试间隔:任务失败重新提交任务的时间间隔,支持下拉和手填\n程序类型:支持JAVA、Scala和Python三种语言\n主函数的class:是Spark程序的入口Main Class的全路径\n主jar包:是Spark的jar包\n部署方式:支持yarn-cluster、yarn-client、和local三种模式\nDriver内核数:可以设置Driver内核数及内存数\nExecutor数量:可以设置Executor数量、Executor内存数和Executor内核数\n命令行参数:是设置Spark程序的输入参数,支持自定义参数变量的替换。\n其他参数:支持 --jars、--files、--archives、--conf格式\n资源:如果其他参数中引用了资源文件,需要在资源中选择指定\n自定义参数:是MR局部的用户自定义参数,会替换脚本中以${变量}的内容\n任务依赖:请参考任务依赖讲解\n注意:JAVA和Scala只是用来标识,没有区别,如果是Python开发的Spark则没有主函数的class,其他都是一样\n\n\n\n\n4.创建 Python 节点\n\n拖动工具栏中的任务节点到画板中,双击任务节点,如下图:\n\n节点名称:一个流程定义中的节点名称是唯一的\n运行标志:标识这个节点是否能正常调度\n描述信息:描述该节点的功能\n失败重试次数:任务失败重新提交的次数,支持下拉和手填\n失败重试间隔:任务失败重新提交任务的时间间隔,支持下拉和手填\n脚本:用户开发的Python程序\n资源:是指脚本中需要调用的资源文件列表\n自定义参数:是Python局部的用户自定义参数,会替换脚本中以${变量}的内容\n任务依赖:请参考任务依赖讲解\n\n\n\n\n流程定义操作\n流程定义列表\n\n\n1.编辑/保存\n\n对下线状态的流程定义,用户可对DAG进行编辑\n\n在保存流程定义的时候可以设置全局参数,局部参数可以使用${变量}的方式引用全局参数\n\n\n\n\n2.启动\n\n\n失败策略:继续是如果有失败的任务节点,其他并行的任务节点将继续执行。结束是如果有失的败节点,其他并行任的务节点将被Kill掉\n通知策略:都不发、成功发、失败发、成功或失败都发四种策略\n通知组:是通知用户所属的组\n收件人:邮件收件人列表\n抄送人:邮件抄送人列表\n补数:是对流程进行历史的补数,支持区间补数和某一天的补数,如下图:\n\n执行方式:补数可以以串行执行或并行执行,串行执行是流程实例列表以队列的形式逐个提交执行,并行执行是流程实例列表并发形式的提交执行\n时间:选择指定的补数时间区间,此时业务时间为补数时间,如果起始时间和结束时间相等,则为某一天的补数,否则为区间补数。关于系统参数,请参考系统参数的讲解\n\n\n\n\n3.定时\n\n流程定义可以设置定时,周期性的跑作业。如下图:\n\n起止时间:选择该定时的有效时间范围\n定时:可视化定时,设置相应的定时\n\n失败策略:继续是如果有失败的任务节点,其他并行的任务节点将继续执行。结束是如果有失的败节点,其他并行任的务节点将被Kill掉\n通知策略:都不发、成功发、失败发、成功或失败都发四种策略\n通知组:是通知用户所属的组\n收件人:邮件收件人列表\n抄送人:邮件抄送人列表\n\n\n\n\n4.上线/下线\n\n流程定义有两个状态:上线和下线。只有上线的流程才能启动或调度,下线的流程用来编辑\n\n\n\n\n5.定时管理\n\n一个流程定义可以添加1个定时,定时管理是对一个流程定义上的定时的修改,只有上线的定时才是有效的定时\n\n\n\n\n6.指定节点启动\n\n对流程定义可以选择节点右击 指定节点启动,如下图:\n\n启动前可以设置若干参数,如下图:\n\n失败策略:继续是如果有失败的任务节点,其他并行的任务节点将继续执行。结束是如果有失的败节点,其他并行任的务节点将被Kill掉\n节点执行:节点执行模式有三种,分别为向后执行、向前执行和仅执行当前节点\n向后执行是从指定节点向后执行,一直到后续节点不能继续执行为止。向前执行是从开始节点到指定的节点区间执行。仅执行当前节点是只执行指定的节点\n通知策略:都不发、成功发、失败发、成功或失败都发四种策略\n通知组:是通知用户所属的组\n收件人:邮件收件人列表\n抄送人:邮件抄送人列表\n补数:见流程定义 启动\n\n\n\n\n7.TreeView\n\n用来显示某个流程定义跑过的流程实例及任务实例的状态\n\n左侧是流程定义 DAG Tree的展示,非叶子节点有展开和收缩的功能。右边是流程实例的集合,每一列都是流程定义的一次调度,圆点表示的是流程实例的状态,方块表示的是任务实例的状态。如果是子流程,可以通过任务实例跳转到相应的子流程\n\n\n\n流程实例\n流程实例是流程定义的实例化\n\n1.流程实例列表\n\n\n\n\n工作流名称:是根据流程定义名称外加一个随机数\n\n运行类型:包括启动工作流、从当前节点开始执行、恢复被容错的工作流、恢复暂停流程、从失败节点开始执行、补数、调度执行、重跑、暂停、停止、恢复等待线程的流程\n\n开始时间:流程实例运行的开始时间\n\n结束时间:流程实例运行的结束时间\n\n运行时长(秒):结束时间减去开始时间\n\n运行次数:流程实例运行的次数 ,对于重跑流程实例的记录\n\nhost:标识流程实例调度的机器ip\n\n容错:流程实例是否被容错过\n\n状态:流程实例最终运行的状态\n\n\n\n2.编辑/保存\n\n对于终态的流程实例,可以进行编辑保存。终态是流程实例最终的状态为成功、失败、暂停或停止四个状态。\n\n是否更新流程定义: 如果checkbox勾选,表示流程实例的修改会更新流程定义\n如果不勾选,表示只编辑本次流程实例\n\n\n\n\n3.重跑\n\n重跑是在不生成新的流程实例情况下,重新跑任务实例\n特别注意:重跑时系统参数已经固化了,系统参数不会随着时间改变而改变\n\n\n\n\n4.恢复失败\n\n点击 恢复失败 可以让流程实例从失败节点开始重新执行\n\n\n\n\n5.停止\n\n点击 停止 将Kill掉正在运行的任务节点\n特别注意:如果任务运行周期比较短或者正好在Kill任务的时候,任务已经结束了,此时将Kill不掉正在运行的任务,继而会把下一个任务设置为Kill状态\n\n\n\n\n6.暂停\n\n对 正在运行 的流程实例,点击 暂停 可以让 正在运行任务的后继节点 设置为暂停\n\n\n\n\n7.恢复暂停\n\n对于 暂停 的流程实例,点击 恢复暂停 可以让流程实例从暂停位置继续执行\n\n\n\n\n8.删除\n\n删除流程实例及流程实例下的任务实例\n\n\n\n\n9.Gantt\n\nGantt图纵轴是某个流程实例下的任务实例的拓扑排序,横轴是任务实例的运行时间\n\n\n\n\n\n10.查看流程实例运行变量\n\n\n点击隐藏按钮,查看流程实例运行变量。如下图:\n\n点击变量是对变量的复制\n\n\n\n\n11.查看历史任务实例\n\n\n点击任务实例节点,点击 查看历史,可以查看该流程实例运行的该任务实例列表\n\n\n\n\n12.查看日志\n\n\n点击任务实例节点,点击 查看日志,可以查看该任务实例运行的日志,如下图:\n\n右上角是下载日志、刷新日志和放大/缩小按钮\n注意:日志查看是分片的查看,上下滚动查看\n\n\n\n任务实例\n任务实例是流程实例任务节点的列表\n\n\n\n两种方式查看任务实例:\n\n第一种是通过流程实例任务节点 查看历史,这时查看的是此流程实例的任务实例 重跑的列表\n\n第二种是通过点击 流程实例 导航栏,调转到流程实例列表,这时查看的是所有流程实例的任务实例列表\n\n\n\n查看日志:点击 查看日志 按钮,可下载和查看日志\n\n任务记录\n任务记录是千帆的数据稽核\n\n\n可以按照任务名称、日期、状态、原表、目标表、日期区间查询\n\n首页\n\n首页是对所有项目在指定时间范围内的任务状态、流程状态和流程定义的统计。\n首页和项目首页的主要区别在于:\n\n首页中的图表是没有链接的,项目首页中图表是有链接的\n\n首页统计的是所有的项目,项目首页统计的是某一个项目\n\n\n任务依赖\n任务依赖分为水平依赖和垂直依赖\n\n水平依赖就是指DAG图的有向依赖,是同一个流程实例任务节点的前驱,后继之间的依赖关系\n\n垂直依赖是流程实例之间的任务依赖,基于定时的依赖。垂直依赖又分为自依赖和外部依赖。\n自依赖:是同一个流程实例的上一周期的 任务 依赖,如图:\n外部依赖:是对多个外部流程流程实例的任务实例的依赖\n外部依赖策略存在依赖策略,分别有自定义、全部成功、全部失败、任一成功、任一失败\n注意:自定义是可以自定义外部流程任务是成功或失败\n依赖任务:\n\n\n\n\n定时依赖图解: A流程定义某任务依赖B流程定义某任务,TA 为流程定义A的定时器,TB为流程定义B的定时器,TBStart到TBEnd为TB的周期,周期分别支持小时、天、月\n\n只有在TB到TBEnd区间范围内符合任务实例依赖条件的,才能依赖成功。否则依赖失败\n\n只有在 TB 到 TA区间范围内符合任务实例依赖条件的,才能依赖成功。否则依赖失败\n\n系统参数\n\n系统参数\n\n 变量含义\n \n ${system.biz.date}\n 日常调度实例定时的定时时间前一天,格式为 yyyyMMdd,补数据时,该日期 +1\n \n \n ${system.biz.curdate}\n 日常调度实例定时的定时时间,格式为 yyyyMMdd,补数据时,该日期 +1\n \n \n ${system.datetime}\n 日常调度实例定时的定时时间,格式为 yyyyMMddHHmmss,补数据时,该日期 +1\n \n\n\n\n\n\n\n\n时间自定义参数\n\n支持代码中自定义变量名,声明方式:${变量名}。可以是引用 \"系统参数\" 或指定 \"常量\"。\n注意,我们定义这种基准变量为 $[...] 格式的,$[yyyyMMddHHmmss] 是可以任意分解组合的,比如:$[yyyyMMdd], $[HHmmss], $[yyyy-MM-dd], $[HH:mm:ss] 等\n也可以这样:\n后 N 年:$[add_months(yyyyMMdd,12*N)]\n前 N 年:$[add_months(yyyyMMdd,-12*N)]\n后 N 月:$[add_months(yyyyMMdd,N)]\n前 N 月:$[add_months(yyyyMMdd,-N)]\n后 N 周:$[yyyyMMdd+7*N]\n前 N 周:$[yyyyMMdd-7*N]\n后 N 天:$[yyyyMMdd+N]\n前 N 天:$[yyyyMMdd-N]\n后 N 小时:$[HHmmss+N/24]\n前 N 小时:$[HHmmss-N/24]\n后 N 分钟:$[HHmmss+N/24/60]\n前 N 分钟:$[HHmmss-N/24/60]\n\n\n\n\n用户自定义参数\n用户自定义参数分为全局参数和局部参数。全局参数是保存流程定义和流程实例的时候传递的全局参数,全局参数可以在整个流程中的任何一个任务节点的局部参数引用。\n例如:\n\n\nds为全局参数,引用的是系统参数。\n\n任务中partition通过${ds}来引用全局参数,对于脚本可以通过${partition}来引用变量partition的值,或通过JDBC直接将partition的值set进去\n\n\n\n"},"pages/deploy-foreground.html":{"url":"pages/deploy-foreground.html","title":"前端部署","keywords":"","body":"前端部署文档\n前端项目环境构建及编译\nEscheduler项目前端技术栈\nVue + es6 + Ans-ui + d3 + jsplumb + lodash\n开发环境\nNode\n\nnode安装\nNode包下载 (注意版本 8.9.4) https://nodejs.org/download/release/v8.9.4/ \n\n拉取前端项目到本地\n项目git仓库地址 git@git.analysys.cn:analysys_changsha/escheduler.git\n\n前端项目构建\n用命令行模式 cd 进入 escheduler项目目录并执行 npm install 拉取项目依赖包\n\n\n\n如果 npm install 速度非常慢 \n可以转淘宝镜像命令行输入 npm install -g cnpm --registry=https://registry.npm.taobao.org\n运行 cnpm install \n!!!这里特别注意 项目如果在拉取依赖包的过程中报 \" node-sass error \" 错误,请在执行完后再次执行以下命令\nnpm install node-sass --unsafe-perm //单独安装node-sass依赖\n\n项目根目录创建.env为后缀名的文件并输入\n# 前端代理的接口地址\nAPI_BASE = http://192.168.220.204:12345\n\n# 如果您需要用ip访问项目可以把 \"#\" 号去掉\n#DEV_HOST = 192.168.6.132\n运行\n\nnpm start 项目开发环境 (启动后访问地址 http://localhost:8888/#/)\n\nnpm run build 项目打包 (打包后根目录会创建一个名为dist文件夹,用于发布线上Nginx)\n\n\n安装及配置\n(1-1) Nginx安装\n安装 wget http://nginx.org/download/nginx-1.10.1.tar.gz \nNginx的配置及运行需要pcre、zlib等软件包的支持,因此应预先安装这些软件的开发包(devel),以便提供相应的库和头文件,确保Nginx的安装顺利完成。\n[root@nginx ~]# service iptables stop\n[root@nginx ~]# setenforce 0\n[root@nginx ~]# mount /dev/cdrom /mnt/\n[root@nginx ~]# vim /etc/yum.repos.d/yum.repo\n[base]\nname=RedHat Enterprise Linux Server\nbaseurl=file:///mnt/Packages\ngpgcheck=0\n[root@nginx ~]# yum -y install pcre-devel zilb-devel openssl-devel\n(1-2) 创建运行用户、组\nNginx服务程序默认以nobody身份运行,建议为其创建专门的用户账号,以便更准确地控制其访问权限,增加灵活性、降低安全风险。如:创建一个名为nginx的用户,不建立宿主目录,也禁止登录到shell环境。\n[root@nginx ~]# useradd -M -s /sbin/nologin escheduler\n(1-3) 编译安装nginx\n释放nginx源码包\n[root@nginx ~]# tar xf nginx-1.6.2.tar.gz -C /usr/src/\n编译前配置\n[root@nginx ~]# cd /usr/src/nginx-1.6.2/\n[root@nginx nginx-1.6.2]# ./configure --prefix=/usr/local/nginx --user=escheduler --group=escheduler --with-http_stub_status_module --with-http_ssl_module --with-http_flv_module --with-http_gzip_static_module\n注:配置前可以参考 ./configure --help给出说明\n--prefix 设定Nginx的安装目录\n--user和—group 指定Nginx运行用户和组\n--with-http_stub_status_module 启用http_stub_status_module模块以支持状态统计\n--with-http_ssl_module 启用SSL模块\n\n错误\n[root@centos nginx-1.6.2]# ./configure --prefix=/usr/local/nginx --user=escheduler --group=escheduler --with-http_stub_status_module --with-http_ssl_module --with-http_flv_module --with-http_gzip_static_module\nchecking for OS\n+ Linux 2.6.32-431.el6.i686 i686\nchecking for C compiler ... not found\n./configure: error: C compiler cc is not found\n解决方法\nyum -y install gcc gcc-c++\n\n编译 安装\n[root@nginx nginx-1.6.2]# make && make install\n为了使Nginx服务器的运行更加方便,可以为主程序nginx创建链接文件,以便管理员直接执行nginx命令就可以调用Nginx的主程序。\n[root@nginx nginx-1.6.2]# ln -s /usr/local/nginx/sbin/nginx /usr/local/bin/\n[root@nginx nginx-1.6.2]# ll /usr/local/bin/nginx \nlrwxrwxrwx 1 root root 27 12-29 07:24 /usr/local/bin/nginx -> /usr/local/nginx/sbin/nginx\nNginx的运行控制\n与Apache的主程序httpd类似,Nginx的主程序也提供了\"-t\"选项用来对配置文件进行检查,以便找出不当或错误的配置。配置文件nginx.conf默认位于安装目录/usr/local/nginx/conf/目录中。若要检查位于其他位置的配置文件,可使用\"-c\"选项来指定路径。\nroot@nginx conf]# nginx -t\nnginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok\nnginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful\n启动、停止Nginx\n直接运行nginx即可启动Nginx服务器,这种方式将使用默认的配置文件,若要改用其他配置文件,需添加\"-c 配置文件路径\"选项来指定路径。需要注意的是,若服务器中已安装有httpd等其他WEB服务软件,应采取措施(修改端口,停用或卸载)避免部突。\n[root@nginx conf]# chown -R escheduler:escheduler /usr/local/nginx\n\n/usr/local/nginx/conf/nginx.conf\n\n[root@nginx conf]# netstat -anpt |grep :80\n[root@nginx conf]# nginx\n[root@nginx conf]# netstat -anpt |grep :80\ntcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 6810/nginx: master\n通过检查 Nginx程序的监听状态,或者在浏览器中访问此WEB服务(默认页面将显示\"Welcome to nginx!\"),可以确认Nginx服务是否正常运行。\n[root@nginx ~]# yum -y install elinks\n[root@nginx ~]# elinks --dump http://localhost\n Welcome to nginx!\n主程序Nginx支持标准的进程信号,通过kill或者killall命令传送\nHUP 重载配置 等同于-1\nQUIT 退出进程 等同于-3\nKILL 杀死进程 \n[root@nginx ~]# killall -s HUP nginx\n[root@nginx ~]# killall -s QUIT nginx\n[root@nginx ~]# netstat -anpt |grep :80\n当Nginx进程运行时,PID号默认存放在logs/目录下的nginx.pid文件中,因此若改用kill命令,也可以根据nginx.pid文件中的PID号来进行控制。\n为了使Nginx服务的启动、停止、重载等操作更加方便,可以编写Nginx服务脚本,并使用chkconfig和service工具来进行管理,也更加符合RHEL系统的管理习惯。\n[root@nginx ~]# vim /etc/init.d/nginx\n脚本一\n#!/bin/bash\n# chkconfig: 2345 99 20\n# description: Nginx Server Control Script\nPROG=\"/usr/local/nginx/sbin/nginx\"\nPIDF=\"/usr/local/nginx/logs/nginx.pid\"\ncase \"$1\" in\nstart)\n $PROG\n;;\nstop)\n kill -s QUIT $(cat $PIDF)\n;;\nrestart)\n $0 stop\n $0 start\n;;\nreload)\n kill -s HUP $(cat $PIDF)\n;;\n*)\n echo \"Usage: $0 (start|stop|restart|reload)\"\n exit 1\nesac\nexit 0\n\n[root@nginx ~]# chmod +x /etc/init.d/nginx\n[root@nginx ~]# chkconfig --add nginx\n[root@nginx ~]# chkconfig nginx on\n[root@nginx ~]# chkconfig --list nginx \nnginx 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭\n报错的话: /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf\n这样就可以通过nginx脚本来启动、停止、重启、重载Nginx服务器了。\n(2-1) root安装\n安装epel源 yum install epel-release -y\n安装Nginx yum install nginx -y\n命令\n\n启用 systemctl enable nginx\n\n重启 systemctl restart nginx\n\n状态 systemctl status nginx\n\n\n项目生产环境配置\n\n创建静态页面存放目录\nmkdir /data2_4T/escheduler_front/escheduler/server\n配置文件地址\n/etc/nginx/conf.d/default.conf\n配置信息\nserver {\n listen 8888;# 访问端口\n server_name localhost;\n #charset koi8-r;\n #access_log /var/log/nginx/host.access.log main;\n location / {\n root /data2_4T/escheduler_front/escheduler/server; # 静态文件目录\n index index.html index.html;\n }\n location /escheduler {\n proxy_pass http://192.168.220.181:12345; # 接口地址\n proxy_set_header Host $host;\n proxy_set_header X-Real-IP $remote_addr;\n proxy_set_header x_real_ipP $remote_addr;\n proxy_set_header remote_addr $remote_addr;\n proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n proxy_http_version 1.1;\n proxy_connect_timeout 4s;\n proxy_read_timeout 30s;\n proxy_send_timeout 12s;\n proxy_set_header Upgrade $http_upgrade;\n proxy_set_header Connection \"upgrade\";\n }\n #error_page 404 /404.html;\n # redirect server error pages to the static page /50x.html\n #\n error_page 500 502 503 504 /50x.html;\n location = /50x.html {\n root /usr/share/nginx/html;\n }\n}\n重启Nginx服务\nsystemctl restart nginx\n\n前端项目发布\n前端在开发环境(dev)中运行 npm run build 命令,生成打包文件(dist)包\n再拷贝到服务器 /data2_4T/escheduler_front/escheduler/server(服务器静态页面存放目录)\n访问地址 http://localhost:8888/#/ \n问题\n1. 上传文件大小限制\n编辑配置文件 vi /etc/nginx/nginx.conf\n# 更改上传大小\nclient_max_body_size 1024m\n"},"pages/deploy-background.html":{"url":"pages/deploy-background.html","title":"后端部署","keywords":"","body":"​\n部署文档\n软件要求\n\nMysql (5.5+) : 必装\nJDK (1.8+) :必装 \nZookeeper (3.4.6) :必装 \nHadoop (2.7+) :选装, 如果需要使用到EasyScheduler的资源上传,MapReduce任务在线提交则需要安装(上传的资源文件目前保存在Hdfs上)\nHive (1.2.1+) : 选装,如果跑Hive任务需要安装(\nReids安装 (2.7.0+) : 选装, 任务队列选择Redis时需要安装\nSpark(1.x,2.x) : 选装,Spark任务提交需要安装\nPostgreSQL(8.2.15+) : 选装,PostgreSQL存储过程需要安装\n\n注意:EasyScheduler本身不依赖Hadoop、Hive、Spark、PostgreSQL、Redis,仅是用到了他们的Client jar,用于对应任务的运行。\n\n\n\n项目编译\n\n执行编译命令:\n\n\nmvn -U clean package assembly:assembly -Dmaven.test.skip=true \n\n\n查看目录\n\n正常编译完后,会在当前目录生成 target/escheduler-{version}-SNAPSHOT/\n bin\n conf\n lib\n script\n sql\n\n说明\nbin : 工程服务启动脚本\nconf : 工程配置文件\nlib : 工程依赖jar包,包括各个模块jar和第三方jar\nscript : 工程自动化部署、启动脚本\nsql : 工程依赖sql文件\n\n\n数据库初始化\n\n创建database和账号\n\nmysql -h {host} -u {user} -p{password}\nmysql> CREATE DATABASE escheduler DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;\nmysql> GRANT ALL PRIVILEGES ON escheduler.* TO '{user}'@'%' IDENTIFIED BY '{password}';\nmysql> GRANT ALL PRIVILEGES ON escheduler.* TO '{user}'@'localhost' IDENTIFIED BY '{password}';\nmysql> flush privileges;\n\n创建表\n\n说明:在target/escheduler-{version}-SNAPSHOT/sql/有两个sql创建表文件:escheduler.sql和quartz.sql\n执行:\nmysql -h {host} -u {user} -p{password} -D {db} 创建部署用户\n因为easyscheduler worker都是以 sudo -u {linux-user} 方式来执行作业,所以部署用户需要有 sudo 权限,而且是免密的。\n部署账号\nvi /etc/sudoers\n\n# 部署用户是 escheduler 账号\nescheduler ALL=(ALL) NOPASSWD: NOPASSWD: ALL\n\n# 并且需要注释掉 Default requiretty 一行\n#Default requiretty\n配置文件\n说明:配置文件位于 target/escheduler-{version}-SNAPSHOT/conf 下面\nescheduler-alert\n配置邮件告警信息\n\nalert.properties \n\n#以qq邮箱为例,如果是别的邮箱,请更改对应配置\n#alert type is EMAIL/SMS\nalert.type=EMAIL\n\n# mail server configuration\nmail.protocol=SMTP\nmail.server.host=smtp.exmail.qq.com\nmail.server.port=25\nmail.sender=xxxxxx@qq.com\nmail.passwd=xxxxxxx\n\n# xls file path, need manually create it before use if not exist\nxls.file.path=/opt/xls\n配置告警数据源信息\n\nalert/data_source.properties \n\n#注意:请替换${xxx}里的内容\n\n# common configuration\nspring.datasource.type=com.alibaba.druid.pool.DruidDataSource\nspring.datasource.driver-class-name=com.mysql.jdbc.Driver\nspring.datasource.url=jdbc:mysql://${ip}:3306/escheduler?characterEncoding=UTF-8\nspring.datasource.username=${username}\nspring.datasource.password=${password}\n\n# supplement configuration\nspring.datasource.initialSize=5\n# min connection number\nspring.datasource.minIdle=5\n# max connection number\nspring.datasource.maxActive=20\n\n# max wait time for get connection\nspring.datasource.maxWait=60000\n\n# idle connections closed,unit milliseconds\nspring.datasource.timeBetweenEvictionRunsMillis=60000\n\n# connection minimum survival time,unit milliseconds\nspring.datasource.minEvictableIdleTimeMillis=300000\nspring.datasource.validationQuery=SELECT 1\nspring.datasource.validationQueryTimeout=3\nspring.datasource.testWhileIdle=true\nspring.datasource.testOnBorrow=true\nspring.datasource.testOnReturn=false\nspring.datasource.defaultAutoCommit=true\n\n# open PSCache,set PSCache size\nspring.datasource.poolPreparedStatements=false\nspring.datasource.maxPoolPreparedStatementPerConnectionSize=20\n日志配置文件\n\nalert_logback.xml\n\n\n \n \n \n \n \n [%level] %date{yyyy-MM-dd HH:mm:ss.SSS} %logger{96}:[%line] - %msg%n\n \n UTF-8\n \n \n\n \n ${log.base}/escheduler-alert.log\n \n ${log.base}/escheduler-alert.%d{yyyy-MM-dd_HH}.%i.log\n 20\n 64MB\n \n \n \n [%level] %date{yyyy-MM-dd HH:mm:ss.SSS} %logger{96}:[%line] - %msg%n\n \n UTF-8\n \n \n\n \n \n \n\nescheduler-common\n通用配置文件配置,队列选择及地址配置,通用文件目录配置。\n\ncommon/common.properties\n\n#task queue implementation, can choose \"redis\" or \"zookeeper\", default \"zookeeper\"\nescheduler.queue.impl=zookeeper\n\n#if escheduler.queue.impl=redis, you need to configuration relevant information with redis. redis configuration start\nspring.redis.host=${redis_ip}\nspring.redis.port=6379\nspring.redis.maxIdle=1000\nspring.redis.maxTotal=10000\n#redis configuration end\n\n# user data directory path, self configuration, please make sure the directory exists and have read write permissions\ndata.basedir.path=/xxx/xxx\n\n# directory path for user data download. self configuration, please make sure the directory exists and have read write permissions\ndata.download.basedir.path=/xxx/xxx \n\n# process execute directory. self configuration, please make sure the directory exists and have read write permissions\nprocess.exec.basepath=/xxx/xxx\n\n# data base dir, resource file will store to this hadoop hdfs path, self configuration, please make sure the directory exists on hdfs and have read write permissions。\"/escheduler\" is recommended\ndata.store2hdfs.basepath=/escheduler\n\n# system env path. self configuration, please make sure the directory and file exists and have read write execute permissions\nescheduler.env.path=/xxx/xxx/.escheduler_env.sh\nescheduler.env.py=/xxx/xxx/escheduler_env.py\n\n#resource.view.suffixs\nresource.view.suffixs=txt,log,sh,conf,cfg,py,java,sql,hql,xml\n\n# is development state? default \"false\"\ndevelopment.state=false\nSHELL任务 环境变量配置\n.escheduler_env.sh \n#self configuration, please make sure the directory exists and have read write permissions\nexport HADOOP_HOME=/opt/soft/hadoop\nexport HADOOP_CONF_DIR=/opt/soft/hadoop/etc/hadoop\nexport SPARK_HOME1=/opt/soft/spark1\nexport SPARK_HOME2=/opt/soft/spark2\nexport PYTHON_HOME=/opt/soft/python\nexport JAVA_HOME=/opt/soft/java\nexport HIVE_HOME=/opt/soft/hive\n\nexport PATH=$HADOOP_HOME/bin:$SPARK_HOME1/bin:$SPARK_HOME2/bin:$PYTHON_HOME/bin:$JAVA_HOME/bin:$HIVE_HOME/bin:$PATH\n​ \nPython任务 环境变量配置\nescheduler_env.py\n#self configuration, please make sure the directory exists and have read write execute permissions\n\nimport os\n\nHADOOP_HOME=\"/opt/soft/hadoop\"\nPYTHON_HOME=\"/opt/soft/python\"\nJAVA_HOME=\"/opt/soft/java\"\nPATH=os.environ['PATH']\nPATH=\"%s/bin:%s/bin:%s/bin:%s\"%(HADOOP_HOME,JAVA_HOME,PYTHON_HOME,PATH)\n\nos.putenv('PATH','%s'%PATH)\nhadoop 配置文件\n\ncommon/hadoop/hadoop.properties\n\n#please replace the content in ${xxx}\n# ha or single namenode\nfs.defaultFS=hdfs://${cluster_ipOrName}:8020\n\n#resourcemanager ha note this need ips , eg. 192.168.220.188,192.168.220.189\nyarn.resourcemanager.ha.rm.ids=${ip1},${ip2}\n\n# reousrcemanager path \nyarn.application.status.address=http://${ip1}:8088/ws/v1/cluster/apps/%s\n定时器配置文件\n\nquartz.properties\n\n#please replace the content in ${xxx}\n#============================================================================\n# Configure Main Scheduler Properties\n#============================================================================\norg.quartz.scheduler.instanceName = EasyScheduler\norg.quartz.scheduler.instanceId = AUTO\norg.quartz.scheduler.makeSchedulerThreadDaemon = true\norg.quartz.jobStore.useProperties = false\n\n#============================================================================\n# Configure ThreadPool\n#============================================================================\n\norg.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool\norg.quartz.threadPool.makeThreadsDaemons = true\norg.quartz.threadPool.threadCount = 25\norg.quartz.threadPool.threadPriority = 5\n\n#============================================================================\n# Configure JobStore\n#============================================================================\n\norg.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX\norg.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.StdJDBCDelegate\norg.quartz.jobStore.tablePrefix = QRTZ_\norg.quartz.jobStore.isClustered = true\norg.quartz.jobStore.misfireThreshold = 60000\norg.quartz.jobStore.clusterCheckinInterval = 5000\norg.quartz.jobStore.dataSource = myDs\n\n#============================================================================\n# Configure Datasources \n#============================================================================\n\norg.quartz.dataSource.myDs.driver = com.mysql.jdbc.Driver\norg.quartz.dataSource.myDs.URL = jdbc:mysql://${ip}:3306/escheduler?characterEncoding=utf8&useSSL=false\norg.quartz.dataSource.myDs.user = ${username}\norg.quartz.dataSource.myDs.password = ${password}\norg.quartz.dataSource.myDs.maxConnections = 10\norg.quartz.dataSource.myDs.validationQuery = select 1\nzookeeper 配置文件\n\nzookeeper.properties\n\n#zookeeper cluster. eg. 192.168.220.188:2181,192.168.220.189:2181,192.168.220.190:2181\nzookeeper.quorum=${ip1}:2181,${ip2}:2181,${ip3}:2181\n\n#zookeeper server dirctory\nzookeeper.escheduler.master=/escheduler/masters\nzookeeper.escheduler.worker=/escheduler/workers\n\n#zookeeper lock dirctory\nzookeeper.escheduler.lock.master=/escheduler/lock/master\nzookeeper.escheduler.lock.worker=/escheduler/lock/worker\n\n#escheduler root directory\nzookeeper.escheduler.root=/escheduler\n\n#escheduler failover directory\nzookeeper.escheduler.lock.master.failover=/escheduler/lock/failover/master\nzookeeper.escheduler.lock.worker.failover=/escheduler/lock/failover/worker\n\n#escheduler failover directory\nzookeeper.session.timeout=300\nzookeeper.connection.timeout=300\nzookeeper.retry.sleep=1000\nzookeeper.retry.maxtime=5\nescheduler-dao\ndao数据源配置\n\ndao/data_source.properties\n\n#please replace the content in ${xxx}\n\n# base spring data source configuration\nspring.datasource.type=com.alibaba.druid.pool.DruidDataSource\nspring.datasource.driver-class-name=com.mysql.jdbc.Driver\nspring.datasource.url=jdbc:mysql://${ip}:3306/escheduler?characterEncoding=UTF-8\nspring.datasource.username=${username}\nspring.datasource.password=${password}\n\n# connection configuration\nspring.datasource.initialSize=5\nspring.datasource.minIdle=5\nspring.datasource.maxActive=20\n\n# max seconds wait connection timeout\nspring.datasource.maxWait=60000\n\n# milliseconds for check to close free connections\nspring.datasource.timeBetweenEvictionRunsMillis=60000\n\n# connection minimum survival time(milliseconds)\nspring.datasource.minEvictableIdleTimeMillis=300000\nspring.datasource.validationQuery=SELECT 1\nspring.datasource.validationQueryTimeout=3\nspring.datasource.testWhileIdle=true\nspring.datasource.testOnBorrow=true\nspring.datasource.testOnReturn=false\nspring.datasource.defaultAutoCommit=true\n\n# open PSCache, specify count PSCache for every connection\nspring.datasource.poolPreparedStatements=true\nspring.datasource.maxPoolPreparedStatementPerConnectionSize=20\n\n\n# data quality analysis is not currently in use. please ignore the following configuration\n# task record flag\ntask.record.flag=false\ntask.record.datasource.url=jdbc:mysql://${ip}:3306/etl?characterEncoding=UTF-8\ntask.record.datasource.username=etl\ntask.record.datasource.password=xxxxx\nescheduler-server\nmaster配置文件\n\nmaster.properties\n\n# master execute thread num\nmaster.exec.threads=100\n\n# master execute task number in parallel\nmaster.exec.task.number=20\n\n# master heartbeat interval\nmaster.heartbeat.interval=8\n\n# master commit task retry times\nmaster.task.commit.retryTimes=5\n\n# master commit task interval\nmaster.task.commit.interval=100\n\n\n# only less than cpu avg load, master server can work. default value : the number of cpu cores * 2\nmaster.max.cpuload.avg=10\n\n# only larger than reserved memory, master server can work. default value : physical memory * 1/10, unit is G.\nmaster.reserved.memory=1\nmaster日志文件\n注意:对MASTERLOGFILE,自定义了MasterLogFilter\n\nmaster_logback.xml\n\n\n \n \n \n \n \n [%level] %date{yyyy-MM-dd HH:mm:ss.SSS} %logger{96}:[%line] - %msg%n\n \n UTF-8\n \n \n\n \n ${log.base}/escheduler-master.log\n \n INFO\n \n \n ${log.base}/escheduler-master.%d{yyyy-MM-dd_HH}.%i.log\n 20\n 200MB\n \n \n \n [%level] %date{yyyy-MM-dd HH:mm:ss.SSS} %logger{96}:[%line] - %msg%n\n \n UTF-8\n \n \n\n \n \n \n\nworker配置文件\n\nworker.properties\n\n# worker execute thread num\nworker.exec.threads=100\n\n# worker heartbeat interval\nworker.heartbeat.interval=8\n\n# submit the number of tasks at a time\nworker.fetch.task.num = 10\n\n# only less than cpu avg load, worker server can work. default value : the number of cpu cores * 2\nworker.max.cpuload.avg=10\n\n# only larger than reserved memory, worker server can work. default value : physical memory * 1/6, unit is G.\nworker.reserved.memory=1\nworker日志文件\n注意:对WORKERLOGFILE,自定义了WorkerLogFilter\n对于 TASKLOGFILE , 自定义了TaskLogAppender和TaskLogFilter\n\nworker_logback.xml\n\n\n\n \n \n \n \n [%level] %date{yyyy-MM-dd HH:mm:ss.SSS} %logger{96}:[%line] - %msg%n\n \n UTF-8\n \n \n \n \n INFO\n \n \n ${log.base}/{processDefinitionId}/{processInstanceId}/{taskInstanceId}.log\n \n \n [%level] %date{yyyy-MM-dd HH:mm:ss.SSS} %logger{96}:[%line] - %msg%n\n \n UTF-8\n \n true\n \n\n \n ${log.base}/escheduler-worker.log\n \n INFO\n \n\n \n ${log.base}/escheduler-worker.%d{yyyy-MM-dd_HH}.%i.log\n 20\n 200MB\n \n      \n \n \n [%level] %date{yyyy-MM-dd HH:mm:ss.SSS} %logger{96}:[%line] - %msg%n\n \n UTF-8\n \n   \n \n\n\n \n \n \n \n\nescheduler-web\nweb配置文件\n\napplication.properties\n\n# server port\nserver.port=12345\n\n# session config\nserver.session.timeout=7200\n\n\nserver.context-path=/escheduler/\n\n# file size limit for upload\nspring.http.multipart.max-file-size=1024MB\nspring.http.multipart.max-request-size=1024MB\n\n#post content\nserver.max-http-post-size=5000000\nweb日志文件\n\nwebserver_logback.xml\n\n \n \n \n \n \n\n \n\n \n \n \n [%level] %date{yyyy-MM-dd HH:mm:ss.SSS} %logger{96}:[%line] - %msg%n\n \n UTF-8\n \n \n\n \n \n \n INFO\n \n ${log.base}/escheduler-web-server.log\n \n ${log.base}/escheduler-web-server.%d{yyyy-MM-dd_HH}.%i.log\n 20\n 64MB\n \n\n \n \n [%level] %date{yyyy-MM-dd HH:mm:ss.SSS} %logger{96}:[%line] - %msg%n\n \n UTF-8\n \n\n \n\n \n \n \n \n启动停止命令\n\n启停Master\n\nsh ./bin/arklifter-daemon.sh start master-server\nsh ./bin/arklifter-daemon.sh stop master-server\n\n启停Worker\n\nsh ./bin/arklifter-daemon.sh start worker-server\nsh ./bin/arklifter-daemon.sh stop worker-server\n\n启停Web\n\nsh ./bin/arklifter-daemon.sh start web-server\nsh ./bin/arklifter-daemon.sh stop web-server\n\n启停Loggersh ./bin/arklifter-daemon.sh start logger-server\nsh ./bin/arklifter-daemon.sh stop logger-server\n\n启停Alertsh ./bin/arklifter-daemon.sh start alert-server\nsh ./bin/arklifter-daemon.sh stop alert-server\n\n\n一键启停脚本\n\n部署用户配置\n\n创建部署用户\ntarget/escheduler-{version}-SNAPSHOT/script/init_deploy_user.sh\n\n配置\n因为escheduler worker 都是以 sudo -u {linux-user} 方式来执行作业,所以部署用户需要有 sudo 权限,而且是免密的\n\n\n\n\n vi /etc/sudoers\n\n # 部署用户是 escheduler 账号\n escheduler ALL=(ALL) NOPASSWD: NOPASSWD: ALL\n\n # 并且需要注释掉 Default requiretty 一行\n #Default requiretty\n\n初始化 hdfs\n\n​ target/escheduler-{version}-SNAPSHOT/script/init_hdfs.sh\n\n安装配置文件 install_config\n\n # 项目所在目录\n BASE_PATH=/opt/soft/program\n # 部署的机器\n IPS=ark0,ark1,ark2,ark3,ark4\n\n运行配置文件 run_config\n # master服务所在机器,>=1个\n MASTERS=ark0,ark1\n # worker服务所在机器,>=1个\n WORKERS=ark2,ark3,ark4\n # alert服务所在机器,1个\n ALERTS=ark3\n # web服务所在机器,1个\n WEBSERVER=ark1\n\n初始化安装目录\n target/escheduler-{version}-SNAPSHOT/script/init_install_path.sh\n\n将 target/escheduler-{version}-SNAPSHOT 下配置好的conf文件夹和编译好的escheduler-{version}-SNAPSHOT.tar.gz 复制到 主机器的 BASE_PATH 目录下 \n 说明:主机器需要能免密ssh登录到其它机器上\n\n启动所有服务\n\n\nsh ./deploy/start_all.sh\n\n\n关闭所有服务\n\nsh ./deploy/stop_all.sh\n\n监控服务\nmonitor_server.py 脚本是监听,master和worker服务挂掉重启的脚本\n注意:在全部服务都启动之后启动\nnohup python -u monitor_server.py > nohup.out 2>&1 &\n日志查看\n日志统一存放于指定文件夹内\n logs/\n ├── escheduler-alert-server.log\n ├── escheduler-master-server.log\n |—— escheduler-worker-server.log\n |—— escheduler-web-server.log\n |—— escheduler-logger-server.log\n\n"},"pages/foreground-2.html":{"url":"pages/foreground-2.html","title":"安装","keywords":"","body":"frontEnd\n"},"pages/background-2.html":{"url":"pages/background-2.html","title":"后端说明2","keywords":"","body":"trailingEnd\n"}}} \ No newline at end of file diff --git "a/docs/zh_CN/Easyscheduler\346\226\207\346\241\243.pdf" "b/docs/zh_CN/Easyscheduler\346\226\207\346\241\243.pdf" new file mode 100644 index 0000000000000000000000000000000000000000..3e141e9c1a4fc28273560446e1b6a2bd1c7e71be Binary files /dev/null and "b/docs/zh_CN/Easyscheduler\346\226\207\346\241\243.pdf" differ diff --git a/docs/zh_CN/README.md b/docs/zh_CN/README.md new file mode 100644 index 0000000000000000000000000000000000000000..86a6b4664028126b44f4f6b5e5a3afce4559a729 --- /dev/null +++ b/docs/zh_CN/README.md @@ -0,0 +1,71 @@ +### Easy Scheduler + +[![License](https://img.shields.io/badge/license-Apache%202-4EB1BA.svg)](https://www.apache.org/licenses/LICENSE-2.0.html) + +> Easy Scheduler for Big Data + +**设计特点:** 一个分布式易扩展的可视化DAG工作流任务调度系统。致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中`开箱即用`。 +其主要目标如下: + - 以DAG图的方式将Task按照任务的依赖关系关联起来,可实时可视化监控任务的运行状态 + - 支持丰富的任务类型:Shell、MR、Spark、SQL(mysql、postgresql、hive、sparksql),Python,Sub_Process、Procedure等 + - 支持工作流定时调度、依赖调度、手动调度、手动暂停/停止/恢复,同时支持失败重试/告警、从指定节点恢复失败、Kill任务等操作 + - 支持工作流优先级、任务优先级及任务的故障转移及任务超时告警/失败 + - 支持工作流全局参数及节点自定义参数设置 + - 支持资源文件的在线上传/下载,管理等,支持在线文件创建、编辑 + - 支持任务日志在线查看及滚动、在线下载日志等 + - 实现集群HA,通过Zookeeper实现Master集群和Worker集群去中心化 + - 支持对`Master/Worker` cpu load,memory,cpu在线查看 + - 支持工作流运行历史树形/甘特图展示、支持任务状态统计、流程状态统计 + - 支持补数 + - 支持多租户 + - 支持国际化 + - 还有更多等待伙伴们探索 + +### 与同类调度系统的对比 + + +| | EasyScheduler | Azkaban | Airflow | +| :---------------------- | :------------------------------------------------------------ | :------------------------------------------------------------ | :------------------------------------------------------------ | +|
            稳定性 | | | | +| 单点故障 | 去中心化的多Master和多Worker | 是
            单个Web和调度程序组合 | 是
            单一调度程序 | +| HA额外要求 | 不需要(本身就支持HA) | DB | Celery / Dask / Mesos + Load Balancer + DB | +| 过载处理 | 任务队列机制,单个机器上可调度的任务数量可以灵活配置,当任务过多时会缓存在任务队列中,不会造成机器卡死 | 任务太多时会卡死服务器 | 任务太多时会卡死服务器 | +|
            易用性 | | | | +| DAG监控界面 | 任务状态、任务类型、重试次数、任务运行机器、可视化变量等关键信息一目了然 | 只能看到任务状态 | 不能直观区分任务类型 | +| 可视化流程定义 | 是
            所有流程定义操作都是可视化的,通过拖拽任务来绘制DAG,配置数据源及资源。同时对于第三方系统,提供api方式的操作。 | 否
            通过自定义DSL绘制DAG并打包上传 | 否
            通过python代码来绘制DAG,使用不便,特别是对不会写代码的业务人员基本无法使用。 | +| 快速部署 | 一键部署 | 集群化部署复杂 | 集群化部署复杂 | +|
            功能 | | | | +| 是否能暂停和恢复 | 支持暂停,恢复操作 | 否
            需将工作流杀死再运行 | 否
            需将工作流杀死再运行 | +| 是否支持多租户 | 支持
            easyscheduler上的用户可以通过租户和hadoop用户实现多对一或一对一的映射关系,这对大数据作业的调度是非常重要的。 | 否 | 否 | +| 任务类型 | 支持传统的shell任务,同时支持大数据平台任务调度: MR、Spark、SQL(mysql、postgresql、hive、sparksql)、Python、Procedure、Sub_Process | shell、gobblin、hadoopJava、java、hive、pig、spark、hdfsToTeradata、teradataToHdfs | BashOperator、DummyOperator、MySqlOperator、HiveOperator、EmailOperator、HTTPOperator、SqlOperator | +| 契合度 | 支持大数据作业spark,hive,mr的调度,同时由于支持多租户,与大数据业务更加契合 | 由于不支持多租户,在大数据平台业务使用不够灵活 | 由于不支持多租户,在大数据平台业务使用不够灵活 | +|
            扩展性 | | | | +|
            是否支持自定义任务类型 | 是 | 是 | 是 | +| 是否支持集群扩展 | 是
            调度器使用分布式调度,整体的调度能力会随便集群的规模线性增长,Master和Worker支持动态上下线 | 是,但是复杂
            Executor水平扩展 | 是,但是复杂
            Executor水平扩展 | + + +### 系统部分截图 + +![](http://geek.analysys.cn/static/upload/47/2019-03-06/76db3013-8e3b-4d17-b167-2aa1e6a6b0ad.jpeg) + +![](http://geek.analysys.cn/static/upload/47/2019-03-06/08b79a19-4aa0-4a73-a71b-81ad210513fb.jpeg) + +![](http://geek.analysys.cn/static/upload/47/2019-03-06/384dd8a3-4cf8-4e3e-944d-1185ba198f75.jpeg) + +### 文档 +- 部署文档 +后端部署文档 + +前端部署文档 + +[**使用手册**](https://analysys.github.io/EasyScheduler/pages/guide-manual.html?_blank "使用手册") + +更多文档请参考 XXX + +### 帮助 +The fastest way to get response from our developers is to submit issues, or add our wechat : 510570367 + diff --git a/docs/zh_CN/SUMMARY.md b/docs/zh_CN/SUMMARY.md new file mode 100644 index 0000000000000000000000000000000000000000..c6fc6c6bff11f0728534f7ca3fb2c26125e9f190 --- /dev/null +++ b/docs/zh_CN/SUMMARY.md @@ -0,0 +1,21 @@ +# Summary + +* [Easyscheduler简介](README.md) +* 前端文档 + * [环境搭建](frontend-deploy.md#前端项目环境构建及编译) + * [安装及配置](frontend-deploy.md#安装及配置) + * [项目生产环境Nginx配置](frontend-deploy.md#项目生产环境配置) + * [前端项目发布](frontend-deploy.md#前端项目发布) + * [问题](frontend-deploy.md#问题) + * [项目目录结构](frontend-development.md#项目目录结构) + * [系统功能模块](frontend-development.md#系统功能模块) + * [路由和状态管理](frontend-development.md#路由和状态管理) + * [规范](frontend-development.md#规范) + * [接口](frontend-development.md#接口) + * [扩展开发](frontend-development.md#扩展开发) +* 后端文档 + * [系统架构设计](architecture-design.md#调度系统架构设计) + * [部署文档](backend-deploy.md#部署文档) + * [自定义任务插件文档](task-plugin-development.md#任务插件开发) +* [使用说明文档](user-manual.md#使用手册) + diff --git a/docs/zh_CN/_book/Easyscheduler.pdf b/docs/zh_CN/_book/Easyscheduler.pdf new file mode 100644 index 0000000000000000000000000000000000000000..4da9d8ec4e011604cd71220e9c14873355ac2d5d Binary files /dev/null and b/docs/zh_CN/_book/Easyscheduler.pdf differ diff --git a/docs/zh_CN/_book/architecture-design.html b/docs/zh_CN/_book/architecture-design.html new file mode 100644 index 0000000000000000000000000000000000000000..b7a9ce7806a11aba4a0f461b1f06e12b06621da5 --- /dev/null +++ b/docs/zh_CN/_book/architecture-design.html @@ -0,0 +1,749 @@ + + + + + + + 系统架构设计 · 调度系统-EasyScheduler + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            +
            + + + + + + + + +
            + +
            + +
            + + + + + + + + +
            +
            + +
            +
            + +
            + +

            调度系统架构设计

            +

            在对系统架构说明之前,我们先来认识一下调度系统常用的名词

            +

            1.名词解释

            +

            DAG: 全称Directed Acyclic Graph,简称DAG。工作流中的Task任务以有向无环图的形式组装起来,从入度为零的节点进行拓扑遍历,直到无后继节点为止。举例如下图:

            +

            + dag示例 +

            + dag示例 +

            +

            +**流程定义**:通过拖拽任务节点并建立任务节点的关联所形成的可视化**DAG** + +**流程实例**:流程实例是流程定义的实例化,可以通过手动启动或定时调度生成 + +**任务实例**:任务实例是流程定义中任务节点的实例化,标识着具体的任务执行状态 + +**任务类型**: 目前支持有SHELL、SQL、SUB_PROCESS、PROCEDURE、MR、SPARK、PYTHON、DEPENDENT,同时计划支持动态插件扩展,注意:其中子 **SUB_PROCESS** 也是一个单独的流程定义,是可以单独启动执行的 + +**调度方式:** 系统支持基于cron表达式的定时调度和手动调度。命令类型支持:启动工作流、从当前节点开始执行、恢复被容错的工作流、恢复暂停流程、从失败节点开始执行、补数、调度、重跑、暂停、停止、恢复等待线程。其中 **恢复被容错的工作流** 和 **恢复等待线程 **两种命令类型是由调度内部控制使用,外部无法调用 + +**定时调度**:系统采用 **quartz** 分布式调度器,并同时支持cron表达式可视化的生成 + +**依赖**:系统不单单支持 **DAG** 简单的前驱和后继节点之间的依赖,同时还提供**任务依赖**节点,支持**流程间的自定义任务依赖** + +**优先级** :支持流程实例和任务实例的优先级,如果流程实例和任务实例的优先级不设置,则默认是先进先出 + +**邮件告警**:支持 **SQL任务** 查询结果邮件发送,流程实例运行结果邮件告警及容错告警通知 + +**失败策略**:对于并行运行的任务,如果有任务失败,提供两种失败策略处理方式,**继续**是指不管并行运行任务的状态,直到流程失败结束。**结束**是指一旦发现失败任务,则同时Kill掉正在运行的并行任务,流程失败结束 + +**补数**:补历史数据,支持**区间并行和串行**两种补数方式 + +### 2.系统架构 + +#### 2.1 系统架构图 +

            + 系统架构图 +

            + 系统架构图 +

            +

            + +

            2.2 架构说明

            +
              +
            • MasterServer

              +

              MasterServer采用分布式无中心设计理念,MasterServer主要负责 DAG 任务切分、任务提交监控,并同时监听其它MasterServer和WorkerServer的健康状态。 + MasterServer服务启动时向Zookeeper注册临时节点,通过监听Zookeeper临时节点变化来进行容错处理。

              +
              该服务内主要包含:
              +
                +
              • Distributed Quartz分布式调度组件,主要负责定时任务的启停操作,当quartz调起任务后,Master内部会有线程池具体负责处理任务的后续操作

                +
              • +
              • MasterSchedulerThread是一个扫描线程,定时扫描数据库中的 command 表,根据不同的命令类型进行不同的业务操作

                +
              • +
              • MasterExecThread主要是负责DAG任务切分、任务提交监控、各种不同命令类型的逻辑处理

                +
              • +
              • MasterTaskExecThread主要负责任务的持久化

                +
              • +
              +
            • +
            • WorkerServer

              +

              WorkerServer也采用分布式无中心设计理念,WorkerServer主要负责任务的执行和提供日志服务。WorkerServer服务启动时向Zookeeper注册临时节点,并维持心跳。

              +
              该服务包含:
              +
                +
              • FetchTaskThread主要负责不断从Task Queue中领取任务,并根据不同任务类型调用TaskScheduleThread对应执行器。

                +
              • +
              • LoggerServer是一个RPC服务,提供日志分片查看、刷新和下载等功能

                +
              • +
              +
            • +
            • ZooKeeper

              +

              ZooKeeper服务,系统中的MasterServer和WorkerServer节点都通过ZooKeeper来进行集群管理和容错。另外系统还基于ZooKeeper进行事件监听和分布式锁。 + 我们也曾经基于Redis实现过队列,不过我们希望EasyScheduler依赖到的组件尽量地少,所以最后还是去掉了Redis实现。

              +
            • +
            • Task Queue

              +

              提供任务队列的操作,目前队列也是基于Zookeeper来实现。由于队列中存的信息较少,不必担心队列里数据过多的情况,实际上我们压测过百万级数据存队列,对系统稳定性和性能没影响。

              +
            • +
            • Alert

              +

              提供告警相关接口,接口主要包括告警两种类型的告警数据的存储、查询和通知功能。其中通知功能又有邮件通知SNMP(暂未实现)两种。

              +
            • +
            • API

              +

              API接口层,主要负责处理前端UI层的请求。该服务统一提供RESTful api向外部提供请求服务。 + 接口包括工作流的创建、定义、查询、修改、发布、下线、手工启动、停止、暂停、恢复、从该节点开始执行等等。

              +
            • +
            • UI

              +

              系统的前端页面,提供系统的各种可视化操作界面,详见使用手册部分。

              +
            • +
            +

            2.3 架构设计思想

            +
            一、去中心化vs中心化
            +
            中心化思想
            +

            中心化的设计理念比较简单,分布式集群中的节点按照角色分工,大体上分为两种角色:

            +

            + master-slave角色 +

            +- Master的角色主要负责任务分发并监督Slave的健康状态,可以动态的将任务均衡到Slave上,以致Slave节点不至于“忙死”或”闲死”的状态。 +- Worker的角色主要负责任务的执行工作并维护和Master的心跳,以便Master可以分配任务给Slave。 + + + +中心化思想设计存在的问题: + +- 一旦Master出现了问题,则群龙无首,整个集群就会崩溃。为了解决这个问题,大多数Master/Slave架构模式都采用了主备Master的设计方案,可以是热备或者冷备,也可以是自动切换或手动切换,而且越来越多的新系统都开始具备自动选举切换Master的能力,以提升系统的可用性。 +- 另外一个问题是如果Scheduler在Master上,虽然可以支持一个DAG中不同的任务运行在不同的机器上,但是会产生Master的过负载。如果Scheduler在Slave上,则一个DAG中所有的任务都只能在某一台机器上进行作业提交,则并行任务比较多的时候,Slave的压力可能会比较大。 + + + +###### 去中心化 +

            +

            +- 在去中心化设计里,通常没有Master/Slave的概念,所有的角色都是一样的,地位是平等的,全球互联网就是一个典型的去中心化的分布式系统,联网的任意节点设备down机,都只会影响很小范围的功能。 +- 去中心化设计的核心设计在于整个分布式系统中不存在一个区别于其他节点的”管理者”,因此不存在单点故障问题。但由于不存在” 管理者”节点所以每个节点都需要跟其他节点通信才得到必须要的机器信息,而分布式系统通信的不可靠行,则大大增加了上述功能的实现难度。 +- 实际上,真正去中心化的分布式系统并不多见。反而动态中心化分布式系统正在不断涌出。在这种架构下,集群中的管理者是被动态选择出来的,而不是预置的,并且集群在发生故障的时候,集群的节点会自发的举行"会议"来选举新的"管理者"去主持工作。最典型的案例就是ZooKeeper及Go语言实现的Etcd。 + + + +- EasyScheduler的去中心化是Master/Worker注册到Zookeeper中,实现Master集群和Worker集群无中心,并使用Zookeeper分布式锁来选举其中的一台Master或Worker为“管理者”来执行任务。 + +##### 二、分布式锁实践 + +EasyScheduler使用ZooKeeper分布式锁来实现同一时刻只有一台Master执行Scheduler,或者只有一台Worker执行任务的提交。 +1. 获取分布式锁的核心流程算法如下 +

            + 获取分布式锁流程 +

            + +
              +
            1. EasyScheduler中Scheduler线程分布式锁实现流程图:

              +获取分布式锁流程 +

              + + +
            2. +
            +
            三、线程不足循环等待问题
            +
              +
            • 如果一个DAG中没有子流程,则如果Command中的数据条数大于线程池设置的阈值,则直接流程等待或失败。
            • +
            • 如果一个大的DAG中嵌套了很多子流程,如下图则会产生“死等”状态:

              +

              +线程不足循环等待问题 +

              +上图中MainFlowThread等待SubFlowThread1结束,SubFlowThread1等待SubFlowThread2结束, SubFlowThread2等待SubFlowThread3结束,而SubFlowThread3等待线程池有新线程,则整个DAG流程不能结束,从而其中的线程也不能释放。这样就形成的子父流程循环等待的状态。此时除非启动新的Master来增加线程来打破这样的”僵局”,否则调度集群将不能再使用。

              +
            • +
            +

            对于启动新Master来打破僵局,似乎有点差强人意,于是我们提出了以下三种方案来降低这种风险:

            +
              +
            1. 计算所有Master的线程总和,然后对每一个DAG需要计算其需要的线程数,也就是在DAG流程执行之前做预计算。因为是多Master线程池,所以总线程数不太可能实时获取。
            2. +
            3. 对单Master线程池进行判断,如果线程池已经满了,则让线程直接失败。
            4. +
            5. 增加一种资源不足的Command类型,如果线程池不足,则将主流程挂起。这样线程池就有了新的线程,可以让资源不足挂起的流程重新唤醒执行。
            6. +
            +

            注意:Master Scheduler线程在获取Command的时候是FIFO的方式执行的。

            +

            于是我们选择了第三种方式来解决线程不足的问题。

            +
            四、容错设计
            +

            容错分为服务宕机容错和任务重试,服务宕机容错又分为Master容错和Worker容错两种情况

            +
            1. 宕机容错
            +

            服务容错设计依赖于ZooKeeper的Watcher机制,实现原理如图:

            +

            + EasyScheduler容错设计 +

            +其中Master监控其他Master和Worker的目录,如果监听到remove事件,则会根据具体的业务逻辑进行流程实例容错或者任务实例容错。 + + + +- Master容错流程图: + +

            + Master容错流程图 +

            +ZooKeeper Master容错完成之后则重新由EasyScheduler中Scheduler线程调度,遍历 DAG 找到”正在运行”和“提交成功”的任务,对”正在运行”的任务监控其任务实例的状态,对”提交成功”的任务需要判断Task Queue中是否已经存在,如果存在则同样监控任务实例的状态,如果不存在则重新提交任务实例。 + + + +- Worker容错流程图: + +

            + Worker容错流程图 +

            +Master Scheduler线程一旦发现任务实例为” 需要容错”状态,则接管任务并进行重新提交。 + +注意:由于” 网络抖动”可能会使得节点短时间内失去和ZooKeeper的心跳,从而发生节点的remove事件。对于这种情况,我们使用最简单的方式,那就是节点一旦和ZooKeeper发生超时连接,则直接将Master或Worker服务停掉。 + +###### 2.任务失败重试 + +这里首先要区分任务失败重试、流程失败恢复、流程失败重跑的概念: + +- 任务失败重试是任务级别的,是调度系统自动进行的,比如一个Shell任务设置重试次数为3次,那么在Shell任务运行失败后会自己再最多尝试运行3次 +- 流程失败恢复是流程级别的,是手动进行的,恢复是从只能**从失败的节点开始执行**或**从当前节点开始执行** +- 流程失败重跑也是流程级别的,是手动进行的,重跑是从开始节点进行 + + + +接下来说正题,我们将工作流中的任务节点分了两种类型。 + +- 一种是业务节点,这种节点都对应一个实际的脚本或者处理语句,比如Shell节点,MR节点、Spark节点、依赖节点等。 + +- 还有一种是逻辑节点,这种节点不做实际的脚本或语句处理,只是整个流程流转的逻辑处理,比如子流程节等。 + +每一个**业务节点**都可以配置失败重试的次数,当该任务节点失败,会自动重试,直到成功或者超过配置的重试次数。**逻辑节点**不支持失败重试。但是逻辑节点里的任务支持重试。 + +如果工作流中有任务失败达到最大重试次数,工作流就会失败停止,失败的工作流可以手动进行重跑操作或者流程恢复操作 + + + +##### 五、任务优先级设计 +在早期调度设计中,如果没有优先级设计,采用公平调度设计的话,会遇到先行提交的任务可能会和后继提交的任务同时完成的情况,而不能做到设置流程或者任务的优先级,因此我们对此进行了重新设计,目前我们设计如下: + +- 按照**不同流程实例优先级**优先于**同一个流程实例优先级**优先于**同一流程内任务优先级**优先于**同一流程内任务**提交顺序依次从高到低进行任务处理。 + - 具体实现是根据任务实例的json解析优先级,然后把**流程实例优先级_流程实例id_任务优先级_任务id**信息保存在ZooKeeper任务队列中,当从任务队列获取的时候,通过字符串比较即可得出最需要优先执行的任务 + + - 其中流程定义的优先级是考虑到有些流程需要先于其他流程进行处理,这个可以在流程启动或者定时启动时配置,共有5级,依次为HIGHEST、HIGH、MEDIUM、LOW、LOWEST。如下图 +

            + 流程优先级配置 +

            + +
                - 任务的优先级也分为5级,依次为HIGHEST、HIGH、MEDIUM、LOW、LOWEST。如下图
            +        <p align="center">
            +           <img src="https://analysys.github.io/EasyScheduler/zh_CN/images/task_priority.png" alt="任务优先级配置"  width="35%" />
            +         </p>
            +
            六、Logback和gRPC实现日志访问
            +
              +
            • 由于Web(UI)和Worker不一定在同一台机器上,所以查看日志不能像查询本地文件那样。有两种方案:

              +
                +
              • 将日志放到ES搜索引擎上
              • +
              • 通过gRPC通信获取远程日志信息
              • +
              +
            • +
            • 介于考虑到尽可能的EasyScheduler的轻量级性,所以选择了gRPC实现远程访问日志信息。

              +

              +grpc远程访问 +

              + + +
            • +
            +
              +
            • 我们使用自定义Logback的FileAppender和Filter功能,实现每个任务实例生成一个日志文件。
            • +
            • FileAppender主要实现如下:

              +
              /**
              +* task log appender
              +*/
              +public class TaskLogAppender extends FileAppender<ILoggingEvent {
              +
              +   ...
              +
              +  @Override
              +  protected void append(ILoggingEvent event) {
              +
              +      if (currentlyActiveFile == null){
              +          currentlyActiveFile = getFile();
              +      }
              +      String activeFile = currentlyActiveFile;
              +      // thread name: taskThreadName-processDefineId_processInstanceId_taskInstanceId
              +      String threadName = event.getThreadName();
              +      String[] threadNameArr = threadName.split("-");
              +      // logId = processDefineId_processInstanceId_taskInstanceId
              +      String logId = threadNameArr[1];
              +      ...
              +      super.subAppend(event);
              +  }
              +}
              +
              +
            • +
            +

            以/流程定义id/流程实例id/任务实例id.log的形式生成日志

            +
              +
            • 过滤匹配以TaskLogInfo开始的线程名称:

              +
            • +
            • TaskLogFilter实现如下:

              +
              /**
              +*  task log filter
              +*/
              +public class TaskLogFilter extends Filter<ILoggingEvent {
              +
              +  @Override
              +  public FilterReply decide(ILoggingEvent event) {
              +      if (event.getThreadName().startsWith("TaskLogInfo-")){
              +          return FilterReply.ACCEPT;
              +      }
              +      return FilterReply.DENY;
              +  }
              +}
              +
              +
            • +
            +

            总结

            +

            本文从调度出发,初步介绍了大数据分布式工作流调度系统--EasyScheduler的架构原理及实现思路。后续会补充

            + + +
            + +
            +
            +
            + +

            results matching ""

            +
              + +
              +
              + +

              No results matching ""

              + +
              +
              +
              + +
              +
              + +
              + + + + + + + + + + +
              + + +
              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/zh_CN/_book/backend-deploy.html b/docs/zh_CN/_book/backend-deploy.html new file mode 100644 index 0000000000000000000000000000000000000000..06958bc8114f0303ee130e44b655717c87d1c2df --- /dev/null +++ b/docs/zh_CN/_book/backend-deploy.html @@ -0,0 +1,886 @@ + + + + + + + 部署文档 · 调度系统-EasyScheduler + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
              +
              + + + + + + + + +
              + +
              + +
              + + + + + + + + +
              +
              + +
              +
              + +
              + +

              部署文档

              +

              基础软件安装

              +
                +
              • mysql (5.5+) : 必装
              • +
              • zookeeper(3.4.6) :必装
              • +
              • hadoop(2.7.3) :选装,资源上传,MR任务提交需要安装
              • +
              • hive(1.2.1) : 选装,hive任务提交需要安装
              • +
              • spark(1.x,2.x) : 选装,spark任务提交需要安装
              • +
              • postgresql(8.2.15+) : 选装,postgresql sql任务和postgresql 存储过程需要安装
              • +
              +

              项目编译

              +
                +
              • 执行编译命令:
              • +
              +
               mvn -U clean package assembly:assembly -Dmaven.test.skip=true
              +
                +
              • 查看目录
              • +
              +

              正常编译完后,会在当前目录生成 target/escheduler-{version}/

              +
                  bin
              +    conf
              +    lib
              +    script
              +    sql
              +    install.sh
              +
                +
              • 说明
              • +
              +
              bin : 基础服务启动脚本
              +conf : 项目配置文件
              +lib : 项目依赖jar包,包括各个模块jar和第三方jar
              +script : 集群启动、停止和服务监控启停脚本
              +sql : 项目依赖sql文件
              +install.sh : 一键部署脚本
              +

              数据库初始化

              +
                +
              • 创建db和账号
              • +
              +
              mysql -h {host} -u {user} -p{password}
              +mysql> CREATE DATABASE escheduler DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
              +mysql> GRANT ALL PRIVILEGES ON escheduler.* TO '{user}'@'%' IDENTIFIED BY '{password}';
              +mysql> GRANT ALL PRIVILEGES ON escheduler.* TO '{user}'@'localhost' IDENTIFIED BY '{password}';
              +mysql> flush privileges;
              +
                +
              • 创建表
              • +
              +
              说明:在 target/escheduler-{version}/sql/escheduler.sql和quartz.sql
              +
              +mysql -h {host} -u {user} -p{password} -D {db} < escheduler.sql
              +
              +mysql -h {host} -u {user} -p{password} -D {db} < quartz.sql
              +

              创建部署用户

              +

              因为escheduler worker 都是以 sudo -u {linux-user} 方式来执行作业,所以部署用户需要有 sudo 权限,而且是免密的。

              +
              vi /etc/sudoers
              +
              +# 部署用户是 escheduler 账号
              +escheduler  ALL=(ALL)       NOPASSWD: NOPASSWD: ALL
              +
              +# 并且需要注释掉 Default requiretty 一行
              +#Default requiretty
              +
              +

              配置文件说明

              +
              说明:配置文件位于 target/escheduler-{version}/conf 下面
              +

              escheduler-alert

              +

              配置邮件告警信息

              +
                +
              • alert.properties
              • +
              +
              #alert type is EMAIL/SMS
              +alert.type=EMAIL
              +
              +# mail server configuration
              +mail.protocol=SMTP
              +mail.server.host=smtp.exmail.qq.com
              +mail.server.port=25
              +mail.sender=xxxxxxx
              +mail.passwd=xxxxxxx
              +
              +# xls file path,need create if not exist
              +xls.file.path=/opt/xls
              +

              escheduler-common

              +

              通用配置文件配置,队列选择及地址配置,通用文件目录配置

              +
                +
              • common/common.properties
              • +
              +
              #task queue implementation, default "zookeeper"
              +escheduler.queue.impl=zookeeper
              +
              +# user data directory path, self configuration, please make sure the directory exists and have read write permissions
              +data.basedir.path=/tmp/escheduler
              +
              +# directory path for user data download. self configuration, please make sure the directory exists and have read write permissions
              +data.download.basedir.path=/tmp/escheduler/download
              +
              +# process execute directory. self configuration, please make sure the directory exists and have read write permissions
              +process.exec.basepath=/tmp/escheduler/exec
              +
              +# data base dir, resource file will store to this hadoop hdfs path, self configuration, please make sure the directory exists on hdfs and have read write permissions。"/escheduler" is recommended
              +data.store2hdfs.basepath=/escheduler
              +
              +# whether hdfs starts
              +hdfs.startup.state=true
              +
              +# system env path. self configuration, please make sure the directory and file exists and have read write execute permissions
              +escheduler.env.path=/opt/.escheduler_env.sh
              +escheduler.env.py=/opt/escheduler_env.py
              +
              +#resource.view.suffixs
              +resource.view.suffixs=txt,log,sh,conf,cfg,py,java,sql,hql,xml
              +
              +# is development state? default "false"
              +development.state=false
              +

              SHELL任务 环境变量配置

              +
              说明:配置文件位于 target/escheduler-{version}/conf/env 下面
              +

              .escheduler_env.sh

              +
              export HADOOP_HOME=/opt/soft/hadoop
              +export HADOOP_CONF_DIR=/opt/soft/hadoop/etc/hadoop
              +export SPARK_HOME1=/opt/soft/spark1
              +export SPARK_HOME2=/opt/soft/spark2
              +export PYTHON_HOME=/opt/soft/python
              +export JAVA_HOME=/opt/soft/java
              +export HIVE_HOME=/opt/soft/hive
              +
              +export PATH=$HADOOP_HOME/bin:$SPARK_HOME1/bin:$SPARK_HOME2/bin:$PYTHON_HOME/bin:$JAVA_HOME/bin:$HIVE_HOME/bin:$PATH
              +

              +

              Python任务 环境变量配置

              +
              说明:配置文件位于 target/escheduler-{version}/conf/env 下面
              +

              escheduler_env.py

              +
              import os
              +
              +HADOOP_HOME="/opt/soft/hadoop"
              +SPARK_HOME1="/opt/soft/spark1"
              +SPARK_HOME2="/opt/soft/spark2"
              +PYTHON_HOME="/opt/soft/python"
              +JAVA_HOME="/opt/soft/java"
              +HIVE_HOME="/opt/soft/hive"
              +PATH=os.environ['PATH']
              +PATH="%s/bin:%s/bin:%s/bin:%s/bin:%s/bin:%s/bin:%s"%(HIVE_HOME,HADOOP_HOME,SPARK_HOME1,SPARK_HOME2,JAVA_HOME,PYTHON_HOME,PATH)
              +
              +os.putenv('PATH','%s'%PATH)
              +

              hadoop 配置文件

              +
                +
              • common/hadoop/hadoop.properties
              • +
              +
              # ha or single namenode,If namenode ha needs to copy core-site.xml and hdfs-site.xml to the conf directory
              +fs.defaultFS=hdfs://mycluster:8020
              +
              +#resourcemanager ha note this need ips , this empty if single
              +yarn.resourcemanager.ha.rm.ids=192.168.xx.xx,192.168.xx.xx
              +
              +# If it is a single resourcemanager, you only need to configure one host name. If it is resourcemanager HA, the default configuration is fine
              +yarn.application.status.address=http://ark1:8088/ws/v1/cluster/apps/%s
              +

              定时器配置文件

              +
                +
              • quartz.properties
              • +
              +
              #============================================================================
              +# Configure Main Scheduler Properties
              +#============================================================================
              +org.quartz.scheduler.instanceName = EasyScheduler
              +org.quartz.scheduler.instanceId = AUTO
              +org.quartz.scheduler.makeSchedulerThreadDaemon = true
              +org.quartz.jobStore.useProperties = false
              +
              +#============================================================================
              +# Configure ThreadPool
              +#============================================================================
              +
              +org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
              +org.quartz.threadPool.makeThreadsDaemons = true
              +org.quartz.threadPool.threadCount = 25
              +org.quartz.threadPool.threadPriority = 5
              +
              +#============================================================================
              +# Configure JobStore
              +#============================================================================
              +
              +org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX
              +org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.StdJDBCDelegate
              +org.quartz.jobStore.tablePrefix = QRTZ_
              +org.quartz.jobStore.isClustered = true
              +org.quartz.jobStore.misfireThreshold = 60000
              +org.quartz.jobStore.clusterCheckinInterval = 5000
              +org.quartz.jobStore.dataSource = myDs
              +
              +#============================================================================
              +# Configure Datasources  
              +#============================================================================
              +
              +org.quartz.dataSource.myDs.driver = com.mysql.jdbc.Driver
              +org.quartz.dataSource.myDs.URL = jdbc:mysql://192.168.xx.xx:3306/escheduler?characterEncoding=utf8&useSSL=false
              +org.quartz.dataSource.myDs.user = xx
              +org.quartz.dataSource.myDs.password = xx
              +org.quartz.dataSource.myDs.maxConnections = 10
              +org.quartz.dataSource.myDs.validationQuery = select 1
              +

              zookeeper 配置文件

              +
                +
              • zookeeper.properties
              • +
              +
              #zookeeper cluster
              +zookeeper.quorum=192.168.xx.xx:2181,192.168.xx.xx:2181,192.168.xx.xx:2181
              +
              +#escheduler root directory
              +zookeeper.escheduler.root=/escheduler
              +
              +#zookeeper server dirctory
              +zookeeper.escheduler.dead.servers=/escheduler/dead-servers
              +zookeeper.escheduler.masters=/escheduler/masters
              +zookeeper.escheduler.workers=/escheduler/workers
              +
              +#zookeeper lock dirctory
              +zookeeper.escheduler.lock.masters=/escheduler/lock/masters
              +zookeeper.escheduler.lock.workers=/escheduler/lock/workers
              +
              +#escheduler failover directory
              +zookeeper.escheduler.lock.masters.failover=/escheduler/lock/failover/masters
              +zookeeper.escheduler.lock.workers.failover=/escheduler/lock/failover/workers
              +
              +#escheduler failover directory
              +zookeeper.session.timeout=300
              +zookeeper.connection.timeout=300
              +zookeeper.retry.sleep=1000
              +zookeeper.retry.maxtime=5
              +

              escheduler-dao

              +

              dao数据源配置

              +
                +
              • dao/data_source.properties
              • +
              +
              # base spring data source configuration
              +spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
              +spring.datasource.driver-class-name=com.mysql.jdbc.Driver
              +spring.datasource.url=jdbc:mysql://192.168.xx.xx:3306/escheduler?characterEncoding=UTF-8
              +spring.datasource.username=xx
              +spring.datasource.password=xx
              +
              +# connection configuration
              +spring.datasource.initialSize=5
              +# min connection number
              +spring.datasource.minIdle=5
              +# max connection number
              +spring.datasource.maxActive=50
              +
              +# max wait time for get a connection in milliseconds. if configuring maxWait, fair locks are enabled by default and concurrency efficiency decreases.
              +# If necessary, unfair locks can be used by configuring the useUnfairLock attribute to true.
              +spring.datasource.maxWait=60000
              +
              +# milliseconds for check to close free connections
              +spring.datasource.timeBetweenEvictionRunsMillis=60000
              +
              +# the Destroy thread detects the connection interval and closes the physical connection in milliseconds if the connection idle time is greater than or equal to minEvictableIdleTimeMillis.
              +spring.datasource.timeBetweenConnectErrorMillis=60000
              +
              +# the longest time a connection remains idle without being evicted, in milliseconds
              +spring.datasource.minEvictableIdleTimeMillis=300000
              +
              +#the SQL used to check whether the connection is valid requires a query statement. If validation Query is null, testOnBorrow, testOnReturn, and testWhileIdle will not work.
              +spring.datasource.validationQuery=SELECT 1
              +#check whether the connection is valid for timeout, in seconds
              +spring.datasource.validationQueryTimeout=3
              +
              +# when applying for a connection, if it is detected that the connection is idle longer than time Between Eviction Runs Millis,
              +# validation Query is performed to check whether the connection is valid
              +spring.datasource.testWhileIdle=true
              +
              +#execute validation to check if the connection is valid when applying for a connection
              +spring.datasource.testOnBorrow=true
              +#execute validation to check if the connection is valid when the connection is returned
              +spring.datasource.testOnReturn=false
              +spring.datasource.defaultAutoCommit=true
              +spring.datasource.keepAlive=true
              +
              +# open PSCache, specify count PSCache for every connection
              +spring.datasource.poolPreparedStatements=true
              +spring.datasource.maxPoolPreparedStatementPerConnectionSize=20
              +

              escheduler-server

              +

              master配置文件

              +
                +
              • master.properties
              • +
              +
              # master execute thread num
              +master.exec.threads=100
              +
              +# master execute task number in parallel
              +master.exec.task.number=20
              +
              +# master heartbeat interval
              +master.heartbeat.interval=10
              +
              +# master commit task retry times
              +master.task.commit.retryTimes=5
              +
              +# master commit task interval
              +master.task.commit.interval=100
              +
              +
              +# only less than cpu avg load, master server can work. default value : the number of cpu cores * 2
              +master.max.cpuload.avg=10
              +
              +# only larger than reserved memory, master server can work. default value : physical memory * 1/10, unit is G.
              +master.reserved.memory=1
              +

              worker配置文件

              +
                +
              • worker.properties
              • +
              +
              # worker execute thread num
              +worker.exec.threads=100
              +
              +# worker heartbeat interval
              +worker.heartbeat.interval=10
              +
              +# submit the number of tasks at a time
              +worker.fetch.task.num = 10
              +
              +
              +# only less than cpu avg load, worker server can work. default value : the number of cpu cores * 2
              +worker.max.cpuload.avg=10
              +
              +# only larger than reserved memory, worker server can work. default value : physical memory * 1/6, unit is G.
              +worker.reserved.memory=1
              +

              escheduler-api

              +

              web配置文件

              +
                +
              • application.properties
              • +
              +
              # server port
              +server.port=12345
              +
              +# session config
              +server.session.timeout=7200
              +
              +
              +server.context-path=/escheduler/
              +
              +# file size limit for upload
              +spring.http.multipart.max-file-size=1024MB
              +spring.http.multipart.max-request-size=1024MB
              +
              +# post content
              +server.max-http-post-size=5000000
              +

              伪分布式部署

              +

              1,创建部署用户

              +

              ​ 如上 创建部署用户

              +

              2,根据实际需求来创建HDFS根路径

              +

              ​ 根据 common/common.propertieshdfs.startup.state 的配置来判断是否启动HDFS,如果启动,则需要创建HDFS根路径,并将 owner 修改为部署用户,否则忽略此步骤

              +

              3,项目编译

              +

              ​ 如上进行 项目编译

              +

              4,修改配置文件

              +

              ​ 根据 配置文件说明 修改配置文件和 环境变量 文件

              +

              5,创建目录并将环境变量文件复制到指定目录

              +
                +
              • 创建 common/common.properties 下的data.basedir.path、data.download.basedir.path和process.exec.basepath路径

                +
              • +
              • .escheduler_env.shescheduler_env.py 两个环境变量文件复制到 common/common.properties配置的escheduler.env.pathescheduler.env.py 的目录下,并将 owner 修改为部署用户

                +
              • +
              +

              6,启停服务

              +
                +
              • 启停Master
              • +
              +
              sh ./bin/arklifter-daemon.sh start master-server
              +sh ./bin/arklifter-daemon.sh stop master-server
              +
              +
                +
              • 启停Worker
              • +
              +
              sh ./bin/arklifter-daemon.sh start worker-server
              +sh ./bin/arklifter-daemon.sh stop worker-server
              +
                +
              • 启停Api
              • +
              +
              sh ./bin/arklifter-daemon.sh start api-server
              +sh ./bin/arklifter-daemon.sh stop api-server
              +
                +
              • 启停Logger
              • +
              +
              sh ./bin/arklifter-daemon.sh start logger-server
              +sh ./bin/arklifter-daemon.sh stop logger-server
              +
                +
              • 启停Alert
              • +
              +
              sh ./bin/arklifter-daemon.sh start alert-server
              +sh ./bin/arklifter-daemon.sh stop alert-server
              +

              分布式部署

              +

              1,创建部署用户

              + +

              2,根据实际需求来创建HDFS根路径

              +

              ​ 根据 common/common.propertieshdfs.startup.state 的配置来判断是否启动HDFS,如果启动,则需要创建HDFS根路径,并将 owner 修改为部署用户,否则忽略此步骤

              +

              3,项目编译

              +

              ​ 如上进行 项目编译

              +

              4,将环境变量文件复制到指定目录

              +

              ​ 将.escheduler_env.shescheduler_env.py 两个环境变量文件复制到 common/common.properties配置的escheduler.env.pathescheduler.env.py 的目录下,并将 owner 修改为部署用户

              +

              5,修改 install.sh

              +

              ​ 修改 install.sh 中变量的值,替换成自身业务所需的值

              +

              6,一键部署

              +
                +
              • 安装 pip install kazoo

                +
              • +
              • 使用部署用户 sh install.sh 一键部署

                +
              • +
              +

              服务监控

              +

              monitor_server.py 脚本是监听,master和worker服务挂掉重启的脚本

              +

              注意:在全部服务都启动之后启动

              +

              nohup python -u monitor_server.py > nohup.out 2>&1 &

              +

              日志查看

              +

              日志统一存放于指定文件夹内

              +
               logs/
              +    ├── escheduler-alert-server.log
              +    ├── escheduler-master-server.log
              +    |—— escheduler-worker-server.log
              +    |—— escheduler-api-server.log
              +    |—— escheduler-logger-server.log
              +
              + + +
              + +
              +
              +
              + +

              results matching ""

              +
                + +
                +
                + +

                No results matching ""

                + +
                +
                +
                + +
                +
                + +
                + + + + + + + + + + + + + + +
                + + +
                + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/pages/deploy-foreground.html b/docs/zh_CN/_book/frontend-deploy.html similarity index 54% rename from docs/pages/deploy-foreground.html rename to docs/zh_CN/_book/frontend-deploy.html index 9d2762538fa43d4e5a6227543eab269b5ff51c48..2c95d18b255f0391c317d4f1b20f2ef3a2886983 100644 --- a/docs/pages/deploy-foreground.html +++ b/docs/zh_CN/_book/frontend-deploy.html @@ -4,7 +4,7 @@ - 前端部署 · 调度系统-EasyScheduler + 环境搭建 · 调度系统-EasyScheduler @@ -12,28 +12,28 @@ - + - + - + - + - + - + @@ -42,7 +42,7 @@ - + @@ -53,11 +53,11 @@ - - + + - + @@ -87,9 +87,9 @@ -
              • +
              • - + Easyscheduler简介 @@ -105,7 +105,7 @@ - 导读指南 + 前端文档 @@ -114,91 +114,12 @@
                  -
                • +
                • - + - 系统架构分析 - - - - - - - -
                • - -
                • - - - - - 使用手册 - - - - - - - -
                • -
                • - 项目部署文档 + 后端文档 @@ -392,215 +276,12 @@ - -
                • - -
                • +
                • - + - 前端开发文档 - - - - - -
                    - - -
                  • - - - - - 安装 + 自定义任务插件文档 @@ -720,26 +320,12 @@
                  • -
                  • +
                  • - 后端开发文档 - - - - - - - -
                  • - -
                  • @@ -782,7 +363,7 @@

                    - 前端部署 + 环境搭建

                    @@ -1029,7 +610,7 @@ client_max_body_size 1024m - + @@ -1040,49 +621,45 @@ client_max_body_size 1024m - - - - - - + + - + - + - + - + - + - + - + - + diff --git a/docs/zh_CN/_book/frontend-development.html b/docs/zh_CN/_book/frontend-development.html new file mode 100644 index 0000000000000000000000000000000000000000..2a108e911824dde0bfa926298eb7b15f38f6fb82 --- /dev/null +++ b/docs/zh_CN/_book/frontend-development.html @@ -0,0 +1,852 @@ + + + + + + + 项目目录结构 · 调度系统-EasyScheduler + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    +
                    + + + + + + + + +
                    + +
                    + +
                    + + + + + + + + +
                    +
                    + +
                    +
                    + +
                    + +

                    前端开发文档

                    +

                    技术选型

                    +
                    Vue mvvm框架
                    +
                    +Es6 ECMAScript 6.0
                    +
                    +Ans-ui Analysys-ui
                    +
                    +D3 可视化库图表库
                    +
                    +Jsplumb 连线插件库
                    +
                    +Lodash 高性能的 JavaScript 实用工具库
                    +

                    项目目录结构

                    +

                    build 打包及开发环境项目的一些webpack配置

                    +

                    node_modules 开发环境node依赖包

                    +

                    src 项目所需文件

                    +

                    src => combo 项目第三方资源本地化 npm run combo具体查看build/combo.js

                    +

                    src => font 字体图标库可访问 https://www.iconfont.cn 进行添加 注意:字体库用的自己的 二次开发需要重新引入自己的库 src/sass/common/_font.scss

                    +

                    src => images 公共图片存放

                    +

                    src => js js/vue

                    +

                    src => lib 公司内部组件(公司组件库开源后可删掉)

                    +

                    src => sass sass文件 一个页面对应一个sass文件

                    +

                    src => view 页面文件 一个页面对应一个html文件

                    +
                    > 项目采用vue单页面应用(SPA)开发
                    +- 所有页面入口文件在 `src/js/conf/${对应页面文件名 => home}` 的 `index.js` 入口文件
                    +- 对应的sass文件则在 `src/sass/conf/${对应页面文件名 => home}/index.scss`
                    +- 对应的html文件则在 `src/view/${对应页面文件名 => home}/index.html`
                    +

                    公共模块及util src/js/module

                    +

                    components => 内部项目公共组件

                    +

                    download => 下载组件

                    +

                    echarts => 图表组件

                    +

                    filter => 过滤器和vue管道

                    +

                    i18n => 国际化

                    +

                    io => io请求封装 基于axios

                    +

                    mixin => vue mixin 公共部分 用于disabled操作

                    +

                    permissions => 权限操作

                    +

                    util => 工具

                    +

                    系统功能模块

                    +

                    首页 => http://localhost:8888/#/home

                    +

                    项目管理 => http://localhost:8888/#/projects/list

                    +
                    | 项目首页
                    +| 工作流
                    +  - 工作流定义
                    +  - 工作流实例
                    +  - 任务实例
                    +

                    资源管理 => http://localhost:8888/#/resource/file

                    +
                    | 文件管理
                    +| UDF管理
                    +  - 资源管理
                    +  - 函数管理
                    +

                    数据源管理 => http://localhost:8888/#/datasource/list

                    +

                    安全中心 => http://localhost:8888/#/security/tenant

                    +
                    | 租户管理
                    +| 用户管理
                    +| 告警组管理
                    +  - master
                    +  - worker
                    +

                    用户中心 => http://localhost:8888/#/user/account

                    +

                    路由和状态管理

                    +

                    项目 src/js/conf/home 下分为

                    +

                    pages => 路由指向页面目录

                    +
                     路由地址对应的页面文件
                    +

                    router => 路由管理

                    +
                    vue的路由器,在每个页面的入口文件index.js 都会注册进来 具体操作:https://router.vuejs.org/zh/
                    +

                    store => 状态管理

                    +
                    每个路由对应的页面都有一个状态管理的文件 分为:
                    +
                    +actions => mapActions => 详情:https://vuex.vuejs.org/zh/guide/actions.html
                    +
                    +getters => mapGetters => 详情:https://vuex.vuejs.org/zh/guide/getters.html
                    +
                    +index => 入口
                    +
                    +mutations => mapMutations => 详情:https://vuex.vuejs.org/zh/guide/mutations.html
                    +
                    +state => mapState => 详情:https://vuex.vuejs.org/zh/guide/state.html
                    +
                    +具体操作:https://vuex.vuejs.org/zh/
                    +

                    规范

                    +

                    Vue规范

                    +
                    1.组件名
                    +

                    组件名为多个单词,并且用连接线(-)连接,避免与 HTML 标签冲突,并且结构更加清晰。

                    +
                    // 正例
                    +export default {
                    +    name: 'page-article-item'
                    +}
                    +
                    2.组件文件
                    +

                    src/js/module/components项目内部公共组件书写文件夹名与文件名同名,公共组件内部所拆分的子组件与util工具都放置组件内部 _source文件夹里。

                    +
                    └── components
                    +    ├── header
                    +        ├── header.vue
                    +        └── _source
                    +            └── nav.vue
                    +            └── util.js
                    +    ├── conditions
                    +        ├── conditions.vue
                    +        └── _source
                    +            └── serach.vue
                    +            └── util.js
                    +
                    3.Prop
                    +

                    定义 Prop 的时候应该始终以驼峰格式(camelCase)命名,在父组件赋值的时候使用连接线(-)。 +这里遵循每个语言的特性,因为在 HTML 标记中对大小写是不敏感的,使用连接线更加友好;而在 JavaScript 中更自然的是驼峰命名。

                    +
                    // Vue
                    +props: {
                    +    articleStatus: Boolean
                    +}
                    +// HTML
                    +<article-item :article-status="true"></article-item>
                    +

                    Prop 的定义应该尽量详细的指定其类型、默认值和验证。

                    +

                    示例:

                    +
                    props: {
                    +    attrM: Number,
                    +    attrA: {
                    +        type: String,
                    +        required: true
                    +    },
                    +    attrZ: {
                    +        type: Object,
                    +        // 数组/对象的默认值应该由一个工厂函数返回
                    +        default: function () {
                    +            return {
                    +                msg: '成就你我'
                    +            }
                    +        }
                    +    },
                    +    attrE: {
                    +        type: String,
                    +        validator: function (v) {
                    +            return !(['success', 'fail'].indexOf(v) === -1) 
                    +        }
                    +    }
                    +}
                    +
                    4.v-for
                    +

                    在执行 v-for 遍历的时候,总是应该带上 key 值使更新 DOM 时渲染效率更高。

                    +
                    <ul>
                    +    <li v-for="item in list" :key="item.id">
                    +        {{ item.title }}
                    +    </li>
                    +</ul>
                    +

                    v-for 应该避免与 v-if 在同一个元素(例如:<li>)上使用,因为 v-for 的优先级比 v-if 更高,为了避免无效计算和渲染,应该尽量将 v-if 放到容器的父元素之上。

                    +
                    <ul v-if="showList">
                    +    <li v-for="item in list" :key="item.id">
                    +        {{ item.title }}
                    +    </li>
                    +</ul>
                    +
                    5.v-if / v-else-if / v-else
                    +

                    若同一组 v-if 逻辑控制中的元素逻辑相同,Vue 为了更高效的元素切换,会复用相同的部分,例如:value。为了避免复用带来的不合理效果,应该在同种元素上加上 key 做标识。

                    +
                    <div v-if="hasData" key="mazey-data">
                    +    <span>{{ mazeyData }}</span>
                    +</div>
                    +<div v-else key="mazey-none">
                    +    <span>无数据</span>
                    +</div>
                    +
                    6.指令缩写
                    +

                    为了统一规范始终使用指令缩写,使用v-bindv-on并没有什么不好,这里仅为了统一规范。

                    +
                    <input :value="mazeyUser" @click="verifyUser">
                    +
                    7.单文件组件的顶级元素顺序
                    +

                    样式后续都是打包在一个文件里,所有在单个vue文件中定义的样式,在别的文件里同类名的样式也是会生效的所有在创建一个组件前都会有个顶级类名 +注意:项目内已经增加了sass插件,单个vue文件里可以直接书写sass语法 +为了统一和便于阅读,应该按 <template><script><style>的顺序放置。

                    +
                    <template>
                    +  <div class="test-model">
                    +    test
                    +  </div>
                    +</template>
                    +<script>
                    +  export default {
                    +    name: "test",
                    +    data() {
                    +      return {}
                    +    },
                    +    props: {},
                    +    methods: {},
                    +    watch: {},
                    +    beforeCreate() {
                    +    },
                    +    created() {
                    +    },
                    +    beforeMount() {
                    +    },
                    +    mounted() {
                    +    },
                    +    beforeUpdate() {
                    +    },
                    +    updated() {
                    +    },
                    +    beforeDestroy() {
                    +    },
                    +    destroyed() {
                    +    },
                    +    computed: {},
                    +    components: {},
                    +  }
                    +</script>
                    +
                    +<style lang="scss" rel="stylesheet/scss">
                    +  .test-model {
                    +
                    +  }
                    +</style>
                    +

                    JavaScript规范

                    +
                    1.var / let / const
                    +

                    建议不再使用 var,而使用 let / const,优先使用 const。任何一个变量的使用都要提前申明,除了 function 定义的函数可以随便放在任何位置。

                    +
                    2.引号
                    +
                    const foo = '后除'
                    +const bar = `${foo},前端工程师`
                    +
                    3.函数
                    +

                    匿名函数统一使用箭头函数,多个参数/返回值时优先使用对象的结构赋值。

                    +
                    function getPersonInfo ({name, sex}) {
                    +    // ...
                    +    return {name, gender}
                    +}
                    +

                    函数名统一使用驼峰命名,以大写字母开头申明的都是构造函数,使用小写字母开头的都是普通函数,也不该使用 new 操作符去操作普通函数。

                    +
                    4.对象
                    +
                    const foo = {a: 0, b: 1}
                    +const bar = JSON.parse(JSON.stringify(foo))
                    +
                    +const foo = {a: 0, b: 1}
                    +const bar = {...foo, c: 2}
                    +
                    +const foo = {a: 3}
                    +Object.assign(foo, {b: 4})
                    +
                    +const myMap = new Map([])
                    +for (let [key, value] of myMap.entries()) {
                    +    // ...
                    +}
                    +
                    5.模块
                    +

                    统一使用 import / export 的方式管理项目的模块。

                    +
                    // lib.js
                    +export default {}
                    +
                    +// app.js
                    +import app from './lib'
                    +

                    import 统一放在文件顶部。

                    +

                    如果模块只有一个输出值,使用 export default,否则不用。

                    +

                    HTML / CSS

                    +
                    1.标签
                    +

                    在引用外部 CSS 或 JavaScript 时不写 type 属性。HTML5 默认 type 为 text/csstext/javascript 属性,所以没必要指定。

                    +
                    <link rel="stylesheet" href="//www.test.com/css/test.css">
                    +<script src="//www.test.com/js/test.js"></script>
                    +
                    2.命名
                    +

                    Class 和 ID 的命名应该语义化,通过看名字就知道是干嘛的;多个单词用连接线 - 连接。

                    +
                    // 正例
                    +.test-header{
                    +    font-size: 20px;
                    +}
                    +
                    3.属性缩写
                    +

                    CSS 属性尽量使用缩写,提高代码的效率和方便理解。

                    +
                    // 反例
                    +border-width: 1px;
                    +border-style: solid;
                    +border-color: #ccc;
                    +
                    +// 正例
                    +border: 1px solid #ccc;
                    +
                    4.文档类型
                    +

                    应该总是使用 HTML5 标准。

                    +
                    <!DOCTYPE html>
                    +
                    5.注释
                    +

                    应该给一个模块文件写一个区块注释。

                    +
                    /**
                    +* @module mazey/api
                    +* @author Mazey <mazey@mazey.net>
                    +* @description test.
                    +* */
                    +

                    接口

                    +
                    所有的接口都以 Promise 形式返回
                    +

                    注意非0都为错误走catch

                    +
                    const test = () => {
                    +  return new Promise((resolve, reject) => {
                    +    resolve({
                    +      a:1
                    +    })
                    +  })
                    +}
                    +
                    +// 调用
                    +test.then(res => {
                    +  console.log(res)
                    +  // {a:1}
                    +})
                    +

                    正常返回

                    +
                    {
                    +  code:0,
                    +  data:{}
                    +  msg:'成功'
                    +}
                    +

                    错误返回

                    +
                    {
                    +  code:10000, 
                    +  data:{}
                    +  msg:'失败'
                    +}
                    +
                    相关接口路径
                    +

                    dag 相关接口 src/js/conf/home/store/dag/actions.js

                    +

                    数据源中心 相关接口 src/js/conf/home/store/datasource/actions.js

                    +

                    项目管理 相关接口 src/js/conf/home/store/projects/actions.js

                    +

                    资源中心 相关接口 src/js/conf/home/store/resource/actions.js

                    +

                    安全中心 相关接口 src/js/conf/home/store/security/actions.js

                    +

                    用户中心 相关接口 src/js/conf/home/store/user/actions.js

                    +

                    扩展开发

                    +
                    1.增加节点
                    +

                    (1) 先将节点的icon小图标放置src/js/conf/home/pages/dag/img文件夹内,注意 toolbar_${后台定义的节点的英文名称 例如:SHELL}.png +(2) 找到 src/js/conf/home/pages/dag/_source/config.js 里的 tasksType 对象,往里增加

                    +
                    'DEPENDENT': {  // 后台定义节点类型英文名称用作key值
                    +  desc: 'DEPENDENT',  // tooltip desc
                    +  color: '#2FBFD8'  // 代表的颜色主要用于 tree和gantt 两张图
                    +}
                    +

                    (3) 在 src/js/conf/home/pages/dag/_source/formModel/tasks 增加一个 ${节点类型(小写)}.vue 文件,跟当前节点相关的组件内容都在这里写。 属于节点组件内的必须拥有一个函数 _verification() 验证成功后讲当前组件的相关数据往父组件抛。

                    +
                    /**
                    + * 验证
                    +*/
                    +  _verification () {
                    +    // datasource 子组件验证
                    +    if (!this.$refs.refDs._verifDatasource()) {
                    +      return false
                    +    }
                    +
                    +    // 验证函数
                    +    if (!this.method) {
                    +      this.$message.warning(`${i18n.$t('请输入方法')}`)
                    +      return false
                    +    }
                    +
                    +    // localParams 子组件验证
                    +    if (!this.$refs.refLocalParams._verifProp()) {
                    +      return false
                    +    }
                    +    // 存储
                    +    this.$emit('on-params', {
                    +      type: this.type,
                    +      datasource: this.datasource,
                    +      method: this.method,
                    +      localParams: this.localParams
                    +    })
                    +    return true
                    +  }
                    +

                    (4) 节点组件内部所用到公共的组件都在_source下,commcon.js用与配置公共数据

                    +
                    2.增加状态类型
                    +

                    (1) 找到 src/js/conf/home/pages/dag/_source/config.js 里的 tasksState 对象,往里增加

                    +
                    'WAITTING_DEPEND': {  //后端定义状态类型 前端用作key值
                    +  id: 11,  // 前端定义id 后续用作排序
                    +  desc: `${i18n.$t('等待依赖')}`,  // tooltip desc
                    +  color: '#5101be',  // 代表的颜色主要用于 tree和gantt 两张图
                    +  icoUnicode: '&#xe68c;',  // 字体图标 
                    +  isSpin: false  // 是否旋转(需代码判断)
                    +}
                    +
                    3.增加操作栏工具
                    +

                    (1) 找到 src/js/conf/home/pages/dag/_source/config.js 里的 toolOper 对象,往里增加

                    +
                    {
                    +  code: 'pointer',  // 工具标识
                    +  icon: '&#xe781;',  // 工具图标 
                    +  disable: disable,  // 是否禁用
                    +  desc: `${i18n.$t('拖动节点和选中项')}`  // tooltip desc
                    +}
                    +

                    (2) 工具类都以一个构造函数返回 src/js/conf/home/pages/dag/_source/plugIn

                    +

                    downChart.js => dag 图片下载处理

                    +

                    dragZoom.js => 鼠标缩放效果处理

                    +

                    jsPlumbHandle.js => 拖拽线条处理

                    +

                    util.js => 属于 plugIn 工具类

                    +

                    操作则在 src/js/conf/home/pages/dag/_source/dag.js => toolbarEvent 事件中处理。

                    +
                    3.增加一个路由页面
                    +

                    (1) 首先在路由管理增加一个路由地址src/js/conf/home/router/index.js

                    +
                    {
                    +  path: '/test',  // 路由地址 
                    +  name: 'test',  // 别名
                    +  component: resolve => require(['../pages/test/index'], resolve),  // 路由对应组件入口文件
                    +  meta: {
                    +    title: `${i18n.$t('test')} - EasyScheduler`  // title 显示
                    +  }
                    +},
                    +

                    (2) 在src/js/conf/home/pages 建一个 test 文件夹,在文件夹里建一个index.vue入口文件。

                    +
                    这样就可以直接访问 `http://localhost:8888/#/test`
                    +
                    4.增加预置邮箱
                    +

                    找到src/lib/localData/email.js启动和定时邮箱地址输入可以自动下拉匹配。

                    +
                    export default ["test@analysys.com.cn","test1@analysys.com.cn","test3@analysys.com.cn"]
                    +
                    5.权限管理及disabled状态处理
                    +

                    权限根据后端接口getUserInfo接口给出userType: "ADMIN_USER/GENERAL_USER"权限控制页面操作按钮是否disabled

                    +

                    具体操作:src/js/module/permissions/index.js

                    +

                    disabled处理:src/js/module/mixin/disabledState.js

                    + + +
                    + +
                    +
                    +
                    + +

                    results matching ""

                    +
                      + +
                      +
                      + +

                      No results matching ""

                      + +
                      +
                      +
                      + +
                      +
                      + +
                      + + + + + + + + + + + + + + +
                      + + +
                      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/gitbook/fonts/fontawesome/FontAwesome.otf b/docs/zh_CN/_book/gitbook/fonts/fontawesome/FontAwesome.otf similarity index 100% rename from docs/gitbook/fonts/fontawesome/FontAwesome.otf rename to docs/zh_CN/_book/gitbook/fonts/fontawesome/FontAwesome.otf diff --git a/docs/gitbook/fonts/fontawesome/fontawesome-webfont.eot b/docs/zh_CN/_book/gitbook/fonts/fontawesome/fontawesome-webfont.eot similarity index 100% rename from docs/gitbook/fonts/fontawesome/fontawesome-webfont.eot rename to docs/zh_CN/_book/gitbook/fonts/fontawesome/fontawesome-webfont.eot diff --git a/docs/gitbook/fonts/fontawesome/fontawesome-webfont.svg b/docs/zh_CN/_book/gitbook/fonts/fontawesome/fontawesome-webfont.svg similarity index 100% rename from docs/gitbook/fonts/fontawesome/fontawesome-webfont.svg rename to docs/zh_CN/_book/gitbook/fonts/fontawesome/fontawesome-webfont.svg diff --git a/docs/gitbook/fonts/fontawesome/fontawesome-webfont.ttf b/docs/zh_CN/_book/gitbook/fonts/fontawesome/fontawesome-webfont.ttf similarity index 100% rename from docs/gitbook/fonts/fontawesome/fontawesome-webfont.ttf rename to docs/zh_CN/_book/gitbook/fonts/fontawesome/fontawesome-webfont.ttf diff --git a/docs/gitbook/fonts/fontawesome/fontawesome-webfont.woff b/docs/zh_CN/_book/gitbook/fonts/fontawesome/fontawesome-webfont.woff similarity index 100% rename from docs/gitbook/fonts/fontawesome/fontawesome-webfont.woff rename to docs/zh_CN/_book/gitbook/fonts/fontawesome/fontawesome-webfont.woff diff --git a/docs/gitbook/fonts/fontawesome/fontawesome-webfont.woff2 b/docs/zh_CN/_book/gitbook/fonts/fontawesome/fontawesome-webfont.woff2 similarity index 100% rename from docs/gitbook/fonts/fontawesome/fontawesome-webfont.woff2 rename to docs/zh_CN/_book/gitbook/fonts/fontawesome/fontawesome-webfont.woff2 diff --git a/docs/gitbook/gitbook-plugin-expandable-chapters/expandable-chapters.css b/docs/zh_CN/_book/gitbook/gitbook-plugin-expandable-chapters/expandable-chapters.css similarity index 100% rename from docs/gitbook/gitbook-plugin-expandable-chapters/expandable-chapters.css rename to docs/zh_CN/_book/gitbook/gitbook-plugin-expandable-chapters/expandable-chapters.css diff --git a/docs/gitbook/gitbook-plugin-expandable-chapters/expandable-chapters.js b/docs/zh_CN/_book/gitbook/gitbook-plugin-expandable-chapters/expandable-chapters.js similarity index 100% rename from docs/gitbook/gitbook-plugin-expandable-chapters/expandable-chapters.js rename to docs/zh_CN/_book/gitbook/gitbook-plugin-expandable-chapters/expandable-chapters.js diff --git a/docs/gitbook/gitbook-plugin-fontsettings/fontsettings.js b/docs/zh_CN/_book/gitbook/gitbook-plugin-fontsettings/fontsettings.js similarity index 100% rename from docs/gitbook/gitbook-plugin-fontsettings/fontsettings.js rename to docs/zh_CN/_book/gitbook/gitbook-plugin-fontsettings/fontsettings.js diff --git a/docs/gitbook/gitbook-plugin-fontsettings/website.css b/docs/zh_CN/_book/gitbook/gitbook-plugin-fontsettings/website.css similarity index 100% rename from docs/gitbook/gitbook-plugin-fontsettings/website.css rename to docs/zh_CN/_book/gitbook/gitbook-plugin-fontsettings/website.css diff --git a/docs/gitbook/gitbook-plugin-highlight/ebook.css b/docs/zh_CN/_book/gitbook/gitbook-plugin-highlight/ebook.css similarity index 100% rename from docs/gitbook/gitbook-plugin-highlight/ebook.css rename to docs/zh_CN/_book/gitbook/gitbook-plugin-highlight/ebook.css diff --git a/docs/gitbook/gitbook-plugin-highlight/website.css b/docs/zh_CN/_book/gitbook/gitbook-plugin-highlight/website.css similarity index 100% rename from docs/gitbook/gitbook-plugin-highlight/website.css rename to docs/zh_CN/_book/gitbook/gitbook-plugin-highlight/website.css diff --git a/docs/gitbook/gitbook-plugin-insert-logo-link/plugin.css b/docs/zh_CN/_book/gitbook/gitbook-plugin-insert-logo-link/plugin.css similarity index 100% rename from docs/gitbook/gitbook-plugin-insert-logo-link/plugin.css rename to docs/zh_CN/_book/gitbook/gitbook-plugin-insert-logo-link/plugin.css diff --git a/docs/gitbook/gitbook-plugin-insert-logo-link/plugin.js b/docs/zh_CN/_book/gitbook/gitbook-plugin-insert-logo-link/plugin.js similarity index 100% rename from docs/gitbook/gitbook-plugin-insert-logo-link/plugin.js rename to docs/zh_CN/_book/gitbook/gitbook-plugin-insert-logo-link/plugin.js diff --git a/docs/gitbook/gitbook-plugin-lunr/lunr.min.js b/docs/zh_CN/_book/gitbook/gitbook-plugin-lunr/lunr.min.js similarity index 100% rename from docs/gitbook/gitbook-plugin-lunr/lunr.min.js rename to docs/zh_CN/_book/gitbook/gitbook-plugin-lunr/lunr.min.js diff --git a/docs/gitbook/gitbook-plugin-lunr/search-lunr.js b/docs/zh_CN/_book/gitbook/gitbook-plugin-lunr/search-lunr.js similarity index 100% rename from docs/gitbook/gitbook-plugin-lunr/search-lunr.js rename to docs/zh_CN/_book/gitbook/gitbook-plugin-lunr/search-lunr.js diff --git a/docs/gitbook/gitbook-plugin-search/lunr.min.js b/docs/zh_CN/_book/gitbook/gitbook-plugin-search/lunr.min.js similarity index 100% rename from docs/gitbook/gitbook-plugin-search/lunr.min.js rename to docs/zh_CN/_book/gitbook/gitbook-plugin-search/lunr.min.js diff --git a/docs/gitbook/gitbook-plugin-search/search-engine.js b/docs/zh_CN/_book/gitbook/gitbook-plugin-search/search-engine.js similarity index 100% rename from docs/gitbook/gitbook-plugin-search/search-engine.js rename to docs/zh_CN/_book/gitbook/gitbook-plugin-search/search-engine.js diff --git a/docs/gitbook/gitbook-plugin-search/search.css b/docs/zh_CN/_book/gitbook/gitbook-plugin-search/search.css similarity index 100% rename from docs/gitbook/gitbook-plugin-search/search.css rename to docs/zh_CN/_book/gitbook/gitbook-plugin-search/search.css diff --git a/docs/gitbook/gitbook-plugin-search/search.js b/docs/zh_CN/_book/gitbook/gitbook-plugin-search/search.js similarity index 100% rename from docs/gitbook/gitbook-plugin-search/search.js rename to docs/zh_CN/_book/gitbook/gitbook-plugin-search/search.js diff --git a/docs/gitbook/gitbook-plugin-sharing/buttons.js b/docs/zh_CN/_book/gitbook/gitbook-plugin-sharing/buttons.js similarity index 100% rename from docs/gitbook/gitbook-plugin-sharing/buttons.js rename to docs/zh_CN/_book/gitbook/gitbook-plugin-sharing/buttons.js diff --git a/docs/zh_CN/_book/gitbook/gitbook.js b/docs/zh_CN/_book/gitbook/gitbook.js new file mode 100644 index 0000000000000000000000000000000000000000..e194fcaf423621bf461fecb30c2a1d3fb169f986 --- /dev/null +++ b/docs/zh_CN/_book/gitbook/gitbook.js @@ -0,0 +1,4 @@ +!function(){function e(t,n,r){function o(s,a){if(!n[s]){if(!t[s]){var u="function"==typeof require&&require;if(!a&&u)return u(s,!0);if(i)return i(s,!0);var c=new Error("Cannot find module '"+s+"'");throw c.code="MODULE_NOT_FOUND",c}var l=n[s]={exports:{}};t[s][0].call(l.exports,function(e){var n=t[s][1][e];return o(n||e)},l,l.exports,e,t,n,r)}return n[s].exports}for(var i="function"==typeof require&&require,s=0;s0&&t-1 in e)}function o(e,t,n){return de.isFunction(t)?de.grep(e,function(e,r){return!!t.call(e,r,e)!==n}):t.nodeType?de.grep(e,function(e){return e===t!==n}):"string"!=typeof t?de.grep(e,function(e){return se.call(t,e)>-1!==n}):je.test(t)?de.filter(t,e,n):(t=de.filter(t,e),de.grep(e,function(e){return se.call(t,e)>-1!==n&&1===e.nodeType}))}function i(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}function s(e){var t={};return de.each(e.match(qe)||[],function(e,n){t[n]=!0}),t}function a(e){return e}function u(e){throw e}function c(e,t,n){var r;try{e&&de.isFunction(r=e.promise)?r.call(e).done(t).fail(n):e&&de.isFunction(r=e.then)?r.call(e,t,n):t.call(void 0,e)}catch(e){n.call(void 0,e)}}function l(){te.removeEventListener("DOMContentLoaded",l),e.removeEventListener("load",l),de.ready()}function f(){this.expando=de.expando+f.uid++}function p(e){return"true"===e||"false"!==e&&("null"===e?null:e===+e+""?+e:Ie.test(e)?JSON.parse(e):e)}function h(e,t,n){var r;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(Pe,"-$&").toLowerCase(),n=e.getAttribute(r),"string"==typeof n){try{n=p(n)}catch(e){}Re.set(e,t,n)}else n=void 0;return n}function d(e,t,n,r){var o,i=1,s=20,a=r?function(){return r.cur()}:function(){return de.css(e,t,"")},u=a(),c=n&&n[3]||(de.cssNumber[t]?"":"px"),l=(de.cssNumber[t]||"px"!==c&&+u)&&$e.exec(de.css(e,t));if(l&&l[3]!==c){c=c||l[3],n=n||[],l=+u||1;do i=i||".5",l/=i,de.style(e,t,l+c);while(i!==(i=a()/u)&&1!==i&&--s)}return n&&(l=+l||+u||0,o=n[1]?l+(n[1]+1)*n[2]:+n[2],r&&(r.unit=c,r.start=l,r.end=o)),o}function g(e){var t,n=e.ownerDocument,r=e.nodeName,o=Ue[r];return o?o:(t=n.body.appendChild(n.createElement(r)),o=de.css(t,"display"),t.parentNode.removeChild(t),"none"===o&&(o="block"),Ue[r]=o,o)}function m(e,t){for(var n,r,o=[],i=0,s=e.length;i-1)o&&o.push(i);else if(c=de.contains(i.ownerDocument,i),s=v(f.appendChild(i),"script"),c&&y(s),n)for(l=0;i=s[l++];)Ve.test(i.type||"")&&n.push(i);return f}function b(){return!0}function w(){return!1}function T(){try{return te.activeElement}catch(e){}}function C(e,t,n,r,o,i){var s,a;if("object"==typeof t){"string"!=typeof n&&(r=r||n,n=void 0);for(a in t)C(e,a,n,r,t[a],i);return e}if(null==r&&null==o?(o=n,r=n=void 0):null==o&&("string"==typeof n?(o=r,r=void 0):(o=r,r=n,n=void 0)),o===!1)o=w;else if(!o)return e;return 1===i&&(s=o,o=function(e){return de().off(e),s.apply(this,arguments)},o.guid=s.guid||(s.guid=de.guid++)),e.each(function(){de.event.add(this,t,o,r,n)})}function j(e,t){return de.nodeName(e,"table")&&de.nodeName(11!==t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e:e}function k(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function E(e){var t=rt.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function S(e,t){var n,r,o,i,s,a,u,c;if(1===t.nodeType){if(Fe.hasData(e)&&(i=Fe.access(e),s=Fe.set(t,i),c=i.events)){delete s.handle,s.events={};for(o in c)for(n=0,r=c[o].length;n1&&"string"==typeof d&&!pe.checkClone&&nt.test(d))return e.each(function(n){var i=e.eq(n);g&&(t[0]=d.call(this,n,i.html())),N(i,t,r,o)});if(p&&(i=x(t,e[0].ownerDocument,!1,e,o),s=i.firstChild,1===i.childNodes.length&&(i=s),s||o)){for(a=de.map(v(i,"script"),k),u=a.length;f=0&&nC.cacheLength&&delete e[t.shift()],e[n+" "]=r}var t=[];return e}function r(e){return e[$]=!0,e}function o(e){var t=L.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function i(e,t){for(var n=e.split("|"),r=n.length;r--;)C.attrHandle[n[r]]=t}function s(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function a(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function u(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function c(e){return function(t){return"form"in t?t.parentNode&&t.disabled===!1?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&je(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function l(e){return r(function(t){return t=+t,r(function(n,r){for(var o,i=e([],n.length,t),s=i.length;s--;)n[o=i[s]]&&(n[o]=!(r[o]=n[o]))})})}function f(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function p(){}function h(e){for(var t=0,n=e.length,r="";t1?function(t,n,r){for(var o=e.length;o--;)if(!e[o](t,n,r))return!1;return!0}:e[0]}function m(e,n,r){for(var o=0,i=n.length;o-1&&(r[c]=!(s[c]=f))}}else x=v(x===s?x.splice(d,x.length):x),i?i(null,s,x,u):K.apply(s,x)})}function x(e){for(var t,n,r,o=e.length,i=C.relative[e[0].type],s=i||C.relative[" "],a=i?1:0,u=d(function(e){return e===t},s,!0),c=d(function(e){return ee(t,e)>-1},s,!0),l=[function(e,n,r){var o=!i&&(r||n!==N)||((t=n).nodeType?u(e,n,r):c(e,n,r));return t=null,o}];a1&&g(l),a>1&&h(e.slice(0,a-1).concat({value:" "===e[a-2].type?"*":""})).replace(ae,"$1"),n,a0,i=e.length>0,s=function(r,s,a,u,c){var l,f,p,h=0,d="0",g=r&&[],m=[],y=N,x=r||i&&C.find.TAG("*",c),b=B+=null==y?1:Math.random()||.1,w=x.length;for(c&&(N=s===L||s||c);d!==w&&null!=(l=x[d]);d++){if(i&&l){for(f=0,s||l.ownerDocument===L||(O(l),a=!F);p=e[f++];)if(p(l,s||L,a)){u.push(l);break}c&&(B=b)}o&&((l=!p&&l)&&h--,r&&g.push(l))}if(h+=d,o&&d!==h){for(f=0;p=n[f++];)p(g,m,s,a);if(r){if(h>0)for(;d--;)g[d]||m[d]||(m[d]=Q.call(u));m=v(m)}K.apply(u,m),c&&!r&&m.length>0&&h+n.length>1&&t.uniqueSort(u)}return c&&(B=b,N=y),g};return o?r(s):s}var w,T,C,j,k,E,S,A,N,q,D,O,L,H,F,R,I,P,M,$="sizzle"+1*new Date,W=e.document,B=0,_=0,U=n(),z=n(),X=n(),V=function(e,t){return e===t&&(D=!0),0},G={}.hasOwnProperty,Y=[],Q=Y.pop,J=Y.push,K=Y.push,Z=Y.slice,ee=function(e,t){for(var n=0,r=e.length;n+~]|"+ne+")"+ne+"*"),le=new RegExp("="+ne+"*([^\\]'\"]*?)"+ne+"*\\]","g"),fe=new RegExp(ie),pe=new RegExp("^"+re+"$"),he={ID:new RegExp("^#("+re+")"),CLASS:new RegExp("^\\.("+re+")"),TAG:new RegExp("^("+re+"|[*])"),ATTR:new RegExp("^"+oe),PSEUDO:new RegExp("^"+ie),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ne+"*(even|odd|(([+-]|)(\\d*)n|)"+ne+"*(?:([+-]|)"+ne+"*(\\d+)|))"+ne+"*\\)|)","i"),bool:new RegExp("^(?:"+te+")$","i"),needsContext:new RegExp("^"+ne+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ne+"*((?:-\\d)?\\d*)"+ne+"*\\)|)(?=[^-]|$)","i")},de=/^(?:input|select|textarea|button)$/i,ge=/^h\d$/i,me=/^[^{]+\{\s*\[native \w/,ve=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ye=/[+~]/,xe=new RegExp("\\\\([\\da-f]{1,6}"+ne+"?|("+ne+")|.)","ig"),be=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},we=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,Te=function(e,t){return t?"\0"===e?"�":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},Ce=function(){O()},je=d(function(e){return e.disabled===!0&&("form"in e||"label"in e)},{dir:"parentNode",next:"legend"});try{K.apply(Y=Z.call(W.childNodes),W.childNodes),Y[W.childNodes.length].nodeType}catch(e){K={apply:Y.length?function(e,t){J.apply(e,Z.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}T=t.support={},k=t.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},O=t.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:W;return r!==L&&9===r.nodeType&&r.documentElement?(L=r,H=L.documentElement,F=!k(L),W!==L&&(n=L.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",Ce,!1):n.attachEvent&&n.attachEvent("onunload",Ce)),T.attributes=o(function(e){return e.className="i",!e.getAttribute("className")}),T.getElementsByTagName=o(function(e){return e.appendChild(L.createComment("")),!e.getElementsByTagName("*").length}),T.getElementsByClassName=me.test(L.getElementsByClassName),T.getById=o(function(e){return H.appendChild(e).id=$,!L.getElementsByName||!L.getElementsByName($).length}),T.getById?(C.filter.ID=function(e){var t=e.replace(xe,be);return function(e){return e.getAttribute("id")===t}},C.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&F){var n=t.getElementById(e);return n?[n]:[]}}):(C.filter.ID=function(e){var t=e.replace(xe,be);return function(e){var n="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},C.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&F){var n,r,o,i=t.getElementById(e);if(i){if(n=i.getAttributeNode("id"),n&&n.value===e)return[i];for(o=t.getElementsByName(e),r=0;i=o[r++];)if(n=i.getAttributeNode("id"),n&&n.value===e)return[i]}return[]}}),C.find.TAG=T.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):T.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],o=0,i=t.getElementsByTagName(e);if("*"===e){for(;n=i[o++];)1===n.nodeType&&r.push(n);return r}return i},C.find.CLASS=T.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&F)return t.getElementsByClassName(e)},I=[],R=[],(T.qsa=me.test(L.querySelectorAll))&&(o(function(e){H.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&R.push("[*^$]="+ne+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||R.push("\\["+ne+"*(?:value|"+te+")"),e.querySelectorAll("[id~="+$+"-]").length||R.push("~="),e.querySelectorAll(":checked").length||R.push(":checked"),e.querySelectorAll("a#"+$+"+*").length||R.push(".#.+[+~]")}),o(function(e){e.innerHTML="";var t=L.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&R.push("name"+ne+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&R.push(":enabled",":disabled"),H.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&R.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),R.push(",.*:")})),(T.matchesSelector=me.test(P=H.matches||H.webkitMatchesSelector||H.mozMatchesSelector||H.oMatchesSelector||H.msMatchesSelector))&&o(function(e){T.disconnectedMatch=P.call(e,"*"),P.call(e,"[s!='']:x"),I.push("!=",ie)}),R=R.length&&new RegExp(R.join("|")),I=I.length&&new RegExp(I.join("|")),t=me.test(H.compareDocumentPosition),M=t||me.test(H.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},V=t?function(e,t){if(e===t)return D=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n?n:(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1,1&n||!T.sortDetached&&t.compareDocumentPosition(e)===n?e===L||e.ownerDocument===W&&M(W,e)?-1:t===L||t.ownerDocument===W&&M(W,t)?1:q?ee(q,e)-ee(q,t):0:4&n?-1:1)}:function(e,t){if(e===t)return D=!0,0;var n,r=0,o=e.parentNode,i=t.parentNode,a=[e],u=[t];if(!o||!i)return e===L?-1:t===L?1:o?-1:i?1:q?ee(q,e)-ee(q,t):0;if(o===i)return s(e,t);for(n=e;n=n.parentNode;)a.unshift(n);for(n=t;n=n.parentNode;)u.unshift(n);for(;a[r]===u[r];)r++;return r?s(a[r],u[r]):a[r]===W?-1:u[r]===W?1:0},L):L},t.matches=function(e,n){return t(e,null,null,n)},t.matchesSelector=function(e,n){if((e.ownerDocument||e)!==L&&O(e),n=n.replace(le,"='$1']"),T.matchesSelector&&F&&!X[n+" "]&&(!I||!I.test(n))&&(!R||!R.test(n)))try{var r=P.call(e,n);if(r||T.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){}return t(n,L,null,[e]).length>0},t.contains=function(e,t){return(e.ownerDocument||e)!==L&&O(e),M(e,t)},t.attr=function(e,t){(e.ownerDocument||e)!==L&&O(e);var n=C.attrHandle[t.toLowerCase()],r=n&&G.call(C.attrHandle,t.toLowerCase())?n(e,t,!F):void 0;return void 0!==r?r:T.attributes||!F?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},t.escape=function(e){return(e+"").replace(we,Te)},t.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},t.uniqueSort=function(e){var t,n=[],r=0,o=0;if(D=!T.detectDuplicates,q=!T.sortStable&&e.slice(0),e.sort(V),D){for(;t=e[o++];)t===e[o]&&(r=n.push(o));for(;r--;)e.splice(n[r],1)}return q=null,e},j=t.getText=function(e){var t,n="",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=j(e)}else if(3===o||4===o)return e.nodeValue}else for(;t=e[r++];)n+=j(t);return n},C=t.selectors={cacheLength:50,createPseudo:r,match:he,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(xe,be),e[3]=(e[3]||e[4]||e[5]||"").replace(xe,be),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||t.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&t.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return he.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&fe.test(n)&&(t=E(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(xe,be).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=U[e+" "];return t||(t=new RegExp("(^|"+ne+")"+e+"("+ne+"|$)"))&&U(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,n,r){return function(o){var i=t.attr(o,e);return null==i?"!="===n:!n||(i+="","="===n?i===r:"!="===n?i!==r:"^="===n?r&&0===i.indexOf(r):"*="===n?r&&i.indexOf(r)>-1:"$="===n?r&&i.slice(-r.length)===r:"~="===n?(" "+i.replace(se," ")+" ").indexOf(r)>-1:"|="===n&&(i===r||i.slice(0,r.length+1)===r+"-"))}},CHILD:function(e,t,n,r,o){var i="nth"!==e.slice(0,3),s="last"!==e.slice(-4),a="of-type"===t;return 1===r&&0===o?function(e){return!!e.parentNode}:function(t,n,u){var c,l,f,p,h,d,g=i!==s?"nextSibling":"previousSibling",m=t.parentNode,v=a&&t.nodeName.toLowerCase(),y=!u&&!a,x=!1;if(m){if(i){for(;g;){for(p=t;p=p[g];)if(a?p.nodeName.toLowerCase()===v:1===p.nodeType)return!1;d=g="only"===e&&!d&&"nextSibling"}return!0}if(d=[s?m.firstChild:m.lastChild],s&&y){for(p=m,f=p[$]||(p[$]={}),l=f[p.uniqueID]||(f[p.uniqueID]={}),c=l[e]||[],h=c[0]===B&&c[1],x=h&&c[2],p=h&&m.childNodes[h];p=++h&&p&&p[g]||(x=h=0)||d.pop();)if(1===p.nodeType&&++x&&p===t){l[e]=[B,h,x];break}}else if(y&&(p=t,f=p[$]||(p[$]={}),l=f[p.uniqueID]||(f[p.uniqueID]={}),c=l[e]||[],h=c[0]===B&&c[1],x=h),x===!1)for(;(p=++h&&p&&p[g]||(x=h=0)||d.pop())&&((a?p.nodeName.toLowerCase()!==v:1!==p.nodeType)||!++x||(y&&(f=p[$]||(p[$]={}),l=f[p.uniqueID]||(f[p.uniqueID]={}),l[e]=[B,x]),p!==t)););return x-=o,x===r||x%r===0&&x/r>=0}}},PSEUDO:function(e,n){var o,i=C.pseudos[e]||C.setFilters[e.toLowerCase()]||t.error("unsupported pseudo: "+e);return i[$]?i(n):i.length>1?(o=[e,e,"",n],C.setFilters.hasOwnProperty(e.toLowerCase())?r(function(e,t){for(var r,o=i(e,n),s=o.length;s--;)r=ee(e,o[s]),e[r]=!(t[r]=o[s])}):function(e){return i(e,0,o)}):i}},pseudos:{not:r(function(e){var t=[],n=[],o=S(e.replace(ae,"$1"));return o[$]?r(function(e,t,n,r){for(var i,s=o(e,null,r,[]),a=e.length;a--;)(i=s[a])&&(e[a]=!(t[a]=i))}):function(e,r,i){return t[0]=e,o(t,null,i,n),t[0]=null,!n.pop()}}),has:r(function(e){ +return function(n){return t(e,n).length>0}}),contains:r(function(e){return e=e.replace(xe,be),function(t){return(t.textContent||t.innerText||j(t)).indexOf(e)>-1}}),lang:r(function(e){return pe.test(e||"")||t.error("unsupported lang: "+e),e=e.replace(xe,be).toLowerCase(),function(t){var n;do if(n=F?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===H},focus:function(e){return e===L.activeElement&&(!L.hasFocus||L.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:c(!1),disabled:c(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!C.pseudos.empty(e)},header:function(e){return ge.test(e.nodeName)},input:function(e){return de.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:l(function(){return[0]}),last:l(function(e,t){return[t-1]}),eq:l(function(e,t,n){return[n<0?n+t:n]}),even:l(function(e,t){for(var n=0;n=0;)e.push(r);return e}),gt:l(function(e,t,n){for(var r=n<0?n+t:n;++r2&&"ID"===(s=i[0]).type&&9===t.nodeType&&F&&C.relative[i[1].type]){if(t=(C.find.ID(s.matches[0].replace(xe,be),t)||[])[0],!t)return n;c&&(t=t.parentNode),e=e.slice(i.shift().value.length)}for(o=he.needsContext.test(e)?0:i.length;o--&&(s=i[o],!C.relative[a=s.type]);)if((u=C.find[a])&&(r=u(s.matches[0].replace(xe,be),ye.test(i[0].type)&&f(t.parentNode)||t))){if(i.splice(o,1),e=r.length&&h(i),!e)return K.apply(n,r),n;break}}return(c||S(e,l))(r,t,!F,n,!t||ye.test(e)&&f(t.parentNode)||t),n},T.sortStable=$.split("").sort(V).join("")===$,T.detectDuplicates=!!D,O(),T.sortDetached=o(function(e){return 1&e.compareDocumentPosition(L.createElement("fieldset"))}),o(function(e){return e.innerHTML="","#"===e.firstChild.getAttribute("href")})||i("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),T.attributes&&o(function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||i("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),o(function(e){return null==e.getAttribute("disabled")})||i(te,function(e,t,n){var r;if(!n)return e[t]===!0?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),t}(e);de.find=xe,de.expr=xe.selectors,de.expr[":"]=de.expr.pseudos,de.uniqueSort=de.unique=xe.uniqueSort,de.text=xe.getText,de.isXMLDoc=xe.isXML,de.contains=xe.contains,de.escapeSelector=xe.escape;var be=function(e,t,n){for(var r=[],o=void 0!==n;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(o&&de(e).is(n))break;r.push(e)}return r},we=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},Te=de.expr.match.needsContext,Ce=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i,je=/^.[^:#\[\.,]*$/;de.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?de.find.matchesSelector(r,e)?[r]:[]:de.find.matches(e,de.grep(t,function(e){return 1===e.nodeType}))},de.fn.extend({find:function(e){var t,n,r=this.length,o=this;if("string"!=typeof e)return this.pushStack(de(e).filter(function(){for(t=0;t1?de.uniqueSort(n):n},filter:function(e){return this.pushStack(o(this,e||[],!1))},not:function(e){return this.pushStack(o(this,e||[],!0))},is:function(e){return!!o(this,"string"==typeof e&&Te.test(e)?de(e):e||[],!1).length}});var ke,Ee=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,Se=de.fn.init=function(e,t,n){var r,o;if(!e)return this;if(n=n||ke,"string"==typeof e){if(r="<"===e[0]&&">"===e[e.length-1]&&e.length>=3?[null,e,null]:Ee.exec(e),!r||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof de?t[0]:t,de.merge(this,de.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:te,!0)),Ce.test(r[1])&&de.isPlainObject(t))for(r in t)de.isFunction(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return o=te.getElementById(r[2]),o&&(this[0]=o,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):de.isFunction(e)?void 0!==n.ready?n.ready(e):e(de):de.makeArray(e,this)};Se.prototype=de.fn,ke=de(te);var Ae=/^(?:parents|prev(?:Until|All))/,Ne={children:!0,contents:!0,next:!0,prev:!0};de.fn.extend({has:function(e){var t=de(e,this),n=t.length;return this.filter(function(){for(var e=0;e-1:1===n.nodeType&&de.find.matchesSelector(n,e))){i.push(n);break}return this.pushStack(i.length>1?de.uniqueSort(i):i)},index:function(e){return e?"string"==typeof e?se.call(de(e),this[0]):se.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(de.uniqueSort(de.merge(this.get(),de(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),de.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return be(e,"parentNode")},parentsUntil:function(e,t,n){return be(e,"parentNode",n)},next:function(e){return i(e,"nextSibling")},prev:function(e){return i(e,"previousSibling")},nextAll:function(e){return be(e,"nextSibling")},prevAll:function(e){return be(e,"previousSibling")},nextUntil:function(e,t,n){return be(e,"nextSibling",n)},prevUntil:function(e,t,n){return be(e,"previousSibling",n)},siblings:function(e){return we((e.parentNode||{}).firstChild,e)},children:function(e){return we(e.firstChild)},contents:function(e){return e.contentDocument||de.merge([],e.childNodes)}},function(e,t){de.fn[e]=function(n,r){var o=de.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(o=de.filter(r,o)),this.length>1&&(Ne[e]||de.uniqueSort(o),Ae.test(e)&&o.reverse()),this.pushStack(o)}});var qe=/[^\x20\t\r\n\f]+/g;de.Callbacks=function(e){e="string"==typeof e?s(e):de.extend({},e);var t,n,r,o,i=[],a=[],u=-1,c=function(){for(o=e.once,r=t=!0;a.length;u=-1)for(n=a.shift();++u-1;)i.splice(n,1),n<=u&&u--}),this},has:function(e){return e?de.inArray(e,i)>-1:i.length>0},empty:function(){return i&&(i=[]),this},disable:function(){return o=a=[],i=n="",this},disabled:function(){return!i},lock:function(){return o=a=[],n||t||(i=n=""),this},locked:function(){return!!o},fireWith:function(e,n){return o||(n=n||[],n=[e,n.slice?n.slice():n],a.push(n),t||c()),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!r}};return l},de.extend({Deferred:function(t){var n=[["notify","progress",de.Callbacks("memory"),de.Callbacks("memory"),2],["resolve","done",de.Callbacks("once memory"),de.Callbacks("once memory"),0,"resolved"],["reject","fail",de.Callbacks("once memory"),de.Callbacks("once memory"),1,"rejected"]],r="pending",o={state:function(){return r},always:function(){return i.done(arguments).fail(arguments),this},catch:function(e){return o.then(null,e)},pipe:function(){var e=arguments;return de.Deferred(function(t){de.each(n,function(n,r){var o=de.isFunction(e[r[4]])&&e[r[4]];i[r[1]](function(){var e=o&&o.apply(this,arguments);e&&de.isFunction(e.promise)?e.promise().progress(t.notify).done(t.resolve).fail(t.reject):t[r[0]+"With"](this,o?[e]:arguments)})}),e=null}).promise()},then:function(t,r,o){function i(t,n,r,o){return function(){var c=this,l=arguments,f=function(){var e,f;if(!(t=s&&(r!==u&&(c=void 0,l=[e]),n.rejectWith(c,l))}};t?p():(de.Deferred.getStackHook&&(p.stackTrace=de.Deferred.getStackHook()),e.setTimeout(p))}}var s=0;return de.Deferred(function(e){n[0][3].add(i(0,e,de.isFunction(o)?o:a,e.notifyWith)),n[1][3].add(i(0,e,de.isFunction(t)?t:a)),n[2][3].add(i(0,e,de.isFunction(r)?r:u))}).promise()},promise:function(e){return null!=e?de.extend(e,o):o}},i={};return de.each(n,function(e,t){var s=t[2],a=t[5];o[t[1]]=s.add,a&&s.add(function(){r=a},n[3-e][2].disable,n[0][2].lock),s.add(t[3].fire),i[t[0]]=function(){return i[t[0]+"With"](this===i?void 0:this,arguments),this},i[t[0]+"With"]=s.fireWith}),o.promise(i),t&&t.call(i,i),i},when:function(e){var t=arguments.length,n=t,r=Array(n),o=re.call(arguments),i=de.Deferred(),s=function(e){return function(n){r[e]=this,o[e]=arguments.length>1?re.call(arguments):n,--t||i.resolveWith(r,o)}};if(t<=1&&(c(e,i.done(s(n)).resolve,i.reject),"pending"===i.state()||de.isFunction(o[n]&&o[n].then)))return i.then();for(;n--;)c(o[n],s(n),i.reject);return i.promise()}});var De=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;de.Deferred.exceptionHook=function(t,n){e.console&&e.console.warn&&t&&De.test(t.name)&&e.console.warn("jQuery.Deferred exception: "+t.message,t.stack,n)},de.readyException=function(t){e.setTimeout(function(){throw t})};var Oe=de.Deferred();de.fn.ready=function(e){return Oe.then(e).catch(function(e){de.readyException(e)}),this},de.extend({isReady:!1,readyWait:1,holdReady:function(e){e?de.readyWait++:de.ready(!0)},ready:function(e){(e===!0?--de.readyWait:de.isReady)||(de.isReady=!0,e!==!0&&--de.readyWait>0||Oe.resolveWith(te,[de]))}}),de.ready.then=Oe.then,"complete"===te.readyState||"loading"!==te.readyState&&!te.documentElement.doScroll?e.setTimeout(de.ready):(te.addEventListener("DOMContentLoaded",l),e.addEventListener("load",l));var Le=function(e,t,n,r,o,i,s){var a=0,u=e.length,c=null==n;if("object"===de.type(n)){o=!0;for(a in n)Le(e,t,a,n[a],!0,i,s)}else if(void 0!==r&&(o=!0,de.isFunction(r)||(s=!0),c&&(s?(t.call(e,r),t=null):(c=t,t=function(e,t,n){return c.call(de(e),n)})),t))for(;a1,null,!0)},removeData:function(e){return this.each(function(){Re.remove(this,e)})}}),de.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Fe.get(e,t),n&&(!r||de.isArray(n)?r=Fe.access(e,t,de.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=de.queue(e,t),r=n.length,o=n.shift(),i=de._queueHooks(e,t),s=function(){de.dequeue(e,t)};"inprogress"===o&&(o=n.shift(),r--),o&&("fx"===t&&n.unshift("inprogress"),delete i.stop,o.call(e,s,i)),!r&&i&&i.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Fe.get(e,n)||Fe.access(e,n,{empty:de.Callbacks("once memory").add(function(){Fe.remove(e,[t+"queue",n])})})}}),de.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length\x20\t\r\n\f]+)/i,Ve=/^$|\/(?:java|ecma)script/i,Ge={option:[1,""],thead:[1,"","
                      "],col:[2,"","
                      "],tr:[2,"","
                      "],td:[3,"","
                      "],_default:[0,"",""]};Ge.optgroup=Ge.option,Ge.tbody=Ge.tfoot=Ge.colgroup=Ge.caption=Ge.thead,Ge.th=Ge.td;var Ye=/<|&#?\w+;/;!function(){var e=te.createDocumentFragment(),t=e.appendChild(te.createElement("div")),n=te.createElement("input");n.setAttribute("type","radio"),n.setAttribute("checked","checked"),n.setAttribute("name","t"),t.appendChild(n),pe.checkClone=t.cloneNode(!0).cloneNode(!0).lastChild.checked,t.innerHTML="",pe.noCloneChecked=!!t.cloneNode(!0).lastChild.defaultValue}();var Qe=te.documentElement,Je=/^key/,Ke=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ze=/^([^.]*)(?:\.(.+)|)/;de.event={global:{},add:function(e,t,n,r,o){var i,s,a,u,c,l,f,p,h,d,g,m=Fe.get(e);if(m)for(n.handler&&(i=n,n=i.handler,o=i.selector),o&&de.find.matchesSelector(Qe,o),n.guid||(n.guid=de.guid++),(u=m.events)||(u=m.events={}),(s=m.handle)||(s=m.handle=function(t){return"undefined"!=typeof de&&de.event.triggered!==t.type?de.event.dispatch.apply(e,arguments):void 0}),t=(t||"").match(qe)||[""],c=t.length;c--;)a=Ze.exec(t[c])||[],h=g=a[1],d=(a[2]||"").split(".").sort(),h&&(f=de.event.special[h]||{},h=(o?f.delegateType:f.bindType)||h,f=de.event.special[h]||{},l=de.extend({type:h,origType:g,data:r,handler:n,guid:n.guid,selector:o,needsContext:o&&de.expr.match.needsContext.test(o),namespace:d.join(".")},i),(p=u[h])||(p=u[h]=[],p.delegateCount=0,f.setup&&f.setup.call(e,r,d,s)!==!1||e.addEventListener&&e.addEventListener(h,s)),f.add&&(f.add.call(e,l),l.handler.guid||(l.handler.guid=n.guid)),o?p.splice(p.delegateCount++,0,l):p.push(l),de.event.global[h]=!0)},remove:function(e,t,n,r,o){var i,s,a,u,c,l,f,p,h,d,g,m=Fe.hasData(e)&&Fe.get(e);if(m&&(u=m.events)){for(t=(t||"").match(qe)||[""],c=t.length;c--;)if(a=Ze.exec(t[c])||[],h=g=a[1],d=(a[2]||"").split(".").sort(),h){for(f=de.event.special[h]||{},h=(r?f.delegateType:f.bindType)||h,p=u[h]||[],a=a[2]&&new RegExp("(^|\\.)"+d.join("\\.(?:.*\\.|)")+"(\\.|$)"),s=i=p.length;i--;)l=p[i],!o&&g!==l.origType||n&&n.guid!==l.guid||a&&!a.test(l.namespace)||r&&r!==l.selector&&("**"!==r||!l.selector)||(p.splice(i,1),l.selector&&p.delegateCount--,f.remove&&f.remove.call(e,l));s&&!p.length&&(f.teardown&&f.teardown.call(e,d,m.handle)!==!1||de.removeEvent(e,h,m.handle),delete u[h])}else for(h in u)de.event.remove(e,h+t[c],n,r,!0);de.isEmptyObject(u)&&Fe.remove(e,"handle events")}},dispatch:function(e){var t,n,r,o,i,s,a=de.event.fix(e),u=new Array(arguments.length),c=(Fe.get(this,"events")||{})[a.type]||[],l=de.event.special[a.type]||{};for(u[0]=a,t=1;t=1))for(;c!==this;c=c.parentNode||this)if(1===c.nodeType&&("click"!==e.type||c.disabled!==!0)){for(i=[],s={},n=0;n-1:de.find(o,this,null,[c]).length),s[o]&&i.push(r);i.length&&a.push({elem:c,handlers:i})}return c=this,u\x20\t\r\n\f]*)[^>]*)\/>/gi,tt=/\s*$/g;de.extend({htmlPrefilter:function(e){return e.replace(et,"<$1>")},clone:function(e,t,n){var r,o,i,s,a=e.cloneNode(!0),u=de.contains(e.ownerDocument,e);if(!(pe.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||de.isXMLDoc(e)))for(s=v(a),i=v(e),r=0,o=i.length;r0&&y(s,!u&&v(e,"script")),a},cleanData:function(e){for(var t,n,r,o=de.event.special,i=0;void 0!==(n=e[i]);i++)if(He(n)){if(t=n[Fe.expando]){if(t.events)for(r in t.events)o[r]?de.event.remove(n,r):de.removeEvent(n,r,t.handle);n[Fe.expando]=void 0}n[Re.expando]&&(n[Re.expando]=void 0)}}}),de.fn.extend({detach:function(e){return q(this,e,!0)},remove:function(e){return q(this,e)},text:function(e){return Le(this,function(e){return void 0===e?de.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return N(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=j(this,e);t.appendChild(e)}})},prepend:function(){return N(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=j(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return N(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return N(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(de.cleanData(v(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return de.clone(this,e,t)})},html:function(e){return Le(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!tt.test(e)&&!Ge[(Xe.exec(e)||["",""])[1].toLowerCase()]){e=de.htmlPrefilter(e);try{for(;n1)}}),de.Tween=I,I.prototype={constructor:I,init:function(e,t,n,r,o,i){this.elem=e,this.prop=n,this.easing=o||de.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=i||(de.cssNumber[n]?"":"px")},cur:function(){var e=I.propHooks[this.prop];return e&&e.get?e.get(this):I.propHooks._default.get(this)},run:function(e){var t,n=I.propHooks[this.prop];return this.options.duration?this.pos=t=de.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):I.propHooks._default.set(this),this}},I.prototype.init.prototype=I.prototype,I.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=de.css(e.elem,e.prop,""),t&&"auto"!==t?t:0)},set:function(e){de.fx.step[e.prop]?de.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[de.cssProps[e.prop]]&&!de.cssHooks[e.prop]?e.elem[e.prop]=e.now:de.style(e.elem,e.prop,e.now+e.unit)}}},I.propHooks.scrollTop=I.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},de.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},de.fx=I.prototype.init,de.fx.step={};var ht,dt,gt=/^(?:toggle|show|hide)$/,mt=/queueHooks$/;de.Animation=de.extend(U,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return d(n.elem,e,$e.exec(t),n),n}]},tweener:function(e,t){de.isFunction(e)?(t=e,e=["*"]):e=e.match(qe);for(var n,r=0,o=e.length;r1)},removeAttr:function(e){return this.each(function(){de.removeAttr(this,e)})}}),de.extend({attr:function(e,t,n){var r,o,i=e.nodeType;if(3!==i&&8!==i&&2!==i)return"undefined"==typeof e.getAttribute?de.prop(e,t,n):(1===i&&de.isXMLDoc(e)||(o=de.attrHooks[t.toLowerCase()]||(de.expr.match.bool.test(t)?vt:void 0)),void 0!==n?null===n?void de.removeAttr(e,t):o&&"set"in o&&void 0!==(r=o.set(e,n,t))?r:(e.setAttribute(t,n+""),n):o&&"get"in o&&null!==(r=o.get(e,t))?r:(r=de.find.attr(e,t),null==r?void 0:r))},attrHooks:{type:{set:function(e,t){if(!pe.radioValue&&"radio"===t&&de.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,o=t&&t.match(qe);if(o&&1===e.nodeType)for(;n=o[r++];)e.removeAttribute(n)}}),vt={set:function(e,t,n){return t===!1?de.removeAttr(e,n):e.setAttribute(n,n),n}},de.each(de.expr.match.bool.source.match(/\w+/g),function(e,t){var n=yt[t]||de.find.attr;yt[t]=function(e,t,r){var o,i,s=t.toLowerCase();return r||(i=yt[s],yt[s]=o,o=null!=n(e,t,r)?s:null,yt[s]=i),o}});var xt=/^(?:input|select|textarea|button)$/i,bt=/^(?:a|area)$/i;de.fn.extend({prop:function(e,t){return Le(this,de.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[de.propFix[e]||e]})}}),de.extend({prop:function(e,t,n){var r,o,i=e.nodeType;if(3!==i&&8!==i&&2!==i)return 1===i&&de.isXMLDoc(e)||(t=de.propFix[t]||t,o=de.propHooks[t]),void 0!==n?o&&"set"in o&&void 0!==(r=o.set(e,n,t))?r:e[t]=n:o&&"get"in o&&null!==(r=o.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=de.find.attr(e,"tabindex");return t?parseInt(t,10):xt.test(e.nodeName)||bt.test(e.nodeName)&&e.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),pe.optSelected||(de.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),de.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){de.propFix[this.toLowerCase()]=this}),de.fn.extend({addClass:function(e){var t,n,r,o,i,s,a,u=0;if(de.isFunction(e))return this.each(function(t){de(this).addClass(e.call(this,t,X(this)))});if("string"==typeof e&&e)for(t=e.match(qe)||[];n=this[u++];)if(o=X(n),r=1===n.nodeType&&" "+z(o)+" "){for(s=0;i=t[s++];)r.indexOf(" "+i+" ")<0&&(r+=i+" ");a=z(r),o!==a&&n.setAttribute("class",a)}return this},removeClass:function(e){var t,n,r,o,i,s,a,u=0;if(de.isFunction(e))return this.each(function(t){de(this).removeClass(e.call(this,t,X(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof e&&e)for(t=e.match(qe)||[];n=this[u++];)if(o=X(n),r=1===n.nodeType&&" "+z(o)+" "){for(s=0;i=t[s++];)for(;r.indexOf(" "+i+" ")>-1;)r=r.replace(" "+i+" "," ");a=z(r),o!==a&&n.setAttribute("class",a)}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):de.isFunction(e)?this.each(function(n){de(this).toggleClass(e.call(this,n,X(this),t),t)}):this.each(function(){var t,r,o,i;if("string"===n)for(r=0,o=de(this),i=e.match(qe)||[];t=i[r++];)o.hasClass(t)?o.removeClass(t):o.addClass(t);else void 0!==e&&"boolean"!==n||(t=X(this),t&&Fe.set(this,"__className__",t),this.setAttribute&&this.setAttribute("class",t||e===!1?"":Fe.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;for(t=" "+e+" ";n=this[r++];)if(1===n.nodeType&&(" "+z(X(n))+" ").indexOf(t)>-1)return!0;return!1}});var wt=/\r/g;de.fn.extend({val:function(e){var t,n,r,o=this[0];{if(arguments.length)return r=de.isFunction(e),this.each(function(n){var o;1===this.nodeType&&(o=r?e.call(this,n,de(this).val()):e,null==o?o="":"number"==typeof o?o+="":de.isArray(o)&&(o=de.map(o,function(e){return null==e?"":e+""})),t=de.valHooks[this.type]||de.valHooks[this.nodeName.toLowerCase()],t&&"set"in t&&void 0!==t.set(this,o,"value")||(this.value=o))});if(o)return t=de.valHooks[o.type]||de.valHooks[o.nodeName.toLowerCase()],t&&"get"in t&&void 0!==(n=t.get(o,"value"))?n:(n=o.value,"string"==typeof n?n.replace(wt,""):null==n?"":n)}}}),de.extend({valHooks:{option:{get:function(e){var t=de.find.attr(e,"value");return null!=t?t:z(de.text(e))}},select:{get:function(e){var t,n,r,o=e.options,i=e.selectedIndex,s="select-one"===e.type,a=s?null:[],u=s?i+1:o.length;for(r=i<0?u:s?i:0;r-1)&&(n=!0);return n||(e.selectedIndex=-1),i}}}}),de.each(["radio","checkbox"],function(){de.valHooks[this]={set:function(e,t){if(de.isArray(t))return e.checked=de.inArray(de(e).val(),t)>-1}},pe.checkOn||(de.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var Tt=/^(?:focusinfocus|focusoutblur)$/;de.extend(de.event,{trigger:function(t,n,r,o){var i,s,a,u,c,l,f,p=[r||te],h=ce.call(t,"type")?t.type:t,d=ce.call(t,"namespace")?t.namespace.split("."):[];if(s=a=r=r||te,3!==r.nodeType&&8!==r.nodeType&&!Tt.test(h+de.event.triggered)&&(h.indexOf(".")>-1&&(d=h.split("."),h=d.shift(),d.sort()),c=h.indexOf(":")<0&&"on"+h,t=t[de.expando]?t:new de.Event(h,"object"==typeof t&&t),t.isTrigger=o?2:3,t.namespace=d.join("."),t.rnamespace=t.namespace?new RegExp("(^|\\.)"+d.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=r),n=null==n?[t]:de.makeArray(n,[t]),f=de.event.special[h]||{},o||!f.trigger||f.trigger.apply(r,n)!==!1)){if(!o&&!f.noBubble&&!de.isWindow(r)){for(u=f.delegateType||h,Tt.test(u+h)||(s=s.parentNode);s;s=s.parentNode)p.push(s),a=s;a===(r.ownerDocument||te)&&p.push(a.defaultView||a.parentWindow||e)}for(i=0;(s=p[i++])&&!t.isPropagationStopped();)t.type=i>1?u:f.bindType||h,l=(Fe.get(s,"events")||{})[t.type]&&Fe.get(s,"handle"),l&&l.apply(s,n),l=c&&s[c],l&&l.apply&&He(s)&&(t.result=l.apply(s,n),t.result===!1&&t.preventDefault());return t.type=h,o||t.isDefaultPrevented()||f._default&&f._default.apply(p.pop(),n)!==!1||!He(r)||c&&de.isFunction(r[h])&&!de.isWindow(r)&&(a=r[c],a&&(r[c]=null),de.event.triggered=h,r[h](),de.event.triggered=void 0,a&&(r[c]=a)),t.result}},simulate:function(e,t,n){var r=de.extend(new de.Event,n,{type:e,isSimulated:!0});de.event.trigger(r,null,t)}}),de.fn.extend({trigger:function(e,t){return this.each(function(){de.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return de.event.trigger(e,t,n,!0)}}),de.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,t){de.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),de.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),pe.focusin="onfocusin"in e,pe.focusin||de.each({focus:"focusin",blur:"focusout"},function(e,t){var n=function(e){de.event.simulate(t,e.target,de.event.fix(e))};de.event.special[t]={setup:function(){var r=this.ownerDocument||this,o=Fe.access(r,t);o||r.addEventListener(e,n,!0),Fe.access(r,t,(o||0)+1)},teardown:function(){var r=this.ownerDocument||this,o=Fe.access(r,t)-1;o?Fe.access(r,t,o):(r.removeEventListener(e,n,!0),Fe.remove(r,t))}}});var Ct=e.location,jt=de.now(),kt=/\?/;de.parseXML=function(t){var n;if(!t||"string"!=typeof t)return null;try{n=(new e.DOMParser).parseFromString(t,"text/xml")}catch(e){n=void 0}return n&&!n.getElementsByTagName("parsererror").length||de.error("Invalid XML: "+t),n};var Et=/\[\]$/,St=/\r?\n/g,At=/^(?:submit|button|image|reset|file)$/i,Nt=/^(?:input|select|textarea|keygen)/i;de.param=function(e,t){var n,r=[],o=function(e,t){var n=de.isFunction(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(de.isArray(e)||e.jquery&&!de.isPlainObject(e))de.each(e,function(){o(this.name,this.value)});else for(n in e)V(n,e[n],t,o);return r.join("&")},de.fn.extend({serialize:function(){return de.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=de.prop(this,"elements");return e?de.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!de(this).is(":disabled")&&Nt.test(this.nodeName)&&!At.test(e)&&(this.checked||!ze.test(e))}).map(function(e,t){var n=de(this).val();return null==n?null:de.isArray(n)?de.map(n,function(e){return{name:t.name,value:e.replace(St,"\r\n")}}):{name:t.name,value:n.replace(St,"\r\n")}}).get()}});var qt=/%20/g,Dt=/#.*$/,Ot=/([?&])_=[^&]*/,Lt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Ht=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Ft=/^(?:GET|HEAD)$/,Rt=/^\/\//,It={},Pt={},Mt="*/".concat("*"),$t=te.createElement("a");$t.href=Ct.href,de.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ct.href,type:"GET",isLocal:Ht.test(Ct.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Mt,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":de.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Q(Q(e,de.ajaxSettings),t):Q(de.ajaxSettings,e)},ajaxPrefilter:G(It),ajaxTransport:G(Pt),ajax:function(t,n){function r(t,n,r,a){var c,p,h,b,w,T=n;l||(l=!0,u&&e.clearTimeout(u),o=void 0,s=a||"",C.readyState=t>0?4:0,c=t>=200&&t<300||304===t,r&&(b=J(d,C,r)),b=K(d,b,C,c),c?(d.ifModified&&(w=C.getResponseHeader("Last-Modified"),w&&(de.lastModified[i]=w),w=C.getResponseHeader("etag"),w&&(de.etag[i]=w)),204===t||"HEAD"===d.type?T="nocontent":304===t?T="notmodified":(T=b.state,p=b.data,h=b.error,c=!h)):(h=T,!t&&T||(T="error",t<0&&(t=0))),C.status=t,C.statusText=(n||T)+"",c?v.resolveWith(g,[p,T,C]):v.rejectWith(g,[C,T,h]),C.statusCode(x),x=void 0,f&&m.trigger(c?"ajaxSuccess":"ajaxError",[C,d,c?p:h]),y.fireWith(g,[C,T]),f&&(m.trigger("ajaxComplete",[C,d]),--de.active||de.event.trigger("ajaxStop")))}"object"==typeof t&&(n=t,t=void 0),n=n||{};var o,i,s,a,u,c,l,f,p,h,d=de.ajaxSetup({},n),g=d.context||d,m=d.context&&(g.nodeType||g.jquery)?de(g):de.event,v=de.Deferred(),y=de.Callbacks("once memory"),x=d.statusCode||{},b={},w={},T="canceled",C={readyState:0,getResponseHeader:function(e){var t;if(l){if(!a)for(a={};t=Lt.exec(s);)a[t[1].toLowerCase()]=t[2];t=a[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return l?s:null},setRequestHeader:function(e,t){return null==l&&(e=w[e.toLowerCase()]=w[e.toLowerCase()]||e,b[e]=t),this},overrideMimeType:function(e){return null==l&&(d.mimeType=e),this},statusCode:function(e){var t;if(e)if(l)C.always(e[C.status]);else for(t in e)x[t]=[x[t],e[t]];return this},abort:function(e){var t=e||T;return o&&o.abort(t),r(0,t),this}};if(v.promise(C),d.url=((t||d.url||Ct.href)+"").replace(Rt,Ct.protocol+"//"),d.type=n.method||n.type||d.method||d.type,d.dataTypes=(d.dataType||"*").toLowerCase().match(qe)||[""],null==d.crossDomain){c=te.createElement("a");try{c.href=d.url,c.href=c.href,d.crossDomain=$t.protocol+"//"+$t.host!=c.protocol+"//"+c.host}catch(e){d.crossDomain=!0}}if(d.data&&d.processData&&"string"!=typeof d.data&&(d.data=de.param(d.data,d.traditional)),Y(It,d,n,C),l)return C;f=de.event&&d.global,f&&0===de.active++&&de.event.trigger("ajaxStart"),d.type=d.type.toUpperCase(),d.hasContent=!Ft.test(d.type),i=d.url.replace(Dt,""),d.hasContent?d.data&&d.processData&&0===(d.contentType||"").indexOf("application/x-www-form-urlencoded")&&(d.data=d.data.replace(qt,"+")):(h=d.url.slice(i.length),d.data&&(i+=(kt.test(i)?"&":"?")+d.data,delete d.data),d.cache===!1&&(i=i.replace(Ot,"$1"),h=(kt.test(i)?"&":"?")+"_="+jt++ +h),d.url=i+h),d.ifModified&&(de.lastModified[i]&&C.setRequestHeader("If-Modified-Since",de.lastModified[i]),de.etag[i]&&C.setRequestHeader("If-None-Match",de.etag[i])),(d.data&&d.hasContent&&d.contentType!==!1||n.contentType)&&C.setRequestHeader("Content-Type",d.contentType),C.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+("*"!==d.dataTypes[0]?", "+Mt+"; q=0.01":""):d.accepts["*"]);for(p in d.headers)C.setRequestHeader(p,d.headers[p]);if(d.beforeSend&&(d.beforeSend.call(g,C,d)===!1||l))return C.abort();if(T="abort",y.add(d.complete),C.done(d.success),C.fail(d.error),o=Y(Pt,d,n,C)){if(C.readyState=1,f&&m.trigger("ajaxSend",[C,d]),l)return C;d.async&&d.timeout>0&&(u=e.setTimeout(function(){C.abort("timeout")},d.timeout));try{l=!1,o.send(b,r)}catch(e){if(l)throw e;r(-1,e)}}else r(-1,"No Transport");return C},getJSON:function(e,t,n){return de.get(e,t,n,"json")},getScript:function(e,t){return de.get(e,void 0,t,"script")}}),de.each(["get","post"],function(e,t){de[t]=function(e,n,r,o){return de.isFunction(n)&&(o=o||r,r=n,n=void 0),de.ajax(de.extend({url:e,type:t,dataType:o,data:n,success:r},de.isPlainObject(e)&&e))}}),de._evalUrl=function(e){return de.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,throws:!0})},de.fn.extend({wrapAll:function(e){var t;return this[0]&&(de.isFunction(e)&&(e=e.call(this[0])),t=de(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){for(var e=this;e.firstElementChild;)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(e){return de.isFunction(e)?this.each(function(t){de(this).wrapInner(e.call(this,t))}):this.each(function(){var t=de(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=de.isFunction(e);return this.each(function(n){de(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(e){return this.parent(e).not("body").each(function(){de(this).replaceWith(this.childNodes)}),this}}),de.expr.pseudos.hidden=function(e){return!de.expr.pseudos.visible(e)},de.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},de.ajaxSettings.xhr=function(){try{return new e.XMLHttpRequest}catch(e){}};var Wt={0:200,1223:204},Bt=de.ajaxSettings.xhr();pe.cors=!!Bt&&"withCredentials"in Bt,pe.ajax=Bt=!!Bt,de.ajaxTransport(function(t){var n,r;if(pe.cors||Bt&&!t.crossDomain)return{send:function(o,i){var s,a=t.xhr();if(a.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(s in t.xhrFields)a[s]=t.xhrFields[s];t.mimeType&&a.overrideMimeType&&a.overrideMimeType(t.mimeType),t.crossDomain||o["X-Requested-With"]||(o["X-Requested-With"]="XMLHttpRequest");for(s in o)a.setRequestHeader(s,o[s]);n=function(e){return function(){n&&(n=r=a.onload=a.onerror=a.onabort=a.onreadystatechange=null,"abort"===e?a.abort():"error"===e?"number"!=typeof a.status?i(0,"error"):i(a.status,a.statusText):i(Wt[a.status]||a.status,a.statusText,"text"!==(a.responseType||"text")||"string"!=typeof a.responseText?{binary:a.response}:{text:a.responseText},a.getAllResponseHeaders()))}},a.onload=n(),r=a.onerror=n("error"),void 0!==a.onabort?a.onabort=r:a.onreadystatechange=function(){4===a.readyState&&e.setTimeout(function(){n&&r()})},n=n("abort");try{a.send(t.hasContent&&t.data||null)}catch(e){if(n)throw e}},abort:function(){n&&n()}}}),de.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),de.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return de.globalEval(e),e}}}),de.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),de.ajaxTransport("script",function(e){if(e.crossDomain){var t,n;return{send:function(r,o){t=de(" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/zh_CN/_book/search_index.json b/docs/zh_CN/_book/search_index.json new file mode 100644 index 0000000000000000000000000000000000000000..dea3b6ba58b1f381a0a6e105c55d868dc3cc257b --- /dev/null +++ b/docs/zh_CN/_book/search_index.json @@ -0,0 +1 @@ +{"index":{"version":"0.5.12","fields":[{"name":"title","boost":10},{"name":"keywords","boost":15},{"name":"body","boost":1}],"ref":"url","documentStore":{"store":{"./":["+","/","200px;","510570367",":","add","airflow","azkaban","balanc","bashoperator、dummyoperator、mysqloperator、hiveoperator、emailoperator、httpoperator、sqloper","big","celeri","cpu","dag监控界面","dask","data","db","develop","easi","easyschedul","easyscheduler上的用户可以通过租户和hadoop用户实现多对一或一对一的映射关系,这对大数据作业的调度是非常重要的。","easyscheduler简介","executor水平扩展","fastest","ha额外要求","issues,","load","load,memory,cpu在线查看","meso","mr、spark、sql(mysql、postgresql、hive、sparksql)、python、procedure、sub_process","respons","schedul","shell、gobblin、hadoopjava、java、hive、pig、spark、hdfstoteradata、teradatatohdf","submit","tabl","th:first","type","way","wechat","width:","xxx","{","}","一个分布式易扩展的可视化dag工作流任务调度系统。致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用。","一键部署","不能直观区分任务类型","不需要(本身就支持ha)","与同类调度系统的对比","以dag图的方式将task按照任务的依赖关系关联起来,可实时可视化监控任务的运行状态","任务太多时会卡死服务器","任务状态、任务类型、重试次数、任务运行机器、可视化变量等关键信息一目了然","任务类型","任务队列机制,单个机器上可调度的任务数量可以灵活配置,当任务过多时会缓存在任务队列中,不会造成机器卡死","使用手册","其主要目标如下:","前端部署文档","功能","单一调度程序","单个web和调度程序组合","单点故障","去中心化的多master和多work","只能看到任务状态","可视化流程定义","后端部署文档","否","契合度","实现集群ha,通过zookeeper实现master集群和worker集群去中心化","帮助","快速部署","所有流程定义操作都是可视化的,通过拖拽任务来绘制dag,配置数据源及资源。同时对于第三方系统,提供api方式的操作。","扩展性","支持","支持丰富的任务类型:shell、mr、spark、sql(mysql、postgresql、hive、sparksql),python,sub_process、procedure等","支持任务日志在线查看及滚动、在线下载日志等","支持传统的shell任务,同时支持大数据平台任务调度:","支持国际化","支持多租户","支持大数据作业spark,hive,mr的调度,同时由于支持多租户,与大数据业务更加契合","支持对master/work","支持工作流优先级、任务优先级及任务的故障转移及任务超时告警/失败","支持工作流全局参数及节点自定义参数设置","支持工作流定时调度、依赖调度、手动调度、手动暂停/停止/恢复,同时支持失败重试/告警、从指定节点恢复失败、kill任务等操作","支持工作流运行历史树形/甘特图展示、支持任务状态统计、流程状态统计","支持暂停,恢复操作","支持补数","支持资源文件的在线上传/下载,管理等,支持在线文件创建、编辑","文档","易用性","是","是否支持多租户","是否支持自定义任务类型","是否支持集群扩展","是否能暂停和恢复","是,但是复杂","更多文档请参考","由于不支持多租户,在大数据平台业务使用不够灵活","稳定性","系统部分截图","设计特点:","调度器使用分布式调度,整体的调度能力会随便集群的规模线性增长,master和worker支持动态上下线","过载处理","还有更多等待伙伴们探索","通过python代码来绘制dag,使用不便,特别是对不会写代码的业务人员基本无法使用。","通过自定义dsl绘制dag并打包上传","部署文档","集群化部署复杂","需将工作流杀死再运行"],"frontend-deploy.html":["\"","\"#\"","\"$1\"","\"upgrade\";","\"usage:","#","#!/bin/bash","#access_log","#charset","#dev_host","#error_pag","$(cat","$0","$host;","$http_upgrade;","$pidf)","$prog","$proxy_add_x_forwarded_for;","$remote_addr;","&&","(1","(2","(start|stop|restart|reload)\"","(启动后访问地址","(打包后根目录会创建一个名为dist文件夹,用于发布线上nginx)","(注意版本","*)","+","+x","...","./configur","./configure:","/","//单独安装node","/404.html;","/50x.html","/50x.html;","/data2_4t/escheduler_front/escheduler/serv","/data2_4t/escheduler_front/escheduler/server;","/data2_4t/escheduler_front/escheduler/server(服务器静态页面存放目录)","/dev/cdrom","/eschedul","/etc/init.d/nginx","/etc/nginx/conf.d/default.conf","/etc/nginx/nginx.conf","/etc/yum.repos.d/yum.repo","/mnt/","/sbin/nologin","/usr/local/bin/","/usr/local/bin/nginx","/usr/local/nginx","/usr/local/nginx/conf/nginx.conf","/usr/local/nginx/sbin/nginx","/usr/share/nginx/html;","/usr/src/","/usr/src/nginx","/var/log/nginx/host.access.log","0","0.0.0.0:*","0.0.0.0:80","07:24","0:关闭","1","1)","1.","1.10.1.tar.gz","1.1;","1.6.2.tar.gz","1.6.2/","1.6.2]#","1024m","12","12s;","192.168.6.132","1:关闭","2)","2.6.32","20","2345","27","29","2:启用","3","3)","30s;","3:启用","404","431.el6.i686","4:启用","4s;","500","502","503","504","5:启用","6810/nginx:","6:关闭","8.9.4)","8888;#","99",":80",";;","=",">","[base]","[root@cento","[root@nginx","add","an","anpt","api_bas","baseurl=file:///mnt/packag","build","c","c\"选项来指定路径。","c++","case","cc","cd","check","chkconfig","chkconfig:","chmod","chown","client_max_body_s","cnpm","compil","conf]#","configur","connect","control","d3","description:","devel","dump","echo","elink","enabl","enterpris","epel","error","error:","error_pag","es6","esac","eschedul","escheduler:eschedul","escheduler项目前端技术栈","escheduler项目目录并执行","exit","file","forward","found","g","gcc","git@git.analysys.cn:analysys_changsha/escheduler.git","gpgcheck=0","group=eschedul","help给出说明","host","http://192.168.220.181:12345;","http://192.168.220.204:12345","http://localhost","http://localhost:8888/#/","http://localhost:8888/#/)","http://nginx.org/download/nginx","http_flv_modul","http_gzip_static_modul","http_ssl_modul","http_stub_status_modul","https://nodejs.org/download/release/v8.9.4/","hup","i686","index","index.html","index.html;","instal","ip","iptabl","jsplumb","kill","killal","koi8","linux","list","listen","ll","ln","localhost;","locat","lodash","lrwxrwxrwx","m","main;","make","master","mkdir","mount","name=redhat","netstat","nginx","nginx!","nginx!\"),可以确认nginx服务是否正常运行。","nginx:","nginx安装","nginx服务程序默认以nobody身份运行,建议为其创建专门的用户账号,以便更准确地控制其访问权限,增加灵活性、降低安全风险。如:创建一个名为nginx的用户,不建立宿主目录,也禁止登录到shell环境。","nginx的运行控制","nginx的配置及运行需要pcre、zlib等软件包的支持,因此应预先安装这些软件的开发包(devel),以便提供相应的库和头文件,确保nginx的安装顺利完成。","nginx程序的监听状态,或者在浏览器中访问此web服务(默认页面将显示\"welcom","node","node包下载","node安装","npm","ok","openssl","os","page","pcre","perm","pidf=\"/usr/local/nginx/logs/nginx.pid\"","prefix","prefix=/usr/local/nginx","prog=\"/usr/local/nginx/sbin/nginx\"","proxy_connect_timeout","proxy_http_vers","proxy_pass","proxy_read_timeout","proxy_send_timeout","proxy_set_head","quit","r","r;","real","redirect","registry=https://registry.npm.taobao.org","releas","reload)","remote_addr","restart","restart)","root","root@nginx","root安装","run","s","sass","sass依赖","script","server","server_nam","servic","setenforc","start","start)","static","statu","stop","stop)","success","syntax","systemctl","t","t\"选项用来对配置文件进行检查,以便找出不当或错误的配置。配置文件nginx.conf默认位于安装目录/usr/local/nginx/conf/目录中。若要检查位于其他位置的配置文件,可使用\"","tar","tcp","test","ui","unsaf","upgrad","user=eschedul","useradd","user和—group","vi","vim","vue","welcom","wget","x","x_real_ipp","xf","y","yum","zilb","{","|grep","}","~]#","上传文件大小限制","与apache的主程序httpd类似,nginx的主程序也提供了\"","为了使nginx服务器的运行更加方便,可以为主程序nginx创建链接文件,以便管理员直接执行nginx命令就可以调用nginx的主程序。","为了使nginx服务的启动、停止、重载等操作更加方便,可以编写nginx服务脚本,并使用chkconfig和service工具来进行管理,也更加符合rhel系统的管理习惯。","主程序nginx支持标准的进程信号,通过kill或者killall命令传送","再拷贝到服务器","创建运行用户、组","创建静态页面存放目录","前端代理的接口地址","前端在开发环境(dev)中运行","前端部署文档","前端项目发布","前端项目构建","前端项目环境构建及编译","可以转淘宝镜像命令行输入","号去掉","启动、停止nginx","启用","启用http_stub_status_module模块以支持状态统计","启用ssl模块","命令","命令,生成打包文件(dist)包","如果","如果您需要用ip访问项目可以把","安装","安装epel源","安装nginx","安装及配置","开发环境","当nginx进程运行时,pid号默认存放在logs/目录下的nginx.pid文件中,因此若改用kill命令,也可以根据nginx.pid文件中的pid号来进行控制。","报错的话:","拉取前端项目到本地","拉取项目依赖包","指定nginx运行用户和组","接口地址","更改上传大小","杀死进程","注:配置前可以参考","状态","环境搭建","用命令行模式","直接运行nginx即可启动nginx服务器,这种方式将使用默认的配置文件,若要改用其他配置文件,需添加\"","等同于","编译","编译前配置","编译安装nginx","编辑配置文件","脚本一","解决方法","设定nginx的安装目录","访问地址","访问端口","运行","这样就可以通过nginx脚本来启动、停止、重启、重载nginx服务器了。","进入","退出进程","通过检查","速度非常慢","配置信息","配置文件地址","配置文件路径\"选项来指定路径。需要注意的是,若服务器中已安装有httpd等其他web服务软件,应采取措施(修改端口,停用或卸载)避免部突。","释放nginx源码包","重启","重启nginx服务","重载配置","错误","错误,请在执行完后再次执行以下命令","问题","静态文件目录","项目git仓库地址","项目如果在拉取依赖包的过程中报","项目开发环境","项目打包","项目根目录创建.env为后缀名的文件并输入","项目生产环境配置","!!!这里特别注意"],"frontend-development.html":["!(['success',","\"admin_user/general_user\"权限控制页面操作按钮是否dis","\"test\",","#ccc;","${节点类型(小写)}.vue","'#2fbfd8'","'#5101be',","'',","'',","'./lib'","'/test',","'dependent',","'dependent':","'fail'].indexof(v)","'page","'pointer',","'test',","'waitting_depend':","'后除'","'成就你我'","(!this.$refs.refds._verifdatasource())","(!this.$refs.reflocalparams._verifprop())","(!this.method)","()","(1)","(2)","(3)","(4)","(let","(v)","({name,","*","*/","...",".test","/","/**","//","//后端定义状态类型","0,","1)","1.var","1.增加节点","1.标签","1.组件名","11,","1px","1px;","1}","2.命名","2.增加状态类型","2.引号","2.组件文件","20px;","2}","3.prop","3.函数","3.增加一个路由页面","3.增加操作栏工具","3.属性缩写","3}","4.v","4.增加预置邮箱","4.对象","4.文档类型","4})","5.v","5.权限管理及disabled状态处理","5.模块","5.注释","6.0","6.指令缩写","7.单文件组件的顶级元素顺序","=","===","=>",">","@author","@descript","@modul","[\"test@analysys.com.cn\",\"test1@analysys.com.cn\",\"test3@analysys.com.cn\"]","[key,","_sourc","_source文件夹里。","_verif","_verification()","`${foo},前端工程师`","`${i18n.$t('test')}","`${i18n.$t('拖动节点和选中项')}`","`${i18n.$t('等待依赖')}`,","`http://localhost:8888/#/test`","`index.js`","`src/js/conf/${对应页面文件名","`src/sass/conf/${对应页面文件名","`src/view/${对应页面文件名","a:1","action","an","analysi","app","app.j","articl","articlestatus:","attra:","attre:","attrm:","attrz:","b:","bar","beforecreate()","beforedestroy()","beforemount()","beforeupdate()","bind,v","boolean","border","border:","build","c:","class","code:","code:0,","code:10000,","color:","combo","combo具体查看build/combo.j","compon","component:","components:","computed:","condit","conditions.vu","console.log(res)","const","const。任何一个变量的使用都要提前申明,除了","const,优先使用","created()","css","d3","dag","data()","data:{}","datasourc","datasource:","default","default:","default,否则不用。","desc","desc:","destroyed()","disable,","disable:","disabled处理:src/js/module/mixin/disabledstate.j","dom","downchart.j","download","dragzoom.j","easyscheduler`","echart","ecmascript","es6","export","fals","filter","font","foo","function","gender}","getpersoninfo","getter","header","header.vu","header{","home}/index.html`","home}/index.scss`","home}`","html","html5","http://localhost:8888/#/datasource/list","http://localhost:8888/#/hom","http://localhost:8888/#/projects/list","http://localhost:8888/#/resource/fil","http://localhost:8888/#/security/ten","http://localhost:8888/#/user/account","https://www.iconfont.cn","i18n","icon:","icounicode:","id","id:","imag","import","index","io","io请求封装","isspin:","item'","item.titl","javascript","javascript规范","js","js/vue","json.parse(json.stringify(foo))","jsplumb","jsplumbhandle.j","key","lib","lib.j","localparam","localparams:","lodash","map([])","mapact","mapgett","mapmut","mapstat","master","mazey","mazey/api","mazeydata","meta:","method:","methods:","mixin","model","mounted()","msg:","msg:'失败'","msg:'成功'","mutat","mvvm框架","mymap","mymap.entries())","name:","nav.vu","new","node_modul","npm","number,","object,","object.assign(foo,","on并没有什么不好,这里仅为了统一规范。","page","params',","path:","permiss","plugin","promis","promise((resolve,","prop","props:","reject)","require(['../pages/test/index'],","required:","resolv","resolve({","resolve),","return","router","run","sass","sass文件","serach.vu","sex})","size:","solid","solid;","src","src/js/conf/hom","src/js/conf/home/pages/dag/_source/config.j","src/js/conf/home/pages/dag/_source/dag.j","src/js/conf/home/pages/dag/_source/formmodel/task","src/js/conf/home/pages/dag/_source/plugin","src/js/conf/home/store/dag/actions.j","src/js/conf/home/store/datasource/actions.j","src/js/conf/home/store/projects/actions.j","src/js/conf/home/store/resource/actions.j","src/js/conf/home/store/security/actions.j","src/js/conf/home/store/user/actions.j","src/js/modul","src/js/module/components项目内部公共组件书写文件夹名与文件名同名,公共组件内部所拆分的子组件与util工具都放置组件内部","src/sass/common/_font.scss","state","store","string,","style:","tasksstat","taskstyp","test","test.","test.then(r","text/css","text/javascript","this.$emit('on","this.$message.warning(`${i18n.$t('请输入方法')}`)","this.datasource,","this.localparam","this.method,","this.type,","titl","title:","toolbar_${后台定义的节点的英文名称","toolbarev","toolop","tooltip","tree和gantt","true","type","type:","udf管理","ui","updated()","util","util.j","v","validator:","value]","var,而使用","view","vue","vue的路由器,在每个页面的入口文件index.j","vue规范","watch:","width:","worker","{","{...foo,","{a:","{a:1}","{b:","{name,","{{","{}","{},","|","}","})","},","}}","└──","├──","、、的顺序放置。","一个页面对应一个html文件","一个页面对应一个sass文件","下分为","下载组件","两张图","中更自然的是驼峰命名。","为","为了更高效的元素切换,会复用相同的部分,例如:value。为了避免复用带来的不合理效果,应该在同种元素上加上","为了统一和便于阅读,应该按","为了统一规范始终使用指令缩写,使用v","事件中处理。","二次开发需要重新引入自己的库","代表的颜色主要用于","任务实例","例如:shell}.png","值使更新","做标识。","先将节点的icon小图标放置src/js/conf/home/pages/dag/img文件夹内,注意","入口","入口文件","公共图片存放","公共模块及util","公共部分","公司内部组件(公司组件库开源后可删掉)","具体操作:https://router.vuejs.org/zh/","具体操作:https://vuex.vuejs.org/zh/","具体操作:src/js/module/permissions/index.j","内部项目公共组件","函数名统一使用驼峰命名,以大写字母开头申明的都是构造函数,使用小写字母开头的都是普通函数,也不该使用","函数管理","分为:","别名","前端定义id","前端开发文档","前端用作key值","匿名函数统一使用箭头函数,多个参数/返回值时优先使用对象的结构赋值。","反例","可视化库图表库","后台定义节点类型英文名称用作key值","后续用作排序","告警组管理","和","国际化","图片下载处理","图表组件","在","在src/js/conf/home/pag","在同一个元素(例如:)上使用,因为","在引用外部","在执行","基于axio","增加一个","如果模块只有一个输出值,使用","子组件验证","字体图标","字体图标库可访问","存储","安全中心","定义","定义的函数可以随便放在任何位置。","实用工具库","对应的html文件则在","对应的sass文件则在","对象,往里增加","属于","属于节点组件内的必须拥有一个函数","属性。html5","属性尽量使用缩写,提高代码的效率和方便理解。","属性,所以没必要指定。","工作流","工作流定义","工作流实例","工具","工具图标","工具标识","工具类","工具类都以一个构造函数返回","应该总是使用","应该给一个模块文件写一个区块注释。","应该避免与","建一个","建议不再使用","开发环境node依赖包","形式返回","或","所有的接口都以","所有页面入口文件在","打包及开发环境项目的一些webpack配置","扩展开发","找到","找到src/lib/localdata/email.js启动和定时邮箱地址输入可以自动下拉匹配。","技术选型","拖拽线条处理","接口","操作则在","操作符去操作普通函数。","放到容器的父元素之上。","数据源中心","数据源管理","数组/对象的默认值应该由一个工厂函数返回","文件夹,在文件夹里建一个index.vue入口文件。","文件管理","文件,跟当前节点相关的组件内容都在这里写。","无数据","时不写","时渲染效率更高。","是否旋转(需代码判断)","是否禁用","显示","更高,为了避免无效计算和渲染,应该尽量将","权限操作","权限根据后端接口getuserinfo接口给出usertype:","标准。","标签冲突,并且结构更加清晰。","标记中对大小写是不敏感的,使用连接线更加友好;而在","样式后续都是打包在一个文件里,所有在单个vue文件中定义的样式,在别的文件里同类名的样式也是会生效的所有在创建一个组件前都会有个顶级类名","正例","正常返回","每个路由对应的页面都有一个状态管理的文件","注意非0都为错误走catch","注意:字体库用的自己的","注意:项目内已经增加了sass插件,单个vue文件里可以直接书写sass语法","状态管理","用于disabled操作","用户中心","用户管理","的","的优先级比","的命名应该语义化,通过看名字就知道是干嘛的;多个单词用连接线","的定义应该尽量详细的指定其类型、默认值和验证。","的方式管理项目的模块。","的时候应该始终以驼峰格式(camelcase)命名,在父组件赋值的时候使用连接线(","相关接口","相关接口路径","示例:","租户管理","系统功能模块","组件名为多个单词,并且用连接线(","统一使用","统一放在文件顶部。","节点组件内部所用到公共的组件都在_source下,commcon.js用与配置公共数据","若同一组","规范","详情:https://vuex.vuejs.org/zh/guide/actions.html","详情:https://vuex.vuejs.org/zh/guide/getters.html","详情:https://vuex.vuejs.org/zh/guide/mutations.html","详情:https://vuex.vuejs.org/zh/guide/state.html","调用","资源中心","资源管理","路由和状态管理","路由地址","路由地址对应的页面文件","路由对应组件入口文件","路由指向页面目录","路由管理","过滤器和vue管道","这样就可以直接访问","这里遵循每个语言的特性,因为在","进行添加","连接。","连线插件库","逻辑控制中的元素逻辑相同,vue","遍历的时候,总是应该带上","都会注册进来","里的","错误返回","页面文件","项目","项目所需文件","项目目录结构","项目第三方资源本地化","项目管理","项目采用vue单页面应用(spa)开发","项目首页","首先在路由管理增加一个路由地址src/js/conf/home/router/index.j","首页","验证","验证函数","验证成功后讲当前组件的相关数据往父组件抛。","高性能的","默认","鼠标缩放效果处理",")。",")连接,避免与"],"architecture-design.html":["###","####","#####","######","*","**dag**","**quartz**","**sql任务**","**sub_process**","**两种命令类型是由调度内部控制使用,外部无法调用","**任务实例**:任务实例是流程定义中任务节点的实例化,标识着具体的任务执行状态","**任务类型**:","**优先级**","**依赖**:系统不单单支持","**失败策略**:对于并行运行的任务,如果有任务失败,提供两种失败策略处理方式,**继续**是指不管并行运行任务的状态,直到流程失败结束。**结束**是指一旦发现失败任务,则同时kill掉正在运行的并行任务,流程失败结束","**定时调度**:系统采用","**恢复等待线程","**恢复被容错的工作流**","**流程定义**:通过拖拽任务节点并建立任务节点的关联所形成的可视化**dag**","**流程实例**:流程实例是流程定义的实例化,可以通过手动启动或定时调度生成","**补数**:补历史数据,支持**区间并行和串行**两种补数方式","**调度方式:**","**邮件告警**:支持","*/","/**","1.","1.名词解释","2.1","2.2","2.3","2.任务失败重试","2.系统架构","acycl","alert","api","api向外部提供请求服务。","api接口层,主要负责处理前端ui层的请求。该服务统一提供rest","append","class","command","dag","dag示例","dag:","distribut","easyscheduler中scheduler线程分布式锁实现流程图:","easyscheduler使用zookeeper分布式锁来实现同一时刻只有一台master执行scheduler,或者只有一台worker执行任务的提交。","easyscheduler的去中心化是master/worker注册到zookeeper中,实现master集群和worker集群无中心,并使用zookeeper分布式锁来选举其中的一台master或worker为“管理者”来执行任务。","easyscheduler的架构原理及实现思路。后续会补充","extend","fetchtaskthread主要负责不断从task","fileappend","fileappender主要实现如下:","filter","graph,简称dag。工作流中的task任务以有向无环图的形式组装起来,从入度为零的节点进行拓扑遍历,直到无后继节点为止。举例如下图:","log","loggerserver是一个rpc服务,提供日志分片查看、刷新和下载等功能","master","masterexecthread主要是负责dag任务切分、任务提交监控、各种不同命令类型的逻辑处理","masterschedulerthread是一个扫描线程,定时扫描数据库中的","masterserv","masterserver服务启动时向zookeeper注册临时节点,通过监听zookeeper临时节点变化来进行容错处理。","masterserver采用分布式无中心设计理念,masterserver主要负责","mastertaskexecthread主要负责任务的持久化","master容错完成之后则重新由easyscheduler中scheduler线程调度,遍历","master容错流程图:","master的角色主要负责任务分发并监督slave的健康状态,可以动态的将任务均衡到slave上,以致slave节点不至于“忙死”或”闲死”的状态。","public","quartz分布式调度组件,主要负责定时任务的启停操作,当quartz调起任务后,master内部会有线程池具体负责处理任务的后续操作","queue","queue中是否已经存在,如果存在则同样监控任务实例的状态,如果不存在则重新提交任务实例。","queue中领取任务,并根据不同任务类型调用taskschedulethread对应执行器。","scheduler线程一旦发现任务实例为”","scheduler线程在获取command的时候是fifo的方式执行的。","subflowthread2等待subflowthread3结束,而subflowthread3等待线程池有新线程,则整个dag流程不能结束,从而其中的线程也不能释放。这样就形成的子父流程循环等待的状态。此时除非启动新的master来增加线程来打破这样的”僵局”,否则调度集群将不能再使用。","task","tasklogappend","tasklogfilt","tasklogfilter实现如下:","ui","workerserv","workerserver也采用分布式无中心设计理念,workerserver主要负责任务的执行和提供日志服务。workerserver服务启动时向zookeeper注册临时节点,并维持心跳。","worker容错流程图:","worker的角色主要负责任务的执行工作并维护和master的心跳,以便master可以分配任务给slave。","zookeep","zookeeper服务,系统中的masterserver和workerserver节点都通过zookeeper来进行集群管理和容错。另外系统还基于zookeeper进行事件监听和分布式锁。","一、去中心化vs中心化","一旦master出现了问题,则群龙无首,整个集群就会崩溃。为了解决这个问题,大多数master/slave架构模式都采用了主备master的设计方案,可以是热备或者冷备,也可以是自动切换或手动切换,而且越来越多的新系统都开始具备自动选举切换master的能力,以提升系统的可用性。","一种是业务节点,这种节点都对应一个实际的脚本或者处理语句,比如shell节点,mr节点、spark节点、依赖节点等。","三、线程不足循环等待问题","上图中mainflowthread等待subflowthread1结束,subflowthread1等待subflowthread2结束,","中心化思想","中心化思想设计存在的问题:","中心化的设计理念比较简单,分布式集群中的节点按照角色分工,大体上分为两种角色:","也是一个单独的流程定义,是可以单独启动执行的","二、分布式锁实践","于是我们选择了第三种方式来解决线程不足的问题。","五、任务优先级设计","介于考虑到尽可能的easyscheduler的轻量级性,所以选择了grpc实现远程访问日志信息。","以/流程定义id/流程实例id/任务实例id.log的形式生成日志","任务切分、任务提交监控,并同时监听其它masterserver和workerserver的健康状态。","任务失败重试是任务级别的,是调度系统自动进行的,比如一个shell任务设置重试次数为3次,那么在shell任务运行失败后会自己再最多尝试运行3次","任务的优先级也分为5级,依次为highest、high、medium、low、lowest。如下图","全称direct","六、logback和grpc实现日志访问","其中master监控其他master和worker的目录,如果监听到remove事件,则会根据具体的业务逻辑进行流程实例容错或者任务实例容错。","其中流程定义的优先级是考虑到有些流程需要先于其他流程进行处理,这个可以在流程启动或者定时启动时配置,共有5级,依次为highest、high、medium、low、lowest。如下图","具体实现是根据任务实例的json解析优先级,然后把**流程实例优先级_流程实例id_任务优先级_任务id**信息保存在zookeeper任务队列中,当从任务队列获取的时候,通过字符串比较即可得出最需要优先执行的任务","分布式调度器,并同时支持cron表达式可视化的生成","去中心化","去中心化设计的核心设计在于整个分布式系统中不存在一个区别于其他节点的”管理者”,因此不存在单点故障问题。但由于不存在”","另外一个问题是如果scheduler在master上,虽然可以支持一个dag中不同的任务运行在不同的机器上,但是会产生master的过负载。如果scheduler在slave上,则一个dag中所有的任务都只能在某一台机器上进行作业提交,则并行任务比较多的时候,slave的压力可能会比较大。","和","四、容错设计","在去中心化设计里,通常没有master/slave的概念,所有的角色都是一样的,地位是平等的,全球互联网就是一个典型的去中心化的分布式系统,联网的任意节点设备down机,都只会影响很小范围的功能。","在对系统架构说明之前,我们先来认识一下调度系统常用的名词","在早期调度设计中,如果没有优先级设计,采用公平调度设计的话,会遇到先行提交的任务可能会和后继提交的任务同时完成的情况,而不能做到设置流程或者任务的优先级,因此我们对此进行了重新设计,目前我们设计如下:","增加一种资源不足的command类型,如果线程池不足,则将主流程挂起。这样线程池就有了新的线程,可以让资源不足挂起的流程重新唤醒执行。","如果一个dag中没有子流程,则如果command中的数据条数大于线程池设置的阈值,则直接流程等待或失败。","如果一个大的dag中嵌套了很多子流程,如下图则会产生“死等”状态:","如果工作流中有任务失败达到最大重试次数,工作流就会失败停止,失败的工作流可以手动进行重跑操作或者流程恢复操作","宕机容错","实际上,真正去中心化的分布式系统并不多见。反而动态中心化分布式系统正在不断涌出。在这种架构下,集群中的管理者是被动态选择出来的,而不是预置的,并且集群在发生故障的时候,集群的节点会自发的举行\"会议\"来选举新的\"管理者\"去主持工作。最典型的案例就是zookeeper及go语言实现的etcd。","容错分为服务宕机容错和任务重试,服务宕机容错又分为master容错和worker容错两种情况","对于启动新master来打破僵局,似乎有点差强人意,于是我们提出了以下三种方案来降低这种风险:","对单master线程池进行判断,如果线程池已经满了,则让线程直接失败。","将日志放到es搜索引擎上","总结","我们也曾经基于redis实现过队列,不过我们希望easyscheduler依赖到的组件尽量地少,所以最后还是去掉了redis实现。","我们使用自定义logback的fileappender和filter功能,实现每个任务实例生成一个日志文件。","找到”正在运行”和“提交成功”的任务,对”正在运行”的任务监控其任务实例的状态,对”提交成功”的任务需要判断task","按照**不同流程实例优先级**优先于**同一个流程实例优先级**优先于**同一流程内任务优先级**优先于**同一流程内任务**提交顺序依次从高到低进行任务处理。","接下来说正题,我们将工作流中的任务节点分了两种类型。","接口包括工作流的创建、定义、查询、修改、发布、下线、手工启动、停止、暂停、恢复、从该节点开始执行等等。","提供任务队列的操作,目前队列也是基于zookeeper来实现。由于队列中存的信息较少,不必担心队列里数据过多的情况,实际上我们压测过百万级数据存队列,对系统稳定性和性能没影响。","提供告警相关接口,接口主要包括告警两种类型的告警数据的存储、查询和通知功能。其中通知功能又有邮件通知和snmp(暂未实现)两种。","服务容错设计依赖于zookeeper的watcher机制,实现原理如图:","本文从调度出发,初步介绍了大数据分布式工作流调度系统","架构设计思想","架构说明","查询结果邮件发送,流程实例运行结果邮件告警及容错告警通知","每一个**业务节点**都可以配置失败重试的次数,当该任务节点失败,会自动重试,直到成功或者超过配置的重试次数。**逻辑节点**不支持失败重试。但是逻辑节点里的任务支持重试。","注意:master","注意:由于”","流程失败恢复是流程级别的,是手动进行的,恢复是从只能**从失败的节点开始执行**或**从当前节点开始执行**","流程失败重跑也是流程级别的,是手动进行的,重跑是从开始节点进行","由于web(ui)和worker不一定在同一台机器上,所以查看日志不能像查询本地文件那样。有两种方案:","目前支持有shell、sql、sub_process、procedure、mr、spark、python、dependent,同时计划支持动态插件扩展,注意:其中子","简单的前驱和后继节点之间的依赖,同时还提供**任务依赖**节点,支持**流程间的自定义任务依赖**","管理者”节点所以每个节点都需要跟其他节点通信才得到必须要的机器信息,而分布式系统通信的不可靠行,则大大增加了上述功能的实现难度。","系统支持基于cron表达式的定时调度和手动调度。命令类型支持:启动工作流、从当前节点开始执行、恢复被容错的工作流、恢复暂停流程、从失败节点开始执行、补数、调度、重跑、暂停、停止、恢复等待线程。其中","系统架构图","系统架构设计","系统的前端页面,提供系统的各种可视化操作界面,详见使用手册部分。","网络抖动”可能会使得节点短时间内失去和zookeeper的心跳,从而发生节点的remove事件。对于这种情况,我们使用最简单的方式,那就是节点一旦和zookeeper发生超时连接,则直接将master或worker服务停掉。","获取分布式锁的核心流程算法如下","表,根据不同的命令类型进行不同的业务操作","计算所有master的线程总和,然后对每一个dag需要计算其需要的线程数,也就是在dag流程执行之前做预计算。因为是多master线程池,所以总线程数不太可能实时获取。","该服务内主要包含:","该服务包含:","调度系统架构设计","过滤匹配以taskloginfo开始的线程名称:","还有一种是逻辑节点,这种节点不做实际的脚本或语句处理,只是整个流程流转的逻辑处理,比如子流程节等。","这里首先要区分任务失败重试、流程失败恢复、流程失败重跑的概念:","通过grpc通信获取远程日志信息","需要容错”状态,则接管任务并进行重新提交。",":支持流程实例和任务实例的优先级,如果流程实例和任务实例的优先级不设置,则默认是先进先出"],"backend-deploy.html":["\"false\"","\"zookeeper\"","#","#============================================================================","#alert","#check","#default","#eschedul","#execut","#resource.view.suffix","#resourcemanag","#task","#the","#zookeep","&","'{password}';","'{user}'@'%'","'{user}'@'localhost'","(5.5+)","*",",","./bin/arklift",".escheduler_env.sh","/etc/sudo","1","1/10,","1/6,","10","1,创建部署用户","2","25","2>&1","2,根据实际需求来创建hdfs根路径","3,项目编译","4,修改配置文件","4,将环境变量文件复制到指定目录","5","5000","5,修改","5,创建目录并将环境变量文件复制到指定目录","60000","6,一键部署","6,启停服务","8",":","=",">","alert","alert.properti","alert.type=email","all=(all)","api","appli","application.properti","assembly:assembl","attribut","auto","avg","base","be","between","bin","charact","check","class","clean","close","cluster","collat","com.mysql.jdbc.driv","commit","common","common/common.properti","common/common.properties配置的escheduler.env.path","common/hadoop/hadoop.properti","concurr","conf","config","configur","configuration,","connect","connection,","content","copi","core","count","cpu","creat","d","daemon.sh","dao","dao/data_source.properti","dao数据源配置","data","data.basedir.path=/tmp/eschedul","data.download.basedir.path=/tmp/escheduler/download","data.store2hdfs.basepath=/eschedul","databas","datasourc","decreases.","default","destroy","detect","develop","development.state=fals","dir,","dirctori","directori","directory.","dmaven.test.skip=tru","download.","easyschedul","effici","email/sm","empti","enabl","env","equal","eschedul","escheduler.*","escheduler.env.path=/opt/.escheduler_env.sh","escheduler.env.pi","escheduler.env.py=/opt/escheduler_env.pi","escheduler.queue.impl=zookeep","escheduler_env.pi","evict","evicted,","execut","exist","export","failov","fair","fals","file","fine","flush","free","fs.defaultfs=hdfs://mycluster:8020","g.","grant","greater","h","ha","ha,","hadoop","hadoop(2.7.3)","hadoop_conf_dir=/opt/soft/hadoop/etc/hadoop","hadoop_home=\"/opt/soft/hadoop\"","hadoop_home=/opt/soft/hadoop","hdf","hdfs.startup.st","hdfs.startup.state=tru","heartbeat","hive(1.2.1)","hive_home=\"/opt/soft/hive\"","hive_home=/opt/soft/h","host","http","identifi","idl","implementation,","import","instal","install.sh","interv","ip","java_home=\"/opt/soft/java\"","java_home=/opt/soft/java","jdbc:mysql://192.168.xx.xx:3306/escheduler?characterencoding=utf8&usessl=fals","jobstor","kazoo","larger","less","lib","limit","load,","lock","logger","logs/","longer","longest","mail","mail.passwd=xxxxxxx","mail.protocol=smtp","mail.sender=xxxxxxx","mail.server.host=smtp.exmail.qq.com","mail.server.port=25","main","make","master","master.exec.task.number=20","master.exec.threads=100","master.heartbeat.interval=10","master.max.cpuload.avg=10","master.properti","master.reserved.memory=1","master.task.commit.interval=100","master.task.commit.retrytimes=5","master配置文件","max","maxwait,","memori","memory,","millis,","millisecond","milliseconds.","min","minevictableidletimemillis.","monitor_server.pi","mvn","myd","mysql","mysql>","name.","name=com.mysql.jdbc.driv","namenod","namenode,if","necessary,","need","nohup","nohup.out","nopasswd:","note","null,","num","number","on","open","org.quartz.datasource.myds.driv","org.quartz.datasource.myds.maxconnect","org.quartz.datasource.myds.password","org.quartz.datasource.myds.url","org.quartz.datasource.myds.us","org.quartz.datasource.myds.validationqueri","org.quartz.impl.jdbcjobstore.jobstoretx","org.quartz.impl.jdbcjobstore.stdjdbcdeleg","org.quartz.jobstore.class","org.quartz.jobstore.clustercheckininterv","org.quartz.jobstore.datasourc","org.quartz.jobstore.driverdelegateclass","org.quartz.jobstore.isclust","org.quartz.jobstore.misfirethreshold","org.quartz.jobstore.tableprefix","org.quartz.jobstore.useproperti","org.quartz.scheduler.instanceid","org.quartz.scheduler.instancenam","org.quartz.scheduler.makeschedulerthreaddaemon","org.quartz.simpl.simplethreadpool","org.quartz.threadpool.class","org.quartz.threadpool.makethreadsdaemon","org.quartz.threadpool.threadcount","org.quartz.threadpool.threadprior","os","os.putenv('path','%s'%path)","owner","packag","parallel","path","path,","path,ne","path.","path=\"%s/bin:%s/bin:%s/bin:%s/bin:%s/bin:%s/bin:%s\"%(hive_home,hadoop_home,spark_home1,spark_home2,java_home,python_home,path)","path=$hadoop_home/bin:$spark_home1/bin:$spark_home2/bin:$python_home/bin:$java_home/bin:$hive_home/bin:$path","path=/escheduler/","path=os.environ['path']","perform","permiss","permissions。\"/escheduler\"","physic","pip","pleas","port","post","postgresql(8.2.15+)","privileg","privileges;","process","process.exec.basepath=/tmp/escheduler/exec","properti","pscach","pscache,","python","python_home=\"/opt/soft/python\"","python_home=/opt/soft/python","python任务","p{password}","qrtz_","quartz.properti","queri","queue","read","recommend","remain","request","requir","requiretti","reserv","resourc","resource.view.suffixs=txt,log,sh,conf,cfg,py,java,sql,hql,xml","resourcemanag","resourcemanager,","retri","return","root","run","schedul","script","second","select","self","server","server.context","server.log","server.max","server.port=12345","server.session.timeout=7200","session","set","sh","shell任务","singl","site.xml","size","size=1024mb","size=5000000","sourc","spark(1.x,2.x)","spark_home1=\"/opt/soft/spark1\"","spark_home1=/opt/soft/spark1","spark_home2=\"/opt/soft/spark2\"","spark_home2=/opt/soft/spark2","specifi","spring","spring.datasource.defaultautocommit=tru","spring.datasource.driv","spring.datasource.initialsize=5","spring.datasource.keepalive=tru","spring.datasource.maxactive=50","spring.datasource.maxpoolpreparedstatementperconnectionsize=20","spring.datasource.maxwait=60000","spring.datasource.minevictableidletimemillis=300000","spring.datasource.minidle=5","spring.datasource.password=xx","spring.datasource.poolpreparedstatements=tru","spring.datasource.testonborrow=tru","spring.datasource.testonreturn=fals","spring.datasource.testwhileidle=tru","spring.datasource.timebetweenconnecterrormillis=60000","spring.datasource.timebetweenevictionrunsmillis=60000","spring.datasource.type=com.alibaba.druid.pool.druiddatasourc","spring.datasource.url=jdbc:mysql://192.168.xx.xx:3306/escheduler?characterencoding=utf","spring.datasource.username=xx","spring.datasource.validationquery=select","spring.datasource.validationquerytimeout=3","spring.http.multipart.max","sql","sql任务和postgresql","start","state?","statement.","stop","store","submit","sudo","sure","system","target/eschedul","task","testonborrow,","testonreturn,","testwhileidl","thread","threadpool","time","timeout,","true","true.","type","u","unfair","unit","upload","us","user","user}","useunfairlock","utf8","utf8_general_ci;","valid","valu","vi","wait","web配置文件","whether","without","work.","worker","worker.exec.threads=100","worker.fetch.task.num","worker.heartbeat.interval=10","worker.max.cpuload.avg=10","worker.properti","worker.reserved.memory=1","worker配置文件","write","xl","xls.file.path=/opt/xl","xx","yarn.application.status.address=http://ark1:8088/ws/v1/cluster/apps/%","yarn.resourcemanager.ha.rm.ids=192.168.xx.xx,192.168.xx.xx","zookeep","zookeeper(3.4.6)","zookeeper.connection.timeout=300","zookeeper.escheduler.dead.servers=/escheduler/dead","zookeeper.escheduler.lock.masters.failover=/escheduler/lock/failover/mast","zookeeper.escheduler.lock.masters=/escheduler/lock/mast","zookeeper.escheduler.lock.workers.failover=/escheduler/lock/failover/work","zookeeper.escheduler.lock.workers=/escheduler/lock/work","zookeeper.escheduler.masters=/escheduler/mast","zookeeper.escheduler.root=/eschedul","zookeeper.escheduler.workers=/escheduler/work","zookeeper.properti","zookeeper.quorum=192.168.xx.xx:2181,192.168.xx.xx:2181,192.168.xx.xx:2181","zookeeper.retry.maxtime=5","zookeeper.retry.sleep=1000","zookeeper.session.timeout=300","{db}","{host}","{linux","{user}","{version}/","{version}/conf","{version}/conf/env","{version}/sql/escheduler.sql和quartz.sql","|——","​","├──","一行","一键部署","一键部署脚本","下的data.basedir.path、data.download.basedir.path和process.exec.basepath路径","下面","两个环境变量文件复制到","中","中变量的值,替换成自身业务所需的值","主机器","伪分布式部署","使用部署用户","修改","修改为部署用户","修改为部署用户,否则忽略此步骤","修改配置文件和","分布式部署","创建","创建db和账号","创建表","创建部署用户","启停alert","启停api","启停logger","启停master","启停worker","和","和各个其它机器ssh打通","因为eschedul","在需要部署调度的机器上如上","基础服务启动脚本","基础软件安装","如上","如上进行","存储过程需要安装","安装","定时器配置文件","将","将.escheduler_env.sh","并且需要注释掉","必装","执行编译命令:","数据库初始化","文件","方式来执行作业,所以部署用户需要有","日志查看","日志统一存放于指定文件夹内","服务监控","权限,而且是免密的。","查看目录","根据","正常编译完后,会在当前目录生成","注意:在全部服务都启动之后启动","环境变量","环境变量配置","的目录下,并将","的配置来判断是否启动hdfs,如果启动,则需要创建hdfs根路径,并将","脚本是监听,master和worker服务挂掉重启的脚本","说明","说明:在","说明:配置文件位于","账号","选装,hive任务提交需要安装","选装,postgresql","选装,spark任务提交需要安装","通用配置文件配置,队列选择及地址配置,通用文件目录配置","部署文档","部署用户是","都是以","配置文件","配置文件说明","配置邮件告警信息","集群启动、停止和服务监控启停脚本","项目依赖jar包,包括各个模块jar和第三方jar","项目依赖sql文件","项目编译","项目配置文件",":必装",":选装,资源上传,mr任务提交需要安装"],"task-plugin-development.html":["=","abstractparamet","abstracttask","abstractyarntask","buildcommand","cn.escheduler.server.worker.task","daofactory.getdaoinstance(processdao.class);","exitstatuscod","handl","init","logger","logger)","logger);","new","processdao,设置相应的","props,","props.getenvfile(),","props.gettaskappid(),","props.gettaskdir(),","props.gettaskdir();","props.gettaskstarttime(),","props.gettasktimeout(),","props.gettenantcode(),","public","run","shellcommandexecutor","shellcommandexecutor(this::loghandle,","shelltask(taskprop","super(props,","taskmanag","taskprops和自定义logger,taskprop","this.processdao","this.processtask","this.taskdir","{","}","下的","中创建自定义任务","任务插件开发","传入自定义任务的","基于shell的任务","基于yarn的计算(参见mapreducetask)","基于非shell的任务(参见sqltask)","基于非yarn的计算(参见shelltask)","封装command","封装了任务的信息,logger分装了自定义日志信息","提醒:目前任务插件开发暂不支持热部署","方法中解析自定义任务参数","方法中解析自定义任务参数实体","方法中,解析自定义任务参数实体","方法实现业务逻辑并设置相应的exitstatuscod","方法,第一个参数传入自己的command,第二个参数传入","方法,调用","构造方法","构造方法中实例化","构造方法或者重写","构造方法调度","的","类中创建自定义任务(也需在tasktype注册对应的任务类型)","继承","自定义任务参数实体","自定义任务插件文档","重写","需要在","需要继承cn.escheduler.server.worker.task"]},"length":6},"tokenStore":{"root":{"0":{"7":{"docs":{},":":{"2":{"4":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}},"docs":{}},"docs":{}}},"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0068143100511073255}},".":{"0":{"docs":{},".":{"0":{"docs":{},".":{"0":{"docs":{},":":{"8":{"0":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}},"docs":{}},"docs":{},"*":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}},"docs":{}}},"docs":{}}},"docs":{}},":":{"docs":{},"关":{"docs":{},"闭":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}},",":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.002333722287047841}}}},"1":{"0":{"2":{"4":{"docs":{},"m":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}},"docs":{}},"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0020222446916076846}}},"1":{"docs":{},",":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}},"2":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}},"s":{"docs":{},";":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}},"9":{"2":{"docs":{},".":{"1":{"6":{"8":{"docs":{},".":{"6":{"docs":{},".":{"1":{"3":{"2":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}},"docs":{}},"docs":{}},"docs":{}}},"docs":{}}},"docs":{}},"docs":{}},"docs":{}}},"docs":{}},"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.005110732538330494},"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0020222446916076846}},")":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0034071550255536627},"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}},".":{"1":{"0":{"docs":{},".":{"1":{"docs":{},".":{"docs":{},"t":{"docs":{},"a":{"docs":{},"r":{"docs":{},".":{"docs":{},"g":{"docs":{},"z":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}}},"docs":{}}},"docs":{},";":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}},"6":{"docs":{},".":{"2":{"docs":{},".":{"docs":{},"t":{"docs":{},"a":{"docs":{},"r":{"docs":{},".":{"docs":{},"g":{"docs":{},"z":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}},"/":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}},"]":{"docs":{},"#":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.008517887563884156}}}}},"docs":{}}},"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314},"architecture-design.html":{"ref":"architecture-design.html","tf":0.011049723756906077}},"v":{"docs":{},"a":{"docs":{},"r":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}},"增":{"docs":{},"加":{"docs":{},"节":{"docs":{},"点":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}},"标":{"docs":{},"签":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}},"组":{"docs":{},"件":{"docs":{},"名":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}},"名":{"docs":{},"词":{"docs":{},"解":{"docs":{},"释":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}},":":{"docs":{},"关":{"docs":{},"闭":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}},"p":{"docs":{},"x":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}},";":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}},"}":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.002333722287047841}}},"/":{"1":{"0":{"docs":{},",":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}},"docs":{}},"6":{"docs":{},",":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}},"docs":{}},",":{"docs":{},"创":{"docs":{},"建":{"docs":{},"部":{"docs":{},"署":{"docs":{},"用":{"docs":{},"户":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0020222446916076846}}}}}}}}}},"2":{"0":{"0":{"docs":{},"p":{"docs":{},"x":{"docs":{},";":{"docs":{"./":{"ref":"./","tf":0.0078125}}}}}},"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}},"p":{"docs":{},"x":{"docs":{},";":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}},"3":{"4":{"5":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}},"docs":{}},"docs":{}},"5":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}},"7":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}},"9":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}},"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0020222446916076846}},")":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}},".":{"1":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}},"2":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}},"3":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}},"6":{"docs":{},".":{"3":{"2":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}},"docs":{}},"docs":{}}},"docs":{},"命":{"docs":{},"名":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}},"增":{"docs":{},"加":{"docs":{},"状":{"docs":{},"态":{"docs":{},"类":{"docs":{},"型":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}},"引":{"docs":{},"号":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}},"组":{"docs":{},"件":{"docs":{},"文":{"docs":{},"件":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}},"任":{"docs":{},"务":{"docs":{},"失":{"docs":{},"败":{"docs":{},"重":{"docs":{},"试":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}},"系":{"docs":{},"统":{"docs":{},"架":{"docs":{},"构":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}},":":{"docs":{},"启":{"docs":{},"用":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}},"}":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}},">":{"docs":{},"&":{"1":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}},"docs":{}}},",":{"docs":{},"根":{"docs":{},"据":{"docs":{},"实":{"docs":{},"际":{"docs":{},"需":{"docs":{},"求":{"docs":{},"来":{"docs":{},"创":{"docs":{},"建":{"docs":{},"h":{"docs":{},"d":{"docs":{},"f":{"docs":{},"s":{"docs":{},"根":{"docs":{},"路":{"docs":{},"径":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0020222446916076846}}}}}}}}}}}}}}}}}}}},"3":{"0":{"docs":{},"s":{"docs":{},";":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}},"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}},")":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}},":":{"docs":{},"启":{"docs":{},"用":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}},".":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"p":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}},"函":{"docs":{},"数":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}},"增":{"docs":{},"加":{"docs":{},"一":{"docs":{},"个":{"docs":{},"路":{"docs":{},"由":{"docs":{},"页":{"docs":{},"面":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}},"操":{"docs":{},"作":{"docs":{},"栏":{"docs":{},"工":{"docs":{},"具":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}},"属":{"docs":{},"性":{"docs":{},"缩":{"docs":{},"写":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}},"}":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}},",":{"docs":{},"项":{"docs":{},"目":{"docs":{},"编":{"docs":{},"译":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0020222446916076846}}}}}}}},"4":{"0":{"4":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}},"docs":{}},"3":{"1":{"docs":{},".":{"docs":{},"e":{"docs":{},"l":{"6":{"docs":{},".":{"docs":{},"i":{"6":{"8":{"6":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}},"docs":{}},"docs":{}},"docs":{}}}},"docs":{}}}}},"docs":{}},"docs":{},":":{"docs":{},"启":{"docs":{},"用":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}},"s":{"docs":{},";":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}},".":{"docs":{},"v":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}},"增":{"docs":{},"加":{"docs":{},"预":{"docs":{},"置":{"docs":{},"邮":{"docs":{},"箱":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}},"对":{"docs":{},"象":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}},"文":{"docs":{},"档":{"docs":{},"类":{"docs":{},"型":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}},"}":{"docs":{},")":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}},",":{"docs":{},"修":{"docs":{},"改":{"docs":{},"配":{"docs":{},"置":{"docs":{},"文":{"docs":{},"件":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}},"将":{"docs":{},"环":{"docs":{},"境":{"docs":{},"变":{"docs":{},"量":{"docs":{},"文":{"docs":{},"件":{"docs":{},"复":{"docs":{},"制":{"docs":{},"到":{"docs":{},"指":{"docs":{},"定":{"docs":{},"目":{"docs":{},"录":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}}}}},"5":{"0":{"0":{"0":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}},"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}},"2":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}},"3":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}},"4":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}},"docs":{}},"1":{"0":{"5":{"7":{"0":{"3":{"6":{"7":{"docs":{"./":{"ref":"./","tf":0.0078125}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}},":":{"docs":{},"启":{"docs":{},"用":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}},".":{"docs":{},"v":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}},"权":{"docs":{},"限":{"docs":{},"管":{"docs":{},"理":{"docs":{},"及":{"docs":{},"d":{"docs":{},"i":{"docs":{},"s":{"docs":{},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{},"e":{"docs":{},"d":{"docs":{},"状":{"docs":{},"态":{"docs":{},"处":{"docs":{},"理":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}}}}}},"模":{"docs":{},"块":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}},"注":{"docs":{},"释":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}},",":{"docs":{},"修":{"docs":{},"改":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}},"创":{"docs":{},"建":{"docs":{},"目":{"docs":{},"录":{"docs":{},"并":{"docs":{},"将":{"docs":{},"环":{"docs":{},"境":{"docs":{},"变":{"docs":{},"量":{"docs":{},"文":{"docs":{},"件":{"docs":{},"复":{"docs":{},"制":{"docs":{},"到":{"docs":{},"指":{"docs":{},"定":{"docs":{},"目":{"docs":{},"录":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}}}}}}}}}},"6":{"0":{"0":{"0":{"0":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}},"docs":{}},"docs":{}},"docs":{}},"8":{"1":{"0":{"docs":{},"/":{"docs":{},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{},":":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}}},"docs":{}},"docs":{}},"docs":{},":":{"docs":{},"关":{"docs":{},"闭":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}},".":{"0":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}},"docs":{},"指":{"docs":{},"令":{"docs":{},"缩":{"docs":{},"写":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}},",":{"docs":{},"一":{"docs":{},"键":{"docs":{},"部":{"docs":{},"署":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}},"启":{"docs":{},"停":{"docs":{},"服":{"docs":{},"务":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}},"7":{"docs":{},".":{"docs":{},"单":{"docs":{},"文":{"docs":{},"件":{"docs":{},"组":{"docs":{},"件":{"docs":{},"的":{"docs":{},"顶":{"docs":{},"级":{"docs":{},"元":{"docs":{},"素":{"docs":{},"顺":{"docs":{},"序":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}}},"8":{"8":{"8":{"8":{"docs":{},";":{"docs":{},"#":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}},"docs":{}},"docs":{}},"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}},".":{"9":{"docs":{},".":{"4":{"docs":{},")":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}},"docs":{}}},"docs":{}}},"9":{"9":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}},"docs":{}},"docs":{},"+":{"docs":{"./":{"ref":"./","tf":0.015625},"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.010221465076660987}},"x":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}},"/":{"4":{"0":{"4":{"docs":{},".":{"docs":{},"h":{"docs":{},"t":{"docs":{},"m":{"docs":{},"l":{"docs":{},";":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}},"docs":{}},"docs":{}},"5":{"0":{"docs":{},"x":{"docs":{},".":{"docs":{},"h":{"docs":{},"t":{"docs":{},"m":{"docs":{},"l":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0034071550255536627}},";":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}}},"docs":{}},"docs":{"./":{"ref":"./","tf":0.015625},"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314},"frontend-development.html":{"ref":"frontend-development.html","tf":0.008168028004667444}},"/":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.038506417736289385}},"单":{"docs":{},"独":{"docs":{},"安":{"docs":{},"装":{"docs":{},"n":{"docs":{},"o":{"docs":{},"d":{"docs":{},"e":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}}},"后":{"docs":{},"端":{"docs":{},"定":{"docs":{},"义":{"docs":{},"状":{"docs":{},"态":{"docs":{},"类":{"docs":{},"型":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"a":{"2":{"docs":{},"_":{"4":{"docs":{},"t":{"docs":{},"/":{"docs":{},"e":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"_":{"docs":{},"f":{"docs":{},"r":{"docs":{},"o":{"docs":{},"n":{"docs":{},"t":{"docs":{},"/":{"docs":{},"e":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"/":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}},"e":{"docs":{},"r":{"docs":{},";":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}},"(":{"docs":{},"服":{"docs":{},"务":{"docs":{},"器":{"docs":{},"静":{"docs":{},"态":{"docs":{},"页":{"docs":{},"面":{"docs":{},"存":{"docs":{},"放":{"docs":{},"目":{"docs":{},"录":{"docs":{},")":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}}},"docs":{}}}},"e":{"docs":{},"v":{"docs":{},"/":{"docs":{},"c":{"docs":{},"d":{"docs":{},"r":{"docs":{},"o":{"docs":{},"m":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}}}},"e":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}},"t":{"docs":{},"c":{"docs":{},"/":{"docs":{},"i":{"docs":{},"n":{"docs":{},"i":{"docs":{},"t":{"docs":{},".":{"docs":{},"d":{"docs":{},"/":{"docs":{},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0034071550255536627}}}}}}}}}}}}}},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{},"/":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{},".":{"docs":{},"d":{"docs":{},"/":{"docs":{},"d":{"docs":{},"e":{"docs":{},"f":{"docs":{},"a":{"docs":{},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}}}}}}}}}}}}}},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}}}}}}}}}}},"y":{"docs":{},"u":{"docs":{},"m":{"docs":{},".":{"docs":{},"r":{"docs":{},"e":{"docs":{},"p":{"docs":{},"o":{"docs":{},"s":{"docs":{},".":{"docs":{},"d":{"docs":{},"/":{"docs":{},"y":{"docs":{},"u":{"docs":{},"m":{"docs":{},".":{"docs":{},"r":{"docs":{},"e":{"docs":{},"p":{"docs":{},"o":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"u":{"docs":{},"d":{"docs":{},"o":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}},"m":{"docs":{},"n":{"docs":{},"t":{"docs":{},"/":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}},"s":{"docs":{},"b":{"docs":{},"i":{"docs":{},"n":{"docs":{},"/":{"docs":{},"n":{"docs":{},"o":{"docs":{},"l":{"docs":{},"o":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}}}}}}},"u":{"docs":{},"s":{"docs":{},"r":{"docs":{},"/":{"docs":{},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{},"a":{"docs":{},"l":{"docs":{},"/":{"docs":{},"b":{"docs":{},"i":{"docs":{},"n":{"docs":{},"/":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0034071550255536627}}}}}}}}}}},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}},"/":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{},"/":{"docs":{},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0068143100511073255}}}}}}}}}}}}}}}}},"s":{"docs":{},"b":{"docs":{},"i":{"docs":{},"n":{"docs":{},"/":{"docs":{},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.005110732538330494}}}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"h":{"docs":{},"a":{"docs":{},"r":{"docs":{},"e":{"docs":{},"/":{"docs":{},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{},"/":{"docs":{},"h":{"docs":{},"t":{"docs":{},"m":{"docs":{},"l":{"docs":{},";":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}}}}}}}}}}},"r":{"docs":{},"c":{"docs":{},"/":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}}}}}}}},"v":{"docs":{},"a":{"docs":{},"r":{"docs":{},"/":{"docs":{},"l":{"docs":{},"o":{"docs":{},"g":{"docs":{},"/":{"docs":{},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{},"/":{"docs":{},"h":{"docs":{},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{},".":{"docs":{},"a":{"docs":{},"c":{"docs":{},"c":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},".":{"docs":{},"l":{"docs":{},"o":{"docs":{},"g":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"*":{"docs":{},"*":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.002333722287047841},"architecture-design.html":{"ref":"architecture-design.html","tf":0.011049723756906077}}}}},":":{"8":{"0":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.005110732538330494}}},"docs":{}},"docs":{"./":{"ref":"./","tf":0.0078125},"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.014155712841253791}}},"a":{"docs":{},"d":{"docs":{},"d":{"docs":{"./":{"ref":"./","tf":0.0078125},"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}},"i":{"docs":{},"r":{"docs":{},"f":{"docs":{},"l":{"docs":{},"o":{"docs":{},"w":{"docs":{"./":{"ref":"./","tf":0.0078125}}}}}}}},"z":{"docs":{},"k":{"docs":{},"a":{"docs":{},"b":{"docs":{},"a":{"docs":{},"n":{"docs":{"./":{"ref":"./","tf":0.0078125}}}}}}}},"n":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314},"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}},"p":{"docs":{},"t":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.005110732538330494}}}},"a":{"docs":{},"l":{"docs":{},"y":{"docs":{},"s":{"docs":{},"i":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}},"p":{"docs":{},"i":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384},"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.004044489383215369}},"_":{"docs":{},"b":{"docs":{},"a":{"docs":{},"s":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}},"向":{"docs":{},"外":{"docs":{},"部":{"docs":{},"提":{"docs":{},"供":{"docs":{},"请":{"docs":{},"求":{"docs":{},"服":{"docs":{},"务":{"docs":{},"。":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}},"接":{"docs":{},"口":{"docs":{},"层":{"docs":{},",":{"docs":{},"主":{"docs":{},"要":{"docs":{},"负":{"docs":{},"责":{"docs":{},"处":{"docs":{},"理":{"docs":{},"前":{"docs":{},"端":{"docs":{},"u":{"docs":{},"i":{"docs":{},"层":{"docs":{},"的":{"docs":{},"请":{"docs":{},"求":{"docs":{},"。":{"docs":{},"该":{"docs":{},"服":{"docs":{},"务":{"docs":{},"统":{"docs":{},"一":{"docs":{},"提":{"docs":{},"供":{"docs":{},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"p":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}},".":{"docs":{},"j":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}},"e":{"docs":{},"n":{"docs":{},"d":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}},"l":{"docs":{},"i":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0020222446916076846}},"c":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},".":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"t":{"docs":{},"i":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}}}}}}}},":":{"1":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}},"docs":{}},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}},"y":{"docs":{},"c":{"docs":{},"l":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}},"r":{"docs":{},"t":{"docs":{},"i":{"docs":{},"c":{"docs":{},"l":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{},"u":{"docs":{},"s":{"docs":{},":":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}},"t":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},":":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}},"e":{"docs":{},":":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}},"m":{"docs":{},":":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}},"z":{"docs":{},":":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}},"i":{"docs":{},"b":{"docs":{},"u":{"docs":{},"t":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"t":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384},"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.004044489383215369}},".":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"t":{"docs":{},"i":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}},"t":{"docs":{},"y":{"docs":{},"p":{"docs":{},"e":{"docs":{},"=":{"docs":{},"e":{"docs":{},"m":{"docs":{},"a":{"docs":{},"i":{"docs":{},"l":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}}},"l":{"docs":{},"=":{"docs":{},"(":{"docs":{},"a":{"docs":{},"l":{"docs":{},"l":{"docs":{},")":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}},"s":{"docs":{},"s":{"docs":{},"e":{"docs":{},"m":{"docs":{},"b":{"docs":{},"l":{"docs":{},"y":{"docs":{},":":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"e":{"docs":{},"m":{"docs":{},"b":{"docs":{},"l":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}}}},"u":{"docs":{},"t":{"docs":{},"o":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}},"v":{"docs":{},"g":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0020222446916076846}}}},"b":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{"task-plugin-development.html":{"ref":"task-plugin-development.html","tf":0.02912621359223301}}}}}}}}},"t":{"docs":{},"a":{"docs":{},"s":{"docs":{},"k":{"docs":{"task-plugin-development.html":{"ref":"task-plugin-development.html","tf":0.04854368932038835}}}}}},"y":{"docs":{},"a":{"docs":{},"r":{"docs":{},"n":{"docs":{},"t":{"docs":{},"a":{"docs":{},"s":{"docs":{},"k":{"docs":{"task-plugin-development.html":{"ref":"task-plugin-development.html","tf":0.019417475728155338}}}}}}}}}}}}}}}}}},"b":{"docs":{},"a":{"docs":{},"l":{"docs":{},"a":{"docs":{},"n":{"docs":{},"c":{"docs":{"./":{"ref":"./","tf":0.0078125}}}}}},"s":{"docs":{},"h":{"docs":{},"o":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"、":{"docs":{},"d":{"docs":{},"u":{"docs":{},"m":{"docs":{},"m":{"docs":{},"y":{"docs":{},"o":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"、":{"docs":{},"m":{"docs":{},"y":{"docs":{},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{},"o":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"、":{"docs":{},"h":{"docs":{},"i":{"docs":{},"v":{"docs":{},"e":{"docs":{},"o":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"、":{"docs":{},"e":{"docs":{},"m":{"docs":{},"a":{"docs":{},"i":{"docs":{},"l":{"docs":{},"o":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"、":{"docs":{},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},"o":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"、":{"docs":{},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{},"o":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.0078125}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"e":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0020222446916076846}},"u":{"docs":{},"r":{"docs":{},"l":{"docs":{},"=":{"docs":{},"f":{"docs":{},"i":{"docs":{},"l":{"docs":{},"e":{"docs":{},":":{"docs":{},"/":{"docs":{},"/":{"docs":{},"/":{"docs":{},"m":{"docs":{},"n":{"docs":{},"t":{"docs":{},"/":{"docs":{},"p":{"docs":{},"a":{"docs":{},"c":{"docs":{},"k":{"docs":{},"a":{"docs":{},"g":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}}}}}}}}}}}}}}}}}}},"r":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.003500583430571762}}}},"i":{"docs":{},"g":{"docs":{"./":{"ref":"./","tf":0.0078125}}},"n":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0020222446916076846}},"d":{"docs":{},",":{"docs":{},"v":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}},"u":{"docs":{},"i":{"docs":{},"l":{"docs":{},"d":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0034071550255536627},"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"m":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{"task-plugin-development.html":{"ref":"task-plugin-development.html","tf":0.009708737864077669}}}}}}}}}}}}},":":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.002333722287047841}}},"e":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"(":{"docs":{},")":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}},"d":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"o":{"docs":{},"y":{"docs":{},"(":{"docs":{},")":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}},"m":{"docs":{},"o":{"docs":{},"u":{"docs":{},"n":{"docs":{},"t":{"docs":{},"(":{"docs":{},")":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}},"u":{"docs":{},"p":{"docs":{},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"(":{"docs":{},")":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}},"t":{"docs":{},"w":{"docs":{},"e":{"docs":{},"e":{"docs":{},"n":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}},"o":{"docs":{},"o":{"docs":{},"l":{"docs":{},"e":{"docs":{},"a":{"docs":{},"n":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}},"r":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.003500583430571762}},":":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}},"c":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.008517887563884156}},"e":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"i":{"docs":{"./":{"ref":"./","tf":0.0078125}}}}}}},"p":{"docs":{},"u":{"docs":{"./":{"ref":"./","tf":0.0078125},"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.004044489383215369}}}},"\"":{"docs":{},"选":{"docs":{},"项":{"docs":{},"来":{"docs":{},"指":{"docs":{},"定":{"docs":{},"路":{"docs":{},"径":{"docs":{},"。":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}}}},"+":{"docs":{},"+":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}},"a":{"docs":{},"s":{"docs":{},"e":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}},"c":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}},"d":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0034071550255536627}}},"h":{"docs":{},"e":{"docs":{},"c":{"docs":{},"k":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0034071550255536627},"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.005055611729019211}}}}},"k":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{},"i":{"docs":{},"g":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.005110732538330494}},":":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}}},"m":{"docs":{},"o":{"docs":{},"d":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}},"o":{"docs":{},"w":{"docs":{},"n":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}},"a":{"docs":{},"r":{"docs":{},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}},"l":{"docs":{},"i":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"_":{"docs":{},"m":{"docs":{},"a":{"docs":{},"x":{"docs":{},"_":{"docs":{},"b":{"docs":{},"o":{"docs":{},"d":{"docs":{},"y":{"docs":{},"_":{"docs":{},"s":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}}}}}}}}}},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206},"architecture-design.html":{"ref":"architecture-design.html","tf":0.011049723756906077},"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}},"e":{"docs":{},"a":{"docs":{},"n":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}},"o":{"docs":{},"s":{"docs":{},"e":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0020222446916076846}}}}},"u":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}},"n":{"docs":{},"p":{"docs":{},"m":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0034071550255536627}}}},".":{"docs":{},"e":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},".":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},".":{"docs":{},"w":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{},"e":{"docs":{},"r":{"docs":{},".":{"docs":{},"t":{"docs":{},"a":{"docs":{},"s":{"docs":{},"k":{"docs":{"task-plugin-development.html":{"ref":"task-plugin-development.html","tf":0.02912621359223301}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"o":{"docs":{},"m":{"docs":{},"p":{"docs":{},"i":{"docs":{},"l":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0034071550255536627}}}},"o":{"docs":{},"n":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.002333722287047841}},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},":":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}},"s":{"docs":{},":":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}},"u":{"docs":{},"t":{"docs":{},"e":{"docs":{},"d":{"docs":{},":":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}},"b":{"docs":{},"o":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}},"具":{"docs":{},"体":{"docs":{},"查":{"docs":{},"看":{"docs":{},"b":{"docs":{},"u":{"docs":{},"i":{"docs":{},"l":{"docs":{},"d":{"docs":{},"/":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"b":{"docs":{},"o":{"docs":{},".":{"docs":{},"j":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}}}}}}}},"m":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}},"i":{"docs":{},"t":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0020222446916076846}}}},"o":{"docs":{},"n":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}},"/":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"m":{"docs":{},"o":{"docs":{},"n":{"docs":{},".":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"t":{"docs":{},"i":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.004044489383215369}},"e":{"docs":{},"s":{"docs":{},"配":{"docs":{},"置":{"docs":{},"的":{"docs":{},"e":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},".":{"docs":{},"e":{"docs":{},"n":{"docs":{},"v":{"docs":{},".":{"docs":{},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0020222446916076846}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"h":{"docs":{},"a":{"docs":{},"d":{"docs":{},"o":{"docs":{},"o":{"docs":{},"p":{"docs":{},"/":{"docs":{},"h":{"docs":{},"a":{"docs":{},"d":{"docs":{},"o":{"docs":{},"o":{"docs":{},"p":{"docs":{},".":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"t":{"docs":{},"i":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}}}}}}}}}}}}}}},".":{"docs":{},"m":{"docs":{},"y":{"docs":{},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{},".":{"docs":{},"j":{"docs":{},"d":{"docs":{},"b":{"docs":{},"c":{"docs":{},".":{"docs":{},"d":{"docs":{},"r":{"docs":{},"i":{"docs":{},"v":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}}}}}},"n":{"docs":{},"f":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.003033367037411527}},"]":{"docs":{},"#":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.008517887563884156}}}},"i":{"docs":{},"g":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}},"u":{"docs":{},"r":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0034071550255536627},"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.011122345803842264}},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},",":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.005055611729019211}}}}}}}}}}}}},"n":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314},"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.01820020222446916}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},",":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}},"t":{"docs":{},"r":{"docs":{},"o":{"docs":{},"l":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}},"d":{"docs":{},"i":{"docs":{},"t":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},".":{"docs":{},"v":{"docs":{},"u":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}},"s":{"docs":{},"o":{"docs":{},"l":{"docs":{},"e":{"docs":{},".":{"docs":{},"l":{"docs":{},"o":{"docs":{},"g":{"docs":{},"(":{"docs":{},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},")":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}},"t":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.011668611435239206}},"。":{"docs":{},"任":{"docs":{},"何":{"docs":{},"一":{"docs":{},"个":{"docs":{},"变":{"docs":{},"量":{"docs":{},"的":{"docs":{},"使":{"docs":{},"用":{"docs":{},"都":{"docs":{},"要":{"docs":{},"提":{"docs":{},"前":{"docs":{},"申":{"docs":{},"明":{"docs":{},",":{"docs":{},"除":{"docs":{},"了":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}}}}}}}},",":{"docs":{},"优":{"docs":{},"先":{"docs":{},"使":{"docs":{},"用":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}},"c":{"docs":{},"u":{"docs":{},"r":{"docs":{},"r":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}},"d":{"docs":{},"e":{"docs":{},":":{"0":{"docs":{},",":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}},"1":{"0":{"0":{"0":{"0":{"docs":{},",":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}},"l":{"docs":{},"o":{"docs":{},"r":{"docs":{},":":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.003500583430571762}}}}},"l":{"docs":{},"a":{"docs":{},"t":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}},"p":{"docs":{},"i":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}},"r":{"docs":{},"e":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.003033367037411527}}}},"u":{"docs":{},"n":{"docs":{},"t":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}},":":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"t":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0020222446916076846}},"e":{"docs":{},"d":{"docs":{},"(":{"docs":{},")":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}},"s":{"docs":{},"s":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.003500583430571762}}}}},"d":{"3":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314},"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}},"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}},"a":{"docs":{},"g":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.002333722287047841},"architecture-design.html":{"ref":"architecture-design.html","tf":0.011049723756906077}},"监":{"docs":{},"控":{"docs":{},"界":{"docs":{},"面":{"docs":{"./":{"ref":"./","tf":0.0078125}}}}}},"示":{"docs":{},"例":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}},":":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}},"s":{"docs":{},"k":{"docs":{"./":{"ref":"./","tf":0.0078125}}}},"t":{"docs":{},"a":{"docs":{"./":{"ref":"./","tf":0.0078125},"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.004044489383215369}},"(":{"docs":{},")":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}},":":{"docs":{},"{":{"docs":{},"}":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.002333722287047841}}}}},"s":{"docs":{},"o":{"docs":{},"u":{"docs":{},"r":{"docs":{},"c":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206},"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}},"e":{"docs":{},":":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}},".":{"docs":{},"b":{"docs":{},"a":{"docs":{},"s":{"docs":{},"e":{"docs":{},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{},".":{"docs":{},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{},"=":{"docs":{},"/":{"docs":{},"t":{"docs":{},"m":{"docs":{},"p":{"docs":{},"/":{"docs":{},"e":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}}}}}}}}}}}}}}},"d":{"docs":{},"o":{"docs":{},"w":{"docs":{},"n":{"docs":{},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{},".":{"docs":{},"b":{"docs":{},"a":{"docs":{},"s":{"docs":{},"e":{"docs":{},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{},".":{"docs":{},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{},"=":{"docs":{},"/":{"docs":{},"t":{"docs":{},"m":{"docs":{},"p":{"docs":{},"/":{"docs":{},"e":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"/":{"docs":{},"d":{"docs":{},"o":{"docs":{},"w":{"docs":{},"n":{"docs":{},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"e":{"2":{"docs":{},"h":{"docs":{},"d":{"docs":{},"f":{"docs":{},"s":{"docs":{},".":{"docs":{},"b":{"docs":{},"a":{"docs":{},"s":{"docs":{},"e":{"docs":{},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{},"=":{"docs":{},"/":{"docs":{},"e":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}}}}}}},"b":{"docs":{},"a":{"docs":{},"s":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}},"e":{"docs":{},"m":{"docs":{},"o":{"docs":{},"n":{"docs":{},".":{"docs":{},"s":{"docs":{},"h":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.010111223458038422}}}}}}}}},"o":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}},"/":{"docs":{},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"a":{"docs":{},"_":{"docs":{},"s":{"docs":{},"o":{"docs":{},"u":{"docs":{},"r":{"docs":{},"c":{"docs":{},"e":{"docs":{},".":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"t":{"docs":{},"i":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}}}}}}}}}},"数":{"docs":{},"据":{"docs":{},"源":{"docs":{},"配":{"docs":{},"置":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}},"f":{"docs":{},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"y":{"docs":{},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"d":{"docs":{},"a":{"docs":{},"o":{"docs":{},"i":{"docs":{},"n":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"n":{"docs":{},"c":{"docs":{},"e":{"docs":{},"(":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"c":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},"d":{"docs":{},"a":{"docs":{},"o":{"docs":{},".":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},")":{"docs":{},";":{"docs":{"task-plugin-development.html":{"ref":"task-plugin-development.html","tf":0.009708737864077669}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"b":{"docs":{"./":{"ref":"./","tf":0.015625}}},"e":{"docs":{},"v":{"docs":{},"e":{"docs":{},"l":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.005110732538330494}},"o":{"docs":{},"p":{"docs":{"./":{"ref":"./","tf":0.0078125},"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},".":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"=":{"docs":{},"f":{"docs":{},"a":{"docs":{},"l":{"docs":{},"s":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"c":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.003500583430571762}},"r":{"docs":{},"i":{"docs":{},"p":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},":":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}}},":":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.003500583430571762}}}},"t":{"docs":{},"r":{"docs":{},"o":{"docs":{},"y":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}},"e":{"docs":{},"d":{"docs":{},"(":{"docs":{},")":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}},"f":{"docs":{},"a":{"docs":{},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.004667444574095682},"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.011122345803842264}},":":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}},",":{"docs":{},"否":{"docs":{},"则":{"docs":{},"不":{"docs":{},"用":{"docs":{},"。":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}},"c":{"docs":{},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"s":{"docs":{},"e":{"docs":{},"s":{"docs":{},".":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}},"t":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0020222446916076846}}}}}}},"u":{"docs":{},"m":{"docs":{},"p":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}},"i":{"docs":{},"s":{"docs":{},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{},"e":{"docs":{},",":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}},":":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}},"d":{"docs":{},"处":{"docs":{},"理":{"docs":{},":":{"docs":{},"s":{"docs":{},"r":{"docs":{},"c":{"docs":{},"/":{"docs":{},"j":{"docs":{},"s":{"docs":{},"/":{"docs":{},"m":{"docs":{},"o":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"/":{"docs":{},"m":{"docs":{},"i":{"docs":{},"x":{"docs":{},"i":{"docs":{},"n":{"docs":{},"/":{"docs":{},"d":{"docs":{},"i":{"docs":{},"s":{"docs":{},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{},"e":{"docs":{},"d":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},".":{"docs":{},"j":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"t":{"docs":{},"r":{"docs":{},"i":{"docs":{},"b":{"docs":{},"u":{"docs":{},"t":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}},"r":{"docs":{},",":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}},"c":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0020222446916076846}}}}}}},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.011122345803842264}}},"y":{"docs":{},".":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}},"o":{"docs":{},"m":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}},"w":{"docs":{},"n":{"docs":{},"c":{"docs":{},"h":{"docs":{},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{},".":{"docs":{},"j":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}},".":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}},"r":{"docs":{},"a":{"docs":{},"g":{"docs":{},"z":{"docs":{},"o":{"docs":{},"o":{"docs":{},"m":{"docs":{},".":{"docs":{},"j":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}},"m":{"docs":{},"a":{"docs":{},"v":{"docs":{},"e":{"docs":{},"n":{"docs":{},".":{"docs":{},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},".":{"docs":{},"s":{"docs":{},"k":{"docs":{},"i":{"docs":{},"p":{"docs":{},"=":{"docs":{},"t":{"docs":{},"r":{"docs":{},"u":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}}}}}}}}},"e":{"docs":{},"a":{"docs":{},"s":{"docs":{},"i":{"docs":{"./":{"ref":"./","tf":0.015625}}},"y":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{"./":{"ref":"./","tf":0.0078125},"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}},"e":{"docs":{},"r":{"docs":{},"上":{"docs":{},"的":{"docs":{},"用":{"docs":{},"户":{"docs":{},"可":{"docs":{},"以":{"docs":{},"通":{"docs":{},"过":{"docs":{},"租":{"docs":{},"户":{"docs":{},"和":{"docs":{},"h":{"docs":{},"a":{"docs":{},"d":{"docs":{},"o":{"docs":{},"o":{"docs":{},"p":{"docs":{},"用":{"docs":{},"户":{"docs":{},"实":{"docs":{},"现":{"docs":{},"多":{"docs":{},"对":{"docs":{},"一":{"docs":{},"或":{"docs":{},"一":{"docs":{},"对":{"docs":{},"一":{"docs":{},"的":{"docs":{},"映":{"docs":{},"射":{"docs":{},"关":{"docs":{},"系":{"docs":{},",":{"docs":{},"这":{"docs":{},"对":{"docs":{},"大":{"docs":{},"数":{"docs":{},"据":{"docs":{},"作":{"docs":{},"业":{"docs":{},"的":{"docs":{},"调":{"docs":{},"度":{"docs":{},"是":{"docs":{},"非":{"docs":{},"常":{"docs":{},"重":{"docs":{},"要":{"docs":{},"的":{"docs":{},"。":{"docs":{"./":{"ref":"./","tf":0.0078125}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"简":{"docs":{},"介":{"docs":{"./":{"ref":"./","tf":10}}}},"`":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}},"中":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"线":{"docs":{},"程":{"docs":{},"分":{"docs":{},"布":{"docs":{},"式":{"docs":{},"锁":{"docs":{},"实":{"docs":{},"现":{"docs":{},"流":{"docs":{},"程":{"docs":{},"图":{"docs":{},":":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}},"使":{"docs":{},"用":{"docs":{},"z":{"docs":{},"o":{"docs":{},"o":{"docs":{},"k":{"docs":{},"e":{"docs":{},"e":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"分":{"docs":{},"布":{"docs":{},"式":{"docs":{},"锁":{"docs":{},"来":{"docs":{},"实":{"docs":{},"现":{"docs":{},"同":{"docs":{},"一":{"docs":{},"时":{"docs":{},"刻":{"docs":{},"只":{"docs":{},"有":{"docs":{},"一":{"docs":{},"台":{"docs":{},"m":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"执":{"docs":{},"行":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},",":{"docs":{},"或":{"docs":{},"者":{"docs":{},"只":{"docs":{},"有":{"docs":{},"一":{"docs":{},"台":{"docs":{},"w":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{},"e":{"docs":{},"r":{"docs":{},"执":{"docs":{},"行":{"docs":{},"任":{"docs":{},"务":{"docs":{},"的":{"docs":{},"提":{"docs":{},"交":{"docs":{},"。":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"的":{"docs":{},"去":{"docs":{},"中":{"docs":{},"心":{"docs":{},"化":{"docs":{},"是":{"docs":{},"m":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"/":{"docs":{},"w":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{},"e":{"docs":{},"r":{"docs":{},"注":{"docs":{},"册":{"docs":{},"到":{"docs":{},"z":{"docs":{},"o":{"docs":{},"o":{"docs":{},"k":{"docs":{},"e":{"docs":{},"e":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"中":{"docs":{},",":{"docs":{},"实":{"docs":{},"现":{"docs":{},"m":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"集":{"docs":{},"群":{"docs":{},"和":{"docs":{},"w":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{},"e":{"docs":{},"r":{"docs":{},"集":{"docs":{},"群":{"docs":{},"无":{"docs":{},"中":{"docs":{},"心":{"docs":{},",":{"docs":{},"并":{"docs":{},"使":{"docs":{},"用":{"docs":{},"z":{"docs":{},"o":{"docs":{},"o":{"docs":{},"k":{"docs":{},"e":{"docs":{},"e":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"分":{"docs":{},"布":{"docs":{},"式":{"docs":{},"锁":{"docs":{},"来":{"docs":{},"选":{"docs":{},"举":{"docs":{},"其":{"docs":{},"中":{"docs":{},"的":{"docs":{},"一":{"docs":{},"台":{"docs":{},"m":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"或":{"docs":{},"w":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{},"e":{"docs":{},"r":{"docs":{},"为":{"docs":{},"“":{"docs":{},"管":{"docs":{},"理":{"docs":{},"者":{"docs":{},"”":{"docs":{},"来":{"docs":{},"执":{"docs":{},"行":{"docs":{},"任":{"docs":{},"务":{"docs":{},"。":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"架":{"docs":{},"构":{"docs":{},"原":{"docs":{},"理":{"docs":{},"及":{"docs":{},"实":{"docs":{},"现":{"docs":{},"思":{"docs":{},"路":{"docs":{},"。":{"docs":{},"后":{"docs":{},"续":{"docs":{},"会":{"docs":{},"补":{"docs":{},"充":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"x":{"docs":{},"e":{"docs":{},"c":{"docs":{},"u":{"docs":{},"t":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.005055611729019211}},"o":{"docs":{},"r":{"docs":{},"水":{"docs":{},"平":{"docs":{},"扩":{"docs":{},"展":{"docs":{"./":{"ref":"./","tf":0.015625}}}}}}}}}}}},"i":{"docs":{},"t":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0034071550255536627}},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{},"u":{"docs":{},"s":{"docs":{},"c":{"docs":{},"o":{"docs":{},"d":{"docs":{"task-plugin-development.html":{"ref":"task-plugin-development.html","tf":0.009708737864077669}}}}}}}}}}}},"s":{"docs":{},"t":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.006066734074823054}}}}},"p":{"docs":{},"o":{"docs":{},"r":{"docs":{},"t":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.007001166861143524},"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.008088978766430738}}}}}},"t":{"docs":{},"e":{"docs":{},"n":{"docs":{},"d":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.011049723756906077}}}}}}},"c":{"docs":{},"h":{"docs":{},"o":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}},"m":{"docs":{},"a":{"docs":{},"s":{"docs":{},"c":{"docs":{},"r":{"docs":{},"i":{"docs":{},"p":{"docs":{},"t":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}},"l":{"docs":{},"i":{"docs":{},"n":{"docs":{},"k":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0034071550255536627}}}}}},"n":{"docs":{},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314},"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"p":{"docs":{},"r":{"docs":{},"i":{"docs":{},"s":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}},"v":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}},"p":{"docs":{},"e":{"docs":{},"l":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}},"r":{"docs":{},"r":{"docs":{},"o":{"docs":{},"r":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0034071550255536627}},":":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}},"_":{"docs":{},"p":{"docs":{},"a":{"docs":{},"g":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}}},"s":{"6":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314},"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}},"docs":{},"a":{"docs":{},"c":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314},"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.01314459049544995}},"e":{"docs":{},"r":{"docs":{},":":{"docs":{},"e":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}}}},"项":{"docs":{},"目":{"docs":{},"前":{"docs":{},"端":{"docs":{},"技":{"docs":{},"术":{"docs":{},"栈":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}},"目":{"docs":{},"录":{"docs":{},"并":{"docs":{},"执":{"docs":{},"行":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}},".":{"docs":{},"*":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0020222446916076846}}},"e":{"docs":{},"n":{"docs":{},"v":{"docs":{},".":{"docs":{},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{},"=":{"docs":{},"/":{"docs":{},"o":{"docs":{},"p":{"docs":{},"t":{"docs":{},"/":{"docs":{},".":{"docs":{},"e":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"_":{"docs":{},"e":{"docs":{},"n":{"docs":{},"v":{"docs":{},".":{"docs":{},"s":{"docs":{},"h":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"i":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0020222446916076846}}},"y":{"docs":{},"=":{"docs":{},"/":{"docs":{},"o":{"docs":{},"p":{"docs":{},"t":{"docs":{},"/":{"docs":{},"e":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"_":{"docs":{},"e":{"docs":{},"n":{"docs":{},"v":{"docs":{},".":{"docs":{},"p":{"docs":{},"i":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"u":{"docs":{},"e":{"docs":{},".":{"docs":{},"i":{"docs":{},"m":{"docs":{},"p":{"docs":{},"l":{"docs":{},"=":{"docs":{},"z":{"docs":{},"o":{"docs":{},"o":{"docs":{},"k":{"docs":{},"e":{"docs":{},"e":{"docs":{},"p":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}}}}}}}},"_":{"docs":{},"e":{"docs":{},"n":{"docs":{},"v":{"docs":{},".":{"docs":{},"p":{"docs":{},"i":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.003033367037411527}}}}}}}}}}}}}}}}}},"f":{"docs":{},"f":{"docs":{},"i":{"docs":{},"c":{"docs":{},"i":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}},"m":{"docs":{},"a":{"docs":{},"i":{"docs":{},"l":{"docs":{},"/":{"docs":{},"s":{"docs":{},"m":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}},"p":{"docs":{},"t":{"docs":{},"i":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}},"q":{"docs":{},"u":{"docs":{},"a":{"docs":{},"l":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}},"v":{"docs":{},"i":{"docs":{},"c":{"docs":{},"t":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}},"e":{"docs":{},"d":{"docs":{},",":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}},"f":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.0078125}}}}}}},"l":{"docs":{},"s":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.004667444574095682},"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}},"i":{"docs":{},"l":{"docs":{},"o":{"docs":{},"v":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0020222446916076846}}}}},"r":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}},"i":{"docs":{},"l":{"docs":{},"e":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0034071550255536627},"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.005055611729019211}},"a":{"docs":{},"p":{"docs":{},"p":{"docs":{},"e":{"docs":{},"n":{"docs":{},"d":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}},"e":{"docs":{},"r":{"docs":{},"主":{"docs":{},"要":{"docs":{},"实":{"docs":{},"现":{"docs":{},"如":{"docs":{},"下":{"docs":{},":":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206},"architecture-design.html":{"ref":"architecture-design.html","tf":0.011049723756906077}}}}}},"n":{"docs":{},"e":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}},"o":{"docs":{},"r":{"docs":{},"w":{"docs":{},"a":{"docs":{},"r":{"docs":{},"d":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}},"u":{"docs":{},"n":{"docs":{},"d":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0034071550255536627}}}}},"n":{"docs":{},"t":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.002333722287047841}}}},"o":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.004667444574095682}}}},"u":{"docs":{},"n":{"docs":{},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.004667444574095682}}}}}}}}},"e":{"docs":{},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{},"t":{"docs":{},"a":{"docs":{},"s":{"docs":{},"k":{"docs":{},"t":{"docs":{},"h":{"docs":{},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"d":{"docs":{},"主":{"docs":{},"要":{"docs":{},"负":{"docs":{},"责":{"docs":{},"不":{"docs":{},"断":{"docs":{},"从":{"docs":{},"t":{"docs":{},"a":{"docs":{},"s":{"docs":{},"k":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}}}}},"l":{"docs":{},"u":{"docs":{},"s":{"docs":{},"h":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}},"r":{"docs":{},"e":{"docs":{},"e":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}},"s":{"docs":{},".":{"docs":{},"d":{"docs":{},"e":{"docs":{},"f":{"docs":{},"a":{"docs":{},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{},"f":{"docs":{},"s":{"docs":{},"=":{"docs":{},"h":{"docs":{},"d":{"docs":{},"f":{"docs":{},"s":{"docs":{},":":{"docs":{},"/":{"docs":{},"/":{"docs":{},"m":{"docs":{},"y":{"docs":{},"c":{"docs":{},"l":{"docs":{},"u":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},":":{"8":{"0":{"2":{"0":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"h":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0020222446916076846}},"a":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.003033367037411527}},"额":{"docs":{},"外":{"docs":{},"要":{"docs":{},"求":{"docs":{"./":{"ref":"./","tf":0.0078125}}}}}},",":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}},"d":{"docs":{},"o":{"docs":{},"o":{"docs":{},"p":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0020222446916076846}},"(":{"2":{"docs":{},".":{"7":{"docs":{},".":{"3":{"docs":{},")":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}},"docs":{}}},"docs":{}}},"docs":{}},"_":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{},"_":{"docs":{},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{},"=":{"docs":{},"/":{"docs":{},"o":{"docs":{},"p":{"docs":{},"t":{"docs":{},"/":{"docs":{},"s":{"docs":{},"o":{"docs":{},"f":{"docs":{},"t":{"docs":{},"/":{"docs":{},"h":{"docs":{},"a":{"docs":{},"d":{"docs":{},"o":{"docs":{},"o":{"docs":{},"p":{"docs":{},"/":{"docs":{},"e":{"docs":{},"t":{"docs":{},"c":{"docs":{},"/":{"docs":{},"h":{"docs":{},"a":{"docs":{},"d":{"docs":{},"o":{"docs":{},"o":{"docs":{},"p":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"h":{"docs":{},"o":{"docs":{},"m":{"docs":{},"e":{"docs":{},"=":{"docs":{},"\"":{"docs":{},"/":{"docs":{},"o":{"docs":{},"p":{"docs":{},"t":{"docs":{},"/":{"docs":{},"s":{"docs":{},"o":{"docs":{},"f":{"docs":{},"t":{"docs":{},"/":{"docs":{},"h":{"docs":{},"a":{"docs":{},"d":{"docs":{},"o":{"docs":{},"o":{"docs":{},"p":{"docs":{},"\"":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}}}}}}},"/":{"docs":{},"o":{"docs":{},"p":{"docs":{},"t":{"docs":{},"/":{"docs":{},"s":{"docs":{},"o":{"docs":{},"f":{"docs":{},"t":{"docs":{},"/":{"docs":{},"h":{"docs":{},"a":{"docs":{},"d":{"docs":{},"o":{"docs":{},"o":{"docs":{},"p":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}}}}}}}}}}}}}}},"n":{"docs":{},"d":{"docs":{},"l":{"docs":{"task-plugin-development.html":{"ref":"task-plugin-development.html","tf":0.019417475728155338}}}}}},"e":{"docs":{},"l":{"docs":{},"p":{"docs":{},"给":{"docs":{},"出":{"docs":{},"说":{"docs":{},"明":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}},"a":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}},".":{"docs":{},"v":{"docs":{},"u":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}},"{":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}},"r":{"docs":{},"t":{"docs":{},"b":{"docs":{},"e":{"docs":{},"a":{"docs":{},"t":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0020222446916076846}}}}}}}}}},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314},"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}},"m":{"docs":{},"e":{"docs":{},"}":{"docs":{},"/":{"docs":{},"i":{"docs":{},"n":{"docs":{},"d":{"docs":{},"e":{"docs":{},"x":{"docs":{},".":{"docs":{},"h":{"docs":{},"t":{"docs":{},"m":{"docs":{},"l":{"docs":{},"`":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}},"s":{"docs":{},"c":{"docs":{},"s":{"docs":{},"s":{"docs":{},"`":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}},"`":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}},":":{"docs":{},"/":{"docs":{},"/":{"1":{"9":{"2":{"docs":{},".":{"1":{"6":{"8":{"docs":{},".":{"2":{"2":{"0":{"docs":{},".":{"1":{"8":{"1":{"docs":{},":":{"1":{"2":{"3":{"4":{"5":{"docs":{},";":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}},"docs":{}},"docs":{}},"2":{"0":{"4":{"docs":{},":":{"1":{"2":{"3":{"4":{"5":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}},"docs":{}},"docs":{}},"docs":{}}},"docs":{}},"docs":{}},"docs":{}}},"docs":{}},"docs":{}},"docs":{}}},"docs":{}},"docs":{}},"docs":{},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{},"a":{"docs":{},"l":{"docs":{},"h":{"docs":{},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}},":":{"8":{"8":{"8":{"8":{"docs":{},"/":{"docs":{},"#":{"docs":{},"/":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}},")":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"a":{"docs":{},"s":{"docs":{},"o":{"docs":{},"u":{"docs":{},"r":{"docs":{},"c":{"docs":{},"e":{"docs":{},"/":{"docs":{},"l":{"docs":{},"i":{"docs":{},"s":{"docs":{},"t":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}}}},"h":{"docs":{},"o":{"docs":{},"m":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"j":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"s":{"docs":{},"/":{"docs":{},"l":{"docs":{},"i":{"docs":{},"s":{"docs":{},"t":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},"o":{"docs":{},"u":{"docs":{},"r":{"docs":{},"c":{"docs":{},"e":{"docs":{},"/":{"docs":{},"f":{"docs":{},"i":{"docs":{},"l":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}},"s":{"docs":{},"e":{"docs":{},"c":{"docs":{},"u":{"docs":{},"r":{"docs":{},"i":{"docs":{},"t":{"docs":{},"y":{"docs":{},"/":{"docs":{},"t":{"docs":{},"e":{"docs":{},"n":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"/":{"docs":{},"a":{"docs":{},"c":{"docs":{},"c":{"docs":{},"o":{"docs":{},"u":{"docs":{},"n":{"docs":{},"t":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}}}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}}}}}}}}}},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{},".":{"docs":{},"o":{"docs":{},"r":{"docs":{},"g":{"docs":{},"/":{"docs":{},"d":{"docs":{},"o":{"docs":{},"w":{"docs":{},"n":{"docs":{},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{},"/":{"docs":{},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"_":{"docs":{},"f":{"docs":{},"l":{"docs":{},"v":{"docs":{},"_":{"docs":{},"m":{"docs":{},"o":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0034071550255536627}}}}}}}}}}},"g":{"docs":{},"z":{"docs":{},"i":{"docs":{},"p":{"docs":{},"_":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"c":{"docs":{},"_":{"docs":{},"m":{"docs":{},"o":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0034071550255536627}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"s":{"docs":{},"l":{"docs":{},"_":{"docs":{},"m":{"docs":{},"o":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.005110732538330494}}}}}}}}}},"t":{"docs":{},"u":{"docs":{},"b":{"docs":{},"_":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{},"u":{"docs":{},"s":{"docs":{},"_":{"docs":{},"m":{"docs":{},"o":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.005110732538330494}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},":":{"docs":{},"/":{"docs":{},"/":{"docs":{},"n":{"docs":{},"o":{"docs":{},"d":{"docs":{},"e":{"docs":{},"j":{"docs":{},"s":{"docs":{},".":{"docs":{},"o":{"docs":{},"r":{"docs":{},"g":{"docs":{},"/":{"docs":{},"d":{"docs":{},"o":{"docs":{},"w":{"docs":{},"n":{"docs":{},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{},"/":{"docs":{},"r":{"docs":{},"e":{"docs":{},"l":{"docs":{},"e":{"docs":{},"a":{"docs":{},"s":{"docs":{},"e":{"docs":{},"/":{"docs":{},"v":{"8":{"docs":{},".":{"9":{"docs":{},".":{"4":{"docs":{},"/":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}},"docs":{}}},"docs":{}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"w":{"docs":{},"w":{"docs":{},"w":{"docs":{},".":{"docs":{},"i":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{},"o":{"docs":{},"n":{"docs":{},"t":{"docs":{},".":{"docs":{},"c":{"docs":{},"n":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}}}}}}}}}},"m":{"docs":{},"l":{"5":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}},"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.004667444574095682}}}}},"u":{"docs":{},"p":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.005110732538330494}}}},"d":{"docs":{},"f":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.004044489383215369}},"s":{"docs":{},".":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{},"u":{"docs":{},"p":{"docs":{},".":{"docs":{},"s":{"docs":{},"t":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0020222446916076846}},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"=":{"docs":{},"t":{"docs":{},"r":{"docs":{},"u":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}}}}}}}}}},"i":{"docs":{},"v":{"docs":{},"e":{"docs":{},"(":{"1":{"docs":{},".":{"2":{"docs":{},".":{"1":{"docs":{},")":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}},"docs":{}}},"docs":{}}},"docs":{}},"_":{"docs":{},"h":{"docs":{},"o":{"docs":{},"m":{"docs":{},"e":{"docs":{},"=":{"docs":{},"\"":{"docs":{},"/":{"docs":{},"o":{"docs":{},"p":{"docs":{},"t":{"docs":{},"/":{"docs":{},"s":{"docs":{},"o":{"docs":{},"f":{"docs":{},"t":{"docs":{},"/":{"docs":{},"h":{"docs":{},"i":{"docs":{},"v":{"docs":{},"e":{"docs":{},"\"":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}}}}},"/":{"docs":{},"o":{"docs":{},"p":{"docs":{},"t":{"docs":{},"/":{"docs":{},"s":{"docs":{},"o":{"docs":{},"f":{"docs":{},"t":{"docs":{},"/":{"docs":{},"h":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}}}}}}}}}},"i":{"1":{"8":{"docs":{},"n":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}},"docs":{}},"6":{"8":{"6":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}},"docs":{}},"docs":{}},"docs":{},"s":{"docs":{},"s":{"docs":{},"u":{"docs":{},"e":{"docs":{},"s":{"docs":{},",":{"docs":{"./":{"ref":"./","tf":0.0078125}}}}}},"p":{"docs":{},"i":{"docs":{},"n":{"docs":{},":":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}},"n":{"docs":{},"d":{"docs":{},"e":{"docs":{},"x":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314},"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}},".":{"docs":{},"h":{"docs":{},"t":{"docs":{},"m":{"docs":{},"l":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}},";":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}}}},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"l":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.018739352640545145},"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}},"l":{"docs":{},".":{"docs":{},"s":{"docs":{},"h":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.005055611729019211}}}}}}}}}},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.004044489383215369}}}}}},"i":{"docs":{},"t":{"docs":{"task-plugin-development.html":{"ref":"task-plugin-development.html","tf":0.02912621359223301}}}}},"p":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314},"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}},"t":{"docs":{},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},":":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}},"u":{"docs":{},"n":{"docs":{},"i":{"docs":{},"c":{"docs":{},"o":{"docs":{},"d":{"docs":{},"e":{"docs":{},":":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}},"d":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}},":":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"i":{"docs":{},"f":{"docs":{},"i":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0020222446916076846}}}}}}}},"l":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.003033367037411527}}}},"m":{"docs":{},"a":{"docs":{},"g":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}},"p":{"docs":{},"o":{"docs":{},"r":{"docs":{},"t":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.003500583430571762},"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}},"l":{"docs":{},"e":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},",":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}}},"o":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}},"请":{"docs":{},"求":{"docs":{},"封":{"docs":{},"装":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}},"t":{"docs":{},"e":{"docs":{},"m":{"docs":{},"'":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}},".":{"docs":{},"t":{"docs":{},"i":{"docs":{},"t":{"docs":{},"l":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.002333722287047841}}}}}}}}}}},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{"./":{"ref":"./","tf":0.0078125}},",":{"docs":{},"m":{"docs":{},"e":{"docs":{},"m":{"docs":{},"o":{"docs":{},"r":{"docs":{},"y":{"docs":{},",":{"docs":{},"c":{"docs":{},"p":{"docs":{},"u":{"docs":{},"在":{"docs":{},"线":{"docs":{},"查":{"docs":{},"看":{"docs":{"./":{"ref":"./","tf":0.0078125}}}}}}}}}}}}}}}}},",":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0020222446916076846}}}}},"c":{"docs":{},"a":{"docs":{},"l":{"docs":{},"h":{"docs":{},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{},";":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"a":{"docs":{},"m":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}},"s":{"docs":{},":":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}},"t":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.005110732538330494}}}},"k":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.003033367037411527}}}},"d":{"docs":{},"a":{"docs":{},"s":{"docs":{},"h":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314},"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}},"g":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.011049723756906077}},"g":{"docs":{},"e":{"docs":{},"r":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.003033367037411527},"task-plugin-development.html":{"ref":"task-plugin-development.html","tf":0.009708737864077669}},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"是":{"docs":{},"一":{"docs":{},"个":{"docs":{},"r":{"docs":{},"p":{"docs":{},"c":{"docs":{},"服":{"docs":{},"务":{"docs":{},",":{"docs":{},"提":{"docs":{},"供":{"docs":{},"日":{"docs":{},"志":{"docs":{},"分":{"docs":{},"片":{"docs":{},"查":{"docs":{},"看":{"docs":{},"、":{"docs":{},"刷":{"docs":{},"新":{"docs":{},"和":{"docs":{},"下":{"docs":{},"载":{"docs":{},"等":{"docs":{},"功":{"docs":{},"能":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},")":{"docs":{"task-plugin-development.html":{"ref":"task-plugin-development.html","tf":0.009708737864077669}},";":{"docs":{"task-plugin-development.html":{"ref":"task-plugin-development.html","tf":0.019417475728155338}}}}}}},"s":{"docs":{},"/":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}},"n":{"docs":{},"g":{"docs":{},"e":{"docs":{},"r":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}},"s":{"docs":{},"t":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}},"i":{"docs":{},"n":{"docs":{},"u":{"docs":{},"x":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0034071550255536627}}}}},"s":{"docs":{},"t":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}},"e":{"docs":{},"n":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0034071550255536627}}}}}},"b":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206},"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0020222446916076846}},".":{"docs":{},"j":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}},"m":{"docs":{},"i":{"docs":{},"t":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}},"l":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}},"n":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}},"r":{"docs":{},"w":{"docs":{},"x":{"docs":{},"r":{"docs":{},"w":{"docs":{},"x":{"docs":{},"r":{"docs":{},"w":{"docs":{},"x":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}}}},"a":{"docs":{},"r":{"docs":{},"g":{"docs":{},"e":{"docs":{},"r":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0020222446916076846}}}}}}},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0020222446916076846}}}}}},"m":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}},"e":{"docs":{},"s":{"docs":{},"o":{"docs":{"./":{"ref":"./","tf":0.0078125}}}},"t":{"docs":{},"a":{"docs":{},":":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{},":":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}},"s":{"docs":{},":":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}},"m":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0020222446916076846}}},"y":{"docs":{},",":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0020222446916076846}}}}}}}},"r":{"docs":{},"、":{"docs":{},"s":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"k":{"docs":{},"、":{"docs":{},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{},"(":{"docs":{},"m":{"docs":{},"y":{"docs":{},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{},"、":{"docs":{},"p":{"docs":{},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{},"g":{"docs":{},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{},"、":{"docs":{},"h":{"docs":{},"i":{"docs":{},"v":{"docs":{},"e":{"docs":{},"、":{"docs":{},"s":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"k":{"docs":{},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{},")":{"docs":{},"、":{"docs":{},"p":{"docs":{},"y":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"n":{"docs":{},"、":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"c":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"r":{"docs":{},"e":{"docs":{},"、":{"docs":{},"s":{"docs":{},"u":{"docs":{},"b":{"docs":{},"_":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"c":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{"./":{"ref":"./","tf":0.0078125}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"a":{"docs":{},"i":{"docs":{},"n":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}},";":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}},"l":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}},".":{"docs":{},"p":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"w":{"docs":{},"d":{"docs":{},"=":{"docs":{},"x":{"docs":{},"x":{"docs":{},"x":{"docs":{},"x":{"docs":{},"x":{"docs":{},"x":{"docs":{},"x":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}},"r":{"docs":{},"o":{"docs":{},"t":{"docs":{},"o":{"docs":{},"c":{"docs":{},"o":{"docs":{},"l":{"docs":{},"=":{"docs":{},"s":{"docs":{},"m":{"docs":{},"t":{"docs":{},"p":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}},"s":{"docs":{},"e":{"docs":{},"n":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},"=":{"docs":{},"x":{"docs":{},"x":{"docs":{},"x":{"docs":{},"x":{"docs":{},"x":{"docs":{},"x":{"docs":{},"x":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}},"r":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},".":{"docs":{},"h":{"docs":{},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{},"=":{"docs":{},"s":{"docs":{},"m":{"docs":{},"t":{"docs":{},"p":{"docs":{},".":{"docs":{},"e":{"docs":{},"x":{"docs":{},"m":{"docs":{},"a":{"docs":{},"i":{"docs":{},"l":{"docs":{},".":{"docs":{},"q":{"docs":{},"q":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}}}}}}}}}}}},"p":{"docs":{},"o":{"docs":{},"r":{"docs":{},"t":{"docs":{},"=":{"2":{"5":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}},"docs":{}},"docs":{}}}}}}}}}}}}}}}},"k":{"docs":{},"e":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0034071550255536627},"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.005055611729019211}}}},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314},"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206},"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384},"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.010111223458038422}},"e":{"docs":{},"x":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"h":{"docs":{},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"d":{"docs":{},"主":{"docs":{},"要":{"docs":{},"是":{"docs":{},"负":{"docs":{},"责":{"docs":{},"d":{"docs":{},"a":{"docs":{},"g":{"docs":{},"任":{"docs":{},"务":{"docs":{},"切":{"docs":{},"分":{"docs":{},"、":{"docs":{},"任":{"docs":{},"务":{"docs":{},"提":{"docs":{},"交":{"docs":{},"监":{"docs":{},"控":{"docs":{},"、":{"docs":{},"各":{"docs":{},"种":{"docs":{},"不":{"docs":{},"同":{"docs":{},"命":{"docs":{},"令":{"docs":{},"类":{"docs":{},"型":{"docs":{},"的":{"docs":{},"逻":{"docs":{},"辑":{"docs":{},"处":{"docs":{},"理":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"t":{"docs":{},"h":{"docs":{},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"d":{"docs":{},"是":{"docs":{},"一":{"docs":{},"个":{"docs":{},"扫":{"docs":{},"描":{"docs":{},"线":{"docs":{},"程":{"docs":{},",":{"docs":{},"定":{"docs":{},"时":{"docs":{},"扫":{"docs":{},"描":{"docs":{},"数":{"docs":{},"据":{"docs":{},"库":{"docs":{},"中":{"docs":{},"的":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}},"e":{"docs":{},"r":{"docs":{},"服":{"docs":{},"务":{"docs":{},"启":{"docs":{},"动":{"docs":{},"时":{"docs":{},"向":{"docs":{},"z":{"docs":{},"o":{"docs":{},"o":{"docs":{},"k":{"docs":{},"e":{"docs":{},"e":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"注":{"docs":{},"册":{"docs":{},"临":{"docs":{},"时":{"docs":{},"节":{"docs":{},"点":{"docs":{},",":{"docs":{},"通":{"docs":{},"过":{"docs":{},"监":{"docs":{},"听":{"docs":{},"z":{"docs":{},"o":{"docs":{},"o":{"docs":{},"k":{"docs":{},"e":{"docs":{},"e":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"临":{"docs":{},"时":{"docs":{},"节":{"docs":{},"点":{"docs":{},"变":{"docs":{},"化":{"docs":{},"来":{"docs":{},"进":{"docs":{},"行":{"docs":{},"容":{"docs":{},"错":{"docs":{},"处":{"docs":{},"理":{"docs":{},"。":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"采":{"docs":{},"用":{"docs":{},"分":{"docs":{},"布":{"docs":{},"式":{"docs":{},"无":{"docs":{},"中":{"docs":{},"心":{"docs":{},"设":{"docs":{},"计":{"docs":{},"理":{"docs":{},"念":{"docs":{},",":{"docs":{},"m":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"主":{"docs":{},"要":{"docs":{},"负":{"docs":{},"责":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"t":{"docs":{},"a":{"docs":{},"s":{"docs":{},"k":{"docs":{},"e":{"docs":{},"x":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"h":{"docs":{},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"d":{"docs":{},"主":{"docs":{},"要":{"docs":{},"负":{"docs":{},"责":{"docs":{},"任":{"docs":{},"务":{"docs":{},"的":{"docs":{},"持":{"docs":{},"久":{"docs":{},"化":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}}}},"容":{"docs":{},"错":{"docs":{},"完":{"docs":{},"成":{"docs":{},"之":{"docs":{},"后":{"docs":{},"则":{"docs":{},"重":{"docs":{},"新":{"docs":{},"由":{"docs":{},"e":{"docs":{},"a":{"docs":{},"s":{"docs":{},"y":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"中":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"线":{"docs":{},"程":{"docs":{},"调":{"docs":{},"度":{"docs":{},",":{"docs":{},"遍":{"docs":{},"历":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"流":{"docs":{},"程":{"docs":{},"图":{"docs":{},":":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}},"的":{"docs":{},"角":{"docs":{},"色":{"docs":{},"主":{"docs":{},"要":{"docs":{},"负":{"docs":{},"责":{"docs":{},"任":{"docs":{},"务":{"docs":{},"分":{"docs":{},"发":{"docs":{},"并":{"docs":{},"监":{"docs":{},"督":{"docs":{},"s":{"docs":{},"l":{"docs":{},"a":{"docs":{},"v":{"docs":{},"e":{"docs":{},"的":{"docs":{},"健":{"docs":{},"康":{"docs":{},"状":{"docs":{},"态":{"docs":{},",":{"docs":{},"可":{"docs":{},"以":{"docs":{},"动":{"docs":{},"态":{"docs":{},"的":{"docs":{},"将":{"docs":{},"任":{"docs":{},"务":{"docs":{},"均":{"docs":{},"衡":{"docs":{},"到":{"docs":{},"s":{"docs":{},"l":{"docs":{},"a":{"docs":{},"v":{"docs":{},"e":{"docs":{},"上":{"docs":{},",":{"docs":{},"以":{"docs":{},"致":{"docs":{},"s":{"docs":{},"l":{"docs":{},"a":{"docs":{},"v":{"docs":{},"e":{"docs":{},"节":{"docs":{},"点":{"docs":{},"不":{"docs":{},"至":{"docs":{},"于":{"docs":{},"“":{"docs":{},"忙":{"docs":{},"死":{"docs":{},"”":{"docs":{},"或":{"docs":{},"”":{"docs":{},"闲":{"docs":{},"死":{"docs":{},"”":{"docs":{},"的":{"docs":{},"状":{"docs":{},"态":{"docs":{},"。":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},".":{"docs":{},"e":{"docs":{},"x":{"docs":{},"e":{"docs":{},"c":{"docs":{},".":{"docs":{},"t":{"docs":{},"a":{"docs":{},"s":{"docs":{},"k":{"docs":{},".":{"docs":{},"n":{"docs":{},"u":{"docs":{},"m":{"docs":{},"b":{"docs":{},"e":{"docs":{},"r":{"docs":{},"=":{"2":{"0":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}},"docs":{}},"docs":{}}}}}}}}}}}},"h":{"docs":{},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"d":{"docs":{},"s":{"docs":{},"=":{"1":{"0":{"0":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}},"docs":{}},"docs":{}},"docs":{}}}}}}}}}}}}}},"h":{"docs":{},"e":{"docs":{},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{},"b":{"docs":{},"e":{"docs":{},"a":{"docs":{},"t":{"docs":{},".":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"=":{"1":{"0":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}},"docs":{}},"docs":{}}}}}}}}}}}}}}}}}}}},"m":{"docs":{},"a":{"docs":{},"x":{"docs":{},".":{"docs":{},"c":{"docs":{},"p":{"docs":{},"u":{"docs":{},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{},".":{"docs":{},"a":{"docs":{},"v":{"docs":{},"g":{"docs":{},"=":{"1":{"0":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}},"docs":{}},"docs":{}}}}}}}}}}}}}}}}},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"t":{"docs":{},"i":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"e":{"docs":{},"d":{"docs":{},".":{"docs":{},"m":{"docs":{},"e":{"docs":{},"m":{"docs":{},"o":{"docs":{},"r":{"docs":{},"y":{"docs":{},"=":{"1":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}},"docs":{}}}}}}}}}}}}}}}}},"t":{"docs":{},"a":{"docs":{},"s":{"docs":{},"k":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"m":{"docs":{},"i":{"docs":{},"t":{"docs":{},".":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"=":{"1":{"0":{"0":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}},"docs":{}},"docs":{}},"docs":{}}}}}}}}}},"r":{"docs":{},"e":{"docs":{},"t":{"docs":{},"r":{"docs":{},"y":{"docs":{},"t":{"docs":{},"i":{"docs":{},"m":{"docs":{},"e":{"docs":{},"s":{"docs":{},"=":{"5":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}},"配":{"docs":{},"置":{"docs":{},"文":{"docs":{},"件":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}},"p":{"docs":{},"(":{"docs":{},"[":{"docs":{},"]":{"docs":{},")":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"t":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}},"m":{"docs":{},"u":{"docs":{},"t":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}},"z":{"docs":{},"e":{"docs":{},"y":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}},"/":{"docs":{},"a":{"docs":{},"p":{"docs":{},"i":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"a":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}},"x":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0020222446916076846}},"w":{"docs":{},"a":{"docs":{},"i":{"docs":{},"t":{"docs":{},",":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}},"k":{"docs":{},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}},"o":{"docs":{},"u":{"docs":{},"n":{"docs":{},"t":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}},"e":{"docs":{},"d":{"docs":{},"(":{"docs":{},")":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}},"d":{"docs":{},"e":{"docs":{},"l":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}},"n":{"docs":{},"i":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"_":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},".":{"docs":{},"p":{"docs":{},"i":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0020222446916076846}}}}}}}}}}}}}}}}}},"i":{"docs":{},"x":{"docs":{},"i":{"docs":{},"n":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.002333722287047841}}}}},"l":{"docs":{},"l":{"docs":{},"i":{"docs":{},"s":{"docs":{},",":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}},"e":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"d":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.003033367037411527}},"s":{"docs":{},".":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}},"n":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}},"e":{"docs":{},"v":{"docs":{},"i":{"docs":{},"c":{"docs":{},"t":{"docs":{},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{},"e":{"docs":{},"i":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"t":{"docs":{},"i":{"docs":{},"m":{"docs":{},"e":{"docs":{},"m":{"docs":{},"i":{"docs":{},"l":{"docs":{},"l":{"docs":{},"i":{"docs":{},"s":{"docs":{},".":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"g":{"docs":{},":":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}},"'":{"docs":{},"失":{"docs":{},"败":{"docs":{},"'":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}},"成":{"docs":{},"功":{"docs":{},"'":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}},"u":{"docs":{},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}},"v":{"docs":{},"v":{"docs":{},"m":{"docs":{},"框":{"docs":{},"架":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}},"n":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}},"y":{"docs":{},"m":{"docs":{},"a":{"docs":{},"p":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}},".":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"r":{"docs":{},"i":{"docs":{},"e":{"docs":{},"s":{"docs":{},"(":{"docs":{},")":{"docs":{},")":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}}},"d":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.003033367037411527}},">":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.004044489383215369}}}}}}}},"r":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}},"e":{"docs":{},"s":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{"./":{"ref":"./","tf":0.0078125}}}}}},"t":{"docs":{},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0034071550255536627}},")":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}},"o":{"docs":{},"l":{"docs":{},"v":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}},"e":{"docs":{},"(":{"docs":{},"{":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}},")":{"docs":{},",":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}},"u":{"docs":{},"r":{"docs":{},"c":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}},"e":{"docs":{},".":{"docs":{},"v":{"docs":{},"i":{"docs":{},"e":{"docs":{},"w":{"docs":{},".":{"docs":{},"s":{"docs":{},"u":{"docs":{},"f":{"docs":{},"f":{"docs":{},"i":{"docs":{},"x":{"docs":{},"s":{"docs":{},"=":{"docs":{},"t":{"docs":{},"x":{"docs":{},"t":{"docs":{},",":{"docs":{},"l":{"docs":{},"o":{"docs":{},"g":{"docs":{},",":{"docs":{},"s":{"docs":{},"h":{"docs":{},",":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{},",":{"docs":{},"c":{"docs":{},"f":{"docs":{},"g":{"docs":{},",":{"docs":{},"p":{"docs":{},"y":{"docs":{},",":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},",":{"docs":{},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{},",":{"docs":{},"h":{"docs":{},"q":{"docs":{},"l":{"docs":{},",":{"docs":{},"x":{"docs":{},"m":{"docs":{},"l":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"m":{"docs":{},"a":{"docs":{},"n":{"docs":{},"a":{"docs":{},"g":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}},"e":{"docs":{},"r":{"docs":{},",":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0020222446916076846}}}}}},"a":{"docs":{},"l":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}},"d":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.005055611729019211}}}},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}},"g":{"docs":{},"i":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"y":{"docs":{},"=":{"docs":{},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},"s":{"docs":{},":":{"docs":{},"/":{"docs":{},"/":{"docs":{},"r":{"docs":{},"e":{"docs":{},"g":{"docs":{},"i":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"y":{"docs":{},".":{"docs":{},"n":{"docs":{},"p":{"docs":{},"m":{"docs":{},".":{"docs":{},"t":{"docs":{},"a":{"docs":{},"o":{"docs":{},"b":{"docs":{},"a":{"docs":{},"o":{"docs":{},".":{"docs":{},"o":{"docs":{},"r":{"docs":{},"g":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"l":{"docs":{},"e":{"docs":{},"a":{"docs":{},"s":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{},")":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}},"m":{"docs":{},"o":{"docs":{},"t":{"docs":{},"e":{"docs":{},"_":{"docs":{},"a":{"docs":{},"d":{"docs":{},"d":{"docs":{},"r":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}}},"a":{"docs":{},"i":{"docs":{},"n":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}},"j":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},")":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}},"q":{"docs":{},"u":{"docs":{},"i":{"docs":{},"r":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}},"e":{"docs":{},"(":{"docs":{},"[":{"docs":{},"'":{"docs":{},".":{"docs":{},".":{"docs":{},"/":{"docs":{},"p":{"docs":{},"a":{"docs":{},"g":{"docs":{},"e":{"docs":{},"s":{"docs":{},"/":{"docs":{},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},"/":{"docs":{},"i":{"docs":{},"n":{"docs":{},"d":{"docs":{},"e":{"docs":{},"x":{"docs":{},"'":{"docs":{},"]":{"docs":{},",":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}}}}}}}}}}}}}},"d":{"docs":{},":":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}},"t":{"docs":{},"t":{"docs":{},"i":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0020222446916076846}}}}}}}},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}},"t":{"docs":{},"u":{"docs":{},"r":{"docs":{},"n":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.010501750291715286},"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}},"r":{"docs":{},"i":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"d":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}},";":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}},"o":{"docs":{},"o":{"docs":{},"t":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0068143100511073255},"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}},"@":{"docs":{},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}},"安":{"docs":{},"装":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}},"u":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}},"u":{"docs":{},"n":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0034071550255536627},"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206},"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423},"task-plugin-development.html":{"ref":"task-plugin-development.html","tf":0.009708737864077669}}}}},"s":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.010221465076660987}},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{"./":{"ref":"./","tf":0.015625},"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}},"e":{"docs":{},"r":{"docs":{},"线":{"docs":{},"程":{"docs":{},"一":{"docs":{},"旦":{"docs":{},"发":{"docs":{},"现":{"docs":{},"任":{"docs":{},"务":{"docs":{},"实":{"docs":{},"例":{"docs":{},"为":{"docs":{},"”":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}},"在":{"docs":{},"获":{"docs":{},"取":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"m":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{},"的":{"docs":{},"时":{"docs":{},"候":{"docs":{},"是":{"docs":{},"f":{"docs":{},"i":{"docs":{},"f":{"docs":{},"o":{"docs":{},"的":{"docs":{},"方":{"docs":{},"式":{"docs":{},"执":{"docs":{},"行":{"docs":{},"的":{"docs":{},"。":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"r":{"docs":{},"i":{"docs":{},"p":{"docs":{},"t":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314},"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0020222446916076846}}}}}}},"h":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.011122345803842264}},"e":{"docs":{},"l":{"docs":{},"l":{"docs":{},"、":{"docs":{},"g":{"docs":{},"o":{"docs":{},"b":{"docs":{},"b":{"docs":{},"l":{"docs":{},"i":{"docs":{},"n":{"docs":{},"、":{"docs":{},"h":{"docs":{},"a":{"docs":{},"d":{"docs":{},"o":{"docs":{},"o":{"docs":{},"p":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},"、":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},"、":{"docs":{},"h":{"docs":{},"i":{"docs":{},"v":{"docs":{},"e":{"docs":{},"、":{"docs":{},"p":{"docs":{},"i":{"docs":{},"g":{"docs":{},"、":{"docs":{},"s":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"k":{"docs":{},"、":{"docs":{},"h":{"docs":{},"d":{"docs":{},"f":{"docs":{},"s":{"docs":{},"t":{"docs":{},"o":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"a":{"docs":{},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"a":{"docs":{},"、":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"a":{"docs":{},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{},"o":{"docs":{},"h":{"docs":{},"d":{"docs":{},"f":{"docs":{"./":{"ref":"./","tf":0.0078125}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"任":{"docs":{},"务":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"m":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{},"e":{"docs":{},"x":{"docs":{},"e":{"docs":{},"c":{"docs":{},"u":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{"task-plugin-development.html":{"ref":"task-plugin-development.html","tf":0.019417475728155338}},"(":{"docs":{},"t":{"docs":{},"h":{"docs":{},"i":{"docs":{},"s":{"docs":{},":":{"docs":{},":":{"docs":{},"l":{"docs":{},"o":{"docs":{},"g":{"docs":{},"h":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},",":{"docs":{"task-plugin-development.html":{"ref":"task-plugin-development.html","tf":0.009708737864077669}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"t":{"docs":{},"a":{"docs":{},"s":{"docs":{},"k":{"docs":{},"(":{"docs":{},"t":{"docs":{},"a":{"docs":{},"s":{"docs":{},"k":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"p":{"docs":{"task-plugin-development.html":{"ref":"task-plugin-development.html","tf":0.009708737864077669}}}}}}}}}}}}}}}}}}},"u":{"docs":{},"b":{"docs":{},"m":{"docs":{},"i":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.0078125},"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}},"f":{"docs":{},"l":{"docs":{},"o":{"docs":{},"w":{"docs":{},"t":{"docs":{},"h":{"docs":{},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"d":{"2":{"docs":{},"等":{"docs":{},"待":{"docs":{},"s":{"docs":{},"u":{"docs":{},"b":{"docs":{},"f":{"docs":{},"l":{"docs":{},"o":{"docs":{},"w":{"docs":{},"t":{"docs":{},"h":{"docs":{},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"d":{"3":{"docs":{},"结":{"docs":{},"束":{"docs":{},",":{"docs":{},"而":{"docs":{},"s":{"docs":{},"u":{"docs":{},"b":{"docs":{},"f":{"docs":{},"l":{"docs":{},"o":{"docs":{},"w":{"docs":{},"t":{"docs":{},"h":{"docs":{},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"d":{"3":{"docs":{},"等":{"docs":{},"待":{"docs":{},"线":{"docs":{},"程":{"docs":{},"池":{"docs":{},"有":{"docs":{},"新":{"docs":{},"线":{"docs":{},"程":{"docs":{},",":{"docs":{},"则":{"docs":{},"整":{"docs":{},"个":{"docs":{},"d":{"docs":{},"a":{"docs":{},"g":{"docs":{},"流":{"docs":{},"程":{"docs":{},"不":{"docs":{},"能":{"docs":{},"结":{"docs":{},"束":{"docs":{},",":{"docs":{},"从":{"docs":{},"而":{"docs":{},"其":{"docs":{},"中":{"docs":{},"的":{"docs":{},"线":{"docs":{},"程":{"docs":{},"也":{"docs":{},"不":{"docs":{},"能":{"docs":{},"释":{"docs":{},"放":{"docs":{},"。":{"docs":{},"这":{"docs":{},"样":{"docs":{},"就":{"docs":{},"形":{"docs":{},"成":{"docs":{},"的":{"docs":{},"子":{"docs":{},"父":{"docs":{},"流":{"docs":{},"程":{"docs":{},"循":{"docs":{},"环":{"docs":{},"等":{"docs":{},"待":{"docs":{},"的":{"docs":{},"状":{"docs":{},"态":{"docs":{},"。":{"docs":{},"此":{"docs":{},"时":{"docs":{},"除":{"docs":{},"非":{"docs":{},"启":{"docs":{},"动":{"docs":{},"新":{"docs":{},"的":{"docs":{},"m":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"来":{"docs":{},"增":{"docs":{},"加":{"docs":{},"线":{"docs":{},"程":{"docs":{},"来":{"docs":{},"打":{"docs":{},"破":{"docs":{},"这":{"docs":{},"样":{"docs":{},"的":{"docs":{},"”":{"docs":{},"僵":{"docs":{},"局":{"docs":{},"”":{"docs":{},",":{"docs":{},"否":{"docs":{},"则":{"docs":{},"调":{"docs":{},"度":{"docs":{},"集":{"docs":{},"群":{"docs":{},"将":{"docs":{},"不":{"docs":{},"能":{"docs":{},"再":{"docs":{},"使":{"docs":{},"用":{"docs":{},"。":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}}}}}}}}}}}}}}}}}}},"docs":{}}}}}}}}}}}}}}}}},"docs":{}}}}}}}}}}}},"c":{"docs":{},"c":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}},"d":{"docs":{},"o":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0020222446916076846}}}},"r":{"docs":{},"e":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.005055611729019211}}}},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"(":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"p":{"docs":{},"s":{"docs":{},",":{"docs":{"task-plugin-development.html":{"ref":"task-plugin-development.html","tf":0.009708737864077669}}}}}}}}}}}}},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0034071550255536627},"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}},"依":{"docs":{},"赖":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}},"文":{"docs":{},"件":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0068143100511073255},"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.019211324570273004}},"_":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"t":{"docs":{},"e":{"docs":{},"x":{"docs":{},"t":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}},"l":{"docs":{},"o":{"docs":{},"g":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.005055611729019211}}}}},"m":{"docs":{},"a":{"docs":{},"x":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}},"p":{"docs":{},"o":{"docs":{},"r":{"docs":{},"t":{"docs":{},"=":{"1":{"2":{"3":{"4":{"5":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}}}}},"s":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},".":{"docs":{},"t":{"docs":{},"i":{"docs":{},"m":{"docs":{},"e":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{},"=":{"7":{"2":{"0":{"0":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}}}}}}}}}}}}}}}}}}},"i":{"docs":{},"c":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}},"a":{"docs":{},"c":{"docs":{},"h":{"docs":{},".":{"docs":{},"v":{"docs":{},"u":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}},"t":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}},"e":{"docs":{},"n":{"docs":{},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"c":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}},"x":{"docs":{},"}":{"docs":{},")":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"d":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}},"l":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}},"f":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.005055611729019211}}}},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}},"t":{"docs":{},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0034071550255536627},"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.006066734074823054}},")":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}},"t":{"docs":{},"i":{"docs":{},"c":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}},"u":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}},"e":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}},"?":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},".":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}},"o":{"docs":{},"p":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0034071550255536627},"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.005055611729019211}},")":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}},"r":{"docs":{},"e":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206},"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}},"r":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},",":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.002333722287047841}}}}}}},"y":{"docs":{},"l":{"docs":{},"e":{"docs":{},":":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}},"y":{"docs":{},"n":{"docs":{},"t":{"docs":{},"a":{"docs":{},"x":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"m":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}},"c":{"docs":{},"t":{"docs":{},"l":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0068143100511073255}}}}}}}}}},"i":{"docs":{},"z":{"docs":{},"e":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}},":":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}},"=":{"1":{"0":{"2":{"4":{"docs":{},"m":{"docs":{},"b":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0020222446916076846}}}}},"docs":{}},"docs":{}},"docs":{}},"5":{"0":{"0":{"0":{"0":{"0":{"0":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}}},"n":{"docs":{},"g":{"docs":{},"l":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.003033367037411527}}}}},"t":{"docs":{},"e":{"docs":{},".":{"docs":{},"x":{"docs":{},"m":{"docs":{},"l":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0020222446916076846}}}}}}}}},"o":{"docs":{},"l":{"docs":{},"i":{"docs":{},"d":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}},";":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}},"u":{"docs":{},"r":{"docs":{},"c":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}},"r":{"docs":{},"c":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.009334889148191364}},"/":{"docs":{},"j":{"docs":{},"s":{"docs":{},"/":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{},"/":{"docs":{},"h":{"docs":{},"o":{"docs":{},"m":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}},"e":{"docs":{},"/":{"docs":{},"p":{"docs":{},"a":{"docs":{},"g":{"docs":{},"e":{"docs":{},"s":{"docs":{},"/":{"docs":{},"d":{"docs":{},"a":{"docs":{},"g":{"docs":{},"/":{"docs":{},"_":{"docs":{},"s":{"docs":{},"o":{"docs":{},"u":{"docs":{},"r":{"docs":{},"c":{"docs":{},"e":{"docs":{},"/":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{},"i":{"docs":{},"g":{"docs":{},".":{"docs":{},"j":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.003500583430571762}}}}}}}}}},"d":{"docs":{},"a":{"docs":{},"g":{"docs":{},".":{"docs":{},"j":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"m":{"docs":{},"m":{"docs":{},"o":{"docs":{},"d":{"docs":{},"e":{"docs":{},"l":{"docs":{},"/":{"docs":{},"t":{"docs":{},"a":{"docs":{},"s":{"docs":{},"k":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}}},"p":{"docs":{},"l":{"docs":{},"u":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"e":{"docs":{},"/":{"docs":{},"d":{"docs":{},"a":{"docs":{},"g":{"docs":{},"/":{"docs":{},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},".":{"docs":{},"j":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}},"t":{"docs":{},"a":{"docs":{},"s":{"docs":{},"o":{"docs":{},"u":{"docs":{},"r":{"docs":{},"c":{"docs":{},"e":{"docs":{},"/":{"docs":{},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},".":{"docs":{},"j":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}}}}}}}}},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"j":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"s":{"docs":{},"/":{"docs":{},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},".":{"docs":{},"j":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}}}}}}},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},"o":{"docs":{},"u":{"docs":{},"r":{"docs":{},"c":{"docs":{},"e":{"docs":{},"/":{"docs":{},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},".":{"docs":{},"j":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"e":{"docs":{},"c":{"docs":{},"u":{"docs":{},"r":{"docs":{},"i":{"docs":{},"t":{"docs":{},"y":{"docs":{},"/":{"docs":{},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},".":{"docs":{},"j":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}}}}}}},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"/":{"docs":{},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},".":{"docs":{},"j":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"m":{"docs":{},"o":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}},"e":{"docs":{},"/":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"s":{"docs":{},"项":{"docs":{},"目":{"docs":{},"内":{"docs":{},"部":{"docs":{},"公":{"docs":{},"共":{"docs":{},"组":{"docs":{},"件":{"docs":{},"书":{"docs":{},"写":{"docs":{},"文":{"docs":{},"件":{"docs":{},"夹":{"docs":{},"名":{"docs":{},"与":{"docs":{},"文":{"docs":{},"件":{"docs":{},"名":{"docs":{},"同":{"docs":{},"名":{"docs":{},",":{"docs":{},"公":{"docs":{},"共":{"docs":{},"组":{"docs":{},"件":{"docs":{},"内":{"docs":{},"部":{"docs":{},"所":{"docs":{},"拆":{"docs":{},"分":{"docs":{},"的":{"docs":{},"子":{"docs":{},"组":{"docs":{},"件":{"docs":{},"与":{"docs":{},"u":{"docs":{},"t":{"docs":{},"i":{"docs":{},"l":{"docs":{},"工":{"docs":{},"具":{"docs":{},"都":{"docs":{},"放":{"docs":{},"置":{"docs":{},"组":{"docs":{},"件":{"docs":{},"内":{"docs":{},"部":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"/":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"m":{"docs":{},"o":{"docs":{},"n":{"docs":{},"/":{"docs":{},"_":{"docs":{},"f":{"docs":{},"o":{"docs":{},"n":{"docs":{},"t":{"docs":{},".":{"docs":{},"s":{"docs":{},"c":{"docs":{},"s":{"docs":{},"s":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}}}}}}}}}}}}}},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"k":{"docs":{},"(":{"1":{"docs":{},".":{"docs":{},"x":{"docs":{},",":{"2":{"docs":{},".":{"docs":{},"x":{"docs":{},")":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}},"docs":{}}}}},"docs":{}},"_":{"docs":{},"h":{"docs":{},"o":{"docs":{},"m":{"docs":{},"e":{"1":{"docs":{},"=":{"docs":{},"\"":{"docs":{},"/":{"docs":{},"o":{"docs":{},"p":{"docs":{},"t":{"docs":{},"/":{"docs":{},"s":{"docs":{},"o":{"docs":{},"f":{"docs":{},"t":{"docs":{},"/":{"docs":{},"s":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"k":{"1":{"docs":{},"\"":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}},"docs":{}}}}}}}}}}}}}}}}},"/":{"docs":{},"o":{"docs":{},"p":{"docs":{},"t":{"docs":{},"/":{"docs":{},"s":{"docs":{},"o":{"docs":{},"f":{"docs":{},"t":{"docs":{},"/":{"docs":{},"s":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"k":{"1":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}},"docs":{}}}}}}}}}}}}}}}}}},"2":{"docs":{},"=":{"docs":{},"\"":{"docs":{},"/":{"docs":{},"o":{"docs":{},"p":{"docs":{},"t":{"docs":{},"/":{"docs":{},"s":{"docs":{},"o":{"docs":{},"f":{"docs":{},"t":{"docs":{},"/":{"docs":{},"s":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"k":{"2":{"docs":{},"\"":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}},"docs":{}}}}}}}}}}}}}}}}},"/":{"docs":{},"o":{"docs":{},"p":{"docs":{},"t":{"docs":{},"/":{"docs":{},"s":{"docs":{},"o":{"docs":{},"f":{"docs":{},"t":{"docs":{},"/":{"docs":{},"s":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"k":{"2":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}},"docs":{}}}}}}}}}}}}}}}}}},"docs":{}}}}}}}}},"e":{"docs":{},"c":{"docs":{},"i":{"docs":{},"f":{"docs":{},"i":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}},"r":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}},".":{"docs":{},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"a":{"docs":{},"s":{"docs":{},"o":{"docs":{},"u":{"docs":{},"r":{"docs":{},"c":{"docs":{},"e":{"docs":{},".":{"docs":{},"d":{"docs":{},"e":{"docs":{},"f":{"docs":{},"a":{"docs":{},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{},"a":{"docs":{},"u":{"docs":{},"t":{"docs":{},"o":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"m":{"docs":{},"i":{"docs":{},"t":{"docs":{},"=":{"docs":{},"t":{"docs":{},"r":{"docs":{},"u":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}}}}}}}}},"r":{"docs":{},"i":{"docs":{},"v":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}},"i":{"docs":{},"n":{"docs":{},"i":{"docs":{},"t":{"docs":{},"i":{"docs":{},"a":{"docs":{},"l":{"docs":{},"s":{"docs":{},"i":{"docs":{},"z":{"docs":{},"e":{"docs":{},"=":{"5":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}},"docs":{}}}}}}}}}}}}},"k":{"docs":{},"e":{"docs":{},"e":{"docs":{},"p":{"docs":{},"a":{"docs":{},"l":{"docs":{},"i":{"docs":{},"v":{"docs":{},"e":{"docs":{},"=":{"docs":{},"t":{"docs":{},"r":{"docs":{},"u":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}},"m":{"docs":{},"a":{"docs":{},"x":{"docs":{},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"v":{"docs":{},"e":{"docs":{},"=":{"5":{"0":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}},"docs":{}},"docs":{}}}}}}}},"p":{"docs":{},"o":{"docs":{},"o":{"docs":{},"l":{"docs":{},"p":{"docs":{},"r":{"docs":{},"e":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"n":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"i":{"docs":{},"z":{"docs":{},"e":{"docs":{},"=":{"2":{"0":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}},"docs":{}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"w":{"docs":{},"a":{"docs":{},"i":{"docs":{},"t":{"docs":{},"=":{"6":{"0":{"0":{"0":{"0":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}}}}}}},"i":{"docs":{},"n":{"docs":{},"e":{"docs":{},"v":{"docs":{},"i":{"docs":{},"c":{"docs":{},"t":{"docs":{},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{},"e":{"docs":{},"i":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"t":{"docs":{},"i":{"docs":{},"m":{"docs":{},"e":{"docs":{},"m":{"docs":{},"i":{"docs":{},"l":{"docs":{},"l":{"docs":{},"i":{"docs":{},"s":{"docs":{},"=":{"3":{"0":{"0":{"0":{"0":{"0":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}},"i":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"=":{"5":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}},"docs":{}}}}}}}}},"p":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"w":{"docs":{},"o":{"docs":{},"r":{"docs":{},"d":{"docs":{},"=":{"docs":{},"x":{"docs":{},"x":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}},"o":{"docs":{},"o":{"docs":{},"l":{"docs":{},"p":{"docs":{},"r":{"docs":{},"e":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"s":{"docs":{},"=":{"docs":{},"t":{"docs":{},"r":{"docs":{},"u":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}}}}}}}}}}}}}}},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},"o":{"docs":{},"n":{"docs":{},"b":{"docs":{},"o":{"docs":{},"r":{"docs":{},"r":{"docs":{},"o":{"docs":{},"w":{"docs":{},"=":{"docs":{},"t":{"docs":{},"r":{"docs":{},"u":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}},"r":{"docs":{},"e":{"docs":{},"t":{"docs":{},"u":{"docs":{},"r":{"docs":{},"n":{"docs":{},"=":{"docs":{},"f":{"docs":{},"a":{"docs":{},"l":{"docs":{},"s":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}},"w":{"docs":{},"h":{"docs":{},"i":{"docs":{},"l":{"docs":{},"e":{"docs":{},"i":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"=":{"docs":{},"t":{"docs":{},"r":{"docs":{},"u":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}}}}},"i":{"docs":{},"m":{"docs":{},"e":{"docs":{},"b":{"docs":{},"e":{"docs":{},"t":{"docs":{},"w":{"docs":{},"e":{"docs":{},"e":{"docs":{},"n":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"n":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"r":{"docs":{},"o":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"l":{"docs":{},"l":{"docs":{},"i":{"docs":{},"s":{"docs":{},"=":{"6":{"0":{"0":{"0":{"0":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}}}}}}}}}}}}}}}}}}},"e":{"docs":{},"v":{"docs":{},"i":{"docs":{},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"r":{"docs":{},"u":{"docs":{},"n":{"docs":{},"s":{"docs":{},"m":{"docs":{},"i":{"docs":{},"l":{"docs":{},"l":{"docs":{},"i":{"docs":{},"s":{"docs":{},"=":{"6":{"0":{"0":{"0":{"0":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"y":{"docs":{},"p":{"docs":{},"e":{"docs":{},"=":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},".":{"docs":{},"a":{"docs":{},"l":{"docs":{},"i":{"docs":{},"b":{"docs":{},"a":{"docs":{},"b":{"docs":{},"a":{"docs":{},".":{"docs":{},"d":{"docs":{},"r":{"docs":{},"u":{"docs":{},"i":{"docs":{},"d":{"docs":{},".":{"docs":{},"p":{"docs":{},"o":{"docs":{},"o":{"docs":{},"l":{"docs":{},".":{"docs":{},"d":{"docs":{},"r":{"docs":{},"u":{"docs":{},"i":{"docs":{},"d":{"docs":{},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"a":{"docs":{},"s":{"docs":{},"o":{"docs":{},"u":{"docs":{},"r":{"docs":{},"c":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"u":{"docs":{},"r":{"docs":{},"l":{"docs":{},"=":{"docs":{},"j":{"docs":{},"d":{"docs":{},"b":{"docs":{},"c":{"docs":{},":":{"docs":{},"m":{"docs":{},"y":{"docs":{},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{},":":{"docs":{},"/":{"docs":{},"/":{"1":{"9":{"2":{"docs":{},".":{"1":{"6":{"8":{"docs":{},".":{"docs":{},"x":{"docs":{},"x":{"docs":{},".":{"docs":{},"x":{"docs":{},"x":{"docs":{},":":{"3":{"3":{"0":{"6":{"docs":{},"/":{"docs":{},"e":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"?":{"docs":{},"c":{"docs":{},"h":{"docs":{},"a":{"docs":{},"r":{"docs":{},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"e":{"docs":{},"n":{"docs":{},"c":{"docs":{},"o":{"docs":{},"d":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"=":{"docs":{},"u":{"docs":{},"t":{"docs":{},"f":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}}}}}}}},"docs":{}},"docs":{}},"docs":{}}},"docs":{}},"docs":{}},"docs":{}}}}}}}}}}}}}}}}},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"=":{"docs":{},"x":{"docs":{},"x":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"i":{"docs":{},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"r":{"docs":{},"y":{"docs":{},"=":{"docs":{},"s":{"docs":{},"e":{"docs":{},"l":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}},"t":{"docs":{},"i":{"docs":{},"m":{"docs":{},"e":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{},"=":{"3":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},".":{"docs":{},"m":{"docs":{},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{},"i":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{},".":{"docs":{},"m":{"docs":{},"a":{"docs":{},"x":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0020222446916076846}}}}}}}}}}}}}}}}}}}}}}}}}},"q":{"docs":{},"l":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.003033367037411527}},"任":{"docs":{},"务":{"docs":{},"和":{"docs":{},"p":{"docs":{},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{},"g":{"docs":{},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}}}}},"t":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{"./":{"ref":"./","tf":0.0078125}}}},"r":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"/":{"docs":{},"e":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.005055611729019211}}}}}}}}}}}}}}},"s":{"docs":{},"k":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.016574585635359115},"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.004044489383215369}},"s":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}},"t":{"docs":{},"y":{"docs":{},"p":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}},"l":{"docs":{},"o":{"docs":{},"g":{"docs":{},"a":{"docs":{},"p":{"docs":{},"p":{"docs":{},"e":{"docs":{},"n":{"docs":{},"d":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}},"f":{"docs":{},"i":{"docs":{},"l":{"docs":{},"t":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}},"e":{"docs":{},"r":{"docs":{},"实":{"docs":{},"现":{"docs":{},"如":{"docs":{},"下":{"docs":{},":":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}},"m":{"docs":{},"a":{"docs":{},"n":{"docs":{},"a":{"docs":{},"g":{"docs":{"task-plugin-development.html":{"ref":"task-plugin-development.html","tf":0.02912621359223301}}}}}}},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"p":{"docs":{},"s":{"docs":{},"和":{"docs":{},"自":{"docs":{},"定":{"docs":{},"义":{"docs":{},"l":{"docs":{},"o":{"docs":{},"g":{"docs":{},"g":{"docs":{},"e":{"docs":{},"r":{"docs":{},",":{"docs":{},"t":{"docs":{},"a":{"docs":{},"s":{"docs":{},"k":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"p":{"docs":{"task-plugin-development.html":{"ref":"task-plugin-development.html","tf":0.009708737864077669}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"h":{"docs":{},":":{"docs":{},"f":{"docs":{},"i":{"docs":{},"r":{"docs":{},"s":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.0078125}}}}}}}},"i":{"docs":{},"s":{"docs":{},".":{"docs":{},"$":{"docs":{},"e":{"docs":{},"m":{"docs":{},"i":{"docs":{},"t":{"docs":{},"(":{"docs":{},"'":{"docs":{},"o":{"docs":{},"n":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}},"m":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},"a":{"docs":{},"g":{"docs":{},"e":{"docs":{},".":{"docs":{},"w":{"docs":{},"a":{"docs":{},"r":{"docs":{},"n":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"(":{"docs":{},"`":{"docs":{},"$":{"docs":{},"{":{"docs":{},"i":{"1":{"8":{"docs":{},"n":{"docs":{},".":{"docs":{},"$":{"docs":{},"t":{"docs":{},"(":{"docs":{},"'":{"docs":{},"请":{"docs":{},"输":{"docs":{},"入":{"docs":{},"方":{"docs":{},"法":{"docs":{},"'":{"docs":{},")":{"docs":{},"}":{"docs":{},"`":{"docs":{},")":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}}}}}},"docs":{}},"docs":{}}}}}}}}}}}}}}}}}}}}}},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"a":{"docs":{},"s":{"docs":{},"o":{"docs":{},"u":{"docs":{},"r":{"docs":{},"c":{"docs":{},"e":{"docs":{},",":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{},"a":{"docs":{},"l":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"a":{"docs":{},"m":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{},",":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}},"t":{"docs":{},"y":{"docs":{},"p":{"docs":{},"e":{"docs":{},",":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}},"a":{"docs":{},"s":{"docs":{},"k":{"docs":{},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{"task-plugin-development.html":{"ref":"task-plugin-development.html","tf":0.009708737864077669}}}}}}}}},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"c":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},"d":{"docs":{},"a":{"docs":{},"o":{"docs":{"task-plugin-development.html":{"ref":"task-plugin-development.html","tf":0.009708737864077669}}}}},"t":{"docs":{},"a":{"docs":{},"s":{"docs":{},"k":{"docs":{"task-plugin-development.html":{"ref":"task-plugin-development.html","tf":0.009708737864077669}}}}}}}}}}}}}}}},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"d":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.003033367037411527}},"p":{"docs":{},"o":{"docs":{},"o":{"docs":{},"l":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}},"y":{"docs":{},"p":{"docs":{},"e":{"docs":{"./":{"ref":"./","tf":0.0078125},"frontend-development.html":{"ref":"frontend-development.html","tf":0.002333722287047841},"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}},":":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.004667444574095682}}}}}},"\"":{"docs":{},"选":{"docs":{},"项":{"docs":{},"用":{"docs":{},"来":{"docs":{},"对":{"docs":{},"配":{"docs":{},"置":{"docs":{},"文":{"docs":{},"件":{"docs":{},"进":{"docs":{},"行":{"docs":{},"检":{"docs":{},"查":{"docs":{},",":{"docs":{},"以":{"docs":{},"便":{"docs":{},"找":{"docs":{},"出":{"docs":{},"不":{"docs":{},"当":{"docs":{},"或":{"docs":{},"错":{"docs":{},"误":{"docs":{},"的":{"docs":{},"配":{"docs":{},"置":{"docs":{},"。":{"docs":{},"配":{"docs":{},"置":{"docs":{},"文":{"docs":{},"件":{"docs":{},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{},"默":{"docs":{},"认":{"docs":{},"位":{"docs":{},"于":{"docs":{},"安":{"docs":{},"装":{"docs":{},"目":{"docs":{},"录":{"docs":{},"/":{"docs":{},"u":{"docs":{},"s":{"docs":{},"r":{"docs":{},"/":{"docs":{},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{},"a":{"docs":{},"l":{"docs":{},"/":{"docs":{},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{},"/":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{},"/":{"docs":{},"目":{"docs":{},"录":{"docs":{},"中":{"docs":{},"。":{"docs":{},"若":{"docs":{},"要":{"docs":{},"检":{"docs":{},"查":{"docs":{},"位":{"docs":{},"于":{"docs":{},"其":{"docs":{},"他":{"docs":{},"位":{"docs":{},"置":{"docs":{},"的":{"docs":{},"配":{"docs":{},"置":{"docs":{},"文":{"docs":{},"件":{"docs":{},",":{"docs":{},"可":{"docs":{},"使":{"docs":{},"用":{"docs":{},"\"":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"c":{"docs":{},"p":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314},"frontend-development.html":{"ref":"frontend-development.html","tf":0.003500583430571762}},".":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}},"t":{"docs":{},"h":{"docs":{},"e":{"docs":{},"n":{"docs":{},"(":{"docs":{},"r":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}},"o":{"docs":{},"n":{"docs":{},"b":{"docs":{},"o":{"docs":{},"r":{"docs":{},"r":{"docs":{},"o":{"docs":{},"w":{"docs":{},",":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}},"r":{"docs":{},"e":{"docs":{},"t":{"docs":{},"u":{"docs":{},"r":{"docs":{},"n":{"docs":{},",":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}},"w":{"docs":{},"h":{"docs":{},"i":{"docs":{},"l":{"docs":{},"e":{"docs":{},"i":{"docs":{},"d":{"docs":{},"l":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}},"x":{"docs":{},"t":{"docs":{},"/":{"docs":{},"c":{"docs":{},"s":{"docs":{},"s":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},"s":{"docs":{},"c":{"docs":{},"r":{"docs":{},"i":{"docs":{},"p":{"docs":{},"t":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}}},"i":{"docs":{},"t":{"docs":{},"l":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}},"e":{"docs":{},":":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}},"m":{"docs":{},"e":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.006066734074823054}},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{},",":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}},"o":{"docs":{},"o":{"docs":{},"l":{"docs":{},"b":{"docs":{},"a":{"docs":{},"r":{"docs":{},"_":{"docs":{},"$":{"docs":{},"{":{"docs":{},"后":{"docs":{},"台":{"docs":{},"定":{"docs":{},"义":{"docs":{},"的":{"docs":{},"节":{"docs":{},"点":{"docs":{},"的":{"docs":{},"英":{"docs":{},"文":{"docs":{},"名":{"docs":{},"称":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}}}},"e":{"docs":{},"v":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}},"o":{"docs":{},"p":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}},"t":{"docs":{},"i":{"docs":{},"p":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.003500583430571762}}}}}}}},"r":{"docs":{},"e":{"docs":{},"e":{"docs":{},"和":{"docs":{},"g":{"docs":{},"a":{"docs":{},"n":{"docs":{},"t":{"docs":{},"t":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.002333722287047841}}}}}}}}}},"u":{"docs":{},"e":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.002333722287047841},"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.003033367037411527}},".":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}},"w":{"docs":{},"a":{"docs":{},"y":{"docs":{"./":{"ref":"./","tf":0.0078125}}},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{},":":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}},"i":{"docs":{},"t":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}},"e":{"docs":{},"c":{"docs":{},"h":{"docs":{},"a":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.0078125}}}}}},"l":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}},"b":{"docs":{},"配":{"docs":{},"置":{"docs":{},"文":{"docs":{},"件":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}},"i":{"docs":{},"d":{"docs":{},"t":{"docs":{},"h":{"docs":{},":":{"docs":{"./":{"ref":"./","tf":0.0078125},"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{},"e":{"docs":{},"r":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206},"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.008088978766430738}},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}},"e":{"docs":{},"r":{"docs":{},"也":{"docs":{},"采":{"docs":{},"用":{"docs":{},"分":{"docs":{},"布":{"docs":{},"式":{"docs":{},"无":{"docs":{},"中":{"docs":{},"心":{"docs":{},"设":{"docs":{},"计":{"docs":{},"理":{"docs":{},"念":{"docs":{},",":{"docs":{},"w":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"主":{"docs":{},"要":{"docs":{},"负":{"docs":{},"责":{"docs":{},"任":{"docs":{},"务":{"docs":{},"的":{"docs":{},"执":{"docs":{},"行":{"docs":{},"和":{"docs":{},"提":{"docs":{},"供":{"docs":{},"日":{"docs":{},"志":{"docs":{},"服":{"docs":{},"务":{"docs":{},"。":{"docs":{},"w":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"服":{"docs":{},"务":{"docs":{},"启":{"docs":{},"动":{"docs":{},"时":{"docs":{},"向":{"docs":{},"z":{"docs":{},"o":{"docs":{},"o":{"docs":{},"k":{"docs":{},"e":{"docs":{},"e":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"注":{"docs":{},"册":{"docs":{},"临":{"docs":{},"时":{"docs":{},"节":{"docs":{},"点":{"docs":{},",":{"docs":{},"并":{"docs":{},"维":{"docs":{},"持":{"docs":{},"心":{"docs":{},"跳":{"docs":{},"。":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"容":{"docs":{},"错":{"docs":{},"流":{"docs":{},"程":{"docs":{},"图":{"docs":{},":":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}},"的":{"docs":{},"角":{"docs":{},"色":{"docs":{},"主":{"docs":{},"要":{"docs":{},"负":{"docs":{},"责":{"docs":{},"任":{"docs":{},"务":{"docs":{},"的":{"docs":{},"执":{"docs":{},"行":{"docs":{},"工":{"docs":{},"作":{"docs":{},"并":{"docs":{},"维":{"docs":{},"护":{"docs":{},"和":{"docs":{},"m":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"的":{"docs":{},"心":{"docs":{},"跳":{"docs":{},",":{"docs":{},"以":{"docs":{},"便":{"docs":{},"m":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"可":{"docs":{},"以":{"docs":{},"分":{"docs":{},"配":{"docs":{},"任":{"docs":{},"务":{"docs":{},"给":{"docs":{},"s":{"docs":{},"l":{"docs":{},"a":{"docs":{},"v":{"docs":{},"e":{"docs":{},"。":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},".":{"docs":{},"e":{"docs":{},"x":{"docs":{},"e":{"docs":{},"c":{"docs":{},".":{"docs":{},"t":{"docs":{},"h":{"docs":{},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"d":{"docs":{},"s":{"docs":{},"=":{"1":{"0":{"0":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}},"docs":{}},"docs":{}},"docs":{}}}}}}}}}}}}}},"f":{"docs":{},"e":{"docs":{},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{},".":{"docs":{},"t":{"docs":{},"a":{"docs":{},"s":{"docs":{},"k":{"docs":{},".":{"docs":{},"n":{"docs":{},"u":{"docs":{},"m":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}}},"h":{"docs":{},"e":{"docs":{},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{},"b":{"docs":{},"e":{"docs":{},"a":{"docs":{},"t":{"docs":{},".":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"=":{"1":{"0":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}},"docs":{}},"docs":{}}}}}}}}}}}}}}}}}}}},"m":{"docs":{},"a":{"docs":{},"x":{"docs":{},".":{"docs":{},"c":{"docs":{},"p":{"docs":{},"u":{"docs":{},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{},".":{"docs":{},"a":{"docs":{},"v":{"docs":{},"g":{"docs":{},"=":{"1":{"0":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}},"docs":{}},"docs":{}}}}}}}}}}}}}}}}},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"t":{"docs":{},"i":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"e":{"docs":{},"d":{"docs":{},".":{"docs":{},"m":{"docs":{},"e":{"docs":{},"m":{"docs":{},"o":{"docs":{},"r":{"docs":{},"y":{"docs":{},"=":{"1":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}},"docs":{}}}}}}}}}}}}}}}}}},"配":{"docs":{},"置":{"docs":{},"文":{"docs":{},"件":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}},".":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.005055611729019211}}}}}},"h":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{},"e":{"docs":{},"r":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.004044489383215369}}}}}}}},"r":{"docs":{},"i":{"docs":{},"t":{"docs":{},"e":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.005055611729019211}}}}}}},"x":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0034071550255536627}},"x":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0020222446916076846}},"x":{"docs":{"./":{"ref":"./","tf":0.0078125}}}},"_":{"docs":{},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"l":{"docs":{},"_":{"docs":{},"i":{"docs":{},"p":{"docs":{},"p":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}}}},"f":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}},"l":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}},"s":{"docs":{},".":{"docs":{},"f":{"docs":{},"i":{"docs":{},"l":{"docs":{},"e":{"docs":{},".":{"docs":{},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{},"=":{"docs":{},"/":{"docs":{},"o":{"docs":{},"p":{"docs":{},"t":{"docs":{},"/":{"docs":{},"x":{"docs":{},"l":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}}}}}}}}}},"{":{"docs":{"./":{"ref":"./","tf":0.0078125},"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0068143100511073255},"frontend-development.html":{"ref":"frontend-development.html","tf":0.043173862310385065},"task-plugin-development.html":{"ref":"task-plugin-development.html","tf":0.009708737864077669}},".":{"docs":{},".":{"docs":{},".":{"docs":{},"f":{"docs":{},"o":{"docs":{},"o":{"docs":{},",":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}},"a":{"docs":{},":":{"1":{"docs":{},"}":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}},"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.003500583430571762}}}},"b":{"docs":{},":":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},",":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}},"{":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.003500583430571762}}},"}":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.002333722287047841}},",":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.005834305717619603}}}},"d":{"docs":{},"b":{"docs":{},"}":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}},"h":{"docs":{},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{},"}":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0020222446916076846}}}}}}},"l":{"docs":{},"i":{"docs":{},"n":{"docs":{},"u":{"docs":{},"x":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"}":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0020222446916076846}}}}}}},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"}":{"docs":{},"/":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}},"/":{"docs":{},"e":{"docs":{},"n":{"docs":{},"v":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0020222446916076846}}}}}}}}}},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{},"/":{"docs":{},"e":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},".":{"docs":{},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{},"和":{"docs":{},"q":{"docs":{},"u":{"docs":{},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{},"z":{"docs":{},".":{"docs":{},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"}":{"docs":{"./":{"ref":"./","tf":0.0078125},"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0068143100511073255},"frontend-development.html":{"ref":"frontend-development.html","tf":0.026837806301050177},"task-plugin-development.html":{"ref":"task-plugin-development.html","tf":0.009708737864077669}},")":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.004667444574095682}}},",":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.014002333722287048}}},"}":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.003500583430571762}}}},"一":{"docs":{},"个":{"docs":{},"分":{"docs":{},"布":{"docs":{},"式":{"docs":{},"易":{"docs":{},"扩":{"docs":{},"展":{"docs":{},"的":{"docs":{},"可":{"docs":{},"视":{"docs":{},"化":{"docs":{},"d":{"docs":{},"a":{"docs":{},"g":{"docs":{},"工":{"docs":{},"作":{"docs":{},"流":{"docs":{},"任":{"docs":{},"务":{"docs":{},"调":{"docs":{},"度":{"docs":{},"系":{"docs":{},"统":{"docs":{},"。":{"docs":{},"致":{"docs":{},"力":{"docs":{},"于":{"docs":{},"解":{"docs":{},"决":{"docs":{},"数":{"docs":{},"据":{"docs":{},"处":{"docs":{},"理":{"docs":{},"流":{"docs":{},"程":{"docs":{},"中":{"docs":{},"错":{"docs":{},"综":{"docs":{},"复":{"docs":{},"杂":{"docs":{},"的":{"docs":{},"依":{"docs":{},"赖":{"docs":{},"关":{"docs":{},"系":{"docs":{},",":{"docs":{},"使":{"docs":{},"调":{"docs":{},"度":{"docs":{},"系":{"docs":{},"统":{"docs":{},"在":{"docs":{},"数":{"docs":{},"据":{"docs":{},"处":{"docs":{},"理":{"docs":{},"流":{"docs":{},"程":{"docs":{},"中":{"docs":{},"开":{"docs":{},"箱":{"docs":{},"即":{"docs":{},"用":{"docs":{},"。":{"docs":{"./":{"ref":"./","tf":0.0078125}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"页":{"docs":{},"面":{"docs":{},"对":{"docs":{},"应":{"docs":{},"一":{"docs":{},"个":{"docs":{},"h":{"docs":{},"t":{"docs":{},"m":{"docs":{},"l":{"docs":{},"文":{"docs":{},"件":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}},"s":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"文":{"docs":{},"件":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}},"键":{"docs":{},"部":{"docs":{},"署":{"docs":{"./":{"ref":"./","tf":0.0078125},"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}},"脚":{"docs":{},"本":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}},"、":{"docs":{},"去":{"docs":{},"中":{"docs":{},"心":{"docs":{},"化":{"docs":{},"v":{"docs":{},"s":{"docs":{},"中":{"docs":{},"心":{"docs":{},"化":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}},"旦":{"docs":{},"m":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"出":{"docs":{},"现":{"docs":{},"了":{"docs":{},"问":{"docs":{},"题":{"docs":{},",":{"docs":{},"则":{"docs":{},"群":{"docs":{},"龙":{"docs":{},"无":{"docs":{},"首":{"docs":{},",":{"docs":{},"整":{"docs":{},"个":{"docs":{},"集":{"docs":{},"群":{"docs":{},"就":{"docs":{},"会":{"docs":{},"崩":{"docs":{},"溃":{"docs":{},"。":{"docs":{},"为":{"docs":{},"了":{"docs":{},"解":{"docs":{},"决":{"docs":{},"这":{"docs":{},"个":{"docs":{},"问":{"docs":{},"题":{"docs":{},",":{"docs":{},"大":{"docs":{},"多":{"docs":{},"数":{"docs":{},"m":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"/":{"docs":{},"s":{"docs":{},"l":{"docs":{},"a":{"docs":{},"v":{"docs":{},"e":{"docs":{},"架":{"docs":{},"构":{"docs":{},"模":{"docs":{},"式":{"docs":{},"都":{"docs":{},"采":{"docs":{},"用":{"docs":{},"了":{"docs":{},"主":{"docs":{},"备":{"docs":{},"m":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"的":{"docs":{},"设":{"docs":{},"计":{"docs":{},"方":{"docs":{},"案":{"docs":{},",":{"docs":{},"可":{"docs":{},"以":{"docs":{},"是":{"docs":{},"热":{"docs":{},"备":{"docs":{},"或":{"docs":{},"者":{"docs":{},"冷":{"docs":{},"备":{"docs":{},",":{"docs":{},"也":{"docs":{},"可":{"docs":{},"以":{"docs":{},"是":{"docs":{},"自":{"docs":{},"动":{"docs":{},"切":{"docs":{},"换":{"docs":{},"或":{"docs":{},"手":{"docs":{},"动":{"docs":{},"切":{"docs":{},"换":{"docs":{},",":{"docs":{},"而":{"docs":{},"且":{"docs":{},"越":{"docs":{},"来":{"docs":{},"越":{"docs":{},"多":{"docs":{},"的":{"docs":{},"新":{"docs":{},"系":{"docs":{},"统":{"docs":{},"都":{"docs":{},"开":{"docs":{},"始":{"docs":{},"具":{"docs":{},"备":{"docs":{},"自":{"docs":{},"动":{"docs":{},"选":{"docs":{},"举":{"docs":{},"切":{"docs":{},"换":{"docs":{},"m":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"的":{"docs":{},"能":{"docs":{},"力":{"docs":{},",":{"docs":{},"以":{"docs":{},"提":{"docs":{},"升":{"docs":{},"系":{"docs":{},"统":{"docs":{},"的":{"docs":{},"可":{"docs":{},"用":{"docs":{},"性":{"docs":{},"。":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"种":{"docs":{},"是":{"docs":{},"业":{"docs":{},"务":{"docs":{},"节":{"docs":{},"点":{"docs":{},",":{"docs":{},"这":{"docs":{},"种":{"docs":{},"节":{"docs":{},"点":{"docs":{},"都":{"docs":{},"对":{"docs":{},"应":{"docs":{},"一":{"docs":{},"个":{"docs":{},"实":{"docs":{},"际":{"docs":{},"的":{"docs":{},"脚":{"docs":{},"本":{"docs":{},"或":{"docs":{},"者":{"docs":{},"处":{"docs":{},"理":{"docs":{},"语":{"docs":{},"句":{"docs":{},",":{"docs":{},"比":{"docs":{},"如":{"docs":{},"s":{"docs":{},"h":{"docs":{},"e":{"docs":{},"l":{"docs":{},"l":{"docs":{},"节":{"docs":{},"点":{"docs":{},",":{"docs":{},"m":{"docs":{},"r":{"docs":{},"节":{"docs":{},"点":{"docs":{},"、":{"docs":{},"s":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"k":{"docs":{},"节":{"docs":{},"点":{"docs":{},"、":{"docs":{},"依":{"docs":{},"赖":{"docs":{},"节":{"docs":{},"点":{"docs":{},"等":{"docs":{},"。":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"行":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}},"不":{"docs":{},"能":{"docs":{},"直":{"docs":{},"观":{"docs":{},"区":{"docs":{},"分":{"docs":{},"任":{"docs":{},"务":{"docs":{},"类":{"docs":{},"型":{"docs":{"./":{"ref":"./","tf":0.0078125}}}}}}}}}}},"需":{"docs":{},"要":{"docs":{},"(":{"docs":{},"本":{"docs":{},"身":{"docs":{},"就":{"docs":{},"支":{"docs":{},"持":{"docs":{},"h":{"docs":{},"a":{"docs":{},")":{"docs":{"./":{"ref":"./","tf":0.0078125}}}}}}}}}}}}}},"与":{"docs":{},"同":{"docs":{},"类":{"docs":{},"调":{"docs":{},"度":{"docs":{},"系":{"docs":{},"统":{"docs":{},"的":{"docs":{},"对":{"docs":{},"比":{"docs":{"./":{"ref":"./","tf":0.0078125}}}}}}}}}}},"a":{"docs":{},"p":{"docs":{},"a":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"的":{"docs":{},"主":{"docs":{},"程":{"docs":{},"序":{"docs":{},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},"d":{"docs":{},"类":{"docs":{},"似":{"docs":{},",":{"docs":{},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{},"的":{"docs":{},"主":{"docs":{},"程":{"docs":{},"序":{"docs":{},"也":{"docs":{},"提":{"docs":{},"供":{"docs":{},"了":{"docs":{},"\"":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"以":{"docs":{},"d":{"docs":{},"a":{"docs":{},"g":{"docs":{},"图":{"docs":{},"的":{"docs":{},"方":{"docs":{},"式":{"docs":{},"将":{"docs":{},"t":{"docs":{},"a":{"docs":{},"s":{"docs":{},"k":{"docs":{},"按":{"docs":{},"照":{"docs":{},"任":{"docs":{},"务":{"docs":{},"的":{"docs":{},"依":{"docs":{},"赖":{"docs":{},"关":{"docs":{},"系":{"docs":{},"关":{"docs":{},"联":{"docs":{},"起":{"docs":{},"来":{"docs":{},",":{"docs":{},"可":{"docs":{},"实":{"docs":{},"时":{"docs":{},"可":{"docs":{},"视":{"docs":{},"化":{"docs":{},"监":{"docs":{},"控":{"docs":{},"任":{"docs":{},"务":{"docs":{},"的":{"docs":{},"运":{"docs":{},"行":{"docs":{},"状":{"docs":{},"态":{"docs":{"./":{"ref":"./","tf":0.0078125}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"/":{"docs":{},"流":{"docs":{},"程":{"docs":{},"定":{"docs":{},"义":{"docs":{},"i":{"docs":{},"d":{"docs":{},"/":{"docs":{},"流":{"docs":{},"程":{"docs":{},"实":{"docs":{},"例":{"docs":{},"i":{"docs":{},"d":{"docs":{},"/":{"docs":{},"任":{"docs":{},"务":{"docs":{},"实":{"docs":{},"例":{"docs":{},"i":{"docs":{},"d":{"docs":{},".":{"docs":{},"l":{"docs":{},"o":{"docs":{},"g":{"docs":{},"的":{"docs":{},"形":{"docs":{},"式":{"docs":{},"生":{"docs":{},"成":{"docs":{},"日":{"docs":{},"志":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"任":{"docs":{},"务":{"docs":{},"太":{"docs":{},"多":{"docs":{},"时":{"docs":{},"会":{"docs":{},"卡":{"docs":{},"死":{"docs":{},"服":{"docs":{},"务":{"docs":{},"器":{"docs":{"./":{"ref":"./","tf":0.015625}}}}}}}}}}},"状":{"docs":{},"态":{"docs":{},"、":{"docs":{},"任":{"docs":{},"务":{"docs":{},"类":{"docs":{},"型":{"docs":{},"、":{"docs":{},"重":{"docs":{},"试":{"docs":{},"次":{"docs":{},"数":{"docs":{},"、":{"docs":{},"任":{"docs":{},"务":{"docs":{},"运":{"docs":{},"行":{"docs":{},"机":{"docs":{},"器":{"docs":{},"、":{"docs":{},"可":{"docs":{},"视":{"docs":{},"化":{"docs":{},"变":{"docs":{},"量":{"docs":{},"等":{"docs":{},"关":{"docs":{},"键":{"docs":{},"信":{"docs":{},"息":{"docs":{},"一":{"docs":{},"目":{"docs":{},"了":{"docs":{},"然":{"docs":{"./":{"ref":"./","tf":0.0078125}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"类":{"docs":{},"型":{"docs":{"./":{"ref":"./","tf":0.0078125}}}},"队":{"docs":{},"列":{"docs":{},"机":{"docs":{},"制":{"docs":{},",":{"docs":{},"单":{"docs":{},"个":{"docs":{},"机":{"docs":{},"器":{"docs":{},"上":{"docs":{},"可":{"docs":{},"调":{"docs":{},"度":{"docs":{},"的":{"docs":{},"任":{"docs":{},"务":{"docs":{},"数":{"docs":{},"量":{"docs":{},"可":{"docs":{},"以":{"docs":{},"灵":{"docs":{},"活":{"docs":{},"配":{"docs":{},"置":{"docs":{},",":{"docs":{},"当":{"docs":{},"任":{"docs":{},"务":{"docs":{},"过":{"docs":{},"多":{"docs":{},"时":{"docs":{},"会":{"docs":{},"缓":{"docs":{},"存":{"docs":{},"在":{"docs":{},"任":{"docs":{},"务":{"docs":{},"队":{"docs":{},"列":{"docs":{},"中":{"docs":{},",":{"docs":{},"不":{"docs":{},"会":{"docs":{},"造":{"docs":{},"成":{"docs":{},"机":{"docs":{},"器":{"docs":{},"卡":{"docs":{},"死":{"docs":{"./":{"ref":"./","tf":0.0078125}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"实":{"docs":{},"例":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}},"切":{"docs":{},"分":{"docs":{},"、":{"docs":{},"任":{"docs":{},"务":{"docs":{},"提":{"docs":{},"交":{"docs":{},"监":{"docs":{},"控":{"docs":{},",":{"docs":{},"并":{"docs":{},"同":{"docs":{},"时":{"docs":{},"监":{"docs":{},"听":{"docs":{},"其":{"docs":{},"它":{"docs":{},"m":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"和":{"docs":{},"w":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"的":{"docs":{},"健":{"docs":{},"康":{"docs":{},"状":{"docs":{},"态":{"docs":{},"。":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"失":{"docs":{},"败":{"docs":{},"重":{"docs":{},"试":{"docs":{},"是":{"docs":{},"任":{"docs":{},"务":{"docs":{},"级":{"docs":{},"别":{"docs":{},"的":{"docs":{},",":{"docs":{},"是":{"docs":{},"调":{"docs":{},"度":{"docs":{},"系":{"docs":{},"统":{"docs":{},"自":{"docs":{},"动":{"docs":{},"进":{"docs":{},"行":{"docs":{},"的":{"docs":{},",":{"docs":{},"比":{"docs":{},"如":{"docs":{},"一":{"docs":{},"个":{"docs":{},"s":{"docs":{},"h":{"docs":{},"e":{"docs":{},"l":{"docs":{},"l":{"docs":{},"任":{"docs":{},"务":{"docs":{},"设":{"docs":{},"置":{"docs":{},"重":{"docs":{},"试":{"docs":{},"次":{"docs":{},"数":{"docs":{},"为":{"3":{"docs":{},"次":{"docs":{},",":{"docs":{},"那":{"docs":{},"么":{"docs":{},"在":{"docs":{},"s":{"docs":{},"h":{"docs":{},"e":{"docs":{},"l":{"docs":{},"l":{"docs":{},"任":{"docs":{},"务":{"docs":{},"运":{"docs":{},"行":{"docs":{},"失":{"docs":{},"败":{"docs":{},"后":{"docs":{},"会":{"docs":{},"自":{"docs":{},"己":{"docs":{},"再":{"docs":{},"最":{"docs":{},"多":{"docs":{},"尝":{"docs":{},"试":{"docs":{},"运":{"docs":{},"行":{"3":{"docs":{},"次":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"的":{"docs":{},"优":{"docs":{},"先":{"docs":{},"级":{"docs":{},"也":{"docs":{},"分":{"docs":{},"为":{"5":{"docs":{},"级":{"docs":{},",":{"docs":{},"依":{"docs":{},"次":{"docs":{},"为":{"docs":{},"h":{"docs":{},"i":{"docs":{},"g":{"docs":{},"h":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},"、":{"docs":{},"h":{"docs":{},"i":{"docs":{},"g":{"docs":{},"h":{"docs":{},"、":{"docs":{},"m":{"docs":{},"e":{"docs":{},"d":{"docs":{},"i":{"docs":{},"u":{"docs":{},"m":{"docs":{},"、":{"docs":{},"l":{"docs":{},"o":{"docs":{},"w":{"docs":{},"、":{"docs":{},"l":{"docs":{},"o":{"docs":{},"w":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},"。":{"docs":{},"如":{"docs":{},"下":{"docs":{},"图":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}}}}}}}},"插":{"docs":{},"件":{"docs":{},"开":{"docs":{},"发":{"docs":{"task-plugin-development.html":{"ref":"task-plugin-development.html","tf":0.009708737864077669}}}}}}}},"使":{"docs":{},"用":{"docs":{},"手":{"docs":{},"册":{"docs":{"./":{"ref":"./","tf":0.0078125}}}},"部":{"docs":{},"署":{"docs":{},"用":{"docs":{},"户":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}},"其":{"docs":{},"主":{"docs":{},"要":{"docs":{},"目":{"docs":{},"标":{"docs":{},"如":{"docs":{},"下":{"docs":{},":":{"docs":{"./":{"ref":"./","tf":0.0078125}}}}}}}}},"中":{"docs":{},"m":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"监":{"docs":{},"控":{"docs":{},"其":{"docs":{},"他":{"docs":{},"m":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"和":{"docs":{},"w":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{},"e":{"docs":{},"r":{"docs":{},"的":{"docs":{},"目":{"docs":{},"录":{"docs":{},",":{"docs":{},"如":{"docs":{},"果":{"docs":{},"监":{"docs":{},"听":{"docs":{},"到":{"docs":{},"r":{"docs":{},"e":{"docs":{},"m":{"docs":{},"o":{"docs":{},"v":{"docs":{},"e":{"docs":{},"事":{"docs":{},"件":{"docs":{},",":{"docs":{},"则":{"docs":{},"会":{"docs":{},"根":{"docs":{},"据":{"docs":{},"具":{"docs":{},"体":{"docs":{},"的":{"docs":{},"业":{"docs":{},"务":{"docs":{},"逻":{"docs":{},"辑":{"docs":{},"进":{"docs":{},"行":{"docs":{},"流":{"docs":{},"程":{"docs":{},"实":{"docs":{},"例":{"docs":{},"容":{"docs":{},"错":{"docs":{},"或":{"docs":{},"者":{"docs":{},"任":{"docs":{},"务":{"docs":{},"实":{"docs":{},"例":{"docs":{},"容":{"docs":{},"错":{"docs":{},"。":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"流":{"docs":{},"程":{"docs":{},"定":{"docs":{},"义":{"docs":{},"的":{"docs":{},"优":{"docs":{},"先":{"docs":{},"级":{"docs":{},"是":{"docs":{},"考":{"docs":{},"虑":{"docs":{},"到":{"docs":{},"有":{"docs":{},"些":{"docs":{},"流":{"docs":{},"程":{"docs":{},"需":{"docs":{},"要":{"docs":{},"先":{"docs":{},"于":{"docs":{},"其":{"docs":{},"他":{"docs":{},"流":{"docs":{},"程":{"docs":{},"进":{"docs":{},"行":{"docs":{},"处":{"docs":{},"理":{"docs":{},",":{"docs":{},"这":{"docs":{},"个":{"docs":{},"可":{"docs":{},"以":{"docs":{},"在":{"docs":{},"流":{"docs":{},"程":{"docs":{},"启":{"docs":{},"动":{"docs":{},"或":{"docs":{},"者":{"docs":{},"定":{"docs":{},"时":{"docs":{},"启":{"docs":{},"动":{"docs":{},"时":{"docs":{},"配":{"docs":{},"置":{"docs":{},",":{"docs":{},"共":{"docs":{},"有":{"5":{"docs":{},"级":{"docs":{},",":{"docs":{},"依":{"docs":{},"次":{"docs":{},"为":{"docs":{},"h":{"docs":{},"i":{"docs":{},"g":{"docs":{},"h":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},"、":{"docs":{},"h":{"docs":{},"i":{"docs":{},"g":{"docs":{},"h":{"docs":{},"、":{"docs":{},"m":{"docs":{},"e":{"docs":{},"d":{"docs":{},"i":{"docs":{},"u":{"docs":{},"m":{"docs":{},"、":{"docs":{},"l":{"docs":{},"o":{"docs":{},"w":{"docs":{},"、":{"docs":{},"l":{"docs":{},"o":{"docs":{},"w":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},"。":{"docs":{},"如":{"docs":{},"下":{"docs":{},"图":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"前":{"docs":{},"端":{"docs":{},"部":{"docs":{},"署":{"docs":{},"文":{"docs":{},"档":{"docs":{"./":{"ref":"./","tf":0.0078125},"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}},"代":{"docs":{},"理":{"docs":{},"的":{"docs":{},"接":{"docs":{},"口":{"docs":{},"地":{"docs":{},"址":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}},"在":{"docs":{},"开":{"docs":{},"发":{"docs":{},"环":{"docs":{},"境":{"docs":{},"(":{"docs":{},"d":{"docs":{},"e":{"docs":{},"v":{"docs":{},")":{"docs":{},"中":{"docs":{},"运":{"docs":{},"行":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}}}}}}}},"项":{"docs":{},"目":{"docs":{},"发":{"docs":{},"布":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}},"构":{"docs":{},"建":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}},"环":{"docs":{},"境":{"docs":{},"构":{"docs":{},"建":{"docs":{},"及":{"docs":{},"编":{"docs":{},"译":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}}}},"定":{"docs":{},"义":{"docs":{},"i":{"docs":{},"d":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}},"开":{"docs":{},"发":{"docs":{},"文":{"docs":{},"档":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}},"用":{"docs":{},"作":{"docs":{},"k":{"docs":{},"e":{"docs":{},"y":{"docs":{},"值":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}},"功":{"docs":{},"能":{"docs":{"./":{"ref":"./","tf":0.0078125}}}},"单":{"docs":{},"一":{"docs":{},"调":{"docs":{},"度":{"docs":{},"程":{"docs":{},"序":{"docs":{"./":{"ref":"./","tf":0.0078125}}}}}}},"个":{"docs":{},"w":{"docs":{},"e":{"docs":{},"b":{"docs":{},"和":{"docs":{},"调":{"docs":{},"度":{"docs":{},"程":{"docs":{},"序":{"docs":{},"组":{"docs":{},"合":{"docs":{"./":{"ref":"./","tf":0.0078125}}}}}}}}}}}}},"点":{"docs":{},"故":{"docs":{},"障":{"docs":{"./":{"ref":"./","tf":0.0078125}}}}}},"去":{"docs":{},"中":{"docs":{},"心":{"docs":{},"化":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}},"的":{"docs":{},"多":{"docs":{},"m":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"和":{"docs":{},"多":{"docs":{},"w":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{"./":{"ref":"./","tf":0.0078125}}}}}}}}}}}}}}}},"设":{"docs":{},"计":{"docs":{},"的":{"docs":{},"核":{"docs":{},"心":{"docs":{},"设":{"docs":{},"计":{"docs":{},"在":{"docs":{},"于":{"docs":{},"整":{"docs":{},"个":{"docs":{},"分":{"docs":{},"布":{"docs":{},"式":{"docs":{},"系":{"docs":{},"统":{"docs":{},"中":{"docs":{},"不":{"docs":{},"存":{"docs":{},"在":{"docs":{},"一":{"docs":{},"个":{"docs":{},"区":{"docs":{},"别":{"docs":{},"于":{"docs":{},"其":{"docs":{},"他":{"docs":{},"节":{"docs":{},"点":{"docs":{},"的":{"docs":{},"”":{"docs":{},"管":{"docs":{},"理":{"docs":{},"者":{"docs":{},"”":{"docs":{},",":{"docs":{},"因":{"docs":{},"此":{"docs":{},"不":{"docs":{},"存":{"docs":{},"在":{"docs":{},"单":{"docs":{},"点":{"docs":{},"故":{"docs":{},"障":{"docs":{},"问":{"docs":{},"题":{"docs":{},"。":{"docs":{},"但":{"docs":{},"由":{"docs":{},"于":{"docs":{},"不":{"docs":{},"存":{"docs":{},"在":{"docs":{},"”":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"只":{"docs":{},"能":{"docs":{},"看":{"docs":{},"到":{"docs":{},"任":{"docs":{},"务":{"docs":{},"状":{"docs":{},"态":{"docs":{"./":{"ref":"./","tf":0.0078125}}}}}}}}}},"可":{"docs":{},"视":{"docs":{},"化":{"docs":{},"流":{"docs":{},"程":{"docs":{},"定":{"docs":{},"义":{"docs":{"./":{"ref":"./","tf":0.0078125}}}}}},"库":{"docs":{},"图":{"docs":{},"表":{"docs":{},"库":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}},"以":{"docs":{},"转":{"docs":{},"淘":{"docs":{},"宝":{"docs":{},"镜":{"docs":{},"像":{"docs":{},"命":{"docs":{},"令":{"docs":{},"行":{"docs":{},"输":{"docs":{},"入":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}}}}}}},"后":{"docs":{},"端":{"docs":{},"部":{"docs":{},"署":{"docs":{},"文":{"docs":{},"档":{"docs":{"./":{"ref":"./","tf":0.0078125}}}}}}},"台":{"docs":{},"定":{"docs":{},"义":{"docs":{},"节":{"docs":{},"点":{"docs":{},"类":{"docs":{},"型":{"docs":{},"英":{"docs":{},"文":{"docs":{},"名":{"docs":{},"称":{"docs":{},"用":{"docs":{},"作":{"docs":{},"k":{"docs":{},"e":{"docs":{},"y":{"docs":{},"值":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}}}}}},"续":{"docs":{},"用":{"docs":{},"作":{"docs":{},"排":{"docs":{},"序":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}},"否":{"docs":{"./":{"ref":"./","tf":0.046875}}},"契":{"docs":{},"合":{"docs":{},"度":{"docs":{"./":{"ref":"./","tf":0.0078125}}}}},"实":{"docs":{},"现":{"docs":{},"集":{"docs":{},"群":{"docs":{},"h":{"docs":{},"a":{"docs":{},",":{"docs":{},"通":{"docs":{},"过":{"docs":{},"z":{"docs":{},"o":{"docs":{},"o":{"docs":{},"k":{"docs":{},"e":{"docs":{},"e":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"实":{"docs":{},"现":{"docs":{},"m":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"集":{"docs":{},"群":{"docs":{},"和":{"docs":{},"w":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{},"e":{"docs":{},"r":{"docs":{},"集":{"docs":{},"群":{"docs":{},"去":{"docs":{},"中":{"docs":{},"心":{"docs":{},"化":{"docs":{"./":{"ref":"./","tf":0.0078125}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"用":{"docs":{},"工":{"docs":{},"具":{"docs":{},"库":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}},"际":{"docs":{},"上":{"docs":{},",":{"docs":{},"真":{"docs":{},"正":{"docs":{},"去":{"docs":{},"中":{"docs":{},"心":{"docs":{},"化":{"docs":{},"的":{"docs":{},"分":{"docs":{},"布":{"docs":{},"式":{"docs":{},"系":{"docs":{},"统":{"docs":{},"并":{"docs":{},"不":{"docs":{},"多":{"docs":{},"见":{"docs":{},"。":{"docs":{},"反":{"docs":{},"而":{"docs":{},"动":{"docs":{},"态":{"docs":{},"中":{"docs":{},"心":{"docs":{},"化":{"docs":{},"分":{"docs":{},"布":{"docs":{},"式":{"docs":{},"系":{"docs":{},"统":{"docs":{},"正":{"docs":{},"在":{"docs":{},"不":{"docs":{},"断":{"docs":{},"涌":{"docs":{},"出":{"docs":{},"。":{"docs":{},"在":{"docs":{},"这":{"docs":{},"种":{"docs":{},"架":{"docs":{},"构":{"docs":{},"下":{"docs":{},",":{"docs":{},"集":{"docs":{},"群":{"docs":{},"中":{"docs":{},"的":{"docs":{},"管":{"docs":{},"理":{"docs":{},"者":{"docs":{},"是":{"docs":{},"被":{"docs":{},"动":{"docs":{},"态":{"docs":{},"选":{"docs":{},"择":{"docs":{},"出":{"docs":{},"来":{"docs":{},"的":{"docs":{},",":{"docs":{},"而":{"docs":{},"不":{"docs":{},"是":{"docs":{},"预":{"docs":{},"置":{"docs":{},"的":{"docs":{},",":{"docs":{},"并":{"docs":{},"且":{"docs":{},"集":{"docs":{},"群":{"docs":{},"在":{"docs":{},"发":{"docs":{},"生":{"docs":{},"故":{"docs":{},"障":{"docs":{},"的":{"docs":{},"时":{"docs":{},"候":{"docs":{},",":{"docs":{},"集":{"docs":{},"群":{"docs":{},"的":{"docs":{},"节":{"docs":{},"点":{"docs":{},"会":{"docs":{},"自":{"docs":{},"发":{"docs":{},"的":{"docs":{},"举":{"docs":{},"行":{"docs":{},"\"":{"docs":{},"会":{"docs":{},"议":{"docs":{},"\"":{"docs":{},"来":{"docs":{},"选":{"docs":{},"举":{"docs":{},"新":{"docs":{},"的":{"docs":{},"\"":{"docs":{},"管":{"docs":{},"理":{"docs":{},"者":{"docs":{},"\"":{"docs":{},"去":{"docs":{},"主":{"docs":{},"持":{"docs":{},"工":{"docs":{},"作":{"docs":{},"。":{"docs":{},"最":{"docs":{},"典":{"docs":{},"型":{"docs":{},"的":{"docs":{},"案":{"docs":{},"例":{"docs":{},"就":{"docs":{},"是":{"docs":{},"z":{"docs":{},"o":{"docs":{},"o":{"docs":{},"k":{"docs":{},"e":{"docs":{},"e":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"及":{"docs":{},"g":{"docs":{},"o":{"docs":{},"语":{"docs":{},"言":{"docs":{},"实":{"docs":{},"现":{"docs":{},"的":{"docs":{},"e":{"docs":{},"t":{"docs":{},"c":{"docs":{},"d":{"docs":{},"。":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"帮":{"docs":{},"助":{"docs":{"./":{"ref":"./","tf":0.0078125}}}},"快":{"docs":{},"速":{"docs":{},"部":{"docs":{},"署":{"docs":{"./":{"ref":"./","tf":0.0078125}}}}}},"所":{"docs":{},"有":{"docs":{},"流":{"docs":{},"程":{"docs":{},"定":{"docs":{},"义":{"docs":{},"操":{"docs":{},"作":{"docs":{},"都":{"docs":{},"是":{"docs":{},"可":{"docs":{},"视":{"docs":{},"化":{"docs":{},"的":{"docs":{},",":{"docs":{},"通":{"docs":{},"过":{"docs":{},"拖":{"docs":{},"拽":{"docs":{},"任":{"docs":{},"务":{"docs":{},"来":{"docs":{},"绘":{"docs":{},"制":{"docs":{},"d":{"docs":{},"a":{"docs":{},"g":{"docs":{},",":{"docs":{},"配":{"docs":{},"置":{"docs":{},"数":{"docs":{},"据":{"docs":{},"源":{"docs":{},"及":{"docs":{},"资":{"docs":{},"源":{"docs":{},"。":{"docs":{},"同":{"docs":{},"时":{"docs":{},"对":{"docs":{},"于":{"docs":{},"第":{"docs":{},"三":{"docs":{},"方":{"docs":{},"系":{"docs":{},"统":{"docs":{},",":{"docs":{},"提":{"docs":{},"供":{"docs":{},"a":{"docs":{},"p":{"docs":{},"i":{"docs":{},"方":{"docs":{},"式":{"docs":{},"的":{"docs":{},"操":{"docs":{},"作":{"docs":{},"。":{"docs":{"./":{"ref":"./","tf":0.0078125}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"的":{"docs":{},"接":{"docs":{},"口":{"docs":{},"都":{"docs":{},"以":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}},"页":{"docs":{},"面":{"docs":{},"入":{"docs":{},"口":{"docs":{},"文":{"docs":{},"件":{"docs":{},"在":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}},"扩":{"docs":{},"展":{"docs":{},"性":{"docs":{"./":{"ref":"./","tf":0.0078125}}},"开":{"docs":{},"发":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}},"支":{"docs":{},"持":{"docs":{"./":{"ref":"./","tf":0.0078125}},"丰":{"docs":{},"富":{"docs":{},"的":{"docs":{},"任":{"docs":{},"务":{"docs":{},"类":{"docs":{},"型":{"docs":{},":":{"docs":{},"s":{"docs":{},"h":{"docs":{},"e":{"docs":{},"l":{"docs":{},"l":{"docs":{},"、":{"docs":{},"m":{"docs":{},"r":{"docs":{},"、":{"docs":{},"s":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"k":{"docs":{},"、":{"docs":{},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{},"(":{"docs":{},"m":{"docs":{},"y":{"docs":{},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{},"、":{"docs":{},"p":{"docs":{},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{},"g":{"docs":{},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{},"、":{"docs":{},"h":{"docs":{},"i":{"docs":{},"v":{"docs":{},"e":{"docs":{},"、":{"docs":{},"s":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"k":{"docs":{},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{},")":{"docs":{},",":{"docs":{},"p":{"docs":{},"y":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"n":{"docs":{},",":{"docs":{},"s":{"docs":{},"u":{"docs":{},"b":{"docs":{},"_":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"c":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},"、":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"c":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"r":{"docs":{},"e":{"docs":{},"等":{"docs":{"./":{"ref":"./","tf":0.0078125}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"任":{"docs":{},"务":{"docs":{},"日":{"docs":{},"志":{"docs":{},"在":{"docs":{},"线":{"docs":{},"查":{"docs":{},"看":{"docs":{},"及":{"docs":{},"滚":{"docs":{},"动":{"docs":{},"、":{"docs":{},"在":{"docs":{},"线":{"docs":{},"下":{"docs":{},"载":{"docs":{},"日":{"docs":{},"志":{"docs":{},"等":{"docs":{"./":{"ref":"./","tf":0.0078125}}}}}}}}}}}}}}}}}}}}},"传":{"docs":{},"统":{"docs":{},"的":{"docs":{},"s":{"docs":{},"h":{"docs":{},"e":{"docs":{},"l":{"docs":{},"l":{"docs":{},"任":{"docs":{},"务":{"docs":{},",":{"docs":{},"同":{"docs":{},"时":{"docs":{},"支":{"docs":{},"持":{"docs":{},"大":{"docs":{},"数":{"docs":{},"据":{"docs":{},"平":{"docs":{},"台":{"docs":{},"任":{"docs":{},"务":{"docs":{},"调":{"docs":{},"度":{"docs":{},":":{"docs":{"./":{"ref":"./","tf":0.0078125}}}}}}}}}}}}}}}}}}}}}}}}}}},"国":{"docs":{},"际":{"docs":{},"化":{"docs":{"./":{"ref":"./","tf":0.0078125}}}}},"多":{"docs":{},"租":{"docs":{},"户":{"docs":{"./":{"ref":"./","tf":0.0078125}}}}},"大":{"docs":{},"数":{"docs":{},"据":{"docs":{},"作":{"docs":{},"业":{"docs":{},"s":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"k":{"docs":{},",":{"docs":{},"h":{"docs":{},"i":{"docs":{},"v":{"docs":{},"e":{"docs":{},",":{"docs":{},"m":{"docs":{},"r":{"docs":{},"的":{"docs":{},"调":{"docs":{},"度":{"docs":{},",":{"docs":{},"同":{"docs":{},"时":{"docs":{},"由":{"docs":{},"于":{"docs":{},"支":{"docs":{},"持":{"docs":{},"多":{"docs":{},"租":{"docs":{},"户":{"docs":{},",":{"docs":{},"与":{"docs":{},"大":{"docs":{},"数":{"docs":{},"据":{"docs":{},"业":{"docs":{},"务":{"docs":{},"更":{"docs":{},"加":{"docs":{},"契":{"docs":{},"合":{"docs":{"./":{"ref":"./","tf":0.0078125}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"对":{"docs":{},"m":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"/":{"docs":{},"w":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{"./":{"ref":"./","tf":0.0078125}}}}}}}}}}}}}},"工":{"docs":{},"作":{"docs":{},"流":{"docs":{},"优":{"docs":{},"先":{"docs":{},"级":{"docs":{},"、":{"docs":{},"任":{"docs":{},"务":{"docs":{},"优":{"docs":{},"先":{"docs":{},"级":{"docs":{},"及":{"docs":{},"任":{"docs":{},"务":{"docs":{},"的":{"docs":{},"故":{"docs":{},"障":{"docs":{},"转":{"docs":{},"移":{"docs":{},"及":{"docs":{},"任":{"docs":{},"务":{"docs":{},"超":{"docs":{},"时":{"docs":{},"告":{"docs":{},"警":{"docs":{},"/":{"docs":{},"失":{"docs":{},"败":{"docs":{"./":{"ref":"./","tf":0.0078125}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"全":{"docs":{},"局":{"docs":{},"参":{"docs":{},"数":{"docs":{},"及":{"docs":{},"节":{"docs":{},"点":{"docs":{},"自":{"docs":{},"定":{"docs":{},"义":{"docs":{},"参":{"docs":{},"数":{"docs":{},"设":{"docs":{},"置":{"docs":{"./":{"ref":"./","tf":0.0078125}}}}}}}}}}}}}}}},"定":{"docs":{},"时":{"docs":{},"调":{"docs":{},"度":{"docs":{},"、":{"docs":{},"依":{"docs":{},"赖":{"docs":{},"调":{"docs":{},"度":{"docs":{},"、":{"docs":{},"手":{"docs":{},"动":{"docs":{},"调":{"docs":{},"度":{"docs":{},"、":{"docs":{},"手":{"docs":{},"动":{"docs":{},"暂":{"docs":{},"停":{"docs":{},"/":{"docs":{},"停":{"docs":{},"止":{"docs":{},"/":{"docs":{},"恢":{"docs":{},"复":{"docs":{},",":{"docs":{},"同":{"docs":{},"时":{"docs":{},"支":{"docs":{},"持":{"docs":{},"失":{"docs":{},"败":{"docs":{},"重":{"docs":{},"试":{"docs":{},"/":{"docs":{},"告":{"docs":{},"警":{"docs":{},"、":{"docs":{},"从":{"docs":{},"指":{"docs":{},"定":{"docs":{},"节":{"docs":{},"点":{"docs":{},"恢":{"docs":{},"复":{"docs":{},"失":{"docs":{},"败":{"docs":{},"、":{"docs":{},"k":{"docs":{},"i":{"docs":{},"l":{"docs":{},"l":{"docs":{},"任":{"docs":{},"务":{"docs":{},"等":{"docs":{},"操":{"docs":{},"作":{"docs":{"./":{"ref":"./","tf":0.0078125}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"运":{"docs":{},"行":{"docs":{},"历":{"docs":{},"史":{"docs":{},"树":{"docs":{},"形":{"docs":{},"/":{"docs":{},"甘":{"docs":{},"特":{"docs":{},"图":{"docs":{},"展":{"docs":{},"示":{"docs":{},"、":{"docs":{},"支":{"docs":{},"持":{"docs":{},"任":{"docs":{},"务":{"docs":{},"状":{"docs":{},"态":{"docs":{},"统":{"docs":{},"计":{"docs":{},"、":{"docs":{},"流":{"docs":{},"程":{"docs":{},"状":{"docs":{},"态":{"docs":{},"统":{"docs":{},"计":{"docs":{"./":{"ref":"./","tf":0.0078125}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"暂":{"docs":{},"停":{"docs":{},",":{"docs":{},"恢":{"docs":{},"复":{"docs":{},"操":{"docs":{},"作":{"docs":{"./":{"ref":"./","tf":0.0078125}}}}}}}}},"补":{"docs":{},"数":{"docs":{"./":{"ref":"./","tf":0.0078125}}}},"资":{"docs":{},"源":{"docs":{},"文":{"docs":{},"件":{"docs":{},"的":{"docs":{},"在":{"docs":{},"线":{"docs":{},"上":{"docs":{},"传":{"docs":{},"/":{"docs":{},"下":{"docs":{},"载":{"docs":{},",":{"docs":{},"管":{"docs":{},"理":{"docs":{},"等":{"docs":{},",":{"docs":{},"支":{"docs":{},"持":{"docs":{},"在":{"docs":{},"线":{"docs":{},"文":{"docs":{},"件":{"docs":{},"创":{"docs":{},"建":{"docs":{},"、":{"docs":{},"编":{"docs":{},"辑":{"docs":{"./":{"ref":"./","tf":0.0078125}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"文":{"docs":{},"档":{"docs":{"./":{"ref":"./","tf":0.0078125}}},"件":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}},"夹":{"docs":{},",":{"docs":{},"在":{"docs":{},"文":{"docs":{},"件":{"docs":{},"夹":{"docs":{},"里":{"docs":{},"建":{"docs":{},"一":{"docs":{},"个":{"docs":{},"i":{"docs":{},"n":{"docs":{},"d":{"docs":{},"e":{"docs":{},"x":{"docs":{},".":{"docs":{},"v":{"docs":{},"u":{"docs":{},"e":{"docs":{},"入":{"docs":{},"口":{"docs":{},"文":{"docs":{},"件":{"docs":{},"。":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}}}}}}}}}}}}},"管":{"docs":{},"理":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}},",":{"docs":{},"跟":{"docs":{},"当":{"docs":{},"前":{"docs":{},"节":{"docs":{},"点":{"docs":{},"相":{"docs":{},"关":{"docs":{},"的":{"docs":{},"组":{"docs":{},"件":{"docs":{},"内":{"docs":{},"容":{"docs":{},"都":{"docs":{},"在":{"docs":{},"这":{"docs":{},"里":{"docs":{},"写":{"docs":{},"。":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}}}}}}}}}},"易":{"docs":{},"用":{"docs":{},"性":{"docs":{"./":{"ref":"./","tf":0.0078125}}}}},"是":{"docs":{"./":{"ref":"./","tf":0.0546875}},"否":{"docs":{},"支":{"docs":{},"持":{"docs":{},"多":{"docs":{},"租":{"docs":{},"户":{"docs":{"./":{"ref":"./","tf":0.0078125}}}}},"自":{"docs":{},"定":{"docs":{},"义":{"docs":{},"任":{"docs":{},"务":{"docs":{},"类":{"docs":{},"型":{"docs":{"./":{"ref":"./","tf":0.0078125}}}}}}}}},"集":{"docs":{},"群":{"docs":{},"扩":{"docs":{},"展":{"docs":{"./":{"ref":"./","tf":0.0078125}}}}}}}},"能":{"docs":{},"暂":{"docs":{},"停":{"docs":{},"和":{"docs":{},"恢":{"docs":{},"复":{"docs":{"./":{"ref":"./","tf":0.0078125}}}}}}}},"旋":{"docs":{},"转":{"docs":{},"(":{"docs":{},"需":{"docs":{},"代":{"docs":{},"码":{"docs":{},"判":{"docs":{},"断":{"docs":{},")":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}},"禁":{"docs":{},"用":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}},",":{"docs":{},"但":{"docs":{},"是":{"docs":{},"复":{"docs":{},"杂":{"docs":{"./":{"ref":"./","tf":0.015625}}}}}}}},"更":{"docs":{},"多":{"docs":{},"文":{"docs":{},"档":{"docs":{},"请":{"docs":{},"参":{"docs":{},"考":{"docs":{"./":{"ref":"./","tf":0.0078125}}}}}}}},"改":{"docs":{},"上":{"docs":{},"传":{"docs":{},"大":{"docs":{},"小":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}},"高":{"docs":{},",":{"docs":{},"为":{"docs":{},"了":{"docs":{},"避":{"docs":{},"免":{"docs":{},"无":{"docs":{},"效":{"docs":{},"计":{"docs":{},"算":{"docs":{},"和":{"docs":{},"渲":{"docs":{},"染":{"docs":{},",":{"docs":{},"应":{"docs":{},"该":{"docs":{},"尽":{"docs":{},"量":{"docs":{},"将":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}}}}}}}}},"由":{"docs":{},"于":{"docs":{},"不":{"docs":{},"支":{"docs":{},"持":{"docs":{},"多":{"docs":{},"租":{"docs":{},"户":{"docs":{},",":{"docs":{},"在":{"docs":{},"大":{"docs":{},"数":{"docs":{},"据":{"docs":{},"平":{"docs":{},"台":{"docs":{},"业":{"docs":{},"务":{"docs":{},"使":{"docs":{},"用":{"docs":{},"不":{"docs":{},"够":{"docs":{},"灵":{"docs":{},"活":{"docs":{"./":{"ref":"./","tf":0.015625}}}}}}}}}}}}}}}}}}}}}}},"w":{"docs":{},"e":{"docs":{},"b":{"docs":{},"(":{"docs":{},"u":{"docs":{},"i":{"docs":{},")":{"docs":{},"和":{"docs":{},"w":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{},"e":{"docs":{},"r":{"docs":{},"不":{"docs":{},"一":{"docs":{},"定":{"docs":{},"在":{"docs":{},"同":{"docs":{},"一":{"docs":{},"台":{"docs":{},"机":{"docs":{},"器":{"docs":{},"上":{"docs":{},",":{"docs":{},"所":{"docs":{},"以":{"docs":{},"查":{"docs":{},"看":{"docs":{},"日":{"docs":{},"志":{"docs":{},"不":{"docs":{},"能":{"docs":{},"像":{"docs":{},"查":{"docs":{},"询":{"docs":{},"本":{"docs":{},"地":{"docs":{},"文":{"docs":{},"件":{"docs":{},"那":{"docs":{},"样":{"docs":{},"。":{"docs":{},"有":{"docs":{},"两":{"docs":{},"种":{"docs":{},"方":{"docs":{},"案":{"docs":{},":":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"稳":{"docs":{},"定":{"docs":{},"性":{"docs":{"./":{"ref":"./","tf":0.0078125}}}}},"系":{"docs":{},"统":{"docs":{},"部":{"docs":{},"分":{"docs":{},"截":{"docs":{},"图":{"docs":{"./":{"ref":"./","tf":0.0078125}}}}}},"功":{"docs":{},"能":{"docs":{},"模":{"docs":{},"块":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}},"支":{"docs":{},"持":{"docs":{},"基":{"docs":{},"于":{"docs":{},"c":{"docs":{},"r":{"docs":{},"o":{"docs":{},"n":{"docs":{},"表":{"docs":{},"达":{"docs":{},"式":{"docs":{},"的":{"docs":{},"定":{"docs":{},"时":{"docs":{},"调":{"docs":{},"度":{"docs":{},"和":{"docs":{},"手":{"docs":{},"动":{"docs":{},"调":{"docs":{},"度":{"docs":{},"。":{"docs":{},"命":{"docs":{},"令":{"docs":{},"类":{"docs":{},"型":{"docs":{},"支":{"docs":{},"持":{"docs":{},":":{"docs":{},"启":{"docs":{},"动":{"docs":{},"工":{"docs":{},"作":{"docs":{},"流":{"docs":{},"、":{"docs":{},"从":{"docs":{},"当":{"docs":{},"前":{"docs":{},"节":{"docs":{},"点":{"docs":{},"开":{"docs":{},"始":{"docs":{},"执":{"docs":{},"行":{"docs":{},"、":{"docs":{},"恢":{"docs":{},"复":{"docs":{},"被":{"docs":{},"容":{"docs":{},"错":{"docs":{},"的":{"docs":{},"工":{"docs":{},"作":{"docs":{},"流":{"docs":{},"、":{"docs":{},"恢":{"docs":{},"复":{"docs":{},"暂":{"docs":{},"停":{"docs":{},"流":{"docs":{},"程":{"docs":{},"、":{"docs":{},"从":{"docs":{},"失":{"docs":{},"败":{"docs":{},"节":{"docs":{},"点":{"docs":{},"开":{"docs":{},"始":{"docs":{},"执":{"docs":{},"行":{"docs":{},"、":{"docs":{},"补":{"docs":{},"数":{"docs":{},"、":{"docs":{},"调":{"docs":{},"度":{"docs":{},"、":{"docs":{},"重":{"docs":{},"跑":{"docs":{},"、":{"docs":{},"暂":{"docs":{},"停":{"docs":{},"、":{"docs":{},"停":{"docs":{},"止":{"docs":{},"、":{"docs":{},"恢":{"docs":{},"复":{"docs":{},"等":{"docs":{},"待":{"docs":{},"线":{"docs":{},"程":{"docs":{},"。":{"docs":{},"其":{"docs":{},"中":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"架":{"docs":{},"构":{"docs":{},"图":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.011049723756906077}}},"设":{"docs":{},"计":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":10}}}}}},"的":{"docs":{},"前":{"docs":{},"端":{"docs":{},"页":{"docs":{},"面":{"docs":{},",":{"docs":{},"提":{"docs":{},"供":{"docs":{},"系":{"docs":{},"统":{"docs":{},"的":{"docs":{},"各":{"docs":{},"种":{"docs":{},"可":{"docs":{},"视":{"docs":{},"化":{"docs":{},"操":{"docs":{},"作":{"docs":{},"界":{"docs":{},"面":{"docs":{},",":{"docs":{},"详":{"docs":{},"见":{"docs":{},"使":{"docs":{},"用":{"docs":{},"手":{"docs":{},"册":{"docs":{},"部":{"docs":{},"分":{"docs":{},"。":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"设":{"docs":{},"计":{"docs":{},"特":{"docs":{},"点":{"docs":{},":":{"docs":{"./":{"ref":"./","tf":0.0078125}}}}}},"定":{"docs":{},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{},"的":{"docs":{},"安":{"docs":{},"装":{"docs":{},"目":{"docs":{},"录":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}}}}}}},"调":{"docs":{},"度":{"docs":{},"器":{"docs":{},"使":{"docs":{},"用":{"docs":{},"分":{"docs":{},"布":{"docs":{},"式":{"docs":{},"调":{"docs":{},"度":{"docs":{},",":{"docs":{},"整":{"docs":{},"体":{"docs":{},"的":{"docs":{},"调":{"docs":{},"度":{"docs":{},"能":{"docs":{},"力":{"docs":{},"会":{"docs":{},"随":{"docs":{},"便":{"docs":{},"集":{"docs":{},"群":{"docs":{},"的":{"docs":{},"规":{"docs":{},"模":{"docs":{},"线":{"docs":{},"性":{"docs":{},"增":{"docs":{},"长":{"docs":{},",":{"docs":{},"m":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"和":{"docs":{},"w":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{},"e":{"docs":{},"r":{"docs":{},"支":{"docs":{},"持":{"docs":{},"动":{"docs":{},"态":{"docs":{},"上":{"docs":{},"下":{"docs":{},"线":{"docs":{"./":{"ref":"./","tf":0.0078125}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"系":{"docs":{},"统":{"docs":{},"架":{"docs":{},"构":{"docs":{},"设":{"docs":{},"计":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}},"用":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}},"过":{"docs":{},"载":{"docs":{},"处":{"docs":{},"理":{"docs":{"./":{"ref":"./","tf":0.0078125}}}}},"滤":{"docs":{},"器":{"docs":{},"和":{"docs":{},"v":{"docs":{},"u":{"docs":{},"e":{"docs":{},"管":{"docs":{},"道":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}},"匹":{"docs":{},"配":{"docs":{},"以":{"docs":{},"t":{"docs":{},"a":{"docs":{},"s":{"docs":{},"k":{"docs":{},"l":{"docs":{},"o":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"f":{"docs":{},"o":{"docs":{},"开":{"docs":{},"始":{"docs":{},"的":{"docs":{},"线":{"docs":{},"程":{"docs":{},"名":{"docs":{},"称":{"docs":{},":":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}}}},"还":{"docs":{},"有":{"docs":{},"更":{"docs":{},"多":{"docs":{},"等":{"docs":{},"待":{"docs":{},"伙":{"docs":{},"伴":{"docs":{},"们":{"docs":{},"探":{"docs":{},"索":{"docs":{"./":{"ref":"./","tf":0.0078125}}}}}}}}}}},"一":{"docs":{},"种":{"docs":{},"是":{"docs":{},"逻":{"docs":{},"辑":{"docs":{},"节":{"docs":{},"点":{"docs":{},",":{"docs":{},"这":{"docs":{},"种":{"docs":{},"节":{"docs":{},"点":{"docs":{},"不":{"docs":{},"做":{"docs":{},"实":{"docs":{},"际":{"docs":{},"的":{"docs":{},"脚":{"docs":{},"本":{"docs":{},"或":{"docs":{},"语":{"docs":{},"句":{"docs":{},"处":{"docs":{},"理":{"docs":{},",":{"docs":{},"只":{"docs":{},"是":{"docs":{},"整":{"docs":{},"个":{"docs":{},"流":{"docs":{},"程":{"docs":{},"流":{"docs":{},"转":{"docs":{},"的":{"docs":{},"逻":{"docs":{},"辑":{"docs":{},"处":{"docs":{},"理":{"docs":{},",":{"docs":{},"比":{"docs":{},"如":{"docs":{},"子":{"docs":{},"流":{"docs":{},"程":{"docs":{},"节":{"docs":{},"等":{"docs":{},"。":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"通":{"docs":{},"过":{"docs":{},"p":{"docs":{},"y":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"n":{"docs":{},"代":{"docs":{},"码":{"docs":{},"来":{"docs":{},"绘":{"docs":{},"制":{"docs":{},"d":{"docs":{},"a":{"docs":{},"g":{"docs":{},",":{"docs":{},"使":{"docs":{},"用":{"docs":{},"不":{"docs":{},"便":{"docs":{},",":{"docs":{},"特":{"docs":{},"别":{"docs":{},"是":{"docs":{},"对":{"docs":{},"不":{"docs":{},"会":{"docs":{},"写":{"docs":{},"代":{"docs":{},"码":{"docs":{},"的":{"docs":{},"业":{"docs":{},"务":{"docs":{},"人":{"docs":{},"员":{"docs":{},"基":{"docs":{},"本":{"docs":{},"无":{"docs":{},"法":{"docs":{},"使":{"docs":{},"用":{"docs":{},"。":{"docs":{"./":{"ref":"./","tf":0.0078125}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"自":{"docs":{},"定":{"docs":{},"义":{"docs":{},"d":{"docs":{},"s":{"docs":{},"l":{"docs":{},"绘":{"docs":{},"制":{"docs":{},"d":{"docs":{},"a":{"docs":{},"g":{"docs":{},"并":{"docs":{},"打":{"docs":{},"包":{"docs":{},"上":{"docs":{},"传":{"docs":{"./":{"ref":"./","tf":0.0078125}}}}}}}}}}}}}}}}}},"检":{"docs":{},"查":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}},"g":{"docs":{},"r":{"docs":{},"p":{"docs":{},"c":{"docs":{},"通":{"docs":{},"信":{"docs":{},"获":{"docs":{},"取":{"docs":{},"远":{"docs":{},"程":{"docs":{},"日":{"docs":{},"志":{"docs":{},"信":{"docs":{},"息":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}},"用":{"docs":{},"配":{"docs":{},"置":{"docs":{},"文":{"docs":{},"件":{"docs":{},"配":{"docs":{},"置":{"docs":{},",":{"docs":{},"队":{"docs":{},"列":{"docs":{},"选":{"docs":{},"择":{"docs":{},"及":{"docs":{},"地":{"docs":{},"址":{"docs":{},"配":{"docs":{},"置":{"docs":{},",":{"docs":{},"通":{"docs":{},"用":{"docs":{},"文":{"docs":{},"件":{"docs":{},"目":{"docs":{},"录":{"docs":{},"配":{"docs":{},"置":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"部":{"docs":{},"署":{"docs":{},"文":{"docs":{},"档":{"docs":{"./":{"ref":"./","tf":0.0078125},"backend-deploy.html":{"ref":"backend-deploy.html","tf":10.001011122345805}}}},"用":{"docs":{},"户":{"docs":{},"是":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}},"集":{"docs":{},"群":{"docs":{},"化":{"docs":{},"部":{"docs":{},"署":{"docs":{},"复":{"docs":{},"杂":{"docs":{"./":{"ref":"./","tf":0.015625}}}}}}},"启":{"docs":{},"动":{"docs":{},"、":{"docs":{},"停":{"docs":{},"止":{"docs":{},"和":{"docs":{},"服":{"docs":{},"务":{"docs":{},"监":{"docs":{},"控":{"docs":{},"启":{"docs":{},"停":{"docs":{},"脚":{"docs":{},"本":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}}}}},"需":{"docs":{},"将":{"docs":{},"工":{"docs":{},"作":{"docs":{},"流":{"docs":{},"杀":{"docs":{},"死":{"docs":{},"再":{"docs":{},"运":{"docs":{},"行":{"docs":{"./":{"ref":"./","tf":0.015625}}}}}}}}}}},"要":{"docs":{},"容":{"docs":{},"错":{"docs":{},"”":{"docs":{},"状":{"docs":{},"态":{"docs":{},",":{"docs":{},"则":{"docs":{},"接":{"docs":{},"管":{"docs":{},"任":{"docs":{},"务":{"docs":{},"并":{"docs":{},"进":{"docs":{},"行":{"docs":{},"重":{"docs":{},"新":{"docs":{},"提":{"docs":{},"交":{"docs":{},"。":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}},"在":{"docs":{"task-plugin-development.html":{"ref":"task-plugin-development.html","tf":0.02912621359223301}}},"继":{"docs":{},"承":{"docs":{},"c":{"docs":{},"n":{"docs":{},".":{"docs":{},"e":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},".":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},".":{"docs":{},"w":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{},"e":{"docs":{},"r":{"docs":{},".":{"docs":{},"t":{"docs":{},"a":{"docs":{},"s":{"docs":{},"k":{"docs":{"task-plugin-development.html":{"ref":"task-plugin-development.html","tf":0.02912621359223301}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"\"":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0034071550255536627}},"#":{"docs":{},"\"":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}},"$":{"1":{"docs":{},"\"":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}},"docs":{}},"u":{"docs":{},"p":{"docs":{},"g":{"docs":{},"r":{"docs":{},"a":{"docs":{},"d":{"docs":{},"e":{"docs":{},"\"":{"docs":{},";":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}}},"s":{"docs":{},"a":{"docs":{},"g":{"docs":{},"e":{"docs":{},":":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}},"a":{"docs":{},"d":{"docs":{},"m":{"docs":{},"i":{"docs":{},"n":{"docs":{},"_":{"docs":{},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"/":{"docs":{},"g":{"docs":{},"e":{"docs":{},"n":{"docs":{},"e":{"docs":{},"r":{"docs":{},"a":{"docs":{},"l":{"docs":{},"_":{"docs":{},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"\"":{"docs":{},"权":{"docs":{},"限":{"docs":{},"控":{"docs":{},"制":{"docs":{},"页":{"docs":{},"面":{"docs":{},"操":{"docs":{},"作":{"docs":{},"按":{"docs":{},"钮":{"docs":{},"是":{"docs":{},"否":{"docs":{},"d":{"docs":{},"i":{"docs":{},"s":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},"\"":{"docs":{},",":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}},"f":{"docs":{},"a":{"docs":{},"l":{"docs":{},"s":{"docs":{},"e":{"docs":{},"\"":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}},"z":{"docs":{},"o":{"docs":{},"o":{"docs":{},"k":{"docs":{},"e":{"docs":{},"e":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"\"":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}},"#":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.015332197614991482},"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0455005055611729}},"!":{"docs":{},"/":{"docs":{},"b":{"docs":{},"i":{"docs":{},"n":{"docs":{},"/":{"docs":{},"b":{"docs":{},"a":{"docs":{},"s":{"docs":{},"h":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}}}}},"a":{"docs":{},"c":{"docs":{},"c":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},"_":{"docs":{},"l":{"docs":{},"o":{"docs":{},"g":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}}}},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"t":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}},"c":{"docs":{},"h":{"docs":{},"a":{"docs":{},"r":{"docs":{},"s":{"docs":{},"e":{"docs":{},"t":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}},"e":{"docs":{},"c":{"docs":{},"k":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}},"c":{"docs":{},"c":{"docs":{},";":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.002333722287047841}}}}}},"d":{"docs":{},"e":{"docs":{},"v":{"docs":{},"_":{"docs":{},"h":{"docs":{},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}},"f":{"docs":{},"a":{"docs":{},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}},"e":{"docs":{},"r":{"docs":{},"r":{"docs":{},"o":{"docs":{},"r":{"docs":{},"_":{"docs":{},"p":{"docs":{},"a":{"docs":{},"g":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}}},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.003033367037411527}}}}}}}}},"x":{"docs":{},"e":{"docs":{},"c":{"docs":{},"u":{"docs":{},"t":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0020222446916076846}}}}}}}},"#":{"docs":{},"#":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}},"#":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}},"#":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.011049723756906077}},"#":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.011049723756906077}}}}}}},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{},"=":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.008088978766430738}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},"o":{"docs":{},"u":{"docs":{},"r":{"docs":{},"c":{"docs":{},"e":{"docs":{},".":{"docs":{},"v":{"docs":{},"i":{"docs":{},"e":{"docs":{},"w":{"docs":{},".":{"docs":{},"s":{"docs":{},"u":{"docs":{},"f":{"docs":{},"f":{"docs":{},"i":{"docs":{},"x":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}},"m":{"docs":{},"a":{"docs":{},"n":{"docs":{},"a":{"docs":{},"g":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}},"t":{"docs":{},"a":{"docs":{},"s":{"docs":{},"k":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}},"h":{"docs":{},"e":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}},"z":{"docs":{},"o":{"docs":{},"o":{"docs":{},"k":{"docs":{},"e":{"docs":{},"e":{"docs":{},"p":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.003033367037411527}}}}}}}}}},"$":{"0":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.005110732538330494}}},"docs":{},"(":{"docs":{},"c":{"docs":{},"a":{"docs":{},"t":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0034071550255536627}}}}}},"h":{"docs":{},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{},";":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},"_":{"docs":{},"u":{"docs":{},"p":{"docs":{},"g":{"docs":{},"r":{"docs":{},"a":{"docs":{},"d":{"docs":{},"e":{"docs":{},";":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}}}}}}}},"p":{"docs":{},"i":{"docs":{},"d":{"docs":{},"f":{"docs":{},")":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0034071550255536627}}}}}},"r":{"docs":{},"o":{"docs":{},"g":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}},"x":{"docs":{},"y":{"docs":{},"_":{"docs":{},"a":{"docs":{},"d":{"docs":{},"d":{"docs":{},"_":{"docs":{},"x":{"docs":{},"_":{"docs":{},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"w":{"docs":{},"a":{"docs":{},"r":{"docs":{},"d":{"docs":{},"e":{"docs":{},"d":{"docs":{},"_":{"docs":{},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},";":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}}}}}}}}}}}}}}}}}}}}},"r":{"docs":{},"e":{"docs":{},"m":{"docs":{},"o":{"docs":{},"t":{"docs":{},"e":{"docs":{},"_":{"docs":{},"a":{"docs":{},"d":{"docs":{},"d":{"docs":{},"r":{"docs":{},";":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.005110732538330494}}}}}}}}}}}}}},"{":{"docs":{},"节":{"docs":{},"点":{"docs":{},"类":{"docs":{},"型":{"docs":{},"(":{"docs":{},"小":{"docs":{},"写":{"docs":{},")":{"docs":{},"}":{"docs":{},".":{"docs":{},"v":{"docs":{},"u":{"docs":{},"e":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}}}},"&":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}},"&":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}},"(":{"1":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.005110732538330494}},")":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.004667444574095682}}}},"2":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}},")":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.003500583430571762}}}},"3":{"docs":{},")":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}},"4":{"docs":{},")":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}},"5":{"docs":{},".":{"5":{"docs":{},"+":{"docs":{},")":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}},"docs":{}}},"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{},"|":{"docs":{},"s":{"docs":{},"t":{"docs":{},"o":{"docs":{},"p":{"docs":{},"|":{"docs":{},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{},"|":{"docs":{},"r":{"docs":{},"e":{"docs":{},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{},")":{"docs":{},"\"":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"启":{"docs":{},"动":{"docs":{},"后":{"docs":{},"访":{"docs":{},"问":{"docs":{},"地":{"docs":{},"址":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}},"打":{"docs":{},"包":{"docs":{},"后":{"docs":{},"根":{"docs":{},"目":{"docs":{},"录":{"docs":{},"会":{"docs":{},"创":{"docs":{},"建":{"docs":{},"一":{"docs":{},"个":{"docs":{},"名":{"docs":{},"为":{"docs":{},"d":{"docs":{},"i":{"docs":{},"s":{"docs":{},"t":{"docs":{},"文":{"docs":{},"件":{"docs":{},"夹":{"docs":{},",":{"docs":{},"用":{"docs":{},"于":{"docs":{},"发":{"docs":{},"布":{"docs":{},"线":{"docs":{},"上":{"docs":{},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{},")":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"注":{"docs":{},"意":{"docs":{},"版":{"docs":{},"本":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}},"!":{"docs":{},"t":{"docs":{},"h":{"docs":{},"i":{"docs":{},"s":{"docs":{},".":{"docs":{},"$":{"docs":{},"r":{"docs":{},"e":{"docs":{},"f":{"docs":{},"s":{"docs":{},".":{"docs":{},"r":{"docs":{},"e":{"docs":{},"f":{"docs":{},"d":{"docs":{},"s":{"docs":{},".":{"docs":{},"_":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"i":{"docs":{},"f":{"docs":{},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"a":{"docs":{},"s":{"docs":{},"o":{"docs":{},"u":{"docs":{},"r":{"docs":{},"c":{"docs":{},"e":{"docs":{},"(":{"docs":{},")":{"docs":{},")":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}}}}}}}}}}},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{},"a":{"docs":{},"l":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"a":{"docs":{},"m":{"docs":{},"s":{"docs":{},".":{"docs":{},"_":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"i":{"docs":{},"f":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"p":{"docs":{},"(":{"docs":{},")":{"docs":{},")":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{},")":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}},")":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.003500583430571762}}},"l":{"docs":{},"e":{"docs":{},"t":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}},"v":{"docs":{},")":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}},"{":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},",":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}},"*":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.005834305717619603},"architecture-design.html":{"ref":"architecture-design.html","tf":0.011049723756906077},"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.004044489383215369}},")":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}},"/":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.002333722287047841},"architecture-design.html":{"ref":"architecture-design.html","tf":0.011049723756906077}}},"*":{"docs":{},"d":{"docs":{},"a":{"docs":{},"g":{"docs":{},"*":{"docs":{},"*":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}},"q":{"docs":{},"u":{"docs":{},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{},"z":{"docs":{},"*":{"docs":{},"*":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{},"任":{"docs":{},"务":{"docs":{},"*":{"docs":{},"*":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}},"u":{"docs":{},"b":{"docs":{},"_":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"c":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},"*":{"docs":{},"*":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}},"两":{"docs":{},"种":{"docs":{},"命":{"docs":{},"令":{"docs":{},"类":{"docs":{},"型":{"docs":{},"是":{"docs":{},"由":{"docs":{},"调":{"docs":{},"度":{"docs":{},"内":{"docs":{},"部":{"docs":{},"控":{"docs":{},"制":{"docs":{},"使":{"docs":{},"用":{"docs":{},",":{"docs":{},"外":{"docs":{},"部":{"docs":{},"无":{"docs":{},"法":{"docs":{},"调":{"docs":{},"用":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}}},"任":{"docs":{},"务":{"docs":{},"实":{"docs":{},"例":{"docs":{},"*":{"docs":{},"*":{"docs":{},":":{"docs":{},"任":{"docs":{},"务":{"docs":{},"实":{"docs":{},"例":{"docs":{},"是":{"docs":{},"流":{"docs":{},"程":{"docs":{},"定":{"docs":{},"义":{"docs":{},"中":{"docs":{},"任":{"docs":{},"务":{"docs":{},"节":{"docs":{},"点":{"docs":{},"的":{"docs":{},"实":{"docs":{},"例":{"docs":{},"化":{"docs":{},",":{"docs":{},"标":{"docs":{},"识":{"docs":{},"着":{"docs":{},"具":{"docs":{},"体":{"docs":{},"的":{"docs":{},"任":{"docs":{},"务":{"docs":{},"执":{"docs":{},"行":{"docs":{},"状":{"docs":{},"态":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"类":{"docs":{},"型":{"docs":{},"*":{"docs":{},"*":{"docs":{},":":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}},"优":{"docs":{},"先":{"docs":{},"级":{"docs":{},"*":{"docs":{},"*":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}},"依":{"docs":{},"赖":{"docs":{},"*":{"docs":{},"*":{"docs":{},":":{"docs":{},"系":{"docs":{},"统":{"docs":{},"不":{"docs":{},"单":{"docs":{},"单":{"docs":{},"支":{"docs":{},"持":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}},"失":{"docs":{},"败":{"docs":{},"策":{"docs":{},"略":{"docs":{},"*":{"docs":{},"*":{"docs":{},":":{"docs":{},"对":{"docs":{},"于":{"docs":{},"并":{"docs":{},"行":{"docs":{},"运":{"docs":{},"行":{"docs":{},"的":{"docs":{},"任":{"docs":{},"务":{"docs":{},",":{"docs":{},"如":{"docs":{},"果":{"docs":{},"有":{"docs":{},"任":{"docs":{},"务":{"docs":{},"失":{"docs":{},"败":{"docs":{},",":{"docs":{},"提":{"docs":{},"供":{"docs":{},"两":{"docs":{},"种":{"docs":{},"失":{"docs":{},"败":{"docs":{},"策":{"docs":{},"略":{"docs":{},"处":{"docs":{},"理":{"docs":{},"方":{"docs":{},"式":{"docs":{},",":{"docs":{},"*":{"docs":{},"*":{"docs":{},"继":{"docs":{},"续":{"docs":{},"*":{"docs":{},"*":{"docs":{},"是":{"docs":{},"指":{"docs":{},"不":{"docs":{},"管":{"docs":{},"并":{"docs":{},"行":{"docs":{},"运":{"docs":{},"行":{"docs":{},"任":{"docs":{},"务":{"docs":{},"的":{"docs":{},"状":{"docs":{},"态":{"docs":{},",":{"docs":{},"直":{"docs":{},"到":{"docs":{},"流":{"docs":{},"程":{"docs":{},"失":{"docs":{},"败":{"docs":{},"结":{"docs":{},"束":{"docs":{},"。":{"docs":{},"*":{"docs":{},"*":{"docs":{},"结":{"docs":{},"束":{"docs":{},"*":{"docs":{},"*":{"docs":{},"是":{"docs":{},"指":{"docs":{},"一":{"docs":{},"旦":{"docs":{},"发":{"docs":{},"现":{"docs":{},"失":{"docs":{},"败":{"docs":{},"任":{"docs":{},"务":{"docs":{},",":{"docs":{},"则":{"docs":{},"同":{"docs":{},"时":{"docs":{},"k":{"docs":{},"i":{"docs":{},"l":{"docs":{},"l":{"docs":{},"掉":{"docs":{},"正":{"docs":{},"在":{"docs":{},"运":{"docs":{},"行":{"docs":{},"的":{"docs":{},"并":{"docs":{},"行":{"docs":{},"任":{"docs":{},"务":{"docs":{},",":{"docs":{},"流":{"docs":{},"程":{"docs":{},"失":{"docs":{},"败":{"docs":{},"结":{"docs":{},"束":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"定":{"docs":{},"时":{"docs":{},"调":{"docs":{},"度":{"docs":{},"*":{"docs":{},"*":{"docs":{},":":{"docs":{},"系":{"docs":{},"统":{"docs":{},"采":{"docs":{},"用":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}},"恢":{"docs":{},"复":{"docs":{},"等":{"docs":{},"待":{"docs":{},"线":{"docs":{},"程":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}},"被":{"docs":{},"容":{"docs":{},"错":{"docs":{},"的":{"docs":{},"工":{"docs":{},"作":{"docs":{},"流":{"docs":{},"*":{"docs":{},"*":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}},"流":{"docs":{},"程":{"docs":{},"定":{"docs":{},"义":{"docs":{},"*":{"docs":{},"*":{"docs":{},":":{"docs":{},"通":{"docs":{},"过":{"docs":{},"拖":{"docs":{},"拽":{"docs":{},"任":{"docs":{},"务":{"docs":{},"节":{"docs":{},"点":{"docs":{},"并":{"docs":{},"建":{"docs":{},"立":{"docs":{},"任":{"docs":{},"务":{"docs":{},"节":{"docs":{},"点":{"docs":{},"的":{"docs":{},"关":{"docs":{},"联":{"docs":{},"所":{"docs":{},"形":{"docs":{},"成":{"docs":{},"的":{"docs":{},"可":{"docs":{},"视":{"docs":{},"化":{"docs":{},"*":{"docs":{},"*":{"docs":{},"d":{"docs":{},"a":{"docs":{},"g":{"docs":{},"*":{"docs":{},"*":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"实":{"docs":{},"例":{"docs":{},"*":{"docs":{},"*":{"docs":{},":":{"docs":{},"流":{"docs":{},"程":{"docs":{},"实":{"docs":{},"例":{"docs":{},"是":{"docs":{},"流":{"docs":{},"程":{"docs":{},"定":{"docs":{},"义":{"docs":{},"的":{"docs":{},"实":{"docs":{},"例":{"docs":{},"化":{"docs":{},",":{"docs":{},"可":{"docs":{},"以":{"docs":{},"通":{"docs":{},"过":{"docs":{},"手":{"docs":{},"动":{"docs":{},"启":{"docs":{},"动":{"docs":{},"或":{"docs":{},"定":{"docs":{},"时":{"docs":{},"调":{"docs":{},"度":{"docs":{},"生":{"docs":{},"成":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"补":{"docs":{},"数":{"docs":{},"*":{"docs":{},"*":{"docs":{},":":{"docs":{},"补":{"docs":{},"历":{"docs":{},"史":{"docs":{},"数":{"docs":{},"据":{"docs":{},",":{"docs":{},"支":{"docs":{},"持":{"docs":{},"*":{"docs":{},"*":{"docs":{},"区":{"docs":{},"间":{"docs":{},"并":{"docs":{},"行":{"docs":{},"和":{"docs":{},"串":{"docs":{},"行":{"docs":{},"*":{"docs":{},"*":{"docs":{},"两":{"docs":{},"种":{"docs":{},"补":{"docs":{},"数":{"docs":{},"方":{"docs":{},"式":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"调":{"docs":{},"度":{"docs":{},"方":{"docs":{},"式":{"docs":{},":":{"docs":{},"*":{"docs":{},"*":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}},"邮":{"docs":{},"件":{"docs":{},"告":{"docs":{},"警":{"docs":{},"*":{"docs":{},"*":{"docs":{},":":{"docs":{},"支":{"docs":{},"持":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}},".":{"docs":{},".":{"docs":{},".":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314},"frontend-development.html":{"ref":"frontend-development.html","tf":0.002333722287047841}}}},"/":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{},"i":{"docs":{},"g":{"docs":{},"u":{"docs":{},"r":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.005110732538330494}},"e":{"docs":{},":":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}}}}},"b":{"docs":{},"i":{"docs":{},"n":{"docs":{},"/":{"docs":{},"a":{"docs":{},"r":{"docs":{},"k":{"docs":{},"l":{"docs":{},"i":{"docs":{},"f":{"docs":{},"t":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.010111223458038422}}}}}}}}}}}}}},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.002333722287047841}}}}}},"e":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"_":{"docs":{},"e":{"docs":{},"n":{"docs":{},"v":{"docs":{},".":{"docs":{},"s":{"docs":{},"h":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}}}}}}},";":{"docs":{},";":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0068143100511073255}}}},"=":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.005110732538330494},"frontend-development.html":{"ref":"frontend-development.html","tf":0.010501750291715286},"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.022244691607684528},"task-plugin-development.html":{"ref":"task-plugin-development.html","tf":0.02912621359223301}},"=":{"docs":{},"=":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}},">":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.05367561260210035}}}},">":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314},"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206},"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}},"[":{"docs":{},"b":{"docs":{},"a":{"docs":{},"s":{"docs":{},"e":{"docs":{},"]":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}},"r":{"docs":{},"o":{"docs":{},"o":{"docs":{},"t":{"docs":{},"@":{"docs":{},"c":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"o":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.044293015332197615}}}}}}}}}}}},"\"":{"docs":{},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},"@":{"docs":{},"a":{"docs":{},"n":{"docs":{},"a":{"docs":{},"l":{"docs":{},"y":{"docs":{},"s":{"docs":{},"y":{"docs":{},"s":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},".":{"docs":{},"c":{"docs":{},"n":{"docs":{},"\"":{"docs":{},",":{"docs":{},"\"":{"docs":{},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"1":{"docs":{},"@":{"docs":{},"a":{"docs":{},"n":{"docs":{},"a":{"docs":{},"l":{"docs":{},"y":{"docs":{},"s":{"docs":{},"y":{"docs":{},"s":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},".":{"docs":{},"c":{"docs":{},"n":{"docs":{},"\"":{"docs":{},",":{"docs":{},"\"":{"docs":{},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"3":{"docs":{},"@":{"docs":{},"a":{"docs":{},"n":{"docs":{},"a":{"docs":{},"l":{"docs":{},"y":{"docs":{},"s":{"docs":{},"y":{"docs":{},"s":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},".":{"docs":{},"c":{"docs":{},"n":{"docs":{},"\"":{"docs":{},"]":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}}}}}}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"k":{"docs":{},"e":{"docs":{},"y":{"docs":{},",":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}},"g":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}},"c":{"docs":{},"c":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0034071550255536627}}}},"i":{"docs":{},"t":{"docs":{},"@":{"docs":{},"g":{"docs":{},"i":{"docs":{},"t":{"docs":{},".":{"docs":{},"a":{"docs":{},"n":{"docs":{},"a":{"docs":{},"l":{"docs":{},"y":{"docs":{},"s":{"docs":{},"y":{"docs":{},"s":{"docs":{},".":{"docs":{},"c":{"docs":{},"n":{"docs":{},":":{"docs":{},"a":{"docs":{},"n":{"docs":{},"a":{"docs":{},"l":{"docs":{},"y":{"docs":{},"s":{"docs":{},"y":{"docs":{},"s":{"docs":{},"_":{"docs":{},"c":{"docs":{},"h":{"docs":{},"a":{"docs":{},"n":{"docs":{},"g":{"docs":{},"s":{"docs":{},"h":{"docs":{},"a":{"docs":{},"/":{"docs":{},"e":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},".":{"docs":{},"g":{"docs":{},"i":{"docs":{},"t":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"p":{"docs":{},"g":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"c":{"docs":{},"k":{"docs":{},"=":{"0":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}},"docs":{}}}}}}}}},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"p":{"docs":{},"=":{"docs":{},"e":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0034071550255536627}}}}}}}}}}}}}},"a":{"docs":{},"p":{"docs":{},"h":{"docs":{},",":{"docs":{},"简":{"docs":{},"称":{"docs":{},"d":{"docs":{},"a":{"docs":{},"g":{"docs":{},"。":{"docs":{},"工":{"docs":{},"作":{"docs":{},"流":{"docs":{},"中":{"docs":{},"的":{"docs":{},"t":{"docs":{},"a":{"docs":{},"s":{"docs":{},"k":{"docs":{},"任":{"docs":{},"务":{"docs":{},"以":{"docs":{},"有":{"docs":{},"向":{"docs":{},"无":{"docs":{},"环":{"docs":{},"图":{"docs":{},"的":{"docs":{},"形":{"docs":{},"式":{"docs":{},"组":{"docs":{},"装":{"docs":{},"起":{"docs":{},"来":{"docs":{},",":{"docs":{},"从":{"docs":{},"入":{"docs":{},"度":{"docs":{},"为":{"docs":{},"零":{"docs":{},"的":{"docs":{},"节":{"docs":{},"点":{"docs":{},"进":{"docs":{},"行":{"docs":{},"拓":{"docs":{},"扑":{"docs":{},"遍":{"docs":{},"历":{"docs":{},",":{"docs":{},"直":{"docs":{},"到":{"docs":{},"无":{"docs":{},"后":{"docs":{},"继":{"docs":{},"节":{"docs":{},"点":{"docs":{},"为":{"docs":{},"止":{"docs":{},"。":{"docs":{},"举":{"docs":{},"例":{"docs":{},"如":{"docs":{},"下":{"docs":{},"图":{"docs":{},":":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"n":{"docs":{},"t":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0020222446916076846}}}}},"e":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}},"e":{"docs":{},"n":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},"}":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}},"t":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"o":{"docs":{},"n":{"docs":{},"i":{"docs":{},"n":{"docs":{},"f":{"docs":{},"o":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}},".":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0020222446916076846}}}},"j":{"docs":{},"s":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}},"p":{"docs":{},"l":{"docs":{},"u":{"docs":{},"m":{"docs":{},"b":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314},"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}},"h":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},".":{"docs":{},"j":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}},"/":{"docs":{},"v":{"docs":{},"u":{"docs":{},"e":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}},"o":{"docs":{},"n":{"docs":{},".":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"s":{"docs":{},"e":{"docs":{},"(":{"docs":{},"j":{"docs":{},"s":{"docs":{},"o":{"docs":{},"n":{"docs":{},".":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"f":{"docs":{},"y":{"docs":{},"(":{"docs":{},"f":{"docs":{},"o":{"docs":{},"o":{"docs":{},")":{"docs":{},")":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},"s":{"docs":{},"c":{"docs":{},"r":{"docs":{},"i":{"docs":{},"p":{"docs":{},"t":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.003500583430571762}},"规":{"docs":{},"范":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}},"_":{"docs":{},"h":{"docs":{},"o":{"docs":{},"m":{"docs":{},"e":{"docs":{},"=":{"docs":{},"\"":{"docs":{},"/":{"docs":{},"o":{"docs":{},"p":{"docs":{},"t":{"docs":{},"/":{"docs":{},"s":{"docs":{},"o":{"docs":{},"f":{"docs":{},"t":{"docs":{},"/":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},"\"":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}}}}},"/":{"docs":{},"o":{"docs":{},"p":{"docs":{},"t":{"docs":{},"/":{"docs":{},"s":{"docs":{},"o":{"docs":{},"f":{"docs":{},"t":{"docs":{},"/":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}}}}}}}}}}}},"d":{"docs":{},"b":{"docs":{},"c":{"docs":{},":":{"docs":{},"m":{"docs":{},"y":{"docs":{},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{},":":{"docs":{},"/":{"docs":{},"/":{"1":{"9":{"2":{"docs":{},".":{"1":{"6":{"8":{"docs":{},".":{"docs":{},"x":{"docs":{},"x":{"docs":{},".":{"docs":{},"x":{"docs":{},"x":{"docs":{},":":{"3":{"3":{"0":{"6":{"docs":{},"/":{"docs":{},"e":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"?":{"docs":{},"c":{"docs":{},"h":{"docs":{},"a":{"docs":{},"r":{"docs":{},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"e":{"docs":{},"n":{"docs":{},"c":{"docs":{},"o":{"docs":{},"d":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"=":{"docs":{},"u":{"docs":{},"t":{"docs":{},"f":{"8":{"docs":{},"&":{"docs":{},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},"l":{"docs":{},"=":{"docs":{},"f":{"docs":{},"a":{"docs":{},"l":{"docs":{},"s":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}}}}}}}},"docs":{}},"docs":{}},"docs":{}}},"docs":{}},"docs":{}},"docs":{}}}}}}}}}}}}},"o":{"docs":{},"b":{"docs":{},"s":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}},"k":{"docs":{},"i":{"docs":{},"l":{"docs":{},"l":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.005110732538330494}},"a":{"docs":{},"l":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0034071550255536627}}}}}}},"o":{"docs":{},"i":{"8":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}},"docs":{}}},"e":{"docs":{},"y":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.002333722287047841}}}},"a":{"docs":{},"z":{"docs":{},"o":{"docs":{},"o":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"=":{"docs":{},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"h":{"docs":{},"a":{"docs":{},"t":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},".":{"docs":{},"m":{"docs":{},"y":{"docs":{},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{},".":{"docs":{},"j":{"docs":{},"d":{"docs":{},"b":{"docs":{},"c":{"docs":{},".":{"docs":{},"d":{"docs":{},"r":{"docs":{},"i":{"docs":{},"v":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}}}}}}}}},":":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.003500583430571762}}},".":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}},"n":{"docs":{},"o":{"docs":{},"d":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}},"e":{"docs":{},",":{"docs":{},"i":{"docs":{},"f":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}},"v":{"docs":{},".":{"docs":{},"v":{"docs":{},"u":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}},"e":{"docs":{},"t":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.005110732538330494}}}}}}},"w":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.003500583430571762},"task-plugin-development.html":{"ref":"task-plugin-development.html","tf":0.009708737864077669}}},"c":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},"a":{"docs":{},"r":{"docs":{},"y":{"docs":{},",":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}},"e":{"docs":{},"d":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.003033367037411527}}}}},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.034071550255536626}},"!":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}},"\"":{"docs":{},")":{"docs":{},",":{"docs":{},"可":{"docs":{},"以":{"docs":{},"确":{"docs":{},"认":{"docs":{},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{},"服":{"docs":{},"务":{"docs":{},"是":{"docs":{},"否":{"docs":{},"正":{"docs":{},"常":{"docs":{},"运":{"docs":{},"行":{"docs":{},"。":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}}}}}}}}}}}}}}}}},":":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0034071550255536627}}},"安":{"docs":{},"装":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}},"服":{"docs":{},"务":{"docs":{},"程":{"docs":{},"序":{"docs":{},"默":{"docs":{},"认":{"docs":{},"以":{"docs":{},"n":{"docs":{},"o":{"docs":{},"b":{"docs":{},"o":{"docs":{},"d":{"docs":{},"y":{"docs":{},"身":{"docs":{},"份":{"docs":{},"运":{"docs":{},"行":{"docs":{},",":{"docs":{},"建":{"docs":{},"议":{"docs":{},"为":{"docs":{},"其":{"docs":{},"创":{"docs":{},"建":{"docs":{},"专":{"docs":{},"门":{"docs":{},"的":{"docs":{},"用":{"docs":{},"户":{"docs":{},"账":{"docs":{},"号":{"docs":{},",":{"docs":{},"以":{"docs":{},"便":{"docs":{},"更":{"docs":{},"准":{"docs":{},"确":{"docs":{},"地":{"docs":{},"控":{"docs":{},"制":{"docs":{},"其":{"docs":{},"访":{"docs":{},"问":{"docs":{},"权":{"docs":{},"限":{"docs":{},",":{"docs":{},"增":{"docs":{},"加":{"docs":{},"灵":{"docs":{},"活":{"docs":{},"性":{"docs":{},"、":{"docs":{},"降":{"docs":{},"低":{"docs":{},"安":{"docs":{},"全":{"docs":{},"风":{"docs":{},"险":{"docs":{},"。":{"docs":{},"如":{"docs":{},":":{"docs":{},"创":{"docs":{},"建":{"docs":{},"一":{"docs":{},"个":{"docs":{},"名":{"docs":{},"为":{"docs":{},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{},"的":{"docs":{},"用":{"docs":{},"户":{"docs":{},",":{"docs":{},"不":{"docs":{},"建":{"docs":{},"立":{"docs":{},"宿":{"docs":{},"主":{"docs":{},"目":{"docs":{},"录":{"docs":{},",":{"docs":{},"也":{"docs":{},"禁":{"docs":{},"止":{"docs":{},"登":{"docs":{},"录":{"docs":{},"到":{"docs":{},"s":{"docs":{},"h":{"docs":{},"e":{"docs":{},"l":{"docs":{},"l":{"docs":{},"环":{"docs":{},"境":{"docs":{},"。":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"的":{"docs":{},"运":{"docs":{},"行":{"docs":{},"控":{"docs":{},"制":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}},"配":{"docs":{},"置":{"docs":{},"及":{"docs":{},"运":{"docs":{},"行":{"docs":{},"需":{"docs":{},"要":{"docs":{},"p":{"docs":{},"c":{"docs":{},"r":{"docs":{},"e":{"docs":{},"、":{"docs":{},"z":{"docs":{},"l":{"docs":{},"i":{"docs":{},"b":{"docs":{},"等":{"docs":{},"软":{"docs":{},"件":{"docs":{},"包":{"docs":{},"的":{"docs":{},"支":{"docs":{},"持":{"docs":{},",":{"docs":{},"因":{"docs":{},"此":{"docs":{},"应":{"docs":{},"预":{"docs":{},"先":{"docs":{},"安":{"docs":{},"装":{"docs":{},"这":{"docs":{},"些":{"docs":{},"软":{"docs":{},"件":{"docs":{},"的":{"docs":{},"开":{"docs":{},"发":{"docs":{},"包":{"docs":{},"(":{"docs":{},"d":{"docs":{},"e":{"docs":{},"v":{"docs":{},"e":{"docs":{},"l":{"docs":{},")":{"docs":{},",":{"docs":{},"以":{"docs":{},"便":{"docs":{},"提":{"docs":{},"供":{"docs":{},"相":{"docs":{},"应":{"docs":{},"的":{"docs":{},"库":{"docs":{},"和":{"docs":{},"头":{"docs":{},"文":{"docs":{},"件":{"docs":{},",":{"docs":{},"确":{"docs":{},"保":{"docs":{},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{},"的":{"docs":{},"安":{"docs":{},"装":{"docs":{},"顺":{"docs":{},"利":{"docs":{},"完":{"docs":{},"成":{"docs":{},"。":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"程":{"docs":{},"序":{"docs":{},"的":{"docs":{},"监":{"docs":{},"听":{"docs":{},"状":{"docs":{},"态":{"docs":{},",":{"docs":{},"或":{"docs":{},"者":{"docs":{},"在":{"docs":{},"浏":{"docs":{},"览":{"docs":{},"器":{"docs":{},"中":{"docs":{},"访":{"docs":{},"问":{"docs":{},"此":{"docs":{},"w":{"docs":{},"e":{"docs":{},"b":{"docs":{},"服":{"docs":{},"务":{"docs":{},"(":{"docs":{},"默":{"docs":{},"认":{"docs":{},"页":{"docs":{},"面":{"docs":{},"将":{"docs":{},"显":{"docs":{},"示":{"docs":{},"\"":{"docs":{},"w":{"docs":{},"e":{"docs":{},"l":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"o":{"docs":{},"d":{"docs":{},"e":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.005110732538330494}},"包":{"docs":{},"下":{"docs":{},"载":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}},"安":{"docs":{},"装":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}},"_":{"docs":{},"m":{"docs":{},"o":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}},"h":{"docs":{},"u":{"docs":{},"p":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}},".":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}},"p":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"w":{"docs":{},"d":{"docs":{},":":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0020222446916076846}}}}}}}}},"t":{"docs":{},"e":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}},"p":{"docs":{},"m":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.01192504258943782},"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}},"u":{"docs":{},"m":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0020222446916076846}},"b":{"docs":{},"e":{"docs":{},"r":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.006066734074823054}},",":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}},"l":{"docs":{},"l":{"docs":{},",":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}},"o":{"docs":{},"k":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}},"p":{"docs":{},"e":{"docs":{},"n":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}},"s":{"docs":{},"s":{"docs":{},"l":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}},"s":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314},"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}},".":{"docs":{},"p":{"docs":{},"u":{"docs":{},"t":{"docs":{},"e":{"docs":{},"n":{"docs":{},"v":{"docs":{},"(":{"docs":{},"'":{"docs":{},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{},"'":{"docs":{},",":{"docs":{},"'":{"docs":{},"%":{"docs":{},"s":{"docs":{},"'":{"docs":{},"%":{"docs":{},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{},")":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}}}}}}}}}}}}}}},"b":{"docs":{},"j":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},",":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}},".":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"g":{"docs":{},"n":{"docs":{},"(":{"docs":{},"f":{"docs":{},"o":{"docs":{},"o":{"docs":{},",":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}}}}}},"n":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}},"并":{"docs":{},"没":{"docs":{},"有":{"docs":{},"什":{"docs":{},"么":{"docs":{},"不":{"docs":{},"好":{"docs":{},",":{"docs":{},"这":{"docs":{},"里":{"docs":{},"仅":{"docs":{},"为":{"docs":{},"了":{"docs":{},"统":{"docs":{},"一":{"docs":{},"规":{"docs":{},"范":{"docs":{},"。":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}}}}}}}},"r":{"docs":{},"g":{"docs":{},".":{"docs":{},"q":{"docs":{},"u":{"docs":{},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{},"z":{"docs":{},".":{"docs":{},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"a":{"docs":{},"s":{"docs":{},"o":{"docs":{},"u":{"docs":{},"r":{"docs":{},"c":{"docs":{},"e":{"docs":{},".":{"docs":{},"m":{"docs":{},"y":{"docs":{},"d":{"docs":{},"s":{"docs":{},".":{"docs":{},"d":{"docs":{},"r":{"docs":{},"i":{"docs":{},"v":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}},"m":{"docs":{},"a":{"docs":{},"x":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"n":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}},"p":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"w":{"docs":{},"o":{"docs":{},"r":{"docs":{},"d":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}},"u":{"docs":{},"r":{"docs":{},"l":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}},"s":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"i":{"docs":{},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"r":{"docs":{},"i":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"i":{"docs":{},"m":{"docs":{},"p":{"docs":{},"l":{"docs":{},".":{"docs":{},"j":{"docs":{},"d":{"docs":{},"b":{"docs":{},"c":{"docs":{},"j":{"docs":{},"o":{"docs":{},"b":{"docs":{},"s":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"e":{"docs":{},".":{"docs":{},"j":{"docs":{},"o":{"docs":{},"b":{"docs":{},"s":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"e":{"docs":{},"t":{"docs":{},"x":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}},"s":{"docs":{},"t":{"docs":{},"d":{"docs":{},"j":{"docs":{},"d":{"docs":{},"b":{"docs":{},"c":{"docs":{},"d":{"docs":{},"e":{"docs":{},"l":{"docs":{},"e":{"docs":{},"g":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"j":{"docs":{},"o":{"docs":{},"b":{"docs":{},"s":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"e":{"docs":{},".":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}},"u":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"c":{"docs":{},"k":{"docs":{},"i":{"docs":{},"n":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}}}}}}}}},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"a":{"docs":{},"s":{"docs":{},"o":{"docs":{},"u":{"docs":{},"r":{"docs":{},"c":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}},"r":{"docs":{},"i":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"d":{"docs":{},"e":{"docs":{},"l":{"docs":{},"e":{"docs":{},"g":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}}}}}}}},"i":{"docs":{},"s":{"docs":{},"c":{"docs":{},"l":{"docs":{},"u":{"docs":{},"s":{"docs":{},"t":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"f":{"docs":{},"i":{"docs":{},"r":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},"h":{"docs":{},"o":{"docs":{},"l":{"docs":{},"d":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}}}}},"t":{"docs":{},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{},"e":{"docs":{},"p":{"docs":{},"r":{"docs":{},"e":{"docs":{},"f":{"docs":{},"i":{"docs":{},"x":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"t":{"docs":{},"i":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},".":{"docs":{},"i":{"docs":{},"n":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"n":{"docs":{},"c":{"docs":{},"e":{"docs":{},"i":{"docs":{},"d":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}},"m":{"docs":{},"a":{"docs":{},"k":{"docs":{},"e":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"t":{"docs":{},"h":{"docs":{},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"d":{"docs":{},"d":{"docs":{},"a":{"docs":{},"e":{"docs":{},"m":{"docs":{},"o":{"docs":{},"n":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"i":{"docs":{},"m":{"docs":{},"p":{"docs":{},"l":{"docs":{},".":{"docs":{},"s":{"docs":{},"i":{"docs":{},"m":{"docs":{},"p":{"docs":{},"l":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"d":{"docs":{},"p":{"docs":{},"o":{"docs":{},"o":{"docs":{},"l":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}}}}}}}}}}},"t":{"docs":{},"h":{"docs":{},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"d":{"docs":{},"p":{"docs":{},"o":{"docs":{},"o":{"docs":{},"l":{"docs":{},".":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}},"m":{"docs":{},"a":{"docs":{},"k":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"d":{"docs":{},"s":{"docs":{},"d":{"docs":{},"a":{"docs":{},"e":{"docs":{},"m":{"docs":{},"o":{"docs":{},"n":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}}}}}},"t":{"docs":{},"h":{"docs":{},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"d":{"docs":{},"c":{"docs":{},"o":{"docs":{},"u":{"docs":{},"n":{"docs":{},"t":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}},"p":{"docs":{},"r":{"docs":{},"i":{"docs":{},"o":{"docs":{},"r":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"w":{"docs":{},"n":{"docs":{},"e":{"docs":{},"r":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.004044489383215369}}}}}}},"p":{"docs":{},"a":{"docs":{},"g":{"docs":{},"e":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0034071550255536627},"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}},"r":{"docs":{},"a":{"docs":{},"m":{"docs":{},"s":{"docs":{},"'":{"docs":{},",":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}},"l":{"docs":{},"l":{"docs":{},"e":{"docs":{},"l":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}},"t":{"docs":{},"h":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}},":":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}},",":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0020222446916076846}},"n":{"docs":{},"e":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}},".":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}},"=":{"docs":{},"\"":{"docs":{},"%":{"docs":{},"s":{"docs":{},"/":{"docs":{},"b":{"docs":{},"i":{"docs":{},"n":{"docs":{},":":{"docs":{},"%":{"docs":{},"s":{"docs":{},"/":{"docs":{},"b":{"docs":{},"i":{"docs":{},"n":{"docs":{},":":{"docs":{},"%":{"docs":{},"s":{"docs":{},"/":{"docs":{},"b":{"docs":{},"i":{"docs":{},"n":{"docs":{},":":{"docs":{},"%":{"docs":{},"s":{"docs":{},"/":{"docs":{},"b":{"docs":{},"i":{"docs":{},"n":{"docs":{},":":{"docs":{},"%":{"docs":{},"s":{"docs":{},"/":{"docs":{},"b":{"docs":{},"i":{"docs":{},"n":{"docs":{},":":{"docs":{},"%":{"docs":{},"s":{"docs":{},"/":{"docs":{},"b":{"docs":{},"i":{"docs":{},"n":{"docs":{},":":{"docs":{},"%":{"docs":{},"s":{"docs":{},"\"":{"docs":{},"%":{"docs":{},"(":{"docs":{},"h":{"docs":{},"i":{"docs":{},"v":{"docs":{},"e":{"docs":{},"_":{"docs":{},"h":{"docs":{},"o":{"docs":{},"m":{"docs":{},"e":{"docs":{},",":{"docs":{},"h":{"docs":{},"a":{"docs":{},"d":{"docs":{},"o":{"docs":{},"o":{"docs":{},"p":{"docs":{},"_":{"docs":{},"h":{"docs":{},"o":{"docs":{},"m":{"docs":{},"e":{"docs":{},",":{"docs":{},"s":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"k":{"docs":{},"_":{"docs":{},"h":{"docs":{},"o":{"docs":{},"m":{"docs":{},"e":{"1":{"docs":{},",":{"docs":{},"s":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"k":{"docs":{},"_":{"docs":{},"h":{"docs":{},"o":{"docs":{},"m":{"docs":{},"e":{"2":{"docs":{},",":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},"_":{"docs":{},"h":{"docs":{},"o":{"docs":{},"m":{"docs":{},"e":{"docs":{},",":{"docs":{},"p":{"docs":{},"y":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"n":{"docs":{},"_":{"docs":{},"h":{"docs":{},"o":{"docs":{},"m":{"docs":{},"e":{"docs":{},",":{"docs":{},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{},")":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}}}}}}}}}}}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"$":{"docs":{},"h":{"docs":{},"a":{"docs":{},"d":{"docs":{},"o":{"docs":{},"o":{"docs":{},"p":{"docs":{},"_":{"docs":{},"h":{"docs":{},"o":{"docs":{},"m":{"docs":{},"e":{"docs":{},"/":{"docs":{},"b":{"docs":{},"i":{"docs":{},"n":{"docs":{},":":{"docs":{},"$":{"docs":{},"s":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"k":{"docs":{},"_":{"docs":{},"h":{"docs":{},"o":{"docs":{},"m":{"docs":{},"e":{"1":{"docs":{},"/":{"docs":{},"b":{"docs":{},"i":{"docs":{},"n":{"docs":{},":":{"docs":{},"$":{"docs":{},"s":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"k":{"docs":{},"_":{"docs":{},"h":{"docs":{},"o":{"docs":{},"m":{"docs":{},"e":{"2":{"docs":{},"/":{"docs":{},"b":{"docs":{},"i":{"docs":{},"n":{"docs":{},":":{"docs":{},"$":{"docs":{},"p":{"docs":{},"y":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"n":{"docs":{},"_":{"docs":{},"h":{"docs":{},"o":{"docs":{},"m":{"docs":{},"e":{"docs":{},"/":{"docs":{},"b":{"docs":{},"i":{"docs":{},"n":{"docs":{},":":{"docs":{},"$":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},"_":{"docs":{},"h":{"docs":{},"o":{"docs":{},"m":{"docs":{},"e":{"docs":{},"/":{"docs":{},"b":{"docs":{},"i":{"docs":{},"n":{"docs":{},":":{"docs":{},"$":{"docs":{},"h":{"docs":{},"i":{"docs":{},"v":{"docs":{},"e":{"docs":{},"_":{"docs":{},"h":{"docs":{},"o":{"docs":{},"m":{"docs":{},"e":{"docs":{},"/":{"docs":{},"b":{"docs":{},"i":{"docs":{},"n":{"docs":{},":":{"docs":{},"$":{"docs":{},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}}}}}}}}}}}}}}}}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"/":{"docs":{},"e":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"/":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}},"o":{"docs":{},"s":{"docs":{},".":{"docs":{},"e":{"docs":{},"n":{"docs":{},"v":{"docs":{},"i":{"docs":{},"r":{"docs":{},"o":{"docs":{},"n":{"docs":{},"[":{"docs":{},"'":{"docs":{},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{},"'":{"docs":{},"]":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}}}}}}}}}},"c":{"docs":{},"k":{"docs":{},"a":{"docs":{},"g":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}},"c":{"docs":{},"r":{"docs":{},"e":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206},"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.004044489383215369}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"。":{"docs":{},"\"":{"docs":{},"/":{"docs":{},"e":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"\"":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}}}}}}}}}}},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"m":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}},"i":{"docs":{},"d":{"docs":{},"f":{"docs":{},"=":{"docs":{},"\"":{"docs":{},"/":{"docs":{},"u":{"docs":{},"s":{"docs":{},"r":{"docs":{},"/":{"docs":{},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{},"a":{"docs":{},"l":{"docs":{},"/":{"docs":{},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{},"/":{"docs":{},"l":{"docs":{},"o":{"docs":{},"g":{"docs":{},"s":{"docs":{},"/":{"docs":{},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{},".":{"docs":{},"p":{"docs":{},"i":{"docs":{},"d":{"docs":{},"\"":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"p":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}},"r":{"docs":{},"e":{"docs":{},"f":{"docs":{},"i":{"docs":{},"x":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}},"=":{"docs":{},"/":{"docs":{},"u":{"docs":{},"s":{"docs":{},"r":{"docs":{},"/":{"docs":{},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{},"a":{"docs":{},"l":{"docs":{},"/":{"docs":{},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0034071550255536627}}}}}}}}}}}}}}}}}}}}}}},"o":{"docs":{},"g":{"docs":{},"=":{"docs":{},"\"":{"docs":{},"/":{"docs":{},"u":{"docs":{},"s":{"docs":{},"r":{"docs":{},"/":{"docs":{},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{},"a":{"docs":{},"l":{"docs":{},"/":{"docs":{},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{},"/":{"docs":{},"s":{"docs":{},"b":{"docs":{},"i":{"docs":{},"n":{"docs":{},"/":{"docs":{},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{},"\"":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"x":{"docs":{},"y":{"docs":{},"_":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"n":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"_":{"docs":{},"t":{"docs":{},"i":{"docs":{},"m":{"docs":{},"e":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}}}}}}}}}},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},"_":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}}}},"p":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"d":{"docs":{},"_":{"docs":{},"t":{"docs":{},"i":{"docs":{},"m":{"docs":{},"e":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}}}}}}},"s":{"docs":{},"e":{"docs":{},"n":{"docs":{},"d":{"docs":{},"_":{"docs":{},"t":{"docs":{},"i":{"docs":{},"m":{"docs":{},"e":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}}}}},"t":{"docs":{},"_":{"docs":{},"h":{"docs":{},"e":{"docs":{},"a":{"docs":{},"d":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.01192504258943782}}}}}}}}}}}}},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}},"e":{"docs":{},"(":{"docs":{},"(":{"docs":{},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},"o":{"docs":{},"l":{"docs":{},"v":{"docs":{},"e":{"docs":{},",":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}}},"p":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.002333722287047841}},"s":{"docs":{},":":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.003500583430571762}}},",":{"docs":{"task-plugin-development.html":{"ref":"task-plugin-development.html","tf":0.009708737864077669}}},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"e":{"docs":{},"n":{"docs":{},"v":{"docs":{},"f":{"docs":{},"i":{"docs":{},"l":{"docs":{},"e":{"docs":{},"(":{"docs":{},")":{"docs":{},",":{"docs":{"task-plugin-development.html":{"ref":"task-plugin-development.html","tf":0.009708737864077669}}}}}}}}}}}},"t":{"docs":{},"a":{"docs":{},"s":{"docs":{},"k":{"docs":{},"a":{"docs":{},"p":{"docs":{},"p":{"docs":{},"i":{"docs":{},"d":{"docs":{},"(":{"docs":{},")":{"docs":{},",":{"docs":{"task-plugin-development.html":{"ref":"task-plugin-development.html","tf":0.009708737864077669}}}}}}}}}},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{},"(":{"docs":{},")":{"docs":{},",":{"docs":{"task-plugin-development.html":{"ref":"task-plugin-development.html","tf":0.009708737864077669}}},";":{"docs":{"task-plugin-development.html":{"ref":"task-plugin-development.html","tf":0.009708737864077669}}}}}}}},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{},"t":{"docs":{},"i":{"docs":{},"m":{"docs":{},"e":{"docs":{},"(":{"docs":{},")":{"docs":{},",":{"docs":{"task-plugin-development.html":{"ref":"task-plugin-development.html","tf":0.009708737864077669}}}}}}}}}}}}}},"t":{"docs":{},"i":{"docs":{},"m":{"docs":{},"e":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{},"(":{"docs":{},")":{"docs":{},",":{"docs":{"task-plugin-development.html":{"ref":"task-plugin-development.html","tf":0.009708737864077669}}}}}}}}}}}}}}},"e":{"docs":{},"n":{"docs":{},"a":{"docs":{},"n":{"docs":{},"t":{"docs":{},"c":{"docs":{},"o":{"docs":{},"d":{"docs":{},"e":{"docs":{},"(":{"docs":{},")":{"docs":{},",":{"docs":{"task-plugin-development.html":{"ref":"task-plugin-development.html","tf":0.009708737864077669}}}}}}}}}}}}}}}}}}}},"e":{"docs":{},"r":{"docs":{},"t":{"docs":{},"i":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}},"c":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}},".":{"docs":{},"e":{"docs":{},"x":{"docs":{},"e":{"docs":{},"c":{"docs":{},".":{"docs":{},"b":{"docs":{},"a":{"docs":{},"s":{"docs":{},"e":{"docs":{},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{},"=":{"docs":{},"/":{"docs":{},"t":{"docs":{},"m":{"docs":{},"p":{"docs":{},"/":{"docs":{},"e":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"/":{"docs":{},"e":{"docs":{},"x":{"docs":{},"e":{"docs":{},"c":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"d":{"docs":{},"a":{"docs":{},"o":{"docs":{},",":{"docs":{},"设":{"docs":{},"置":{"docs":{},"相":{"docs":{},"应":{"docs":{},"的":{"docs":{"task-plugin-development.html":{"ref":"task-plugin-development.html","tf":0.009708737864077669}}}}}}}}}}}}}}}},"i":{"docs":{},"v":{"docs":{},"i":{"docs":{},"l":{"docs":{},"e":{"docs":{},"g":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0020222446916076846}},"e":{"docs":{},"s":{"docs":{},";":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}},"l":{"docs":{},"u":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}},"e":{"docs":{},"a":{"docs":{},"s":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.005055611729019211}}}}}},"u":{"docs":{},"b":{"docs":{},"l":{"docs":{},"i":{"docs":{},"c":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.011049723756906077},"task-plugin-development.html":{"ref":"task-plugin-development.html","tf":0.009708737864077669}}}}}}},"h":{"docs":{},"y":{"docs":{},"s":{"docs":{},"i":{"docs":{},"c":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.003033367037411527}}}}}}},"o":{"docs":{},"r":{"docs":{},"t":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}},"s":{"docs":{},"t":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0020222446916076846}},"g":{"docs":{},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{},"(":{"8":{"docs":{},".":{"2":{"docs":{},".":{"1":{"5":{"docs":{},"+":{"docs":{},")":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}},"docs":{}},"docs":{}}},"docs":{}}},"docs":{}}}}}}}}}}},"s":{"docs":{},"c":{"docs":{},"a":{"docs":{},"c":{"docs":{},"h":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}},"e":{"docs":{},",":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}},"y":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"n":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}},"_":{"docs":{},"h":{"docs":{},"o":{"docs":{},"m":{"docs":{},"e":{"docs":{},"=":{"docs":{},"\"":{"docs":{},"/":{"docs":{},"o":{"docs":{},"p":{"docs":{},"t":{"docs":{},"/":{"docs":{},"s":{"docs":{},"o":{"docs":{},"f":{"docs":{},"t":{"docs":{},"/":{"docs":{},"p":{"docs":{},"y":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"n":{"docs":{},"\"":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}}}}}}},"/":{"docs":{},"o":{"docs":{},"p":{"docs":{},"t":{"docs":{},"/":{"docs":{},"s":{"docs":{},"o":{"docs":{},"f":{"docs":{},"t":{"docs":{},"/":{"docs":{},"p":{"docs":{},"y":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"n":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}}}}}}}}}}},"任":{"docs":{},"务":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}},"{":{"docs":{},"p":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"w":{"docs":{},"o":{"docs":{},"r":{"docs":{},"d":{"docs":{},"}":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0020222446916076846}}}}}}}}}}}}},"q":{"docs":{},"u":{"docs":{},"i":{"docs":{},"t":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.005110732538330494}}}},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{},"z":{"docs":{},"分":{"docs":{},"布":{"docs":{},"式":{"docs":{},"调":{"docs":{},"度":{"docs":{},"组":{"docs":{},"件":{"docs":{},",":{"docs":{},"主":{"docs":{},"要":{"docs":{},"负":{"docs":{},"责":{"docs":{},"定":{"docs":{},"时":{"docs":{},"任":{"docs":{},"务":{"docs":{},"的":{"docs":{},"启":{"docs":{},"停":{"docs":{},"操":{"docs":{},"作":{"docs":{},",":{"docs":{},"当":{"docs":{},"q":{"docs":{},"u":{"docs":{},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{},"z":{"docs":{},"调":{"docs":{},"起":{"docs":{},"任":{"docs":{},"务":{"docs":{},"后":{"docs":{},",":{"docs":{},"m":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"内":{"docs":{},"部":{"docs":{},"会":{"docs":{},"有":{"docs":{},"线":{"docs":{},"程":{"docs":{},"池":{"docs":{},"具":{"docs":{},"体":{"docs":{},"负":{"docs":{},"责":{"docs":{},"处":{"docs":{},"理":{"docs":{},"任":{"docs":{},"务":{"docs":{},"的":{"docs":{},"后":{"docs":{},"续":{"docs":{},"操":{"docs":{},"作":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},".":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"t":{"docs":{},"i":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}},"e":{"docs":{},"u":{"docs":{},"e":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384},"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}},"中":{"docs":{},"是":{"docs":{},"否":{"docs":{},"已":{"docs":{},"经":{"docs":{},"存":{"docs":{},"在":{"docs":{},",":{"docs":{},"如":{"docs":{},"果":{"docs":{},"存":{"docs":{},"在":{"docs":{},"则":{"docs":{},"同":{"docs":{},"样":{"docs":{},"监":{"docs":{},"控":{"docs":{},"任":{"docs":{},"务":{"docs":{},"实":{"docs":{},"例":{"docs":{},"的":{"docs":{},"状":{"docs":{},"态":{"docs":{},",":{"docs":{},"如":{"docs":{},"果":{"docs":{},"不":{"docs":{},"存":{"docs":{},"在":{"docs":{},"则":{"docs":{},"重":{"docs":{},"新":{"docs":{},"提":{"docs":{},"交":{"docs":{},"任":{"docs":{},"务":{"docs":{},"实":{"docs":{},"例":{"docs":{},"。":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"领":{"docs":{},"取":{"docs":{},"任":{"docs":{},"务":{"docs":{},",":{"docs":{},"并":{"docs":{},"根":{"docs":{},"据":{"docs":{},"不":{"docs":{},"同":{"docs":{},"任":{"docs":{},"务":{"docs":{},"类":{"docs":{},"型":{"docs":{},"调":{"docs":{},"用":{"docs":{},"t":{"docs":{},"a":{"docs":{},"s":{"docs":{},"k":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"d":{"docs":{},"对":{"docs":{},"应":{"docs":{},"执":{"docs":{},"行":{"docs":{},"器":{"docs":{},"。":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"r":{"docs":{},"i":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.003033367037411527}}}}}},"r":{"docs":{},"t":{"docs":{},"z":{"docs":{},"_":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}},"u":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.005055611729019211}},"i":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314},"frontend-development.html":{"ref":"frontend-development.html","tf":0.002333722287047841},"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}},"n":{"docs":{},"s":{"docs":{},"a":{"docs":{},"f":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}},"f":{"docs":{},"a":{"docs":{},"i":{"docs":{},"r":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}},"i":{"docs":{},"t":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0020222446916076846}}}}},"p":{"docs":{},"g":{"docs":{},"r":{"docs":{},"a":{"docs":{},"d":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"d":{"docs":{},"(":{"docs":{},")":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}},"s":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0020222446916076846}},"e":{"docs":{},"r":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0020222446916076846}},"=":{"docs":{},"e":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0034071550255536627}}}}}}}}}}},"a":{"docs":{},"d":{"docs":{},"d":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}},"和":{"docs":{},"—":{"docs":{},"g":{"docs":{},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"p":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}},"}":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}},"u":{"docs":{},"n":{"docs":{},"f":{"docs":{},"a":{"docs":{},"i":{"docs":{},"r":{"docs":{},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{},"k":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}},"d":{"docs":{},"f":{"docs":{},"管":{"docs":{},"理":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}},"t":{"docs":{},"i":{"docs":{},"l":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}},".":{"docs":{},"j":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.003500583430571762}}}}}},"f":{"8":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}},"_":{"docs":{},"g":{"docs":{},"e":{"docs":{},"n":{"docs":{},"e":{"docs":{},"r":{"docs":{},"a":{"docs":{},"l":{"docs":{},"_":{"docs":{},"c":{"docs":{},"i":{"docs":{},";":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}},"docs":{}}}},"v":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.010501750291715286}},"i":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314},"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}},"m":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0034071550255536627}}},"e":{"docs":{},"w":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}},"u":{"docs":{},"e":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314},"frontend-development.html":{"ref":"frontend-development.html","tf":0.003500583430571762}},"的":{"docs":{},"路":{"docs":{},"由":{"docs":{},"器":{"docs":{},",":{"docs":{},"在":{"docs":{},"每":{"docs":{},"个":{"docs":{},"页":{"docs":{},"面":{"docs":{},"的":{"docs":{},"入":{"docs":{},"口":{"docs":{},"文":{"docs":{},"件":{"docs":{},"i":{"docs":{},"n":{"docs":{},"d":{"docs":{},"e":{"docs":{},"x":{"docs":{},".":{"docs":{},"j":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}}}}}}}}}}},"规":{"docs":{},"范":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}},"a":{"docs":{},"l":{"docs":{},"i":{"docs":{},"d":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.00910010111223458}},"a":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},":":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}},"u":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.004044489383215369}},"e":{"docs":{},"]":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}},"r":{"docs":{},",":{"docs":{},"而":{"docs":{},"使":{"docs":{},"用":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}},"y":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.008517887563884156}},"u":{"docs":{},"m":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.008517887563884156}}}},"a":{"docs":{},"r":{"docs":{},"n":{"docs":{},".":{"docs":{},"a":{"docs":{},"p":{"docs":{},"p":{"docs":{},"l":{"docs":{},"i":{"docs":{},"c":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},".":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{},"u":{"docs":{},"s":{"docs":{},".":{"docs":{},"a":{"docs":{},"d":{"docs":{},"d":{"docs":{},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},"=":{"docs":{},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},":":{"docs":{},"/":{"docs":{},"/":{"docs":{},"a":{"docs":{},"r":{"docs":{},"k":{"1":{"docs":{},":":{"8":{"0":{"8":{"8":{"docs":{},"/":{"docs":{},"w":{"docs":{},"s":{"docs":{},"/":{"docs":{},"v":{"1":{"docs":{},"/":{"docs":{},"c":{"docs":{},"l":{"docs":{},"u":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"/":{"docs":{},"a":{"docs":{},"p":{"docs":{},"p":{"docs":{},"s":{"docs":{},"/":{"docs":{},"%":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}}}}},"docs":{}}}}}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},"o":{"docs":{},"u":{"docs":{},"r":{"docs":{},"c":{"docs":{},"e":{"docs":{},"m":{"docs":{},"a":{"docs":{},"n":{"docs":{},"a":{"docs":{},"g":{"docs":{},"e":{"docs":{},"r":{"docs":{},".":{"docs":{},"h":{"docs":{},"a":{"docs":{},".":{"docs":{},"r":{"docs":{},"m":{"docs":{},".":{"docs":{},"i":{"docs":{},"d":{"docs":{},"s":{"docs":{},"=":{"1":{"9":{"2":{"docs":{},".":{"1":{"6":{"8":{"docs":{},".":{"docs":{},"x":{"docs":{},"x":{"docs":{},".":{"docs":{},"x":{"docs":{},"x":{"docs":{},",":{"1":{"9":{"2":{"docs":{},".":{"1":{"6":{"8":{"docs":{},".":{"docs":{},"x":{"docs":{},"x":{"docs":{},".":{"docs":{},"x":{"docs":{},"x":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}},"docs":{}},"docs":{}},"docs":{}}},"docs":{}},"docs":{}},"docs":{}}}}}}}}},"docs":{}},"docs":{}},"docs":{}}},"docs":{}},"docs":{}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"z":{"docs":{},"i":{"docs":{},"l":{"docs":{},"b":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}},"o":{"docs":{},"o":{"docs":{},"k":{"docs":{},"e":{"docs":{},"e":{"docs":{},"p":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.011049723756906077},"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}},"e":{"docs":{},"r":{"docs":{},"服":{"docs":{},"务":{"docs":{},",":{"docs":{},"系":{"docs":{},"统":{"docs":{},"中":{"docs":{},"的":{"docs":{},"m":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"和":{"docs":{},"w":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"节":{"docs":{},"点":{"docs":{},"都":{"docs":{},"通":{"docs":{},"过":{"docs":{},"z":{"docs":{},"o":{"docs":{},"o":{"docs":{},"k":{"docs":{},"e":{"docs":{},"e":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"来":{"docs":{},"进":{"docs":{},"行":{"docs":{},"集":{"docs":{},"群":{"docs":{},"管":{"docs":{},"理":{"docs":{},"和":{"docs":{},"容":{"docs":{},"错":{"docs":{},"。":{"docs":{},"另":{"docs":{},"外":{"docs":{},"系":{"docs":{},"统":{"docs":{},"还":{"docs":{},"基":{"docs":{},"于":{"docs":{},"z":{"docs":{},"o":{"docs":{},"o":{"docs":{},"k":{"docs":{},"e":{"docs":{},"e":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"进":{"docs":{},"行":{"docs":{},"事":{"docs":{},"件":{"docs":{},"监":{"docs":{},"听":{"docs":{},"和":{"docs":{},"分":{"docs":{},"布":{"docs":{},"式":{"docs":{},"锁":{"docs":{},"。":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"(":{"3":{"docs":{},".":{"4":{"docs":{},".":{"6":{"docs":{},")":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}},"docs":{}}},"docs":{}}},"docs":{}},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"n":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},".":{"docs":{},"t":{"docs":{},"i":{"docs":{},"m":{"docs":{},"e":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{},"=":{"3":{"0":{"0":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}},"docs":{}},"docs":{}},"docs":{}}}}}}}}}}}}}}}}}}}},"e":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},".":{"docs":{},"d":{"docs":{},"e":{"docs":{},"a":{"docs":{},"d":{"docs":{},".":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"=":{"docs":{},"/":{"docs":{},"e":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"/":{"docs":{},"d":{"docs":{},"e":{"docs":{},"a":{"docs":{},"d":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{},"k":{"docs":{},".":{"docs":{},"m":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},".":{"docs":{},"f":{"docs":{},"a":{"docs":{},"i":{"docs":{},"l":{"docs":{},"o":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"=":{"docs":{},"/":{"docs":{},"e":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"/":{"docs":{},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{},"k":{"docs":{},"/":{"docs":{},"f":{"docs":{},"a":{"docs":{},"i":{"docs":{},"l":{"docs":{},"o":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"/":{"docs":{},"m":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"=":{"docs":{},"/":{"docs":{},"e":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"/":{"docs":{},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{},"k":{"docs":{},"/":{"docs":{},"m":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"w":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},".":{"docs":{},"f":{"docs":{},"a":{"docs":{},"i":{"docs":{},"l":{"docs":{},"o":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"=":{"docs":{},"/":{"docs":{},"e":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"/":{"docs":{},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{},"k":{"docs":{},"/":{"docs":{},"f":{"docs":{},"a":{"docs":{},"i":{"docs":{},"l":{"docs":{},"o":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"/":{"docs":{},"w":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"=":{"docs":{},"/":{"docs":{},"e":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"/":{"docs":{},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{},"k":{"docs":{},"/":{"docs":{},"w":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"m":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"=":{"docs":{},"/":{"docs":{},"e":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"/":{"docs":{},"m":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}}}}}}}}}}}}},"r":{"docs":{},"o":{"docs":{},"o":{"docs":{},"t":{"docs":{},"=":{"docs":{},"/":{"docs":{},"e":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}}},"w":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"=":{"docs":{},"/":{"docs":{},"e":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"/":{"docs":{},"w":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"t":{"docs":{},"i":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}},"q":{"docs":{},"u":{"docs":{},"o":{"docs":{},"r":{"docs":{},"u":{"docs":{},"m":{"docs":{},"=":{"1":{"9":{"2":{"docs":{},".":{"1":{"6":{"8":{"docs":{},".":{"docs":{},"x":{"docs":{},"x":{"docs":{},".":{"docs":{},"x":{"docs":{},"x":{"docs":{},":":{"2":{"1":{"8":{"1":{"docs":{},",":{"1":{"9":{"2":{"docs":{},".":{"1":{"6":{"8":{"docs":{},".":{"docs":{},"x":{"docs":{},"x":{"docs":{},".":{"docs":{},"x":{"docs":{},"x":{"docs":{},":":{"2":{"1":{"8":{"1":{"docs":{},",":{"1":{"9":{"2":{"docs":{},".":{"1":{"6":{"8":{"docs":{},".":{"docs":{},"x":{"docs":{},"x":{"docs":{},".":{"docs":{},"x":{"docs":{},"x":{"docs":{},":":{"2":{"1":{"8":{"1":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}}}}}}}},"docs":{}},"docs":{}},"docs":{}}},"docs":{}},"docs":{}},"docs":{}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}}}}}}}},"docs":{}},"docs":{}},"docs":{}}},"docs":{}},"docs":{}},"docs":{}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}}}}}}}},"docs":{}},"docs":{}},"docs":{}}},"docs":{}},"docs":{}},"docs":{}}}}}}}},"r":{"docs":{},"e":{"docs":{},"t":{"docs":{},"r":{"docs":{},"y":{"docs":{},".":{"docs":{},"m":{"docs":{},"a":{"docs":{},"x":{"docs":{},"t":{"docs":{},"i":{"docs":{},"m":{"docs":{},"e":{"docs":{},"=":{"5":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}},"docs":{}}}}}}}}},"s":{"docs":{},"l":{"docs":{},"e":{"docs":{},"e":{"docs":{},"p":{"docs":{},"=":{"1":{"0":{"0":{"0":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}}}}}}}}}}}},"s":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},".":{"docs":{},"t":{"docs":{},"i":{"docs":{},"m":{"docs":{},"e":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{},"=":{"3":{"0":{"0":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}},"docs":{}},"docs":{}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}},"|":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.008168028004667444}},"g":{"docs":{},"r":{"docs":{},"e":{"docs":{},"p":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.005110732538330494}}}}}},"—":{"docs":{},"—":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.003033367037411527}}}}},"~":{"docs":{},"]":{"docs":{},"#":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.030664395229982964}}}}},"上":{"docs":{},"传":{"docs":{},"文":{"docs":{},"件":{"docs":{},"大":{"docs":{},"小":{"docs":{},"限":{"docs":{},"制":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}},"图":{"docs":{},"中":{"docs":{},"m":{"docs":{},"a":{"docs":{},"i":{"docs":{},"n":{"docs":{},"f":{"docs":{},"l":{"docs":{},"o":{"docs":{},"w":{"docs":{},"t":{"docs":{},"h":{"docs":{},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"d":{"docs":{},"等":{"docs":{},"待":{"docs":{},"s":{"docs":{},"u":{"docs":{},"b":{"docs":{},"f":{"docs":{},"l":{"docs":{},"o":{"docs":{},"w":{"docs":{},"t":{"docs":{},"h":{"docs":{},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"d":{"1":{"docs":{},"结":{"docs":{},"束":{"docs":{},",":{"docs":{},"s":{"docs":{},"u":{"docs":{},"b":{"docs":{},"f":{"docs":{},"l":{"docs":{},"o":{"docs":{},"w":{"docs":{},"t":{"docs":{},"h":{"docs":{},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"d":{"1":{"docs":{},"等":{"docs":{},"待":{"docs":{},"s":{"docs":{},"u":{"docs":{},"b":{"docs":{},"f":{"docs":{},"l":{"docs":{},"o":{"docs":{},"w":{"docs":{},"t":{"docs":{},"h":{"docs":{},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"d":{"2":{"docs":{},"结":{"docs":{},"束":{"docs":{},",":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}},"docs":{}}}}}}}}}}}}}}}}},"docs":{}}}}}}}}}}}}}}}}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"为":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}},"了":{"docs":{},"使":{"docs":{},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{},"服":{"docs":{},"务":{"docs":{},"器":{"docs":{},"的":{"docs":{},"运":{"docs":{},"行":{"docs":{},"更":{"docs":{},"加":{"docs":{},"方":{"docs":{},"便":{"docs":{},",":{"docs":{},"可":{"docs":{},"以":{"docs":{},"为":{"docs":{},"主":{"docs":{},"程":{"docs":{},"序":{"docs":{},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{},"创":{"docs":{},"建":{"docs":{},"链":{"docs":{},"接":{"docs":{},"文":{"docs":{},"件":{"docs":{},",":{"docs":{},"以":{"docs":{},"便":{"docs":{},"管":{"docs":{},"理":{"docs":{},"员":{"docs":{},"直":{"docs":{},"接":{"docs":{},"执":{"docs":{},"行":{"docs":{},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{},"命":{"docs":{},"令":{"docs":{},"就":{"docs":{},"可":{"docs":{},"以":{"docs":{},"调":{"docs":{},"用":{"docs":{},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{},"的":{"docs":{},"主":{"docs":{},"程":{"docs":{},"序":{"docs":{},"。":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"的":{"docs":{},"启":{"docs":{},"动":{"docs":{},"、":{"docs":{},"停":{"docs":{},"止":{"docs":{},"、":{"docs":{},"重":{"docs":{},"载":{"docs":{},"等":{"docs":{},"操":{"docs":{},"作":{"docs":{},"更":{"docs":{},"加":{"docs":{},"方":{"docs":{},"便":{"docs":{},",":{"docs":{},"可":{"docs":{},"以":{"docs":{},"编":{"docs":{},"写":{"docs":{},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{},"服":{"docs":{},"务":{"docs":{},"脚":{"docs":{},"本":{"docs":{},",":{"docs":{},"并":{"docs":{},"使":{"docs":{},"用":{"docs":{},"c":{"docs":{},"h":{"docs":{},"k":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{},"i":{"docs":{},"g":{"docs":{},"和":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"i":{"docs":{},"c":{"docs":{},"e":{"docs":{},"工":{"docs":{},"具":{"docs":{},"来":{"docs":{},"进":{"docs":{},"行":{"docs":{},"管":{"docs":{},"理":{"docs":{},",":{"docs":{},"也":{"docs":{},"更":{"docs":{},"加":{"docs":{},"符":{"docs":{},"合":{"docs":{},"r":{"docs":{},"h":{"docs":{},"e":{"docs":{},"l":{"docs":{},"系":{"docs":{},"统":{"docs":{},"的":{"docs":{},"管":{"docs":{},"理":{"docs":{},"习":{"docs":{},"惯":{"docs":{},"。":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"更":{"docs":{},"高":{"docs":{},"效":{"docs":{},"的":{"docs":{},"元":{"docs":{},"素":{"docs":{},"切":{"docs":{},"换":{"docs":{},",":{"docs":{},"会":{"docs":{},"复":{"docs":{},"用":{"docs":{},"相":{"docs":{},"同":{"docs":{},"的":{"docs":{},"部":{"docs":{},"分":{"docs":{},",":{"docs":{},"例":{"docs":{},"如":{"docs":{},":":{"docs":{},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"u":{"docs":{},"e":{"docs":{},"。":{"docs":{},"为":{"docs":{},"了":{"docs":{},"避":{"docs":{},"免":{"docs":{},"复":{"docs":{},"用":{"docs":{},"带":{"docs":{},"来":{"docs":{},"的":{"docs":{},"不":{"docs":{},"合":{"docs":{},"理":{"docs":{},"效":{"docs":{},"果":{"docs":{},",":{"docs":{},"应":{"docs":{},"该":{"docs":{},"在":{"docs":{},"同":{"docs":{},"种":{"docs":{},"元":{"docs":{},"素":{"docs":{},"上":{"docs":{},"加":{"docs":{},"上":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"统":{"docs":{},"一":{"docs":{},"和":{"docs":{},"便":{"docs":{},"于":{"docs":{},"阅":{"docs":{},"读":{"docs":{},",":{"docs":{},"应":{"docs":{},"该":{"docs":{},"按":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}},"规":{"docs":{},"范":{"docs":{},"始":{"docs":{},"终":{"docs":{},"使":{"docs":{},"用":{"docs":{},"指":{"docs":{},"令":{"docs":{},"缩":{"docs":{},"写":{"docs":{},",":{"docs":{},"使":{"docs":{},"用":{"docs":{},"v":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}}}}}}},"主":{"docs":{},"程":{"docs":{},"序":{"docs":{},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{},"支":{"docs":{},"持":{"docs":{},"标":{"docs":{},"准":{"docs":{},"的":{"docs":{},"进":{"docs":{},"程":{"docs":{},"信":{"docs":{},"号":{"docs":{},",":{"docs":{},"通":{"docs":{},"过":{"docs":{},"k":{"docs":{},"i":{"docs":{},"l":{"docs":{},"l":{"docs":{},"或":{"docs":{},"者":{"docs":{},"k":{"docs":{},"i":{"docs":{},"l":{"docs":{},"l":{"docs":{},"a":{"docs":{},"l":{"docs":{},"l":{"docs":{},"命":{"docs":{},"令":{"docs":{},"传":{"docs":{},"送":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"机":{"docs":{},"器":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}},"再":{"docs":{},"拷":{"docs":{},"贝":{"docs":{},"到":{"docs":{},"服":{"docs":{},"务":{"docs":{},"器":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}},"创":{"docs":{},"建":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}},"运":{"docs":{},"行":{"docs":{},"用":{"docs":{},"户":{"docs":{},"、":{"docs":{},"组":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}},"静":{"docs":{},"态":{"docs":{},"页":{"docs":{},"面":{"docs":{},"存":{"docs":{},"放":{"docs":{},"目":{"docs":{},"录":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}}},"d":{"docs":{},"b":{"docs":{},"和":{"docs":{},"账":{"docs":{},"号":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}},"表":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}},"部":{"docs":{},"署":{"docs":{},"用":{"docs":{},"户":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.003033367037411527}}}}}}}},"号":{"docs":{},"去":{"docs":{},"掉":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}},"启":{"docs":{},"动":{"docs":{},"、":{"docs":{},"停":{"docs":{},"止":{"docs":{},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}}}},"用":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},"_":{"docs":{},"s":{"docs":{},"t":{"docs":{},"u":{"docs":{},"b":{"docs":{},"_":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{},"u":{"docs":{},"s":{"docs":{},"_":{"docs":{},"m":{"docs":{},"o":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"模":{"docs":{},"块":{"docs":{},"以":{"docs":{},"支":{"docs":{},"持":{"docs":{},"状":{"docs":{},"态":{"docs":{},"统":{"docs":{},"计":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"s":{"docs":{},"l":{"docs":{},"模":{"docs":{},"块":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}},"停":{"docs":{},"a":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"t":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}},"p":{"docs":{},"i":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}},"l":{"docs":{},"o":{"docs":{},"g":{"docs":{},"g":{"docs":{},"e":{"docs":{},"r":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}},"m":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}},"w":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{},"e":{"docs":{},"r":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}},"命":{"docs":{},"令":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}},",":{"docs":{},"生":{"docs":{},"成":{"docs":{},"打":{"docs":{},"包":{"docs":{},"文":{"docs":{},"件":{"docs":{},"(":{"docs":{},"d":{"docs":{},"i":{"docs":{},"s":{"docs":{},"t":{"docs":{},")":{"docs":{},"包":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}}}}}}}}}}},"如":{"docs":{},"果":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}},"您":{"docs":{},"需":{"docs":{},"要":{"docs":{},"用":{"docs":{},"i":{"docs":{},"p":{"docs":{},"访":{"docs":{},"问":{"docs":{},"项":{"docs":{},"目":{"docs":{},"可":{"docs":{},"以":{"docs":{},"把":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}}}}}}}},"模":{"docs":{},"块":{"docs":{},"只":{"docs":{},"有":{"docs":{},"一":{"docs":{},"个":{"docs":{},"输":{"docs":{},"出":{"docs":{},"值":{"docs":{},",":{"docs":{},"使":{"docs":{},"用":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}},"一":{"docs":{},"个":{"docs":{},"d":{"docs":{},"a":{"docs":{},"g":{"docs":{},"中":{"docs":{},"没":{"docs":{},"有":{"docs":{},"子":{"docs":{},"流":{"docs":{},"程":{"docs":{},",":{"docs":{},"则":{"docs":{},"如":{"docs":{},"果":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"m":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{},"中":{"docs":{},"的":{"docs":{},"数":{"docs":{},"据":{"docs":{},"条":{"docs":{},"数":{"docs":{},"大":{"docs":{},"于":{"docs":{},"线":{"docs":{},"程":{"docs":{},"池":{"docs":{},"设":{"docs":{},"置":{"docs":{},"的":{"docs":{},"阈":{"docs":{},"值":{"docs":{},",":{"docs":{},"则":{"docs":{},"直":{"docs":{},"接":{"docs":{},"流":{"docs":{},"程":{"docs":{},"等":{"docs":{},"待":{"docs":{},"或":{"docs":{},"失":{"docs":{},"败":{"docs":{},"。":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"大":{"docs":{},"的":{"docs":{},"d":{"docs":{},"a":{"docs":{},"g":{"docs":{},"中":{"docs":{},"嵌":{"docs":{},"套":{"docs":{},"了":{"docs":{},"很":{"docs":{},"多":{"docs":{},"子":{"docs":{},"流":{"docs":{},"程":{"docs":{},",":{"docs":{},"如":{"docs":{},"下":{"docs":{},"图":{"docs":{},"则":{"docs":{},"会":{"docs":{},"产":{"docs":{},"生":{"docs":{},"“":{"docs":{},"死":{"docs":{},"等":{"docs":{},"”":{"docs":{},"状":{"docs":{},"态":{"docs":{},":":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"工":{"docs":{},"作":{"docs":{},"流":{"docs":{},"中":{"docs":{},"有":{"docs":{},"任":{"docs":{},"务":{"docs":{},"失":{"docs":{},"败":{"docs":{},"达":{"docs":{},"到":{"docs":{},"最":{"docs":{},"大":{"docs":{},"重":{"docs":{},"试":{"docs":{},"次":{"docs":{},"数":{"docs":{},",":{"docs":{},"工":{"docs":{},"作":{"docs":{},"流":{"docs":{},"就":{"docs":{},"会":{"docs":{},"失":{"docs":{},"败":{"docs":{},"停":{"docs":{},"止":{"docs":{},",":{"docs":{},"失":{"docs":{},"败":{"docs":{},"的":{"docs":{},"工":{"docs":{},"作":{"docs":{},"流":{"docs":{},"可":{"docs":{},"以":{"docs":{},"手":{"docs":{},"动":{"docs":{},"进":{"docs":{},"行":{"docs":{},"重":{"docs":{},"跑":{"docs":{},"操":{"docs":{},"作":{"docs":{},"或":{"docs":{},"者":{"docs":{},"流":{"docs":{},"程":{"docs":{},"恢":{"docs":{},"复":{"docs":{},"操":{"docs":{},"作":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"上":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}},"进":{"docs":{},"行":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0020222446916076846}}}}}},"安":{"docs":{},"装":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0034071550255536627},"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}},"e":{"docs":{},"p":{"docs":{},"e":{"docs":{},"l":{"docs":{},"源":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}},"及":{"docs":{},"配":{"docs":{},"置":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}},"全":{"docs":{},"中":{"docs":{},"心":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.002333722287047841}}}}}},"开":{"docs":{},"发":{"docs":{},"环":{"docs":{},"境":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}},"n":{"docs":{},"o":{"docs":{},"d":{"docs":{},"e":{"docs":{},"依":{"docs":{},"赖":{"docs":{},"包":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}},"当":{"docs":{},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{},"进":{"docs":{},"程":{"docs":{},"运":{"docs":{},"行":{"docs":{},"时":{"docs":{},",":{"docs":{},"p":{"docs":{},"i":{"docs":{},"d":{"docs":{},"号":{"docs":{},"默":{"docs":{},"认":{"docs":{},"存":{"docs":{},"放":{"docs":{},"在":{"docs":{},"l":{"docs":{},"o":{"docs":{},"g":{"docs":{},"s":{"docs":{},"/":{"docs":{},"目":{"docs":{},"录":{"docs":{},"下":{"docs":{},"的":{"docs":{},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{},".":{"docs":{},"p":{"docs":{},"i":{"docs":{},"d":{"docs":{},"文":{"docs":{},"件":{"docs":{},"中":{"docs":{},",":{"docs":{},"因":{"docs":{},"此":{"docs":{},"若":{"docs":{},"改":{"docs":{},"用":{"docs":{},"k":{"docs":{},"i":{"docs":{},"l":{"docs":{},"l":{"docs":{},"命":{"docs":{},"令":{"docs":{},",":{"docs":{},"也":{"docs":{},"可":{"docs":{},"以":{"docs":{},"根":{"docs":{},"据":{"docs":{},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{},".":{"docs":{},"p":{"docs":{},"i":{"docs":{},"d":{"docs":{},"文":{"docs":{},"件":{"docs":{},"中":{"docs":{},"的":{"docs":{},"p":{"docs":{},"i":{"docs":{},"d":{"docs":{},"号":{"docs":{},"来":{"docs":{},"进":{"docs":{},"行":{"docs":{},"控":{"docs":{},"制":{"docs":{},"。":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"报":{"docs":{},"错":{"docs":{},"的":{"docs":{},"话":{"docs":{},":":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}},"拉":{"docs":{},"取":{"docs":{},"前":{"docs":{},"端":{"docs":{},"项":{"docs":{},"目":{"docs":{},"到":{"docs":{},"本":{"docs":{},"地":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}},"项":{"docs":{},"目":{"docs":{},"依":{"docs":{},"赖":{"docs":{},"包":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}},"指":{"docs":{},"定":{"docs":{},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{},"运":{"docs":{},"行":{"docs":{},"用":{"docs":{},"户":{"docs":{},"和":{"docs":{},"组":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}}}}}}}},"接":{"docs":{},"口":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}},"地":{"docs":{},"址":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}},"包":{"docs":{},"括":{"docs":{},"工":{"docs":{},"作":{"docs":{},"流":{"docs":{},"的":{"docs":{},"创":{"docs":{},"建":{"docs":{},"、":{"docs":{},"定":{"docs":{},"义":{"docs":{},"、":{"docs":{},"查":{"docs":{},"询":{"docs":{},"、":{"docs":{},"修":{"docs":{},"改":{"docs":{},"、":{"docs":{},"发":{"docs":{},"布":{"docs":{},"、":{"docs":{},"下":{"docs":{},"线":{"docs":{},"、":{"docs":{},"手":{"docs":{},"工":{"docs":{},"启":{"docs":{},"动":{"docs":{},"、":{"docs":{},"停":{"docs":{},"止":{"docs":{},"、":{"docs":{},"暂":{"docs":{},"停":{"docs":{},"、":{"docs":{},"恢":{"docs":{},"复":{"docs":{},"、":{"docs":{},"从":{"docs":{},"该":{"docs":{},"节":{"docs":{},"点":{"docs":{},"开":{"docs":{},"始":{"docs":{},"执":{"docs":{},"行":{"docs":{},"等":{"docs":{},"等":{"docs":{},"。":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"下":{"docs":{},"来":{"docs":{},"说":{"docs":{},"正":{"docs":{},"题":{"docs":{},",":{"docs":{},"我":{"docs":{},"们":{"docs":{},"将":{"docs":{},"工":{"docs":{},"作":{"docs":{},"流":{"docs":{},"中":{"docs":{},"的":{"docs":{},"任":{"docs":{},"务":{"docs":{},"节":{"docs":{},"点":{"docs":{},"分":{"docs":{},"了":{"docs":{},"两":{"docs":{},"种":{"docs":{},"类":{"docs":{},"型":{"docs":{},"。":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}}}}}},"杀":{"docs":{},"死":{"docs":{},"进":{"docs":{},"程":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}},"注":{"docs":{},":":{"docs":{},"配":{"docs":{},"置":{"docs":{},"前":{"docs":{},"可":{"docs":{},"以":{"docs":{},"参":{"docs":{},"考":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}}},"意":{"docs":{},"非":{"0":{"docs":{},"都":{"docs":{},"为":{"docs":{},"错":{"docs":{},"误":{"docs":{},"走":{"docs":{},"c":{"docs":{},"a":{"docs":{},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}},"docs":{}},":":{"docs":{},"字":{"docs":{},"体":{"docs":{},"库":{"docs":{},"用":{"docs":{},"的":{"docs":{},"自":{"docs":{},"己":{"docs":{},"的":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}},"项":{"docs":{},"目":{"docs":{},"内":{"docs":{},"已":{"docs":{},"经":{"docs":{},"增":{"docs":{},"加":{"docs":{},"了":{"docs":{},"s":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"插":{"docs":{},"件":{"docs":{},",":{"docs":{},"单":{"docs":{},"个":{"docs":{},"v":{"docs":{},"u":{"docs":{},"e":{"docs":{},"文":{"docs":{},"件":{"docs":{},"里":{"docs":{},"可":{"docs":{},"以":{"docs":{},"直":{"docs":{},"接":{"docs":{},"书":{"docs":{},"写":{"docs":{},"s":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"语":{"docs":{},"法":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"m":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}},"由":{"docs":{},"于":{"docs":{},"”":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}},"在":{"docs":{},"全":{"docs":{},"部":{"docs":{},"服":{"docs":{},"务":{"docs":{},"都":{"docs":{},"启":{"docs":{},"动":{"docs":{},"之":{"docs":{},"后":{"docs":{},"启":{"docs":{},"动":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}}}},"状":{"docs":{},"态":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}},"管":{"docs":{},"理":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}},"环":{"docs":{},"境":{"docs":{},"搭":{"docs":{},"建":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":10}}}},"变":{"docs":{},"量":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}},"配":{"docs":{},"置":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0020222446916076846}}}}}}}},"用":{"docs":{},"命":{"docs":{},"令":{"docs":{},"行":{"docs":{},"模":{"docs":{},"式":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}},"于":{"docs":{},"d":{"docs":{},"i":{"docs":{},"s":{"docs":{},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{},"e":{"docs":{},"d":{"docs":{},"操":{"docs":{},"作":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}},"户":{"docs":{},"中":{"docs":{},"心":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.002333722287047841}}}},"管":{"docs":{},"理":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}},"直":{"docs":{},"接":{"docs":{},"运":{"docs":{},"行":{"docs":{},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{},"即":{"docs":{},"可":{"docs":{},"启":{"docs":{},"动":{"docs":{},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{},"服":{"docs":{},"务":{"docs":{},"器":{"docs":{},",":{"docs":{},"这":{"docs":{},"种":{"docs":{},"方":{"docs":{},"式":{"docs":{},"将":{"docs":{},"使":{"docs":{},"用":{"docs":{},"默":{"docs":{},"认":{"docs":{},"的":{"docs":{},"配":{"docs":{},"置":{"docs":{},"文":{"docs":{},"件":{"docs":{},",":{"docs":{},"若":{"docs":{},"要":{"docs":{},"改":{"docs":{},"用":{"docs":{},"其":{"docs":{},"他":{"docs":{},"配":{"docs":{},"置":{"docs":{},"文":{"docs":{},"件":{"docs":{},",":{"docs":{},"需":{"docs":{},"添":{"docs":{},"加":{"docs":{},"\"":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"等":{"docs":{},"同":{"docs":{},"于":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0034071550255536627}}}}},"编":{"docs":{},"译":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}},"前":{"docs":{},"配":{"docs":{},"置":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}},"安":{"docs":{},"装":{"docs":{},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}}},"辑":{"docs":{},"配":{"docs":{},"置":{"docs":{},"文":{"docs":{},"件":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}},"脚":{"docs":{},"本":{"docs":{},"一":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}},"是":{"docs":{},"监":{"docs":{},"听":{"docs":{},",":{"docs":{},"m":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"和":{"docs":{},"w":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{},"e":{"docs":{},"r":{"docs":{},"服":{"docs":{},"务":{"docs":{},"挂":{"docs":{},"掉":{"docs":{},"重":{"docs":{},"启":{"docs":{},"的":{"docs":{},"脚":{"docs":{},"本":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"解":{"docs":{},"决":{"docs":{},"方":{"docs":{},"法":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}},"访":{"docs":{},"问":{"docs":{},"地":{"docs":{},"址":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}},"端":{"docs":{},"口":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}},"运":{"docs":{},"行":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0034071550255536627}}}},"这":{"docs":{},"样":{"docs":{},"就":{"docs":{},"可":{"docs":{},"以":{"docs":{},"通":{"docs":{},"过":{"docs":{},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{},"脚":{"docs":{},"本":{"docs":{},"来":{"docs":{},"启":{"docs":{},"动":{"docs":{},"、":{"docs":{},"停":{"docs":{},"止":{"docs":{},"、":{"docs":{},"重":{"docs":{},"启":{"docs":{},"、":{"docs":{},"重":{"docs":{},"载":{"docs":{},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{},"服":{"docs":{},"务":{"docs":{},"器":{"docs":{},"了":{"docs":{},"。":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"直":{"docs":{},"接":{"docs":{},"访":{"docs":{},"问":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}},"里":{"docs":{},"遵":{"docs":{},"循":{"docs":{},"每":{"docs":{},"个":{"docs":{},"语":{"docs":{},"言":{"docs":{},"的":{"docs":{},"特":{"docs":{},"性":{"docs":{},",":{"docs":{},"因":{"docs":{},"为":{"docs":{},"在":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}},"首":{"docs":{},"先":{"docs":{},"要":{"docs":{},"区":{"docs":{},"分":{"docs":{},"任":{"docs":{},"务":{"docs":{},"失":{"docs":{},"败":{"docs":{},"重":{"docs":{},"试":{"docs":{},"、":{"docs":{},"流":{"docs":{},"程":{"docs":{},"失":{"docs":{},"败":{"docs":{},"恢":{"docs":{},"复":{"docs":{},"、":{"docs":{},"流":{"docs":{},"程":{"docs":{},"失":{"docs":{},"败":{"docs":{},"重":{"docs":{},"跑":{"docs":{},"的":{"docs":{},"概":{"docs":{},"念":{"docs":{},":":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"进":{"docs":{},"入":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}},"行":{"docs":{},"添":{"docs":{},"加":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}},"退":{"docs":{},"出":{"docs":{},"进":{"docs":{},"程":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}},"速":{"docs":{},"度":{"docs":{},"非":{"docs":{},"常":{"docs":{},"慢":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}},"配":{"docs":{},"置":{"docs":{},"信":{"docs":{},"息":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}},"文":{"docs":{},"件":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0020222446916076846}},"地":{"docs":{},"址":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}},"路":{"docs":{},"径":{"docs":{},"\"":{"docs":{},"选":{"docs":{},"项":{"docs":{},"来":{"docs":{},"指":{"docs":{},"定":{"docs":{},"路":{"docs":{},"径":{"docs":{},"。":{"docs":{},"需":{"docs":{},"要":{"docs":{},"注":{"docs":{},"意":{"docs":{},"的":{"docs":{},"是":{"docs":{},",":{"docs":{},"若":{"docs":{},"服":{"docs":{},"务":{"docs":{},"器":{"docs":{},"中":{"docs":{},"已":{"docs":{},"安":{"docs":{},"装":{"docs":{},"有":{"docs":{},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},"d":{"docs":{},"等":{"docs":{},"其":{"docs":{},"他":{"docs":{},"w":{"docs":{},"e":{"docs":{},"b":{"docs":{},"服":{"docs":{},"务":{"docs":{},"软":{"docs":{},"件":{"docs":{},",":{"docs":{},"应":{"docs":{},"采":{"docs":{},"取":{"docs":{},"措":{"docs":{},"施":{"docs":{},"(":{"docs":{},"修":{"docs":{},"改":{"docs":{},"端":{"docs":{},"口":{"docs":{},",":{"docs":{},"停":{"docs":{},"用":{"docs":{},"或":{"docs":{},"卸":{"docs":{},"载":{"docs":{},")":{"docs":{},"避":{"docs":{},"免":{"docs":{},"部":{"docs":{},"突":{"docs":{},"。":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"说":{"docs":{},"明":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0020222446916076846}}}}}},"邮":{"docs":{},"件":{"docs":{},"告":{"docs":{},"警":{"docs":{},"信":{"docs":{},"息":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}},"释":{"docs":{},"放":{"docs":{},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{},"源":{"docs":{},"码":{"docs":{},"包":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}}}}},"重":{"docs":{},"启":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{},"服":{"docs":{},"务":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}}},"载":{"docs":{},"配":{"docs":{},"置":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}},"写":{"docs":{"task-plugin-development.html":{"ref":"task-plugin-development.html","tf":0.04854368932038835}}}},"错":{"docs":{},"误":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}},",":{"docs":{},"请":{"docs":{},"在":{"docs":{},"执":{"docs":{},"行":{"docs":{},"完":{"docs":{},"后":{"docs":{},"再":{"docs":{},"次":{"docs":{},"执":{"docs":{},"行":{"docs":{},"以":{"docs":{},"下":{"docs":{},"命":{"docs":{},"令":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}}}}}}}}}},"返":{"docs":{},"回":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}},"问":{"docs":{},"题":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}},"静":{"docs":{},"态":{"docs":{},"文":{"docs":{},"件":{"docs":{},"目":{"docs":{},"录":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}},"项":{"docs":{},"目":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}},"g":{"docs":{},"i":{"docs":{},"t":{"docs":{},"仓":{"docs":{},"库":{"docs":{},"地":{"docs":{},"址":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}},"如":{"docs":{},"果":{"docs":{},"在":{"docs":{},"拉":{"docs":{},"取":{"docs":{},"依":{"docs":{},"赖":{"docs":{},"包":{"docs":{},"的":{"docs":{},"过":{"docs":{},"程":{"docs":{},"中":{"docs":{},"报":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}}}}}}}},"开":{"docs":{},"发":{"docs":{},"环":{"docs":{},"境":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}},"打":{"docs":{},"包":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}},"根":{"docs":{},"目":{"docs":{},"录":{"docs":{},"创":{"docs":{},"建":{"docs":{},".":{"docs":{},"e":{"docs":{},"n":{"docs":{},"v":{"docs":{},"为":{"docs":{},"后":{"docs":{},"缀":{"docs":{},"名":{"docs":{},"的":{"docs":{},"文":{"docs":{},"件":{"docs":{},"并":{"docs":{},"输":{"docs":{},"入":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}}}}}}}}}}}}}},"生":{"docs":{},"产":{"docs":{},"环":{"docs":{},"境":{"docs":{},"配":{"docs":{},"置":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}},"所":{"docs":{},"需":{"docs":{},"文":{"docs":{},"件":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}},"目":{"docs":{},"录":{"docs":{},"结":{"docs":{},"构":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":10.001166861143524}}}}}},"第":{"docs":{},"三":{"docs":{},"方":{"docs":{},"资":{"docs":{},"源":{"docs":{},"本":{"docs":{},"地":{"docs":{},"化":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}},"管":{"docs":{},"理":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.002333722287047841}}}},"采":{"docs":{},"用":{"docs":{},"v":{"docs":{},"u":{"docs":{},"e":{"docs":{},"单":{"docs":{},"页":{"docs":{},"面":{"docs":{},"应":{"docs":{},"用":{"docs":{},"(":{"docs":{},"s":{"docs":{},"p":{"docs":{},"a":{"docs":{},")":{"docs":{},"开":{"docs":{},"发":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}}}}}},"首":{"docs":{},"页":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}},"依":{"docs":{},"赖":{"docs":{},"j":{"docs":{},"a":{"docs":{},"r":{"docs":{},"包":{"docs":{},",":{"docs":{},"包":{"docs":{},"括":{"docs":{},"各":{"docs":{},"个":{"docs":{},"模":{"docs":{},"块":{"docs":{},"j":{"docs":{},"a":{"docs":{},"r":{"docs":{},"和":{"docs":{},"第":{"docs":{},"三":{"docs":{},"方":{"docs":{},"j":{"docs":{},"a":{"docs":{},"r":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{},"文":{"docs":{},"件":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}},"编":{"docs":{},"译":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.003033367037411527}}}},"配":{"docs":{},"置":{"docs":{},"文":{"docs":{},"件":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}},"!":{"docs":{},"!":{"docs":{},"!":{"docs":{},"这":{"docs":{},"里":{"docs":{},"特":{"docs":{},"别":{"docs":{},"注":{"docs":{},"意":{"docs":{"frontend-deploy.html":{"ref":"frontend-deploy.html","tf":0.0017035775127768314}}}}}}}}}}},"!":{"docs":{},"(":{"docs":{},"[":{"docs":{},"'":{"docs":{},"s":{"docs":{},"u":{"docs":{},"c":{"docs":{},"c":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},"'":{"docs":{},",":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}},"'":{"docs":{},"#":{"2":{"docs":{},"f":{"docs":{},"b":{"docs":{},"f":{"docs":{},"d":{"8":{"docs":{},"'":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}},"docs":{}}}}}},"5":{"1":{"0":{"1":{"docs":{},"b":{"docs":{},"e":{"docs":{},"'":{"docs":{},",":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"&":{"docs":{},"#":{"docs":{},"x":{"docs":{},"e":{"6":{"8":{"docs":{},"c":{"docs":{},";":{"docs":{},"'":{"docs":{},",":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}},"docs":{}},"7":{"8":{"1":{"docs":{},";":{"docs":{},"'":{"docs":{},",":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}},"docs":{}},"docs":{}},"docs":{}}}}},".":{"docs":{},"/":{"docs":{},"l":{"docs":{},"i":{"docs":{},"b":{"docs":{},"'":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}},"/":{"docs":{},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},"'":{"docs":{},",":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}},"d":{"docs":{},"e":{"docs":{},"p":{"docs":{},"e":{"docs":{},"n":{"docs":{},"d":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"'":{"docs":{},",":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}},":":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}},"f":{"docs":{},"a":{"docs":{},"i":{"docs":{},"l":{"docs":{},"'":{"docs":{},"]":{"docs":{},".":{"docs":{},"i":{"docs":{},"n":{"docs":{},"d":{"docs":{},"e":{"docs":{},"x":{"docs":{},"o":{"docs":{},"f":{"docs":{},"(":{"docs":{},"v":{"docs":{},")":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}}}}}},"p":{"docs":{},"a":{"docs":{},"g":{"docs":{},"e":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}},"o":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"'":{"docs":{},",":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},"'":{"docs":{},",":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}},"w":{"docs":{},"a":{"docs":{},"i":{"docs":{},"t":{"docs":{},"t":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"_":{"docs":{},"d":{"docs":{},"e":{"docs":{},"p":{"docs":{},"e":{"docs":{},"n":{"docs":{},"d":{"docs":{},"'":{"docs":{},":":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}}}}}},"后":{"docs":{},"除":{"docs":{},"'":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}},"成":{"docs":{},"就":{"docs":{},"你":{"docs":{},"我":{"docs":{},"'":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}},"{":{"docs":{},"p":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"w":{"docs":{},"o":{"docs":{},"r":{"docs":{},"d":{"docs":{},"}":{"docs":{},"'":{"docs":{},";":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0020222446916076846}}}}}}}}}}}}},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"}":{"docs":{},"'":{"docs":{},"@":{"docs":{},"'":{"docs":{},"%":{"docs":{},"'":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{},"a":{"docs":{},"l":{"docs":{},"h":{"docs":{},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{},"'":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}}}}}}}}},"@":{"docs":{},"a":{"docs":{},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"r":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}},"d":{"docs":{},"e":{"docs":{},"s":{"docs":{},"c":{"docs":{},"r":{"docs":{},"i":{"docs":{},"p":{"docs":{},"t":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}},"m":{"docs":{},"o":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}},"_":{"docs":{},"s":{"docs":{},"o":{"docs":{},"u":{"docs":{},"r":{"docs":{},"c":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.002333722287047841}},"e":{"docs":{},"文":{"docs":{},"件":{"docs":{},"夹":{"docs":{},"里":{"docs":{},"。":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"i":{"docs":{},"f":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}},"i":{"docs":{},"c":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"(":{"docs":{},")":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}}}},"`":{"docs":{},"$":{"docs":{},"{":{"docs":{},"f":{"docs":{},"o":{"docs":{},"o":{"docs":{},"}":{"docs":{},",":{"docs":{},"前":{"docs":{},"端":{"docs":{},"工":{"docs":{},"程":{"docs":{},"师":{"docs":{},"`":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}},"i":{"1":{"8":{"docs":{},"n":{"docs":{},".":{"docs":{},"$":{"docs":{},"t":{"docs":{},"(":{"docs":{},"'":{"docs":{},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},"'":{"docs":{},")":{"docs":{},"}":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}},"拖":{"docs":{},"动":{"docs":{},"节":{"docs":{},"点":{"docs":{},"和":{"docs":{},"选":{"docs":{},"中":{"docs":{},"项":{"docs":{},"'":{"docs":{},")":{"docs":{},"}":{"docs":{},"`":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}},"等":{"docs":{},"待":{"docs":{},"依":{"docs":{},"赖":{"docs":{},"'":{"docs":{},")":{"docs":{},"}":{"docs":{},"`":{"docs":{},",":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}}}}},"docs":{}},"docs":{}}}},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},":":{"docs":{},"/":{"docs":{},"/":{"docs":{},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{},"a":{"docs":{},"l":{"docs":{},"h":{"docs":{},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{},":":{"8":{"8":{"8":{"8":{"docs":{},"/":{"docs":{},"#":{"docs":{},"/":{"docs":{},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},"`":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}}}}}}}}}}}}}}}}},"i":{"docs":{},"n":{"docs":{},"d":{"docs":{},"e":{"docs":{},"x":{"docs":{},".":{"docs":{},"j":{"docs":{},"s":{"docs":{},"`":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}},"s":{"docs":{},"r":{"docs":{},"c":{"docs":{},"/":{"docs":{},"j":{"docs":{},"s":{"docs":{},"/":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{},"/":{"docs":{},"$":{"docs":{},"{":{"docs":{},"对":{"docs":{},"应":{"docs":{},"页":{"docs":{},"面":{"docs":{},"文":{"docs":{},"件":{"docs":{},"名":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"/":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{},"/":{"docs":{},"$":{"docs":{},"{":{"docs":{},"对":{"docs":{},"应":{"docs":{},"页":{"docs":{},"面":{"docs":{},"文":{"docs":{},"件":{"docs":{},"名":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}}}}}}}},"v":{"docs":{},"i":{"docs":{},"e":{"docs":{},"w":{"docs":{},"/":{"docs":{},"$":{"docs":{},"{":{"docs":{},"对":{"docs":{},"应":{"docs":{},"页":{"docs":{},"面":{"docs":{},"文":{"docs":{},"件":{"docs":{},"名":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}}}}}}}},"└":{"docs":{},"─":{"docs":{},"─":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.008168028004667444}}}}},"├":{"docs":{},"─":{"docs":{},"─":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.004667444574095682},"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0020222446916076846}}}}},"、":{"docs":{},"、":{"docs":{},"的":{"docs":{},"顺":{"docs":{},"序":{"docs":{},"放":{"docs":{},"置":{"docs":{},"。":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}},"下":{"docs":{},"分":{"docs":{},"为":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}},"载":{"docs":{},"组":{"docs":{},"件":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}},"的":{"docs":{"task-plugin-development.html":{"ref":"task-plugin-development.html","tf":0.05825242718446602}},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"a":{"docs":{},".":{"docs":{},"b":{"docs":{},"a":{"docs":{},"s":{"docs":{},"e":{"docs":{},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{},".":{"docs":{},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{},"、":{"docs":{},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"a":{"docs":{},".":{"docs":{},"d":{"docs":{},"o":{"docs":{},"w":{"docs":{},"n":{"docs":{},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{},".":{"docs":{},"b":{"docs":{},"a":{"docs":{},"s":{"docs":{},"e":{"docs":{},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{},".":{"docs":{},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{},"和":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"c":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},".":{"docs":{},"e":{"docs":{},"x":{"docs":{},"e":{"docs":{},"c":{"docs":{},".":{"docs":{},"b":{"docs":{},"a":{"docs":{},"s":{"docs":{},"e":{"docs":{},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{},"路":{"docs":{},"径":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"面":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.003033367037411527}}}},"两":{"docs":{},"张":{"docs":{},"图":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.002333722287047841}}}},"个":{"docs":{},"环":{"docs":{},"境":{"docs":{},"变":{"docs":{},"量":{"docs":{},"文":{"docs":{},"件":{"docs":{},"复":{"docs":{},"制":{"docs":{},"到":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0020222446916076846}}}}}}}}}}}}},"中":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0020222446916076846}},"更":{"docs":{},"自":{"docs":{},"然":{"docs":{},"的":{"docs":{},"是":{"docs":{},"驼":{"docs":{},"峰":{"docs":{},"命":{"docs":{},"名":{"docs":{},"。":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}},"心":{"docs":{},"化":{"docs":{},"思":{"docs":{},"想":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}},"设":{"docs":{},"计":{"docs":{},"存":{"docs":{},"在":{"docs":{},"的":{"docs":{},"问":{"docs":{},"题":{"docs":{},":":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}},"的":{"docs":{},"设":{"docs":{},"计":{"docs":{},"理":{"docs":{},"念":{"docs":{},"比":{"docs":{},"较":{"docs":{},"简":{"docs":{},"单":{"docs":{},",":{"docs":{},"分":{"docs":{},"布":{"docs":{},"式":{"docs":{},"集":{"docs":{},"群":{"docs":{},"中":{"docs":{},"的":{"docs":{},"节":{"docs":{},"点":{"docs":{},"按":{"docs":{},"照":{"docs":{},"角":{"docs":{},"色":{"docs":{},"分":{"docs":{},"工":{"docs":{},",":{"docs":{},"大":{"docs":{},"体":{"docs":{},"上":{"docs":{},"分":{"docs":{},"为":{"docs":{},"两":{"docs":{},"种":{"docs":{},"角":{"docs":{},"色":{"docs":{},":":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"变":{"docs":{},"量":{"docs":{},"的":{"docs":{},"值":{"docs":{},",":{"docs":{},"替":{"docs":{},"换":{"docs":{},"成":{"docs":{},"自":{"docs":{},"身":{"docs":{},"业":{"docs":{},"务":{"docs":{},"所":{"docs":{},"需":{"docs":{},"的":{"docs":{},"值":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}}}}},"创":{"docs":{},"建":{"docs":{},"自":{"docs":{},"定":{"docs":{},"义":{"docs":{},"任":{"docs":{},"务":{"docs":{"task-plugin-development.html":{"ref":"task-plugin-development.html","tf":0.019417475728155338}}}}}}}}}},"事":{"docs":{},"件":{"docs":{},"中":{"docs":{},"处":{"docs":{},"理":{"docs":{},"。":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}},"二":{"docs":{},"次":{"docs":{},"开":{"docs":{},"发":{"docs":{},"需":{"docs":{},"要":{"docs":{},"重":{"docs":{},"新":{"docs":{},"引":{"docs":{},"入":{"docs":{},"自":{"docs":{},"己":{"docs":{},"的":{"docs":{},"库":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}},"、":{"docs":{},"分":{"docs":{},"布":{"docs":{},"式":{"docs":{},"锁":{"docs":{},"实":{"docs":{},"践":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}},"代":{"docs":{},"表":{"docs":{},"的":{"docs":{},"颜":{"docs":{},"色":{"docs":{},"主":{"docs":{},"要":{"docs":{},"用":{"docs":{},"于":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.002333722287047841}}}}}}}}}}},"例":{"docs":{},"如":{"docs":{},":":{"docs":{},"s":{"docs":{},"h":{"docs":{},"e":{"docs":{},"l":{"docs":{},"l":{"docs":{},"}":{"docs":{},".":{"docs":{},"p":{"docs":{},"n":{"docs":{},"g":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}},"值":{"docs":{},"使":{"docs":{},"更":{"docs":{},"新":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}},"做":{"docs":{},"标":{"docs":{},"识":{"docs":{},"。":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}},"先":{"docs":{},"将":{"docs":{},"节":{"docs":{},"点":{"docs":{},"的":{"docs":{},"i":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"小":{"docs":{},"图":{"docs":{},"标":{"docs":{},"放":{"docs":{},"置":{"docs":{},"s":{"docs":{},"r":{"docs":{},"c":{"docs":{},"/":{"docs":{},"j":{"docs":{},"s":{"docs":{},"/":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{},"/":{"docs":{},"h":{"docs":{},"o":{"docs":{},"m":{"docs":{},"e":{"docs":{},"/":{"docs":{},"p":{"docs":{},"a":{"docs":{},"g":{"docs":{},"e":{"docs":{},"s":{"docs":{},"/":{"docs":{},"d":{"docs":{},"a":{"docs":{},"g":{"docs":{},"/":{"docs":{},"i":{"docs":{},"m":{"docs":{},"g":{"docs":{},"文":{"docs":{},"件":{"docs":{},"夹":{"docs":{},"内":{"docs":{},",":{"docs":{},"注":{"docs":{},"意":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"入":{"docs":{},"口":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}},"文":{"docs":{},"件":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}},"公":{"docs":{},"共":{"docs":{},"图":{"docs":{},"片":{"docs":{},"存":{"docs":{},"放":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}},"模":{"docs":{},"块":{"docs":{},"及":{"docs":{},"u":{"docs":{},"t":{"docs":{},"i":{"docs":{},"l":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}},"部":{"docs":{},"分":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}},"司":{"docs":{},"内":{"docs":{},"部":{"docs":{},"组":{"docs":{},"件":{"docs":{},"(":{"docs":{},"公":{"docs":{},"司":{"docs":{},"组":{"docs":{},"件":{"docs":{},"库":{"docs":{},"开":{"docs":{},"源":{"docs":{},"后":{"docs":{},"可":{"docs":{},"删":{"docs":{},"掉":{"docs":{},")":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}}}}}}}},"具":{"docs":{},"体":{"docs":{},"操":{"docs":{},"作":{"docs":{},":":{"docs":{},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},"s":{"docs":{},":":{"docs":{},"/":{"docs":{},"/":{"docs":{},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},".":{"docs":{},"v":{"docs":{},"u":{"docs":{},"e":{"docs":{},"j":{"docs":{},"s":{"docs":{},".":{"docs":{},"o":{"docs":{},"r":{"docs":{},"g":{"docs":{},"/":{"docs":{},"z":{"docs":{},"h":{"docs":{},"/":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}}}}}}}}},"v":{"docs":{},"u":{"docs":{},"e":{"docs":{},"x":{"docs":{},".":{"docs":{},"v":{"docs":{},"u":{"docs":{},"e":{"docs":{},"j":{"docs":{},"s":{"docs":{},".":{"docs":{},"o":{"docs":{},"r":{"docs":{},"g":{"docs":{},"/":{"docs":{},"z":{"docs":{},"h":{"docs":{},"/":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"r":{"docs":{},"c":{"docs":{},"/":{"docs":{},"j":{"docs":{},"s":{"docs":{},"/":{"docs":{},"m":{"docs":{},"o":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"/":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"/":{"docs":{},"i":{"docs":{},"n":{"docs":{},"d":{"docs":{},"e":{"docs":{},"x":{"docs":{},".":{"docs":{},"j":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"实":{"docs":{},"现":{"docs":{},"是":{"docs":{},"根":{"docs":{},"据":{"docs":{},"任":{"docs":{},"务":{"docs":{},"实":{"docs":{},"例":{"docs":{},"的":{"docs":{},"j":{"docs":{},"s":{"docs":{},"o":{"docs":{},"n":{"docs":{},"解":{"docs":{},"析":{"docs":{},"优":{"docs":{},"先":{"docs":{},"级":{"docs":{},",":{"docs":{},"然":{"docs":{},"后":{"docs":{},"把":{"docs":{},"*":{"docs":{},"*":{"docs":{},"流":{"docs":{},"程":{"docs":{},"实":{"docs":{},"例":{"docs":{},"优":{"docs":{},"先":{"docs":{},"级":{"docs":{},"_":{"docs":{},"流":{"docs":{},"程":{"docs":{},"实":{"docs":{},"例":{"docs":{},"i":{"docs":{},"d":{"docs":{},"_":{"docs":{},"任":{"docs":{},"务":{"docs":{},"优":{"docs":{},"先":{"docs":{},"级":{"docs":{},"_":{"docs":{},"任":{"docs":{},"务":{"docs":{},"i":{"docs":{},"d":{"docs":{},"*":{"docs":{},"*":{"docs":{},"信":{"docs":{},"息":{"docs":{},"保":{"docs":{},"存":{"docs":{},"在":{"docs":{},"z":{"docs":{},"o":{"docs":{},"o":{"docs":{},"k":{"docs":{},"e":{"docs":{},"e":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"任":{"docs":{},"务":{"docs":{},"队":{"docs":{},"列":{"docs":{},"中":{"docs":{},",":{"docs":{},"当":{"docs":{},"从":{"docs":{},"任":{"docs":{},"务":{"docs":{},"队":{"docs":{},"列":{"docs":{},"获":{"docs":{},"取":{"docs":{},"的":{"docs":{},"时":{"docs":{},"候":{"docs":{},",":{"docs":{},"通":{"docs":{},"过":{"docs":{},"字":{"docs":{},"符":{"docs":{},"串":{"docs":{},"比":{"docs":{},"较":{"docs":{},"即":{"docs":{},"可":{"docs":{},"得":{"docs":{},"出":{"docs":{},"最":{"docs":{},"需":{"docs":{},"要":{"docs":{},"优":{"docs":{},"先":{"docs":{},"执":{"docs":{},"行":{"docs":{},"的":{"docs":{},"任":{"docs":{},"务":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"内":{"docs":{},"部":{"docs":{},"项":{"docs":{},"目":{"docs":{},"公":{"docs":{},"共":{"docs":{},"组":{"docs":{},"件":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}},"函":{"docs":{},"数":{"docs":{},"名":{"docs":{},"统":{"docs":{},"一":{"docs":{},"使":{"docs":{},"用":{"docs":{},"驼":{"docs":{},"峰":{"docs":{},"命":{"docs":{},"名":{"docs":{},",":{"docs":{},"以":{"docs":{},"大":{"docs":{},"写":{"docs":{},"字":{"docs":{},"母":{"docs":{},"开":{"docs":{},"头":{"docs":{},"申":{"docs":{},"明":{"docs":{},"的":{"docs":{},"都":{"docs":{},"是":{"docs":{},"构":{"docs":{},"造":{"docs":{},"函":{"docs":{},"数":{"docs":{},",":{"docs":{},"使":{"docs":{},"用":{"docs":{},"小":{"docs":{},"写":{"docs":{},"字":{"docs":{},"母":{"docs":{},"开":{"docs":{},"头":{"docs":{},"的":{"docs":{},"都":{"docs":{},"是":{"docs":{},"普":{"docs":{},"通":{"docs":{},"函":{"docs":{},"数":{"docs":{},",":{"docs":{},"也":{"docs":{},"不":{"docs":{},"该":{"docs":{},"使":{"docs":{},"用":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"管":{"docs":{},"理":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}},"分":{"docs":{},"为":{"docs":{},":":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}},"布":{"docs":{},"式":{"docs":{},"调":{"docs":{},"度":{"docs":{},"器":{"docs":{},",":{"docs":{},"并":{"docs":{},"同":{"docs":{},"时":{"docs":{},"支":{"docs":{},"持":{"docs":{},"c":{"docs":{},"r":{"docs":{},"o":{"docs":{},"n":{"docs":{},"表":{"docs":{},"达":{"docs":{},"式":{"docs":{},"可":{"docs":{},"视":{"docs":{},"化":{"docs":{},"的":{"docs":{},"生":{"docs":{},"成":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}},"部":{"docs":{},"署":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}},"别":{"docs":{},"名":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}},"匿":{"docs":{},"名":{"docs":{},"函":{"docs":{},"数":{"docs":{},"统":{"docs":{},"一":{"docs":{},"使":{"docs":{},"用":{"docs":{},"箭":{"docs":{},"头":{"docs":{},"函":{"docs":{},"数":{"docs":{},",":{"docs":{},"多":{"docs":{},"个":{"docs":{},"参":{"docs":{},"数":{"docs":{},"/":{"docs":{},"返":{"docs":{},"回":{"docs":{},"值":{"docs":{},"时":{"docs":{},"优":{"docs":{},"先":{"docs":{},"使":{"docs":{},"用":{"docs":{},"对":{"docs":{},"象":{"docs":{},"的":{"docs":{},"结":{"docs":{},"构":{"docs":{},"赋":{"docs":{},"值":{"docs":{},"。":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"反":{"docs":{},"例":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}},"告":{"docs":{},"警":{"docs":{},"组":{"docs":{},"管":{"docs":{},"理":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}},"和":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.002333722287047841},"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384},"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.004044489383215369}},"各":{"docs":{},"个":{"docs":{},"其":{"docs":{},"它":{"docs":{},"机":{"docs":{},"器":{"docs":{},"s":{"docs":{},"s":{"docs":{},"h":{"docs":{},"打":{"docs":{},"通":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}},"国":{"docs":{},"际":{"docs":{},"化":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}},"图":{"docs":{},"片":{"docs":{},"下":{"docs":{},"载":{"docs":{},"处":{"docs":{},"理":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}},"表":{"docs":{},"组":{"docs":{},"件":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}},"在":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}},"s":{"docs":{},"r":{"docs":{},"c":{"docs":{},"/":{"docs":{},"j":{"docs":{},"s":{"docs":{},"/":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{},"/":{"docs":{},"h":{"docs":{},"o":{"docs":{},"m":{"docs":{},"e":{"docs":{},"/":{"docs":{},"p":{"docs":{},"a":{"docs":{},"g":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}}}}}}}}},"同":{"docs":{},"一":{"docs":{},"个":{"docs":{},"元":{"docs":{},"素":{"docs":{},"(":{"docs":{},"例":{"docs":{},"如":{"docs":{},":":{"docs":{},")":{"docs":{},"上":{"docs":{},"使":{"docs":{},"用":{"docs":{},",":{"docs":{},"因":{"docs":{},"为":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}}}}},"引":{"docs":{},"用":{"docs":{},"外":{"docs":{},"部":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}},"执":{"docs":{},"行":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}},"去":{"docs":{},"中":{"docs":{},"心":{"docs":{},"化":{"docs":{},"设":{"docs":{},"计":{"docs":{},"里":{"docs":{},",":{"docs":{},"通":{"docs":{},"常":{"docs":{},"没":{"docs":{},"有":{"docs":{},"m":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"/":{"docs":{},"s":{"docs":{},"l":{"docs":{},"a":{"docs":{},"v":{"docs":{},"e":{"docs":{},"的":{"docs":{},"概":{"docs":{},"念":{"docs":{},",":{"docs":{},"所":{"docs":{},"有":{"docs":{},"的":{"docs":{},"角":{"docs":{},"色":{"docs":{},"都":{"docs":{},"是":{"docs":{},"一":{"docs":{},"样":{"docs":{},"的":{"docs":{},",":{"docs":{},"地":{"docs":{},"位":{"docs":{},"是":{"docs":{},"平":{"docs":{},"等":{"docs":{},"的":{"docs":{},",":{"docs":{},"全":{"docs":{},"球":{"docs":{},"互":{"docs":{},"联":{"docs":{},"网":{"docs":{},"就":{"docs":{},"是":{"docs":{},"一":{"docs":{},"个":{"docs":{},"典":{"docs":{},"型":{"docs":{},"的":{"docs":{},"去":{"docs":{},"中":{"docs":{},"心":{"docs":{},"化":{"docs":{},"的":{"docs":{},"分":{"docs":{},"布":{"docs":{},"式":{"docs":{},"系":{"docs":{},"统":{"docs":{},",":{"docs":{},"联":{"docs":{},"网":{"docs":{},"的":{"docs":{},"任":{"docs":{},"意":{"docs":{},"节":{"docs":{},"点":{"docs":{},"设":{"docs":{},"备":{"docs":{},"d":{"docs":{},"o":{"docs":{},"w":{"docs":{},"n":{"docs":{},"机":{"docs":{},",":{"docs":{},"都":{"docs":{},"只":{"docs":{},"会":{"docs":{},"影":{"docs":{},"响":{"docs":{},"很":{"docs":{},"小":{"docs":{},"范":{"docs":{},"围":{"docs":{},"的":{"docs":{},"功":{"docs":{},"能":{"docs":{},"。":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"对":{"docs":{},"系":{"docs":{},"统":{"docs":{},"架":{"docs":{},"构":{"docs":{},"说":{"docs":{},"明":{"docs":{},"之":{"docs":{},"前":{"docs":{},",":{"docs":{},"我":{"docs":{},"们":{"docs":{},"先":{"docs":{},"来":{"docs":{},"认":{"docs":{},"识":{"docs":{},"一":{"docs":{},"下":{"docs":{},"调":{"docs":{},"度":{"docs":{},"系":{"docs":{},"统":{"docs":{},"常":{"docs":{},"用":{"docs":{},"的":{"docs":{},"名":{"docs":{},"词":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"早":{"docs":{},"期":{"docs":{},"调":{"docs":{},"度":{"docs":{},"设":{"docs":{},"计":{"docs":{},"中":{"docs":{},",":{"docs":{},"如":{"docs":{},"果":{"docs":{},"没":{"docs":{},"有":{"docs":{},"优":{"docs":{},"先":{"docs":{},"级":{"docs":{},"设":{"docs":{},"计":{"docs":{},",":{"docs":{},"采":{"docs":{},"用":{"docs":{},"公":{"docs":{},"平":{"docs":{},"调":{"docs":{},"度":{"docs":{},"设":{"docs":{},"计":{"docs":{},"的":{"docs":{},"话":{"docs":{},",":{"docs":{},"会":{"docs":{},"遇":{"docs":{},"到":{"docs":{},"先":{"docs":{},"行":{"docs":{},"提":{"docs":{},"交":{"docs":{},"的":{"docs":{},"任":{"docs":{},"务":{"docs":{},"可":{"docs":{},"能":{"docs":{},"会":{"docs":{},"和":{"docs":{},"后":{"docs":{},"继":{"docs":{},"提":{"docs":{},"交":{"docs":{},"的":{"docs":{},"任":{"docs":{},"务":{"docs":{},"同":{"docs":{},"时":{"docs":{},"完":{"docs":{},"成":{"docs":{},"的":{"docs":{},"情":{"docs":{},"况":{"docs":{},",":{"docs":{},"而":{"docs":{},"不":{"docs":{},"能":{"docs":{},"做":{"docs":{},"到":{"docs":{},"设":{"docs":{},"置":{"docs":{},"流":{"docs":{},"程":{"docs":{},"或":{"docs":{},"者":{"docs":{},"任":{"docs":{},"务":{"docs":{},"的":{"docs":{},"优":{"docs":{},"先":{"docs":{},"级":{"docs":{},",":{"docs":{},"因":{"docs":{},"此":{"docs":{},"我":{"docs":{},"们":{"docs":{},"对":{"docs":{},"此":{"docs":{},"进":{"docs":{},"行":{"docs":{},"了":{"docs":{},"重":{"docs":{},"新":{"docs":{},"设":{"docs":{},"计":{"docs":{},",":{"docs":{},"目":{"docs":{},"前":{"docs":{},"我":{"docs":{},"们":{"docs":{},"设":{"docs":{},"计":{"docs":{},"如":{"docs":{},"下":{"docs":{},":":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"需":{"docs":{},"要":{"docs":{},"部":{"docs":{},"署":{"docs":{},"调":{"docs":{},"度":{"docs":{},"的":{"docs":{},"机":{"docs":{},"器":{"docs":{},"上":{"docs":{},"如":{"docs":{},"上":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}},"基":{"docs":{},"于":{"docs":{},"a":{"docs":{},"x":{"docs":{},"i":{"docs":{},"o":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}},"s":{"docs":{},"h":{"docs":{},"e":{"docs":{},"l":{"docs":{},"l":{"docs":{},"的":{"docs":{},"任":{"docs":{},"务":{"docs":{"task-plugin-development.html":{"ref":"task-plugin-development.html","tf":0.009708737864077669}}}}}}}}}},"y":{"docs":{},"a":{"docs":{},"r":{"docs":{},"n":{"docs":{},"的":{"docs":{},"计":{"docs":{},"算":{"docs":{},"(":{"docs":{},"参":{"docs":{},"见":{"docs":{},"m":{"docs":{},"a":{"docs":{},"p":{"docs":{},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"c":{"docs":{},"e":{"docs":{},"t":{"docs":{},"a":{"docs":{},"s":{"docs":{},"k":{"docs":{},")":{"docs":{"task-plugin-development.html":{"ref":"task-plugin-development.html","tf":0.009708737864077669}}}}}}}}}}}}}}}}}}}}}}}}}},"非":{"docs":{},"s":{"docs":{},"h":{"docs":{},"e":{"docs":{},"l":{"docs":{},"l":{"docs":{},"的":{"docs":{},"任":{"docs":{},"务":{"docs":{},"(":{"docs":{},"参":{"docs":{},"见":{"docs":{},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{},"t":{"docs":{},"a":{"docs":{},"s":{"docs":{},"k":{"docs":{},")":{"docs":{"task-plugin-development.html":{"ref":"task-plugin-development.html","tf":0.009708737864077669}}}}}}}}}}}}}}}}}}}}},"y":{"docs":{},"a":{"docs":{},"r":{"docs":{},"n":{"docs":{},"的":{"docs":{},"计":{"docs":{},"算":{"docs":{},"(":{"docs":{},"参":{"docs":{},"见":{"docs":{},"s":{"docs":{},"h":{"docs":{},"e":{"docs":{},"l":{"docs":{},"l":{"docs":{},"t":{"docs":{},"a":{"docs":{},"s":{"docs":{},"k":{"docs":{},")":{"docs":{"task-plugin-development.html":{"ref":"task-plugin-development.html","tf":0.009708737864077669}}}}}}}}}}}}}}}}}}}}}}}},"础":{"docs":{},"服":{"docs":{},"务":{"docs":{},"启":{"docs":{},"动":{"docs":{},"脚":{"docs":{},"本":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}},"软":{"docs":{},"件":{"docs":{},"安":{"docs":{},"装":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}},"增":{"docs":{},"加":{"docs":{},"一":{"docs":{},"个":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}},"种":{"docs":{},"资":{"docs":{},"源":{"docs":{},"不":{"docs":{},"足":{"docs":{},"的":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"m":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{},"类":{"docs":{},"型":{"docs":{},",":{"docs":{},"如":{"docs":{},"果":{"docs":{},"线":{"docs":{},"程":{"docs":{},"池":{"docs":{},"不":{"docs":{},"足":{"docs":{},",":{"docs":{},"则":{"docs":{},"将":{"docs":{},"主":{"docs":{},"流":{"docs":{},"程":{"docs":{},"挂":{"docs":{},"起":{"docs":{},"。":{"docs":{},"这":{"docs":{},"样":{"docs":{},"线":{"docs":{},"程":{"docs":{},"池":{"docs":{},"就":{"docs":{},"有":{"docs":{},"了":{"docs":{},"新":{"docs":{},"的":{"docs":{},"线":{"docs":{},"程":{"docs":{},",":{"docs":{},"可":{"docs":{},"以":{"docs":{},"让":{"docs":{},"资":{"docs":{},"源":{"docs":{},"不":{"docs":{},"足":{"docs":{},"挂":{"docs":{},"起":{"docs":{},"的":{"docs":{},"流":{"docs":{},"程":{"docs":{},"重":{"docs":{},"新":{"docs":{},"唤":{"docs":{},"醒":{"docs":{},"执":{"docs":{},"行":{"docs":{},"。":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"子":{"docs":{},"组":{"docs":{},"件":{"docs":{},"验":{"docs":{},"证":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.002333722287047841}}}}}}},"字":{"docs":{},"体":{"docs":{},"图":{"docs":{},"标":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}},"库":{"docs":{},"可":{"docs":{},"访":{"docs":{},"问":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}},"存":{"docs":{},"储":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}},"过":{"docs":{},"程":{"docs":{},"需":{"docs":{},"要":{"docs":{},"安":{"docs":{},"装":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}},"定":{"docs":{},"义":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}},"的":{"docs":{},"函":{"docs":{},"数":{"docs":{},"可":{"docs":{},"以":{"docs":{},"随":{"docs":{},"便":{"docs":{},"放":{"docs":{},"在":{"docs":{},"任":{"docs":{},"何":{"docs":{},"位":{"docs":{},"置":{"docs":{},"。":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}}}},"时":{"docs":{},"器":{"docs":{},"配":{"docs":{},"置":{"docs":{},"文":{"docs":{},"件":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}},"对":{"docs":{},"应":{"docs":{},"的":{"docs":{},"h":{"docs":{},"t":{"docs":{},"m":{"docs":{},"l":{"docs":{},"文":{"docs":{},"件":{"docs":{},"则":{"docs":{},"在":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}},"s":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"文":{"docs":{},"件":{"docs":{},"则":{"docs":{},"在":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}},"象":{"docs":{},",":{"docs":{},"往":{"docs":{},"里":{"docs":{},"增":{"docs":{},"加":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.003500583430571762}}}}}}}},"于":{"docs":{},"启":{"docs":{},"动":{"docs":{},"新":{"docs":{},"m":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"来":{"docs":{},"打":{"docs":{},"破":{"docs":{},"僵":{"docs":{},"局":{"docs":{},",":{"docs":{},"似":{"docs":{},"乎":{"docs":{},"有":{"docs":{},"点":{"docs":{},"差":{"docs":{},"强":{"docs":{},"人":{"docs":{},"意":{"docs":{},",":{"docs":{},"于":{"docs":{},"是":{"docs":{},"我":{"docs":{},"们":{"docs":{},"提":{"docs":{},"出":{"docs":{},"了":{"docs":{},"以":{"docs":{},"下":{"docs":{},"三":{"docs":{},"种":{"docs":{},"方":{"docs":{},"案":{"docs":{},"来":{"docs":{},"降":{"docs":{},"低":{"docs":{},"这":{"docs":{},"种":{"docs":{},"风":{"docs":{},"险":{"docs":{},":":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"单":{"docs":{},"m":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"线":{"docs":{},"程":{"docs":{},"池":{"docs":{},"进":{"docs":{},"行":{"docs":{},"判":{"docs":{},"断":{"docs":{},",":{"docs":{},"如":{"docs":{},"果":{"docs":{},"线":{"docs":{},"程":{"docs":{},"池":{"docs":{},"已":{"docs":{},"经":{"docs":{},"满":{"docs":{},"了":{"docs":{},",":{"docs":{},"则":{"docs":{},"让":{"docs":{},"线":{"docs":{},"程":{"docs":{},"直":{"docs":{},"接":{"docs":{},"失":{"docs":{},"败":{"docs":{},"。":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"属":{"docs":{},"于":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}},"节":{"docs":{},"点":{"docs":{},"组":{"docs":{},"件":{"docs":{},"内":{"docs":{},"的":{"docs":{},"必":{"docs":{},"须":{"docs":{},"拥":{"docs":{},"有":{"docs":{},"一":{"docs":{},"个":{"docs":{},"函":{"docs":{},"数":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}}}},"性":{"docs":{},"。":{"docs":{},"h":{"docs":{},"t":{"docs":{},"m":{"docs":{},"l":{"5":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}},"docs":{}}}}}},"尽":{"docs":{},"量":{"docs":{},"使":{"docs":{},"用":{"docs":{},"缩":{"docs":{},"写":{"docs":{},",":{"docs":{},"提":{"docs":{},"高":{"docs":{},"代":{"docs":{},"码":{"docs":{},"的":{"docs":{},"效":{"docs":{},"率":{"docs":{},"和":{"docs":{},"方":{"docs":{},"便":{"docs":{},"理":{"docs":{},"解":{"docs":{},"。":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}}}}}}}}},",":{"docs":{},"所":{"docs":{},"以":{"docs":{},"没":{"docs":{},"必":{"docs":{},"要":{"docs":{},"指":{"docs":{},"定":{"docs":{},"。":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}},"工":{"docs":{},"作":{"docs":{},"流":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}},"定":{"docs":{},"义":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}},"实":{"docs":{},"例":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}},"具":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}},"图":{"docs":{},"标":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}},"标":{"docs":{},"识":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}},"类":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}},"都":{"docs":{},"以":{"docs":{},"一":{"docs":{},"个":{"docs":{},"构":{"docs":{},"造":{"docs":{},"函":{"docs":{},"数":{"docs":{},"返":{"docs":{},"回":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}},"应":{"docs":{},"该":{"docs":{},"总":{"docs":{},"是":{"docs":{},"使":{"docs":{},"用":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}},"给":{"docs":{},"一":{"docs":{},"个":{"docs":{},"模":{"docs":{},"块":{"docs":{},"文":{"docs":{},"件":{"docs":{},"写":{"docs":{},"一":{"docs":{},"个":{"docs":{},"区":{"docs":{},"块":{"docs":{},"注":{"docs":{},"释":{"docs":{},"。":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}}}},"避":{"docs":{},"免":{"docs":{},"与":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}},"建":{"docs":{},"一":{"docs":{},"个":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}},"议":{"docs":{},"不":{"docs":{},"再":{"docs":{},"使":{"docs":{},"用":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}},"形":{"docs":{},"式":{"docs":{},"返":{"docs":{},"回":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}},"或":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}},"打":{"docs":{},"包":{"docs":{},"及":{"docs":{},"开":{"docs":{},"发":{"docs":{},"环":{"docs":{},"境":{"docs":{},"项":{"docs":{},"目":{"docs":{},"的":{"docs":{},"一":{"docs":{},"些":{"docs":{},"w":{"docs":{},"e":{"docs":{},"b":{"docs":{},"p":{"docs":{},"a":{"docs":{},"c":{"docs":{},"k":{"docs":{},"配":{"docs":{},"置":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}}}}}}}}}},"找":{"docs":{},"到":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.003500583430571762}},"s":{"docs":{},"r":{"docs":{},"c":{"docs":{},"/":{"docs":{},"l":{"docs":{},"i":{"docs":{},"b":{"docs":{},"/":{"docs":{},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{},"a":{"docs":{},"l":{"docs":{},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"a":{"docs":{},"/":{"docs":{},"e":{"docs":{},"m":{"docs":{},"a":{"docs":{},"i":{"docs":{},"l":{"docs":{},".":{"docs":{},"j":{"docs":{},"s":{"docs":{},"启":{"docs":{},"动":{"docs":{},"和":{"docs":{},"定":{"docs":{},"时":{"docs":{},"邮":{"docs":{},"箱":{"docs":{},"地":{"docs":{},"址":{"docs":{},"输":{"docs":{},"入":{"docs":{},"可":{"docs":{},"以":{"docs":{},"自":{"docs":{},"动":{"docs":{},"下":{"docs":{},"拉":{"docs":{},"匹":{"docs":{},"配":{"docs":{},"。":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"”":{"docs":{},"正":{"docs":{},"在":{"docs":{},"运":{"docs":{},"行":{"docs":{},"”":{"docs":{},"和":{"docs":{},"“":{"docs":{},"提":{"docs":{},"交":{"docs":{},"成":{"docs":{},"功":{"docs":{},"”":{"docs":{},"的":{"docs":{},"任":{"docs":{},"务":{"docs":{},",":{"docs":{},"对":{"docs":{},"”":{"docs":{},"正":{"docs":{},"在":{"docs":{},"运":{"docs":{},"行":{"docs":{},"”":{"docs":{},"的":{"docs":{},"任":{"docs":{},"务":{"docs":{},"监":{"docs":{},"控":{"docs":{},"其":{"docs":{},"任":{"docs":{},"务":{"docs":{},"实":{"docs":{},"例":{"docs":{},"的":{"docs":{},"状":{"docs":{},"态":{"docs":{},",":{"docs":{},"对":{"docs":{},"”":{"docs":{},"提":{"docs":{},"交":{"docs":{},"成":{"docs":{},"功":{"docs":{},"”":{"docs":{},"的":{"docs":{},"任":{"docs":{},"务":{"docs":{},"需":{"docs":{},"要":{"docs":{},"判":{"docs":{},"断":{"docs":{},"t":{"docs":{},"a":{"docs":{},"s":{"docs":{},"k":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"技":{"docs":{},"术":{"docs":{},"选":{"docs":{},"型":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}},"拖":{"docs":{},"拽":{"docs":{},"线":{"docs":{},"条":{"docs":{},"处":{"docs":{},"理":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}},"操":{"docs":{},"作":{"docs":{},"则":{"docs":{},"在":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}},"符":{"docs":{},"去":{"docs":{},"操":{"docs":{},"作":{"docs":{},"普":{"docs":{},"通":{"docs":{},"函":{"docs":{},"数":{"docs":{},"。":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}},"放":{"docs":{},"到":{"docs":{},"容":{"docs":{},"器":{"docs":{},"的":{"docs":{},"父":{"docs":{},"元":{"docs":{},"素":{"docs":{},"之":{"docs":{},"上":{"docs":{},"。":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}},"数":{"docs":{},"据":{"docs":{},"源":{"docs":{},"中":{"docs":{},"心":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}},"管":{"docs":{},"理":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}},"库":{"docs":{},"初":{"docs":{},"始":{"docs":{},"化":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}},"组":{"docs":{},"/":{"docs":{},"对":{"docs":{},"象":{"docs":{},"的":{"docs":{},"默":{"docs":{},"认":{"docs":{},"值":{"docs":{},"应":{"docs":{},"该":{"docs":{},"由":{"docs":{},"一":{"docs":{},"个":{"docs":{},"工":{"docs":{},"厂":{"docs":{},"函":{"docs":{},"数":{"docs":{},"返":{"docs":{},"回":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}}}}}}}}},"无":{"docs":{},"数":{"docs":{},"据":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}},"时":{"docs":{},"不":{"docs":{},"写":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}},"渲":{"docs":{},"染":{"docs":{},"效":{"docs":{},"率":{"docs":{},"更":{"docs":{},"高":{"docs":{},"。":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}},"显":{"docs":{},"示":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}},"权":{"docs":{},"限":{"docs":{},"操":{"docs":{},"作":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}},"根":{"docs":{},"据":{"docs":{},"后":{"docs":{},"端":{"docs":{},"接":{"docs":{},"口":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"i":{"docs":{},"n":{"docs":{},"f":{"docs":{},"o":{"docs":{},"接":{"docs":{},"口":{"docs":{},"给":{"docs":{},"出":{"docs":{},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"t":{"docs":{},"y":{"docs":{},"p":{"docs":{},"e":{"docs":{},":":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},",":{"docs":{},"而":{"docs":{},"且":{"docs":{},"是":{"docs":{},"免":{"docs":{},"密":{"docs":{},"的":{"docs":{},"。":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}},"标":{"docs":{},"准":{"docs":{},"。":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}},"签":{"docs":{},"冲":{"docs":{},"突":{"docs":{},",":{"docs":{},"并":{"docs":{},"且":{"docs":{},"结":{"docs":{},"构":{"docs":{},"更":{"docs":{},"加":{"docs":{},"清":{"docs":{},"晰":{"docs":{},"。":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}},"记":{"docs":{},"中":{"docs":{},"对":{"docs":{},"大":{"docs":{},"小":{"docs":{},"写":{"docs":{},"是":{"docs":{},"不":{"docs":{},"敏":{"docs":{},"感":{"docs":{},"的":{"docs":{},",":{"docs":{},"使":{"docs":{},"用":{"docs":{},"连":{"docs":{},"接":{"docs":{},"线":{"docs":{},"更":{"docs":{},"加":{"docs":{},"友":{"docs":{},"好":{"docs":{},";":{"docs":{},"而":{"docs":{},"在":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}}}}}}}}}}}}}},"样":{"docs":{},"式":{"docs":{},"后":{"docs":{},"续":{"docs":{},"都":{"docs":{},"是":{"docs":{},"打":{"docs":{},"包":{"docs":{},"在":{"docs":{},"一":{"docs":{},"个":{"docs":{},"文":{"docs":{},"件":{"docs":{},"里":{"docs":{},",":{"docs":{},"所":{"docs":{},"有":{"docs":{},"在":{"docs":{},"单":{"docs":{},"个":{"docs":{},"v":{"docs":{},"u":{"docs":{},"e":{"docs":{},"文":{"docs":{},"件":{"docs":{},"中":{"docs":{},"定":{"docs":{},"义":{"docs":{},"的":{"docs":{},"样":{"docs":{},"式":{"docs":{},",":{"docs":{},"在":{"docs":{},"别":{"docs":{},"的":{"docs":{},"文":{"docs":{},"件":{"docs":{},"里":{"docs":{},"同":{"docs":{},"类":{"docs":{},"名":{"docs":{},"的":{"docs":{},"样":{"docs":{},"式":{"docs":{},"也":{"docs":{},"是":{"docs":{},"会":{"docs":{},"生":{"docs":{},"效":{"docs":{},"的":{"docs":{},"所":{"docs":{},"有":{"docs":{},"在":{"docs":{},"创":{"docs":{},"建":{"docs":{},"一":{"docs":{},"个":{"docs":{},"组":{"docs":{},"件":{"docs":{},"前":{"docs":{},"都":{"docs":{},"会":{"docs":{},"有":{"docs":{},"个":{"docs":{},"顶":{"docs":{},"级":{"docs":{},"类":{"docs":{},"名":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"正":{"docs":{},"例":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.003500583430571762}}},"常":{"docs":{},"返":{"docs":{},"回":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}},"编":{"docs":{},"译":{"docs":{},"完":{"docs":{},"后":{"docs":{},",":{"docs":{},"会":{"docs":{},"在":{"docs":{},"当":{"docs":{},"前":{"docs":{},"目":{"docs":{},"录":{"docs":{},"生":{"docs":{},"成":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}}}},"每":{"docs":{},"个":{"docs":{},"路":{"docs":{},"由":{"docs":{},"对":{"docs":{},"应":{"docs":{},"的":{"docs":{},"页":{"docs":{},"面":{"docs":{},"都":{"docs":{},"有":{"docs":{},"一":{"docs":{},"个":{"docs":{},"状":{"docs":{},"态":{"docs":{},"管":{"docs":{},"理":{"docs":{},"的":{"docs":{},"文":{"docs":{},"件":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}}}}}}}},"一":{"docs":{},"个":{"docs":{},"*":{"docs":{},"*":{"docs":{},"业":{"docs":{},"务":{"docs":{},"节":{"docs":{},"点":{"docs":{},"*":{"docs":{},"*":{"docs":{},"都":{"docs":{},"可":{"docs":{},"以":{"docs":{},"配":{"docs":{},"置":{"docs":{},"失":{"docs":{},"败":{"docs":{},"重":{"docs":{},"试":{"docs":{},"的":{"docs":{},"次":{"docs":{},"数":{"docs":{},",":{"docs":{},"当":{"docs":{},"该":{"docs":{},"任":{"docs":{},"务":{"docs":{},"节":{"docs":{},"点":{"docs":{},"失":{"docs":{},"败":{"docs":{},",":{"docs":{},"会":{"docs":{},"自":{"docs":{},"动":{"docs":{},"重":{"docs":{},"试":{"docs":{},",":{"docs":{},"直":{"docs":{},"到":{"docs":{},"成":{"docs":{},"功":{"docs":{},"或":{"docs":{},"者":{"docs":{},"超":{"docs":{},"过":{"docs":{},"配":{"docs":{},"置":{"docs":{},"的":{"docs":{},"重":{"docs":{},"试":{"docs":{},"次":{"docs":{},"数":{"docs":{},"。":{"docs":{},"*":{"docs":{},"*":{"docs":{},"逻":{"docs":{},"辑":{"docs":{},"节":{"docs":{},"点":{"docs":{},"*":{"docs":{},"*":{"docs":{},"不":{"docs":{},"支":{"docs":{},"持":{"docs":{},"失":{"docs":{},"败":{"docs":{},"重":{"docs":{},"试":{"docs":{},"。":{"docs":{},"但":{"docs":{},"是":{"docs":{},"逻":{"docs":{},"辑":{"docs":{},"节":{"docs":{},"点":{"docs":{},"里":{"docs":{},"的":{"docs":{},"任":{"docs":{},"务":{"docs":{},"支":{"docs":{},"持":{"docs":{},"重":{"docs":{},"试":{"docs":{},"。":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"的":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206},"task-plugin-development.html":{"ref":"task-plugin-development.html","tf":0.038834951456310676}},"优":{"docs":{},"先":{"docs":{},"级":{"docs":{},"比":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}},"命":{"docs":{},"名":{"docs":{},"应":{"docs":{},"该":{"docs":{},"语":{"docs":{},"义":{"docs":{},"化":{"docs":{},",":{"docs":{},"通":{"docs":{},"过":{"docs":{},"看":{"docs":{},"名":{"docs":{},"字":{"docs":{},"就":{"docs":{},"知":{"docs":{},"道":{"docs":{},"是":{"docs":{},"干":{"docs":{},"嘛":{"docs":{},"的":{"docs":{},";":{"docs":{},"多":{"docs":{},"个":{"docs":{},"单":{"docs":{},"词":{"docs":{},"用":{"docs":{},"连":{"docs":{},"接":{"docs":{},"线":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"定":{"docs":{},"义":{"docs":{},"应":{"docs":{},"该":{"docs":{},"尽":{"docs":{},"量":{"docs":{},"详":{"docs":{},"细":{"docs":{},"的":{"docs":{},"指":{"docs":{},"定":{"docs":{},"其":{"docs":{},"类":{"docs":{},"型":{"docs":{},"、":{"docs":{},"默":{"docs":{},"认":{"docs":{},"值":{"docs":{},"和":{"docs":{},"验":{"docs":{},"证":{"docs":{},"。":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}}}}}}}}}}},"方":{"docs":{},"式":{"docs":{},"管":{"docs":{},"理":{"docs":{},"项":{"docs":{},"目":{"docs":{},"的":{"docs":{},"模":{"docs":{},"块":{"docs":{},"。":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}},"时":{"docs":{},"候":{"docs":{},"应":{"docs":{},"该":{"docs":{},"始":{"docs":{},"终":{"docs":{},"以":{"docs":{},"驼":{"docs":{},"峰":{"docs":{},"格":{"docs":{},"式":{"docs":{},"(":{"docs":{},"c":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"l":{"docs":{},"c":{"docs":{},"a":{"docs":{},"s":{"docs":{},"e":{"docs":{},")":{"docs":{},"命":{"docs":{},"名":{"docs":{},",":{"docs":{},"在":{"docs":{},"父":{"docs":{},"组":{"docs":{},"件":{"docs":{},"赋":{"docs":{},"值":{"docs":{},"的":{"docs":{},"时":{"docs":{},"候":{"docs":{},"使":{"docs":{},"用":{"docs":{},"连":{"docs":{},"接":{"docs":{},"线":{"docs":{},"(":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"目":{"docs":{},"录":{"docs":{},"下":{"docs":{},",":{"docs":{},"并":{"docs":{},"将":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0020222446916076846}}}}}}}},"配":{"docs":{},"置":{"docs":{},"来":{"docs":{},"判":{"docs":{},"断":{"docs":{},"是":{"docs":{},"否":{"docs":{},"启":{"docs":{},"动":{"docs":{},"h":{"docs":{},"d":{"docs":{},"f":{"docs":{},"s":{"docs":{},",":{"docs":{},"如":{"docs":{},"果":{"docs":{},"启":{"docs":{},"动":{"docs":{},",":{"docs":{},"则":{"docs":{},"需":{"docs":{},"要":{"docs":{},"创":{"docs":{},"建":{"docs":{},"h":{"docs":{},"d":{"docs":{},"f":{"docs":{},"s":{"docs":{},"根":{"docs":{},"路":{"docs":{},"径":{"docs":{},",":{"docs":{},"并":{"docs":{},"将":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0020222446916076846}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"相":{"docs":{},"关":{"docs":{},"接":{"docs":{},"口":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.007001166861143524}},"路":{"docs":{},"径":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}},"示":{"docs":{},"例":{"docs":{},":":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}},"租":{"docs":{},"户":{"docs":{},"管":{"docs":{},"理":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}},"组":{"docs":{},"件":{"docs":{},"名":{"docs":{},"为":{"docs":{},"多":{"docs":{},"个":{"docs":{},"单":{"docs":{},"词":{"docs":{},",":{"docs":{},"并":{"docs":{},"且":{"docs":{},"用":{"docs":{},"连":{"docs":{},"接":{"docs":{},"线":{"docs":{},"(":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}}}}},"统":{"docs":{},"一":{"docs":{},"使":{"docs":{},"用":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}},"放":{"docs":{},"在":{"docs":{},"文":{"docs":{},"件":{"docs":{},"顶":{"docs":{},"部":{"docs":{},"。":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}},"节":{"docs":{},"点":{"docs":{},"组":{"docs":{},"件":{"docs":{},"内":{"docs":{},"部":{"docs":{},"所":{"docs":{},"用":{"docs":{},"到":{"docs":{},"公":{"docs":{},"共":{"docs":{},"的":{"docs":{},"组":{"docs":{},"件":{"docs":{},"都":{"docs":{},"在":{"docs":{},"_":{"docs":{},"s":{"docs":{},"o":{"docs":{},"u":{"docs":{},"r":{"docs":{},"c":{"docs":{},"e":{"docs":{},"下":{"docs":{},",":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"m":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},".":{"docs":{},"j":{"docs":{},"s":{"docs":{},"用":{"docs":{},"与":{"docs":{},"配":{"docs":{},"置":{"docs":{},"公":{"docs":{},"共":{"docs":{},"数":{"docs":{},"据":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"若":{"docs":{},"同":{"docs":{},"一":{"docs":{},"组":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}},"规":{"docs":{},"范":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}},"详":{"docs":{},"情":{"docs":{},":":{"docs":{},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},"s":{"docs":{},":":{"docs":{},"/":{"docs":{},"/":{"docs":{},"v":{"docs":{},"u":{"docs":{},"e":{"docs":{},"x":{"docs":{},".":{"docs":{},"v":{"docs":{},"u":{"docs":{},"e":{"docs":{},"j":{"docs":{},"s":{"docs":{},".":{"docs":{},"o":{"docs":{},"r":{"docs":{},"g":{"docs":{},"/":{"docs":{},"z":{"docs":{},"h":{"docs":{},"/":{"docs":{},"g":{"docs":{},"u":{"docs":{},"i":{"docs":{},"d":{"docs":{},"e":{"docs":{},"/":{"docs":{},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},".":{"docs":{},"h":{"docs":{},"t":{"docs":{},"m":{"docs":{},"l":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},".":{"docs":{},"h":{"docs":{},"t":{"docs":{},"m":{"docs":{},"l":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}},"m":{"docs":{},"u":{"docs":{},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},".":{"docs":{},"h":{"docs":{},"t":{"docs":{},"m":{"docs":{},"l":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}}},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},".":{"docs":{},"h":{"docs":{},"t":{"docs":{},"m":{"docs":{},"l":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"资":{"docs":{},"源":{"docs":{},"中":{"docs":{},"心":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}},"管":{"docs":{},"理":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.002333722287047841}}}}}},"路":{"docs":{},"由":{"docs":{},"和":{"docs":{},"状":{"docs":{},"态":{"docs":{},"管":{"docs":{},"理":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}},"地":{"docs":{},"址":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}},"对":{"docs":{},"应":{"docs":{},"的":{"docs":{},"页":{"docs":{},"面":{"docs":{},"文":{"docs":{},"件":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}},"对":{"docs":{},"应":{"docs":{},"组":{"docs":{},"件":{"docs":{},"入":{"docs":{},"口":{"docs":{},"文":{"docs":{},"件":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}},"指":{"docs":{},"向":{"docs":{},"页":{"docs":{},"面":{"docs":{},"目":{"docs":{},"录":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}},"管":{"docs":{},"理":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}},"连":{"docs":{},"接":{"docs":{},"。":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}},"线":{"docs":{},"插":{"docs":{},"件":{"docs":{},"库":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}},"逻":{"docs":{},"辑":{"docs":{},"控":{"docs":{},"制":{"docs":{},"中":{"docs":{},"的":{"docs":{},"元":{"docs":{},"素":{"docs":{},"逻":{"docs":{},"辑":{"docs":{},"相":{"docs":{},"同":{"docs":{},",":{"docs":{},"v":{"docs":{},"u":{"docs":{},"e":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}}}}},"遍":{"docs":{},"历":{"docs":{},"的":{"docs":{},"时":{"docs":{},"候":{"docs":{},",":{"docs":{},"总":{"docs":{},"是":{"docs":{},"应":{"docs":{},"该":{"docs":{},"带":{"docs":{},"上":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}},"都":{"docs":{},"会":{"docs":{},"注":{"docs":{},"册":{"docs":{},"进":{"docs":{},"来":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}},"是":{"docs":{},"以":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}},"里":{"docs":{},"的":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.003500583430571762}}}},"页":{"docs":{},"面":{"docs":{},"文":{"docs":{},"件":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}},"首":{"docs":{},"先":{"docs":{},"在":{"docs":{},"路":{"docs":{},"由":{"docs":{},"管":{"docs":{},"理":{"docs":{},"增":{"docs":{},"加":{"docs":{},"一":{"docs":{},"个":{"docs":{},"路":{"docs":{},"由":{"docs":{},"地":{"docs":{},"址":{"docs":{},"s":{"docs":{},"r":{"docs":{},"c":{"docs":{},"/":{"docs":{},"j":{"docs":{},"s":{"docs":{},"/":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{},"/":{"docs":{},"h":{"docs":{},"o":{"docs":{},"m":{"docs":{},"e":{"docs":{},"/":{"docs":{},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"/":{"docs":{},"i":{"docs":{},"n":{"docs":{},"d":{"docs":{},"e":{"docs":{},"x":{"docs":{},".":{"docs":{},"j":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"页":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}},"验":{"docs":{},"证":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}},"函":{"docs":{},"数":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}},"成":{"docs":{},"功":{"docs":{},"后":{"docs":{},"讲":{"docs":{},"当":{"docs":{},"前":{"docs":{},"组":{"docs":{},"件":{"docs":{},"的":{"docs":{},"相":{"docs":{},"关":{"docs":{},"数":{"docs":{},"据":{"docs":{},"往":{"docs":{},"父":{"docs":{},"组":{"docs":{},"件":{"docs":{},"抛":{"docs":{},"。":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}}}}}}}}}}}}}}},"高":{"docs":{},"性":{"docs":{},"能":{"docs":{},"的":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}},"默":{"docs":{},"认":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}},"鼠":{"docs":{},"标":{"docs":{},"缩":{"docs":{},"放":{"docs":{},"效":{"docs":{},"果":{"docs":{},"处":{"docs":{},"理":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}}},")":{"docs":{},"。":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}},"连":{"docs":{},"接":{"docs":{},",":{"docs":{},"避":{"docs":{},"免":{"docs":{},"与":{"docs":{"frontend-development.html":{"ref":"frontend-development.html","tf":0.0011668611435239206}}}}}}}}},"三":{"docs":{},"、":{"docs":{},"线":{"docs":{},"程":{"docs":{},"不":{"docs":{},"足":{"docs":{},"循":{"docs":{},"环":{"docs":{},"等":{"docs":{},"待":{"docs":{},"问":{"docs":{},"题":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}},"也":{"docs":{},"是":{"docs":{},"一":{"docs":{},"个":{"docs":{},"单":{"docs":{},"独":{"docs":{},"的":{"docs":{},"流":{"docs":{},"程":{"docs":{},"定":{"docs":{},"义":{"docs":{},",":{"docs":{},"是":{"docs":{},"可":{"docs":{},"以":{"docs":{},"单":{"docs":{},"独":{"docs":{},"启":{"docs":{},"动":{"docs":{},"执":{"docs":{},"行":{"docs":{},"的":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}},"于":{"docs":{},"是":{"docs":{},"我":{"docs":{},"们":{"docs":{},"选":{"docs":{},"择":{"docs":{},"了":{"docs":{},"第":{"docs":{},"三":{"docs":{},"种":{"docs":{},"方":{"docs":{},"式":{"docs":{},"来":{"docs":{},"解":{"docs":{},"决":{"docs":{},"线":{"docs":{},"程":{"docs":{},"不":{"docs":{},"足":{"docs":{},"的":{"docs":{},"问":{"docs":{},"题":{"docs":{},"。":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}}},"五":{"docs":{},"、":{"docs":{},"任":{"docs":{},"务":{"docs":{},"优":{"docs":{},"先":{"docs":{},"级":{"docs":{},"设":{"docs":{},"计":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}},"介":{"docs":{},"于":{"docs":{},"考":{"docs":{},"虑":{"docs":{},"到":{"docs":{},"尽":{"docs":{},"可":{"docs":{},"能":{"docs":{},"的":{"docs":{},"e":{"docs":{},"a":{"docs":{},"s":{"docs":{},"y":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"的":{"docs":{},"轻":{"docs":{},"量":{"docs":{},"级":{"docs":{},"性":{"docs":{},",":{"docs":{},"所":{"docs":{},"以":{"docs":{},"选":{"docs":{},"择":{"docs":{},"了":{"docs":{},"g":{"docs":{},"r":{"docs":{},"p":{"docs":{},"c":{"docs":{},"实":{"docs":{},"现":{"docs":{},"远":{"docs":{},"程":{"docs":{},"访":{"docs":{},"问":{"docs":{},"日":{"docs":{},"志":{"docs":{},"信":{"docs":{},"息":{"docs":{},"。":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"全":{"docs":{},"称":{"docs":{},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}},"六":{"docs":{},"、":{"docs":{},"l":{"docs":{},"o":{"docs":{},"g":{"docs":{},"b":{"docs":{},"a":{"docs":{},"c":{"docs":{},"k":{"docs":{},"和":{"docs":{},"g":{"docs":{},"r":{"docs":{},"p":{"docs":{},"c":{"docs":{},"实":{"docs":{},"现":{"docs":{},"日":{"docs":{},"志":{"docs":{},"访":{"docs":{},"问":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}},"另":{"docs":{},"外":{"docs":{},"一":{"docs":{},"个":{"docs":{},"问":{"docs":{},"题":{"docs":{},"是":{"docs":{},"如":{"docs":{},"果":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"在":{"docs":{},"m":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"上":{"docs":{},",":{"docs":{},"虽":{"docs":{},"然":{"docs":{},"可":{"docs":{},"以":{"docs":{},"支":{"docs":{},"持":{"docs":{},"一":{"docs":{},"个":{"docs":{},"d":{"docs":{},"a":{"docs":{},"g":{"docs":{},"中":{"docs":{},"不":{"docs":{},"同":{"docs":{},"的":{"docs":{},"任":{"docs":{},"务":{"docs":{},"运":{"docs":{},"行":{"docs":{},"在":{"docs":{},"不":{"docs":{},"同":{"docs":{},"的":{"docs":{},"机":{"docs":{},"器":{"docs":{},"上":{"docs":{},",":{"docs":{},"但":{"docs":{},"是":{"docs":{},"会":{"docs":{},"产":{"docs":{},"生":{"docs":{},"m":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"的":{"docs":{},"过":{"docs":{},"负":{"docs":{},"载":{"docs":{},"。":{"docs":{},"如":{"docs":{},"果":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"在":{"docs":{},"s":{"docs":{},"l":{"docs":{},"a":{"docs":{},"v":{"docs":{},"e":{"docs":{},"上":{"docs":{},",":{"docs":{},"则":{"docs":{},"一":{"docs":{},"个":{"docs":{},"d":{"docs":{},"a":{"docs":{},"g":{"docs":{},"中":{"docs":{},"所":{"docs":{},"有":{"docs":{},"的":{"docs":{},"任":{"docs":{},"务":{"docs":{},"都":{"docs":{},"只":{"docs":{},"能":{"docs":{},"在":{"docs":{},"某":{"docs":{},"一":{"docs":{},"台":{"docs":{},"机":{"docs":{},"器":{"docs":{},"上":{"docs":{},"进":{"docs":{},"行":{"docs":{},"作":{"docs":{},"业":{"docs":{},"提":{"docs":{},"交":{"docs":{},",":{"docs":{},"则":{"docs":{},"并":{"docs":{},"行":{"docs":{},"任":{"docs":{},"务":{"docs":{},"比":{"docs":{},"较":{"docs":{},"多":{"docs":{},"的":{"docs":{},"时":{"docs":{},"候":{"docs":{},",":{"docs":{},"s":{"docs":{},"l":{"docs":{},"a":{"docs":{},"v":{"docs":{},"e":{"docs":{},"的":{"docs":{},"压":{"docs":{},"力":{"docs":{},"可":{"docs":{},"能":{"docs":{},"会":{"docs":{},"比":{"docs":{},"较":{"docs":{},"大":{"docs":{},"。":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"四":{"docs":{},"、":{"docs":{},"容":{"docs":{},"错":{"docs":{},"设":{"docs":{},"计":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}},"宕":{"docs":{},"机":{"docs":{},"容":{"docs":{},"错":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}},"容":{"docs":{},"错":{"docs":{},"分":{"docs":{},"为":{"docs":{},"服":{"docs":{},"务":{"docs":{},"宕":{"docs":{},"机":{"docs":{},"容":{"docs":{},"错":{"docs":{},"和":{"docs":{},"任":{"docs":{},"务":{"docs":{},"重":{"docs":{},"试":{"docs":{},",":{"docs":{},"服":{"docs":{},"务":{"docs":{},"宕":{"docs":{},"机":{"docs":{},"容":{"docs":{},"错":{"docs":{},"又":{"docs":{},"分":{"docs":{},"为":{"docs":{},"m":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"容":{"docs":{},"错":{"docs":{},"和":{"docs":{},"w":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{},"e":{"docs":{},"r":{"docs":{},"容":{"docs":{},"错":{"docs":{},"两":{"docs":{},"种":{"docs":{},"情":{"docs":{},"况":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"将":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}},"日":{"docs":{},"志":{"docs":{},"放":{"docs":{},"到":{"docs":{},"e":{"docs":{},"s":{"docs":{},"搜":{"docs":{},"索":{"docs":{},"引":{"docs":{},"擎":{"docs":{},"上":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}},".":{"docs":{},"e":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"_":{"docs":{},"e":{"docs":{},"n":{"docs":{},"v":{"docs":{},".":{"docs":{},"s":{"docs":{},"h":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0020222446916076846}}}}}}}}}}}}}}}}}}}}},"总":{"docs":{},"结":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}},"我":{"docs":{},"们":{"docs":{},"也":{"docs":{},"曾":{"docs":{},"经":{"docs":{},"基":{"docs":{},"于":{"docs":{},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"i":{"docs":{},"s":{"docs":{},"实":{"docs":{},"现":{"docs":{},"过":{"docs":{},"队":{"docs":{},"列":{"docs":{},",":{"docs":{},"不":{"docs":{},"过":{"docs":{},"我":{"docs":{},"们":{"docs":{},"希":{"docs":{},"望":{"docs":{},"e":{"docs":{},"a":{"docs":{},"s":{"docs":{},"y":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"依":{"docs":{},"赖":{"docs":{},"到":{"docs":{},"的":{"docs":{},"组":{"docs":{},"件":{"docs":{},"尽":{"docs":{},"量":{"docs":{},"地":{"docs":{},"少":{"docs":{},",":{"docs":{},"所":{"docs":{},"以":{"docs":{},"最":{"docs":{},"后":{"docs":{},"还":{"docs":{},"是":{"docs":{},"去":{"docs":{},"掉":{"docs":{},"了":{"docs":{},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"i":{"docs":{},"s":{"docs":{},"实":{"docs":{},"现":{"docs":{},"。":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"使":{"docs":{},"用":{"docs":{},"自":{"docs":{},"定":{"docs":{},"义":{"docs":{},"l":{"docs":{},"o":{"docs":{},"g":{"docs":{},"b":{"docs":{},"a":{"docs":{},"c":{"docs":{},"k":{"docs":{},"的":{"docs":{},"f":{"docs":{},"i":{"docs":{},"l":{"docs":{},"e":{"docs":{},"a":{"docs":{},"p":{"docs":{},"p":{"docs":{},"e":{"docs":{},"n":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},"和":{"docs":{},"f":{"docs":{},"i":{"docs":{},"l":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"功":{"docs":{},"能":{"docs":{},",":{"docs":{},"实":{"docs":{},"现":{"docs":{},"每":{"docs":{},"个":{"docs":{},"任":{"docs":{},"务":{"docs":{},"实":{"docs":{},"例":{"docs":{},"生":{"docs":{},"成":{"docs":{},"一":{"docs":{},"个":{"docs":{},"日":{"docs":{},"志":{"docs":{},"文":{"docs":{},"件":{"docs":{},"。":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"按":{"docs":{},"照":{"docs":{},"*":{"docs":{},"*":{"docs":{},"不":{"docs":{},"同":{"docs":{},"流":{"docs":{},"程":{"docs":{},"实":{"docs":{},"例":{"docs":{},"优":{"docs":{},"先":{"docs":{},"级":{"docs":{},"*":{"docs":{},"*":{"docs":{},"优":{"docs":{},"先":{"docs":{},"于":{"docs":{},"*":{"docs":{},"*":{"docs":{},"同":{"docs":{},"一":{"docs":{},"个":{"docs":{},"流":{"docs":{},"程":{"docs":{},"实":{"docs":{},"例":{"docs":{},"优":{"docs":{},"先":{"docs":{},"级":{"docs":{},"*":{"docs":{},"*":{"docs":{},"优":{"docs":{},"先":{"docs":{},"于":{"docs":{},"*":{"docs":{},"*":{"docs":{},"同":{"docs":{},"一":{"docs":{},"流":{"docs":{},"程":{"docs":{},"内":{"docs":{},"任":{"docs":{},"务":{"docs":{},"优":{"docs":{},"先":{"docs":{},"级":{"docs":{},"*":{"docs":{},"*":{"docs":{},"优":{"docs":{},"先":{"docs":{},"于":{"docs":{},"*":{"docs":{},"*":{"docs":{},"同":{"docs":{},"一":{"docs":{},"流":{"docs":{},"程":{"docs":{},"内":{"docs":{},"任":{"docs":{},"务":{"docs":{},"*":{"docs":{},"*":{"docs":{},"提":{"docs":{},"交":{"docs":{},"顺":{"docs":{},"序":{"docs":{},"依":{"docs":{},"次":{"docs":{},"从":{"docs":{},"高":{"docs":{},"到":{"docs":{},"低":{"docs":{},"进":{"docs":{},"行":{"docs":{},"任":{"docs":{},"务":{"docs":{},"处":{"docs":{},"理":{"docs":{},"。":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"提":{"docs":{},"供":{"docs":{},"任":{"docs":{},"务":{"docs":{},"队":{"docs":{},"列":{"docs":{},"的":{"docs":{},"操":{"docs":{},"作":{"docs":{},",":{"docs":{},"目":{"docs":{},"前":{"docs":{},"队":{"docs":{},"列":{"docs":{},"也":{"docs":{},"是":{"docs":{},"基":{"docs":{},"于":{"docs":{},"z":{"docs":{},"o":{"docs":{},"o":{"docs":{},"k":{"docs":{},"e":{"docs":{},"e":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"来":{"docs":{},"实":{"docs":{},"现":{"docs":{},"。":{"docs":{},"由":{"docs":{},"于":{"docs":{},"队":{"docs":{},"列":{"docs":{},"中":{"docs":{},"存":{"docs":{},"的":{"docs":{},"信":{"docs":{},"息":{"docs":{},"较":{"docs":{},"少":{"docs":{},",":{"docs":{},"不":{"docs":{},"必":{"docs":{},"担":{"docs":{},"心":{"docs":{},"队":{"docs":{},"列":{"docs":{},"里":{"docs":{},"数":{"docs":{},"据":{"docs":{},"过":{"docs":{},"多":{"docs":{},"的":{"docs":{},"情":{"docs":{},"况":{"docs":{},",":{"docs":{},"实":{"docs":{},"际":{"docs":{},"上":{"docs":{},"我":{"docs":{},"们":{"docs":{},"压":{"docs":{},"测":{"docs":{},"过":{"docs":{},"百":{"docs":{},"万":{"docs":{},"级":{"docs":{},"数":{"docs":{},"据":{"docs":{},"存":{"docs":{},"队":{"docs":{},"列":{"docs":{},",":{"docs":{},"对":{"docs":{},"系":{"docs":{},"统":{"docs":{},"稳":{"docs":{},"定":{"docs":{},"性":{"docs":{},"和":{"docs":{},"性":{"docs":{},"能":{"docs":{},"没":{"docs":{},"影":{"docs":{},"响":{"docs":{},"。":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"告":{"docs":{},"警":{"docs":{},"相":{"docs":{},"关":{"docs":{},"接":{"docs":{},"口":{"docs":{},",":{"docs":{},"接":{"docs":{},"口":{"docs":{},"主":{"docs":{},"要":{"docs":{},"包":{"docs":{},"括":{"docs":{},"告":{"docs":{},"警":{"docs":{},"两":{"docs":{},"种":{"docs":{},"类":{"docs":{},"型":{"docs":{},"的":{"docs":{},"告":{"docs":{},"警":{"docs":{},"数":{"docs":{},"据":{"docs":{},"的":{"docs":{},"存":{"docs":{},"储":{"docs":{},"、":{"docs":{},"查":{"docs":{},"询":{"docs":{},"和":{"docs":{},"通":{"docs":{},"知":{"docs":{},"功":{"docs":{},"能":{"docs":{},"。":{"docs":{},"其":{"docs":{},"中":{"docs":{},"通":{"docs":{},"知":{"docs":{},"功":{"docs":{},"能":{"docs":{},"又":{"docs":{},"有":{"docs":{},"邮":{"docs":{},"件":{"docs":{},"通":{"docs":{},"知":{"docs":{},"和":{"docs":{},"s":{"docs":{},"n":{"docs":{},"m":{"docs":{},"p":{"docs":{},"(":{"docs":{},"暂":{"docs":{},"未":{"docs":{},"实":{"docs":{},"现":{"docs":{},")":{"docs":{},"两":{"docs":{},"种":{"docs":{},"。":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"醒":{"docs":{},":":{"docs":{},"目":{"docs":{},"前":{"docs":{},"任":{"docs":{},"务":{"docs":{},"插":{"docs":{},"件":{"docs":{},"开":{"docs":{},"发":{"docs":{},"暂":{"docs":{},"不":{"docs":{},"支":{"docs":{},"持":{"docs":{},"热":{"docs":{},"部":{"docs":{},"署":{"docs":{"task-plugin-development.html":{"ref":"task-plugin-development.html","tf":0.009708737864077669}}}}}}}}}}}}}}}}}}}},"服":{"docs":{},"务":{"docs":{},"容":{"docs":{},"错":{"docs":{},"设":{"docs":{},"计":{"docs":{},"依":{"docs":{},"赖":{"docs":{},"于":{"docs":{},"z":{"docs":{},"o":{"docs":{},"o":{"docs":{},"k":{"docs":{},"e":{"docs":{},"e":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"的":{"docs":{},"w":{"docs":{},"a":{"docs":{},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"r":{"docs":{},"机":{"docs":{},"制":{"docs":{},",":{"docs":{},"实":{"docs":{},"现":{"docs":{},"原":{"docs":{},"理":{"docs":{},"如":{"docs":{},"图":{"docs":{},":":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"监":{"docs":{},"控":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}},"本":{"docs":{},"文":{"docs":{},"从":{"docs":{},"调":{"docs":{},"度":{"docs":{},"出":{"docs":{},"发":{"docs":{},",":{"docs":{},"初":{"docs":{},"步":{"docs":{},"介":{"docs":{},"绍":{"docs":{},"了":{"docs":{},"大":{"docs":{},"数":{"docs":{},"据":{"docs":{},"分":{"docs":{},"布":{"docs":{},"式":{"docs":{},"工":{"docs":{},"作":{"docs":{},"流":{"docs":{},"调":{"docs":{},"度":{"docs":{},"系":{"docs":{},"统":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}}}}}},"架":{"docs":{},"构":{"docs":{},"设":{"docs":{},"计":{"docs":{},"思":{"docs":{},"想":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}},"说":{"docs":{},"明":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}},"查":{"docs":{},"询":{"docs":{},"结":{"docs":{},"果":{"docs":{},"邮":{"docs":{},"件":{"docs":{},"发":{"docs":{},"送":{"docs":{},",":{"docs":{},"流":{"docs":{},"程":{"docs":{},"实":{"docs":{},"例":{"docs":{},"运":{"docs":{},"行":{"docs":{},"结":{"docs":{},"果":{"docs":{},"邮":{"docs":{},"件":{"docs":{},"告":{"docs":{},"警":{"docs":{},"及":{"docs":{},"容":{"docs":{},"错":{"docs":{},"告":{"docs":{},"警":{"docs":{},"通":{"docs":{},"知":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"看":{"docs":{},"目":{"docs":{},"录":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}},"流":{"docs":{},"程":{"docs":{},"失":{"docs":{},"败":{"docs":{},"恢":{"docs":{},"复":{"docs":{},"是":{"docs":{},"流":{"docs":{},"程":{"docs":{},"级":{"docs":{},"别":{"docs":{},"的":{"docs":{},",":{"docs":{},"是":{"docs":{},"手":{"docs":{},"动":{"docs":{},"进":{"docs":{},"行":{"docs":{},"的":{"docs":{},",":{"docs":{},"恢":{"docs":{},"复":{"docs":{},"是":{"docs":{},"从":{"docs":{},"只":{"docs":{},"能":{"docs":{},"*":{"docs":{},"*":{"docs":{},"从":{"docs":{},"失":{"docs":{},"败":{"docs":{},"的":{"docs":{},"节":{"docs":{},"点":{"docs":{},"开":{"docs":{},"始":{"docs":{},"执":{"docs":{},"行":{"docs":{},"*":{"docs":{},"*":{"docs":{},"或":{"docs":{},"*":{"docs":{},"*":{"docs":{},"从":{"docs":{},"当":{"docs":{},"前":{"docs":{},"节":{"docs":{},"点":{"docs":{},"开":{"docs":{},"始":{"docs":{},"执":{"docs":{},"行":{"docs":{},"*":{"docs":{},"*":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"重":{"docs":{},"跑":{"docs":{},"也":{"docs":{},"是":{"docs":{},"流":{"docs":{},"程":{"docs":{},"级":{"docs":{},"别":{"docs":{},"的":{"docs":{},",":{"docs":{},"是":{"docs":{},"手":{"docs":{},"动":{"docs":{},"进":{"docs":{},"行":{"docs":{},"的":{"docs":{},",":{"docs":{},"重":{"docs":{},"跑":{"docs":{},"是":{"docs":{},"从":{"docs":{},"开":{"docs":{},"始":{"docs":{},"节":{"docs":{},"点":{"docs":{},"进":{"docs":{},"行":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"目":{"docs":{},"前":{"docs":{},"支":{"docs":{},"持":{"docs":{},"有":{"docs":{},"s":{"docs":{},"h":{"docs":{},"e":{"docs":{},"l":{"docs":{},"l":{"docs":{},"、":{"docs":{},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{},"、":{"docs":{},"s":{"docs":{},"u":{"docs":{},"b":{"docs":{},"_":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"c":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},"、":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"c":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"r":{"docs":{},"e":{"docs":{},"、":{"docs":{},"m":{"docs":{},"r":{"docs":{},"、":{"docs":{},"s":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"k":{"docs":{},"、":{"docs":{},"p":{"docs":{},"y":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"n":{"docs":{},"、":{"docs":{},"d":{"docs":{},"e":{"docs":{},"p":{"docs":{},"e":{"docs":{},"n":{"docs":{},"d":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},",":{"docs":{},"同":{"docs":{},"时":{"docs":{},"计":{"docs":{},"划":{"docs":{},"支":{"docs":{},"持":{"docs":{},"动":{"docs":{},"态":{"docs":{},"插":{"docs":{},"件":{"docs":{},"扩":{"docs":{},"展":{"docs":{},",":{"docs":{},"注":{"docs":{},"意":{"docs":{},":":{"docs":{},"其":{"docs":{},"中":{"docs":{},"子":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"简":{"docs":{},"单":{"docs":{},"的":{"docs":{},"前":{"docs":{},"驱":{"docs":{},"和":{"docs":{},"后":{"docs":{},"继":{"docs":{},"节":{"docs":{},"点":{"docs":{},"之":{"docs":{},"间":{"docs":{},"的":{"docs":{},"依":{"docs":{},"赖":{"docs":{},",":{"docs":{},"同":{"docs":{},"时":{"docs":{},"还":{"docs":{},"提":{"docs":{},"供":{"docs":{},"*":{"docs":{},"*":{"docs":{},"任":{"docs":{},"务":{"docs":{},"依":{"docs":{},"赖":{"docs":{},"*":{"docs":{},"*":{"docs":{},"节":{"docs":{},"点":{"docs":{},",":{"docs":{},"支":{"docs":{},"持":{"docs":{},"*":{"docs":{},"*":{"docs":{},"流":{"docs":{},"程":{"docs":{},"间":{"docs":{},"的":{"docs":{},"自":{"docs":{},"定":{"docs":{},"义":{"docs":{},"任":{"docs":{},"务":{"docs":{},"依":{"docs":{},"赖":{"docs":{},"*":{"docs":{},"*":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"管":{"docs":{},"理":{"docs":{},"者":{"docs":{},"”":{"docs":{},"节":{"docs":{},"点":{"docs":{},"所":{"docs":{},"以":{"docs":{},"每":{"docs":{},"个":{"docs":{},"节":{"docs":{},"点":{"docs":{},"都":{"docs":{},"需":{"docs":{},"要":{"docs":{},"跟":{"docs":{},"其":{"docs":{},"他":{"docs":{},"节":{"docs":{},"点":{"docs":{},"通":{"docs":{},"信":{"docs":{},"才":{"docs":{},"得":{"docs":{},"到":{"docs":{},"必":{"docs":{},"须":{"docs":{},"要":{"docs":{},"的":{"docs":{},"机":{"docs":{},"器":{"docs":{},"信":{"docs":{},"息":{"docs":{},",":{"docs":{},"而":{"docs":{},"分":{"docs":{},"布":{"docs":{},"式":{"docs":{},"系":{"docs":{},"统":{"docs":{},"通":{"docs":{},"信":{"docs":{},"的":{"docs":{},"不":{"docs":{},"可":{"docs":{},"靠":{"docs":{},"行":{"docs":{},",":{"docs":{},"则":{"docs":{},"大":{"docs":{},"大":{"docs":{},"增":{"docs":{},"加":{"docs":{},"了":{"docs":{},"上":{"docs":{},"述":{"docs":{},"功":{"docs":{},"能":{"docs":{},"的":{"docs":{},"实":{"docs":{},"现":{"docs":{},"难":{"docs":{},"度":{"docs":{},"。":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"网":{"docs":{},"络":{"docs":{},"抖":{"docs":{},"动":{"docs":{},"”":{"docs":{},"可":{"docs":{},"能":{"docs":{},"会":{"docs":{},"使":{"docs":{},"得":{"docs":{},"节":{"docs":{},"点":{"docs":{},"短":{"docs":{},"时":{"docs":{},"间":{"docs":{},"内":{"docs":{},"失":{"docs":{},"去":{"docs":{},"和":{"docs":{},"z":{"docs":{},"o":{"docs":{},"o":{"docs":{},"k":{"docs":{},"e":{"docs":{},"e":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"的":{"docs":{},"心":{"docs":{},"跳":{"docs":{},",":{"docs":{},"从":{"docs":{},"而":{"docs":{},"发":{"docs":{},"生":{"docs":{},"节":{"docs":{},"点":{"docs":{},"的":{"docs":{},"r":{"docs":{},"e":{"docs":{},"m":{"docs":{},"o":{"docs":{},"v":{"docs":{},"e":{"docs":{},"事":{"docs":{},"件":{"docs":{},"。":{"docs":{},"对":{"docs":{},"于":{"docs":{},"这":{"docs":{},"种":{"docs":{},"情":{"docs":{},"况":{"docs":{},",":{"docs":{},"我":{"docs":{},"们":{"docs":{},"使":{"docs":{},"用":{"docs":{},"最":{"docs":{},"简":{"docs":{},"单":{"docs":{},"的":{"docs":{},"方":{"docs":{},"式":{"docs":{},",":{"docs":{},"那":{"docs":{},"就":{"docs":{},"是":{"docs":{},"节":{"docs":{},"点":{"docs":{},"一":{"docs":{},"旦":{"docs":{},"和":{"docs":{},"z":{"docs":{},"o":{"docs":{},"o":{"docs":{},"k":{"docs":{},"e":{"docs":{},"e":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"发":{"docs":{},"生":{"docs":{},"超":{"docs":{},"时":{"docs":{},"连":{"docs":{},"接":{"docs":{},",":{"docs":{},"则":{"docs":{},"直":{"docs":{},"接":{"docs":{},"将":{"docs":{},"m":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"或":{"docs":{},"w":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{},"e":{"docs":{},"r":{"docs":{},"服":{"docs":{},"务":{"docs":{},"停":{"docs":{},"掉":{"docs":{},"。":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"获":{"docs":{},"取":{"docs":{},"分":{"docs":{},"布":{"docs":{},"式":{"docs":{},"锁":{"docs":{},"的":{"docs":{},"核":{"docs":{},"心":{"docs":{},"流":{"docs":{},"程":{"docs":{},"算":{"docs":{},"法":{"docs":{},"如":{"docs":{},"下":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}},"表":{"docs":{},",":{"docs":{},"根":{"docs":{},"据":{"docs":{},"不":{"docs":{},"同":{"docs":{},"的":{"docs":{},"命":{"docs":{},"令":{"docs":{},"类":{"docs":{},"型":{"docs":{},"进":{"docs":{},"行":{"docs":{},"不":{"docs":{},"同":{"docs":{},"的":{"docs":{},"业":{"docs":{},"务":{"docs":{},"操":{"docs":{},"作":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}},"计":{"docs":{},"算":{"docs":{},"所":{"docs":{},"有":{"docs":{},"m":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"的":{"docs":{},"线":{"docs":{},"程":{"docs":{},"总":{"docs":{},"和":{"docs":{},",":{"docs":{},"然":{"docs":{},"后":{"docs":{},"对":{"docs":{},"每":{"docs":{},"一":{"docs":{},"个":{"docs":{},"d":{"docs":{},"a":{"docs":{},"g":{"docs":{},"需":{"docs":{},"要":{"docs":{},"计":{"docs":{},"算":{"docs":{},"其":{"docs":{},"需":{"docs":{},"要":{"docs":{},"的":{"docs":{},"线":{"docs":{},"程":{"docs":{},"数":{"docs":{},",":{"docs":{},"也":{"docs":{},"就":{"docs":{},"是":{"docs":{},"在":{"docs":{},"d":{"docs":{},"a":{"docs":{},"g":{"docs":{},"流":{"docs":{},"程":{"docs":{},"执":{"docs":{},"行":{"docs":{},"之":{"docs":{},"前":{"docs":{},"做":{"docs":{},"预":{"docs":{},"计":{"docs":{},"算":{"docs":{},"。":{"docs":{},"因":{"docs":{},"为":{"docs":{},"是":{"docs":{},"多":{"docs":{},"m":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"线":{"docs":{},"程":{"docs":{},"池":{"docs":{},",":{"docs":{},"所":{"docs":{},"以":{"docs":{},"总":{"docs":{},"线":{"docs":{},"程":{"docs":{},"数":{"docs":{},"不":{"docs":{},"太":{"docs":{},"可":{"docs":{},"能":{"docs":{},"实":{"docs":{},"时":{"docs":{},"获":{"docs":{},"取":{"docs":{},"。":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"该":{"docs":{},"服":{"docs":{},"务":{"docs":{},"内":{"docs":{},"主":{"docs":{},"要":{"docs":{},"包":{"docs":{},"含":{"docs":{},":":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}},"包":{"docs":{},"含":{"docs":{},":":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}},":":{"docs":{},"支":{"docs":{},"持":{"docs":{},"流":{"docs":{},"程":{"docs":{},"实":{"docs":{},"例":{"docs":{},"和":{"docs":{},"任":{"docs":{},"务":{"docs":{},"实":{"docs":{},"例":{"docs":{},"的":{"docs":{},"优":{"docs":{},"先":{"docs":{},"级":{"docs":{},",":{"docs":{},"如":{"docs":{},"果":{"docs":{},"流":{"docs":{},"程":{"docs":{},"实":{"docs":{},"例":{"docs":{},"和":{"docs":{},"任":{"docs":{},"务":{"docs":{},"实":{"docs":{},"例":{"docs":{},"的":{"docs":{},"优":{"docs":{},"先":{"docs":{},"级":{"docs":{},"不":{"docs":{},"设":{"docs":{},"置":{"docs":{},",":{"docs":{},"则":{"docs":{},"默":{"docs":{},"认":{"docs":{},"是":{"docs":{},"先":{"docs":{},"进":{"docs":{},"先":{"docs":{},"出":{"docs":{"architecture-design.html":{"ref":"architecture-design.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"必":{"docs":{},"装":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}},"选":{"docs":{},"装":{"docs":{},",":{"docs":{},"资":{"docs":{},"源":{"docs":{},"上":{"docs":{},"传":{"docs":{},",":{"docs":{},"m":{"docs":{},"r":{"docs":{},"任":{"docs":{},"务":{"docs":{},"提":{"docs":{},"交":{"docs":{},"需":{"docs":{},"要":{"docs":{},"安":{"docs":{},"装":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}}}}}}}},",":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}},"​":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.00910010111223458}}},"伪":{"docs":{},"分":{"docs":{},"布":{"docs":{},"式":{"docs":{},"部":{"docs":{},"署":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}},"修":{"docs":{},"改":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}},"为":{"docs":{},"部":{"docs":{},"署":{"docs":{},"用":{"docs":{},"户":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0020222446916076846}},",":{"docs":{},"否":{"docs":{},"则":{"docs":{},"忽":{"docs":{},"略":{"docs":{},"此":{"docs":{},"步":{"docs":{},"骤":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0020222446916076846}}}}}}}}}}}}}}},"配":{"docs":{},"置":{"docs":{},"文":{"docs":{},"件":{"docs":{},"和":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}},"因":{"docs":{},"为":{"docs":{},"e":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}},"并":{"docs":{},"且":{"docs":{},"需":{"docs":{},"要":{"docs":{},"注":{"docs":{},"释":{"docs":{},"掉":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}},"必":{"docs":{},"装":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}},"执":{"docs":{},"行":{"docs":{},"编":{"docs":{},"译":{"docs":{},"命":{"docs":{},"令":{"docs":{},":":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}},"方":{"docs":{},"式":{"docs":{},"来":{"docs":{},"执":{"docs":{},"行":{"docs":{},"作":{"docs":{},"业":{"docs":{},",":{"docs":{},"所":{"docs":{},"以":{"docs":{},"部":{"docs":{},"署":{"docs":{},"用":{"docs":{},"户":{"docs":{},"需":{"docs":{},"要":{"docs":{},"有":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}}}}},"法":{"docs":{},"中":{"docs":{},"解":{"docs":{},"析":{"docs":{},"自":{"docs":{},"定":{"docs":{},"义":{"docs":{},"任":{"docs":{},"务":{"docs":{},"参":{"docs":{},"数":{"docs":{"task-plugin-development.html":{"ref":"task-plugin-development.html","tf":0.009708737864077669}},"实":{"docs":{},"体":{"docs":{"task-plugin-development.html":{"ref":"task-plugin-development.html","tf":0.009708737864077669}}}}}}}}}}}}},",":{"docs":{},"解":{"docs":{},"析":{"docs":{},"自":{"docs":{},"定":{"docs":{},"义":{"docs":{},"任":{"docs":{},"务":{"docs":{},"参":{"docs":{},"数":{"docs":{},"实":{"docs":{},"体":{"docs":{"task-plugin-development.html":{"ref":"task-plugin-development.html","tf":0.009708737864077669}}}}}}}}}}}}}}},"实":{"docs":{},"现":{"docs":{},"业":{"docs":{},"务":{"docs":{},"逻":{"docs":{},"辑":{"docs":{},"并":{"docs":{},"设":{"docs":{},"置":{"docs":{},"相":{"docs":{},"应":{"docs":{},"的":{"docs":{},"e":{"docs":{},"x":{"docs":{},"i":{"docs":{},"t":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{},"u":{"docs":{},"s":{"docs":{},"c":{"docs":{},"o":{"docs":{},"d":{"docs":{"task-plugin-development.html":{"ref":"task-plugin-development.html","tf":0.009708737864077669}}}}}}}}}}}}}}}}}}}}}}}}}}},",":{"docs":{},"第":{"docs":{},"一":{"docs":{},"个":{"docs":{},"参":{"docs":{},"数":{"docs":{},"传":{"docs":{},"入":{"docs":{},"自":{"docs":{},"己":{"docs":{},"的":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"m":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{},",":{"docs":{},"第":{"docs":{},"二":{"docs":{},"个":{"docs":{},"参":{"docs":{},"数":{"docs":{},"传":{"docs":{},"入":{"docs":{"task-plugin-development.html":{"ref":"task-plugin-development.html","tf":0.009708737864077669}}}}}}}}}}}}}}}}}}}}}}}}}}},"调":{"docs":{},"用":{"docs":{"task-plugin-development.html":{"ref":"task-plugin-development.html","tf":0.009708737864077669}}}}}}},"日":{"docs":{},"志":{"docs":{},"查":{"docs":{},"看":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}},"统":{"docs":{},"一":{"docs":{},"存":{"docs":{},"放":{"docs":{},"于":{"docs":{},"指":{"docs":{},"定":{"docs":{},"文":{"docs":{},"件":{"docs":{},"夹":{"docs":{},"内":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}},"根":{"docs":{},"据":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.003033367037411527}}}},"说":{"docs":{},"明":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}},":":{"docs":{},"在":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}},"配":{"docs":{},"置":{"docs":{},"文":{"docs":{},"件":{"docs":{},"位":{"docs":{},"于":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.003033367037411527}}}}}}}}}}},"账":{"docs":{},"号":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}},"选":{"docs":{},"装":{"docs":{},",":{"docs":{},"h":{"docs":{},"i":{"docs":{},"v":{"docs":{},"e":{"docs":{},"任":{"docs":{},"务":{"docs":{},"提":{"docs":{},"交":{"docs":{},"需":{"docs":{},"要":{"docs":{},"安":{"docs":{},"装":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}},"p":{"docs":{},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{},"g":{"docs":{},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}},"s":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"k":{"docs":{},"任":{"docs":{},"务":{"docs":{},"提":{"docs":{},"交":{"docs":{},"需":{"docs":{},"要":{"docs":{},"安":{"docs":{},"装":{"docs":{"backend-deploy.html":{"ref":"backend-deploy.html","tf":0.0010111223458038423}}}}}}}}}}}}}}}}}},"传":{"docs":{},"入":{"docs":{},"自":{"docs":{},"定":{"docs":{},"义":{"docs":{},"任":{"docs":{},"务":{"docs":{},"的":{"docs":{"task-plugin-development.html":{"ref":"task-plugin-development.html","tf":0.009708737864077669}}}}}}}}}},"封":{"docs":{},"装":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"m":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{"task-plugin-development.html":{"ref":"task-plugin-development.html","tf":0.009708737864077669}}}}}}}}},"了":{"docs":{},"任":{"docs":{},"务":{"docs":{},"的":{"docs":{},"信":{"docs":{},"息":{"docs":{},",":{"docs":{},"l":{"docs":{},"o":{"docs":{},"g":{"docs":{},"g":{"docs":{},"e":{"docs":{},"r":{"docs":{},"分":{"docs":{},"装":{"docs":{},"了":{"docs":{},"自":{"docs":{},"定":{"docs":{},"义":{"docs":{},"日":{"docs":{},"志":{"docs":{},"信":{"docs":{},"息":{"docs":{"task-plugin-development.html":{"ref":"task-plugin-development.html","tf":0.009708737864077669}}}}}}}}}}}}}}}}}}}}}}}}}}},"构":{"docs":{},"造":{"docs":{},"方":{"docs":{},"法":{"docs":{"task-plugin-development.html":{"ref":"task-plugin-development.html","tf":0.009708737864077669}},"中":{"docs":{},"实":{"docs":{},"例":{"docs":{},"化":{"docs":{"task-plugin-development.html":{"ref":"task-plugin-development.html","tf":0.009708737864077669}}}}}},"或":{"docs":{},"者":{"docs":{},"重":{"docs":{},"写":{"docs":{"task-plugin-development.html":{"ref":"task-plugin-development.html","tf":0.009708737864077669}}}}}},"调":{"docs":{},"度":{"docs":{"task-plugin-development.html":{"ref":"task-plugin-development.html","tf":0.009708737864077669}}}}}}}},"类":{"docs":{},"中":{"docs":{},"创":{"docs":{},"建":{"docs":{},"自":{"docs":{},"定":{"docs":{},"义":{"docs":{},"任":{"docs":{},"务":{"docs":{},"(":{"docs":{},"也":{"docs":{},"需":{"docs":{},"在":{"docs":{},"t":{"docs":{},"a":{"docs":{},"s":{"docs":{},"k":{"docs":{},"t":{"docs":{},"y":{"docs":{},"p":{"docs":{},"e":{"docs":{},"注":{"docs":{},"册":{"docs":{},"对":{"docs":{},"应":{"docs":{},"的":{"docs":{},"任":{"docs":{},"务":{"docs":{},"类":{"docs":{},"型":{"docs":{},")":{"docs":{"task-plugin-development.html":{"ref":"task-plugin-development.html","tf":0.009708737864077669}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"继":{"docs":{},"承":{"docs":{"task-plugin-development.html":{"ref":"task-plugin-development.html","tf":0.02912621359223301}}}},"自":{"docs":{},"定":{"docs":{},"义":{"docs":{},"任":{"docs":{},"务":{"docs":{},"参":{"docs":{},"数":{"docs":{},"实":{"docs":{},"体":{"docs":{"task-plugin-development.html":{"ref":"task-plugin-development.html","tf":0.02912621359223301}}}}}},"插":{"docs":{},"件":{"docs":{},"文":{"docs":{},"档":{"docs":{"task-plugin-development.html":{"ref":"task-plugin-development.html","tf":10}}}}}}}}}}}},"length":1743},"corpusTokens":["!(['success',","\"","\"#\"","\"$1\"","\"admin_user/general_user\"权限控制页面操作按钮是否dis","\"false\"","\"test\",","\"upgrade\";","\"usage:","\"zookeeper\"","#","#!/bin/bash","###","####","#####","######","#============================================================================","#access_log","#alert","#ccc;","#charset","#check","#default","#dev_host","#error_pag","#eschedul","#execut","#resource.view.suffix","#resourcemanag","#task","#the","#zookeep","$(cat","$0","$host;","$http_upgrade;","$pidf)","$prog","$proxy_add_x_forwarded_for;","$remote_addr;","${节点类型(小写)}.vue","&","&&","'#2fbfd8'","'#5101be',","'',","'',","'./lib'","'/test',","'dependent',","'dependent':","'fail'].indexof(v)","'page","'pointer',","'test',","'waitting_depend':","'{password}';","'{user}'@'%'","'{user}'@'localhost'","'后除'","'成就你我'","(!this.$refs.refds._verifdatasource())","(!this.$refs.reflocalparams._verifprop())","(!this.method)","()","(1","(1)","(2","(2)","(3)","(4)","(5.5+)","(let","(start|stop|restart|reload)\"","(v)","({name,","(启动后访问地址","(打包后根目录会创建一个名为dist文件夹,用于发布线上nginx)","(注意版本","*","*)","**dag**","**quartz**","**sql任务**","**sub_process**","**两种命令类型是由调度内部控制使用,外部无法调用","**任务实例**:任务实例是流程定义中任务节点的实例化,标识着具体的任务执行状态","**任务类型**:","**优先级**","**依赖**:系统不单单支持","**失败策略**:对于并行运行的任务,如果有任务失败,提供两种失败策略处理方式,**继续**是指不管并行运行任务的状态,直到流程失败结束。**结束**是指一旦发现失败任务,则同时kill掉正在运行的并行任务,流程失败结束","**定时调度**:系统采用","**恢复等待线程","**恢复被容错的工作流**","**流程定义**:通过拖拽任务节点并建立任务节点的关联所形成的可视化**dag**","**流程实例**:流程实例是流程定义的实例化,可以通过手动启动或定时调度生成","**补数**:补历史数据,支持**区间并行和串行**两种补数方式","**调度方式:**","**邮件告警**:支持","*/","+","+x",",","...","./bin/arklift","./configur","./configure:",".escheduler_env.sh",".test","/","/**","//","//单独安装node","//后端定义状态类型","/404.html;","/50x.html","/50x.html;","/data2_4t/escheduler_front/escheduler/serv","/data2_4t/escheduler_front/escheduler/server;","/data2_4t/escheduler_front/escheduler/server(服务器静态页面存放目录)","/dev/cdrom","/eschedul","/etc/init.d/nginx","/etc/nginx/conf.d/default.conf","/etc/nginx/nginx.conf","/etc/sudo","/etc/yum.repos.d/yum.repo","/mnt/","/sbin/nologin","/usr/local/bin/","/usr/local/bin/nginx","/usr/local/nginx","/usr/local/nginx/conf/nginx.conf","/usr/local/nginx/sbin/nginx","/usr/share/nginx/html;","/usr/src/","/usr/src/nginx","/var/log/nginx/host.access.log","0","0,","0.0.0.0:*","0.0.0.0:80","07:24","0:关闭","1","1)","1.","1.10.1.tar.gz","1.1;","1.6.2.tar.gz","1.6.2/","1.6.2]#","1.var","1.名词解释","1.增加节点","1.标签","1.组件名","1/10,","1/6,","10","1024m","11,","12","12s;","192.168.6.132","1:关闭","1px","1px;","1}","1,创建部署用户","2","2)","2.1","2.2","2.3","2.6.32","2.任务失败重试","2.命名","2.增加状态类型","2.引号","2.系统架构","2.组件文件","20","200px;","20px;","2345","25","27","29","2:启用","2>&1","2}","2,根据实际需求来创建hdfs根路径","3","3)","3.prop","3.函数","3.增加一个路由页面","3.增加操作栏工具","3.属性缩写","30s;","3:启用","3}","3,项目编译","4.v","4.增加预置邮箱","4.对象","4.文档类型","404","431.el6.i686","4:启用","4s;","4})","4,修改配置文件","4,将环境变量文件复制到指定目录","5","5.v","5.权限管理及disabled状态处理","5.模块","5.注释","500","5000","502","503","504","510570367","5:启用","5,修改","5,创建目录并将环境变量文件复制到指定目录","6.0","6.指令缩写","60000","6810/nginx:","6:关闭","6,一键部署","6,启停服务","7.单文件组件的顶级元素顺序","8","8.9.4)","8888;#","99",":",":80",";;","=","===","=>",">","@author","@descript","@modul","[\"test@analysys.com.cn\",\"test1@analysys.com.cn\",\"test3@analysys.com.cn\"]","[base]","[key,","[root@cento","[root@nginx","_sourc","_source文件夹里。","_verif","_verification()","`${foo},前端工程师`","`${i18n.$t('test')}","`${i18n.$t('拖动节点和选中项')}`","`${i18n.$t('等待依赖')}`,","`http://localhost:8888/#/test`","`index.js`","`src/js/conf/${对应页面文件名","`src/sass/conf/${对应页面文件名","`src/view/${对应页面文件名","a:1","abstractparamet","abstracttask","abstractyarntask","action","acycl","add","airflow","alert","alert.properti","alert.type=email","all=(all)","an","analysi","anpt","api","api_bas","api向外部提供请求服务。","api接口层,主要负责处理前端ui层的请求。该服务统一提供rest","app","app.j","append","appli","application.properti","articl","articlestatus:","assembly:assembl","attra:","attre:","attribut","attrm:","attrz:","auto","avg","azkaban","b:","balanc","bar","base","baseurl=file:///mnt/packag","bashoperator、dummyoperator、mysqloperator、hiveoperator、emailoperator、httpoperator、sqloper","be","beforecreate()","beforedestroy()","beforemount()","beforeupdate()","between","big","bin","bind,v","boolean","border","border:","build","buildcommand","c","c\"选项来指定路径。","c++","c:","case","cc","cd","celeri","charact","check","chkconfig","chkconfig:","chmod","chown","class","clean","client_max_body_s","close","cluster","cn.escheduler.server.worker.task","cnpm","code:","code:0,","code:10000,","collat","color:","com.mysql.jdbc.driv","combo","combo具体查看build/combo.j","command","commit","common","common/common.properti","common/common.properties配置的escheduler.env.path","common/hadoop/hadoop.properti","compil","compon","component:","components:","computed:","concurr","condit","conditions.vu","conf","conf]#","config","configur","configuration,","connect","connection,","console.log(res)","const","const。任何一个变量的使用都要提前申明,除了","const,优先使用","content","control","copi","core","count","cpu","creat","created()","css","d","d3","daemon.sh","dag","dag监控界面","dag示例","dag:","dao","dao/data_source.properti","daofactory.getdaoinstance(processdao.class);","dao数据源配置","dask","data","data()","data.basedir.path=/tmp/eschedul","data.download.basedir.path=/tmp/escheduler/download","data.store2hdfs.basepath=/eschedul","data:{}","databas","datasourc","datasource:","db","decreases.","default","default:","default,否则不用。","desc","desc:","description:","destroy","destroyed()","detect","devel","develop","development.state=fals","dir,","dirctori","directori","directory.","disable,","disable:","disabled处理:src/js/module/mixin/disabledstate.j","distribut","dmaven.test.skip=tru","dom","downchart.j","download","download.","dragzoom.j","dump","easi","easyschedul","easyscheduler`","easyscheduler上的用户可以通过租户和hadoop用户实现多对一或一对一的映射关系,这对大数据作业的调度是非常重要的。","easyscheduler中scheduler线程分布式锁实现流程图:","easyscheduler使用zookeeper分布式锁来实现同一时刻只有一台master执行scheduler,或者只有一台worker执行任务的提交。","easyscheduler的去中心化是master/worker注册到zookeeper中,实现master集群和worker集群无中心,并使用zookeeper分布式锁来选举其中的一台master或worker为“管理者”来执行任务。","easyscheduler的架构原理及实现思路。后续会补充","easyscheduler简介","echart","echo","ecmascript","effici","elink","email/sm","empti","enabl","enterpris","env","epel","equal","error","error:","error_pag","es6","esac","eschedul","escheduler.*","escheduler.env.path=/opt/.escheduler_env.sh","escheduler.env.pi","escheduler.env.py=/opt/escheduler_env.pi","escheduler.queue.impl=zookeep","escheduler:eschedul","escheduler_env.pi","escheduler项目前端技术栈","escheduler项目目录并执行","evict","evicted,","execut","executor水平扩展","exist","exit","exitstatuscod","export","extend","failov","fair","fals","fastest","fetchtaskthread主要负责不断从task","file","fileappend","fileappender主要实现如下:","filter","fine","flush","font","foo","forward","found","free","fs.defaultfs=hdfs://mycluster:8020","function","g","g.","gcc","gender}","getpersoninfo","getter","git@git.analysys.cn:analysys_changsha/escheduler.git","gpgcheck=0","grant","graph,简称dag。工作流中的task任务以有向无环图的形式组装起来,从入度为零的节点进行拓扑遍历,直到无后继节点为止。举例如下图:","greater","group=eschedul","h","ha","ha,","hadoop","hadoop(2.7.3)","hadoop_conf_dir=/opt/soft/hadoop/etc/hadoop","hadoop_home=\"/opt/soft/hadoop\"","hadoop_home=/opt/soft/hadoop","handl","ha额外要求","hdf","hdfs.startup.st","hdfs.startup.state=tru","header","header.vu","header{","heartbeat","help给出说明","hive(1.2.1)","hive_home=\"/opt/soft/hive\"","hive_home=/opt/soft/h","home}/index.html`","home}/index.scss`","home}`","host","html","html5","http","http://192.168.220.181:12345;","http://192.168.220.204:12345","http://localhost","http://localhost:8888/#/","http://localhost:8888/#/)","http://localhost:8888/#/datasource/list","http://localhost:8888/#/hom","http://localhost:8888/#/projects/list","http://localhost:8888/#/resource/fil","http://localhost:8888/#/security/ten","http://localhost:8888/#/user/account","http://nginx.org/download/nginx","http_flv_modul","http_gzip_static_modul","http_ssl_modul","http_stub_status_modul","https://nodejs.org/download/release/v8.9.4/","https://www.iconfont.cn","hup","i18n","i686","icon:","icounicode:","id","id:","identifi","idl","imag","implementation,","import","index","index.html","index.html;","init","instal","install.sh","interv","io","io请求封装","ip","iptabl","isspin:","issues,","item'","item.titl","java_home=\"/opt/soft/java\"","java_home=/opt/soft/java","javascript","javascript规范","jdbc:mysql://192.168.xx.xx:3306/escheduler?characterencoding=utf8&usessl=fals","jobstor","js","js/vue","json.parse(json.stringify(foo))","jsplumb","jsplumbhandle.j","kazoo","key","kill","killal","koi8","larger","less","lib","lib.j","limit","linux","list","listen","ll","ln","load","load,","load,memory,cpu在线查看","localhost;","localparam","localparams:","locat","lock","lodash","log","logger","logger)","logger);","loggerserver是一个rpc服务,提供日志分片查看、刷新和下载等功能","logs/","longer","longest","lrwxrwxrwx","m","mail","mail.passwd=xxxxxxx","mail.protocol=smtp","mail.sender=xxxxxxx","mail.server.host=smtp.exmail.qq.com","mail.server.port=25","main","main;","make","map([])","mapact","mapgett","mapmut","mapstat","master","master.exec.task.number=20","master.exec.threads=100","master.heartbeat.interval=10","master.max.cpuload.avg=10","master.properti","master.reserved.memory=1","master.task.commit.interval=100","master.task.commit.retrytimes=5","masterexecthread主要是负责dag任务切分、任务提交监控、各种不同命令类型的逻辑处理","masterschedulerthread是一个扫描线程,定时扫描数据库中的","masterserv","masterserver服务启动时向zookeeper注册临时节点,通过监听zookeeper临时节点变化来进行容错处理。","masterserver采用分布式无中心设计理念,masterserver主要负责","mastertaskexecthread主要负责任务的持久化","master容错完成之后则重新由easyscheduler中scheduler线程调度,遍历","master容错流程图:","master的角色主要负责任务分发并监督slave的健康状态,可以动态的将任务均衡到slave上,以致slave节点不至于“忙死”或”闲死”的状态。","master配置文件","max","maxwait,","mazey","mazey/api","mazeydata","memori","memory,","meso","meta:","method:","methods:","millis,","millisecond","milliseconds.","min","minevictableidletimemillis.","mixin","mkdir","model","monitor_server.pi","mount","mounted()","mr、spark、sql(mysql、postgresql、hive、sparksql)、python、procedure、sub_process","msg:","msg:'失败'","msg:'成功'","mutat","mvn","mvvm框架","myd","mymap","mymap.entries())","mysql","mysql>","name.","name:","name=com.mysql.jdbc.driv","name=redhat","namenod","namenode,if","nav.vu","necessary,","need","netstat","new","nginx","nginx!","nginx!\"),可以确认nginx服务是否正常运行。","nginx:","nginx安装","nginx服务程序默认以nobody身份运行,建议为其创建专门的用户账号,以便更准确地控制其访问权限,增加灵活性、降低安全风险。如:创建一个名为nginx的用户,不建立宿主目录,也禁止登录到shell环境。","nginx的运行控制","nginx的配置及运行需要pcre、zlib等软件包的支持,因此应预先安装这些软件的开发包(devel),以便提供相应的库和头文件,确保nginx的安装顺利完成。","nginx程序的监听状态,或者在浏览器中访问此web服务(默认页面将显示\"welcom","node","node_modul","node包下载","node安装","nohup","nohup.out","nopasswd:","note","npm","null,","num","number","number,","object,","object.assign(foo,","ok","on","on并没有什么不好,这里仅为了统一规范。","open","openssl","org.quartz.datasource.myds.driv","org.quartz.datasource.myds.maxconnect","org.quartz.datasource.myds.password","org.quartz.datasource.myds.url","org.quartz.datasource.myds.us","org.quartz.datasource.myds.validationqueri","org.quartz.impl.jdbcjobstore.jobstoretx","org.quartz.impl.jdbcjobstore.stdjdbcdeleg","org.quartz.jobstore.class","org.quartz.jobstore.clustercheckininterv","org.quartz.jobstore.datasourc","org.quartz.jobstore.driverdelegateclass","org.quartz.jobstore.isclust","org.quartz.jobstore.misfirethreshold","org.quartz.jobstore.tableprefix","org.quartz.jobstore.useproperti","org.quartz.scheduler.instanceid","org.quartz.scheduler.instancenam","org.quartz.scheduler.makeschedulerthreaddaemon","org.quartz.simpl.simplethreadpool","org.quartz.threadpool.class","org.quartz.threadpool.makethreadsdaemon","org.quartz.threadpool.threadcount","org.quartz.threadpool.threadprior","os","os.putenv('path','%s'%path)","owner","packag","page","parallel","params',","path","path,","path,ne","path.","path:","path=\"%s/bin:%s/bin:%s/bin:%s/bin:%s/bin:%s/bin:%s\"%(hive_home,hadoop_home,spark_home1,spark_home2,java_home,python_home,path)","path=$hadoop_home/bin:$spark_home1/bin:$spark_home2/bin:$python_home/bin:$java_home/bin:$hive_home/bin:$path","path=/escheduler/","path=os.environ['path']","pcre","perform","perm","permiss","permissions。\"/escheduler\"","physic","pidf=\"/usr/local/nginx/logs/nginx.pid\"","pip","pleas","plugin","port","post","postgresql(8.2.15+)","prefix","prefix=/usr/local/nginx","privileg","privileges;","process","process.exec.basepath=/tmp/escheduler/exec","processdao,设置相应的","prog=\"/usr/local/nginx/sbin/nginx\"","promis","promise((resolve,","prop","properti","props,","props.getenvfile(),","props.gettaskappid(),","props.gettaskdir(),","props.gettaskdir();","props.gettaskstarttime(),","props.gettasktimeout(),","props.gettenantcode(),","props:","proxy_connect_timeout","proxy_http_vers","proxy_pass","proxy_read_timeout","proxy_send_timeout","proxy_set_head","pscach","pscache,","public","python","python_home=\"/opt/soft/python\"","python_home=/opt/soft/python","python任务","p{password}","qrtz_","quartz.properti","quartz分布式调度组件,主要负责定时任务的启停操作,当quartz调起任务后,master内部会有线程池具体负责处理任务的后续操作","queri","queue","queue中是否已经存在,如果存在则同样监控任务实例的状态,如果不存在则重新提交任务实例。","queue中领取任务,并根据不同任务类型调用taskschedulethread对应执行器。","quit","r","r;","read","real","recommend","redirect","registry=https://registry.npm.taobao.org","reject)","releas","reload)","remain","remote_addr","request","requir","require(['../pages/test/index'],","required:","requiretti","reserv","resolv","resolve({","resolve),","resourc","resource.view.suffixs=txt,log,sh,conf,cfg,py,java,sql,hql,xml","resourcemanag","resourcemanager,","respons","restart","restart)","retri","return","root","root@nginx","root安装","router","run","s","sass","sass依赖","sass文件","schedul","scheduler线程一旦发现任务实例为”","scheduler线程在获取command的时候是fifo的方式执行的。","script","second","select","self","serach.vu","server","server.context","server.log","server.max","server.port=12345","server.session.timeout=7200","server_nam","servic","session","set","setenforc","sex})","sh","shellcommandexecutor","shellcommandexecutor(this::loghandle,","shelltask(taskprop","shell、gobblin、hadoopjava、java、hive、pig、spark、hdfstoteradata、teradatatohdf","shell任务","singl","site.xml","size","size:","size=1024mb","size=5000000","solid","solid;","sourc","spark(1.x,2.x)","spark_home1=\"/opt/soft/spark1\"","spark_home1=/opt/soft/spark1","spark_home2=\"/opt/soft/spark2\"","spark_home2=/opt/soft/spark2","specifi","spring","spring.datasource.defaultautocommit=tru","spring.datasource.driv","spring.datasource.initialsize=5","spring.datasource.keepalive=tru","spring.datasource.maxactive=50","spring.datasource.maxpoolpreparedstatementperconnectionsize=20","spring.datasource.maxwait=60000","spring.datasource.minevictableidletimemillis=300000","spring.datasource.minidle=5","spring.datasource.password=xx","spring.datasource.poolpreparedstatements=tru","spring.datasource.testonborrow=tru","spring.datasource.testonreturn=fals","spring.datasource.testwhileidle=tru","spring.datasource.timebetweenconnecterrormillis=60000","spring.datasource.timebetweenevictionrunsmillis=60000","spring.datasource.type=com.alibaba.druid.pool.druiddatasourc","spring.datasource.url=jdbc:mysql://192.168.xx.xx:3306/escheduler?characterencoding=utf","spring.datasource.username=xx","spring.datasource.validationquery=select","spring.datasource.validationquerytimeout=3","spring.http.multipart.max","sql","sql任务和postgresql","src","src/js/conf/hom","src/js/conf/home/pages/dag/_source/config.j","src/js/conf/home/pages/dag/_source/dag.j","src/js/conf/home/pages/dag/_source/formmodel/task","src/js/conf/home/pages/dag/_source/plugin","src/js/conf/home/store/dag/actions.j","src/js/conf/home/store/datasource/actions.j","src/js/conf/home/store/projects/actions.j","src/js/conf/home/store/resource/actions.j","src/js/conf/home/store/security/actions.j","src/js/conf/home/store/user/actions.j","src/js/modul","src/js/module/components项目内部公共组件书写文件夹名与文件名同名,公共组件内部所拆分的子组件与util工具都放置组件内部","src/sass/common/_font.scss","start","start)","state","state?","statement.","static","statu","stop","stop)","store","string,","style:","subflowthread2等待subflowthread3结束,而subflowthread3等待线程池有新线程,则整个dag流程不能结束,从而其中的线程也不能释放。这样就形成的子父流程循环等待的状态。此时除非启动新的master来增加线程来打破这样的”僵局”,否则调度集群将不能再使用。","submit","success","sudo","super(props,","sure","syntax","system","systemctl","t","t\"选项用来对配置文件进行检查,以便找出不当或错误的配置。配置文件nginx.conf默认位于安装目录/usr/local/nginx/conf/目录中。若要检查位于其他位置的配置文件,可使用\"","tabl","tar","target/eschedul","task","tasklogappend","tasklogfilt","tasklogfilter实现如下:","taskmanag","taskprops和自定义logger,taskprop","tasksstat","taskstyp","tcp","test","test.","test.then(r","testonborrow,","testonreturn,","testwhileidl","text/css","text/javascript","th:first","this.$emit('on","this.$message.warning(`${i18n.$t('请输入方法')}`)","this.datasource,","this.localparam","this.method,","this.processdao","this.processtask","this.taskdir","this.type,","thread","threadpool","time","timeout,","titl","title:","toolbar_${后台定义的节点的英文名称","toolbarev","toolop","tooltip","tree和gantt","true","true.","type","type:","u","udf管理","ui","unfair","unit","unsaf","updated()","upgrad","upload","us","user","user=eschedul","useradd","user}","user和—group","useunfairlock","utf8","utf8_general_ci;","util","util.j","v","valid","validator:","valu","value]","var,而使用","vi","view","vim","vue","vue的路由器,在每个页面的入口文件index.j","vue规范","wait","watch:","way","web配置文件","wechat","welcom","wget","whether","width:","without","work.","worker","worker.exec.threads=100","worker.fetch.task.num","worker.heartbeat.interval=10","worker.max.cpuload.avg=10","worker.properti","worker.reserved.memory=1","workerserv","workerserver也采用分布式无中心设计理念,workerserver主要负责任务的执行和提供日志服务。workerserver服务启动时向zookeeper注册临时节点,并维持心跳。","worker容错流程图:","worker的角色主要负责任务的执行工作并维护和master的心跳,以便master可以分配任务给slave。","worker配置文件","write","x","x_real_ipp","xf","xl","xls.file.path=/opt/xl","xx","xxx","y","yarn.application.status.address=http://ark1:8088/ws/v1/cluster/apps/%","yarn.resourcemanager.ha.rm.ids=192.168.xx.xx,192.168.xx.xx","yum","zilb","zookeep","zookeeper(3.4.6)","zookeeper.connection.timeout=300","zookeeper.escheduler.dead.servers=/escheduler/dead","zookeeper.escheduler.lock.masters.failover=/escheduler/lock/failover/mast","zookeeper.escheduler.lock.masters=/escheduler/lock/mast","zookeeper.escheduler.lock.workers.failover=/escheduler/lock/failover/work","zookeeper.escheduler.lock.workers=/escheduler/lock/work","zookeeper.escheduler.masters=/escheduler/mast","zookeeper.escheduler.root=/eschedul","zookeeper.escheduler.workers=/escheduler/work","zookeeper.properti","zookeeper.quorum=192.168.xx.xx:2181,192.168.xx.xx:2181,192.168.xx.xx:2181","zookeeper.retry.maxtime=5","zookeeper.retry.sleep=1000","zookeeper.session.timeout=300","zookeeper服务,系统中的masterserver和workerserver节点都通过zookeeper来进行集群管理和容错。另外系统还基于zookeeper进行事件监听和分布式锁。","{","{...foo,","{a:","{a:1}","{b:","{db}","{host}","{linux","{name,","{user}","{version}/","{version}/conf","{version}/conf/env","{version}/sql/escheduler.sql和quartz.sql","{{","{}","{},","|","|grep","|——","}","})","},","}}","~]#","​","└──","├──","、、的顺序放置。","一、去中心化vs中心化","一个分布式易扩展的可视化dag工作流任务调度系统。致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用。","一个页面对应一个html文件","一个页面对应一个sass文件","一旦master出现了问题,则群龙无首,整个集群就会崩溃。为了解决这个问题,大多数master/slave架构模式都采用了主备master的设计方案,可以是热备或者冷备,也可以是自动切换或手动切换,而且越来越多的新系统都开始具备自动选举切换master的能力,以提升系统的可用性。","一种是业务节点,这种节点都对应一个实际的脚本或者处理语句,比如shell节点,mr节点、spark节点、依赖节点等。","一行","一键部署","一键部署脚本","三、线程不足循环等待问题","上传文件大小限制","上图中mainflowthread等待subflowthread1结束,subflowthread1等待subflowthread2结束,","下分为","下的","下的data.basedir.path、data.download.basedir.path和process.exec.basepath路径","下载组件","下面","不能直观区分任务类型","不需要(本身就支持ha)","与apache的主程序httpd类似,nginx的主程序也提供了\"","与同类调度系统的对比","两个环境变量文件复制到","两张图","中","中创建自定义任务","中变量的值,替换成自身业务所需的值","中心化思想","中心化思想设计存在的问题:","中心化的设计理念比较简单,分布式集群中的节点按照角色分工,大体上分为两种角色:","中更自然的是驼峰命名。","为","为了使nginx服务器的运行更加方便,可以为主程序nginx创建链接文件,以便管理员直接执行nginx命令就可以调用nginx的主程序。","为了使nginx服务的启动、停止、重载等操作更加方便,可以编写nginx服务脚本,并使用chkconfig和service工具来进行管理,也更加符合rhel系统的管理习惯。","为了更高效的元素切换,会复用相同的部分,例如:value。为了避免复用带来的不合理效果,应该在同种元素上加上","为了统一和便于阅读,应该按","为了统一规范始终使用指令缩写,使用v","主机器","主程序nginx支持标准的进程信号,通过kill或者killall命令传送","也是一个单独的流程定义,是可以单独启动执行的","事件中处理。","二、分布式锁实践","二次开发需要重新引入自己的库","于是我们选择了第三种方式来解决线程不足的问题。","五、任务优先级设计","介于考虑到尽可能的easyscheduler的轻量级性,所以选择了grpc实现远程访问日志信息。","代表的颜色主要用于","以/流程定义id/流程实例id/任务实例id.log的形式生成日志","以dag图的方式将task按照任务的依赖关系关联起来,可实时可视化监控任务的运行状态","任务切分、任务提交监控,并同时监听其它masterserver和workerserver的健康状态。","任务太多时会卡死服务器","任务失败重试是任务级别的,是调度系统自动进行的,比如一个shell任务设置重试次数为3次,那么在shell任务运行失败后会自己再最多尝试运行3次","任务实例","任务插件开发","任务状态、任务类型、重试次数、任务运行机器、可视化变量等关键信息一目了然","任务的优先级也分为5级,依次为highest、high、medium、low、lowest。如下图","任务类型","任务队列机制,单个机器上可调度的任务数量可以灵活配置,当任务过多时会缓存在任务队列中,不会造成机器卡死","传入自定义任务的","伪分布式部署","使用手册","使用部署用户","例如:shell}.png","修改","修改为部署用户","修改为部署用户,否则忽略此步骤","修改配置文件和","值使更新","做标识。","先将节点的icon小图标放置src/js/conf/home/pages/dag/img文件夹内,注意","入口","入口文件","全称direct","公共图片存放","公共模块及util","公共部分","公司内部组件(公司组件库开源后可删掉)","六、logback和grpc实现日志访问","其中master监控其他master和worker的目录,如果监听到remove事件,则会根据具体的业务逻辑进行流程实例容错或者任务实例容错。","其中流程定义的优先级是考虑到有些流程需要先于其他流程进行处理,这个可以在流程启动或者定时启动时配置,共有5级,依次为highest、high、medium、low、lowest。如下图","其主要目标如下:","具体实现是根据任务实例的json解析优先级,然后把**流程实例优先级_流程实例id_任务优先级_任务id**信息保存在zookeeper任务队列中,当从任务队列获取的时候,通过字符串比较即可得出最需要优先执行的任务","具体操作:https://router.vuejs.org/zh/","具体操作:https://vuex.vuejs.org/zh/","具体操作:src/js/module/permissions/index.j","内部项目公共组件","再拷贝到服务器","函数名统一使用驼峰命名,以大写字母开头申明的都是构造函数,使用小写字母开头的都是普通函数,也不该使用","函数管理","分为:","分布式调度器,并同时支持cron表达式可视化的生成","分布式部署","创建","创建db和账号","创建表","创建运行用户、组","创建部署用户","创建静态页面存放目录","别名","前端代理的接口地址","前端在开发环境(dev)中运行","前端定义id","前端开发文档","前端用作key值","前端部署文档","前端项目发布","前端项目构建","前端项目环境构建及编译","功能","匿名函数统一使用箭头函数,多个参数/返回值时优先使用对象的结构赋值。","单一调度程序","单个web和调度程序组合","单点故障","去中心化","去中心化的多master和多work","去中心化设计的核心设计在于整个分布式系统中不存在一个区别于其他节点的”管理者”,因此不存在单点故障问题。但由于不存在”","反例","另外一个问题是如果scheduler在master上,虽然可以支持一个dag中不同的任务运行在不同的机器上,但是会产生master的过负载。如果scheduler在slave上,则一个dag中所有的任务都只能在某一台机器上进行作业提交,则并行任务比较多的时候,slave的压力可能会比较大。","只能看到任务状态","可以转淘宝镜像命令行输入","可视化库图表库","可视化流程定义","号去掉","后台定义节点类型英文名称用作key值","后端部署文档","后续用作排序","否","启停alert","启停api","启停logger","启停master","启停worker","启动、停止nginx","启用","启用http_stub_status_module模块以支持状态统计","启用ssl模块","告警组管理","命令","命令,生成打包文件(dist)包","和","和各个其它机器ssh打通","四、容错设计","因为eschedul","国际化","图片下载处理","图表组件","在","在src/js/conf/home/pag","在去中心化设计里,通常没有master/slave的概念,所有的角色都是一样的,地位是平等的,全球互联网就是一个典型的去中心化的分布式系统,联网的任意节点设备down机,都只会影响很小范围的功能。","在同一个元素(例如:)上使用,因为","在对系统架构说明之前,我们先来认识一下调度系统常用的名词","在引用外部","在执行","在早期调度设计中,如果没有优先级设计,采用公平调度设计的话,会遇到先行提交的任务可能会和后继提交的任务同时完成的情况,而不能做到设置流程或者任务的优先级,因此我们对此进行了重新设计,目前我们设计如下:","在需要部署调度的机器上如上","基于axio","基于shell的任务","基于yarn的计算(参见mapreducetask)","基于非shell的任务(参见sqltask)","基于非yarn的计算(参见shelltask)","基础服务启动脚本","基础软件安装","增加一个","增加一种资源不足的command类型,如果线程池不足,则将主流程挂起。这样线程池就有了新的线程,可以让资源不足挂起的流程重新唤醒执行。","契合度","如上","如上进行","如果","如果一个dag中没有子流程,则如果command中的数据条数大于线程池设置的阈值,则直接流程等待或失败。","如果一个大的dag中嵌套了很多子流程,如下图则会产生“死等”状态:","如果工作流中有任务失败达到最大重试次数,工作流就会失败停止,失败的工作流可以手动进行重跑操作或者流程恢复操作","如果您需要用ip访问项目可以把","如果模块只有一个输出值,使用","子组件验证","字体图标","字体图标库可访问","存储","存储过程需要安装","安全中心","安装","安装epel源","安装nginx","安装及配置","宕机容错","定义","定义的函数可以随便放在任何位置。","定时器配置文件","实现集群ha,通过zookeeper实现master集群和worker集群去中心化","实用工具库","实际上,真正去中心化的分布式系统并不多见。反而动态中心化分布式系统正在不断涌出。在这种架构下,集群中的管理者是被动态选择出来的,而不是预置的,并且集群在发生故障的时候,集群的节点会自发的举行\"会议\"来选举新的\"管理者\"去主持工作。最典型的案例就是zookeeper及go语言实现的etcd。","容错分为服务宕机容错和任务重试,服务宕机容错又分为master容错和worker容错两种情况","对于启动新master来打破僵局,似乎有点差强人意,于是我们提出了以下三种方案来降低这种风险:","对单master线程池进行判断,如果线程池已经满了,则让线程直接失败。","对应的html文件则在","对应的sass文件则在","对象,往里增加","封装command","封装了任务的信息,logger分装了自定义日志信息","将","将.escheduler_env.sh","将日志放到es搜索引擎上","属于","属于节点组件内的必须拥有一个函数","属性。html5","属性尽量使用缩写,提高代码的效率和方便理解。","属性,所以没必要指定。","工作流","工作流定义","工作流实例","工具","工具图标","工具标识","工具类","工具类都以一个构造函数返回","帮助","并且需要注释掉","应该总是使用","应该给一个模块文件写一个区块注释。","应该避免与","建一个","建议不再使用","开发环境","开发环境node依赖包","当nginx进程运行时,pid号默认存放在logs/目录下的nginx.pid文件中,因此若改用kill命令,也可以根据nginx.pid文件中的pid号来进行控制。","形式返回","必装","快速部署","总结","我们也曾经基于redis实现过队列,不过我们希望easyscheduler依赖到的组件尽量地少,所以最后还是去掉了redis实现。","我们使用自定义logback的fileappender和filter功能,实现每个任务实例生成一个日志文件。","或","所有流程定义操作都是可视化的,通过拖拽任务来绘制dag,配置数据源及资源。同时对于第三方系统,提供api方式的操作。","所有的接口都以","所有页面入口文件在","打包及开发环境项目的一些webpack配置","执行编译命令:","扩展开发","扩展性","找到","找到src/lib/localdata/email.js启动和定时邮箱地址输入可以自动下拉匹配。","找到”正在运行”和“提交成功”的任务,对”正在运行”的任务监控其任务实例的状态,对”提交成功”的任务需要判断task","技术选型","报错的话:","拉取前端项目到本地","拉取项目依赖包","拖拽线条处理","指定nginx运行用户和组","按照**不同流程实例优先级**优先于**同一个流程实例优先级**优先于**同一流程内任务优先级**优先于**同一流程内任务**提交顺序依次从高到低进行任务处理。","接下来说正题,我们将工作流中的任务节点分了两种类型。","接口","接口包括工作流的创建、定义、查询、修改、发布、下线、手工启动、停止、暂停、恢复、从该节点开始执行等等。","接口地址","提供任务队列的操作,目前队列也是基于zookeeper来实现。由于队列中存的信息较少,不必担心队列里数据过多的情况,实际上我们压测过百万级数据存队列,对系统稳定性和性能没影响。","提供告警相关接口,接口主要包括告警两种类型的告警数据的存储、查询和通知功能。其中通知功能又有邮件通知和snmp(暂未实现)两种。","提醒:目前任务插件开发暂不支持热部署","操作则在","操作符去操作普通函数。","支持","支持丰富的任务类型:shell、mr、spark、sql(mysql、postgresql、hive、sparksql),python,sub_process、procedure等","支持任务日志在线查看及滚动、在线下载日志等","支持传统的shell任务,同时支持大数据平台任务调度:","支持国际化","支持多租户","支持大数据作业spark,hive,mr的调度,同时由于支持多租户,与大数据业务更加契合","支持对master/work","支持工作流优先级、任务优先级及任务的故障转移及任务超时告警/失败","支持工作流全局参数及节点自定义参数设置","支持工作流定时调度、依赖调度、手动调度、手动暂停/停止/恢复,同时支持失败重试/告警、从指定节点恢复失败、kill任务等操作","支持工作流运行历史树形/甘特图展示、支持任务状态统计、流程状态统计","支持暂停,恢复操作","支持补数","支持资源文件的在线上传/下载,管理等,支持在线文件创建、编辑","放到容器的父元素之上。","数据库初始化","数据源中心","数据源管理","数组/对象的默认值应该由一个工厂函数返回","文件","文件夹,在文件夹里建一个index.vue入口文件。","文件管理","文件,跟当前节点相关的组件内容都在这里写。","文档","方式来执行作业,所以部署用户需要有","方法中解析自定义任务参数","方法中解析自定义任务参数实体","方法中,解析自定义任务参数实体","方法实现业务逻辑并设置相应的exitstatuscod","方法,第一个参数传入自己的command,第二个参数传入","方法,调用","无数据","日志查看","日志统一存放于指定文件夹内","时不写","时渲染效率更高。","易用性","是","是否支持多租户","是否支持自定义任务类型","是否支持集群扩展","是否旋转(需代码判断)","是否禁用","是否能暂停和恢复","是,但是复杂","显示","更多文档请参考","更改上传大小","更高,为了避免无效计算和渲染,应该尽量将","服务容错设计依赖于zookeeper的watcher机制,实现原理如图:","服务监控","本文从调度出发,初步介绍了大数据分布式工作流调度系统","杀死进程","权限操作","权限根据后端接口getuserinfo接口给出usertype:","权限,而且是免密的。","构造方法","构造方法中实例化","构造方法或者重写","构造方法调度","架构设计思想","架构说明","查看目录","查询结果邮件发送,流程实例运行结果邮件告警及容错告警通知","标准。","标签冲突,并且结构更加清晰。","标记中对大小写是不敏感的,使用连接线更加友好;而在","样式后续都是打包在一个文件里,所有在单个vue文件中定义的样式,在别的文件里同类名的样式也是会生效的所有在创建一个组件前都会有个顶级类名","根据","正例","正常编译完后,会在当前目录生成","正常返回","每一个**业务节点**都可以配置失败重试的次数,当该任务节点失败,会自动重试,直到成功或者超过配置的重试次数。**逻辑节点**不支持失败重试。但是逻辑节点里的任务支持重试。","每个路由对应的页面都有一个状态管理的文件","注意非0都为错误走catch","注意:master","注意:在全部服务都启动之后启动","注意:字体库用的自己的","注意:由于”","注意:项目内已经增加了sass插件,单个vue文件里可以直接书写sass语法","注:配置前可以参考","流程失败恢复是流程级别的,是手动进行的,恢复是从只能**从失败的节点开始执行**或**从当前节点开始执行**","流程失败重跑也是流程级别的,是手动进行的,重跑是从开始节点进行","状态","状态管理","环境变量","环境变量配置","环境搭建","用于disabled操作","用命令行模式","用户中心","用户管理","由于web(ui)和worker不一定在同一台机器上,所以查看日志不能像查询本地文件那样。有两种方案:","由于不支持多租户,在大数据平台业务使用不够灵活","的","的优先级比","的命名应该语义化,通过看名字就知道是干嘛的;多个单词用连接线","的定义应该尽量详细的指定其类型、默认值和验证。","的方式管理项目的模块。","的时候应该始终以驼峰格式(camelcase)命名,在父组件赋值的时候使用连接线(","的目录下,并将","的配置来判断是否启动hdfs,如果启动,则需要创建hdfs根路径,并将","目前支持有shell、sql、sub_process、procedure、mr、spark、python、dependent,同时计划支持动态插件扩展,注意:其中子","直接运行nginx即可启动nginx服务器,这种方式将使用默认的配置文件,若要改用其他配置文件,需添加\"","相关接口","相关接口路径","示例:","租户管理","稳定性","等同于","简单的前驱和后继节点之间的依赖,同时还提供**任务依赖**节点,支持**流程间的自定义任务依赖**","管理者”节点所以每个节点都需要跟其他节点通信才得到必须要的机器信息,而分布式系统通信的不可靠行,则大大增加了上述功能的实现难度。","类中创建自定义任务(也需在tasktype注册对应的任务类型)","系统功能模块","系统支持基于cron表达式的定时调度和手动调度。命令类型支持:启动工作流、从当前节点开始执行、恢复被容错的工作流、恢复暂停流程、从失败节点开始执行、补数、调度、重跑、暂停、停止、恢复等待线程。其中","系统架构图","系统架构设计","系统的前端页面,提供系统的各种可视化操作界面,详见使用手册部分。","系统部分截图","组件名为多个单词,并且用连接线(","统一使用","统一放在文件顶部。","继承","编译","编译前配置","编译安装nginx","编辑配置文件","网络抖动”可能会使得节点短时间内失去和zookeeper的心跳,从而发生节点的remove事件。对于这种情况,我们使用最简单的方式,那就是节点一旦和zookeeper发生超时连接,则直接将master或worker服务停掉。","脚本一","脚本是监听,master和worker服务挂掉重启的脚本","自定义任务参数实体","自定义任务插件文档","节点组件内部所用到公共的组件都在_source下,commcon.js用与配置公共数据","若同一组","获取分布式锁的核心流程算法如下","表,根据不同的命令类型进行不同的业务操作","规范","解决方法","计算所有master的线程总和,然后对每一个dag需要计算其需要的线程数,也就是在dag流程执行之前做预计算。因为是多master线程池,所以总线程数不太可能实时获取。","设定nginx的安装目录","设计特点:","访问地址","访问端口","该服务内主要包含:","该服务包含:","详情:https://vuex.vuejs.org/zh/guide/actions.html","详情:https://vuex.vuejs.org/zh/guide/getters.html","详情:https://vuex.vuejs.org/zh/guide/mutations.html","详情:https://vuex.vuejs.org/zh/guide/state.html","说明","说明:在","说明:配置文件位于","调度器使用分布式调度,整体的调度能力会随便集群的规模线性增长,master和worker支持动态上下线","调度系统架构设计","调用","账号","资源中心","资源管理","路由和状态管理","路由地址","路由地址对应的页面文件","路由对应组件入口文件","路由指向页面目录","路由管理","过滤匹配以taskloginfo开始的线程名称:","过滤器和vue管道","过载处理","运行","还有一种是逻辑节点,这种节点不做实际的脚本或语句处理,只是整个流程流转的逻辑处理,比如子流程节等。","还有更多等待伙伴们探索","这样就可以直接访问","这样就可以通过nginx脚本来启动、停止、重启、重载nginx服务器了。","这里遵循每个语言的特性,因为在","这里首先要区分任务失败重试、流程失败恢复、流程失败重跑的概念:","进入","进行添加","连接。","连线插件库","退出进程","选装,hive任务提交需要安装","选装,postgresql","选装,spark任务提交需要安装","通用配置文件配置,队列选择及地址配置,通用文件目录配置","通过grpc通信获取远程日志信息","通过python代码来绘制dag,使用不便,特别是对不会写代码的业务人员基本无法使用。","通过检查","通过自定义dsl绘制dag并打包上传","速度非常慢","逻辑控制中的元素逻辑相同,vue","遍历的时候,总是应该带上","部署文档","部署用户是","都会注册进来","都是以","配置信息","配置文件","配置文件地址","配置文件说明","配置文件路径\"选项来指定路径。需要注意的是,若服务器中已安装有httpd等其他web服务软件,应采取措施(修改端口,停用或卸载)避免部突。","配置邮件告警信息","释放nginx源码包","里的","重写","重启","重启nginx服务","重载配置","错误","错误返回","错误,请在执行完后再次执行以下命令","问题","集群化部署复杂","集群启动、停止和服务监控启停脚本","需将工作流杀死再运行","需要在","需要容错”状态,则接管任务并进行重新提交。","需要继承cn.escheduler.server.worker.task","静态文件目录","页面文件","项目","项目git仓库地址","项目依赖jar包,包括各个模块jar和第三方jar","项目依赖sql文件","项目如果在拉取依赖包的过程中报","项目开发环境","项目所需文件","项目打包","项目根目录创建.env为后缀名的文件并输入","项目生产环境配置","项目目录结构","项目第三方资源本地化","项目管理","项目编译","项目配置文件","项目采用vue单页面应用(spa)开发","项目首页","首先在路由管理增加一个路由地址src/js/conf/home/router/index.j","首页","验证","验证函数","验证成功后讲当前组件的相关数据往父组件抛。","高性能的","默认","鼠标缩放效果处理","!!!这里特别注意",")。",")连接,避免与",":必装",":支持流程实例和任务实例的优先级,如果流程实例和任务实例的优先级不设置,则默认是先进先出",":选装,资源上传,mr任务提交需要安装"],"pipeline":["stopWordFilter","stemmer"]},"store":{"./":{"url":"./","title":"Easyscheduler简介","keywords":"","body":"Easy Scheduler\n\n\nEasy Scheduler for Big Data\n\n设计特点: 一个分布式易扩展的可视化DAG工作流任务调度系统。致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用。\n其主要目标如下:\n\n以DAG图的方式将Task按照任务的依赖关系关联起来,可实时可视化监控任务的运行状态\n支持丰富的任务类型:Shell、MR、Spark、SQL(mysql、postgresql、hive、sparksql),Python,Sub_Process、Procedure等\n支持工作流定时调度、依赖调度、手动调度、手动暂停/停止/恢复,同时支持失败重试/告警、从指定节点恢复失败、Kill任务等操作\n支持工作流优先级、任务优先级及任务的故障转移及任务超时告警/失败\n支持工作流全局参数及节点自定义参数设置\n支持资源文件的在线上传/下载,管理等,支持在线文件创建、编辑\n支持任务日志在线查看及滚动、在线下载日志等\n实现集群HA,通过Zookeeper实现Master集群和Worker集群去中心化\n支持对Master/Worker cpu load,memory,cpu在线查看\n支持工作流运行历史树形/甘特图展示、支持任务状态统计、流程状态统计\n支持补数\n支持多租户\n支持国际化\n还有更多等待伙伴们探索\n\n与同类调度系统的对比\n\ntable th:first-of-type {\n width: 200px;\n}\n\n\n\n\n\n\nEasyScheduler\nAzkaban\nAirflow\n\n\n\n\n稳定性\n\n\n\n\n\n单点故障\n去中心化的多Master和多Worker\n是 单个Web和调度程序组合\n是 单一调度程序\n\n\nHA额外要求\n不需要(本身就支持HA)\nDB\nCelery / Dask / Mesos + Load Balancer + DB\n\n\n过载处理\n任务队列机制,单个机器上可调度的任务数量可以灵活配置,当任务过多时会缓存在任务队列中,不会造成机器卡死\n任务太多时会卡死服务器\n任务太多时会卡死服务器\n\n\n易用性\n\n\n\n\n\nDAG监控界面\n任务状态、任务类型、重试次数、任务运行机器、可视化变量等关键信息一目了然\n只能看到任务状态\n不能直观区分任务类型\n\n\n可视化流程定义\n是 所有流程定义操作都是可视化的,通过拖拽任务来绘制DAG,配置数据源及资源。同时对于第三方系统,提供api方式的操作。\n否 通过自定义DSL绘制DAG并打包上传\n否 通过python代码来绘制DAG,使用不便,特别是对不会写代码的业务人员基本无法使用。\n\n\n快速部署\n一键部署\n集群化部署复杂\n集群化部署复杂\n\n\n功能\n\n\n\n\n\n是否能暂停和恢复\n支持暂停,恢复操作\n否 需将工作流杀死再运行\n否 需将工作流杀死再运行\n\n\n是否支持多租户\n支持 easyscheduler上的用户可以通过租户和hadoop用户实现多对一或一对一的映射关系,这对大数据作业的调度是非常重要的。\n否\n否\n\n\n任务类型\n支持传统的shell任务,同时支持大数据平台任务调度: MR、Spark、SQL(mysql、postgresql、hive、sparksql)、Python、Procedure、Sub_Process\nshell、gobblin、hadoopJava、java、hive、pig、spark、hdfsToTeradata、teradataToHdfs\nBashOperator、DummyOperator、MySqlOperator、HiveOperator、EmailOperator、HTTPOperator、SqlOperator\n\n\n契合度\n支持大数据作业spark,hive,mr的调度,同时由于支持多租户,与大数据业务更加契合\n由于不支持多租户,在大数据平台业务使用不够灵活\n由于不支持多租户,在大数据平台业务使用不够灵活\n\n\n扩展性\n\n\n\n\n\n是否支持自定义任务类型\n是\n是\n是\n\n\n是否支持集群扩展\n是 调度器使用分布式调度,整体的调度能力会随便集群的规模线性增长,Master和Worker支持动态上下线\n是,但是复杂 Executor水平扩展\n是,但是复杂 Executor水平扩展\n\n\n\n系统部分截图\n\n\n\n文档\n\n部署文档\n后端部署文档\n\n前端部署文档\n使用手册 \n更多文档请参考 XXX\n帮助\nThe fastest way to get response from our developers is to submit issues, or add our wechat : 510570367\n"},"frontend-deploy.html":{"url":"frontend-deploy.html","title":"环境搭建","keywords":"","body":"前端部署文档\n前端项目环境构建及编译\nEscheduler项目前端技术栈\nVue + es6 + Ans-ui + d3 + jsplumb + lodash\n开发环境\nNode\n\nnode安装\nNode包下载 (注意版本 8.9.4) https://nodejs.org/download/release/v8.9.4/ \n\n拉取前端项目到本地\n项目git仓库地址 git@git.analysys.cn:analysys_changsha/escheduler.git\n\n前端项目构建\n用命令行模式 cd 进入 escheduler项目目录并执行 npm install 拉取项目依赖包\n\n\n\n如果 npm install 速度非常慢 \n可以转淘宝镜像命令行输入 npm install -g cnpm --registry=https://registry.npm.taobao.org\n运行 cnpm install \n!!!这里特别注意 项目如果在拉取依赖包的过程中报 \" node-sass error \" 错误,请在执行完后再次执行以下命令\nnpm install node-sass --unsafe-perm //单独安装node-sass依赖\n\n项目根目录创建.env为后缀名的文件并输入\n# 前端代理的接口地址\nAPI_BASE = http://192.168.220.204:12345\n\n# 如果您需要用ip访问项目可以把 \"#\" 号去掉\n#DEV_HOST = 192.168.6.132\n运行\n\nnpm start 项目开发环境 (启动后访问地址 http://localhost:8888/#/)\n\nnpm run build 项目打包 (打包后根目录会创建一个名为dist文件夹,用于发布线上Nginx)\n\n\n安装及配置\n(1-1) Nginx安装\n安装 wget http://nginx.org/download/nginx-1.10.1.tar.gz \nNginx的配置及运行需要pcre、zlib等软件包的支持,因此应预先安装这些软件的开发包(devel),以便提供相应的库和头文件,确保Nginx的安装顺利完成。\n[root@nginx ~]# service iptables stop\n[root@nginx ~]# setenforce 0\n[root@nginx ~]# mount /dev/cdrom /mnt/\n[root@nginx ~]# vim /etc/yum.repos.d/yum.repo\n[base]\nname=RedHat Enterprise Linux Server\nbaseurl=file:///mnt/Packages\ngpgcheck=0\n[root@nginx ~]# yum -y install pcre-devel zilb-devel openssl-devel\n(1-2) 创建运行用户、组\nNginx服务程序默认以nobody身份运行,建议为其创建专门的用户账号,以便更准确地控制其访问权限,增加灵活性、降低安全风险。如:创建一个名为nginx的用户,不建立宿主目录,也禁止登录到shell环境。\n[root@nginx ~]# useradd -M -s /sbin/nologin escheduler\n(1-3) 编译安装nginx\n释放nginx源码包\n[root@nginx ~]# tar xf nginx-1.6.2.tar.gz -C /usr/src/\n编译前配置\n[root@nginx ~]# cd /usr/src/nginx-1.6.2/\n[root@nginx nginx-1.6.2]# ./configure --prefix=/usr/local/nginx --user=escheduler --group=escheduler --with-http_stub_status_module --with-http_ssl_module --with-http_flv_module --with-http_gzip_static_module\n注:配置前可以参考 ./configure --help给出说明\n--prefix 设定Nginx的安装目录\n--user和—group 指定Nginx运行用户和组\n--with-http_stub_status_module 启用http_stub_status_module模块以支持状态统计\n--with-http_ssl_module 启用SSL模块\n\n错误\n[root@centos nginx-1.6.2]# ./configure --prefix=/usr/local/nginx --user=escheduler --group=escheduler --with-http_stub_status_module --with-http_ssl_module --with-http_flv_module --with-http_gzip_static_module\nchecking for OS\n+ Linux 2.6.32-431.el6.i686 i686\nchecking for C compiler ... not found\n./configure: error: C compiler cc is not found\n解决方法\nyum -y install gcc gcc-c++\n\n编译 安装\n[root@nginx nginx-1.6.2]# make && make install\n为了使Nginx服务器的运行更加方便,可以为主程序nginx创建链接文件,以便管理员直接执行nginx命令就可以调用Nginx的主程序。\n[root@nginx nginx-1.6.2]# ln -s /usr/local/nginx/sbin/nginx /usr/local/bin/\n[root@nginx nginx-1.6.2]# ll /usr/local/bin/nginx \nlrwxrwxrwx 1 root root 27 12-29 07:24 /usr/local/bin/nginx -> /usr/local/nginx/sbin/nginx\nNginx的运行控制\n与Apache的主程序httpd类似,Nginx的主程序也提供了\"-t\"选项用来对配置文件进行检查,以便找出不当或错误的配置。配置文件nginx.conf默认位于安装目录/usr/local/nginx/conf/目录中。若要检查位于其他位置的配置文件,可使用\"-c\"选项来指定路径。\nroot@nginx conf]# nginx -t\nnginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok\nnginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful\n启动、停止Nginx\n直接运行nginx即可启动Nginx服务器,这种方式将使用默认的配置文件,若要改用其他配置文件,需添加\"-c 配置文件路径\"选项来指定路径。需要注意的是,若服务器中已安装有httpd等其他WEB服务软件,应采取措施(修改端口,停用或卸载)避免部突。\n[root@nginx conf]# chown -R escheduler:escheduler /usr/local/nginx\n\n/usr/local/nginx/conf/nginx.conf\n\n[root@nginx conf]# netstat -anpt |grep :80\n[root@nginx conf]# nginx\n[root@nginx conf]# netstat -anpt |grep :80\ntcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 6810/nginx: master\n通过检查 Nginx程序的监听状态,或者在浏览器中访问此WEB服务(默认页面将显示\"Welcome to nginx!\"),可以确认Nginx服务是否正常运行。\n[root@nginx ~]# yum -y install elinks\n[root@nginx ~]# elinks --dump http://localhost\n Welcome to nginx!\n主程序Nginx支持标准的进程信号,通过kill或者killall命令传送\nHUP 重载配置 等同于-1\nQUIT 退出进程 等同于-3\nKILL 杀死进程 \n[root@nginx ~]# killall -s HUP nginx\n[root@nginx ~]# killall -s QUIT nginx\n[root@nginx ~]# netstat -anpt |grep :80\n当Nginx进程运行时,PID号默认存放在logs/目录下的nginx.pid文件中,因此若改用kill命令,也可以根据nginx.pid文件中的PID号来进行控制。\n为了使Nginx服务的启动、停止、重载等操作更加方便,可以编写Nginx服务脚本,并使用chkconfig和service工具来进行管理,也更加符合RHEL系统的管理习惯。\n[root@nginx ~]# vim /etc/init.d/nginx\n脚本一\n#!/bin/bash\n# chkconfig: 2345 99 20\n# description: Nginx Server Control Script\nPROG=\"/usr/local/nginx/sbin/nginx\"\nPIDF=\"/usr/local/nginx/logs/nginx.pid\"\ncase \"$1\" in\nstart)\n $PROG\n;;\nstop)\n kill -s QUIT $(cat $PIDF)\n;;\nrestart)\n $0 stop\n $0 start\n;;\nreload)\n kill -s HUP $(cat $PIDF)\n;;\n*)\n echo \"Usage: $0 (start|stop|restart|reload)\"\n exit 1\nesac\nexit 0\n\n[root@nginx ~]# chmod +x /etc/init.d/nginx\n[root@nginx ~]# chkconfig --add nginx\n[root@nginx ~]# chkconfig nginx on\n[root@nginx ~]# chkconfig --list nginx \nnginx 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭\n报错的话: /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf\n这样就可以通过nginx脚本来启动、停止、重启、重载Nginx服务器了。\n(2-1) root安装\n安装epel源 yum install epel-release -y\n安装Nginx yum install nginx -y\n命令\n\n启用 systemctl enable nginx\n\n重启 systemctl restart nginx\n\n状态 systemctl status nginx\n\n\n项目生产环境配置\n\n创建静态页面存放目录\nmkdir /data2_4T/escheduler_front/escheduler/server\n配置文件地址\n/etc/nginx/conf.d/default.conf\n配置信息\nserver {\n listen 8888;# 访问端口\n server_name localhost;\n #charset koi8-r;\n #access_log /var/log/nginx/host.access.log main;\n location / {\n root /data2_4T/escheduler_front/escheduler/server; # 静态文件目录\n index index.html index.html;\n }\n location /escheduler {\n proxy_pass http://192.168.220.181:12345; # 接口地址\n proxy_set_header Host $host;\n proxy_set_header X-Real-IP $remote_addr;\n proxy_set_header x_real_ipP $remote_addr;\n proxy_set_header remote_addr $remote_addr;\n proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n proxy_http_version 1.1;\n proxy_connect_timeout 4s;\n proxy_read_timeout 30s;\n proxy_send_timeout 12s;\n proxy_set_header Upgrade $http_upgrade;\n proxy_set_header Connection \"upgrade\";\n }\n #error_page 404 /404.html;\n # redirect server error pages to the static page /50x.html\n #\n error_page 500 502 503 504 /50x.html;\n location = /50x.html {\n root /usr/share/nginx/html;\n }\n}\n重启Nginx服务\nsystemctl restart nginx\n\n前端项目发布\n前端在开发环境(dev)中运行 npm run build 命令,生成打包文件(dist)包\n再拷贝到服务器 /data2_4T/escheduler_front/escheduler/server(服务器静态页面存放目录)\n访问地址 http://localhost:8888/#/ \n问题\n1. 上传文件大小限制\n编辑配置文件 vi /etc/nginx/nginx.conf\n# 更改上传大小\nclient_max_body_size 1024m\n"},"frontend-development.html":{"url":"frontend-development.html","title":"项目目录结构","keywords":"","body":"前端开发文档\n技术选型\nVue mvvm框架\n\nEs6 ECMAScript 6.0\n\nAns-ui Analysys-ui\n\nD3 可视化库图表库\n\nJsplumb 连线插件库\n\nLodash 高性能的 JavaScript 实用工具库\n项目目录结构\nbuild 打包及开发环境项目的一些webpack配置\nnode_modules 开发环境node依赖包\nsrc 项目所需文件\nsrc => combo 项目第三方资源本地化 npm run combo具体查看build/combo.js\nsrc => font 字体图标库可访问 https://www.iconfont.cn 进行添加 注意:字体库用的自己的 二次开发需要重新引入自己的库 src/sass/common/_font.scss\nsrc => images 公共图片存放\nsrc => js js/vue\nsrc => lib 公司内部组件(公司组件库开源后可删掉)\nsrc => sass sass文件 一个页面对应一个sass文件\nsrc => view 页面文件 一个页面对应一个html文件\n> 项目采用vue单页面应用(SPA)开发\n- 所有页面入口文件在 `src/js/conf/${对应页面文件名 => home}` 的 `index.js` 入口文件\n- 对应的sass文件则在 `src/sass/conf/${对应页面文件名 => home}/index.scss`\n- 对应的html文件则在 `src/view/${对应页面文件名 => home}/index.html`\n公共模块及util src/js/module\ncomponents => 内部项目公共组件\ndownload => 下载组件\necharts => 图表组件\nfilter => 过滤器和vue管道\ni18n => 国际化\nio => io请求封装 基于axios\nmixin => vue mixin 公共部分 用于disabled操作\npermissions => 权限操作\nutil => 工具\n系统功能模块\n首页 => http://localhost:8888/#/home\n项目管理 => http://localhost:8888/#/projects/list\n| 项目首页\n| 工作流\n - 工作流定义\n - 工作流实例\n - 任务实例\n资源管理 => http://localhost:8888/#/resource/file\n| 文件管理\n| UDF管理\n - 资源管理\n - 函数管理\n数据源管理 => http://localhost:8888/#/datasource/list\n安全中心 => http://localhost:8888/#/security/tenant\n| 租户管理\n| 用户管理\n| 告警组管理\n - master\n - worker\n用户中心 => http://localhost:8888/#/user/account\n路由和状态管理\n项目 src/js/conf/home 下分为\npages => 路由指向页面目录\n 路由地址对应的页面文件\nrouter => 路由管理\nvue的路由器,在每个页面的入口文件index.js 都会注册进来 具体操作:https://router.vuejs.org/zh/\nstore => 状态管理\n每个路由对应的页面都有一个状态管理的文件 分为:\n\nactions => mapActions => 详情:https://vuex.vuejs.org/zh/guide/actions.html\n\ngetters => mapGetters => 详情:https://vuex.vuejs.org/zh/guide/getters.html\n\nindex => 入口\n\nmutations => mapMutations => 详情:https://vuex.vuejs.org/zh/guide/mutations.html\n\nstate => mapState => 详情:https://vuex.vuejs.org/zh/guide/state.html\n\n具体操作:https://vuex.vuejs.org/zh/\n规范\nVue规范\n1.组件名\n组件名为多个单词,并且用连接线(-)连接,避免与 HTML 标签冲突,并且结构更加清晰。\n// 正例\nexport default {\n name: 'page-article-item'\n}\n2.组件文件\nsrc/js/module/components项目内部公共组件书写文件夹名与文件名同名,公共组件内部所拆分的子组件与util工具都放置组件内部 _source文件夹里。\n└── components\n ├── header\n ├── header.vue\n └── _source\n └── nav.vue\n └── util.js\n ├── conditions\n ├── conditions.vue\n └── _source\n └── serach.vue\n └── util.js\n3.Prop\n定义 Prop 的时候应该始终以驼峰格式(camelCase)命名,在父组件赋值的时候使用连接线(-)。\n这里遵循每个语言的特性,因为在 HTML 标记中对大小写是不敏感的,使用连接线更加友好;而在 JavaScript 中更自然的是驼峰命名。\n// Vue\nprops: {\n articleStatus: Boolean\n}\n// HTML\n\nProp 的定义应该尽量详细的指定其类型、默认值和验证。\n示例:\nprops: {\n attrM: Number,\n attrA: {\n type: String,\n required: true\n },\n attrZ: {\n type: Object,\n // 数组/对象的默认值应该由一个工厂函数返回\n default: function () {\n return {\n msg: '成就你我'\n }\n }\n },\n attrE: {\n type: String,\n validator: function (v) {\n return !(['success', 'fail'].indexOf(v) === -1) \n }\n }\n}\n4.v-for\n在执行 v-for 遍历的时候,总是应该带上 key 值使更新 DOM 时渲染效率更高。\n\n \n {{ item.title }}\n \n\nv-for 应该避免与 v-if 在同一个元素(例如:)上使用,因为 v-for 的优先级比 v-if 更高,为了避免无效计算和渲染,应该尽量将 v-if 放到容器的父元素之上。\n\n \n {{ item.title }}\n \n\n5.v-if / v-else-if / v-else\n若同一组 v-if 逻辑控制中的元素逻辑相同,Vue 为了更高效的元素切换,会复用相同的部分,例如:value。为了避免复用带来的不合理效果,应该在同种元素上加上 key 做标识。\n\n {{ mazeyData }}\n\n\n 无数据\n\n6.指令缩写\n为了统一规范始终使用指令缩写,使用v-bind,v-on并没有什么不好,这里仅为了统一规范。\n\n7.单文件组件的顶级元素顺序\n样式后续都是打包在一个文件里,所有在单个vue文件中定义的样式,在别的文件里同类名的样式也是会生效的所有在创建一个组件前都会有个顶级类名\n注意:项目内已经增加了sass插件,单个vue文件里可以直接书写sass语法\n为了统一和便于阅读,应该按 、、的顺序放置。\n\n \n test\n \n\n\n export default {\n name: \"test\",\n data() {\n return {}\n },\n props: {},\n methods: {},\n watch: {},\n beforeCreate() {\n },\n created() {\n },\n beforeMount() {\n },\n mounted() {\n },\n beforeUpdate() {\n },\n updated() {\n },\n beforeDestroy() {\n },\n destroyed() {\n },\n computed: {},\n components: {},\n }\n\n\n\n .test-model {\n\n }\n\nJavaScript规范\n1.var / let / const\n建议不再使用 var,而使用 let / const,优先使用 const。任何一个变量的使用都要提前申明,除了 function 定义的函数可以随便放在任何位置。\n2.引号\nconst foo = '后除'\nconst bar = `${foo},前端工程师`\n3.函数\n匿名函数统一使用箭头函数,多个参数/返回值时优先使用对象的结构赋值。\nfunction getPersonInfo ({name, sex}) {\n // ...\n return {name, gender}\n}\n函数名统一使用驼峰命名,以大写字母开头申明的都是构造函数,使用小写字母开头的都是普通函数,也不该使用 new 操作符去操作普通函数。\n4.对象\nconst foo = {a: 0, b: 1}\nconst bar = JSON.parse(JSON.stringify(foo))\n\nconst foo = {a: 0, b: 1}\nconst bar = {...foo, c: 2}\n\nconst foo = {a: 3}\nObject.assign(foo, {b: 4})\n\nconst myMap = new Map([])\nfor (let [key, value] of myMap.entries()) {\n // ...\n}\n5.模块\n统一使用 import / export 的方式管理项目的模块。\n// lib.js\nexport default {}\n\n// app.js\nimport app from './lib'\nimport 统一放在文件顶部。\n如果模块只有一个输出值,使用 export default,否则不用。\nHTML / CSS\n1.标签\n在引用外部 CSS 或 JavaScript 时不写 type 属性。HTML5 默认 type 为 text/css 和 text/javascript 属性,所以没必要指定。\n\n\n2.命名\nClass 和 ID 的命名应该语义化,通过看名字就知道是干嘛的;多个单词用连接线 - 连接。\n// 正例\n.test-header{\n font-size: 20px;\n}\n3.属性缩写\nCSS 属性尽量使用缩写,提高代码的效率和方便理解。\n// 反例\nborder-width: 1px;\nborder-style: solid;\nborder-color: #ccc;\n\n// 正例\nborder: 1px solid #ccc;\n4.文档类型\n应该总是使用 HTML5 标准。\n\n5.注释\n应该给一个模块文件写一个区块注释。\n/**\n* @module mazey/api\n* @author Mazey \n* @description test.\n* */\n接口\n所有的接口都以 Promise 形式返回\n注意非0都为错误走catch\nconst test = () => {\n return new Promise((resolve, reject) => {\n resolve({\n a:1\n })\n })\n}\n\n// 调用\ntest.then(res => {\n console.log(res)\n // {a:1}\n})\n正常返回\n{\n code:0,\n data:{}\n msg:'成功'\n}\n错误返回\n{\n code:10000, \n data:{}\n msg:'失败'\n}\n相关接口路径\ndag 相关接口 src/js/conf/home/store/dag/actions.js\n数据源中心 相关接口 src/js/conf/home/store/datasource/actions.js\n项目管理 相关接口 src/js/conf/home/store/projects/actions.js\n资源中心 相关接口 src/js/conf/home/store/resource/actions.js\n安全中心 相关接口 src/js/conf/home/store/security/actions.js\n用户中心 相关接口 src/js/conf/home/store/user/actions.js\n扩展开发\n1.增加节点\n(1) 先将节点的icon小图标放置src/js/conf/home/pages/dag/img文件夹内,注意 toolbar_${后台定义的节点的英文名称 例如:SHELL}.png\n(2) 找到 src/js/conf/home/pages/dag/_source/config.js 里的 tasksType 对象,往里增加\n'DEPENDENT': { // 后台定义节点类型英文名称用作key值\n desc: 'DEPENDENT', // tooltip desc\n color: '#2FBFD8' // 代表的颜色主要用于 tree和gantt 两张图\n}\n(3) 在 src/js/conf/home/pages/dag/_source/formModel/tasks 增加一个 ${节点类型(小写)}.vue 文件,跟当前节点相关的组件内容都在这里写。 属于节点组件内的必须拥有一个函数 _verification() 验证成功后讲当前组件的相关数据往父组件抛。\n/**\n * 验证\n*/\n _verification () {\n // datasource 子组件验证\n if (!this.$refs.refDs._verifDatasource()) {\n return false\n }\n\n // 验证函数\n if (!this.method) {\n this.$message.warning(`${i18n.$t('请输入方法')}`)\n return false\n }\n\n // localParams 子组件验证\n if (!this.$refs.refLocalParams._verifProp()) {\n return false\n }\n // 存储\n this.$emit('on-params', {\n type: this.type,\n datasource: this.datasource,\n method: this.method,\n localParams: this.localParams\n })\n return true\n }\n(4) 节点组件内部所用到公共的组件都在_source下,commcon.js用与配置公共数据\n2.增加状态类型\n(1) 找到 src/js/conf/home/pages/dag/_source/config.js 里的 tasksState 对象,往里增加\n'WAITTING_DEPEND': { //后端定义状态类型 前端用作key值\n id: 11, // 前端定义id 后续用作排序\n desc: `${i18n.$t('等待依赖')}`, // tooltip desc\n color: '#5101be', // 代表的颜色主要用于 tree和gantt 两张图\n icoUnicode: '', // 字体图标 \n isSpin: false // 是否旋转(需代码判断)\n}\n3.增加操作栏工具\n(1) 找到 src/js/conf/home/pages/dag/_source/config.js 里的 toolOper 对象,往里增加\n{\n code: 'pointer', // 工具标识\n icon: '', // 工具图标 \n disable: disable, // 是否禁用\n desc: `${i18n.$t('拖动节点和选中项')}` // tooltip desc\n}\n(2) 工具类都以一个构造函数返回 src/js/conf/home/pages/dag/_source/plugIn\ndownChart.js => dag 图片下载处理 \ndragZoom.js => 鼠标缩放效果处理 \njsPlumbHandle.js => 拖拽线条处理 \nutil.js => 属于 plugIn 工具类\n操作则在 src/js/conf/home/pages/dag/_source/dag.js => toolbarEvent 事件中处理。\n3.增加一个路由页面\n(1) 首先在路由管理增加一个路由地址src/js/conf/home/router/index.js\n{\n path: '/test', // 路由地址 \n name: 'test', // 别名\n component: resolve => require(['../pages/test/index'], resolve), // 路由对应组件入口文件\n meta: {\n title: `${i18n.$t('test')} - EasyScheduler` // title 显示\n }\n},\n(2) 在src/js/conf/home/pages 建一个 test 文件夹,在文件夹里建一个index.vue入口文件。\n这样就可以直接访问 `http://localhost:8888/#/test`\n4.增加预置邮箱\n找到src/lib/localData/email.js启动和定时邮箱地址输入可以自动下拉匹配。\nexport default [\"test@analysys.com.cn\",\"test1@analysys.com.cn\",\"test3@analysys.com.cn\"]\n5.权限管理及disabled状态处理\n权限根据后端接口getUserInfo接口给出userType: \"ADMIN_USER/GENERAL_USER\"权限控制页面操作按钮是否disabled\n具体操作:src/js/module/permissions/index.js\ndisabled处理:src/js/module/mixin/disabledState.js\n"},"architecture-design.html":{"url":"architecture-design.html","title":"系统架构设计","keywords":"","body":"调度系统架构设计\n在对系统架构说明之前,我们先来认识一下调度系统常用的名词\n1.名词解释\nDAG: 全称Directed Acyclic Graph,简称DAG。工作流中的Task任务以有向无环图的形式组装起来,从入度为零的节点进行拓扑遍历,直到无后继节点为止。举例如下图:\n\n \n \n dag示例\n \n\n**流程定义**:通过拖拽任务节点并建立任务节点的关联所形成的可视化**DAG**\n\n**流程实例**:流程实例是流程定义的实例化,可以通过手动启动或定时调度生成\n\n**任务实例**:任务实例是流程定义中任务节点的实例化,标识着具体的任务执行状态\n\n**任务类型**: 目前支持有SHELL、SQL、SUB_PROCESS、PROCEDURE、MR、SPARK、PYTHON、DEPENDENT,同时计划支持动态插件扩展,注意:其中子 **SUB_PROCESS** 也是一个单独的流程定义,是可以单独启动执行的\n\n**调度方式:** 系统支持基于cron表达式的定时调度和手动调度。命令类型支持:启动工作流、从当前节点开始执行、恢复被容错的工作流、恢复暂停流程、从失败节点开始执行、补数、调度、重跑、暂停、停止、恢复等待线程。其中 **恢复被容错的工作流** 和 **恢复等待线程 **两种命令类型是由调度内部控制使用,外部无法调用\n\n**定时调度**:系统采用 **quartz** 分布式调度器,并同时支持cron表达式可视化的生成\n\n**依赖**:系统不单单支持 **DAG** 简单的前驱和后继节点之间的依赖,同时还提供**任务依赖**节点,支持**流程间的自定义任务依赖**\n\n**优先级** :支持流程实例和任务实例的优先级,如果流程实例和任务实例的优先级不设置,则默认是先进先出\n\n**邮件告警**:支持 **SQL任务** 查询结果邮件发送,流程实例运行结果邮件告警及容错告警通知\n\n**失败策略**:对于并行运行的任务,如果有任务失败,提供两种失败策略处理方式,**继续**是指不管并行运行任务的状态,直到流程失败结束。**结束**是指一旦发现失败任务,则同时Kill掉正在运行的并行任务,流程失败结束\n\n**补数**:补历史数据,支持**区间并行和串行**两种补数方式\n\n### 2.系统架构\n\n#### 2.1 系统架构图\n\n \n \n 系统架构图\n \n\n\n2.2 架构说明\n\nMasterServer \n MasterServer采用分布式无中心设计理念,MasterServer主要负责 DAG 任务切分、任务提交监控,并同时监听其它MasterServer和WorkerServer的健康状态。\n MasterServer服务启动时向Zookeeper注册临时节点,通过监听Zookeeper临时节点变化来进行容错处理。\n该服务内主要包含:\n\nDistributed Quartz分布式调度组件,主要负责定时任务的启停操作,当quartz调起任务后,Master内部会有线程池具体负责处理任务的后续操作\n\nMasterSchedulerThread是一个扫描线程,定时扫描数据库中的 command 表,根据不同的命令类型进行不同的业务操作\n\nMasterExecThread主要是负责DAG任务切分、任务提交监控、各种不同命令类型的逻辑处理\n\nMasterTaskExecThread主要负责任务的持久化\n\n\n\nWorkerServer \n WorkerServer也采用分布式无中心设计理念,WorkerServer主要负责任务的执行和提供日志服务。WorkerServer服务启动时向Zookeeper注册临时节点,并维持心跳。\n该服务包含:\n\nFetchTaskThread主要负责不断从Task Queue中领取任务,并根据不同任务类型调用TaskScheduleThread对应执行器。\n\nLoggerServer是一个RPC服务,提供日志分片查看、刷新和下载等功能\n\n\n\nZooKeeper \n ZooKeeper服务,系统中的MasterServer和WorkerServer节点都通过ZooKeeper来进行集群管理和容错。另外系统还基于ZooKeeper进行事件监听和分布式锁。\n 我们也曾经基于Redis实现过队列,不过我们希望EasyScheduler依赖到的组件尽量地少,所以最后还是去掉了Redis实现。\n\nTask Queue \n 提供任务队列的操作,目前队列也是基于Zookeeper来实现。由于队列中存的信息较少,不必担心队列里数据过多的情况,实际上我们压测过百万级数据存队列,对系统稳定性和性能没影响。\n\nAlert \n 提供告警相关接口,接口主要包括告警两种类型的告警数据的存储、查询和通知功能。其中通知功能又有邮件通知和SNMP(暂未实现)两种。\n\nAPI \n API接口层,主要负责处理前端UI层的请求。该服务统一提供RESTful api向外部提供请求服务。\n 接口包括工作流的创建、定义、查询、修改、发布、下线、手工启动、停止、暂停、恢复、从该节点开始执行等等。\n\nUI \n 系统的前端页面,提供系统的各种可视化操作界面,详见使用手册部分。\n\n\n2.3 架构设计思想\n一、去中心化vs中心化\n中心化思想\n中心化的设计理念比较简单,分布式集群中的节点按照角色分工,大体上分为两种角色:\n\n \n \n- Master的角色主要负责任务分发并监督Slave的健康状态,可以动态的将任务均衡到Slave上,以致Slave节点不至于“忙死”或”闲死”的状态。\n- Worker的角色主要负责任务的执行工作并维护和Master的心跳,以便Master可以分配任务给Slave。\n\n\n\n中心化思想设计存在的问题:\n\n- 一旦Master出现了问题,则群龙无首,整个集群就会崩溃。为了解决这个问题,大多数Master/Slave架构模式都采用了主备Master的设计方案,可以是热备或者冷备,也可以是自动切换或手动切换,而且越来越多的新系统都开始具备自动选举切换Master的能力,以提升系统的可用性。\n- 另外一个问题是如果Scheduler在Master上,虽然可以支持一个DAG中不同的任务运行在不同的机器上,但是会产生Master的过负载。如果Scheduler在Slave上,则一个DAG中所有的任务都只能在某一台机器上进行作业提交,则并行任务比较多的时候,Slave的压力可能会比较大。\n\n\n\n###### 去中心化\n \n \n- 在去中心化设计里,通常没有Master/Slave的概念,所有的角色都是一样的,地位是平等的,全球互联网就是一个典型的去中心化的分布式系统,联网的任意节点设备down机,都只会影响很小范围的功能。\n- 去中心化设计的核心设计在于整个分布式系统中不存在一个区别于其他节点的”管理者”,因此不存在单点故障问题。但由于不存在” 管理者”节点所以每个节点都需要跟其他节点通信才得到必须要的机器信息,而分布式系统通信的不可靠行,则大大增加了上述功能的实现难度。\n- 实际上,真正去中心化的分布式系统并不多见。反而动态中心化分布式系统正在不断涌出。在这种架构下,集群中的管理者是被动态选择出来的,而不是预置的,并且集群在发生故障的时候,集群的节点会自发的举行\"会议\"来选举新的\"管理者\"去主持工作。最典型的案例就是ZooKeeper及Go语言实现的Etcd。\n\n\n\n- EasyScheduler的去中心化是Master/Worker注册到Zookeeper中,实现Master集群和Worker集群无中心,并使用Zookeeper分布式锁来选举其中的一台Master或Worker为“管理者”来执行任务。\n\n##### 二、分布式锁实践\n\nEasyScheduler使用ZooKeeper分布式锁来实现同一时刻只有一台Master执行Scheduler,或者只有一台Worker执行任务的提交。\n1. 获取分布式锁的核心流程算法如下\n \n \n \n\n\nEasyScheduler中Scheduler线程分布式锁实现流程图:\n\n\n\n\n\n\n三、线程不足循环等待问题\n\n如果一个DAG中没有子流程,则如果Command中的数据条数大于线程池设置的阈值,则直接流程等待或失败。\n如果一个大的DAG中嵌套了很多子流程,如下图则会产生“死等”状态:\n\n\n\n上图中MainFlowThread等待SubFlowThread1结束,SubFlowThread1等待SubFlowThread2结束, SubFlowThread2等待SubFlowThread3结束,而SubFlowThread3等待线程池有新线程,则整个DAG流程不能结束,从而其中的线程也不能释放。这样就形成的子父流程循环等待的状态。此时除非启动新的Master来增加线程来打破这样的”僵局”,否则调度集群将不能再使用。\n\n\n对于启动新Master来打破僵局,似乎有点差强人意,于是我们提出了以下三种方案来降低这种风险:\n\n计算所有Master的线程总和,然后对每一个DAG需要计算其需要的线程数,也就是在DAG流程执行之前做预计算。因为是多Master线程池,所以总线程数不太可能实时获取。 \n对单Master线程池进行判断,如果线程池已经满了,则让线程直接失败。\n增加一种资源不足的Command类型,如果线程池不足,则将主流程挂起。这样线程池就有了新的线程,可以让资源不足挂起的流程重新唤醒执行。\n\n注意:Master Scheduler线程在获取Command的时候是FIFO的方式执行的。\n于是我们选择了第三种方式来解决线程不足的问题。\n四、容错设计\n容错分为服务宕机容错和任务重试,服务宕机容错又分为Master容错和Worker容错两种情况\n1. 宕机容错\n服务容错设计依赖于ZooKeeper的Watcher机制,实现原理如图:\n \n \n \n其中Master监控其他Master和Worker的目录,如果监听到remove事件,则会根据具体的业务逻辑进行流程实例容错或者任务实例容错。\n\n\n\n- Master容错流程图:\n\n \n \n \nZooKeeper Master容错完成之后则重新由EasyScheduler中Scheduler线程调度,遍历 DAG 找到”正在运行”和“提交成功”的任务,对”正在运行”的任务监控其任务实例的状态,对”提交成功”的任务需要判断Task Queue中是否已经存在,如果存在则同样监控任务实例的状态,如果不存在则重新提交任务实例。\n\n\n\n- Worker容错流程图:\n\n \n \n \nMaster Scheduler线程一旦发现任务实例为” 需要容错”状态,则接管任务并进行重新提交。\n\n注意:由于” 网络抖动”可能会使得节点短时间内失去和ZooKeeper的心跳,从而发生节点的remove事件。对于这种情况,我们使用最简单的方式,那就是节点一旦和ZooKeeper发生超时连接,则直接将Master或Worker服务停掉。\n\n###### 2.任务失败重试\n\n这里首先要区分任务失败重试、流程失败恢复、流程失败重跑的概念:\n\n- 任务失败重试是任务级别的,是调度系统自动进行的,比如一个Shell任务设置重试次数为3次,那么在Shell任务运行失败后会自己再最多尝试运行3次\n- 流程失败恢复是流程级别的,是手动进行的,恢复是从只能**从失败的节点开始执行**或**从当前节点开始执行**\n- 流程失败重跑也是流程级别的,是手动进行的,重跑是从开始节点进行\n\n\n\n接下来说正题,我们将工作流中的任务节点分了两种类型。\n\n- 一种是业务节点,这种节点都对应一个实际的脚本或者处理语句,比如Shell节点,MR节点、Spark节点、依赖节点等。\n\n- 还有一种是逻辑节点,这种节点不做实际的脚本或语句处理,只是整个流程流转的逻辑处理,比如子流程节等。\n\n每一个**业务节点**都可以配置失败重试的次数,当该任务节点失败,会自动重试,直到成功或者超过配置的重试次数。**逻辑节点**不支持失败重试。但是逻辑节点里的任务支持重试。\n\n如果工作流中有任务失败达到最大重试次数,工作流就会失败停止,失败的工作流可以手动进行重跑操作或者流程恢复操作\n\n\n\n##### 五、任务优先级设计\n在早期调度设计中,如果没有优先级设计,采用公平调度设计的话,会遇到先行提交的任务可能会和后继提交的任务同时完成的情况,而不能做到设置流程或者任务的优先级,因此我们对此进行了重新设计,目前我们设计如下:\n\n- 按照**不同流程实例优先级**优先于**同一个流程实例优先级**优先于**同一流程内任务优先级**优先于**同一流程内任务**提交顺序依次从高到低进行任务处理。\n - 具体实现是根据任务实例的json解析优先级,然后把**流程实例优先级_流程实例id_任务优先级_任务id**信息保存在ZooKeeper任务队列中,当从任务队列获取的时候,通过字符串比较即可得出最需要优先执行的任务\n\n - 其中流程定义的优先级是考虑到有些流程需要先于其他流程进行处理,这个可以在流程启动或者定时启动时配置,共有5级,依次为HIGHEST、HIGH、MEDIUM、LOW、LOWEST。如下图\n \n \n \n\n - 任务的优先级也分为5级,依次为HIGHEST、HIGH、MEDIUM、LOW、LOWEST。如下图\n \n \n \n六、Logback和gRPC实现日志访问\n\n由于Web(UI)和Worker不一定在同一台机器上,所以查看日志不能像查询本地文件那样。有两种方案:\n\n将日志放到ES搜索引擎上\n通过gRPC通信获取远程日志信息\n\n\n介于考虑到尽可能的EasyScheduler的轻量级性,所以选择了gRPC实现远程访问日志信息。\n\n\n\n\n\n\n\n\n我们使用自定义Logback的FileAppender和Filter功能,实现每个任务实例生成一个日志文件。\nFileAppender主要实现如下:\n/**\n* task log appender\n*/\npublic class TaskLogAppender extends FileAppender\n\n\n以/流程定义id/流程实例id/任务实例id.log的形式生成日志\n\n过滤匹配以TaskLogInfo开始的线程名称:\n\nTaskLogFilter实现如下:\n/**\n* task log filter\n*/\npublic class TaskLogFilter extends Filter\n\n\n总结\n本文从调度出发,初步介绍了大数据分布式工作流调度系统--EasyScheduler的架构原理及实现思路。后续会补充\n"},"backend-deploy.html":{"url":"backend-deploy.html","title":"部署文档","keywords":"","body":"部署文档\n基础软件安装\n\nmysql (5.5+) : 必装\nzookeeper(3.4.6) :必装 \nhadoop(2.7.3) :选装,资源上传,MR任务提交需要安装\nhive(1.2.1) : 选装,hive任务提交需要安装\nspark(1.x,2.x) : 选装,spark任务提交需要安装\npostgresql(8.2.15+) : 选装,postgresql sql任务和postgresql 存储过程需要安装\n\n项目编译\n\n执行编译命令:\n\n mvn -U clean package assembly:assembly -Dmaven.test.skip=true\n\n查看目录\n\n正常编译完后,会在当前目录生成 target/escheduler-{version}/\n bin\n conf\n lib\n script\n sql\n install.sh\n\n说明\n\nbin : 基础服务启动脚本\nconf : 项目配置文件\nlib : 项目依赖jar包,包括各个模块jar和第三方jar\nscript : 集群启动、停止和服务监控启停脚本\nsql : 项目依赖sql文件\ninstall.sh : 一键部署脚本\n数据库初始化\n\n创建db和账号\n\nmysql -h {host} -u {user} -p{password}\nmysql> CREATE DATABASE escheduler DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;\nmysql> GRANT ALL PRIVILEGES ON escheduler.* TO '{user}'@'%' IDENTIFIED BY '{password}';\nmysql> GRANT ALL PRIVILEGES ON escheduler.* TO '{user}'@'localhost' IDENTIFIED BY '{password}';\nmysql> flush privileges;\n\n创建表\n\n说明:在 target/escheduler-{version}/sql/escheduler.sql和quartz.sql\n\nmysql -h {host} -u {user} -p{password} -D {db} 创建部署用户\n因为escheduler worker 都是以 sudo -u {linux-user} 方式来执行作业,所以部署用户需要有 sudo 权限,而且是免密的。\nvi /etc/sudoers\n\n# 部署用户是 escheduler 账号\nescheduler ALL=(ALL) NOPASSWD: NOPASSWD: ALL\n\n# 并且需要注释掉 Default requiretty 一行\n#Default requiretty\n\n配置文件说明\n说明:配置文件位于 target/escheduler-{version}/conf 下面\nescheduler-alert\n配置邮件告警信息\n\nalert.properties \n\n#alert type is EMAIL/SMS\nalert.type=EMAIL\n\n# mail server configuration\nmail.protocol=SMTP\nmail.server.host=smtp.exmail.qq.com\nmail.server.port=25\nmail.sender=xxxxxxx\nmail.passwd=xxxxxxx\n\n# xls file path,need create if not exist\nxls.file.path=/opt/xls\nescheduler-common\n通用配置文件配置,队列选择及地址配置,通用文件目录配置\n\ncommon/common.properties\n\n#task queue implementation, default \"zookeeper\"\nescheduler.queue.impl=zookeeper\n\n# user data directory path, self configuration, please make sure the directory exists and have read write permissions\ndata.basedir.path=/tmp/escheduler\n\n# directory path for user data download. self configuration, please make sure the directory exists and have read write permissions\ndata.download.basedir.path=/tmp/escheduler/download\n\n# process execute directory. self configuration, please make sure the directory exists and have read write permissions\nprocess.exec.basepath=/tmp/escheduler/exec\n\n# data base dir, resource file will store to this hadoop hdfs path, self configuration, please make sure the directory exists on hdfs and have read write permissions。\"/escheduler\" is recommended\ndata.store2hdfs.basepath=/escheduler\n\n# whether hdfs starts\nhdfs.startup.state=true\n\n# system env path. self configuration, please make sure the directory and file exists and have read write execute permissions\nescheduler.env.path=/opt/.escheduler_env.sh\nescheduler.env.py=/opt/escheduler_env.py\n\n#resource.view.suffixs\nresource.view.suffixs=txt,log,sh,conf,cfg,py,java,sql,hql,xml\n\n# is development state? default \"false\"\ndevelopment.state=false\nSHELL任务 环境变量配置\n说明:配置文件位于 target/escheduler-{version}/conf/env 下面\n.escheduler_env.sh \nexport HADOOP_HOME=/opt/soft/hadoop\nexport HADOOP_CONF_DIR=/opt/soft/hadoop/etc/hadoop\nexport SPARK_HOME1=/opt/soft/spark1\nexport SPARK_HOME2=/opt/soft/spark2\nexport PYTHON_HOME=/opt/soft/python\nexport JAVA_HOME=/opt/soft/java\nexport HIVE_HOME=/opt/soft/hive\n\nexport PATH=$HADOOP_HOME/bin:$SPARK_HOME1/bin:$SPARK_HOME2/bin:$PYTHON_HOME/bin:$JAVA_HOME/bin:$HIVE_HOME/bin:$PATH\n​ \nPython任务 环境变量配置\n说明:配置文件位于 target/escheduler-{version}/conf/env 下面\nescheduler_env.py\nimport os\n\nHADOOP_HOME=\"/opt/soft/hadoop\"\nSPARK_HOME1=\"/opt/soft/spark1\"\nSPARK_HOME2=\"/opt/soft/spark2\"\nPYTHON_HOME=\"/opt/soft/python\"\nJAVA_HOME=\"/opt/soft/java\"\nHIVE_HOME=\"/opt/soft/hive\"\nPATH=os.environ['PATH']\nPATH=\"%s/bin:%s/bin:%s/bin:%s/bin:%s/bin:%s/bin:%s\"%(HIVE_HOME,HADOOP_HOME,SPARK_HOME1,SPARK_HOME2,JAVA_HOME,PYTHON_HOME,PATH)\n\nos.putenv('PATH','%s'%PATH)\nhadoop 配置文件\n\ncommon/hadoop/hadoop.properties\n\n# ha or single namenode,If namenode ha needs to copy core-site.xml and hdfs-site.xml to the conf directory\nfs.defaultFS=hdfs://mycluster:8020\n\n#resourcemanager ha note this need ips , this empty if single\nyarn.resourcemanager.ha.rm.ids=192.168.xx.xx,192.168.xx.xx\n\n# If it is a single resourcemanager, you only need to configure one host name. If it is resourcemanager HA, the default configuration is fine\nyarn.application.status.address=http://ark1:8088/ws/v1/cluster/apps/%s\n定时器配置文件\n\nquartz.properties\n\n#============================================================================\n# Configure Main Scheduler Properties\n#============================================================================\norg.quartz.scheduler.instanceName = EasyScheduler\norg.quartz.scheduler.instanceId = AUTO\norg.quartz.scheduler.makeSchedulerThreadDaemon = true\norg.quartz.jobStore.useProperties = false\n\n#============================================================================\n# Configure ThreadPool\n#============================================================================\n\norg.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool\norg.quartz.threadPool.makeThreadsDaemons = true\norg.quartz.threadPool.threadCount = 25\norg.quartz.threadPool.threadPriority = 5\n\n#============================================================================\n# Configure JobStore\n#============================================================================\n\norg.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX\norg.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.StdJDBCDelegate\norg.quartz.jobStore.tablePrefix = QRTZ_\norg.quartz.jobStore.isClustered = true\norg.quartz.jobStore.misfireThreshold = 60000\norg.quartz.jobStore.clusterCheckinInterval = 5000\norg.quartz.jobStore.dataSource = myDs\n\n#============================================================================\n# Configure Datasources \n#============================================================================\n\norg.quartz.dataSource.myDs.driver = com.mysql.jdbc.Driver\norg.quartz.dataSource.myDs.URL = jdbc:mysql://192.168.xx.xx:3306/escheduler?characterEncoding=utf8&useSSL=false\norg.quartz.dataSource.myDs.user = xx\norg.quartz.dataSource.myDs.password = xx\norg.quartz.dataSource.myDs.maxConnections = 10\norg.quartz.dataSource.myDs.validationQuery = select 1\nzookeeper 配置文件\n\nzookeeper.properties\n\n#zookeeper cluster\nzookeeper.quorum=192.168.xx.xx:2181,192.168.xx.xx:2181,192.168.xx.xx:2181\n\n#escheduler root directory\nzookeeper.escheduler.root=/escheduler\n\n#zookeeper server dirctory\nzookeeper.escheduler.dead.servers=/escheduler/dead-servers\nzookeeper.escheduler.masters=/escheduler/masters\nzookeeper.escheduler.workers=/escheduler/workers\n\n#zookeeper lock dirctory\nzookeeper.escheduler.lock.masters=/escheduler/lock/masters\nzookeeper.escheduler.lock.workers=/escheduler/lock/workers\n\n#escheduler failover directory\nzookeeper.escheduler.lock.masters.failover=/escheduler/lock/failover/masters\nzookeeper.escheduler.lock.workers.failover=/escheduler/lock/failover/workers\n\n#escheduler failover directory\nzookeeper.session.timeout=300\nzookeeper.connection.timeout=300\nzookeeper.retry.sleep=1000\nzookeeper.retry.maxtime=5\nescheduler-dao\ndao数据源配置\n\ndao/data_source.properties\n\n# base spring data source configuration\nspring.datasource.type=com.alibaba.druid.pool.DruidDataSource\nspring.datasource.driver-class-name=com.mysql.jdbc.Driver\nspring.datasource.url=jdbc:mysql://192.168.xx.xx:3306/escheduler?characterEncoding=UTF-8\nspring.datasource.username=xx\nspring.datasource.password=xx\n\n# connection configuration\nspring.datasource.initialSize=5\n# min connection number\nspring.datasource.minIdle=5\n# max connection number\nspring.datasource.maxActive=50\n\n# max wait time for get a connection in milliseconds. if configuring maxWait, fair locks are enabled by default and concurrency efficiency decreases.\n# If necessary, unfair locks can be used by configuring the useUnfairLock attribute to true.\nspring.datasource.maxWait=60000\n\n# milliseconds for check to close free connections\nspring.datasource.timeBetweenEvictionRunsMillis=60000\n\n# the Destroy thread detects the connection interval and closes the physical connection in milliseconds if the connection idle time is greater than or equal to minEvictableIdleTimeMillis.\nspring.datasource.timeBetweenConnectErrorMillis=60000\n\n# the longest time a connection remains idle without being evicted, in milliseconds\nspring.datasource.minEvictableIdleTimeMillis=300000\n\n#the SQL used to check whether the connection is valid requires a query statement. If validation Query is null, testOnBorrow, testOnReturn, and testWhileIdle will not work.\nspring.datasource.validationQuery=SELECT 1\n#check whether the connection is valid for timeout, in seconds\nspring.datasource.validationQueryTimeout=3\n\n# when applying for a connection, if it is detected that the connection is idle longer than time Between Eviction Runs Millis,\n# validation Query is performed to check whether the connection is valid\nspring.datasource.testWhileIdle=true\n\n#execute validation to check if the connection is valid when applying for a connection\nspring.datasource.testOnBorrow=true\n#execute validation to check if the connection is valid when the connection is returned\nspring.datasource.testOnReturn=false\nspring.datasource.defaultAutoCommit=true\nspring.datasource.keepAlive=true\n\n# open PSCache, specify count PSCache for every connection\nspring.datasource.poolPreparedStatements=true\nspring.datasource.maxPoolPreparedStatementPerConnectionSize=20\nescheduler-server\nmaster配置文件\n\nmaster.properties\n\n# master execute thread num\nmaster.exec.threads=100\n\n# master execute task number in parallel\nmaster.exec.task.number=20\n\n# master heartbeat interval\nmaster.heartbeat.interval=10\n\n# master commit task retry times\nmaster.task.commit.retryTimes=5\n\n# master commit task interval\nmaster.task.commit.interval=100\n\n\n# only less than cpu avg load, master server can work. default value : the number of cpu cores * 2\nmaster.max.cpuload.avg=10\n\n# only larger than reserved memory, master server can work. default value : physical memory * 1/10, unit is G.\nmaster.reserved.memory=1\nworker配置文件\n\nworker.properties\n\n# worker execute thread num\nworker.exec.threads=100\n\n# worker heartbeat interval\nworker.heartbeat.interval=10\n\n# submit the number of tasks at a time\nworker.fetch.task.num = 10\n\n\n# only less than cpu avg load, worker server can work. default value : the number of cpu cores * 2\nworker.max.cpuload.avg=10\n\n# only larger than reserved memory, worker server can work. default value : physical memory * 1/6, unit is G.\nworker.reserved.memory=1\nescheduler-api\nweb配置文件\n\napplication.properties\n\n# server port\nserver.port=12345\n\n# session config\nserver.session.timeout=7200\n\n\nserver.context-path=/escheduler/\n\n# file size limit for upload\nspring.http.multipart.max-file-size=1024MB\nspring.http.multipart.max-request-size=1024MB\n\n# post content\nserver.max-http-post-size=5000000\n伪分布式部署\n1,创建部署用户\n​ 如上 创建部署用户\n2,根据实际需求来创建HDFS根路径\n​ 根据 common/common.properties 中 hdfs.startup.state 的配置来判断是否启动HDFS,如果启动,则需要创建HDFS根路径,并将 owner 修改为部署用户,否则忽略此步骤\n3,项目编译\n​ 如上进行 项目编译\n4,修改配置文件\n​ 根据 配置文件说明 修改配置文件和 环境变量 文件\n5,创建目录并将环境变量文件复制到指定目录\n\n创建 common/common.properties 下的data.basedir.path、data.download.basedir.path和process.exec.basepath路径\n\n将.escheduler_env.sh 和 escheduler_env.py 两个环境变量文件复制到 common/common.properties配置的escheduler.env.path 和 escheduler.env.py 的目录下,并将 owner 修改为部署用户\n\n\n6,启停服务\n\n启停Master\n\nsh ./bin/arklifter-daemon.sh start master-server\nsh ./bin/arklifter-daemon.sh stop master-server\n\n\n启停Worker\n\nsh ./bin/arklifter-daemon.sh start worker-server\nsh ./bin/arklifter-daemon.sh stop worker-server\n\n启停Api\n\nsh ./bin/arklifter-daemon.sh start api-server\nsh ./bin/arklifter-daemon.sh stop api-server\n\n启停Logger\n\nsh ./bin/arklifter-daemon.sh start logger-server\nsh ./bin/arklifter-daemon.sh stop logger-server\n\n启停Alert\n\nsh ./bin/arklifter-daemon.sh start alert-server\nsh ./bin/arklifter-daemon.sh stop alert-server\n分布式部署\n1,创建部署用户\n\n在需要部署调度的机器上如上 创建部署用户\n将 主机器 和各个其它机器SSH打通\n\n2,根据实际需求来创建HDFS根路径\n​ 根据 common/common.properties 中 hdfs.startup.state 的配置来判断是否启动HDFS,如果启动,则需要创建HDFS根路径,并将 owner 修改为部署用户,否则忽略此步骤\n3,项目编译\n​ 如上进行 项目编译\n4,将环境变量文件复制到指定目录\n​ 将.escheduler_env.sh 和 escheduler_env.py 两个环境变量文件复制到 common/common.properties配置的escheduler.env.path 和 escheduler.env.py 的目录下,并将 owner 修改为部署用户\n5,修改 install.sh\n​ 修改 install.sh 中变量的值,替换成自身业务所需的值\n6,一键部署\n\n安装 pip install kazoo\n\n使用部署用户 sh install.sh 一键部署\n\n\n服务监控\nmonitor_server.py 脚本是监听,master和worker服务挂掉重启的脚本\n注意:在全部服务都启动之后启动\nnohup python -u monitor_server.py > nohup.out 2>&1 &\n日志查看\n日志统一存放于指定文件夹内\n logs/\n ├── escheduler-alert-server.log\n ├── escheduler-master-server.log\n |—— escheduler-worker-server.log\n |—— escheduler-api-server.log\n |—— escheduler-logger-server.log\n\n"},"task-plugin-development.html":{"url":"task-plugin-development.html","title":"自定义任务插件文档","keywords":"","body":"任务插件开发\n提醒:目前任务插件开发暂不支持热部署\n基于SHELL的任务\n基于YARN的计算(参见MapReduceTask)\n\n需要在 cn.escheduler.server.worker.task 下的 TaskManager 类中创建自定义任务(也需在TaskType注册对应的任务类型)\n需要继承cn.escheduler.server.worker.task 下的 AbstractYarnTask\n构造方法调度 AbstractYarnTask 构造方法\n继承 AbstractParameters 自定义任务参数实体\n重写 AbstractTask 的 init 方法中解析自定义任务参数\n重写 buildCommand 封装command\n\n基于非YARN的计算(参见ShellTask)\n\n需要在 cn.escheduler.server.worker.task 下的 TaskManager 中创建自定义任务\n\n需要继承cn.escheduler.server.worker.task 下的 AbstractTask\n\n构造方法中实例化 ShellCommandExecutor\npublic ShellTask(TaskProps props, Logger logger) {\n super(props, logger);\n\n this.taskDir = props.getTaskDir();\n\n this.processTask = new ShellCommandExecutor(this::logHandle,\n props.getTaskDir(), props.getTaskAppId(),\n props.getTenantCode(), props.getEnvFile(), props.getTaskStartTime(),\n props.getTaskTimeout(), logger);\n this.processDao = DaoFactory.getDaoInstance(ProcessDao.class);\n}\n传入自定义任务的 TaskProps和自定义Logger,TaskProps 封装了任务的信息,Logger分装了自定义日志信息\n\n继承 AbstractParameters 自定义任务参数实体\n\n重写 AbstractTask 的 init 方法中解析自定义任务参数实体\n\n重写 handle 方法,调用 ShellCommandExecutor 的 run 方法,第一个参数传入自己的command,第二个参数传入 ProcessDao,设置相应的 exitStatusCode\n\n\n基于非SHELL的任务(参见SqlTask)\n\n需要在 cn.escheduler.server.worker.task 下的 TaskManager 中创建自定义任务\n需要继承cn.escheduler.server.worker.task 下的 AbstractTask\n继承 AbstractParameters 自定义任务参数实体\n构造方法或者重写 AbstractTask 的 init 方法中,解析自定义任务参数实体\n重写 handle 方法实现业务逻辑并设置相应的exitStatusCode\n\n"}}} \ No newline at end of file diff --git a/docs/styles/website.css b/docs/zh_CN/_book/styles/website.css similarity index 100% rename from docs/styles/website.css rename to docs/zh_CN/_book/styles/website.css diff --git a/docs/zh_CN/_book/task-plugin-development.html b/docs/zh_CN/_book/task-plugin-development.html new file mode 100644 index 0000000000000000000000000000000000000000..c40e42ac093393c0bf0350facd21235036a2e627 --- /dev/null +++ b/docs/zh_CN/_book/task-plugin-development.html @@ -0,0 +1,517 @@ + + + + + + + 自定义任务插件文档 · 调度系统-EasyScheduler + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                      +
                      + + + + + + + + +
                      + +
                      + +
                      + + + + + + + + +
                      +
                      + +
                      +
                      + +
                      + +

                      任务插件开发

                      +

                      提醒:目前任务插件开发暂不支持热部署

                      +

                      基于SHELL的任务

                      +

                      基于YARN的计算(参见MapReduceTask)

                      +
                        +
                      • 需要在 cn.escheduler.server.worker.task 下的 TaskManager 类中创建自定义任务(也需在TaskType注册对应的任务类型)
                      • +
                      • 需要继承cn.escheduler.server.worker.task 下的 AbstractYarnTask
                      • +
                      • 构造方法调度 AbstractYarnTask 构造方法
                      • +
                      • 继承 AbstractParameters 自定义任务参数实体
                      • +
                      • 重写 AbstractTaskinit 方法中解析自定义任务参数
                      • +
                      • 重写 buildCommand 封装command
                      • +
                      +

                      基于非YARN的计算(参见ShellTask)

                      +
                        +
                      • 需要在 cn.escheduler.server.worker.task 下的 TaskManager 中创建自定义任务

                        +
                      • +
                      • 需要继承cn.escheduler.server.worker.task 下的 AbstractTask

                        +
                      • +
                      • 构造方法中实例化 ShellCommandExecutor

                        +
                        public ShellTask(TaskProps props, Logger logger) {
                        +  super(props, logger);
                        +
                        +  this.taskDir = props.getTaskDir();
                        +
                        +  this.processTask = new ShellCommandExecutor(this::logHandle,
                        +      props.getTaskDir(), props.getTaskAppId(),
                        +      props.getTenantCode(), props.getEnvFile(), props.getTaskStartTime(),
                        +      props.getTaskTimeout(), logger);
                        +  this.processDao = DaoFactory.getDaoInstance(ProcessDao.class);
                        +}
                        +

                        传入自定义任务的 TaskProps和自定义Logger,TaskProps 封装了任务的信息,Logger分装了自定义日志信息

                        +
                      • +
                      • 继承 AbstractParameters 自定义任务参数实体

                        +
                      • +
                      • 重写 AbstractTaskinit 方法中解析自定义任务参数实体

                        +
                      • +
                      • 重写 handle 方法,调用 ShellCommandExecutorrun 方法,第一个参数传入自己的command,第二个参数传入 ProcessDao,设置相应的 exitStatusCode

                        +
                      • +
                      +

                      基于非SHELL的任务(参见SqlTask)

                      +
                        +
                      • 需要在 cn.escheduler.server.worker.task 下的 TaskManager 中创建自定义任务
                      • +
                      • 需要继承cn.escheduler.server.worker.task 下的 AbstractTask
                      • +
                      • 继承 AbstractParameters 自定义任务参数实体
                      • +
                      • 构造方法或者重写 AbstractTaskinit 方法中,解析自定义任务参数实体
                      • +
                      • 重写 handle 方法实现业务逻辑并设置相应的exitStatusCode
                      • +
                      + + +
                      + +
                      +
                      +
                      + +

                      results matching ""

                      +
                        + +
                        +
                        + +

                        No results matching ""

                        + +
                        +
                        +
                        + +
                        +
                        + +
                        + + + + + + + + + + + + + + +
                        + + +
                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/zh_CN/_book/user-manual .md b/docs/zh_CN/_book/user-manual .md new file mode 100644 index 0000000000000000000000000000000000000000..99e4f461df366eb07f55ce49feb9f4279e583328 --- /dev/null +++ b/docs/zh_CN/_book/user-manual .md @@ -0,0 +1,700 @@ +# 使用手册 + +## 登录 + +- 输入http://192.168.xx.xx:8888/view/login/index.html 网址,输入用户名:admin,密码:escheduler123 登录 +

                        + +

                        + +- 登录之后每个页面的右上角都有用户的身份标识。点击下拉箭头包含用户信息和退出两个按钮 + +

                        + +

                        + +- 点击“用户信息”按钮,如下图: + + +

                        + +

                        + +- 点击”修改”按钮,修改用户信息 + +

                        + +

                        + +- 点击退出按钮则退出系统,返回登录页面 + +## 安全中心 + +- 只有管理员才有安全中心,安全中心的主要功能是给管理员提供管理普通用户的功能。 +- 管理员可以有多个,管理员是功能上的管理,不参与具体的业务。也就是说管理员是不能执行具体任务的。 + +### 租户管理 + +> 租户是Linux上的用户,用于作业的提交。 + + - 创建、编辑租户 + +

                        + +

                        + +- 租户编码:租户编码是Linux上的用户,唯一,不能重复 +- 租户名称:租户的名称 +- 队列:租户对应的YARN上的队列,在数据库 t_escheduler_queue 中设置 +- 描述:租户的描述信息 + + +### 用户管理 + +> 用户是EasyScheduler上的用户,用于EasyScheduler上的功能操作。 + +- 创建、编辑用户 +

                        + +

                        + +- 用户名称:用户的名称,唯一,不能重复 +- 租户:设置该用户所属的租户 +- 邮箱:输入用户的邮箱,用来邮件发送和任务告警 +- 手机:输入用户的手机号 + +**注意:如果该用户切换了租户,则该用户所在租户下所有资源将复制到切换的新租户下** + + +- 授权 + +> 管理员可以对普通用户进行非其创建的项目、资源、数据源和UDF函数进行授权。因为项目、资源、数据源和UDF函数授权方式都是一样的,所以以项目授权为例介绍。 + +- 1.点击指定人的授权按钮,如下图: + +

                        + +

                        + +- 2.选中项目按钮,进行项目授权 + +

                        + +

                        + +- 项目列表:是该用户未授权的项目 +- 已选项目:是该用户已授权的项目。 +- 特别注意:对于用户自己创建的项目,该用户拥有所有的权限。则项目列表和已选项目列表中不会体现。 + + +### 告警组管理 + +> 告警组是告警用户抽象出来的组,使用告警组来管理用户。 + +- 新建、编辑邮件组 + +

                        + +

                        + +- 组名称:输入组的名称 +- 组类型:支持邮件/短信两种 +- 备注:输入告警组的备注信息 + + +- 管理用户 + +

                        + +

                        + +- 管理用户列表:是未添加到该组的用户列表 +- 已选管理用户:是已添加到该组的用户列表 + + + +### 服务管理 + +> 服务管理是对EasyScheduler的Master、Worker的任务监控 + +#### Master +

                        + +

                        + +#### Worker +

                        + +

                        + +## 资源中心 + +> 资源中心主要分为文件管理和UDF函数管理。 +文件管理:主要是用户的程序,脚本和配置文件需要上传到HDFS进行统一管理 +UDF函数管理:对用户创建的UDF进行管理 + +### 文件管理 + +#### 创建文件 + +

                        + +

                        + +- 文件格式支持以下几种类型:txt、log、sh、conf、cfg、py、java、sql、xml、hql + + +#### 上传文件 + +

                        + +

                        + +- 文件名:输入文件的名称 +- 描述:输入文件的描述信息 +- 上传文件:点击上传按钮进行上传,将文件拖拽到上传区域,文件名会自动以上传的文件名称补全 + + +#### 文件查看 + +> 对可查看的文件类型,点击 文件名称 可以查看文件详情 + +

                        + +

                        + +#### 下载文件 + +> 可以在 文件详情 中点击右上角下载按钮下载文件,或者在文件列表后的下载按钮下载文件 + +#### 文件重命名 + +

                        + +

                        + +#### 删除 +- 文件列表,点击 删除 按钮,删除文件 + + +### UDF管理 + +#### 资源管理 + +> 资源管理和文件管理功能类似,不同之处是资源管理是上传的UDF函数,文件管理上传的是用户程序,脚本及配置文件 + +#### 函数管理 + +##### 创建、编辑UDF函数 + +

                        + +

                        + + 目前只支持HIVE的临时UDF函数 + +- UDF函数名称:输入UDF函数时的名称 +- 包名类名:输入UDF函数的全路径 +- 参数:用来标注函数的输入参数 +- 数据库名:预留字段,用于创建永久UDF函数 +- UDF资源:设置创建的UDF对应的资源文件 + +## 数据源中心 + +> 数据源中心支持MySQL、POSTGRESQL、HIVE及Spark数据源 + +### 创建、编辑MySQL数据源 + +

                        + +

                        + +- 数据源:选择MYSQL +- 数据源名称:输入数据源的名称 +- 描述:输入数据源的描述 +- IP/主机名:输入连接MySQL的IP +- 端口:输入连接MySQL的端口 +- 用户名:设置连接MySQL的用户名 +- 密码:设置连接MySQL的密码 +- 数据库名:输入连接MySQL的数据库名称 +- Jdbc连接参数:用于MySQL连接的参数设置,以JSON形式填写 + +### 创建、编辑POSTGRESQL数据源 + +

                        + +

                        + +- 数据源:选择POSTGRESQL +- 数据源名称:输入数据源的名称 +- 描述:输入数据源的描述 +- IP/主机名:输入连接POSTGRESQL的IP +- 端口:输入连接POSTGRESQL的端口 +- 用户名:设置连接POSTGRESQL的用户名 +- 密码:设置连接POSTGRESQL的密码 +- 数据库名:输入连接POSTGRESQL的数据库名称 +- Jdbc连接参数:用于POSTGRESQL连接的参数设置,以JSON形式填写 + + +### 创建、编辑HIVE数据源 + + 1.使用HiveServer2方式连接 + +

                        + +

                        + +- 数据源:选择HIVE +- 数据源名称:输入数据源的名称 +- 描述:输入数据源的描述 +- IP/主机名:输入连接HIVE的IP +- 端口:输入连接HIVE的端口 +- 用户名:设置连接HIVE的用户名 +- 密码:设置连接HIVE的密码 +- 数据库名:输入连接HIVE的数据库名称 +- Jdbc连接参数:用于HIVE连接的参数设置,以JSON形式填写 + + 2.使用HiveServer2 HA Zookeeper方式连接 + +

                        + +

                        + +- 数据源:选择HIVE +- 数据源名称:输入数据源的名称 +- 描述:输入数据源的描述 +- IP/主机名:输入连接Zookeeper的集群 +- 端口:输入连接Zookeeper的端口 +- 用户名:设置连接HIVE的用户名 +- 密码:设置连接HIVE的密码 +- 数据库名:输入连接HIVE的数据库名称 +- Jdbc连接参数:用于Zookeeper连接的参数设置,以JSON形式填写 + + +### 创建、编辑Spark数据源 + +

                        + +

                        + +- 数据源:选择Spark +- 数据源名称:输入数据源的名称 +- 描述:输入数据源的描述 +- IP/主机名:输入连接Spark的IP +- 端口:输入连接Spark的端口 +- 用户名:设置连接Spark的用户名 +- 密码:设置连接Spark的密码 +- 数据库名:输入连接Spark的数据库名称 +- Jdbc连接参数:用于Spark连接的参数设置,以JSON形式填写 + +## 首页 +

                        + +

                        + +> 首页是对所有项目在指定时间范围内的任务状态、流程状态和流程定义的统计。 + + 首页和项目首页的主要区别在于: + +- 首页中的图表是没有链接的,项目首页中图表是有链接的 +- 首页统计的是所有的项目,项目首页统计的是某一个项目 + +## 项目管理 +> 项目是调度对用户流程定义DAG分组的一个抽象 + +### 创建、编辑项目 + +

                        + +

                        + +- 项目名称:输入项目的名称 +- 描述:输入项目的描述 + + +### 项目首页 + +> 点击项目列表中的项目名称,可以跳转到指定的项目首页,如下图: + +

                        + +

                        + +- 项目首页其中包含四个部分,任务状态统计,流程状态统计、流程定义统计及统计的时间范围 +- 任务状态统计:是指在指定时间范围内,统计任务实例中的待运行、失败、运行中、完成、成功的个数 +- 流程状态统计:是指在指定时间范围内,统计流程实例中的待运行、失败、运行中、完成、成功的个数 +- 流程定义统计:是统计该用户创建的流程定义及管理员授予该用户的流程定义 + + 注意:可以点击图,或者数量跳转到相应的任务实例,流程实例和流程定义列表 + +### 工作流 + +> 工作流分为流程定义、流程实例和任务实例三个功能模块 + +- 流程定义:是可视化拖拽成的DAG的统称,它是静态的,没有状态 +- 流程实例:对流程定义的每次实例化会生成一个流程实例,是动态的,是有状态的 +- 任务实例:流程实例DAG中每个Task称为任务实例,是动态的,是有状态的 + + +#### 流程定义 + +##### 创建工作流 + +

                        + +

                        + +- 左侧工具栏 => 是目前调度支持的任务类型,当前调度支持SHELL、子流程、存储过程、SQL、MR、Spark和Python七种任务类型 +- 右上角图标 => 分别是拖动节点和选中项、选择线条连线、删除选中的线或节点、全屏和流程定义保持,其主要功能是DAG的绘制所用 + +##### 创建 SHELL节点 + +> 拖动工具栏中的![PNG](https://analysys.github.io/EasyScheduler/zh_CN/images/toolbar_SHELL.png)任务节点到画板中,双击任务节点,如下图: + +

                        + +

                        + +- 节点名称:一个流程定义中的节点名称是唯一的 +- 运行标志:标识这个节点是否能正常调度 +- 描述信息:描述该节点的功能 +- 失败重试次数:任务失败重新提交的次数,支持下拉和手填 +- 失败重试间隔:任务失败重新提交任务的时间间隔,支持下拉和手填 +- 脚本:用户开发的SHELL程序 +- 资源:是指脚本中需要调用的资源文件列表 +- 自定义参数:是SHELL局部的用户自定义参数,会替换脚本中以${变量}的内容 + +##### 创建 子流程 节点 + +> 拖动工具栏中的![PNG](https://analysys.github.io/EasyScheduler/zh_CN/images/toolbar_SUB_PROCESS.png)任务节点到画板中,双击任务节点,如下图: + +

                        + +

                        + +- 节点名称:一个流程定义中的节点名称是唯一的 +- 运行标志:标识这个节点是否能正常调度 +- 描述信息:描述该节点的功能 +- 子节点:是选择子流程的流程定义,右上角进入该子节点可以跳转到所选子流程的流程定义 + +##### 创建 存储过程 节点 + +> 拖动工具栏中的![PNG](https://analysys.github.io/EasyScheduler/zh_CN/images/toolbar_PROCEDURE.png)任务节点到画板中,双击任务节点,如下图: + +

                        + +

                        + +- 节点名称:一个流程定义中的节点名称是唯一的 +- 运行标志:标识这个节点是否能正常调度 +- 描述信息:描述该节点的功能 +- 失败重试次数:任务失败重新提交的次数,支持下拉和手填 +- 失败重试间隔:任务失败重新提交任务的时间间隔,支持下拉和手填 +- 数据源:存储过程的数据源类型支持MySQL和POSTGRESQL两种,选择对应的数据源 +- 方法:是存储过程的方法名称 +- 自定义参数:存储过程的自定义参数类型支持IN、OUT两种,数据类型支持VARCHAR、INTEGER、LONG、FLOAT、DOUBLE、DATE、TIME、TIMESTAMP、BOOLEAN九种数据类型 + + + +##### 创建 SQL 节点 + +> 拖动工具栏中的![PNG](https://analysys.github.io/EasyScheduler/zh_CN/images/toolbar_SQL.png)任务节点到画板中,双击任务节点,如下图: + +

                        + +

                        + +- 节点名称:一个流程定义中的节点名称是唯一的 +- 运行标志:标识这个节点是否能正常调度 +- 描述信息:描述该节点的功能 +- 失败重试次数:任务失败重新提交的次数,支持下拉和手填 +- 失败重试间隔:任务失败重新提交任务的时间间隔,支持下拉和手填 +- 数据源:SQL数据源支持MySQL、POSTGRESQL、HIVE和Spark四中数据源类型,选择对应的数据源 +- sql类型:支持查询和非查询两种,查询是select类型的查询,是有结果集返回的,可以指定邮件通知为表格、附件或表格附件三种模板。非查询是没有结果集返回的,是针对update、delete、insert三种类型的操作 +- sql参数:输入参数格式为key1=value1;key2=value2… +- sql语句:SQL语句 +- UDF函数:对于HIVE类型的数据源,可以引用资源中心中创建的UDF函数,其他类型的数据源暂不支持UDF函数 +- 自定义参数:SQL任务类型自定义参数类型和数据类型同存储过程任务类型一样。区别在于SQL任务类型自定义参数会替换sql语句中${变量},而存储过程是自定义参数顺序的给方法设置值 + +##### 创建 MR 节点 + +> 拖动工具栏中的![PNG](https://analysys.github.io/EasyScheduler/zh_CN/images/toolbar_MR.png)任务节点到画板中,双击任务节点,如下图: + + (1) JAVA程序 + +

                        + +

                        + +- 节点名称:一个流程定义中的节点名称是唯一的 +- 运行标志:标识这个节点是否能正常调度 +- 描述信息:描述该节点的功能 +- 失败重试次数:任务失败重新提交的次数,支持下拉和手填 +- 失败重试间隔:任务失败重新提交任务的时间间隔,支持下拉和手填 +- 主函数的class:是MR程序的入口Main Class的全路径 +- 程序类型:选择JAVA语言 +- 主jar包:是MR的jar包 +- 命令行参数:是设置MR程序的输入参数,支持自定义参数变量的替换 +- 其他参数:支持 –D、-files、-libjars、-archives格式 +- 资源: 如果其他参数中引用了资源文件,需要在资源中选择指定 +- 自定义参数:是MR局部的用户自定义参数,会替换脚本中以${变量}的内容 + + (2) Python程序 + +

                        + +

                        + +- 节点名称:一个流程定义中的节点名称是唯一的 +- 运行标志:标识这个节点是否能正常调度 +- 描述信息:描述该节点的功能 +- 失败重试次数:任务失败重新提交的次数,支持下拉和手填 +- 失败重试间隔:任务失败重新提交任务的时间间隔,支持下拉和手填 +- 程序类型:选择Python语言 +- 主jar包:是运行MR的Python jar包 +- 其他参数:支持 –D、-mapper、-reducer、-input -output格式,这里可以设置用户自定义参数的输入,比如: +- -mapper "mapper.py 1" -file mapper.py -reducer reducer.py -file reducer.py –input /journey/words.txt -output /journey/out/mr/${currentTimeMillis} +- 其中 -mapper 后的 mapper.py 1是两个参数,第一个参数是mapper.py,第二个参数是1 +- 资源: 如果其他参数中引用了资源文件,需要在资源中选择指定 +- 自定义参数:是MR局部的用户自定义参数,会替换脚本中以${变量}的内容 + +##### 创建 Spark 节点 + +> 拖动工具栏中的![PNG](https://analysys.github.io/EasyScheduler/zh_CN/images/toolbar_SPARK.png)任务节点到画板中,双击任务节点,如下图: + +

                        + +

                        + +- 节点名称:一个流程定义中的节点名称是唯一的 +- 运行标志:标识这个节点是否能正常调度 +- 描述信息:描述该节点的功能 +- 失败重试次数:任务失败重新提交的次数,支持下拉和手填 +- 失败重试间隔:任务失败重新提交任务的时间间隔,支持下拉和手填 +- 程序类型:支持JAVA、Scala和Python三种语言 +- 主函数的class:是Spark程序的入口Main Class的全路径 +- 主jar包:是Spark的jar包 +- 部署方式:支持yarn-cluster、yarn-client、和local三种模式 +- Driver内核数:可以设置Driver内核数及内存数 +- Executor数量:可以设置Executor数量、Executor内存数和Executor内核数 +- 命令行参数:是设置Spark程序的输入参数,支持自定义参数变量的替换。 +- 其他参数:支持 --jars、--files、--archives、--conf格式 +- 资源:如果其他参数中引用了资源文件,需要在资源中选择指定 +- 自定义参数:是MR局部的用户自定义参数,会替换脚本中以${变量}的内容 + + 注意:JAVA和Scala只是用来标识,没有区别,如果是Python开发的Spark则没有主函数的class,其他都是一样 + +##### 创建 Python 节点 + +> 拖动工具栏中的![PNG](https://analysys.github.io/EasyScheduler/zh_CN/images/toolbar_PYTHON.png)任务节点到画板中,双击任务节点,如下图: + +

                        + +

                        + +- 节点名称:一个流程定义中的节点名称是唯一的 +- 运行标志:标识这个节点是否能正常调度 +- 描述信息:描述该节点的功能 +- 失败重试次数:任务失败重新提交的次数,支持下拉和手填 +- 失败重试间隔:任务失败重新提交任务的时间间隔,支持下拉和手填 +- 脚本:用户开发的Python程序 +- 资源:是指脚本中需要调用的资源文件列表 +- 自定义参数:是Python局部的用户自定义参数,会替换脚本中以${变量}的内容 + +##### 创建 依赖 节点 + + +> 任务依赖分为水平依赖和垂直依赖 + +- 水平依赖就是指DAG图的有向依赖,是同一个流程实例任务节点的前驱,后继之间的依赖关系 + +- 垂直依赖是流程实例之间的任务依赖,基于定时的依赖。 + +> 拖动工具栏中的![PNG](https://analysys.github.io/EasyScheduler/zh_CN/images/toolbar_DEPENDENT.png)任务节点到画板中,双击任务节点,如下图: + +

                        + +

                        + +- 节点名称:一个流程定义中的节点名称是唯一的 +- 运行标志:标识这个节点是否能正常调度 +- 描述信息:描述该节点的功能 +- 失败重试次数:任务失败重新提交的次数,支持下拉和手填 +- 失败重试间隔:任务失败重新提交任务的时间间隔,支持下拉和手填 +- 任务依赖:增加依赖条件,选择依赖流程定义、节点名称(默认为全部节点)、依赖周期、依赖时间点 + +

                        + +

                        + +- 选择多个依赖条件之间的关系:或、且 + +

                        + +

                        + +#### 流程实例列表 + +> 流程实例列表页是可以显示所有本项目下所有流程实例的列表,并有对流程实例进行名称、状态、时间等字段的筛选功能。 +> 通过列表页可以直接对某一个流程实例进行编辑、重跑、恢复失败、暂停、停止、恢复暂停、删除、查看甘特图等操作. + +

                        + +

                        + +- 编辑功能: 对已经完成的流程实例,点击编辑按钮,可以对其编辑,如图: + +

                        + +

                        + +- 查看流程实例运行变量 + +

                        + +

                        + +- 点击隐藏按钮,查看流程实例运行变量。如下图: + +

                        + +

                        + +- 点击变量是对变量的复制 + +- 点击"重跑",可以对已经完成的流程实例进行重新运行操作,如图: + +

                        + +

                        + +- 点击"恢复失败", 可以对失败的流程进行恢复,直接从失败的任务节点开始运行。如图: + +

                        + +

                        + +- 点击"暂停", 可以对正在运行的流程进行**暂停**操作,如图: + +

                        + +

                        + +- 点击"停止",可以对正在运行的流程进行**停止**操作,如图: + +

                        + +

                        + +- 点击"恢复暂停",可以对暂停的流程恢复,直接从**暂停的节点**开始运行,如图: + +

                        + +

                        + +- 删除 +> 删除流程实例及流程实例下的任务实例 + +- Gantt + +> Gantt图纵轴是某个流程实例下的任务实例的拓扑排序,横轴是任务实例的运行时间 + +

                        + +

                        + +#### 任务实例列表页 + +

                        + +

                        + +- 点击任务实例节点,点击 查看历史,可以查看该流程实例运行的该任务实例列表 + +##### 查看日志 + +

                        + +

                        + +- 点击任务实例节点,点击 查看日志,可以查看该任务实例运行的日志,如下图: + +

                        + +

                        + +- 右上角是下载日志、刷新日志和放大/缩小按钮 +- 注意:日志查看是分片的查看,上下滚动查看 + +### 任务实例 + +> 任务实例是流程实例任务节点的列表 + +

                        + +

                        + + 两种方式查看任务实例: +- 第一种是通过流程实例任务节点 查看历史,这时查看的是此流程实例的任务实例 重跑的列表 +- 第二种是通过点击 流程实例 导航栏,调转到流程实例列表,这时查看的是所有流程实例的任务实例列表 + +> 查看日志:点击 查看日志 按钮,可下载和查看日志 + +## 系统参数 + ### 系统参数 + + + + + + + + + + + + + + +
                        变量含义
                        ${system.biz.date}日常调度实例定时的定时时间前一天,格式为 yyyyMMdd,补数据时,该日期 +1
                        ${system.biz.curdate}日常调度实例定时的定时时间,格式为 yyyyMMdd,补数据时,该日期 +1
                        ${system.datetime}日常调度实例定时的定时时间,格式为 yyyyMMddHHmmss,补数据时,该日期 +1
                        + + +### 时间自定义参数 + +> 支持代码中自定义变量名,声明方式:${变量名}。可以是引用 "系统参数" 或指定 "常量"。 + +> 我们定义这种基准变量为 $[...] 格式的,$[yyyyMMddHHmmss] 是可以任意分解组合的,比如:$[yyyyMMdd], $[HHmmss], $[yyyy-MM-dd] 等 + +> 也可以这样: + +- 后 N 年:$[add_months(yyyyMMdd,12*N)] +- 前 N 年:$[add_months(yyyyMMdd,-12*N)] +- 后 N 月:$[add_months(yyyyMMdd,N)] +- 前 N 月:$[add_months(yyyyMMdd,-N)] +- 后 N 周:$[yyyyMMdd+7*N] +- 前 N 周:$[yyyyMMdd-7*N] +- 后 N 天:$[yyyyMMdd+N] +- 前 N 天:$[yyyyMMdd-N] +- 后 N 小时:$[HHmmss+N/24] +- 前 N 小时:$[HHmmss-N/24] +- 后 N 分钟:$[HHmmss+N/24/60] +- 前 N 分钟:$[HHmmss-N/24/60] + + +### 用户自定义参数 + +> 用户自定义参数分为全局参数和局部参数。全局参数是保存流程定义和流程实例的时候传递的全局参数,全局参数可以在整个流程中的任何一个任务节点的局部参数引用。 + +> 例如: + +

                        + +

                        + +- global_bizdate为全局参数,引用的是系统参数。 + +

                        + +

                        + +- 任务中local_param_bizdate通过${global_bizdate}来引用全局参数,对于脚本可以通过${local_param_bizdate}来引用变量local_param_bizdate的值,或通过JDBC直接将local_param_bizdate的值set进去 diff --git a/docs/zh_CN/architecture-design.md b/docs/zh_CN/architecture-design.md new file mode 100644 index 0000000000000000000000000000000000000000..eeb420f22f3506b4f01237d895013e3c0225e68c --- /dev/null +++ b/docs/zh_CN/architecture-design.md @@ -0,0 +1,299 @@ +## 调度系统架构设计 +在对系统架构说明之前,我们先来认识一下调度系统常用的名词 + +### 1.名词解释 +**DAG:** 全称Directed Acyclic Graph,简称DAG。工作流中的Task任务以有向无环图的形式组装起来,从入度为零的节点进行拓扑遍历,直到无后继节点为止。举例如下图: + +

                        + dag示例 +

                        + dag示例 +

                        +

                        +**流程定义**:通过拖拽任务节点并建立任务节点的关联所形成的可视化**DAG** + +**流程实例**:流程实例是流程定义的实例化,可以通过手动启动或定时调度生成 + +**任务实例**:任务实例是流程定义中任务节点的实例化,标识着具体的任务执行状态 + +**任务类型**: 目前支持有SHELL、SQL、SUB_PROCESS、PROCEDURE、MR、SPARK、PYTHON、DEPENDENT,同时计划支持动态插件扩展,注意:其中子 **SUB_PROCESS** 也是一个单独的流程定义,是可以单独启动执行的 + +**调度方式:** 系统支持基于cron表达式的定时调度和手动调度。命令类型支持:启动工作流、从当前节点开始执行、恢复被容错的工作流、恢复暂停流程、从失败节点开始执行、补数、调度、重跑、暂停、停止、恢复等待线程。其中 **恢复被容错的工作流** 和 **恢复等待线程 **两种命令类型是由调度内部控制使用,外部无法调用 + +**定时调度**:系统采用 **quartz** 分布式调度器,并同时支持cron表达式可视化的生成 + +**依赖**:系统不单单支持 **DAG** 简单的前驱和后继节点之间的依赖,同时还提供**任务依赖**节点,支持**流程间的自定义任务依赖** + +**优先级** :支持流程实例和任务实例的优先级,如果流程实例和任务实例的优先级不设置,则默认是先进先出 + +**邮件告警**:支持 **SQL任务** 查询结果邮件发送,流程实例运行结果邮件告警及容错告警通知 + +**失败策略**:对于并行运行的任务,如果有任务失败,提供两种失败策略处理方式,**继续**是指不管并行运行任务的状态,直到流程失败结束。**结束**是指一旦发现失败任务,则同时Kill掉正在运行的并行任务,流程失败结束 + +**补数**:补历史数据,支持**区间并行和串行**两种补数方式 + +### 2.系统架构 + +#### 2.1 系统架构图 +

                        + 系统架构图 +

                        + 系统架构图 +

                        +

                        + +#### 2.2 架构说明 + +* **MasterServer** + + MasterServer采用分布式无中心设计理念,MasterServer主要负责 DAG 任务切分、任务提交监控,并同时监听其它MasterServer和WorkerServer的健康状态。 + MasterServer服务启动时向Zookeeper注册临时节点,通过监听Zookeeper临时节点变化来进行容错处理。 + + ##### 该服务内主要包含: + + - **Distributed Quartz**分布式调度组件,主要负责定时任务的启停操作,当quartz调起任务后,Master内部会有线程池具体负责处理任务的后续操作 + + - **MasterSchedulerThread**是一个扫描线程,定时扫描数据库中的 **command** 表,根据不同的**命令类型**进行不同的业务操作 + + - **MasterExecThread**主要是负责DAG任务切分、任务提交监控、各种不同命令类型的逻辑处理 + + - **MasterTaskExecThread**主要负责任务的持久化 + +* **WorkerServer** + + WorkerServer也采用分布式无中心设计理念,WorkerServer主要负责任务的执行和提供日志服务。WorkerServer服务启动时向Zookeeper注册临时节点,并维持心跳。 + ##### 该服务包含: + - **FetchTaskThread**主要负责不断从**Task Queue**中领取任务,并根据不同任务类型调用**TaskScheduleThread**对应执行器。 + + - **LoggerServer**是一个RPC服务,提供日志分片查看、刷新和下载等功能 + +* **ZooKeeper** + + ZooKeeper服务,系统中的MasterServer和WorkerServer节点都通过ZooKeeper来进行集群管理和容错。另外系统还基于ZooKeeper进行事件监听和分布式锁。 + 我们也曾经基于Redis实现过队列,不过我们希望EasyScheduler依赖到的组件尽量地少,所以最后还是去掉了Redis实现。 + +* **Task Queue** + + 提供任务队列的操作,目前队列也是基于Zookeeper来实现。由于队列中存的信息较少,不必担心队列里数据过多的情况,实际上我们压测过百万级数据存队列,对系统稳定性和性能没影响。 + +* **Alert** + + 提供告警相关接口,接口主要包括**告警**两种类型的告警数据的存储、查询和通知功能。其中通知功能又有**邮件通知**和**SNMP(暂未实现)**两种。 + +* **API** + + API接口层,主要负责处理前端UI层的请求。该服务统一提供RESTful api向外部提供请求服务。 + 接口包括工作流的创建、定义、查询、修改、发布、下线、手工启动、停止、暂停、恢复、从该节点开始执行等等。 + +* **UI** + + 系统的前端页面,提供系统的各种可视化操作界面,详见**[使用手册]()**部分。 + +#### 2.3 架构设计思想 + +##### 一、去中心化vs中心化 + +######中心化思想 +中心化的设计理念比较简单,分布式集群中的节点按照角色分工,大体上分为两种角色: +

                        + master-slave角色 +

                        +- Master的角色主要负责任务分发并监督Slave的健康状态,可以动态的将任务均衡到Slave上,以致Slave节点不至于“忙死”或”闲死”的状态。 +- Worker的角色主要负责任务的执行工作并维护和Master的心跳,以便Master可以分配任务给Slave。 + + + +中心化思想设计存在的问题: + +- 一旦Master出现了问题,则群龙无首,整个集群就会崩溃。为了解决这个问题,大多数Master/Slave架构模式都采用了主备Master的设计方案,可以是热备或者冷备,也可以是自动切换或手动切换,而且越来越多的新系统都开始具备自动选举切换Master的能力,以提升系统的可用性。 +- 另外一个问题是如果Scheduler在Master上,虽然可以支持一个DAG中不同的任务运行在不同的机器上,但是会产生Master的过负载。如果Scheduler在Slave上,则一个DAG中所有的任务都只能在某一台机器上进行作业提交,则并行任务比较多的时候,Slave的压力可能会比较大。 + + + +###### 去中心化 +

                        +

                        +- 在去中心化设计里,通常没有Master/Slave的概念,所有的角色都是一样的,地位是平等的,全球互联网就是一个典型的去中心化的分布式系统,联网的任意节点设备down机,都只会影响很小范围的功能。 +- 去中心化设计的核心设计在于整个分布式系统中不存在一个区别于其他节点的”管理者”,因此不存在单点故障问题。但由于不存在” 管理者”节点所以每个节点都需要跟其他节点通信才得到必须要的机器信息,而分布式系统通信的不可靠行,则大大增加了上述功能的实现难度。 +- 实际上,真正去中心化的分布式系统并不多见。反而动态中心化分布式系统正在不断涌出。在这种架构下,集群中的管理者是被动态选择出来的,而不是预置的,并且集群在发生故障的时候,集群的节点会自发的举行"会议"来选举新的"管理者"去主持工作。最典型的案例就是ZooKeeper及Go语言实现的Etcd。 + + + +- EasyScheduler的去中心化是Master/Worker注册到Zookeeper中,实现Master集群和Worker集群无中心,并使用Zookeeper分布式锁来选举其中的一台Master或Worker为“管理者”来执行任务。 + +##### 二、分布式锁实践 + +EasyScheduler使用ZooKeeper分布式锁来实现同一时刻只有一台Master执行Scheduler,或者只有一台Worker执行任务的提交。 +1. 获取分布式锁的核心流程算法如下 +

                        + 获取分布式锁流程 +

                        + +2. EasyScheduler中Scheduler线程分布式锁实现流程图: +

                        + 获取分布式锁流程 +

                        + + +##### 三、线程不足循环等待问题 + +- 如果一个DAG中没有子流程,则如果Command中的数据条数大于线程池设置的阈值,则直接流程等待或失败。 +- 如果一个大的DAG中嵌套了很多子流程,如下图则会产生“死等”状态: + +

                        + 线程不足循环等待问题 +

                        +上图中MainFlowThread等待SubFlowThread1结束,SubFlowThread1等待SubFlowThread2结束, SubFlowThread2等待SubFlowThread3结束,而SubFlowThread3等待线程池有新线程,则整个DAG流程不能结束,从而其中的线程也不能释放。这样就形成的子父流程循环等待的状态。此时除非启动新的Master来增加线程来打破这样的”僵局”,否则调度集群将不能再使用。 + +对于启动新Master来打破僵局,似乎有点差强人意,于是我们提出了以下三种方案来降低这种风险: + +1. 计算所有Master的线程总和,然后对每一个DAG需要计算其需要的线程数,也就是在DAG流程执行之前做预计算。因为是多Master线程池,所以总线程数不太可能实时获取。 +2. 对单Master线程池进行判断,如果线程池已经满了,则让线程直接失败。 +3. 增加一种资源不足的Command类型,如果线程池不足,则将主流程挂起。这样线程池就有了新的线程,可以让资源不足挂起的流程重新唤醒执行。 + +注意:Master Scheduler线程在获取Command的时候是FIFO的方式执行的。 + +于是我们选择了第三种方式来解决线程不足的问题。 + + +##### 四、容错设计 +容错分为服务宕机容错和任务重试,服务宕机容错又分为Master容错和Worker容错两种情况 + +######1. 宕机容错 + +服务容错设计依赖于ZooKeeper的Watcher机制,实现原理如图: + +

                        + EasyScheduler容错设计 +

                        +其中Master监控其他Master和Worker的目录,如果监听到remove事件,则会根据具体的业务逻辑进行流程实例容错或者任务实例容错。 + + + +- Master容错流程图: + +

                        + Master容错流程图 +

                        +ZooKeeper Master容错完成之后则重新由EasyScheduler中Scheduler线程调度,遍历 DAG 找到”正在运行”和“提交成功”的任务,对”正在运行”的任务监控其任务实例的状态,对”提交成功”的任务需要判断Task Queue中是否已经存在,如果存在则同样监控任务实例的状态,如果不存在则重新提交任务实例。 + + + +- Worker容错流程图: + +

                        + Worker容错流程图 +

                        +Master Scheduler线程一旦发现任务实例为” 需要容错”状态,则接管任务并进行重新提交。 + +注意:由于” 网络抖动”可能会使得节点短时间内失去和ZooKeeper的心跳,从而发生节点的remove事件。对于这种情况,我们使用最简单的方式,那就是节点一旦和ZooKeeper发生超时连接,则直接将Master或Worker服务停掉。 + +###### 2.任务失败重试 + +这里首先要区分任务失败重试、流程失败恢复、流程失败重跑的概念: + +- 任务失败重试是任务级别的,是调度系统自动进行的,比如一个Shell任务设置重试次数为3次,那么在Shell任务运行失败后会自己再最多尝试运行3次 +- 流程失败恢复是流程级别的,是手动进行的,恢复是从只能**从失败的节点开始执行**或**从当前节点开始执行** +- 流程失败重跑也是流程级别的,是手动进行的,重跑是从开始节点进行 + + + +接下来说正题,我们将工作流中的任务节点分了两种类型。 + +- 一种是业务节点,这种节点都对应一个实际的脚本或者处理语句,比如Shell节点,MR节点、Spark节点、依赖节点等。 + +- 还有一种是逻辑节点,这种节点不做实际的脚本或语句处理,只是整个流程流转的逻辑处理,比如子流程节等。 + +每一个**业务节点**都可以配置失败重试的次数,当该任务节点失败,会自动重试,直到成功或者超过配置的重试次数。**逻辑节点**不支持失败重试。但是逻辑节点里的任务支持重试。 + +如果工作流中有任务失败达到最大重试次数,工作流就会失败停止,失败的工作流可以手动进行重跑操作或者流程恢复操作 + + + +##### 五、任务优先级设计 +在早期调度设计中,如果没有优先级设计,采用公平调度设计的话,会遇到先行提交的任务可能会和后继提交的任务同时完成的情况,而不能做到设置流程或者任务的优先级,因此我们对此进行了重新设计,目前我们设计如下: + +- 按照**不同流程实例优先级**优先于**同一个流程实例优先级**优先于**同一流程内任务优先级**优先于**同一流程内任务**提交顺序依次从高到低进行任务处理。 + - 具体实现是根据任务实例的json解析优先级,然后把**流程实例优先级_流程实例id_任务优先级_任务id**信息保存在ZooKeeper任务队列中,当从任务队列获取的时候,通过字符串比较即可得出最需要优先执行的任务 + + - 其中流程定义的优先级是考虑到有些流程需要先于其他流程进行处理,这个可以在流程启动或者定时启动时配置,共有5级,依次为HIGHEST、HIGH、MEDIUM、LOW、LOWEST。如下图 +

                        + 流程优先级配置 +

                        + + - 任务的优先级也分为5级,依次为HIGHEST、HIGH、MEDIUM、LOW、LOWEST。如下图 +

                        + 任务优先级配置 +

                        + + +##### 六、Logback和gRPC实现日志访问 + +- 由于Web(UI)和Worker不一定在同一台机器上,所以查看日志不能像查询本地文件那样。有两种方案: + - 将日志放到ES搜索引擎上 + - 通过gRPC通信获取远程日志信息 + +- 介于考虑到尽可能的EasyScheduler的轻量级性,所以选择了gRPC实现远程访问日志信息。 + +

                        + grpc远程访问 +

                        + + +- 我们使用自定义Logback的FileAppender和Filter功能,实现每个任务实例生成一个日志文件。 +- FileAppender主要实现如下: + + ```java + /** + * task log appender + */ + public class TaskLogAppender extends FileAppender CREATE DATABASE escheduler DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; +mysql> GRANT ALL PRIVILEGES ON escheduler.* TO '{user}'@'%' IDENTIFIED BY '{password}'; +mysql> GRANT ALL PRIVILEGES ON escheduler.* TO '{user}'@'localhost' IDENTIFIED BY '{password}'; +mysql> flush privileges; +``` + +* 创建表 + +``` +说明:在 target/escheduler-{version}/sql/escheduler.sql和quartz.sql + +mysql -h {host} -u {user} -p{password} -D {db} < escheduler.sql + +mysql -h {host} -u {user} -p{password} -D {db} < quartz.sql +``` + + +## 创建部署用户 + +因为escheduler worker 都是以 sudo -u {linux-user} 方式来执行作业,所以部署用户需要有 sudo 权限,而且是免密的。 + +```部署账号 +vi /etc/sudoers + +# 部署用户是 escheduler 账号 +escheduler ALL=(ALL) NOPASSWD: NOPASSWD: ALL + +# 并且需要注释掉 Default requiretty 一行 +#Default requiretty +``` + +## 配置文件说明 + +``` +说明:配置文件位于 target/escheduler-{version}/conf 下面 +``` + +### escheduler-alert + +配置邮件告警信息 + + +* alert.properties + +``` +#alert type is EMAIL/SMS +alert.type=EMAIL + +# mail server configuration +mail.protocol=SMTP +mail.server.host=smtp.exmail.qq.com +mail.server.port=25 +mail.sender=xxxxxxx +mail.passwd=xxxxxxx + +# xls file path,need create if not exist +xls.file.path=/opt/xls +``` + + + + +### escheduler-common + +通用配置文件配置,队列选择及地址配置,通用文件目录配置 + +- common/common.properties + +``` +#task queue implementation, default "zookeeper" +escheduler.queue.impl=zookeeper + +# user data directory path, self configuration, please make sure the directory exists and have read write permissions +data.basedir.path=/tmp/escheduler + +# directory path for user data download. self configuration, please make sure the directory exists and have read write permissions +data.download.basedir.path=/tmp/escheduler/download + +# process execute directory. self configuration, please make sure the directory exists and have read write permissions +process.exec.basepath=/tmp/escheduler/exec + +# data base dir, resource file will store to this hadoop hdfs path, self configuration, please make sure the directory exists on hdfs and have read write permissions。"/escheduler" is recommended +data.store2hdfs.basepath=/escheduler + +# whether hdfs starts +hdfs.startup.state=true + +# system env path. self configuration, please make sure the directory and file exists and have read write execute permissions +escheduler.env.path=/opt/.escheduler_env.sh +escheduler.env.py=/opt/escheduler_env.py + +#resource.view.suffixs +resource.view.suffixs=txt,log,sh,conf,cfg,py,java,sql,hql,xml + +# is development state? default "false" +development.state=false +``` + + + +SHELL任务 环境变量配置 + +``` +说明:配置文件位于 target/escheduler-{version}/conf/env 下面 +``` + +.escheduler_env.sh +``` +export HADOOP_HOME=/opt/soft/hadoop +export HADOOP_CONF_DIR=/opt/soft/hadoop/etc/hadoop +export SPARK_HOME1=/opt/soft/spark1 +export SPARK_HOME2=/opt/soft/spark2 +export PYTHON_HOME=/opt/soft/python +export JAVA_HOME=/opt/soft/java +export HIVE_HOME=/opt/soft/hive + +export PATH=$HADOOP_HOME/bin:$SPARK_HOME1/bin:$SPARK_HOME2/bin:$PYTHON_HOME/bin:$JAVA_HOME/bin:$HIVE_HOME/bin:$PATH +``` + + +​ + +Python任务 环境变量配置 + +``` +说明:配置文件位于 target/escheduler-{version}/conf/env 下面 +``` + +escheduler_env.py +``` +import os + +HADOOP_HOME="/opt/soft/hadoop" +SPARK_HOME1="/opt/soft/spark1" +SPARK_HOME2="/opt/soft/spark2" +PYTHON_HOME="/opt/soft/python" +JAVA_HOME="/opt/soft/java" +HIVE_HOME="/opt/soft/hive" +PATH=os.environ['PATH'] +PATH="%s/bin:%s/bin:%s/bin:%s/bin:%s/bin:%s/bin:%s"%(HIVE_HOME,HADOOP_HOME,SPARK_HOME1,SPARK_HOME2,JAVA_HOME,PYTHON_HOME,PATH) + +os.putenv('PATH','%s'%PATH) +``` + + + +hadoop 配置文件 + +- common/hadoop/hadoop.properties + +``` +# ha or single namenode,If namenode ha needs to copy core-site.xml and hdfs-site.xml to the conf directory +fs.defaultFS=hdfs://mycluster:8020 + +#resourcemanager ha note this need ips , this empty if single +yarn.resourcemanager.ha.rm.ids=192.168.xx.xx,192.168.xx.xx + +# If it is a single resourcemanager, you only need to configure one host name. If it is resourcemanager HA, the default configuration is fine +yarn.application.status.address=http://ark1:8088/ws/v1/cluster/apps/%s + +``` + + + +定时器配置文件 + +- quartz.properties + +``` +#============================================================================ +# Configure Main Scheduler Properties +#============================================================================ +org.quartz.scheduler.instanceName = EasyScheduler +org.quartz.scheduler.instanceId = AUTO +org.quartz.scheduler.makeSchedulerThreadDaemon = true +org.quartz.jobStore.useProperties = false + +#============================================================================ +# Configure ThreadPool +#============================================================================ + +org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool +org.quartz.threadPool.makeThreadsDaemons = true +org.quartz.threadPool.threadCount = 25 +org.quartz.threadPool.threadPriority = 5 + +#============================================================================ +# Configure JobStore +#============================================================================ + +org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX +org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.StdJDBCDelegate +org.quartz.jobStore.tablePrefix = QRTZ_ +org.quartz.jobStore.isClustered = true +org.quartz.jobStore.misfireThreshold = 60000 +org.quartz.jobStore.clusterCheckinInterval = 5000 +org.quartz.jobStore.dataSource = myDs + +#============================================================================ +# Configure Datasources +#============================================================================ + +org.quartz.dataSource.myDs.driver = com.mysql.jdbc.Driver +org.quartz.dataSource.myDs.URL = jdbc:mysql://192.168.xx.xx:3306/escheduler?characterEncoding=utf8&useSSL=false +org.quartz.dataSource.myDs.user = xx +org.quartz.dataSource.myDs.password = xx +org.quartz.dataSource.myDs.maxConnections = 10 +org.quartz.dataSource.myDs.validationQuery = select 1 +``` + + + +zookeeper 配置文件 + + +- zookeeper.properties + +``` +#zookeeper cluster +zookeeper.quorum=192.168.xx.xx:2181,192.168.xx.xx:2181,192.168.xx.xx:2181 + +#escheduler root directory +zookeeper.escheduler.root=/escheduler + +#zookeeper server dirctory +zookeeper.escheduler.dead.servers=/escheduler/dead-servers +zookeeper.escheduler.masters=/escheduler/masters +zookeeper.escheduler.workers=/escheduler/workers + +#zookeeper lock dirctory +zookeeper.escheduler.lock.masters=/escheduler/lock/masters +zookeeper.escheduler.lock.workers=/escheduler/lock/workers + +#escheduler failover directory +zookeeper.escheduler.lock.masters.failover=/escheduler/lock/failover/masters +zookeeper.escheduler.lock.workers.failover=/escheduler/lock/failover/workers + +#escheduler failover directory +zookeeper.session.timeout=300 +zookeeper.connection.timeout=300 +zookeeper.retry.sleep=1000 +zookeeper.retry.maxtime=5 + +``` + + + +### escheduler-dao + +dao数据源配置 + +- dao/data_source.properties + +``` +# base spring data source configuration +spring.datasource.type=com.alibaba.druid.pool.DruidDataSource +spring.datasource.driver-class-name=com.mysql.jdbc.Driver +spring.datasource.url=jdbc:mysql://192.168.xx.xx:3306/escheduler?characterEncoding=UTF-8 +spring.datasource.username=xx +spring.datasource.password=xx + +# connection configuration +spring.datasource.initialSize=5 +# min connection number +spring.datasource.minIdle=5 +# max connection number +spring.datasource.maxActive=50 + +# max wait time for get a connection in milliseconds. if configuring maxWait, fair locks are enabled by default and concurrency efficiency decreases. +# If necessary, unfair locks can be used by configuring the useUnfairLock attribute to true. +spring.datasource.maxWait=60000 + +# milliseconds for check to close free connections +spring.datasource.timeBetweenEvictionRunsMillis=60000 + +# the Destroy thread detects the connection interval and closes the physical connection in milliseconds if the connection idle time is greater than or equal to minEvictableIdleTimeMillis. +spring.datasource.timeBetweenConnectErrorMillis=60000 + +# the longest time a connection remains idle without being evicted, in milliseconds +spring.datasource.minEvictableIdleTimeMillis=300000 + +#the SQL used to check whether the connection is valid requires a query statement. If validation Query is null, testOnBorrow, testOnReturn, and testWhileIdle will not work. +spring.datasource.validationQuery=SELECT 1 +#check whether the connection is valid for timeout, in seconds +spring.datasource.validationQueryTimeout=3 + +# when applying for a connection, if it is detected that the connection is idle longer than time Between Eviction Runs Millis, +# validation Query is performed to check whether the connection is valid +spring.datasource.testWhileIdle=true + +#execute validation to check if the connection is valid when applying for a connection +spring.datasource.testOnBorrow=true +#execute validation to check if the connection is valid when the connection is returned +spring.datasource.testOnReturn=false +spring.datasource.defaultAutoCommit=true +spring.datasource.keepAlive=true + +# open PSCache, specify count PSCache for every connection +spring.datasource.poolPreparedStatements=true +spring.datasource.maxPoolPreparedStatementPerConnectionSize=20 +``` + + + +### escheduler-server + +master配置文件 + +- master.properties + +``` +# master execute thread num +master.exec.threads=100 + +# master execute task number in parallel +master.exec.task.number=20 + +# master heartbeat interval +master.heartbeat.interval=10 + +# master commit task retry times +master.task.commit.retryTimes=5 + +# master commit task interval +master.task.commit.interval=100 + + +# only less than cpu avg load, master server can work. default value : the number of cpu cores * 2 +master.max.cpuload.avg=10 + +# only larger than reserved memory, master server can work. default value : physical memory * 1/10, unit is G. +master.reserved.memory=1 +``` + + + +worker配置文件 + +- worker.properties + +``` +# worker execute thread num +worker.exec.threads=100 + +# worker heartbeat interval +worker.heartbeat.interval=10 + +# submit the number of tasks at a time +worker.fetch.task.num = 10 + + +# only less than cpu avg load, worker server can work. default value : the number of cpu cores * 2 +worker.max.cpuload.avg=10 + +# only larger than reserved memory, worker server can work. default value : physical memory * 1/6, unit is G. +worker.reserved.memory=1 +``` + + + +### escheduler-api + +web配置文件 + +- application.properties + +``` +# server port +server.port=12345 + +# session config +server.session.timeout=7200 + + +server.context-path=/escheduler/ + +# file size limit for upload +spring.http.multipart.max-file-size=1024MB +spring.http.multipart.max-request-size=1024MB + +# post content +server.max-http-post-size=5000000 +``` + + + +## 伪分布式部署 + +### 1,创建部署用户 + +​ 如上 **创建部署用户** + +### 2,根据实际需求来创建HDFS根路径 + +​ 根据 **common/common.properties** 中 **hdfs.startup.state** 的配置来判断是否启动HDFS,如果启动,则需要创建HDFS根路径,并将 **owner** 修改为**部署用户**,否则忽略此步骤 + +### 3,项目编译 + +​ 如上进行 **项目编译** + +### 4,修改配置文件 + +​ 根据 **配置文件说明** 修改配置文件和 **环境变量** 文件 + +### 5,创建目录并将环境变量文件复制到指定目录 + +- 创建 **common/common.properties** 下的data.basedir.path、data.download.basedir.path和process.exec.basepath路径 + +- 将**.escheduler_env.sh** 和 **escheduler_env.py** 两个环境变量文件复制到 **common/common.properties**配置的**escheduler.env.path** 和 **escheduler.env.py** 的目录下,并将 **owner** 修改为**部署用户** + +### 6,启停服务 + +* 启停Master + +```启动master +sh ./bin/arklifter-daemon.sh start master-server +sh ./bin/arklifter-daemon.sh stop master-server +``` + +* 启停Worker + +``` +sh ./bin/arklifter-daemon.sh start worker-server +sh ./bin/arklifter-daemon.sh stop worker-server +``` + +* 启停Api + +``` +sh ./bin/arklifter-daemon.sh start api-server +sh ./bin/arklifter-daemon.sh stop api-server +``` +* 启停Logger + +``` +sh ./bin/arklifter-daemon.sh start logger-server +sh ./bin/arklifter-daemon.sh stop logger-server +``` +* 启停Alert + +``` +sh ./bin/arklifter-daemon.sh start alert-server +sh ./bin/arklifter-daemon.sh stop alert-server +``` + + + +## 分布式部署 + +### 1,创建部署用户 + +- 在需要部署调度的机器上如上 **创建部署用户** +- [将 **主机器** 和各个其它机器SSH打通](https://blog.csdn.net/thinkmore1314/article/details/22489203) + +### 2,根据实际需求来创建HDFS根路径 + +​ 根据 **common/common.properties** 中 **hdfs.startup.state** 的配置来判断是否启动HDFS,如果启动,则需要创建HDFS根路径,并将 **owner** 修改为**部署用户**,否则忽略此步骤 + +### 3,项目编译 + +​ 如上进行 **项目编译** + +### 4,将环境变量文件复制到指定目录 + +​ 将**.escheduler_env.sh** 和 **escheduler_env.py** 两个环境变量文件复制到 **common/common.properties**配置的**escheduler.env.path** 和 **escheduler.env.py** 的目录下,并将 **owner** 修改为**部署用户** + +### 5,修改 install.sh + +​ 修改 install.sh 中变量的值,替换成自身业务所需的值 + +### 6,一键部署 + +- 安装 pip install kazoo + +- 使用部署用户 sh install.sh 一键部署 + + + + +## 服务监控 + +monitor_server.py 脚本是监听,master和worker服务挂掉重启的脚本 + +注意:在全部服务都启动之后启动 + +nohup python -u monitor_server.py > nohup.out 2>&1 & + +## 日志查看 +日志统一存放于指定文件夹内 + +```日志路径 + logs/ + ├── escheduler-alert-server.log + ├── escheduler-master-server.log + |—— escheduler-worker-server.log + |—— escheduler-api-server.log + |—— escheduler-logger-server.log +``` \ No newline at end of file diff --git a/docs/zh_CN/book.json b/docs/zh_CN/book.json new file mode 100644 index 0000000000000000000000000000000000000000..545c1cc4d2e243a7f9374708def80880c519e921 --- /dev/null +++ b/docs/zh_CN/book.json @@ -0,0 +1,23 @@ +{ + "title": "调度系统-EasyScheduler", + "author": "YIGUAN", + "description": "调度系统", + "language": "zh-hans", + "gitbook": "3.2.3", + "styles": { + "website": "./styles/website.css" + }, + "structure": { + "readme": "README.md" + }, + "plugins":[ + "expandable-chapters", + "insert-logo-link" + ], + "pluginsConfig": { + "insert-logo-link": { + "src": "../images/logo.png", + "url": "/" + } + } +} \ No newline at end of file diff --git a/docs/zh_CN/frontend-deploy.md b/docs/zh_CN/frontend-deploy.md new file mode 100644 index 0000000000000000000000000000000000000000..7072ffde4a4b0fe579881202dd7867daa4fc0069 --- /dev/null +++ b/docs/zh_CN/frontend-deploy.md @@ -0,0 +1,287 @@ +# 前端部署文档 + + +## 前端项目环境构建及编译 + #### Escheduler项目前端技术栈 + ##### `Vue + es6 + Ans-ui + d3 + jsplumb + lodash` + + #### 开发环境 + ##### `Node` + +- #### node安装 +Node包下载 (注意版本 8.9.4) `https://nodejs.org/download/release/v8.9.4/` + +- #### 拉取前端项目到本地 +项目git仓库地址 `git@git.analysys.cn:analysys_changsha/escheduler.git` + +- #### 前端项目构建 +用命令行模式 `cd` 进入 `escheduler`项目目录并执行 `npm install` 拉取项目依赖包 + +> 如果 `npm install` 速度非常慢 + +> 可以转淘宝镜像命令行输入 `npm install -g cnpm --registry=https://registry.npm.taobao.org` + +> 运行 `cnpm install` + + + +> ##### !!!这里特别注意 项目如果在拉取依赖包的过程中报 " node-sass error " 错误,请在执行完后再次执行以下命令 +``` +npm install node-sass --unsafe-perm //单独安装node-sass依赖 +``` + +项目根目录创建`.env`为后缀名的文件并输入 +``` +# 前端代理的接口地址 +API_BASE = http://192.168.220.204:12345 + +# 如果您需要用ip访问项目可以把 "#" 号去掉 +#DEV_HOST = 192.168.6.132 +``` +运行 +- `npm start` 项目开发环境 (启动后访问地址 http://localhost:8888/#/) + +- `npm run build` 项目打包 (打包后根目录会创建一个名为dist文件夹,用于发布线上Nginx) + +## 安装及配置 +### (1-1) Nginx安装 +安装 `wget http://nginx.org/download/nginx-1.10.1.tar.gz` + +Nginx的配置及运行需要pcre、zlib等软件包的支持,因此应预先安装这些软件的开发包(devel),以便提供相应的库和头文件,确保Nginx的安装顺利完成。 + +``` +[root@nginx ~]# service iptables stop +[root@nginx ~]# setenforce 0 +[root@nginx ~]# mount /dev/cdrom /mnt/ +[root@nginx ~]# vim /etc/yum.repos.d/yum.repo +[base] +name=RedHat Enterprise Linux Server +baseurl=file:///mnt/Packages +gpgcheck=0 +[root@nginx ~]# yum -y install pcre-devel zilb-devel openssl-devel +``` + + +### (1-2) 创建运行用户、组 +Nginx服务程序默认以nobody身份运行,建议为其创建专门的用户账号,以便更准确地控制其访问权限,增加灵活性、降低安全风险。如:创建一个名为nginx的用户,不建立宿主目录,也禁止登录到shell环境。 + +``` +[root@nginx ~]# useradd -M -s /sbin/nologin escheduler +``` + + + + + +### (1-3) 编译安装nginx +释放nginx源码包 +``` +[root@nginx ~]# tar xf nginx-1.6.2.tar.gz -C /usr/src/ +``` + +编译前配置 + +``` +[root@nginx ~]# cd /usr/src/nginx-1.6.2/ +[root@nginx nginx-1.6.2]# ./configure --prefix=/usr/local/nginx --user=escheduler --group=escheduler --with-http_stub_status_module --with-http_ssl_module --with-http_flv_module --with-http_gzip_static_module +``` + +注:配置前可以参考 ./configure --help给出说明 + +``` +--prefix 设定Nginx的安装目录 +--user和—group 指定Nginx运行用户和组 +--with-http_stub_status_module 启用http_stub_status_module模块以支持状态统计 +--with-http_ssl_module 启用SSL模块 +``` +> #### 错误 +``` +[root@centos nginx-1.6.2]# ./configure --prefix=/usr/local/nginx --user=escheduler --group=escheduler --with-http_stub_status_module --with-http_ssl_module --with-http_flv_module --with-http_gzip_static_module +checking for OS ++ Linux 2.6.32-431.el6.i686 i686 +checking for C compiler ... not found +./configure: error: C compiler cc is not found +``` + +> #### 解决方法 +``` +yum -y install gcc gcc-c++ +``` + +编译 安装 +``` +[root@nginx nginx-1.6.2]# make && make install +``` + +为了使Nginx服务器的运行更加方便,可以为主程序nginx创建链接文件,以便管理员直接执行nginx命令就可以调用Nginx的主程序。 +``` +[root@nginx nginx-1.6.2]# ln -s /usr/local/nginx/sbin/nginx /usr/local/bin/ +[root@nginx nginx-1.6.2]# ll /usr/local/bin/nginx +lrwxrwxrwx 1 root root 27 12-29 07:24 /usr/local/bin/nginx -> /usr/local/nginx/sbin/nginx +``` + +Nginx的运行控制 +与Apache的主程序httpd类似,Nginx的主程序也提供了"-t"选项用来对配置文件进行检查,以便找出不当或错误的配置。配置文件nginx.conf默认位于安装目录/usr/local/nginx/conf/目录中。若要检查位于其他位置的配置文件,可使用"-c"选项来指定路径。 +``` +root@nginx conf]# nginx -t +nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok +nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful +``` + +启动、停止Nginx +直接运行nginx即可启动Nginx服务器,这种方式将使用默认的配置文件,若要改用其他配置文件,需添加"-c 配置文件路径"选项来指定路径。需要注意的是,若服务器中已安装有httpd等其他WEB服务软件,应采取措施(修改端口,停用或卸载)避免部突。 +``` +[root@nginx conf]# chown -R escheduler:escheduler /usr/local/nginx + +/usr/local/nginx/conf/nginx.conf + +[root@nginx conf]# netstat -anpt |grep :80 +[root@nginx conf]# nginx +[root@nginx conf]# netstat -anpt |grep :80 +tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 6810/nginx: master +``` + +通过检查 Nginx程序的监听状态,或者在浏览器中访问此WEB服务(默认页面将显示"Welcome to nginx!"),可以确认Nginx服务是否正常运行。 +``` +[root@nginx ~]# yum -y install elinks +[root@nginx ~]# elinks --dump http://localhost + Welcome to nginx! +``` + +主程序Nginx支持标准的进程信号,通过kill或者killall命令传送 +``` +HUP 重载配置 等同于-1 +QUIT 退出进程 等同于-3 +KILL 杀死进程 +[root@nginx ~]# killall -s HUP nginx +[root@nginx ~]# killall -s QUIT nginx +[root@nginx ~]# netstat -anpt |grep :80 +``` + +当Nginx进程运行时,PID号默认存放在logs/目录下的nginx.pid文件中,因此若改用kill命令,也可以根据nginx.pid文件中的PID号来进行控制。 +为了使Nginx服务的启动、停止、重载等操作更加方便,可以编写Nginx服务脚本,并使用chkconfig和service工具来进行管理,也更加符合RHEL系统的管理习惯。 +``` +[root@nginx ~]# vim /etc/init.d/nginx +``` + +脚本一 +``` +#!/bin/bash +# chkconfig: 2345 99 20 +# description: Nginx Server Control Script +PROG="/usr/local/nginx/sbin/nginx" +PIDF="/usr/local/nginx/logs/nginx.pid" +case "$1" in +start) + $PROG +;; +stop) + kill -s QUIT $(cat $PIDF) +;; +restart) + $0 stop + $0 start +;; +reload) + kill -s HUP $(cat $PIDF) +;; +*) + echo "Usage: $0 (start|stop|restart|reload)" + exit 1 +esac +exit 0 + +[root@nginx ~]# chmod +x /etc/init.d/nginx +[root@nginx ~]# chkconfig --add nginx +[root@nginx ~]# chkconfig nginx on +[root@nginx ~]# chkconfig --list nginx +nginx 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭 +``` + +报错的话: `/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf` + +这样就可以通过nginx脚本来启动、停止、重启、重载Nginx服务器了。 + +### (2-1) root安装 + +安装epel源 `yum install epel-release -y` + +安装Nginx `yum install nginx -y` + +#### 命令 + +- 启用 `systemctl enable nginx` + +- 重启 `systemctl restart nginx` + +- 状态 `systemctl status nginx` + + +#项目生产环境配置 + + +> #### 创建静态页面存放目录 +``` +mkdir /data2_4T/escheduler_front/escheduler/server +``` +> #### 配置文件地址 +``` +/etc/nginx/conf.d/default.conf +``` +> #### 配置信息 +``` +server { + listen 8888;# 访问端口 + server_name localhost; + #charset koi8-r; + #access_log /var/log/nginx/host.access.log main; + location / { + root /data2_4T/escheduler_front/escheduler/server; # 静态文件目录 + index index.html index.html; + } + location /escheduler { + proxy_pass http://192.168.220.181:12345; # 接口地址 + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header x_real_ipP $remote_addr; + proxy_set_header remote_addr $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_http_version 1.1; + proxy_connect_timeout 4s; + proxy_read_timeout 30s; + proxy_send_timeout 12s; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + } + #error_page 404 /404.html; + # redirect server error pages to the static page /50x.html + # + error_page 500 502 503 504 /50x.html; + location = /50x.html { + root /usr/share/nginx/html; + } +} +``` +> #### 重启Nginx服务 +``` +systemctl restart nginx +``` + + + +## 前端项目发布 + +前端在开发环境(dev)中运行 `npm run build` 命令,生成打包文件(dist)包 + +再拷贝到服务器 `/data2_4T/escheduler_front/escheduler/server`(服务器静态页面存放目录) + +访问地址 `http://localhost:8888/#/` + + +## 问题 +#### 1. 上传文件大小限制 +编辑配置文件 `vi /etc/nginx/nginx.conf` +``` +# 更改上传大小 +client_max_body_size 1024m +``` \ No newline at end of file diff --git a/docs/zh_CN/frontend-development.md b/docs/zh_CN/frontend-development.md new file mode 100644 index 0000000000000000000000000000000000000000..af3e635b9fe8af6264a14b42e4bb82d65f853dfe --- /dev/null +++ b/docs/zh_CN/frontend-development.md @@ -0,0 +1,562 @@ +# 前端开发文档 + +### 技术选型 +``` +Vue mvvm框架 + +Es6 ECMAScript 6.0 + +Ans-ui Analysys-ui + +D3 可视化库图表库 + +Jsplumb 连线插件库 + +Lodash 高性能的 JavaScript 实用工具库 +``` + +### 项目目录结构 + +`build` 打包及开发环境项目的一些webpack配置 + +`node_modules` 开发环境node依赖包 + +`src` 项目所需文件 + +`src => combo` 项目第三方资源本地化 `npm run combo`具体查看`build/combo.js` + +`src => font` 字体图标库可访问 https://www.iconfont.cn 进行添加 注意:字体库用的自己的 二次开发需要重新引入自己的库 `src/sass/common/_font.scss` + +`src => images` 公共图片存放 + +`src => js` js/vue + +`src => lib` 公司内部组件(公司组件库开源后可删掉) + +`src => sass` sass文件 一个页面对应一个sass文件 + +`src => view` 页面文件 一个页面对应一个html文件 + +``` +> 项目采用vue单页面应用(SPA)开发 +- 所有页面入口文件在 `src/js/conf/${对应页面文件名 => home}` 的 `index.js` 入口文件 +- 对应的sass文件则在 `src/sass/conf/${对应页面文件名 => home}/index.scss` +- 对应的html文件则在 `src/view/${对应页面文件名 => home}/index.html` +``` + +公共模块及util `src/js/module` + +`components` => 内部项目公共组件 + +`download` => 下载组件 + +`echarts` => 图表组件 + +`filter` => 过滤器和vue管道 + +`i18n` => 国际化 + +`io` => io请求封装 基于axios + +`mixin` => vue mixin 公共部分 用于disabled操作 + +`permissions` => 权限操作 + +`util` => 工具 + +### 系统功能模块 + +首页 => `http://localhost:8888/#/home` + +项目管理 => `http://localhost:8888/#/projects/list` +``` +| 项目首页 +| 工作流 + - 工作流定义 + - 工作流实例 + - 任务实例 +``` + +资源管理 => `http://localhost:8888/#/resource/file` +``` +| 文件管理 +| UDF管理 + - 资源管理 + - 函数管理 +``` + +数据源管理 => `http://localhost:8888/#/datasource/list` + +安全中心 => `http://localhost:8888/#/security/tenant` +``` +| 租户管理 +| 用户管理 +| 告警组管理 + - master + - worker +``` + +用户中心 => `http://localhost:8888/#/user/account` + + +## 路由和状态管理 + +项目 `src/js/conf/home` 下分为 + +`pages` => 路由指向页面目录 +``` + 路由地址对应的页面文件 +``` + +`router` => 路由管理 +``` +vue的路由器,在每个页面的入口文件index.js 都会注册进来 具体操作:https://router.vuejs.org/zh/ +``` + +`store` => 状态管理 +``` +每个路由对应的页面都有一个状态管理的文件 分为: + +actions => mapActions => 详情:https://vuex.vuejs.org/zh/guide/actions.html + +getters => mapGetters => 详情:https://vuex.vuejs.org/zh/guide/getters.html + +index => 入口 + +mutations => mapMutations => 详情:https://vuex.vuejs.org/zh/guide/mutations.html + +state => mapState => 详情:https://vuex.vuejs.org/zh/guide/state.html + +具体操作:https://vuex.vuejs.org/zh/ + +``` + + +## 规范 +## Vue规范 +##### 1.组件名 +组件名为多个单词,并且用连接线(-)连接,避免与 HTML 标签冲突,并且结构更加清晰。 +``` +// 正例 +export default { + name: 'page-article-item' +} +``` + +##### 2.组件文件 +`src/js/module/components`项目内部公共组件书写文件夹名与文件名同名,公共组件内部所拆分的子组件与util工具都放置组件内部 `_source`文件夹里。 +``` +└── components + ├── header + ├── header.vue + └── _source + └── nav.vue + └── util.js + ├── conditions + ├── conditions.vue + └── _source + └── serach.vue + └── util.js +``` + +##### 3.Prop +定义 Prop 的时候应该始终以驼峰格式(camelCase)命名,在父组件赋值的时候使用连接线(-)。 +这里遵循每个语言的特性,因为在 HTML 标记中对大小写是不敏感的,使用连接线更加友好;而在 JavaScript 中更自然的是驼峰命名。 +``` +// Vue +props: { + articleStatus: Boolean +} +// HTML + +``` + +Prop 的定义应该尽量详细的指定其类型、默认值和验证。 + +示例: + +``` +props: { + attrM: Number, + attrA: { + type: String, + required: true + }, + attrZ: { + type: Object, + // 数组/对象的默认值应该由一个工厂函数返回 + default: function () { + return { + msg: '成就你我' + } + } + }, + attrE: { + type: String, + validator: function (v) { + return !(['success', 'fail'].indexOf(v) === -1) + } + } +} +``` + +##### 4.v-for +在执行 v-for 遍历的时候,总是应该带上 key 值使更新 DOM 时渲染效率更高。 +``` +
                          +
                        • + {{ item.title }} +
                        • +
                        +``` + +v-for 应该避免与 v-if 在同一个元素(`例如:
                      • `)上使用,因为 v-for 的优先级比 v-if 更高,为了避免无效计算和渲染,应该尽量将 v-if 放到容器的父元素之上。 +``` +
                          +
                        • + {{ item.title }} +
                        • +
                        +``` + +##### 5.v-if / v-else-if / v-else +若同一组 v-if 逻辑控制中的元素逻辑相同,Vue 为了更高效的元素切换,会复用相同的部分,`例如:value`。为了避免复用带来的不合理效果,应该在同种元素上加上 key 做标识。 +``` +
                        + {{ mazeyData }} +
                        +
                        + 无数据 +
                        +``` + +##### 6.指令缩写 +为了统一规范始终使用指令缩写,使用`v-bind`,`v-on`并没有什么不好,这里仅为了统一规范。 +``` + +``` + +##### 7.单文件组件的顶级元素顺序 +样式后续都是打包在一个文件里,所有在单个vue文件中定义的样式,在别的文件里同类名的样式也是会生效的所有在创建一个组件前都会有个顶级类名 +注意:项目内已经增加了sass插件,单个vue文件里可以直接书写sass语法 +为了统一和便于阅读,应该按 `