W6IT{!St5~1{i=i}zAy76p%_|w8rh@@c0Axr!ns=D-X+|*sY6!@wacG9%)Qn*O
zl0sa739kT-&_?#oVxXF6tOnqTD)cZ}2vi$`ZU8RLAlo8=_z#*P3xI~i!lEh+Pdu-L
zx{d*wgjtXbnGX_Yf@Tc7Q3YhLhPvc8noGJs2DA~1DySiA&6V{5JzFt
ojAY1KXm~va;tU{v7C?Xj0BHw!K;2aXV*mgE07*qoM6N<$f;4TDA^-pY
literal 0
HcmV?d00001
diff --git a/doc/script-dir/jquery-3.6.1.min.js b/doc/script-dir/jquery-3.6.1.min.js
new file mode 100644
index 0000000..2c69bc9
--- /dev/null
+++ b/doc/script-dir/jquery-3.6.1.min.js
@@ -0,0 +1,2 @@
+/*! jQuery v3.6.1 | (c) OpenJS Foundation and other contributors | jquery.org/license */
+!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,y=n.hasOwnProperty,a=y.toString,l=a.call(Object),v={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.1",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&v(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!y||!y.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ve(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ye(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ve(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],y=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML=" ",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||y.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||y.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||y.push(".#.+[+~]"),e.querySelectorAll("\\\f"),y.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML=" ";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),y=y.length&&new RegExp(y.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),v=t||K.test(a.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)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&v(p,e)?-1:t==C||t.ownerDocument==p&&v(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!y||!y.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===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]||se.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]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(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(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),v.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",v.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML=" ",v.option=!!ce.lastChild;var ge={thead:[1,""],col:[2,""],tr:[2,""],td:[3,""],_default:[0,"",""]};function ye(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n",""]);var me=/<|?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),v.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(v.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return B(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=_e(v.pixelPosition,function(e,t){if(t)return t=Be(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return B(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.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,n){S.fn[n]=function(e,t){return 0",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=x(e||this.defaultElement||this)[0],this.element=x(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=x(),this.hoverable=x(),this.focusable=x(),this.classesElementLookup={},e!==this&&(x.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=x(e.style?e.ownerDocument:e.document||e),this.window=x(this.document[0].defaultView||this.document[0].parentWindow)),this.options=x.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:x.noop,_create:x.noop,_init:x.noop,destroy:function(){var i=this;this._destroy(),x.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:x.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return x.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=x.widget.extend({},this.options[t]),n=0;n
"),i=e.children()[0];return x("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthC(E(s),E(n))?o.important="horizontal":o.important="vertical",c.using.call(this,t,o)}),l.offset(x.extend(u,{using:t}))})},x.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,l=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.lastMousePosition={x:null,y:null},this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault(),this._activateItem(t)},"click .ui-menu-item":function(t){var e=x(t.target),i=x(x.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&e.not(".ui-state-disabled").length&&(this.select(t),t.isPropagationStopped()||(this.mouseHandled=!0),e.has(".ui-menu").length?this.expand(t):!this.element.is(":focus")&&i.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":"_activateItem","mousemove .ui-menu-item":"_activateItem",mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this._menuItems().first();e||this.focus(t,i)},blur:function(t){this._delay(function(){x.contains(this.element[0],x.ui.safeActiveElement(this.document[0]))||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t,!0),this.mouseHandled=!1}})},_activateItem:function(t){var e,i;this.previousFilter||t.clientX===this.lastMousePosition.x&&t.clientY===this.lastMousePosition.y||(this.lastMousePosition={x:t.clientX,y:t.clientY},e=x(t.target).closest(".ui-menu-item"),i=x(t.currentTarget),e[0]===i[0]&&(i.is(".ui-state-active")||(this._removeClass(i.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(t,i))))},_destroy:function(){var t=this.element.find(".ui-menu-item").removeAttr("role aria-disabled").children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),t.children().each(function(){var t=x(this);t.data("ui-menu-submenu-caret")&&t.remove()})},_keydown:function(t){var e,i,s,n=!0;switch(t.keyCode){case x.ui.keyCode.PAGE_UP:this.previousPage(t);break;case x.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case x.ui.keyCode.HOME:this._move("first","first",t);break;case x.ui.keyCode.END:this._move("last","last",t);break;case x.ui.keyCode.UP:this.previous(t);break;case x.ui.keyCode.DOWN:this.next(t);break;case x.ui.keyCode.LEFT:this.collapse(t);break;case x.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case x.ui.keyCode.ENTER:case x.ui.keyCode.SPACE:this._activate(t);break;case x.ui.keyCode.ESCAPE:this.collapse(t);break;default:e=this.previousFilter||"",s=n=!1,i=96<=t.keyCode&&t.keyCode<=105?(t.keyCode-96).toString():String.fromCharCode(t.keyCode),clearTimeout(this.filterTimer),i===e?s=!0:i=e+i,e=this._filterMenuItems(i),(e=s&&-1!==e.index(this.active.next())?this.active.nextAll(".ui-menu-item"):e).length||(i=String.fromCharCode(t.keyCode),e=this._filterMenuItems(i)),e.length?(this.focus(t,e),this.previousFilter=i,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}n&&t.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var t,e,s=this,n=this.options.icons.submenu,i=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),e=i.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=x(this),e=t.prev(),i=x("").data("ui-menu-submenu-caret",!0);s._addClass(i,"ui-menu-icon","ui-icon "+n),e.attr("aria-haspopup","true").prepend(i),t.attr("aria-labelledby",e.attr("id"))}),this._addClass(e,"ui-menu","ui-widget ui-widget-content ui-front"),(t=i.add(this.element).find(this.options.items)).not(".ui-menu-item").each(function(){var t=x(this);s._isDivider(t)&&s._addClass(t,"ui-menu-divider","ui-widget-content")}),i=(e=t.not(".ui-menu-item, .ui-menu-divider")).children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(e,"ui-menu-item")._addClass(i,"ui-menu-item-wrapper"),t.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!x.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){var i;"icons"===t&&(i=this.element.find(".ui-menu-icon"),this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",String(t)),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),i=this.active.children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",i.attr("id")),i=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),(i=e.children(".ui-menu")).length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(t){var e,i,s;this._hasScroll()&&(i=parseFloat(x.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(x.css(this.activeMenu[0],"paddingTop"))||0,e=t.offset().top-this.activeMenu.offset().top-i-s,i=this.activeMenu.scrollTop(),s=this.activeMenu.height(),t=t.outerHeight(),e<0?this.activeMenu.scrollTop(i+e):s",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,liveRegionTimer:null,_create:function(){var i,s,n,t=this.element[0].nodeName.toLowerCase(),e="textarea"===t,t="input"===t;this.isMultiLine=e||!t&&this._isContentEditable(this.element),this.valueMethod=this.element[e||t?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(t){if(this.element.prop("readOnly"))s=n=i=!0;else{s=n=i=!1;var e=x.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:i=!0,this._move("previousPage",t);break;case e.PAGE_DOWN:i=!0,this._move("nextPage",t);break;case e.UP:i=!0,this._keyEvent("previous",t);break;case e.DOWN:i=!0,this._keyEvent("next",t);break;case e.ENTER:this.menu.active&&(i=!0,t.preventDefault(),this.menu.select(t));break;case e.TAB:this.menu.active&&this.menu.select(t);break;case e.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(t),t.preventDefault());break;default:s=!0,this._searchTimeout(t)}}},keypress:function(t){if(i)return i=!1,void(this.isMultiLine&&!this.menu.element.is(":visible")||t.preventDefault());if(!s){var e=x.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:this._move("previousPage",t);break;case e.PAGE_DOWN:this._move("nextPage",t);break;case e.UP:this._keyEvent("previous",t);break;case e.DOWN:this._keyEvent("next",t)}}},input:function(t){if(n)return n=!1,void t.preventDefault();this._searchTimeout(t)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){clearTimeout(this.searching),this.close(t),this._change(t)}}),this._initSource(),this.menu=x("").appendTo(this._appendTo()).menu({role:null}).hide().attr({unselectable:"on"}).menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault()},menufocus:function(t,e){var i,s;if(this.isNewMenu&&(this.isNewMenu=!1,t.originalEvent&&/^mouse/.test(t.originalEvent.type)))return this.menu.blur(),void this.document.one("mousemove",function(){x(t.target).trigger(t.originalEvent)});s=e.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",t,{item:s})&&t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(s.value),(i=e.item.attr("aria-label")||s.value)&&String.prototype.trim.call(i).length&&(clearTimeout(this.liveRegionTimer),this.liveRegionTimer=this._delay(function(){this.liveRegion.html(x("").text(i))},100))},menuselect:function(t,e){var i=e.item.data("ui-autocomplete-item"),s=this.previous;this.element[0]!==x.ui.safeActiveElement(this.document[0])&&(this.element.trigger("focus"),this.previous=s,this._delay(function(){this.previous=s,this.selectedItem=i})),!1!==this._trigger("select",t,{item:i})&&this._value(i.value),this.term=this._value(),this.close(t),this.selectedItem=i}}),this.liveRegion=x("
",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(t){var e=this.menu.element[0];return t.target===this.element[0]||t.target===e||x.contains(e,t.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var t=this.options.appendTo;return t=!(t=!(t=t&&(t.jquery||t.nodeType?x(t):this.document.find(t).eq(0)))||!t[0]?this.element.closest(".ui-front, dialog"):t).length?this.document[0].body:t},_initSource:function(){var i,s,n=this;Array.isArray(this.options.source)?(i=this.options.source,this.source=function(t,e){e(x.ui.autocomplete.filter(i,t.term))}):"string"==typeof this.options.source?(s=this.options.source,this.source=function(t,e){n.xhr&&n.xhr.abort(),n.xhr=x.ajax({url:s,data:t,dataType:"json",success:function(t){e(t)},error:function(){e([])}})}):this.source=this.options.source},_searchTimeout:function(s){clearTimeout(this.searching),this.searching=this._delay(function(){var t=this.term===this._value(),e=this.menu.element.is(":visible"),i=s.altKey||s.ctrlKey||s.metaKey||s.shiftKey;t&&(e||i)||(this.selectedItem=null,this.search(null,s))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length
").append(x("").text(e.label)).appendTo(t)},_move:function(t,e){if(this.menu.element.is(":visible"))return this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),void this.menu.blur()):void this.menu[t](e);this.search(null,e)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){this.isMultiLine&&!this.menu.element.is(":visible")||(this._move(t,e),e.preventDefault())},_isContentEditable:function(t){if(!t.length)return!1;var e=t.prop("contentEditable");return"inherit"===e?this._isContentEditable(t.parent()):"true"===e}}),x.extend(x.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,e){var i=new RegExp(x.ui.autocomplete.escapeRegex(e),"i");return x.grep(t,function(t){return i.test(t.label||t.value||t)})}}),x.widget("ui.autocomplete",x.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(1
").text(e))},100))}});x.ui.autocomplete});
\ No newline at end of file
diff --git a/doc/script.js b/doc/script.js
new file mode 100644
index 0000000..324dbca
--- /dev/null
+++ b/doc/script.js
@@ -0,0 +1,268 @@
+/*
+ * Copyright (c) 2013, 2022, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+var moduleSearchIndex;
+var packageSearchIndex;
+var typeSearchIndex;
+var memberSearchIndex;
+var tagSearchIndex;
+
+var oddRowColor = "odd-row-color";
+var evenRowColor = "even-row-color";
+var sortAsc = "sort-asc";
+var sortDesc = "sort-desc";
+var tableTab = "table-tab";
+var activeTableTab = "active-table-tab";
+
+function loadScripts(doc, tag) {
+ createElem(doc, tag, 'search.js');
+
+ createElem(doc, tag, 'module-search-index.js');
+ createElem(doc, tag, 'package-search-index.js');
+ createElem(doc, tag, 'type-search-index.js');
+ createElem(doc, tag, 'member-search-index.js');
+ createElem(doc, tag, 'tag-search-index.js');
+}
+
+function createElem(doc, tag, path) {
+ var script = doc.createElement(tag);
+ var scriptElement = doc.getElementsByTagName(tag)[0];
+ script.src = pathtoroot + path;
+ scriptElement.parentNode.insertBefore(script, scriptElement);
+}
+
+// Helper for making content containing release names comparable lexicographically
+function makeComparable(s) {
+ return s.toLowerCase().replace(/(\d+)/g,
+ function(n, m) {
+ return ("000" + m).slice(-4);
+ });
+}
+
+// Switches between two styles depending on a condition
+function toggleStyle(classList, condition, trueStyle, falseStyle) {
+ if (condition) {
+ classList.remove(falseStyle);
+ classList.add(trueStyle);
+ } else {
+ classList.remove(trueStyle);
+ classList.add(falseStyle);
+ }
+}
+
+// Sorts the rows in a table lexicographically by the content of a specific column
+function sortTable(header, columnIndex, columns) {
+ var container = header.parentElement;
+ var descending = header.classList.contains(sortAsc);
+ container.querySelectorAll("div.table-header").forEach(
+ function(header) {
+ header.classList.remove(sortAsc);
+ header.classList.remove(sortDesc);
+ }
+ )
+ var cells = container.children;
+ var rows = [];
+ for (var i = columns; i < cells.length; i += columns) {
+ rows.push(Array.prototype.slice.call(cells, i, i + columns));
+ }
+ var comparator = function(a, b) {
+ var ka = makeComparable(a[columnIndex].textContent);
+ var kb = makeComparable(b[columnIndex].textContent);
+ if (ka < kb)
+ return descending ? 1 : -1;
+ if (ka > kb)
+ return descending ? -1 : 1;
+ return 0;
+ };
+ var sorted = rows.sort(comparator);
+ var visible = 0;
+ sorted.forEach(function(row) {
+ if (row[0].style.display !== 'none') {
+ var isEvenRow = visible++ % 2 === 0;
+ }
+ row.forEach(function(cell) {
+ toggleStyle(cell.classList, isEvenRow, evenRowColor, oddRowColor);
+ container.appendChild(cell);
+ })
+ });
+ toggleStyle(header.classList, descending, sortDesc, sortAsc);
+}
+
+// Toggles the visibility of a table category in all tables in a page
+function toggleGlobal(checkbox, selected, columns) {
+ var display = checkbox.checked ? '' : 'none';
+ document.querySelectorAll("div.table-tabs").forEach(function(t) {
+ var id = t.parentElement.getAttribute("id");
+ var selectedClass = id + "-tab" + selected;
+ // if selected is empty string it selects all uncategorized entries
+ var selectUncategorized = !Boolean(selected);
+ var visible = 0;
+ document.querySelectorAll('div.' + id)
+ .forEach(function(elem) {
+ if (selectUncategorized) {
+ if (elem.className.indexOf(selectedClass) === -1) {
+ elem.style.display = display;
+ }
+ } else if (elem.classList.contains(selectedClass)) {
+ elem.style.display = display;
+ }
+ if (elem.style.display === '') {
+ var isEvenRow = visible++ % (columns * 2) < columns;
+ toggleStyle(elem.classList, isEvenRow, evenRowColor, oddRowColor);
+ }
+ });
+ var displaySection = visible === 0 ? 'none' : '';
+ t.parentElement.style.display = displaySection;
+ document.querySelector("li#contents-" + id).style.display = displaySection;
+ })
+}
+
+// Shows the elements of a table belonging to a specific category
+function show(tableId, selected, columns) {
+ if (tableId !== selected) {
+ document.querySelectorAll('div.' + tableId + ':not(.' + selected + ')')
+ .forEach(function(elem) {
+ elem.style.display = 'none';
+ });
+ }
+ document.querySelectorAll('div.' + selected)
+ .forEach(function(elem, index) {
+ elem.style.display = '';
+ var isEvenRow = index % (columns * 2) < columns;
+ toggleStyle(elem.classList, isEvenRow, evenRowColor, oddRowColor);
+ });
+ updateTabs(tableId, selected);
+}
+
+function updateTabs(tableId, selected) {
+ document.querySelector('div#' + tableId +' .summary-table')
+ .setAttribute('aria-labelledby', selected);
+ document.querySelectorAll('button[id^="' + tableId + '"]')
+ .forEach(function(tab, index) {
+ if (selected === tab.id || (tableId === selected && index === 0)) {
+ tab.className = activeTableTab;
+ tab.setAttribute('aria-selected', true);
+ tab.setAttribute('tabindex',0);
+ } else {
+ tab.className = tableTab;
+ tab.setAttribute('aria-selected', false);
+ tab.setAttribute('tabindex',-1);
+ }
+ });
+}
+
+function switchTab(e) {
+ var selected = document.querySelector('[aria-selected=true]');
+ if (selected) {
+ if ((e.keyCode === 37 || e.keyCode === 38) && selected.previousSibling) {
+ // left or up arrow key pressed: move focus to previous tab
+ selected.previousSibling.click();
+ selected.previousSibling.focus();
+ e.preventDefault();
+ } else if ((e.keyCode === 39 || e.keyCode === 40) && selected.nextSibling) {
+ // right or down arrow key pressed: move focus to next tab
+ selected.nextSibling.click();
+ selected.nextSibling.focus();
+ e.preventDefault();
+ }
+ }
+}
+
+var updateSearchResults = function() {};
+
+function indexFilesLoaded() {
+ return moduleSearchIndex
+ && packageSearchIndex
+ && typeSearchIndex
+ && memberSearchIndex
+ && tagSearchIndex;
+}
+// Copy the contents of the local snippet to the clipboard
+function copySnippet(button) {
+ copyToClipboard(button.nextElementSibling.innerText);
+ switchCopyLabel(button.firstElementChild, button.parentElement);
+}
+// Copy the link to the adjacent header to the clipboard
+function copyUrl(button) {
+ var id;
+ var header = button.parentElement;
+ if (header.hasAttribute("id")) {
+ id = header.getAttribute("id");
+ } else if (header.parentElement.tagName === 'SECTION' && header.parentElement.hasAttribute("id")) {
+ id = header.parentElement.getAttribute("id");
+ } else if (header.firstElementChild && header.firstElementChild.tagName === "A"
+ && header.firstElementChild.hasAttribute("id")) {
+ id = header.firstElementChild.getAttribute("id");
+ }
+ var url = document.location.href;
+ if (url.indexOf("#") > -1) {
+ url = url.substring(0, url.indexOf("#"));
+ }
+ copyToClipboard(url + "#" + id);
+ switchCopyLabel(button.lastElementChild, button.parentElement);
+}
+function copyToClipboard(content) {
+ var textarea = document.createElement("textarea");
+ textarea.style.height = 0;
+ document.body.appendChild(textarea);
+ textarea.value = content;
+ textarea.select();
+ document.execCommand("copy");
+ document.body.removeChild(textarea);
+}
+function switchCopyLabel(span, parent) {
+ var copied = span.getAttribute("data-copied");
+ if (span.innerHTML !== copied) {
+ var initialLabel = span.innerHTML;
+ span.innerHTML = copied;
+ parent.onmouseleave = parent.ontouchend = function() {
+ span.innerHTML = initialLabel;
+ };
+ }
+}
+// Workaround for scroll position not being included in browser history (8249133)
+document.addEventListener("DOMContentLoaded", function(e) {
+ var contentDiv = document.querySelector("div.flex-content");
+ window.addEventListener("popstate", function(e) {
+ if (e.state !== null) {
+ contentDiv.scrollTop = e.state;
+ }
+ });
+ window.addEventListener("hashchange", function(e) {
+ history.replaceState(contentDiv.scrollTop, document.title);
+ });
+ var timeoutId;
+ contentDiv.addEventListener("scroll", function(e) {
+ if (timeoutId) {
+ clearTimeout(timeoutId);
+ }
+ timeoutId = setTimeout(function() {
+ history.replaceState(contentDiv.scrollTop, document.title);
+ }, 100);
+ });
+ if (!location.hash) {
+ history.replaceState(contentDiv.scrollTop, document.title);
+ }
+});
diff --git a/doc/search-page.js b/doc/search-page.js
new file mode 100644
index 0000000..d55f29e
--- /dev/null
+++ b/doc/search-page.js
@@ -0,0 +1,299 @@
+/*
+ * Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+"use strict";
+$(function() {
+ var copy = $("#page-search-copy");
+ var expand = $("#page-search-expand");
+ var searchLink = $("span#page-search-link");
+ var redirect = $("input#search-redirect");
+ function setSearchUrlTemplate() {
+ var href = document.location.href.split(/[#?]/)[0];
+ href += "?q=" + "%s";
+ if (redirect.is(":checked")) {
+ href += "&r=1";
+ }
+ searchLink.html(href);
+ copy[0].onmouseenter();
+ }
+ function copyLink(e) {
+ var textarea = document.createElement("textarea");
+ textarea.style.height = 0;
+ document.body.appendChild(textarea);
+ textarea.value = this.previousSibling.innerText;
+ textarea.select();
+ document.execCommand("copy");
+ document.body.removeChild(textarea);
+ var span = this.lastElementChild;
+ var copied = span.getAttribute("data-copied");
+ if (span.innerHTML !== copied) {
+ var initialLabel = span.innerHTML;
+ span.innerHTML = copied;
+ var parent = this.parentElement.parentElement;
+ parent.onmouseleave = parent.ontouchend = copy[0].onmouseenter = function() {
+ span.innerHTML = initialLabel;
+ };
+ }
+ }
+ copy.click(copyLink);
+ copy[0].onmouseenter = function() {};
+ redirect.click(setSearchUrlTemplate);
+ setSearchUrlTemplate();
+ copy.prop("disabled", false);
+ redirect.prop("disabled", false);
+ expand.click(function (e) {
+ var searchInfo = $("div.page-search-info");
+ if(this.parentElement.hasAttribute("open")) {
+ searchInfo.attr("style", "border-width: 0;");
+ } else {
+ searchInfo.attr("style", "border-width: 1px;").height(searchInfo.prop("scrollHeight"));
+ }
+ });
+});
+$(window).on("load", function() {
+ var input = $("#page-search-input");
+ var reset = $("#page-search-reset");
+ var notify = $("#page-search-notify");
+ var resultSection = $("div#result-section");
+ var resultContainer = $("div#result-container");
+ var searchTerm = "";
+ var activeTab = "";
+ var fixedTab = false;
+ var visibleTabs = [];
+ var feelingLucky = false;
+ function renderResults(result) {
+ if (!result.length) {
+ notify.html(messages.noResult);
+ } else if (result.length === 1) {
+ notify.html(messages.oneResult);
+ } else {
+ notify.html(messages.manyResults.replace("{0}", result.length));
+ }
+ resultContainer.empty();
+ var r = {
+ "types": [],
+ "members": [],
+ "packages": [],
+ "modules": [],
+ "searchTags": []
+ };
+ for (var i in result) {
+ var item = result[i];
+ var arr = r[item.category];
+ arr.push(item);
+ }
+ if (!activeTab || r[activeTab].length === 0 || !fixedTab) {
+ Object.keys(r).reduce(function(prev, curr) {
+ if (r[curr].length > 0 && r[curr][0].score > prev) {
+ activeTab = curr;
+ return r[curr][0].score;
+ }
+ return prev;
+ }, 0);
+ }
+ if (feelingLucky && activeTab) {
+ notify.html(messages.redirecting)
+ var firstItem = r[activeTab][0];
+ window.location = getURL(firstItem.indexItem, firstItem.category);
+ return;
+ }
+ if (result.length > 20) {
+ if (searchTerm[searchTerm.length - 1] === ".") {
+ if (activeTab === "types" && r["members"].length > r["types"].length) {
+ activeTab = "members";
+ } else if (activeTab === "packages" && r["types"].length > r["packages"].length) {
+ activeTab = "types";
+ }
+ }
+ }
+ var categoryCount = Object.keys(r).reduce(function(prev, curr) {
+ return prev + (r[curr].length > 0 ? 1 : 0);
+ }, 0);
+ visibleTabs = [];
+ var tabContainer = $("
").appendTo(resultContainer);
+ for (var key in r) {
+ var id = "#result-tab-" + key.replace("searchTags", "search_tags");
+ if (r[key].length) {
+ var count = r[key].length >= 1000 ? "999+" : r[key].length;
+ if (result.length > 20 && categoryCount > 1) {
+ var button = $("").appendTo(tabContainer);
+ button.click(key, function(e) {
+ fixedTab = true;
+ renderResult(e.data, $(this));
+ });
+ visibleTabs.push(key);
+ } else {
+ $("").appendTo(tabContainer);
+ renderTable(key, r[key]).appendTo(resultContainer);
+ tabContainer = $("
").appendTo(resultContainer);
+
+ }
+ }
+ }
+ if (activeTab && result.length > 20 && categoryCount > 1) {
+ $("button#result-tab-" + activeTab).addClass("active-table-tab");
+ renderTable(activeTab, r[activeTab]).appendTo(resultContainer);
+ }
+ resultSection.show();
+ function renderResult(category, button) {
+ activeTab = category;
+ setSearchUrl();
+ resultContainer.find("div.summary-table").remove();
+ renderTable(activeTab, r[activeTab]).appendTo(resultContainer);
+ button.siblings().removeClass("active-table-tab");
+ button.addClass("active-table-tab");
+ }
+ }
+ function selectTab(category) {
+ $("button#result-tab-" + category).click();
+ }
+ function renderTable(category, items) {
+ var table = $("")
+ .addClass(category === "modules"
+ ? "one-column-search-results"
+ : "two-column-search-results");
+ var col1, col2;
+ if (category === "modules") {
+ col1 = "Module";
+ } else if (category === "packages") {
+ col1 = "Module";
+ col2 = "Package";
+ } else if (category === "types") {
+ col1 = "Package";
+ col2 = "Class"
+ } else if (category === "members") {
+ col1 = "Class";
+ col2 = "Member";
+ } else if (category === "searchTags") {
+ col1 = "Location";
+ col2 = "Name";
+ }
+ $("").appendTo(table);
+ if (category !== "modules") {
+ $("").appendTo(table);
+ }
+ $.each(items, function(index, item) {
+ var rowColor = index % 2 ? "odd-row-color" : "even-row-color";
+ renderItem(item, table, rowColor);
+ });
+ return table;
+ }
+ function renderItem(item, table, rowColor) {
+ var label = getHighlightedText(item.input, item.boundaries, item.prefix.length, item.input.length);
+ var link = $("
")
+ .attr("href", getURL(item.indexItem, item.category))
+ .attr("tabindex", "0")
+ .addClass("search-result-link")
+ .html(label);
+ var container = getHighlightedText(item.input, item.boundaries, 0, item.prefix.length - 1);
+ if (item.category === "searchTags") {
+ container = item.indexItem.h || "";
+ }
+ if (item.category !== "modules") {
+ $("
").html(container).addClass("col-plain").addClass(rowColor).appendTo(table);
+ }
+ $("
").html(link).addClass("col-last").addClass(rowColor).appendTo(table);
+ }
+ var timeout;
+ function schedulePageSearch() {
+ if (timeout) {
+ clearTimeout(timeout);
+ }
+ timeout = setTimeout(function () {
+ doPageSearch()
+ }, 100);
+ }
+ function doPageSearch() {
+ setSearchUrl();
+ var term = searchTerm = input.val().trim();
+ if (term === "") {
+ notify.html(messages.enterTerm);
+ activeTab = "";
+ fixedTab = false;
+ resultContainer.empty();
+ resultSection.hide();
+ } else {
+ notify.html(messages.searching);
+ doSearch({ term: term, maxResults: 1200 }, renderResults);
+ }
+ }
+ function setSearchUrl() {
+ var query = input.val().trim();
+ var url = document.location.pathname;
+ if (query) {
+ url += "?q=" + encodeURI(query);
+ if (activeTab && fixedTab) {
+ url += "&c=" + activeTab;
+ }
+ }
+ history.replaceState({query: query}, "", url);
+ }
+ input.on("input", function(e) {
+ feelingLucky = false;
+ schedulePageSearch();
+ });
+ $(document).keydown(function(e) {
+ if ((e.ctrlKey || e.metaKey) && (e.key === "ArrowLeft" || e.key === "ArrowRight")) {
+ if (activeTab && visibleTabs.length > 1) {
+ var idx = visibleTabs.indexOf(activeTab);
+ idx += e.key === "ArrowLeft" ? visibleTabs.length - 1 : 1;
+ selectTab(visibleTabs[idx % visibleTabs.length]);
+ return false;
+ }
+ }
+ });
+ reset.click(function() {
+ notify.html(messages.enterTerm);
+ resultSection.hide();
+ activeTab = "";
+ fixedTab = false;
+ resultContainer.empty();
+ input.val('').focus();
+ setSearchUrl();
+ });
+ input.prop("disabled", false);
+ reset.prop("disabled", false);
+
+ var urlParams = new URLSearchParams(window.location.search);
+ if (urlParams.has("q")) {
+ input.val(urlParams.get("q"))
+ }
+ if (urlParams.has("c")) {
+ activeTab = urlParams.get("c");
+ fixedTab = true;
+ }
+ if (urlParams.get("r")) {
+ feelingLucky = true;
+ }
+ if (input.val()) {
+ doPageSearch();
+ } else {
+ notify.html(messages.enterTerm);
+ }
+ input.select().focus();
+});
diff --git a/doc/search.html b/doc/search.html
new file mode 100644
index 0000000..0cad0c1
--- /dev/null
+++ b/doc/search.html
@@ -0,0 +1,73 @@
+
+
+
+
+
搜索
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+搜索
+
+
+
+
+其他资源
+
+
+
+
帮助页 介绍了 JavaDoc 搜索的范围和语法。
+
您可以使用 <ctrl> 或 <cmd> 键与左箭头和右箭头键组合在此页面中的结果选项卡之间切换。
+
下面的 URL 模板可用于在支持此功能的浏览器中将此页面配置为搜索引擎。已经对其进行了测试以在 Google Chrome 和 Mozilla Firefox 中使用。请注意,其他浏览器可能不支持此功能或需要不同的 URL 格式。
+
link 复制 URL
+
+
+重定向到第一个结果
+
+正在加载搜索索引...
+
+
+
+
+
+
diff --git a/doc/search.js b/doc/search.js
new file mode 100644
index 0000000..fa43bab
--- /dev/null
+++ b/doc/search.js
@@ -0,0 +1,458 @@
+/*
+ * Copyright (c) 2015, 2022, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+"use strict";
+const messages = {
+ enterTerm: "输入搜索词",
+ noResult: "未找到结果",
+ oneResult: "找到一个结果",
+ manyResults: "找到 {0} 个结果",
+ loading: "正在加载搜索索引...",
+ searching: "正在搜索...",
+ redirecting: "正在重定向到第一个结果...",
+ copyUrl: "复制 URL",
+ urlCopied: "已复制!"
+}
+const categories = {
+ modules: "模块",
+ packages: "程序包",
+ types: "类和接口",
+ members: "成员",
+ searchTags: "搜索标记"
+};
+const highlight = "
$& ";
+const NO_MATCH = {};
+const MAX_RESULTS = 300;
+function checkUnnamed(name, separator) {
+ return name === "
" || !name ? "" : name + separator;
+}
+function escapeHtml(str) {
+ return str.replace(//g, ">");
+}
+function getHighlightedText(str, boundaries, from, to) {
+ var start = from;
+ var text = "";
+ for (var i = 0; i < boundaries.length; i += 2) {
+ var b0 = boundaries[i];
+ var b1 = boundaries[i + 1];
+ if (b0 >= to || b1 <= from) {
+ continue;
+ }
+ text += escapeHtml(str.slice(start, Math.max(start, b0)));
+ text += "";
+ text += escapeHtml(str.slice(Math.max(start, b0), Math.min(to, b1)));
+ text += " ";
+ start = Math.min(to, b1);
+ }
+ text += escapeHtml(str.slice(start, to));
+ return text;
+}
+function getURLPrefix(item, category) {
+ var urlPrefix = "";
+ var slash = "/";
+ if (category === "modules") {
+ return item.l + slash;
+ } else if (category === "packages" && item.m) {
+ return item.m + slash;
+ } else if (category === "types" || category === "members") {
+ if (item.m) {
+ urlPrefix = item.m + slash;
+ } else {
+ $.each(packageSearchIndex, function(index, it) {
+ if (it.m && item.p === it.l) {
+ urlPrefix = it.m + slash;
+ }
+ });
+ }
+ }
+ return urlPrefix;
+}
+function getURL(item, category) {
+ if (item.url) {
+ return item.url;
+ }
+ var url = getURLPrefix(item, category);
+ if (category === "modules") {
+ url += "module-summary.html";
+ } else if (category === "packages") {
+ if (item.u) {
+ url = item.u;
+ } else {
+ url += item.l.replace(/\./g, '/') + "/package-summary.html";
+ }
+ } else if (category === "types") {
+ if (item.u) {
+ url = item.u;
+ } else {
+ url += checkUnnamed(item.p, "/").replace(/\./g, '/') + item.l + ".html";
+ }
+ } else if (category === "members") {
+ url += checkUnnamed(item.p, "/").replace(/\./g, '/') + item.c + ".html" + "#";
+ if (item.u) {
+ url += item.u;
+ } else {
+ url += item.l;
+ }
+ } else if (category === "searchTags") {
+ url += item.u;
+ }
+ item.url = url;
+ return url;
+}
+function createMatcher(term, camelCase) {
+ if (camelCase && !isUpperCase(term)) {
+ return null; // no need for camel-case matcher for lower case query
+ }
+ var pattern = "";
+ var upperCase = [];
+ term.trim().split(/\s+/).forEach(function(w, index, array) {
+ var tokens = w.split(/(?=[A-Z,.()<>?[\/])/);
+ for (var i = 0; i < tokens.length; i++) {
+ var s = tokens[i];
+ // ',' and '?' are the only delimiters commonly followed by space in java signatures
+ pattern += "(" + $.ui.autocomplete.escapeRegex(s).replace(/[,?]/g, "$&\\s*?") + ")";
+ upperCase.push(false);
+ var isWordToken = /\w$/.test(s);
+ if (isWordToken) {
+ if (i === tokens.length - 1 && index < array.length - 1) {
+ // space in query string matches all delimiters
+ pattern += "(.*?)";
+ upperCase.push(isUpperCase(s[0]));
+ } else {
+ if (!camelCase && isUpperCase(s) && s.length === 1) {
+ pattern += "()";
+ } else {
+ pattern += "([a-z0-9$<>?[\\]]*?)";
+ }
+ upperCase.push(isUpperCase(s[0]));
+ }
+ } else {
+ pattern += "()";
+ upperCase.push(false);
+ }
+ }
+ });
+ var re = new RegExp(pattern, "gi");
+ re.upperCase = upperCase;
+ return re;
+}
+function findMatch(matcher, input, startOfName, endOfName) {
+ var from = startOfName;
+ matcher.lastIndex = from;
+ var match = matcher.exec(input);
+ // Expand search area until we get a valid result or reach the beginning of the string
+ while (!match || match.index + match[0].length < startOfName || endOfName < match.index) {
+ if (from === 0) {
+ return NO_MATCH;
+ }
+ from = input.lastIndexOf(".", from - 2) + 1;
+ matcher.lastIndex = from;
+ match = matcher.exec(input);
+ }
+ var boundaries = [];
+ var matchEnd = match.index + match[0].length;
+ var score = 5;
+ var start = match.index;
+ var prevEnd = -1;
+ for (var i = 1; i < match.length; i += 2) {
+ var isUpper = isUpperCase(input[start]);
+ var isMatcherUpper = matcher.upperCase[i];
+ // capturing groups come in pairs, match and non-match
+ boundaries.push(start, start + match[i].length);
+ // make sure groups are anchored on a left word boundary
+ var prevChar = input[start - 1] || "";
+ var nextChar = input[start + 1] || "";
+ if (start !== 0 && !/[\W_]/.test(prevChar) && !/[\W_]/.test(input[start])) {
+ if (isUpper && (isLowerCase(prevChar) || isLowerCase(nextChar))) {
+ score -= 0.1;
+ } else if (isMatcherUpper && start === prevEnd) {
+ score -= isUpper ? 0.1 : 1.0;
+ } else {
+ return NO_MATCH;
+ }
+ }
+ prevEnd = start + match[i].length;
+ start += match[i].length + match[i + 1].length;
+
+ // lower score for parts of the name that are missing
+ if (match[i + 1] && prevEnd < endOfName) {
+ score -= rateNoise(match[i + 1]);
+ }
+ }
+ // lower score if a type name contains unmatched camel-case parts
+ if (input[matchEnd - 1] !== "." && endOfName > matchEnd)
+ score -= rateNoise(input.slice(matchEnd, endOfName));
+ score -= rateNoise(input.slice(0, Math.max(startOfName, match.index)));
+
+ if (score <= 0) {
+ return NO_MATCH;
+ }
+ return {
+ input: input,
+ score: score,
+ boundaries: boundaries
+ };
+}
+function isUpperCase(s) {
+ return s !== s.toLowerCase();
+}
+function isLowerCase(s) {
+ return s !== s.toUpperCase();
+}
+function rateNoise(str) {
+ return (str.match(/([.(])/g) || []).length / 5
+ + (str.match(/([A-Z]+)/g) || []).length / 10
+ + str.length / 20;
+}
+function doSearch(request, response) {
+ var term = request.term.trim();
+ var maxResults = request.maxResults || MAX_RESULTS;
+ if (term.length === 0) {
+ return this.close();
+ }
+ var matcher = {
+ plainMatcher: createMatcher(term, false),
+ camelCaseMatcher: createMatcher(term, true)
+ }
+ var indexLoaded = indexFilesLoaded();
+
+ function getPrefix(item, category) {
+ switch (category) {
+ case "packages":
+ return checkUnnamed(item.m, "/");
+ case "types":
+ return checkUnnamed(item.p, ".");
+ case "members":
+ return checkUnnamed(item.p, ".") + item.c + ".";
+ default:
+ return "";
+ }
+ }
+ function useQualifiedName(category) {
+ switch (category) {
+ case "packages":
+ return /[\s/]/.test(term);
+ case "types":
+ case "members":
+ return /[\s.]/.test(term);
+ default:
+ return false;
+ }
+ }
+ function searchIndex(indexArray, category) {
+ var matches = [];
+ if (!indexArray) {
+ if (!indexLoaded) {
+ matches.push({ l: messages.loading, category: category });
+ }
+ return matches;
+ }
+ $.each(indexArray, function (i, item) {
+ var prefix = getPrefix(item, category);
+ var simpleName = item.l;
+ var qualifiedName = prefix + simpleName;
+ var useQualified = useQualifiedName(category);
+ var input = useQualified ? qualifiedName : simpleName;
+ var startOfName = useQualified ? prefix.length : 0;
+ var endOfName = category === "members" && input.indexOf("(", startOfName) > -1
+ ? input.indexOf("(", startOfName) : input.length;
+ var m = findMatch(matcher.plainMatcher, input, startOfName, endOfName);
+ if (m === NO_MATCH && matcher.camelCaseMatcher) {
+ m = findMatch(matcher.camelCaseMatcher, input, startOfName, endOfName);
+ }
+ if (m !== NO_MATCH) {
+ m.indexItem = item;
+ m.prefix = prefix;
+ m.category = category;
+ if (!useQualified) {
+ m.input = qualifiedName;
+ m.boundaries = m.boundaries.map(function(b) {
+ return b + prefix.length;
+ });
+ }
+ matches.push(m);
+ }
+ return true;
+ });
+ return matches.sort(function(e1, e2) {
+ return e2.score - e1.score;
+ }).slice(0, maxResults);
+ }
+
+ var result = searchIndex(moduleSearchIndex, "modules")
+ .concat(searchIndex(packageSearchIndex, "packages"))
+ .concat(searchIndex(typeSearchIndex, "types"))
+ .concat(searchIndex(memberSearchIndex, "members"))
+ .concat(searchIndex(tagSearchIndex, "searchTags"));
+
+ if (!indexLoaded) {
+ updateSearchResults = function() {
+ doSearch(request, response);
+ }
+ } else {
+ updateSearchResults = function() {};
+ }
+ response(result);
+}
+// JQuery search menu implementation
+$.widget("custom.catcomplete", $.ui.autocomplete, {
+ _create: function() {
+ this._super();
+ this.widget().menu("option", "items", "> .result-item");
+ // workaround for search result scrolling
+ this.menu._scrollIntoView = function _scrollIntoView( item ) {
+ var borderTop, paddingTop, offset, scroll, elementHeight, itemHeight;
+ if ( this._hasScroll() ) {
+ borderTop = parseFloat( $.css( this.activeMenu[ 0 ], "borderTopWidth" ) ) || 0;
+ paddingTop = parseFloat( $.css( this.activeMenu[ 0 ], "paddingTop" ) ) || 0;
+ offset = item.offset().top - this.activeMenu.offset().top - borderTop - paddingTop;
+ scroll = this.activeMenu.scrollTop();
+ elementHeight = this.activeMenu.height() - 26;
+ itemHeight = item.outerHeight();
+
+ if ( offset < 0 ) {
+ this.activeMenu.scrollTop( scroll + offset );
+ } else if ( offset + itemHeight > elementHeight ) {
+ this.activeMenu.scrollTop( scroll + offset - elementHeight + itemHeight );
+ }
+ }
+ };
+ },
+ _renderMenu: function(ul, items) {
+ var currentCategory = "";
+ var widget = this;
+ widget.menu.bindings = $();
+ $.each(items, function(index, item) {
+ if (item.category && item.category !== currentCategory) {
+ ul.append("" + categories[item.category] + " ");
+ currentCategory = item.category;
+ }
+ var li = widget._renderItemData(ul, item);
+ if (item.category) {
+ li.attr("aria-label", categories[item.category] + " : " + item.l);
+ } else {
+ li.attr("aria-label", item.l);
+ }
+ li.attr("class", "result-item");
+ });
+ ul.append("Go to search page ");
+ },
+ _renderItem: function(ul, item) {
+ var li = $(" ").appendTo(ul);
+ var div = $("
").appendTo(li);
+ var label = item.l
+ ? item.l
+ : getHighlightedText(item.input, item.boundaries, 0, item.input.length);
+ var idx = item.indexItem;
+ if (item.category === "searchTags" && idx.h) {
+ if (idx.d) {
+ div.html(label + " (" + idx.h + ") "
+ + idx.d + " ");
+ } else {
+ div.html(label + " (" + idx.h + ") ");
+ }
+ } else {
+ div.html(label);
+ }
+ return li;
+ }
+});
+$(function() {
+ var expanded = false;
+ var windowWidth;
+ function collapse() {
+ if (expanded) {
+ $("div#navbar-top").removeAttr("style");
+ $("button#navbar-toggle-button")
+ .removeClass("expanded")
+ .attr("aria-expanded", "false");
+ expanded = false;
+ }
+ }
+ $("button#navbar-toggle-button").click(function (e) {
+ if (expanded) {
+ collapse();
+ } else {
+ var navbar = $("div#navbar-top");
+ navbar.height(navbar.prop("scrollHeight"));
+ $("button#navbar-toggle-button")
+ .addClass("expanded")
+ .attr("aria-expanded", "true");
+ expanded = true;
+ windowWidth = window.innerWidth;
+ }
+ });
+ $("ul.sub-nav-list-small li a").click(collapse);
+ $("input#search-input").focus(collapse);
+ $("main").click(collapse);
+ $("section[id] > :header, :header[id], :header:has(a[id])").hover(
+ function () {
+ $(this).append($(""));
+ },
+ function () {
+ $(this).find("button:last").remove();
+ }
+ );
+ $(window).on("orientationchange", collapse).on("resize", function(e) {
+ if (expanded && windowWidth !== window.innerWidth) collapse();
+ });
+ var search = $("#search-input");
+ var reset = $("#reset-button");
+ search.catcomplete({
+ minLength: 1,
+ delay: 200,
+ source: doSearch,
+ response: function(event, ui) {
+ if (!ui.content.length) {
+ ui.content.push({ l: messages.noResult });
+ } else {
+ $("#search-input").empty();
+ }
+ },
+ autoFocus: true,
+ focus: function(event, ui) {
+ return false;
+ },
+ position: {
+ collision: "flip"
+ },
+ select: function(event, ui) {
+ if (ui.item.indexItem) {
+ var url = getURL(ui.item.indexItem, ui.item.category);
+ window.location.href = pathtoroot + url;
+ $("#search-input").focus();
+ }
+ }
+ });
+ search.val('');
+ search.prop("disabled", false);
+ reset.prop("disabled", false);
+ reset.click(function() {
+ search.val('').focus();
+ });
+ search.focus();
+});
diff --git a/doc/serialized-form.html b/doc/serialized-form.html
new file mode 100644
index 0000000..2803add
--- /dev/null
+++ b/doc/serialized-form.html
@@ -0,0 +1,79 @@
+
+
+
+
+序列化表格
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+class BaseServlet extends javax.servlet.http.HttpServlet implements
Serializable
+
+
+
+
+
+class CheckCodeServlet extends javax.servlet.http.HttpServlet implements
Serializable
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/stylesheet.css b/doc/stylesheet.css
new file mode 100644
index 0000000..5f38959
--- /dev/null
+++ b/doc/stylesheet.css
@@ -0,0 +1,1264 @@
+/*
+ * Javadoc style sheet
+ */
+
+@import url('resources/fonts/dejavu.css');
+
+/*
+ * These CSS custom properties (variables) define the core color and font
+ * properties used in this stylesheet.
+ */
+:root {
+ /* body, block and code fonts */
+ --body-font-family: 'DejaVu Sans', Arial, Helvetica, sans-serif;
+ --block-font-family: 'DejaVu Serif', Georgia, "Times New Roman", Times, serif;
+ --code-font-family: 'DejaVu Sans Mono', monospace;
+ /* Base font sizes for body and code elements */
+ --body-font-size: 14px;
+ --code-font-size: 14px;
+ /* Text colors for body and block elements */
+ --body-text-color: #353833;
+ --block-text-color: #474747;
+ /* Background colors for various structural elements */
+ --body-background-color: #ffffff;
+ --section-background-color: #f8f8f8;
+ --detail-background-color: #ffffff;
+ /* Colors for navigation bar and table captions */
+ --navbar-background-color: #4D7A97;
+ --navbar-text-color: #ffffff;
+ /* Background color for subnavigation and various headers */
+ --subnav-background-color: #dee3e9;
+ /* Background and text colors for selected tabs and navigation items */
+ --selected-background-color: #f8981d;
+ --selected-text-color: #253441;
+ --selected-link-color: #1f389c;
+ /* Background colors for generated tables */
+ --even-row-color: #ffffff;
+ --odd-row-color: #eeeeef;
+ /* Text color for page title */
+ --title-color: #2c4557;
+ /* Text colors for links */
+ --link-color: #4A6782;
+ --link-color-active: #bb7a2a;
+ /* Snippet colors */
+ --snippet-background-color: #ebecee;
+ --snippet-text-color: var(--block-text-color);
+ --snippet-highlight-color: #f7c590;
+ /* Border colors for structural elements and user defined tables */
+ --border-color: #ededed;
+ --table-border-color: #000000;
+ /* Search input colors */
+ --search-input-background-color: #ffffff;
+ --search-input-text-color: #000000;
+ --search-input-placeholder-color: #909090;
+ /* Highlight color for active search tag target */
+ --search-tag-highlight-color: #ffff00;
+ /* Adjustments for icon and active background colors of copy-to-clipboard buttons */
+ --copy-icon-brightness: 100%;
+ --copy-button-background-color-active: rgba(168, 168, 176, 0.3);
+ /* Colors for invalid tag notifications */
+ --invalid-tag-background-color: #ffe6e6;
+ --invalid-tag-text-color: #000000;
+}
+/*
+ * Styles for individual HTML elements.
+ *
+ * These are styles that are specific to individual HTML elements. Changing them affects the style of a particular
+ * HTML element throughout the page.
+ */
+body {
+ background-color:var(--body-background-color);
+ color:var(--body-text-color);
+ font-family:var(--body-font-family);
+ font-size:var(--body-font-size);
+ margin:0;
+ padding:0;
+ height:100%;
+ width:100%;
+}
+iframe {
+ margin:0;
+ padding:0;
+ height:100%;
+ width:100%;
+ overflow-y:scroll;
+ border:none;
+}
+a:link, a:visited {
+ text-decoration:none;
+ color:var(--link-color);
+}
+a[href]:hover, a[href]:focus {
+ text-decoration:none;
+ color:var(--link-color-active);
+}
+pre {
+ font-family:var(--code-font-family);
+ font-size:1em;
+}
+h1 {
+ font-size:1.428em;
+}
+h2 {
+ font-size:1.285em;
+}
+h3 {
+ font-size:1.14em;
+}
+h4 {
+ font-size:1.072em;
+}
+h5 {
+ font-size:1.001em;
+}
+h6 {
+ font-size:0.93em;
+}
+/* Disable font boosting for selected elements */
+h1, h2, h3, h4, h5, h6, div.member-signature {
+ max-height: 1000em;
+}
+ul {
+ list-style-type:disc;
+}
+code, tt {
+ font-family:var(--code-font-family);
+}
+:not(h1, h2, h3, h4, h5, h6) > code,
+:not(h1, h2, h3, h4, h5, h6) > tt {
+ font-size:var(--code-font-size);
+ padding-top:4px;
+ margin-top:8px;
+ line-height:1.4em;
+}
+dt code {
+ font-family:var(--code-font-family);
+ font-size:1em;
+ padding-top:4px;
+}
+.summary-table dt code {
+ font-family:var(--code-font-family);
+ font-size:1em;
+ vertical-align:top;
+ padding-top:4px;
+}
+sup {
+ font-size:8px;
+}
+button {
+ font-family: var(--body-font-family);
+ font-size: 1em;
+}
+/*
+ * Styles for HTML generated by javadoc.
+ *
+ * These are style classes that are used by the standard doclet to generate HTML documentation.
+ */
+
+/*
+ * Styles for document title and copyright.
+ */
+.about-language {
+ float:right;
+ padding:0 21px 8px 8px;
+ font-size:0.915em;
+ margin-top:-9px;
+ height:2.9em;
+}
+.legal-copy {
+ margin-left:.5em;
+}
+/*
+ * Styles for navigation bar.
+ */
+@media screen {
+ div.flex-box {
+ position:fixed;
+ display:flex;
+ flex-direction:column;
+ height: 100%;
+ width: 100%;
+ }
+ header.flex-header {
+ flex: 0 0 auto;
+ }
+ div.flex-content {
+ flex: 1 1 auto;
+ overflow-y: auto;
+ }
+}
+.top-nav {
+ background-color:var(--navbar-background-color);
+ color:var(--navbar-text-color);
+ float:left;
+ width:100%;
+ clear:right;
+ min-height:2.8em;
+ padding:10px 0 0 0;
+ overflow:hidden;
+ font-size:0.857em;
+}
+button#navbar-toggle-button {
+ display:none;
+}
+ul.sub-nav-list-small {
+ display: none;
+}
+.sub-nav {
+ background-color:var(--subnav-background-color);
+ float:left;
+ width:100%;
+ overflow:hidden;
+ font-size:0.857em;
+}
+.sub-nav div {
+ clear:left;
+ float:left;
+ padding:6px;
+ text-transform:uppercase;
+}
+.sub-nav .sub-nav-list {
+ padding-top:4px;
+}
+ul.nav-list {
+ display:block;
+ margin:0 25px 0 0;
+ padding:0;
+}
+ul.sub-nav-list {
+ float:left;
+ margin:0 25px 0 0;
+ padding:0;
+}
+ul.nav-list li {
+ list-style:none;
+ float:left;
+ padding: 5px 6px;
+ text-transform:uppercase;
+}
+.sub-nav .nav-list-search {
+ float:right;
+ margin:0;
+ padding:6px;
+ clear:none;
+ text-align:right;
+ position:relative;
+}
+ul.sub-nav-list li {
+ list-style:none;
+ float:left;
+}
+.top-nav a:link, .top-nav a:active, .top-nav a:visited {
+ color:var(--navbar-text-color);
+ text-decoration:none;
+ text-transform:uppercase;
+}
+.top-nav a:hover {
+ color:var(--link-color-active);
+}
+.nav-bar-cell1-rev {
+ background-color:var(--selected-background-color);
+ color:var(--selected-text-color);
+ margin: auto 5px;
+}
+.skip-nav {
+ position:absolute;
+ top:auto;
+ left:-9999px;
+ overflow:hidden;
+}
+/*
+ * Hide navigation links and search box in print layout
+ */
+@media print {
+ ul.nav-list, div.sub-nav {
+ display:none;
+ }
+}
+/*
+ * Styles for page header.
+ */
+.title {
+ color:var(--title-color);
+ margin:10px 0;
+}
+.sub-title {
+ margin:5px 0 0 0;
+}
+ul.contents-list {
+ margin: 0 0 15px 0;
+ padding: 0;
+ list-style: none;
+}
+ul.contents-list li {
+ font-size:0.93em;
+}
+/*
+ * Styles for headings.
+ */
+body.class-declaration-page .summary h2,
+body.class-declaration-page .details h2,
+body.class-use-page h2,
+body.module-declaration-page .block-list h2 {
+ font-style: italic;
+ padding:0;
+ margin:15px 0;
+}
+body.class-declaration-page .summary h3,
+body.class-declaration-page .details h3,
+body.class-declaration-page .summary .inherited-list h2 {
+ background-color:var(--subnav-background-color);
+ border:1px solid var(--border-color);
+ margin:0 0 6px -8px;
+ padding:7px 5px;
+}
+/*
+ * Styles for page layout containers.
+ */
+main {
+ clear:both;
+ padding:10px 20px;
+ position:relative;
+}
+dl.notes > dt {
+ font-family: var(--body-font-family);
+ font-size:0.856em;
+ font-weight:bold;
+ margin:10px 0 0 0;
+ color:var(--body-text-color);
+}
+dl.notes > dd {
+ margin:5px 10px 10px 0;
+ font-size:1em;
+ font-family:var(--block-font-family)
+}
+dl.name-value > dt {
+ margin-left:1px;
+ font-size:1.1em;
+ display:inline;
+ font-weight:bold;
+}
+dl.name-value > dd {
+ margin:0 0 0 1px;
+ font-size:1.1em;
+ display:inline;
+}
+/*
+ * Styles for lists.
+ */
+li.circle {
+ list-style:circle;
+}
+ul.horizontal li {
+ display:inline;
+ font-size:0.9em;
+}
+div.inheritance {
+ margin:0;
+ padding:0;
+}
+div.inheritance div.inheritance {
+ margin-left:2em;
+}
+ul.block-list,
+ul.details-list,
+ul.member-list,
+ul.summary-list {
+ margin:10px 0 10px 0;
+ padding:0;
+}
+ul.block-list > li,
+ul.details-list > li,
+ul.member-list > li,
+ul.summary-list > li {
+ list-style:none;
+ margin-bottom:15px;
+ line-height:1.4;
+}
+ul.ref-list {
+ padding:0;
+ margin:0;
+}
+ul.ref-list > li {
+ list-style:none;
+}
+.summary-table dl, .summary-table dl dt, .summary-table dl dd {
+ margin-top:0;
+ margin-bottom:1px;
+}
+ul.tag-list, ul.tag-list-long {
+ padding-left: 0;
+ list-style: none;
+}
+ul.tag-list li {
+ display: inline;
+}
+ul.tag-list li:not(:last-child):after,
+ul.tag-list-long li:not(:last-child):after
+{
+ content: ", ";
+ white-space: pre-wrap;
+}
+ul.preview-feature-list {
+ list-style: none;
+ margin:0;
+ padding:0.1em;
+ line-height: 1.6em;
+}
+/*
+ * Styles for tables.
+ */
+.summary-table, .details-table {
+ width:100%;
+ border-spacing:0;
+ border:1px solid var(--border-color);
+ border-top:0;
+ padding:0;
+}
+.caption {
+ position:relative;
+ text-align:left;
+ background-repeat:no-repeat;
+ color:var(--selected-text-color);
+ clear:none;
+ overflow:hidden;
+ padding: 10px 0 0 1px;
+ margin:0;
+}
+.caption a:link, .caption a:visited {
+ color:var(--selected-link-color);
+}
+.caption a:hover,
+.caption a:active {
+ color:var(--navbar-text-color);
+}
+.caption span {
+ font-weight:bold;
+ white-space:nowrap;
+ padding:5px 12px 7px 12px;
+ display:inline-block;
+ float:left;
+ background-color:var(--selected-background-color);
+ border: none;
+ height:16px;
+}
+div.table-tabs {
+ padding:10px 0 0 1px;
+ margin:10px 0 0 0;
+}
+div.table-tabs > button {
+ border: none;
+ cursor: pointer;
+ padding: 5px 12px 7px 12px;
+ font-weight: bold;
+ margin-right: 8px;
+}
+div.table-tabs > .active-table-tab {
+ background: var(--selected-background-color);
+ color: var(--selected-text-color);
+}
+div.table-tabs > button.table-tab {
+ background: var(--navbar-background-color);
+ color: var(--navbar-text-color);
+}
+.two-column-search-results {
+ display: grid;
+ grid-template-columns: minmax(400px, max-content) minmax(400px, auto);
+}
+div.checkboxes {
+ line-height: 2em;
+}
+div.checkboxes > span {
+ margin-left: 10px;
+}
+div.checkboxes > label {
+ margin-left: 8px;
+ white-space: nowrap;
+}
+div.checkboxes > label > input {
+ margin: 0 2px;
+}
+.two-column-summary {
+ display: grid;
+ grid-template-columns: minmax(25%, max-content) minmax(25%, auto);
+}
+.three-column-summary {
+ display: grid;
+ grid-template-columns: minmax(15%, max-content) minmax(20%, max-content) minmax(20%, auto);
+}
+.three-column-release-summary {
+ display: grid;
+ grid-template-columns: minmax(40%, max-content) minmax(10%, max-content) minmax(40%, auto);
+}
+.four-column-summary {
+ display: grid;
+ grid-template-columns: minmax(10%, max-content) minmax(15%, max-content) minmax(15%, max-content) minmax(15%, auto);
+}
+@media screen and (max-width: 1000px) {
+ .four-column-summary {
+ display: grid;
+ grid-template-columns: minmax(15%, max-content) minmax(15%, auto);
+ }
+}
+@media screen and (max-width: 800px) {
+ .two-column-search-results {
+ display: grid;
+ grid-template-columns: minmax(40%, max-content) minmax(40%, auto);
+ }
+ .three-column-summary {
+ display: grid;
+ grid-template-columns: minmax(10%, max-content) minmax(25%, auto);
+ }
+ .three-column-release-summary {
+ display: grid;
+ grid-template-columns: minmax(70%, max-content) minmax(30%, max-content)
+ }
+ .three-column-summary .col-last,
+ .three-column-release-summary .col-last{
+ grid-column-end: span 2;
+ }
+}
+@media screen and (max-width: 600px) {
+ .two-column-summary {
+ display: grid;
+ grid-template-columns: 1fr;
+ }
+}
+.summary-table > div, .details-table > div {
+ text-align:left;
+ padding: 8px 3px 3px 7px;
+ overflow-x: auto;
+ scrollbar-width: thin;
+}
+.col-first, .col-second, .col-last, .col-constructor-name, .col-summary-item-name {
+ vertical-align:top;
+ padding-right:0;
+ padding-top:8px;
+ padding-bottom:3px;
+}
+.table-header {
+ background:var(--subnav-background-color);
+ font-weight: bold;
+}
+/* Sortable table columns */
+.table-header[onclick] {
+ cursor: pointer;
+}
+.table-header[onclick]::after {
+ content:"";
+ display:inline-block;
+ background-image:url('data:image/svg+xml; utf8, \
+ \
+ ');
+ background-size:100% 100%;
+ width:9px;
+ height:14px;
+ margin-left:4px;
+ margin-bottom:-3px;
+}
+.table-header[onclick].sort-asc::after {
+ background-image:url('data:image/svg+xml; utf8, \
+ \
+ \
+ ');
+
+}
+.table-header[onclick].sort-desc::after {
+ background-image:url('data:image/svg+xml; utf8, \
+ \
+ \
+ ');
+}
+.col-first, .col-first {
+ font-size:0.93em;
+}
+.col-second, .col-second, .col-last, .col-constructor-name, .col-summary-item-name, .col-last {
+ font-size:0.93em;
+}
+.col-first, .col-second, .col-constructor-name {
+ vertical-align:top;
+ overflow: auto;
+}
+.col-last {
+ white-space:normal;
+}
+.col-first a:link, .col-first a:visited,
+.col-second a:link, .col-second a:visited,
+.col-first a:link, .col-first a:visited,
+.col-second a:link, .col-second a:visited,
+.col-constructor-name a:link, .col-constructor-name a:visited,
+.col-summary-item-name a:link, .col-summary-item-name a:visited {
+ font-weight:bold;
+}
+.even-row-color, .even-row-color .table-header {
+ background-color:var(--even-row-color);
+}
+.odd-row-color, .odd-row-color .table-header {
+ background-color:var(--odd-row-color);
+}
+/*
+ * Styles for contents.
+ */
+div.block {
+ font-size:var(--body-font-size);
+ font-family:var(--block-font-family);
+}
+.col-last div {
+ padding-top:0;
+}
+.col-last a {
+ padding-bottom:3px;
+}
+.module-signature,
+.package-signature,
+.type-signature,
+.member-signature {
+ font-family:var(--code-font-family);
+ font-size:1em;
+ margin:14px 0;
+ white-space: pre-wrap;
+}
+.module-signature,
+.package-signature,
+.type-signature {
+ margin-top: 0;
+}
+.member-signature .type-parameters-long,
+.member-signature .parameters,
+.member-signature .exceptions {
+ display: inline-block;
+ vertical-align: top;
+ white-space: pre;
+}
+.member-signature .type-parameters {
+ white-space: normal;
+}
+/*
+ * Styles for formatting effect.
+ */
+.source-line-no {
+ /* Color of line numbers in source pages can be set via custom property below */
+ color:var(--source-linenumber-color, green);
+ padding:0 30px 0 0;
+}
+.block {
+ display:block;
+ margin:0 10px 5px 0;
+ color:var(--block-text-color);
+}
+.deprecated-label, .description-from-type-label, .implementation-label, .member-name-link,
+.module-label-in-package, .module-label-in-type, .package-label-in-type,
+.package-hierarchy-label, .type-name-label, .type-name-link, .search-tag-link, .preview-label {
+ font-weight:bold;
+}
+.deprecation-comment, .help-footnote, .preview-comment {
+ font-style:italic;
+}
+.deprecation-block {
+ font-size:1em;
+ font-family:var(--block-font-family);
+ border-style:solid;
+ border-width:thin;
+ border-radius:10px;
+ padding:10px;
+ margin-bottom:10px;
+ margin-right:10px;
+ display:inline-block;
+}
+.preview-block {
+ font-size:1em;
+ font-family:var(--block-font-family);
+ border-style:solid;
+ border-width:thin;
+ border-radius:10px;
+ padding:10px;
+ margin-bottom:10px;
+ margin-right:10px;
+ display:inline-block;
+}
+div.block div.deprecation-comment {
+ font-style:normal;
+}
+details.invalid-tag, span.invalid-tag {
+ font-size:1em;
+ font-family:var(--block-font-family);
+ color: var(--invalid-tag-text-color);
+ background: var(--invalid-tag-background-color);
+ border: thin solid var(--table-border-color);
+ border-radius:2px;
+ padding: 2px 4px;
+ display:inline-block;
+}
+details summary {
+ cursor: pointer;
+}
+/*
+ * Styles specific to HTML5 elements.
+ */
+main, nav, header, footer, section {
+ display:block;
+}
+/*
+ * Styles for javadoc search.
+ */
+.ui-state-active {
+ /* Overrides the color of selection used in jQuery UI */
+ background: var(--selected-background-color);
+ border: 1px solid var(--selected-background-color);
+ color: var(--selected-text-color);
+}
+.ui-autocomplete-category {
+ font-weight:bold;
+ font-size:15px;
+ padding:7px 0 7px 3px;
+ background-color:var(--navbar-background-color);
+ color:var(--navbar-text-color);
+}
+.ui-autocomplete {
+ max-height:85%;
+ max-width:65%;
+ overflow-y:auto;
+ overflow-x:auto;
+ scrollbar-width: thin;
+ white-space:nowrap;
+ box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23);
+}
+ul.ui-autocomplete {
+ position:fixed;
+ z-index:1;
+ background-color: var(--body-background-color);
+}
+ul.ui-autocomplete li {
+ float:left;
+ clear:both;
+ min-width:100%;
+}
+ul.ui-autocomplete li.ui-static-link {
+ position:sticky;
+ bottom:0;
+ left:0;
+ background: var(--subnav-background-color);
+ padding: 5px 0;
+ font-family: var(--body-font-family);
+ font-size: 0.93em;
+ font-weight: bolder;
+ z-index: 2;
+}
+li.ui-static-link a, li.ui-static-link a:visited {
+ text-decoration:none;
+ color:var(--link-color);
+ float:right;
+ margin-right:20px;
+}
+.ui-autocomplete .result-item {
+ font-size: inherit;
+}
+.ui-autocomplete .result-highlight {
+ font-weight:bold;
+}
+#search-input, #page-search-input {
+ background-image:url('resources/glass.png');
+ background-size:13px;
+ background-repeat:no-repeat;
+ background-position:2px 3px;
+ background-color: var(--search-input-background-color);
+ color: var(--search-input-text-color);
+ border-color: var(--border-color);
+ padding-left:20px;
+ width: 250px;
+ margin: 0;
+}
+#search-input {
+ margin-left: 4px;
+}
+#reset-button {
+ background-color: transparent;
+ background-image:url('resources/x.png');
+ background-repeat:no-repeat;
+ background-size:contain;
+ border:0;
+ border-radius:0;
+ width:12px;
+ height:12px;
+ position:absolute;
+ right:12px;
+ top:10px;
+ font-size:0;
+}
+::placeholder {
+ color:var(--search-input-placeholder-color);
+ opacity: 1;
+}
+.search-tag-desc-result {
+ font-style:italic;
+ font-size:11px;
+}
+.search-tag-holder-result {
+ font-style:italic;
+ font-size:12px;
+}
+.search-tag-result:target {
+ background-color:var(--search-tag-highlight-color);
+}
+details.page-search-details {
+ display: inline-block;
+}
+div#result-container {
+ font-size: 1em;
+}
+div#result-container a.search-result-link {
+ padding: 0;
+ margin: 4px 0;
+ width: 100%;
+}
+#result-container .result-highlight {
+ font-weight:bolder;
+}
+.page-search-info {
+ background-color: var(--subnav-background-color);
+ border-radius: 3px;
+ border: 0 solid var(--border-color);
+ padding: 0 8px;
+ overflow: hidden;
+ height: 0;
+ transition: all 0.2s ease;
+}
+div.table-tabs > button.table-tab {
+ background: var(--navbar-background-color);
+ color: var(--navbar-text-color);
+}
+.page-search-header {
+ padding: 5px 12px 7px 12px;
+ font-weight: bold;
+ margin-right: 3px;
+ background-color:var(--navbar-background-color);
+ color:var(--navbar-text-color);
+ display: inline-block;
+}
+button.page-search-header {
+ border: none;
+ cursor: pointer;
+}
+span#page-search-link {
+ text-decoration: underline;
+}
+.module-graph span, .sealed-graph span {
+ display:none;
+ position:absolute;
+}
+.module-graph:hover span, .sealed-graph:hover span {
+ display:block;
+ margin: -100px 0 0 100px;
+ z-index: 1;
+}
+.inherited-list {
+ margin: 10px 0 10px 0;
+}
+section.class-description {
+ line-height: 1.4;
+}
+.summary section[class$="-summary"], .details section[class$="-details"],
+.class-uses .detail, .serialized-class-details {
+ padding: 0 20px 5px 10px;
+ border: 1px solid var(--border-color);
+ background-color: var(--section-background-color);
+}
+.inherited-list, section[class$="-details"] .detail {
+ padding:0 0 5px 8px;
+ background-color:var(--detail-background-color);
+ border:none;
+}
+.vertical-separator {
+ padding: 0 5px;
+}
+ul.help-section-list {
+ margin: 0;
+}
+ul.help-subtoc > li {
+ display: inline-block;
+ padding-right: 5px;
+ font-size: smaller;
+}
+ul.help-subtoc > li::before {
+ content: "\2022" ;
+ padding-right:2px;
+}
+.help-note {
+ font-style: italic;
+}
+/*
+ * Indicator icon for external links.
+ */
+main a[href*="://"]::after {
+ content:"";
+ display:inline-block;
+ background-image:url('data:image/svg+xml; utf8, \
+ \
+ \
+ ');
+ background-size:100% 100%;
+ width:7px;
+ height:7px;
+ margin-left:2px;
+ margin-bottom:4px;
+}
+main a[href*="://"]:hover::after,
+main a[href*="://"]:focus::after {
+ background-image:url('data:image/svg+xml; utf8, \
+ \
+ \
+ ');
+}
+/*
+ * Styles for copy-to-clipboard buttons
+ */
+button.copy {
+ opacity: 80%;
+ border: none;
+ border-radius: 3px;
+ position: relative;
+ background:none;
+ transition: opacity 0.2s;
+ cursor: pointer;
+}
+button.copy:hover,
+button.copy:active {
+ opacity: 100%;
+}
+button.copy img {
+ position: relative;
+ background: none;
+ filter: brightness(var(--copy-icon-brightness));
+}
+button.copy:active {
+ background-color: var(--copy-button-background-color-active);
+}
+button.copy span {
+ color: var(--body-text-color);
+ position: relative;
+ top: -0.1em;
+ transition: all 0.1s;
+ font-size: 0.76rem;
+ line-height: 1.2em;
+}
+/* header/section copy button */
+button.copy-header {
+ margin: 0 0.2em;
+ padding: 0 4px;
+ height: 1.16em;
+}
+button.copy-header img {
+ height: 0.88em;
+ top: 0.1em;
+}
+/* search page copy button */
+button#page-search-copy {
+ margin-left: 0.4em;
+ padding:0.3em;
+ top:0.13em;
+}
+button#page-search-copy img {
+ width: 1.2em;
+ height: 1.2em;
+ padding: 0.01em 0;
+ top: 0.15em;
+}
+button#page-search-copy span {
+ color: var(--body-text-color);
+ content: attr(aria-label);
+ line-height: 1.2em;
+ padding: 0.2em;
+ top: -0.18em;
+ opacity: 0;
+}
+div.page-search-info:hover button#page-search-copy,
+div.page-search-info:hover button#page-search-copy span {
+ opacity: 90%;
+}
+/* snippet copy button */
+button.snippet-copy {
+ position: absolute;
+ top: 6px;
+ right: 6px;
+ height: 1.7em;
+ opacity: 50%;
+ padding: 2px;
+}
+button.snippet-copy img {
+ width: 18px;
+ height: 18px;
+ padding: 0.05em 0;
+}
+button.snippet-copy span {
+ content: attr(aria-label);
+ line-height: 1.2em;
+ padding: 0.2em;
+ position: relative;
+ top: -0.5em;
+ display: none;
+}
+div.snippet-container:hover button.snippet-copy span {
+ display: inline;
+}
+div.snippet-container:hover button.snippet-copy {
+ opacity: 80%;
+}
+div.snippet-container button.snippet-copy:hover {
+ opacity: 100%;
+}
+/*
+ * Styles for user-provided tables.
+ *
+ * borderless:
+ * No borders, vertical margins, styled caption.
+ * This style is provided for use with existing doc comments.
+ * In general, borderless tables should not be used for layout purposes.
+ *
+ * plain:
+ * Plain borders around table and cells, vertical margins, styled caption.
+ * Best for small tables or for complex tables for tables with cells that span
+ * rows and columns, when the "striped" style does not work well.
+ *
+ * striped:
+ * Borders around the table and vertical borders between cells, striped rows,
+ * vertical margins, styled caption.
+ * Best for tables that have a header row, and a body containing a series of simple rows.
+ */
+
+table.borderless,
+table.plain,
+table.striped {
+ margin-top: 10px;
+ margin-bottom: 10px;
+}
+table.borderless > caption,
+table.plain > caption,
+table.striped > caption {
+ font-weight: bold;
+ font-size: smaller;
+}
+table.borderless th, table.borderless td,
+table.plain th, table.plain td,
+table.striped th, table.striped td {
+ padding: 2px 5px;
+}
+table.borderless,
+table.borderless > thead > tr > th, table.borderless > tbody > tr > th, table.borderless > tr > th,
+table.borderless > thead > tr > td, table.borderless > tbody > tr > td, table.borderless > tr > td {
+ border: none;
+}
+table.borderless > thead > tr, table.borderless > tbody > tr, table.borderless > tr {
+ background-color: transparent;
+}
+table.plain {
+ border-collapse: collapse;
+ border: 1px solid var(--table-border-color);
+}
+table.plain > thead > tr, table.plain > tbody tr, table.plain > tr {
+ background-color: transparent;
+}
+table.plain > thead > tr > th, table.plain > tbody > tr > th, table.plain > tr > th,
+table.plain > thead > tr > td, table.plain > tbody > tr > td, table.plain > tr > td {
+ border: 1px solid var(--table-border-color);
+}
+table.striped {
+ border-collapse: collapse;
+ border: 1px solid var(--table-border-color);
+}
+table.striped > thead {
+ background-color: var(--subnav-background-color);
+}
+table.striped > thead > tr > th, table.striped > thead > tr > td {
+ border: 1px solid var(--table-border-color);
+}
+table.striped > tbody > tr:nth-child(even) {
+ background-color: var(--odd-row-color)
+}
+table.striped > tbody > tr:nth-child(odd) {
+ background-color: var(--even-row-color)
+}
+table.striped > tbody > tr > th, table.striped > tbody > tr > td {
+ border-left: 1px solid var(--table-border-color);
+ border-right: 1px solid var(--table-border-color);
+}
+table.striped > tbody > tr > th {
+ font-weight: normal;
+}
+/**
+ * Tweak style for small screens.
+ */
+@media screen and (max-width: 920px) {
+ header.flex-header {
+ max-height: 100vh;
+ overflow-y: auto;
+ }
+ div#navbar-top {
+ height: 2.8em;
+ transition: height 0.35s ease;
+ }
+ ul.nav-list {
+ display: block;
+ width: 40%;
+ float:left;
+ clear: left;
+ margin: 10px 0 0 0;
+ padding: 0;
+ }
+ ul.nav-list li {
+ float: none;
+ padding: 6px;
+ margin-left: 10px;
+ margin-top: 2px;
+ }
+ ul.sub-nav-list-small {
+ display:block;
+ height: 100%;
+ width: 50%;
+ float: right;
+ clear: right;
+ background-color: var(--subnav-background-color);
+ color: var(--body-text-color);
+ margin: 6px 0 0 0;
+ padding: 0;
+ }
+ ul.sub-nav-list-small ul {
+ padding-left: 20px;
+ }
+ ul.sub-nav-list-small a:link, ul.sub-nav-list-small a:visited {
+ color:var(--link-color);
+ }
+ ul.sub-nav-list-small a:hover {
+ color:var(--link-color-active);
+ }
+ ul.sub-nav-list-small li {
+ list-style:none;
+ float:none;
+ padding: 6px;
+ margin-top: 1px;
+ text-transform:uppercase;
+ }
+ ul.sub-nav-list-small > li {
+ margin-left: 10px;
+ }
+ ul.sub-nav-list-small li p {
+ margin: 5px 0;
+ }
+ div#navbar-sub-list {
+ display: none;
+ }
+ .top-nav a:link, .top-nav a:active, .top-nav a:visited {
+ display: block;
+ }
+ button#navbar-toggle-button {
+ width: 3.4em;
+ height: 2.8em;
+ background-color: transparent;
+ display: block;
+ float: left;
+ border: 0;
+ margin: 0 10px;
+ cursor: pointer;
+ font-size: 10px;
+ }
+ button#navbar-toggle-button .nav-bar-toggle-icon {
+ display: block;
+ width: 24px;
+ height: 3px;
+ margin: 1px 0 4px 0;
+ border-radius: 2px;
+ transition: all 0.1s;
+ background-color: var(--navbar-text-color);
+ }
+ button#navbar-toggle-button.expanded span.nav-bar-toggle-icon:nth-child(1) {
+ transform: rotate(45deg);
+ transform-origin: 10% 10%;
+ width: 26px;
+ }
+ button#navbar-toggle-button.expanded span.nav-bar-toggle-icon:nth-child(2) {
+ opacity: 0;
+ }
+ button#navbar-toggle-button.expanded span.nav-bar-toggle-icon:nth-child(3) {
+ transform: rotate(-45deg);
+ transform-origin: 10% 90%;
+ width: 26px;
+ }
+}
+@media screen and (max-width: 800px) {
+ .about-language {
+ padding-right: 16px;
+ }
+ ul.nav-list li {
+ margin-left: 5px;
+ }
+ ul.sub-nav-list-small > li {
+ margin-left: 5px;
+ }
+ main {
+ padding: 10px;
+ }
+ .summary section[class$="-summary"], .details section[class$="-details"],
+ .class-uses .detail, .serialized-class-details {
+ padding: 0 8px 5px 8px;
+ }
+ body {
+ -webkit-text-size-adjust: none;
+ }
+}
+@media screen and (max-width: 400px) {
+ .about-language {
+ font-size: 10px;
+ padding-right: 12px;
+ }
+}
+@media screen and (max-width: 400px) {
+ .nav-list-search {
+ width: 94%;
+ }
+ #search-input, #page-search-input {
+ width: 70%;
+ }
+}
+@media screen and (max-width: 320px) {
+ .nav-list-search > label {
+ display: none;
+ }
+ .nav-list-search {
+ width: 90%;
+ }
+ #search-input, #page-search-input {
+ width: 80%;
+ }
+}
+
+pre.snippet {
+ background-color: var(--snippet-background-color);
+ color: var(--snippet-text-color);
+ padding: 10px;
+ margin: 12px 0;
+ overflow: auto;
+ white-space: pre;
+}
+div.snippet-container {
+ position: relative;
+}
+@media screen and (max-width: 800px) {
+ pre.snippet {
+ padding-top: 26px;
+ }
+ button.snippet-copy {
+ top: 4px;
+ right: 4px;
+ }
+}
+pre.snippet .italic {
+ font-style: italic;
+}
+pre.snippet .bold {
+ font-weight: bold;
+}
+pre.snippet .highlighted {
+ background-color: var(--snippet-highlight-color);
+ border-radius: 10%;
+}
diff --git a/doc/tag-search-index.js b/doc/tag-search-index.js
new file mode 100644
index 0000000..3349532
--- /dev/null
+++ b/doc/tag-search-index.js
@@ -0,0 +1 @@
+tagSearchIndex = [{"l":"常量字段值","h":"","u":"constant-values.html"},{"l":"序列化表格","h":"","u":"serialized-form.html"}];updateSearchResults();
\ No newline at end of file
diff --git a/doc/top/milkbox/Main.html b/doc/top/milkbox/Main.html
new file mode 100644
index 0000000..e4463b4
--- /dev/null
+++ b/doc/top/milkbox/Main.html
@@ -0,0 +1,173 @@
+
+
+
+
+Main
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+public class Main
+
extends Object
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
+
从类继承的方法 java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+方法详细资料
+
+
+
+main
+public static void main (String [] args)
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/top/milkbox/class-use/Main.html b/doc/top/milkbox/class-use/Main.html
new file mode 100644
index 0000000..7f50b64
--- /dev/null
+++ b/doc/top/milkbox/class-use/Main.html
@@ -0,0 +1,58 @@
+
+
+
+
+类 top.milkbox.Main的使用
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+没有top.milkbox.Main的用法
+
+
+
+
diff --git a/doc/top/milkbox/core/BaseServlet.html b/doc/top/milkbox/core/BaseServlet.html
new file mode 100644
index 0000000..49c2b0f
--- /dev/null
+++ b/doc/top/milkbox/core/BaseServlet.html
@@ -0,0 +1,267 @@
+
+
+
+
+BaseServlet
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+java.lang.Object
+
javax.servlet.GenericServlet
+
javax.servlet.http.HttpServlet
+
top.milkbox.core.BaseServlet
+
+
+
+
+
+所有已实现的接口:
+Serializable
, javax.servlet.Servlet
, javax.servlet.ServletConfig
+
+
+public class BaseServlet
+extends javax.servlet.http.HttpServlet
+减少Servlet的数量,现在是一个功能一个Servlet,将其优化为一个模块一个Servlet,
+ 相当于在数据库中一张表对应一个Servlet,在Servlet中提供不同的方法,完成用户的请求。
+
+作者:
+milkbox
+另请参阅:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
所有方法 实例方法 具体方法
+
+
+
+
+
+
protected void
+
service (javax.servlet.http.HttpServletRequest req,
+ javax.servlet.http.HttpServletResponse resp)
+
+
void
+
+
+
将指定的object对象转为json字符串,并输出到response的输出流中
+
+
+
+
+
void
+
+
+
将指定的object对象转为json字符串,并输出到response的输出流中
+ 并在控制台打印日志信息
+
+
+
+
+
+
从类继承的方法 javax.servlet.http.HttpServlet
+doDelete, doGet, doHead, doOptions, doPost, doPut, doTrace, getLastModified, service
+
+
从类继承的方法 javax.servlet.GenericServlet
+destroy, getInitParameter, getInitParameterNames, getServletConfig, getServletContext, getServletInfo, getServletName, init, init, log, log
+
+
从类继承的方法 java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+构造器详细资料
+
+
+
+BaseServlet
+public BaseServlet ()
+
+
+
+
+
+
+
+
+方法详细资料
+
+
+
+service
+protected void service (javax.servlet.http.HttpServletRequest req,
+ javax.servlet.http.HttpServletResponse resp)
+ throws javax.servlet.ServletException,
+IOException
+
+覆盖:
+service
在类中 javax.servlet.http.HttpServlet
+抛出:
+javax.servlet.ServletException
+IOException
+
+
+
+
+
+writeValue
+public void writeValue (Object object,
+ javax.servlet.http.HttpServletResponse response)
+ throws IOException
+将指定的object对象转为json字符串,并输出到response的输出流中
+
+抛出:
+IOException
+
+
+
+
+
+writeValueAsString
+
+将指定的object对象转为json字符串
+
+抛出:
+IOException
+
+
+
+
+
+writeValueWithLog
+public void writeValueWithLog (Object object,
+ javax.servlet.http.HttpServletResponse response)
+ throws IOException
+将指定的object对象转为json字符串,并输出到response的输出流中
+ 并在控制台打印日志信息
+
+抛出:
+IOException
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/top/milkbox/core/CheckCodeServlet.html b/doc/top/milkbox/core/CheckCodeServlet.html
new file mode 100644
index 0000000..5099afd
--- /dev/null
+++ b/doc/top/milkbox/core/CheckCodeServlet.html
@@ -0,0 +1,230 @@
+
+
+
+
+CheckCodeServlet
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+java.lang.Object
+
javax.servlet.GenericServlet
+
javax.servlet.http.HttpServlet
+
top.milkbox.core.CheckCodeServlet
+
+
+
+
+
+所有已实现的接口:
+Serializable
, javax.servlet.Servlet
, javax.servlet.ServletConfig
+
+
+@WebServlet("/checkCode")
+ public class CheckCodeServlet
+extends javax.servlet.http.HttpServlet
+验证码
+
+作者:
+milkbox
+另请参阅:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
所有方法 实例方法 具体方法
+
+
+
+
+
+
void
+
doGet (javax.servlet.http.HttpServletRequest request,
+ javax.servlet.http.HttpServletResponse response)
+
+
void
+
doPost (javax.servlet.http.HttpServletRequest request,
+ javax.servlet.http.HttpServletResponse response)
+
+
+
+
+
+
从类继承的方法 javax.servlet.http.HttpServlet
+doDelete, doHead, doOptions, doPut, doTrace, getLastModified, service, service
+
+
从类继承的方法 javax.servlet.GenericServlet
+destroy, getInitParameter, getInitParameterNames, getServletConfig, getServletContext, getServletInfo, getServletName, init, init, log, log
+
+
从类继承的方法 java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+构造器详细资料
+
+
+
+CheckCodeServlet
+public CheckCodeServlet ()
+
+
+
+
+
+
+
+
+方法详细资料
+
+
+
+doGet
+public void doGet (javax.servlet.http.HttpServletRequest request,
+ javax.servlet.http.HttpServletResponse response)
+ throws javax.servlet.ServletException,
+IOException
+
+覆盖:
+doGet
在类中 javax.servlet.http.HttpServlet
+抛出:
+javax.servlet.ServletException
+IOException
+
+
+
+
+
+doPost
+public void doPost (javax.servlet.http.HttpServletRequest request,
+ javax.servlet.http.HttpServletResponse response)
+ throws javax.servlet.ServletException,
+IOException
+
+覆盖:
+doPost
在类中 javax.servlet.http.HttpServlet
+抛出:
+javax.servlet.ServletException
+IOException
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/top/milkbox/core/DrawName.html b/doc/top/milkbox/core/DrawName.html
new file mode 100644
index 0000000..7fb5e65
--- /dev/null
+++ b/doc/top/milkbox/core/DrawName.html
@@ -0,0 +1,217 @@
+
+
+
+
+DrawName
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+public class DrawName
+
extends Object
+绘制姓名到图片中
+
+作者:
+milkbox
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
所有方法 实例方法 具体方法
+
+
+
+
+
+
void
+
+
+
void
+
+
+
+
+
+
+
从类继承的方法 java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+构造器详细资料
+
+
+
+DrawName
+public DrawName (File templatePictureFile,
+ String outputPath)
+初始化方法
+
+参数:
+templatePictureFile
- 模板图片
+outputPath
- 输出路径
+
+
+
+
+
+
+
+
+
+方法详细资料
+
+
+
+drawOne
+
+将一个姓名绘制到图片中
+
+参数:
+name
- 姓名
+抛出:
+IOException
- IO异常
+
+
+
+
+
+drawList
+
+将多个姓名通过模板分别绘制到对应的图片中
+
+参数:
+nameList
- 姓名列表
+抛出:
+IOException
- IO异常
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/top/milkbox/core/HttpClientUtils.html b/doc/top/milkbox/core/HttpClientUtils.html
new file mode 100644
index 0000000..182a55b
--- /dev/null
+++ b/doc/top/milkbox/core/HttpClientUtils.html
@@ -0,0 +1,344 @@
+
+
+
+
+HttpClientUtils
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+public class HttpClientUtils
+
extends Object
+http请求工具类
+ 需要依赖
+ 创建时间:2022年9月29日20:04:40
+
+版本:
+1.0.0
+作者:
+互联网,milkbox改进
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
所有方法 静态方法 具体方法
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
从类继承的方法 java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+构造器详细资料
+
+
+
+HttpClientUtils
+public HttpClientUtils ()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/top/milkbox/core/MD5Utils.html b/doc/top/milkbox/core/MD5Utils.html
new file mode 100644
index 0000000..2bb531e
--- /dev/null
+++ b/doc/top/milkbox/core/MD5Utils.html
@@ -0,0 +1,213 @@
+
+
+
+
+MD5Utils
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+public class MD5Utils
+
extends Object
+MD5加密/验证工具类
+
+ 创建时间:2022年9月29日20:13:29
+
+版本:
+1.0.0
+作者:
+互联网,milkbox添加某些功能
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
所有方法 静态方法 具体方法
+
+
+
+
+
+
+
+
+
static void
+
+
+
+
+
+
+
+
+
+
从类继承的方法 java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+构造器详细资料
+
+
+
+MD5Utils
+public MD5Utils ()
+
+
+
+
+
+
+
+
+方法详细资料
+
+
+
+encode
+
+使用UTF-8,结果转为小写进行编码
+
+参数:
+source
- 原字符串
+返回:
+MD5加密后的字符串
+
+
+
+
+
+
+
+
+main
+public static void main (String [] args)
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/top/milkbox/core/PageBean.html b/doc/top/milkbox/core/PageBean.html
new file mode 100644
index 0000000..f5018da
--- /dev/null
+++ b/doc/top/milkbox/core/PageBean.html
@@ -0,0 +1,291 @@
+
+
+
+
+PageBean
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+public class PageBean<T>
+
extends Object
+
+
+
+
+
+
+构造器概要
+构造器
+
+
+
+
+
+
PageBean (int totalCount,
+ List <T > list,
+ int currentPage,
+ int rows)
+
+
使用此方法创建的对象中,会自动计算totalPage总页码数
+
+
+
+
+
+
+
+方法概要
+
+
所有方法 实例方法 具体方法
+
+
+
+
+
+
int
+
+
+
+
+
+
int
+
+
+
int
+
+
+
int
+
+
+
void
+
+
+
void
+
+
+
void
+
+
+
void
+
+
+
void
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+构造器详细资料
+
+
+
+PageBean
+public PageBean (int totalCount,
+ List <T > list,
+ int currentPage,
+ int rows)
+使用此方法创建的对象中,会自动计算totalPage总页码数
+
+参数:
+totalCount
- 总记录数
+list
- 每页的数据
+currentPage
- 当前页码
+rows
- 每页显示的条数
+
+
+
+
+
+PageBean
+public PageBean ()
+
+
+
+
+
+
+
+
+方法详细资料
+
+
+
+getTotalCount
+public int getTotalCount ()
+
+
+
+
+setTotalCount
+public void setTotalCount (int totalCount)
+
+
+
+
+getTotalPage
+public int getTotalPage ()
+
+
+
+
+setTotalPage
+public void setTotalPage (int totalPage)
+
+
+
+
+
+
+
+setList
+public void setList (List <T > list)
+
+
+
+
+getCurrentPage
+public int getCurrentPage ()
+
+
+
+
+setCurrentPage
+public void setCurrentPage (int currentPage)
+
+
+
+
+getRows
+public int getRows ()
+
+
+
+
+setRows
+public void setRows (int rows)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/top/milkbox/core/R.html b/doc/top/milkbox/core/R.html
new file mode 100644
index 0000000..1c9237c
--- /dev/null
+++ b/doc/top/milkbox/core/R.html
@@ -0,0 +1,267 @@
+
+
+
+
+R
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+public class R<T>
+
extends Object
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
所有方法 静态方法 实例方法 具体方法
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
void
+
+
+
void
+
+
+
void
+
+
+
+
+
+
+
从类继承的方法 java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+方法详细资料
+
+
+
+data
+public static <T> R <T> data (T data)
+
+
+
+
+error
+public static <T> R <T> error ()
+
+
+
+
+error
+public static <T> R <T> error (String errorMessage)
+
+
+
+
+ok
+public static <T> R <T> ok ()
+
+
+
+
+ok
+public static <T> R <T> ok (String okMessage)
+
+
+
+
+
+
+
+setCode
+public void setCode (String code)
+
+
+
+
+
+
+
+setData
+public void setData (T data)
+
+
+
+
+
+
+
+setMessage
+public void setMessage (String message)
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/top/milkbox/core/SensitiveFilter.html b/doc/top/milkbox/core/SensitiveFilter.html
new file mode 100644
index 0000000..198f4a8
--- /dev/null
+++ b/doc/top/milkbox/core/SensitiveFilter.html
@@ -0,0 +1,228 @@
+
+
+
+
+SensitiveFilter
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+所有已实现的接口:
+javax.servlet.Filter
+
+
+@WebFilter("/*")
+ public class SensitiveFilter
+
extends Object
+implements javax.servlet.Filter
+使用过滤器来对用户发送的数据进行敏感词过滤
+
+版本:
+1.0
+作者:
+xiaoguo
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
所有方法 实例方法 具体方法
+
+
+
+
+
+
void
+
+
+
void
+
doFilter (javax.servlet.ServletRequest servletRequest,
+ javax.servlet.ServletResponse servletResponse,
+ javax.servlet.FilterChain chain)
+
+
void
+
init (javax.servlet.FilterConfig config)
+
+
+
+
+
+
从类继承的方法 java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+构造器详细资料
+
+
+
+SensitiveFilter
+public SensitiveFilter ()
+
+
+
+
+
+
+
+
+方法详细资料
+
+
+
+init
+public void init (javax.servlet.FilterConfig config)
+ throws javax.servlet.ServletException
+
+指定者:
+init
在接口中 javax.servlet.Filter
+抛出:
+javax.servlet.ServletException
+
+
+
+
+
+doFilter
+public void doFilter (javax.servlet.ServletRequest servletRequest,
+ javax.servlet.ServletResponse servletResponse,
+ javax.servlet.FilterChain chain)
+ throws javax.servlet.ServletException,
+IOException
+
+指定者:
+doFilter
在接口中 javax.servlet.Filter
+抛出:
+javax.servlet.ServletException
+IOException
+
+
+
+
+
+destroy
+public void destroy ()
+
+指定者:
+destroy
在接口中 javax.servlet.Filter
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/top/milkbox/core/UtilsColl.html b/doc/top/milkbox/core/UtilsColl.html
new file mode 100644
index 0000000..a4fb64c
--- /dev/null
+++ b/doc/top/milkbox/core/UtilsColl.html
@@ -0,0 +1,221 @@
+
+
+
+
+UtilsColl
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+public class UtilsColl
+
extends Object
+集合工具
+
+作者:
+milkbox
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
所有方法 静态方法 具体方法
+
+
+
+
+
+
+
+
+
+
+
+
static void
+
+
+
static void
+
+
+
+
+
+
+
从类继承的方法 java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+构造器详细资料
+
+
+
+UtilsColl
+public UtilsColl ()
+
+
+
+
+
+
+
+
+方法详细资料
+
+
+
+main
+public static void main (String [] args)
+
+
+
+
+
+
+
+
+
+
+descartesRecursion
+
+递归求笛卡尔积
+
+参数:
+mainList
- 被求解的集合
+index
- 中间值-当前操作的mainList下标
+tempList
- 中间值-结果的一行
+resultList
- 结果集合
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/top/milkbox/core/UtilsConsoleMenu.MenuPredicate.html b/doc/top/milkbox/core/UtilsConsoleMenu.MenuPredicate.html
new file mode 100644
index 0000000..8cb0b8f
--- /dev/null
+++ b/doc/top/milkbox/core/UtilsConsoleMenu.MenuPredicate.html
@@ -0,0 +1,165 @@
+
+
+
+
+UtilsConsoleMenu.MenuPredicate
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+类型参数:
+T
- 参数1
+
+
+封闭类:
+UtilsConsoleMenu
+
+
+函数接口:
+这是一个函数接口, 因此可用作 lambda 表达式或方法引用的赋值目标。
+
+
+
+菜单专用函数式接口
+
+
+
+
+
+
+
+方法详细资料
+
+
+
+test
+
+定义要进行的详细操作
+
+参数:
+t
- 一般是用户在控制台中的输入信息,可以自定义
+scanner
- Scanner类
+返回:
+返回的操作
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/top/milkbox/core/UtilsConsoleMenu.ReturnFlag.html b/doc/top/milkbox/core/UtilsConsoleMenu.ReturnFlag.html
new file mode 100644
index 0000000..828c003
--- /dev/null
+++ b/doc/top/milkbox/core/UtilsConsoleMenu.ReturnFlag.html
@@ -0,0 +1,244 @@
+
+
+
+
+UtilsConsoleMenu.ReturnFlag
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
所有方法 静态方法 具体方法
+
+
+
+
+
+
+
+
+
+
+
+
返回包含该枚举类的常量的数组,
+顺序与声明这些常量的顺序相同
+
+
+
+
+
+
从类继承的方法 java.lang.Enum
+
clone , compareTo , describeConstable , equals , finalize , getDeclaringClass , hashCode , name , ordinal , toString , valueOf
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+方法详细资料
+
+
+
+values
+
+返回包含该枚举类的常量的数组,
+顺序与声明这些常量的顺序相同
+
+返回:
+包含该枚举类的常量的数组,顺序与声明这些常量的顺序相同
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/top/milkbox/core/UtilsConsoleMenu.html b/doc/top/milkbox/core/UtilsConsoleMenu.html
new file mode 100644
index 0000000..426eb9e
--- /dev/null
+++ b/doc/top/milkbox/core/UtilsConsoleMenu.html
@@ -0,0 +1,283 @@
+
+
+
+
+UtilsConsoleMenu
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+public class UtilsConsoleMenu
+
extends Object
+控制台菜单控制工具类
+
+ 创建时间:2023年2月14日
+ 最后修改:2023年2月14日
+
+作者:
+guo
+
+
+
+
+
+
+
+嵌套类概要
+嵌套类
+
+
+
+
+
static interface
+
+
+
static enum
+
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
所有方法 静态方法 具体方法
+
+
+
+
+
+
static void
+
+
+
static void
+
+
+
static void
+
+
+
static void
+
+
+
static void
+
+
+
static void
+
+
+
static void
+
+
+
+
+
+
+
从类继承的方法 java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+构造器详细资料
+
+
+
+UtilsConsoleMenu
+public UtilsConsoleMenu ()
+
+
+
+
+
+
+
+
+方法详细资料
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+printlnWarnStay
+public static void printlnWarnStay (String message,
+ long millis)
+打印一句话并停留一会,带有颜色
+
+参数:
+message
- 打印的内容
+millis
- 停留多长时间,单位毫秒
+
+
+
+
+
+printlnWarnStay
+public static void printlnWarnStay (String message)
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/top/milkbox/core/UtilsDate.html b/doc/top/milkbox/core/UtilsDate.html
new file mode 100644
index 0000000..2187ef4
--- /dev/null
+++ b/doc/top/milkbox/core/UtilsDate.html
@@ -0,0 +1,459 @@
+
+
+
+
+UtilsDate
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+public class UtilsDate
+
extends Object
+0与时间相关的方法
+
+ G 年代标志符
+
+ y 年
+
+ M 月
+
+ d 日
+
+ h 时 在上午或下午 (1~12)
+
+ H 时 在一天中 (0~23)
+
+ m 分
+
+ s 秒
+
+ S 毫秒
+
+ E 星期
+
+ D 一年中的第几天
+
+ F 一月中第几个星期几
+
+ w 一年中第几个星期
+
+ W 一月中第几个星期
+
+ a 上午 / 下午 标记符
+
+ z 时区
+
+作者:
+milkbox
+
+
+
+
+
+
+
+字段概要
+字段
+
+
+
+
+
static final int
+
+
+
static final int
+
+
+
static final int
+
+
+
static final int
+
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
所有方法 静态方法 具体方法
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
通过指定的字符串转化为date类型(默认传入格式:yyyy/MM/dd HH:mm:ss),如果传入格式错误则会报错并返回null
+
+
+
+
+
根据指定的时间格式dateFormat,将字符串dateString转换为date类型,如果传入格式错误则会报错并返回null
+
+
+
+
+
获取当前的时间,默认格式:yyyy-MM-dd HH:mm:ss
+
+
+
+
+
static long
+
+
+
+
+
+
获取指定日期是星期几 参数为null时表示获取当前日期是星期几
+
+
+
+
+
+
从类继承的方法 java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+字段详细资料
+
+
+
+ONE_DAY_TIME
+public static final int ONE_DAY_TIME
+
+另请参阅:
+
+
+
+
+
+
+
+
+ONE_HOUR_TIME
+public static final int ONE_HOUR_TIME
+
+另请参阅:
+
+
+
+
+
+
+
+
+ONE_MINUTE_TIME
+public static final int ONE_MINUTE_TIME
+
+另请参阅:
+
+
+
+
+
+
+
+
+ONE_SECOND_TIME
+public static final int ONE_SECOND_TIME
+
+另请参阅:
+
+
+
+
+
+
+
+
+
+
+
+
+构造器详细资料
+
+
+
+UtilsDate
+public UtilsDate ()
+
+
+
+
+
+
+
+
+方法详细资料
+
+
+
+getWeekOfDate
+
+获取指定日期是星期几 参数为null时表示获取当前日期是星期几
+
+参数:
+strDate
- 时间字符串(如2019-10-29)
+返回:
+返回星期
+
+
+
+
+
+dateAdd
+public static Date dateAdd (Date date,
+ int day)
+将给定的时间加day天(可以为负数)
+
+参数:
+date
- 指定的时间
+day
- 增加天数(可以为负数)
+返回:
+返回计算后的时间
+
+
+
+
+
+getDateNow
+public static String getDateNow ()
+获取当前的时间,默认格式:yyyy-MM-dd HH:mm:ss
+
+返回:
+返回时间字符串
+
+
+
+
+
+getDateNow
+
+通过指定的格式获取当前的时间
+
+返回:
+返回时间字符串
+
+
+
+
+
+dateToString
+
+将date类型转换为字符类型,格式自定义
+
+参数:
+date
- date类型数据
+simpleDate
- 转换的模板
+返回:
+返回字符串
+
+
+
+
+
+getDateFromString
+public static Date getDateFromString (String dateString)
+通过指定的字符串转化为date类型(默认传入格式:yyyy/MM/dd HH:mm:ss),如果传入格式错误则会报错并返回null
+
+参数:
+dateString
- 传入的字符串
+返回:
+返回date类型
+
+
+
+
+
+getDateFromString
+
+根据指定的时间格式dateFormat,将字符串dateString转换为date类型,如果传入格式错误则会报错并返回null
+
+参数:
+dateFormat
- 时间格式
+dateString
- 要转换的字符串
+返回:
+返回date类型
+
+
+
+
+
+getBetweenTwoDate
+
+获取两个时间之间的时间,即两个时间相减
+
+参数:
+date1
- 起始时间
+date2
- 结束时间
+返回:
+返回xx天xx时xx分xx秒xx毫秒,字符串
+
+
+
+
+
+getResidueDay
+public static long getResidueDay (Date date)
+获取当前时间不足一天的剩余的毫秒值
+
+参数:
+date
- 时间
+返回:
+不足一天的剩余的毫秒值
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/top/milkbox/core/UtilsDownload.html b/doc/top/milkbox/core/UtilsDownload.html
new file mode 100644
index 0000000..b4af0f6
--- /dev/null
+++ b/doc/top/milkbox/core/UtilsDownload.html
@@ -0,0 +1,201 @@
+
+
+
+
+UtilsDownload
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+public class UtilsDownload
+
extends Object
+关于javaweb文件下载的相关工具
+
+版本:
+2021-9-12
+作者:
+milkbox
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
所有方法 静态方法 具体方法
+
+
+
+
+
+
+
+
+
根据agent中的浏览器标识,来根据不同浏览器对filename进行编码
+ 以防止中文文件名乱码
+
+
+
+
+
+
从类继承的方法 java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+构造器详细资料
+
+
+
+UtilsDownload
+public UtilsDownload ()
+
+
+
+
+
+
+
+
+方法详细资料
+
+
+
+getFileName
+
+根据agent中的浏览器标识,来根据不同浏览器对filename进行编码
+ 以防止中文文件名乱码
+
+ 注意区分jdk版本
+
+ 来自互联网并由xiaoguo修改了火狐编码的部分
+
+参数:
+agent
- 通过请求头中的user-agent属性来传入,即直接传入user-agent属性值即可
+filename
- 要编码的文件名
+返回:
+返回编码后的文件名
+抛出:
+UnsupportedEncodingException
- 抛出异常
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/top/milkbox/core/UtilsEmail.html b/doc/top/milkbox/core/UtilsEmail.html
new file mode 100644
index 0000000..5f3c024
--- /dev/null
+++ b/doc/top/milkbox/core/UtilsEmail.html
@@ -0,0 +1,205 @@
+
+
+
+
+UtilsEmail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+public final class UtilsEmail
+
extends Object
+发邮件工具类
+
+作者:
+milkbox
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
所有方法 静态方法 具体方法
+
+
+
+
+
+
static void
+
+
+
static boolean
+
+
+
+
+
+
+
从类继承的方法 java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+构造器详细资料
+
+
+
+UtilsEmail
+public UtilsEmail ()
+
+
+
+
+
+
+
+
+方法详细资料
+
+
+
+sendMail
+
+发送验证信息的邮件
+
+参数:
+to
- 收件人邮箱
+text
- 邮件正文
+title
- 标题
+
+
+
+
+
+main
+
+
+抛出:
+Exception
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/top/milkbox/core/UtilsFile.html b/doc/top/milkbox/core/UtilsFile.html
new file mode 100644
index 0000000..a8f65d7
--- /dev/null
+++ b/doc/top/milkbox/core/UtilsFile.html
@@ -0,0 +1,371 @@
+
+
+
+
+UtilsFile
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+public class UtilsFile
+
extends Object
+有关文件的操作工具
+ 文件编码的操作
+ 文件类型的操作
+
+ 创建时间 2023年2月10日
+ 最后修改 2023年2月10日
+
+作者:
+milkbox
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
所有方法 静态方法 具体方法
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
判断文本文件的字符编码,注意:并非100%准确
+
+
+
+
+
+
+
+
+
+
+
获取文件扩展名
+ 例如:
+ 列子.2022.txt 论语.2022.09.24.txt 这些都是“.txt”,所以level设置为1
+ java.8.11.tar.gz mysql.5.7.tar.gz 这种的都是“.tar.gz”,所以level设置为2
+
+
+
+
+
+
+
+
获取.之前的名字,例如:file.txt -> file
+
+
+
+
+
文件移动,将oldPath移动到newPath中,如果文件名不一样则会重命名
+ 目标目录必须存在,目标目录下不能有重名文件
+
+
static void
+
+
+
+
+
+
+
从类继承的方法 java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+构造器详细资料
+
+
+
+UtilsFile
+public UtilsFile ()
+
+
+
+
+
+
+
+
+方法详细资料
+
+
+
+
+
+
+getFileCharsetName
+
+判断文本文件编码的重载
+
+参数:
+filePath
- 文件的全路径
+返回:
+返回编码类型字符串
+抛出:
+Exception
- 文件未找到获取所选的不是文件
+
+
+
+
+
+getFileCharsetName
+
+判断文本文件编码的重载
+
+参数:
+file
- File类
+返回:
+返回编码类型字符串
+抛出:
+Exception
- 文件未找到获取所选的不是文件
+
+
+
+
+
+
+
+
+getFileExtension
+
+获取文件扩展名
+ 例如:
+ 列子.2022.txt 论语.2022.09.24.txt 这些都是“.txt”,所以level设置为1
+ java.8.11.tar.gz mysql.5.7.tar.gz 这种的都是“.tar.gz”,所以level设置为2
+
+参数:
+fileName
- 文件名,全名
+level
- 要获取的扩展名的个数
+返回:
+返回扩展名(带点),失败则返回null
+
+
+
+
+
+getFileExtension
+
+获取文件扩展名
+
+参数:
+fileName
- 文件全名
+返回:
+返回扩展名(带点),失败返回null
+
+
+
+
+
+getFileNameBeforeDot
+
+获取.之前的名字,例如:file.txt -> file
+
+参数:
+fileName
- 文件名
+返回:
+返回文件名
+
+
+
+
+
+getFileNameBeforeDot
+public static String getFileNameBeforeDot (File file)
+
+
+
+
+appendFileNameBeforeDot
+
+
+
+
+
+removeFile
+
+文件移动,将oldPath移动到newPath中,如果文件名不一样则会重命名
+ 目标目录必须存在,目标目录下不能有重名文件
+
+参数:
+oldPath
- 原来的文件磁盘路径,例如:C://file/file/text.txt
+newPath
- 新的文件磁盘路径,例如:C://box/box/list.txt
+返回:
+成功true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/top/milkbox/core/UtilsIp.html b/doc/top/milkbox/core/UtilsIp.html
new file mode 100644
index 0000000..06d693e
--- /dev/null
+++ b/doc/top/milkbox/core/UtilsIp.html
@@ -0,0 +1,191 @@
+
+
+
+
+UtilsIp
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+public class UtilsIp
+
extends Object
+获取用户ip地址
+
+ 创建时间:2022年10月12日15:51:40
+
+版本:
+1.0.0
+作者:
+milkbox
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
所有方法 静态方法 具体方法
+
+
+
+
+
+
+
getRealIp (javax.servlet.http.HttpServletRequest request)
+
+
+
+
+
+
从类继承的方法 java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+构造器详细资料
+
+
+
+UtilsIp
+public UtilsIp ()
+
+
+
+
+
+
+
+
+方法详细资料
+
+
+
+getRealIp
+public static String getRealIp (javax.servlet.http.HttpServletRequest request)
+获取用户的真实ip地址
+
+参数:
+request
- request对象
+返回:
+返回StringIp
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/top/milkbox/core/UtilsJDBC.html b/doc/top/milkbox/core/UtilsJDBC.html
new file mode 100644
index 0000000..01c87f8
--- /dev/null
+++ b/doc/top/milkbox/core/UtilsJDBC.html
@@ -0,0 +1,229 @@
+
+
+
+
+UtilsJDBC
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+public class UtilsJDBC
+
extends Object
+JDBC工具类
+
+作者:
+milkbox
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
所有方法 静态方法 具体方法
+
+
+
+
+
+
static void
+
+
+
static void
+
+
+
+
+
+
+
+
+
+
从类继承的方法 java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+构造器详细资料
+
+
+
+UtilsJDBC
+public UtilsJDBC ()
+
+
+
+
+
+
+
+
+方法详细资料
+
+
+
+getConnection
+
+获取一个连接
+
+返回:
+返回一个数据库连接
+抛出:
+SQLException
- 登录失败异常
+
+
+
+
+
+close
+
+释放资源
+
+参数:
+resultSet
- 结果集
+statement
- SQL执行
+connection
- 连接
+
+
+
+
+
+close
+
+释放资源
+
+参数:
+statement
- SQL执行
+connection
- 连接
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/top/milkbox/core/UtilsJDBCDruid.html b/doc/top/milkbox/core/UtilsJDBCDruid.html
new file mode 100644
index 0000000..ecc51ff
--- /dev/null
+++ b/doc/top/milkbox/core/UtilsJDBCDruid.html
@@ -0,0 +1,245 @@
+
+
+
+
+UtilsJDBCDruid
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+public class UtilsJDBCDruid
+
extends Object
+druid工具类
+
+作者:
+milkbox
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
所有方法 静态方法 具体方法
+
+
+
+
+
+
static void
+
+
+
static void
+
+
+
+
+
+
+
+
+
+
+
+
+
从类继承的方法 java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+构造器详细资料
+
+
+
+UtilsJDBCDruid
+public UtilsJDBCDruid ()
+
+
+
+
+
+
+
+
+方法详细资料
+
+
+
+getConnection
+
+从连接池中获取一个连接
+
+返回:
+返回一个Connection对象
+抛出:
+SQLException
- 连接异常
+
+
+
+
+
+getDataSource
+
+获取连接池对象
+
+返回:
+返回连接池对象
+
+
+
+
+
+close
+
+释放资源
+
+参数:
+resultSet
- 结果集
+statement
- SQL执行
+connection
- 连接
+
+
+
+
+
+close
+
+释放资源
+
+参数:
+statement
- SQL执行
+connection
- 连接
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/top/milkbox/core/UtilsJWT.html b/doc/top/milkbox/core/UtilsJWT.html
new file mode 100644
index 0000000..b1c6350
--- /dev/null
+++ b/doc/top/milkbox/core/UtilsJWT.html
@@ -0,0 +1,272 @@
+
+
+
+
+UtilsJWT
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+public class UtilsJWT
+
extends Object
+JWT工具类
+ 此类依赖jar包:
+
+
+
+ com.auth0
+ java-jwt
+ 3.10.0
+
+
+作者:
+https://blog.csdn.net/Top_L398/article/details/109361680 改编milkbox
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
所有方法 静态方法 实例方法 具体方法
+
+
+
+
+
+
static com.auth0.jwt.interfaces.DecodedJWT
+
+
+
+
+
+
void
+
+
+
void
+
+
+
static void
+
+
+
验证token,通过抛异常的方式来判断token的状态
+
+
+
+
+
+
从类继承的方法 java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+构造器详细资料
+
+
+
+UtilsJWT
+public UtilsJWT ()
+
+
+
+
+
+
+
+
+方法详细资料
+
+
+
+generate
+
+生成token
+
+参数:
+map
- 传入payload,map中的数据会被加密存储在token中
+ map类型必须为String, String
+返回:
+返回token
+
+
+
+
+
+verify
+public static void verify (String token)
+验证token,通过抛异常的方式来判断token的状态
+
+ SignatureVerificationException 无效签名
+
+ TokenExpiredException token过期
+
+ AlgorithmMismatchException token算法不一致
+
+ Exception token失效或其他异常
+
+参数:
+token
- token字符串
+
+
+
+
+
+analysis
+public static com.auth0.jwt.interfaces.DecodedJWT analysis (String token)
+获取token中payload
+
+ 解密出token中的所有内容,当token有问题的时候同样会抛出异常
+
+ SignatureVerificationException 无效签名
+
+ TokenExpiredException token过期
+
+ AlgorithmMismatchException token算法不一致
+
+ Exception token失效或其他异常
+
+参数:
+token
- token
+返回:
+返回值类型为DecodedJWT的实现类com.auth0.jwt.JWTDecoder
+
+
+
+
+
+test1
+public void test1 ()
+生成token
+
+
+
+
+test2
+public void test2 ()
+解析token
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/top/milkbox/core/UtilsJedisPool.html b/doc/top/milkbox/core/UtilsJedisPool.html
new file mode 100644
index 0000000..df9431c
--- /dev/null
+++ b/doc/top/milkbox/core/UtilsJedisPool.html
@@ -0,0 +1,181 @@
+
+
+
+
+UtilsJedisPool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+public class UtilsJedisPool
+
extends Object
+Jesid连接池工具类
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
所有方法 静态方法 具体方法
+
+
+
+
+
+
static redis.clients.jedis.Jedis
+
+
+
+
+
+
+
从类继承的方法 java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+构造器详细资料
+
+
+
+UtilsJedisPool
+public UtilsJedisPool ()
+
+
+
+
+
+
+
+
+方法详细资料
+
+
+
+getJedis
+public static redis.clients.jedis.Jedis getJedis ()
+获取一个jedis对象
+
+返回:
+返回一个jedis对象
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/top/milkbox/core/UtilsLog.html b/doc/top/milkbox/core/UtilsLog.html
new file mode 100644
index 0000000..d09be24
--- /dev/null
+++ b/doc/top/milkbox/core/UtilsLog.html
@@ -0,0 +1,338 @@
+
+
+
+
+UtilsLog
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+public class UtilsLog
+
extends Object
+控制台日志
+
+
+
+
+
+
+字段概要
+字段
+
+
+
+
+
static final int
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
所有方法 静态方法 具体方法
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
限制字符串的长度,截取指定长度的字符串并返回,在结尾添加后缀
+
+
static void
+
+
+
static void
+
+
+
+
+
+
+
从类继承的方法 java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+字段详细资料
+
+
+
+LENGTH_LIMIT_SUFFIX
+public static final String LENGTH_LIMIT_SUFFIX
+
+另请参阅:
+
+
+
+
+
+
+
+
+LENGTH_LIMIT
+public static final int LENGTH_LIMIT
+
+另请参阅:
+
+
+
+
+
+
+
+
+
+
+
+
+构造器详细资料
+
+
+
+UtilsLog
+public UtilsLog ()
+
+
+
+
+
+
+
+
+方法详细资料
+
+
+
+lengthLimit
+
+限制字符串的长度,截取指定长度的字符串并返回,在结尾添加后缀
+
+参数:
+source
- 原字符串
+limit
- 限制的最大长度
+suffix
- 后缀
+返回:
+返回String
+
+
+
+
+
+lengthLimit
+public static String lengthLimit (String source,
+ int limit)
+限制长度
+
+参数:
+source
- 原字符串
+limit
- 限制的最大长度
+返回:
+返回String
+
+
+
+
+
+lengthLimit
+
+限制长度默认64
+
+参数:
+source
- 原字符串
+返回:
+返回String
+
+
+
+
+
+log
+
+打印日志
+
+参数:
+source
- 日志的来源
+logMessage
- 日志的信息
+
+
+
+
+
+getPrettyJson
+
+将对象转换为json字符串,并且格式化
+
+参数:
+object
- 可以将任意对象传入
+返回:
+返回json字符串
+
+
+
+
+
+logPrettyJson
+public static void logPrettyJson (String source,
+ Object object)
+格式化打印对象,以json字符串的形式
+
+参数:
+source
- 日志的来源
+object
- 要打印的对象
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/top/milkbox/core/UtilsMath.html b/doc/top/milkbox/core/UtilsMath.html
new file mode 100644
index 0000000..f26b116
--- /dev/null
+++ b/doc/top/milkbox/core/UtilsMath.html
@@ -0,0 +1,191 @@
+
+
+
+
+UtilsMath
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+public class UtilsMath
+
extends Object
+数学类
+
+ 创建时间: 2023-09-04 下午 4:54
+
+作者:
+milkbox
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
所有方法 实例方法 具体方法
+
+
+
+
+
+
int
+
+
+
罗马数字转整数
+ 罗马数字包含以下七种字符: `I`,`V`,`X`,`L`,`C`,`D` 和`M`。
+
+
+
+
+
+
从类继承的方法 java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+构造器详细资料
+
+
+
+UtilsMath
+public UtilsMath ()
+
+
+
+
+
+
+
+
+方法详细资料
+
+
+
+romanToInt
+public int romanToInt (String romanString)
+罗马数字转整数
+ 罗马数字包含以下七种字符: `I`,`V`,`X`,`L`,`C`,`D` 和`M`。
+
+参数:
+romanString
- 罗马数字字符串
+返回:
+返回阿拉伯整数
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/top/milkbox/core/UtilsProperties.html b/doc/top/milkbox/core/UtilsProperties.html
new file mode 100644
index 0000000..6e81a87
--- /dev/null
+++ b/doc/top/milkbox/core/UtilsProperties.html
@@ -0,0 +1,199 @@
+
+
+
+
+UtilsProperties
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+public class UtilsProperties
+
extends Object
+将用到的string.properties对象加载到内存
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
+
从类继承的方法 java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+构造器详细资料
+
+
+
+UtilsProperties
+public UtilsProperties ()
+
+
+
+
+
+
+
+
+方法详细资料
+
+
+
+getProperties
+
+获取配置文件对象
+
+返回:
+Properties
+
+
+
+
+
+getString
+
+根据键值直接查找value
+
+参数:
+key
- String
+返回:
+String
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/top/milkbox/core/UtilsRandom.html b/doc/top/milkbox/core/UtilsRandom.html
new file mode 100644
index 0000000..f1f3f23
--- /dev/null
+++ b/doc/top/milkbox/core/UtilsRandom.html
@@ -0,0 +1,366 @@
+
+
+
+
+UtilsRandom
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+public class UtilsRandom
+
extends Object
+有关随机数的工具类
+
+ 最后修改:2022年9月20日10:54:47
+
+版本:
+1.0.2
+作者:
+milkbox
+
+
+
+
+
+
+
+字段概要
+字段
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
所有方法 静态方法 具体方法
+
+
+
+
+
+
+
+
+
随机生成中文名,复姓 1/10 概率,长度2~4
+
+
+
+
+
static int
+
+
+
随机生成区间[a, b]内的一个整数
+ Random().nextInt(n) 生成的随机数区间为[0, n)
+
+
+
+
+
+
+
+
+
+
+
随机生成一个字符串,使用更清晰的字符集
+ 使用与验证码
+
+
+
+
+
+
从类继承的方法 java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+字段详细资料
+
+
+
+CHARS
+public static final String CHARS
+
+另请参阅:
+
+
+
+
+
+
+
+
+CHARS_CLEAR
+public static final String CHARS_CLEAR
+
+另请参阅:
+
+
+
+
+
+
+
+
+SUR_NAME
+public static final String [] SUR_NAME
+
+
+
+
+COMPOUND_SUR_NAME
+public static final String [] COMPOUND_SUR_NAME
+
+
+
+
+WORD
+public static final String [] WORD
+
+
+
+
+
+
+
+
+构造器详细资料
+
+
+
+UtilsRandom
+public UtilsRandom ()
+
+
+
+
+
+
+
+
+方法详细资料
+
+
+
+getRandomString
+public static String getRandomString (int count,
+ String chars)
+随机生成一个字符串
+
+参数:
+count
- 生成的字符创的长度
+chars
- 里面包含的字符集
+返回:
+返回字符串
+
+
+
+
+
+getRandomString
+public static String getRandomString (int count)
+随机生成一个字符串,字符集使用默认的
+
+参数:
+count
- 生成的字符创的长度
+返回:
+返回字符串
+
+
+
+
+
+getRandomStringClear
+public static String getRandomStringClear (int count)
+随机生成一个字符串,使用更清晰的字符集
+ 使用与验证码
+
+参数:
+count
- 生成的字符创的长度
+返回:
+返回字符串
+
+
+
+
+
+getRandomChineseName
+public static String getRandomChineseName (int length,
+ boolean isCompound)
+随机生成一个中文名字
+
+参数:
+length
- 名字的总长度
+isCompound
- 是否为复姓
+返回:
+返回姓名
+
+
+
+
+
+getRandomChineseName
+public static String getRandomChineseName ()
+随机生成中文名,复姓 1/10 概率,长度2~4
+
+
+
+
+getRandomInteger
+public static int getRandomInteger (int a,
+ int b)
+随机生成区间[a, b]内的一个整数
+ Random().nextInt(n) 生成的随机数区间为[0, n)
+
+返回:
+返回区间[a, b]内的一个随机整数
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/top/milkbox/core/UtilsSort.html b/doc/top/milkbox/core/UtilsSort.html
new file mode 100644
index 0000000..ceae72b
--- /dev/null
+++ b/doc/top/milkbox/core/UtilsSort.html
@@ -0,0 +1,191 @@
+
+
+
+
+UtilsSort
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+public class UtilsSort
+
extends Object
+有关各种排序的工具
+
+ 创建时间:2022年10月10日15:23:03
+
+版本:
+1.0.0
+作者:
+milkbox
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
+
从类继承的方法 java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+构造器详细资料
+
+
+
+UtilsSort
+public UtilsSort ()
+
+
+
+
+
+
+
+
+方法详细资料
+
+
+
+getMinKeyFromMapStringString
+
+获取map中值的ascii码最小的key
+
+参数:
+map
- Map无效输入:'<' String, String>
+返回:
+最小值的键
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/top/milkbox/core/UtilsString.AlignFace.html b/doc/top/milkbox/core/UtilsString.AlignFace.html
new file mode 100644
index 0000000..6822139
--- /dev/null
+++ b/doc/top/milkbox/core/UtilsString.AlignFace.html
@@ -0,0 +1,245 @@
+
+
+
+
+UtilsString.AlignFace
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
所有方法 静态方法 具体方法
+
+
+
+
+
+
+
+
+
+
+
+
返回包含该枚举类的常量的数组,
+顺序与声明这些常量的顺序相同
+
+
+
+
+
+
从类继承的方法 java.lang.Enum
+
clone , compareTo , describeConstable , equals , finalize , getDeclaringClass , hashCode , name , ordinal , toString , valueOf
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+方法详细资料
+
+
+
+values
+
+返回包含该枚举类的常量的数组,
+顺序与声明这些常量的顺序相同
+
+返回:
+包含该枚举类的常量的数组,顺序与声明这些常量的顺序相同
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/top/milkbox/core/UtilsString.Menu.Option.html b/doc/top/milkbox/core/UtilsString.Menu.Option.html
new file mode 100644
index 0000000..5bc8456
--- /dev/null
+++ b/doc/top/milkbox/core/UtilsString.Menu.Option.html
@@ -0,0 +1,257 @@
+
+
+
+
+UtilsString.Menu.Option
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
所有方法 实例方法 具体方法
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
void
+
+
+
void
+
+
+
void
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+构造器详细资料
+
+
+
+Option
+public Option ()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+方法详细资料
+
+
+
+
+
+
+
+
+
+setKey
+public void setKey (String key)
+
+
+
+
+
+
+
+setValue
+public void setValue (String value)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/top/milkbox/core/UtilsString.Menu.html b/doc/top/milkbox/core/UtilsString.Menu.html
new file mode 100644
index 0000000..3c953ab
--- /dev/null
+++ b/doc/top/milkbox/core/UtilsString.Menu.html
@@ -0,0 +1,393 @@
+
+
+
+
+UtilsString.Menu
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+封闭类:
+UtilsString
+
+
+public static class UtilsString.Menu
+
extends Object
+打印个性化菜单的类
+
+
+
+
+
+
+嵌套类概要
+嵌套类
+
+
+
+
+
static class
+
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
所有方法 静态方法 实例方法 具体方法
+
+
+
+
+
+
char
+
+
+
+
+
+
int
+
+
+
+
+
+
int
+
+
+
char
+
+
+
char
+
+
+
+
+
+
+
+
+
int
+
+
+
static void
+
+
+
void
+
+
+
根据当前对象的各个参数打印菜单
+ 后面有main方法举例
+
+
void
+
+
+
void
+
+
+
void
+
+
+
void
+
+
+
void
+
+
+
void
+
+
+
void
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+方法详细资料
+
+
+
+
+
+
+getFillChar
+public char getFillChar ()
+
+
+
+
+setFillChar
+public void setFillChar (char fillChar)
+
+
+
+
+
+
+
+setBorderLeft
+public void setBorderLeft (String borderLeft)
+
+
+
+
+getBorderRight
+public String getBorderRight ()
+
+
+
+
+setBorderRight
+public void setBorderRight (String borderRight)
+
+
+
+
+getBorderTopChar
+public char getBorderTopChar ()
+
+
+
+
+setBorderTopChar
+public void setBorderTopChar (char borderTopChar)
+
+
+
+
+getBorderBottomChar
+public char getBorderBottomChar ()
+
+
+
+
+setBorderBottomChar
+public void setBorderBottomChar (char borderBottomChar)
+
+
+
+
+getBorderLeftWidth
+public int getBorderLeftWidth ()
+
+
+
+
+getBorderRightWidth
+public int getBorderRightWidth ()
+
+
+
+
+
+
+
+setSeparator
+public void setSeparator (String separator)
+
+
+
+
+getSeparatorWidth
+public int getSeparatorWidth ()
+
+
+
+
+
+
+
+
+
+
+
+
+
+main
+public static void main (String [] args)
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/top/milkbox/core/UtilsString.html b/doc/top/milkbox/core/UtilsString.html
new file mode 100644
index 0000000..7f78adc
--- /dev/null
+++ b/doc/top/milkbox/core/UtilsString.html
@@ -0,0 +1,406 @@
+
+
+
+
+UtilsString
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+public class UtilsString
+
extends Object
+有关字符串的操作
+ 自定义打印菜单
+
+ 创建时间:2023年2月14日
+ 最后修改:2023年2月14日
+
+作者:
+guo
+
+
+
+
+
+
+
+嵌套类概要
+嵌套类
+
+
+
+
+
static enum
+
+
+
static class
+
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
所有方法 静态方法 具体方法
+
+
+
+
+
+
+
+
+
在最大宽度下左对齐指定的字符串
+ 此方法的宽度是通过等宽字体的实际宽度计算,并非字符串的长度。
+
+
+
+
+
+
+
+
+
+
+
static int
+
+
+
求字符串的等宽长度,在等宽字体下,一个英文字符站1格,一个中文字符占2格
+ 例如:getMonoFontWidth("123你好 1") 结果为9
+
+
+
+
+
+
+
+
static boolean
+
+
+
判断字符是否是英文字符,在utf-8下,中文字符占3个字节
+
+
static void
+
+
+
使用map的方式打印一个菜单,个性化设置较少,下面有更好的方法
+ 举例:
+ LinkedHashMap无效输入:'<' String, String> map = new LinkedHashMap无效输入:'<' >();
+ map.put("1", "选择文件/重新选择文件");
+ map.put("2", "转码");
+ map.put("3", "退出");
+ menuPrintStyleDefault(map);
+ ###############################
+ # 1 >>> 选择文件/重新选择文件 #
+ # 2 >>> 转码 #
+ # 3 >>> 退出 #
+ ###############################
+
+
static void
+
+
+
+
+
+
+
从类继承的方法 java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+构造器详细资料
+
+
+
+UtilsString
+public UtilsString ()
+
+
+
+
+
+
+
+
+方法详细资料
+
+
+
+isEnglishChar
+public static boolean isEnglishChar (char ch)
+判断字符是否是英文字符,在utf-8下,中文字符占3个字节
+
+参数:
+ch
- 字符
+返回:
+true表示是英文字符
+
+
+
+
+
+getMonoFontWidth
+public static int getMonoFontWidth (String string)
+求字符串的等宽长度,在等宽字体下,一个英文字符站1格,一个中文字符占2格
+ 例如:getMonoFontWidth("123你好 1") 结果为9
+
+参数:
+string
- 被求字符串
+返回:
+总宽度
+
+
+
+
+
+println
+public static void println (String string,
+ int n)
+连续打印n次字符串
+
+参数:
+string
- 字符串
+n
- 打印几次
+
+
+
+
+
+getStringTimes
+
+重复生成同一个字符或字符串多次
+
+参数:
+string
- 字符串
+n
- 几次
+返回:
+返回结果
+
+
+
+
+
+getStringTimes
+public static String getStringTimes (char ch,
+ int n)
+
+
+
+
+align
+
+在最大宽度下左对齐指定的字符串
+ 此方法的宽度是通过等宽字体的实际宽度计算,并非字符串的长度。
+ 所以说中英文混合状态下也可用
+ 一个英文占1格宽,一个中文占2格宽
+
+ 在居中对齐的情况下,由于整数类型的除法误差,左侧的填充字符串的宽度 无效输入:'<' = 右侧的填充字符串的宽度
+ 当content的宽度大于等于maxWidth的时候不进行对齐操作
+
+ 举例如下
+ int maxWidth = 20;
+ char fill = '_'; // 为了方便查看,使用下划线替换空格
+ System.out.println(UtilsString.align("123 左对齐", maxWidth, UtilsString.AlignFace.LEFT, fill));
+ System.out.println(UtilsString.align("12 左对齐123", maxWidth, UtilsString.AlignFace.LEFT, fill));
+ System.out.println(UtilsString.align("居中对齐222", maxWidth, UtilsString.AlignFace.CENTER, fill));
+ System.out.println(UtilsString.align("123 居中对齐2 22", maxWidth, UtilsString.AlignFace.CENTER, fill));
+ System.out.println(UtilsString.align("adfa右对齐222", maxWidth, UtilsString.AlignFace.RIGHT, fill));
+ System.out.println(UtilsString.align("adfa过长不对齐 22222222222222222", maxWidth, UtilsString.AlignFace.RIGHT, fill));
+
+ 123 左对齐__________
+ 12 左对齐123________
+ ____居中对齐222_____
+ __123 居中对齐2 22__
+ _______adfa右对齐222
+ adfa过长不对齐 22222222222222222
+
+参数:
+content
- 内容
+maxWidth
- 最大字符宽度(不是.length长度)
+face
- 对齐方向,枚举类型。传null不对齐
+fill
- 对齐时填充的字符
+返回:
+返回格式化的字符串
+
+
+
+
+
+alignLeft
+public static String alignLeft (String content,
+ int maxWidth)
+
+
+
+
+alignRight
+public static String alignRight (String content,
+ int maxWidth)
+
+
+
+
+alignCenter
+public static String alignCenter (String content,
+ int maxWidth)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/top/milkbox/core/UtilsVariableName.html b/doc/top/milkbox/core/UtilsVariableName.html
new file mode 100644
index 0000000..eb1bb30
--- /dev/null
+++ b/doc/top/milkbox/core/UtilsVariableName.html
@@ -0,0 +1,343 @@
+
+
+
+
+UtilsVariableName
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+public class UtilsVariableName
+
extends Object
+有关变量名的字符串的操作工具
+
+ 创建时间:2022年9月30日13:12:54
+
+版本:
+1.0.0
+作者:
+milkbox
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
所有方法 静态方法 具体方法
+
+
+
+
+
+
+
+
+
+
+
+
+
getCustom (String string,
+ char replace,
+ boolean isAllUpper,
+ boolean isWordFirstUpper,
+ boolean isSentenceFirstUpper)
+
+
自定义转换
+ 将一个英文句子转换,注意,必须是标准的英文句子(句子前面可以由空格,每个单词之间用空格隔开,','和'.'
+
+
+
+
+
+
+
+
+
+
+
static boolean
+
+
+
static char
+
+
+
static void
+
+
+
static char
+
+
+
+
+
+
+
从类继承的方法 java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+构造器详细资料
+
+
+
+UtilsVariableName
+public UtilsVariableName ()
+
+
+
+
+
+
+
+
+方法详细资料
+
+
+
+getConstant
+
+常量
+
+参数:
+string
-
+返回:
+
+
+
+
+
+getBarbecue
+
+烤肉串格式,中划线格式
+
+参数:
+string
- 原字符串
+返回:
+中划线格式
+
+
+
+
+
+getUnderline
+
+下划线格式
+
+参数:
+string
- 原字符串
+返回:
+下划线格式
+
+
+
+
+
+getHumpFirstUpper
+
+首字母大写,驼峰
+
+参数:
+string
-
+返回:
+
+
+
+
+
+getHumpFirstLower
+
+首字母小写,驼峰
+
+参数:
+string
-
+返回:
+
+
+
+
+
+getCustom
+public static String getCustom (String string,
+ char replace,
+ boolean isAllUpper,
+ boolean isWordFirstUpper,
+ boolean isSentenceFirstUpper)
+自定义转换
+ 将一个英文句子转换,注意,必须是标准的英文句子(句子前面可以由空格,每个单词之间用空格隔开,','和'.'符号后面跟一个空格)
+ 如果原字符串中包含数字则直接保留,若原字符串中包含标点符号则直接删除
+ 原字符串中不得出现非ascii字符,原串末尾可以有标点符号但不可有空格
+
+参数:
+string
- 原字符串(串前其他字符可以忽略,串后空格不会正常处理)
+replace
- 替换空格的字符(当设置为'\0'时,表示直接去掉原串的空格)
+isAllUpper
- 是否将全部字母大写
+isWordFirstUpper
- 是否将每个单词的首字母大写
+isSentenceFirstUpper
- 是否将这句话的首字母大写
+返回:
+返回
+
+
+
+
+
+isNumberOrLetter
+public static boolean isNumberOrLetter (char c)
+判断字符是否是数字或字母
+
+
+
+
+upperChar
+public static char upperChar (char c)
+字符转成大写
+
+参数:
+c
- 需要转化的字符
+
+
+
+
+
+lowerChar
+public static char lowerChar (char c)
+转为小写
+
+
+
+
+main
+public static void main (String [] args)
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/top/milkbox/core/UtilsVerifyCode.html b/doc/top/milkbox/core/UtilsVerifyCode.html
new file mode 100644
index 0000000..1c21cf0
--- /dev/null
+++ b/doc/top/milkbox/core/UtilsVerifyCode.html
@@ -0,0 +1,194 @@
+
+
+
+
+UtilsVerifyCode
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+public class UtilsVerifyCode
+
extends Object
+
+版本:
+2021年9月28日
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
所有方法 静态方法 具体方法
+
+
+
+
+
+
+
+
+
创建指定大小的图片,并添加4个字符和一些噪点
+ 此方法来自互联网
+
+
+
+
+
+
从类继承的方法 java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+构造器详细资料
+
+
+
+UtilsVerifyCode
+public UtilsVerifyCode ()
+
+
+
+
+
+
+
+
+方法详细资料
+
+
+
+drawRandomText
+
+创建指定大小的图片,并添加4个字符和一些噪点
+ 此方法来自互联网
+
+参数:
+width
- 图片宽度
+height
- 图片高度
+verifyImg
- 图片输入流
+返回:
+返回随机生成的4字符组成的字符串,用于校验
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/top/milkbox/core/baiDuTranslation/MD5.html b/doc/top/milkbox/core/baiDuTranslation/MD5.html
new file mode 100644
index 0000000..fd4bf10
--- /dev/null
+++ b/doc/top/milkbox/core/baiDuTranslation/MD5.html
@@ -0,0 +1,208 @@
+
+
+
+
+MD5
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+public class MD5
+
extends Object
+MD5编码相关的类
+
+作者:
+wangjingtao
+
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
所有方法 静态方法 具体方法
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
从类继承的方法 java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+方法详细资料
+
+
+
+md5
+
+获得一个字符串的MD5值
+
+参数:
+input
- 输入的字符串
+返回:
+输入字符串的MD5值
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/top/milkbox/core/baiDuTranslation/TransApi.html b/doc/top/milkbox/core/baiDuTranslation/TransApi.html
new file mode 100644
index 0000000..e7e681a
--- /dev/null
+++ b/doc/top/milkbox/core/baiDuTranslation/TransApi.html
@@ -0,0 +1,179 @@
+
+
+
+
+TransApi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+public class TransApi
+
extends Object
+
+
+
+
+
+
+
+
+
+
+方法概要
+
+
+
从类继承的方法 java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/top/milkbox/core/baiDuTranslation/class-use/MD5.html b/doc/top/milkbox/core/baiDuTranslation/class-use/MD5.html
new file mode 100644
index 0000000..9fa364d
--- /dev/null
+++ b/doc/top/milkbox/core/baiDuTranslation/class-use/MD5.html
@@ -0,0 +1,58 @@
+
+
+
+
+类 top.milkbox.core.baiDuTranslation.MD5的使用
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+没有top.milkbox.core.baiDuTranslation.MD5的用法
+
+
+
+
diff --git a/doc/top/milkbox/core/baiDuTranslation/class-use/TransApi.html b/doc/top/milkbox/core/baiDuTranslation/class-use/TransApi.html
new file mode 100644
index 0000000..3cb91ac
--- /dev/null
+++ b/doc/top/milkbox/core/baiDuTranslation/class-use/TransApi.html
@@ -0,0 +1,58 @@
+
+
+
+
+类 top.milkbox.core.baiDuTranslation.TransApi的使用
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+没有top.milkbox.core.baiDuTranslation.TransApi的用法
+
+
+
+
diff --git a/doc/top/milkbox/core/baiDuTranslation/package-summary.html b/doc/top/milkbox/core/baiDuTranslation/package-summary.html
new file mode 100644
index 0000000..f541ced
--- /dev/null
+++ b/doc/top/milkbox/core/baiDuTranslation/package-summary.html
@@ -0,0 +1,107 @@
+
+
+
+
+top.milkbox.core.baiDuTranslation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+package top.milkbox.core.baiDuTranslation
+
+
+
+
+
+
diff --git a/doc/top/milkbox/core/baiDuTranslation/package-tree.html b/doc/top/milkbox/core/baiDuTranslation/package-tree.html
new file mode 100644
index 0000000..0b6bb59
--- /dev/null
+++ b/doc/top/milkbox/core/baiDuTranslation/package-tree.html
@@ -0,0 +1,73 @@
+
+
+
+
+top.milkbox.core.baiDuTranslation 类分层结构
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+程序包分层结构:
+
+
+类分层结构
+
+java.lang.Object
+
+top.milkbox.core.baiDuTranslation.MD5
+top.milkbox.core.baiDuTranslation.TransApi
+
+
+
+
+
+
+
+
+
diff --git a/doc/top/milkbox/core/baiDuTranslation/package-use.html b/doc/top/milkbox/core/baiDuTranslation/package-use.html
new file mode 100644
index 0000000..e26a8fc
--- /dev/null
+++ b/doc/top/milkbox/core/baiDuTranslation/package-use.html
@@ -0,0 +1,58 @@
+
+
+
+
+程序包 top.milkbox.core.baiDuTranslation的使用
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+没有top.milkbox.core.baiDuTranslation的用法
+
+
+
+
diff --git a/doc/top/milkbox/core/class-use/BaseServlet.html b/doc/top/milkbox/core/class-use/BaseServlet.html
new file mode 100644
index 0000000..a9e228e
--- /dev/null
+++ b/doc/top/milkbox/core/class-use/BaseServlet.html
@@ -0,0 +1,58 @@
+
+
+
+
+类 top.milkbox.core.BaseServlet的使用
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+没有top.milkbox.core.BaseServlet的用法
+
+
+
+
diff --git a/doc/top/milkbox/core/class-use/CheckCodeServlet.html b/doc/top/milkbox/core/class-use/CheckCodeServlet.html
new file mode 100644
index 0000000..a684571
--- /dev/null
+++ b/doc/top/milkbox/core/class-use/CheckCodeServlet.html
@@ -0,0 +1,58 @@
+
+
+
+
+类 top.milkbox.core.CheckCodeServlet的使用
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+没有top.milkbox.core.CheckCodeServlet的用法
+
+
+
+
diff --git a/doc/top/milkbox/core/class-use/DrawName.html b/doc/top/milkbox/core/class-use/DrawName.html
new file mode 100644
index 0000000..bb372bb
--- /dev/null
+++ b/doc/top/milkbox/core/class-use/DrawName.html
@@ -0,0 +1,58 @@
+
+
+
+
+类 top.milkbox.core.DrawName的使用
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+没有top.milkbox.core.DrawName的用法
+
+
+
+
diff --git a/doc/top/milkbox/core/class-use/HttpClientUtils.html b/doc/top/milkbox/core/class-use/HttpClientUtils.html
new file mode 100644
index 0000000..f3b44bd
--- /dev/null
+++ b/doc/top/milkbox/core/class-use/HttpClientUtils.html
@@ -0,0 +1,58 @@
+
+
+
+
+类 top.milkbox.core.HttpClientUtils的使用
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+没有top.milkbox.core.HttpClientUtils的用法
+
+
+
+
diff --git a/doc/top/milkbox/core/class-use/MD5Utils.html b/doc/top/milkbox/core/class-use/MD5Utils.html
new file mode 100644
index 0000000..8d545e1
--- /dev/null
+++ b/doc/top/milkbox/core/class-use/MD5Utils.html
@@ -0,0 +1,58 @@
+
+
+
+
+类 top.milkbox.core.MD5Utils的使用
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+没有top.milkbox.core.MD5Utils的用法
+
+
+
+
diff --git a/doc/top/milkbox/core/class-use/PageBean.html b/doc/top/milkbox/core/class-use/PageBean.html
new file mode 100644
index 0000000..cb8739b
--- /dev/null
+++ b/doc/top/milkbox/core/class-use/PageBean.html
@@ -0,0 +1,58 @@
+
+
+
+
+类 top.milkbox.core.PageBean的使用
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+没有top.milkbox.core.PageBean的用法
+
+
+
+
diff --git a/doc/top/milkbox/core/class-use/R.html b/doc/top/milkbox/core/class-use/R.html
new file mode 100644
index 0000000..37ac0c8
--- /dev/null
+++ b/doc/top/milkbox/core/class-use/R.html
@@ -0,0 +1,95 @@
+
+
+
+
+类 top.milkbox.core.R的使用
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/top/milkbox/core/class-use/SensitiveFilter.html b/doc/top/milkbox/core/class-use/SensitiveFilter.html
new file mode 100644
index 0000000..b18bedc
--- /dev/null
+++ b/doc/top/milkbox/core/class-use/SensitiveFilter.html
@@ -0,0 +1,58 @@
+
+
+
+
+类 top.milkbox.core.SensitiveFilter的使用
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+没有top.milkbox.core.SensitiveFilter的用法
+
+
+
+
diff --git a/doc/top/milkbox/core/class-use/UtilsColl.html b/doc/top/milkbox/core/class-use/UtilsColl.html
new file mode 100644
index 0000000..ae8d470
--- /dev/null
+++ b/doc/top/milkbox/core/class-use/UtilsColl.html
@@ -0,0 +1,58 @@
+
+
+
+
+类 top.milkbox.core.UtilsColl的使用
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+没有top.milkbox.core.UtilsColl的用法
+
+
+
+
diff --git a/doc/top/milkbox/core/class-use/UtilsConsoleMenu.MenuPredicate.html b/doc/top/milkbox/core/class-use/UtilsConsoleMenu.MenuPredicate.html
new file mode 100644
index 0000000..d161cc7
--- /dev/null
+++ b/doc/top/milkbox/core/class-use/UtilsConsoleMenu.MenuPredicate.html
@@ -0,0 +1,104 @@
+
+
+
+
+接口 top.milkbox.core.UtilsConsoleMenu.MenuPredicate的使用
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
static void
+
+
+
static void
+
+
+
static void
+
+
+
static void
+
+
+
static void
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/top/milkbox/core/class-use/UtilsConsoleMenu.ReturnFlag.html b/doc/top/milkbox/core/class-use/UtilsConsoleMenu.ReturnFlag.html
new file mode 100644
index 0000000..9fdbde3
--- /dev/null
+++ b/doc/top/milkbox/core/class-use/UtilsConsoleMenu.ReturnFlag.html
@@ -0,0 +1,97 @@
+
+
+
+
+枚举类 top.milkbox.core.UtilsConsoleMenu.ReturnFlag的使用
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
UtilsConsoleMenu.ReturnFlag. values ()
+
+
返回包含该枚举类的常量的数组,
+顺序与声明这些常量的顺序相同
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/top/milkbox/core/class-use/UtilsConsoleMenu.html b/doc/top/milkbox/core/class-use/UtilsConsoleMenu.html
new file mode 100644
index 0000000..fe36a8c
--- /dev/null
+++ b/doc/top/milkbox/core/class-use/UtilsConsoleMenu.html
@@ -0,0 +1,58 @@
+
+
+
+
+类 top.milkbox.core.UtilsConsoleMenu的使用
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+没有top.milkbox.core.UtilsConsoleMenu的用法
+
+
+
+
diff --git a/doc/top/milkbox/core/class-use/UtilsDate.html b/doc/top/milkbox/core/class-use/UtilsDate.html
new file mode 100644
index 0000000..f5150c3
--- /dev/null
+++ b/doc/top/milkbox/core/class-use/UtilsDate.html
@@ -0,0 +1,58 @@
+
+
+
+
+类 top.milkbox.core.UtilsDate的使用
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+没有top.milkbox.core.UtilsDate的用法
+
+
+
+
diff --git a/doc/top/milkbox/core/class-use/UtilsDownload.html b/doc/top/milkbox/core/class-use/UtilsDownload.html
new file mode 100644
index 0000000..d280504
--- /dev/null
+++ b/doc/top/milkbox/core/class-use/UtilsDownload.html
@@ -0,0 +1,58 @@
+
+
+
+
+类 top.milkbox.core.UtilsDownload的使用
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+没有top.milkbox.core.UtilsDownload的用法
+
+
+
+
diff --git a/doc/top/milkbox/core/class-use/UtilsEmail.html b/doc/top/milkbox/core/class-use/UtilsEmail.html
new file mode 100644
index 0000000..bfeedbc
--- /dev/null
+++ b/doc/top/milkbox/core/class-use/UtilsEmail.html
@@ -0,0 +1,58 @@
+
+
+
+
+类 top.milkbox.core.UtilsEmail的使用
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+没有top.milkbox.core.UtilsEmail的用法
+
+
+
+
diff --git a/doc/top/milkbox/core/class-use/UtilsFile.html b/doc/top/milkbox/core/class-use/UtilsFile.html
new file mode 100644
index 0000000..55e6da0
--- /dev/null
+++ b/doc/top/milkbox/core/class-use/UtilsFile.html
@@ -0,0 +1,58 @@
+
+
+
+
+类 top.milkbox.core.UtilsFile的使用
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+没有top.milkbox.core.UtilsFile的用法
+
+
+
+
diff --git a/doc/top/milkbox/core/class-use/UtilsIp.html b/doc/top/milkbox/core/class-use/UtilsIp.html
new file mode 100644
index 0000000..7287ff1
--- /dev/null
+++ b/doc/top/milkbox/core/class-use/UtilsIp.html
@@ -0,0 +1,58 @@
+
+
+
+
+类 top.milkbox.core.UtilsIp的使用
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+没有top.milkbox.core.UtilsIp的用法
+
+
+
+
diff --git a/doc/top/milkbox/core/class-use/UtilsJDBC.html b/doc/top/milkbox/core/class-use/UtilsJDBC.html
new file mode 100644
index 0000000..66feb68
--- /dev/null
+++ b/doc/top/milkbox/core/class-use/UtilsJDBC.html
@@ -0,0 +1,58 @@
+
+
+
+
+类 top.milkbox.core.UtilsJDBC的使用
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+没有top.milkbox.core.UtilsJDBC的用法
+
+
+
+
diff --git a/doc/top/milkbox/core/class-use/UtilsJDBCDruid.html b/doc/top/milkbox/core/class-use/UtilsJDBCDruid.html
new file mode 100644
index 0000000..42b1e23
--- /dev/null
+++ b/doc/top/milkbox/core/class-use/UtilsJDBCDruid.html
@@ -0,0 +1,58 @@
+
+
+
+
+类 top.milkbox.core.UtilsJDBCDruid的使用
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+没有top.milkbox.core.UtilsJDBCDruid的用法
+
+
+
+
diff --git a/doc/top/milkbox/core/class-use/UtilsJWT.html b/doc/top/milkbox/core/class-use/UtilsJWT.html
new file mode 100644
index 0000000..ed0afde
--- /dev/null
+++ b/doc/top/milkbox/core/class-use/UtilsJWT.html
@@ -0,0 +1,58 @@
+
+
+
+
+类 top.milkbox.core.UtilsJWT的使用
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+没有top.milkbox.core.UtilsJWT的用法
+
+
+
+
diff --git a/doc/top/milkbox/core/class-use/UtilsJedisPool.html b/doc/top/milkbox/core/class-use/UtilsJedisPool.html
new file mode 100644
index 0000000..94c1faa
--- /dev/null
+++ b/doc/top/milkbox/core/class-use/UtilsJedisPool.html
@@ -0,0 +1,58 @@
+
+
+
+
+类 top.milkbox.core.UtilsJedisPool的使用
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+没有top.milkbox.core.UtilsJedisPool的用法
+
+
+
+
diff --git a/doc/top/milkbox/core/class-use/UtilsLog.html b/doc/top/milkbox/core/class-use/UtilsLog.html
new file mode 100644
index 0000000..98790d2
--- /dev/null
+++ b/doc/top/milkbox/core/class-use/UtilsLog.html
@@ -0,0 +1,58 @@
+
+
+
+
+类 top.milkbox.core.UtilsLog的使用
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+没有top.milkbox.core.UtilsLog的用法
+
+
+
+
diff --git a/doc/top/milkbox/core/class-use/UtilsMath.html b/doc/top/milkbox/core/class-use/UtilsMath.html
new file mode 100644
index 0000000..c8ca3cb
--- /dev/null
+++ b/doc/top/milkbox/core/class-use/UtilsMath.html
@@ -0,0 +1,58 @@
+
+
+
+
+类 top.milkbox.core.UtilsMath的使用
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+没有top.milkbox.core.UtilsMath的用法
+
+
+
+
diff --git a/doc/top/milkbox/core/class-use/UtilsProperties.html b/doc/top/milkbox/core/class-use/UtilsProperties.html
new file mode 100644
index 0000000..af89f58
--- /dev/null
+++ b/doc/top/milkbox/core/class-use/UtilsProperties.html
@@ -0,0 +1,58 @@
+
+
+
+
+类 top.milkbox.core.UtilsProperties的使用
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+没有top.milkbox.core.UtilsProperties的用法
+
+
+
+
diff --git a/doc/top/milkbox/core/class-use/UtilsRandom.html b/doc/top/milkbox/core/class-use/UtilsRandom.html
new file mode 100644
index 0000000..844b081
--- /dev/null
+++ b/doc/top/milkbox/core/class-use/UtilsRandom.html
@@ -0,0 +1,58 @@
+
+
+
+
+类 top.milkbox.core.UtilsRandom的使用
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+没有top.milkbox.core.UtilsRandom的用法
+
+
+
+
diff --git a/doc/top/milkbox/core/class-use/UtilsSort.html b/doc/top/milkbox/core/class-use/UtilsSort.html
new file mode 100644
index 0000000..1ed9eaf
--- /dev/null
+++ b/doc/top/milkbox/core/class-use/UtilsSort.html
@@ -0,0 +1,58 @@
+
+
+
+
+类 top.milkbox.core.UtilsSort的使用
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+没有top.milkbox.core.UtilsSort的用法
+
+
+
+
diff --git a/doc/top/milkbox/core/class-use/UtilsString.AlignFace.html b/doc/top/milkbox/core/class-use/UtilsString.AlignFace.html
new file mode 100644
index 0000000..2ebb6aa
--- /dev/null
+++ b/doc/top/milkbox/core/class-use/UtilsString.AlignFace.html
@@ -0,0 +1,123 @@
+
+
+
+
+枚举类 top.milkbox.core.UtilsString.AlignFace的使用
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
UtilsString.AlignFace. values ()
+
+
返回包含该枚举类的常量的数组,
+顺序与声明这些常量的顺序相同
+
+
+
+
+
+
+
+
+
+
+
在最大宽度下左对齐指定的字符串
+ 此方法的宽度是通过等宽字体的实际宽度计算,并非字符串的长度。
+
+
void
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/top/milkbox/core/class-use/UtilsString.Menu.Option.html b/doc/top/milkbox/core/class-use/UtilsString.Menu.Option.html
new file mode 100644
index 0000000..d58124a
--- /dev/null
+++ b/doc/top/milkbox/core/class-use/UtilsString.Menu.Option.html
@@ -0,0 +1,119 @@
+
+
+
+
+类 top.milkbox.core.UtilsString.Menu.Option的使用
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
static void
+
+
+
static void
+
+
+
void
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/top/milkbox/core/class-use/UtilsString.Menu.html b/doc/top/milkbox/core/class-use/UtilsString.Menu.html
new file mode 100644
index 0000000..206f711
--- /dev/null
+++ b/doc/top/milkbox/core/class-use/UtilsString.Menu.html
@@ -0,0 +1,95 @@
+
+
+
+
+类 top.milkbox.core.UtilsString.Menu的使用
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
static void
+
+
+
static void
+
+
+
static void
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/top/milkbox/core/class-use/UtilsString.html b/doc/top/milkbox/core/class-use/UtilsString.html
new file mode 100644
index 0000000..d9d22e4
--- /dev/null
+++ b/doc/top/milkbox/core/class-use/UtilsString.html
@@ -0,0 +1,58 @@
+
+
+
+
+类 top.milkbox.core.UtilsString的使用
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+没有top.milkbox.core.UtilsString的用法
+
+
+
+
diff --git a/doc/top/milkbox/core/class-use/UtilsVariableName.html b/doc/top/milkbox/core/class-use/UtilsVariableName.html
new file mode 100644
index 0000000..67365f3
--- /dev/null
+++ b/doc/top/milkbox/core/class-use/UtilsVariableName.html
@@ -0,0 +1,58 @@
+
+
+
+
+类 top.milkbox.core.UtilsVariableName的使用
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+没有top.milkbox.core.UtilsVariableName的用法
+
+
+
+
diff --git a/doc/top/milkbox/core/class-use/UtilsVerifyCode.html b/doc/top/milkbox/core/class-use/UtilsVerifyCode.html
new file mode 100644
index 0000000..c438e77
--- /dev/null
+++ b/doc/top/milkbox/core/class-use/UtilsVerifyCode.html
@@ -0,0 +1,58 @@
+
+
+
+
+类 top.milkbox.core.UtilsVerifyCode的使用
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+没有top.milkbox.core.UtilsVerifyCode的用法
+
+
+
+
diff --git a/doc/top/milkbox/core/package-summary.html b/doc/top/milkbox/core/package-summary.html
new file mode 100644
index 0000000..29e8b9f
--- /dev/null
+++ b/doc/top/milkbox/core/package-summary.html
@@ -0,0 +1,230 @@
+
+
+
+
+top.milkbox.core
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+package top.milkbox.core
+
+
+
+
+
+
+
+
所有类和接口 接口 类 枚举类
+
+
+
+
+
+
+
减少Servlet的数量,现在是一个功能一个Servlet,将其优化为一个模块一个Servlet,
+ 相当于在数据库中一张表对应一个Servlet,在Servlet中提供不同的方法,完成用户的请求。
+
+
+
+
+
+
+
+
http请求工具类
+ 需要依赖
+ 创建时间:2022年9月29日20:04:40
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
有关文件的操作工具
+ 文件编码的操作
+ 文件类型的操作
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
将用到的string.properties对象加载到内存
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/top/milkbox/core/package-tree.html b/doc/top/milkbox/core/package-tree.html
new file mode 100644
index 0000000..2ecf32c
--- /dev/null
+++ b/doc/top/milkbox/core/package-tree.html
@@ -0,0 +1,129 @@
+
+
+
+
+top.milkbox.core 类分层结构
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+程序包分层结构:
+
+
+
+
+
+
+
+
+
diff --git a/doc/top/milkbox/core/package-use.html b/doc/top/milkbox/core/package-use.html
new file mode 100644
index 0000000..e93241e
--- /dev/null
+++ b/doc/top/milkbox/core/package-use.html
@@ -0,0 +1,96 @@
+
+
+
+
+程序包 top.milkbox.core的使用
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/top/milkbox/package-summary.html b/doc/top/milkbox/package-summary.html
new file mode 100644
index 0000000..fc8985b
--- /dev/null
+++ b/doc/top/milkbox/package-summary.html
@@ -0,0 +1,103 @@
+
+
+
+
+top.milkbox
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+
+package top.milkbox
+
+
+
+
+
+
diff --git a/doc/top/milkbox/package-tree.html b/doc/top/milkbox/package-tree.html
new file mode 100644
index 0000000..a38deeb
--- /dev/null
+++ b/doc/top/milkbox/package-tree.html
@@ -0,0 +1,72 @@
+
+
+
+
+top.milkbox 类分层结构
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
diff --git a/doc/top/milkbox/package-use.html b/doc/top/milkbox/package-use.html
new file mode 100644
index 0000000..77d657e
--- /dev/null
+++ b/doc/top/milkbox/package-use.html
@@ -0,0 +1,58 @@
+
+
+
+
+程序包 top.milkbox的使用
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+您的浏览器已禁用 JavaScript。
+
+
+
+
+
+
+没有top.milkbox的用法
+
+
+
+
diff --git a/doc/type-search-index.js b/doc/type-search-index.js
new file mode 100644
index 0000000..4531745
--- /dev/null
+++ b/doc/type-search-index.js
@@ -0,0 +1 @@
+typeSearchIndex = [{"p":"top.milkbox.core","l":"UtilsString.AlignFace"},{"p":"top.milkbox.core","l":"BaseServlet"},{"p":"top.milkbox.core","l":"CheckCodeServlet"},{"p":"top.milkbox.core","l":"DrawName"},{"p":"top.milkbox.core","l":"HttpClientUtils"},{"p":"top.milkbox","l":"Main"},{"p":"top.milkbox.core.baiDuTranslation","l":"MD5"},{"p":"top.milkbox.core","l":"MD5Utils"},{"p":"top.milkbox.core","l":"UtilsString.Menu"},{"p":"top.milkbox.core","l":"UtilsConsoleMenu.MenuPredicate"},{"p":"top.milkbox.core","l":"UtilsString.Menu.Option"},{"p":"top.milkbox.core","l":"PageBean"},{"p":"top.milkbox.core","l":"R"},{"p":"top.milkbox.core","l":"UtilsConsoleMenu.ReturnFlag"},{"p":"top.milkbox.core","l":"SensitiveFilter"},{"p":"top.milkbox.core.baiDuTranslation","l":"TransApi"},{"p":"top.milkbox.core","l":"UtilsColl"},{"p":"top.milkbox.core","l":"UtilsConsoleMenu"},{"p":"top.milkbox.core","l":"UtilsDate"},{"p":"top.milkbox.core","l":"UtilsDownload"},{"p":"top.milkbox.core","l":"UtilsEmail"},{"p":"top.milkbox.core","l":"UtilsFile"},{"p":"top.milkbox.core","l":"UtilsIp"},{"p":"top.milkbox.core","l":"UtilsJDBC"},{"p":"top.milkbox.core","l":"UtilsJDBCDruid"},{"p":"top.milkbox.core","l":"UtilsJedisPool"},{"p":"top.milkbox.core","l":"UtilsJWT"},{"p":"top.milkbox.core","l":"UtilsLog"},{"p":"top.milkbox.core","l":"UtilsMath"},{"p":"top.milkbox.core","l":"UtilsProperties"},{"p":"top.milkbox.core","l":"UtilsRandom"},{"p":"top.milkbox.core","l":"UtilsSort"},{"p":"top.milkbox.core","l":"UtilsString"},{"p":"top.milkbox.core","l":"UtilsVariableName"},{"p":"top.milkbox.core","l":"UtilsVerifyCode"},{"l":"所有类和接口","u":"allclasses-index.html"}];updateSearchResults();
\ No newline at end of file
diff --git a/src/main/java/top/milkbox/core/UtilsMath.java b/src/main/java/top/milkbox/core/UtilsMath.java
new file mode 100644
index 0000000..bbce444
--- /dev/null
+++ b/src/main/java/top/milkbox/core/UtilsMath.java
@@ -0,0 +1,16 @@
+package top.milkbox.core;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+
+/**
+ * 数学类
+ *
+ * 创建时间: 2023-09-04 下午 4:54
+ *
+ * @author milkbox
+ */
+public class UtilsMath {
+
+}
diff --git a/src/main/test/MainTest.java b/src/main/test/MainTest.java
new file mode 100644
index 0000000..3c46467
--- /dev/null
+++ b/src/main/test/MainTest.java
@@ -0,0 +1,18 @@
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.Stack;
+
+/**
+ * 创建时间: 2023-09-05 下午 2:26
+ *
+ * @author milkbox
+ */
+public class MainTest {
+
+ public static void main(String[] args) {
+
+ }
+
+
+}
--
Gitee