{"id":2344,"date":"2023-06-27T15:33:03","date_gmt":"2023-06-27T07:33:03","guid":{"rendered":"https:\/\/xinchewhd.com.cn\/?p=2344"},"modified":"2023-06-27T15:33:03","modified_gmt":"2023-06-27T07:33:03","slug":"api-%e6%8e%a5%e5%8f%a3%e5%ba%94%e8%af%a5%e5%a6%82%e4%bd%95%e8%ae%be%e8%ae%a1%ef%bc%9f%e5%a6%82%e4%bd%95%e4%bf%9d%e8%af%81%e5%ae%89%e5%85%a8%ef%bc%9f%e5%a6%82%e4%bd%95%e7%ad%be%e5%90%8d%ef%bc%9f","status":"publish","type":"post","link":"https:\/\/xinchewhd.com.cn\/index.php\/java\/api-%e6%8e%a5%e5%8f%a3%e5%ba%94%e8%af%a5%e5%a6%82%e4%bd%95%e8%ae%be%e8%ae%a1%ef%bc%9f%e5%a6%82%e4%bd%95%e4%bf%9d%e8%af%81%e5%ae%89%e5%85%a8%ef%bc%9f%e5%a6%82%e4%bd%95%e7%ad%be%e5%90%8d%ef%bc%9f\/","title":{"rendered":"API \u63a5\u53e3\u5e94\u8be5\u5982\u4f55\u8bbe\u8ba1\uff1f\u5982\u4f55\u4fdd\u8bc1\u5b89\u5168\uff1f\u5982\u4f55\u7b7e\u540d\uff1f\u5982\u4f55\u9632\u91cd\uff1f"},"content":{"rendered":"<div class='wxsyncmain'>\n<p style=\"text-align: center;\"><img decoding=\"async\" class=\"rich_pages wxw-img lazyload\" data-galleryid=\"\" data-ratio=\"0.3\" data-type=\"gif\" data-w=\"400\" style=\"height: auto !important;\"  data-src=\"https:\/\/wp-moto-1258805347.cos.ap-shanghai.myqcloud.com\/2023\/06\/20230627151813936.gif\" src=\"https:\/\/s.nmxc.ltd\/sakurairo_vision\/@2.6\/load_svg\/inload.svg\" onerror=\"imgError(this)\"  \/><noscript><img decoding=\"async\" class=\"rich_pages wxw-img\" data-galleryid=\"\" data-ratio=\"0.3\" data-type=\"gif\" data-w=\"400\" style=\"height: auto !important;\"  src=\"https:\/\/wp-moto-1258805347.cos.ap-shanghai.myqcloud.com\/2023\/06\/20230627151813936.gif\"  \/><\/noscript><\/p>\n<p><span style=\"color: rgb(61, 170, 214);\">\u5927\u5bb6\u597d\uff0c\u6211\u662f\u4e00\u5b89~<\/span><br  \/><\/p>\n<p style=\"margin-top: 1.3em;margin-bottom: 1.3em;outline: 0px;font-family: system-ui, -apple-system, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;letter-spacing: 0.544px;white-space: normal;background-color: rgb(255, 255, 255);line-height: inherit;visibility: visible;\"><span style=\"outline: 0px;font-weight: bold;font-size: 20px;color: rgb(47, 118, 195);visibility: visible;\">\u524d\u8a00<\/span><\/p>\n<p style=\"margin-top: 1.3em;margin-bottom: 1.3em;outline: 0px;color: inherit;font-family: system-ui, -apple-system, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;font-size: inherit;letter-spacing: 0.544px;white-space: normal;background-color: rgb(255, 255, 255);line-height: inherit;visibility: visible;\"><span style=\"outline: 0px;font-size: inherit;caret-color: var(--weui-BRAND);letter-spacing: 0.034em;visibility: visible;\">\u5728\u5b9e\u9645\u7684\u4e1a\u52a1\u4e2d\uff0c\u96be\u514d\u4f1a\u8ddf\u7b2c\u4e09\u65b9\u7cfb\u7edf\u8fdb\u884c\u6570\u636e\u7684\u4ea4\u4e92\u4e0e\u4f20\u9012\uff0c\u90a3\u4e48\u5982\u4f55\u4fdd\u8bc1\u6570\u636e\u5728\u4f20\u8f93\u8fc7\u7a0b\u4e2d\u7684\u5b89\u5168\u5462\uff08\u9632\u7a83\u53d6\uff09\uff1f\u9664\u4e86https\u7684\u534f\u8bae\u4e4b\u5916\uff0c\u80fd\u4e0d\u80fd\u52a0\u4e0a\u901a\u7528\u7684\u4e00\u5957\u7b97\u6cd5\u4ee5\u53ca\u89c4\u8303\u6765\u4fdd\u8bc1\u4f20\u8f93\u7684\u5b89\u5168\u6027\u5462\uff1f<\/span><\/p>\n<p style=\"margin-top: 1.3em;margin-bottom: 1.3em;outline: 0px;color: inherit;font-family: system-ui, -apple-system, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;font-size: inherit;letter-spacing: 0.544px;white-space: normal;background-color: rgb(255, 255, 255);line-height: inherit;visibility: visible;\"><strong style=\"outline: 0px;font-size: inherit;color: inherit;line-height: inherit;visibility: visible;\">\u4e0b\u9762\u6211\u4eec\u5c31\u6765\u8ba8\u8bba\u4e0b\u5e38\u7528\u7684\u4e00\u4e9bAPI\u8bbe\u8ba1\u7684\u5b89\u5168\u65b9\u6cd5\uff0c\u53ef\u80fd\u4e0d\u4e00\u5b9a\u662f\u6700\u597d\u7684\uff0c\u6709\u66f4\u725b\u903c\u7684\u5b9e\u73b0\u65b9\u5f0f\uff0c\u4f46\u662f\u8fd9\u7bc7\u662f\u6211\u81ea\u5df1\u7684\u7ecf\u9a8c\u5206\u4eab\u3002<\/strong><\/p>\n<h3 style=\"margin-top: 1.3em;margin-bottom: 1.3em;outline: 0px;font-weight: bold;font-size: 1.1em;color: inherit;font-family: system-ui, -apple-system, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;letter-spacing: 0.544px;white-space: normal;background-color: rgb(255, 255, 255);line-height: inherit;border-bottom: 2px solid rgb(65, 105, 225);visibility: visible;\"><span style=\"margin-right: 3px;padding-top: 3px;padding-right: 6px;padding-left: 6px;outline: 0px;font-size: inherit;line-height: inherit;display: inline-block;font-weight: normal;background: rgb(65, 105, 225);color: rgb(255, 255, 255);border-top-right-radius: 3px;border-top-left-radius: 3px;visibility: visible;\">token \u7b80\u4ecb<\/span><\/h3>\n<p style=\"margin-top: 1.3em;margin-bottom: 1.3em;outline: 0px;color: inherit;font-family: system-ui, -apple-system, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;font-size: inherit;letter-spacing: 0.544px;white-space: normal;background-color: rgb(255, 255, 255);line-height: inherit;visibility: visible;\">Token\uff1a\u8bbf\u95ee\u4ee4\u724caccess token, \u7528\u4e8e\u63a5\u53e3\u4e2d,<br style=\"outline: 0px;visibility: visible;\"  \/>\u7528\u4e8e\u6807\u8bc6\u63a5\u53e3\u8c03\u7528\u8005\u7684\u8eab\u4efd\u3001\u51ed\u8bc1\uff0c\u51cf\u5c11\u7528\u6237\u540d\u548c\u5bc6\u7801\u7684\u4f20\u8f93\u6b21\u6570\u3002\u4e00\u822c\u60c5\u51b5\u4e0b\u5ba2\u6237\u7aef(\u63a5\u53e3\u8c03\u7528\u65b9)\u9700\u8981\u5148\u5411\u670d\u52a1\u5668\u7aef\u7533\u8bf7\u4e00\u4e2a\u63a5\u53e3\u8c03\u7528\u7684\u8d26\u53f7\uff0c\u670d\u52a1\u5668\u4f1a\u7ed9\u51fa\u4e00\u4e2aappId\u548c\u4e00\u4e2akey,<br style=\"outline: 0px;visibility: visible;\"  \/>key\u7528\u4e8e\u53c2\u6570\u7b7e\u540d\u4f7f\u7528\uff0c\u6ce8\u610fkey\u4fdd\u5b58\u5230\u5ba2\u6237\u7aef\uff0c\u9700\u8981\u505a\u4e00\u4e9b\u5b89\u5168\u5904\u7406\uff0c\u9632\u6b62\u6cc4\u9732\u3002<\/p>\n<p style=\"margin-top: 1.3em;margin-bottom: 1.3em;outline: 0px;color: inherit;font-family: system-ui, -apple-system, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;font-size: inherit;letter-spacing: 0.544px;white-space: normal;background-color: rgb(255, 255, 255);line-height: inherit;visibility: visible;\">Token\u7684\u503c\u4e00\u822c\u662fUUID\uff0c\u670d\u52a1\u7aef\u751f\u6210Token\u540e\u9700\u8981\u5c06token\u505a\u4e3akey\uff0c\u5c06\u4e00\u4e9b\u548ctoken\u5173\u8054\u7684\u4fe1\u606f\u4f5c\u4e3avalue\u4fdd\u5b58\u5230\u7f13\u5b58\u670d\u52a1\u5668\u4e2d(redis)\uff0c\u5f53\u4e00\u4e2a\u8bf7\u6c42\u8fc7\u6765\u540e\uff0c\u670d\u52a1\u5668\u5c31\u53bb\u7f13\u5b58\u670d\u52a1\u5668\u4e2d\u67e5\u8be2\u8fd9\u4e2aToken\u662f\u5426\u5b58\u5728\uff0c\u5b58\u5728\u5219\u8c03\u7528\u63a5\u53e3\uff0c\u4e0d\u5b58\u5728\u8fd4\u56de\u63a5\u53e3\u9519\u8bef\uff0c\u4e00\u822c\u901a\u8fc7\u62e6\u622a\u5668\u6216\u8005\u8fc7\u6ee4\u5668\u6765\u5b9e\u73b0\uff0cToken\u5206\u4e3a\u4e24\u79cd\uff1a<\/p>\n<p style=\"margin-top: 1.3em;margin-bottom: 1.3em;outline: 0px;color: inherit;font-family: system-ui, -apple-system, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;font-size: inherit;letter-spacing: 0.544px;white-space: normal;background-color: rgb(255, 255, 255);line-height: inherit;\">API Token(\u63a5\u53e3\u4ee4\u724c): \u7528\u4e8e\u8bbf\u95ee\u4e0d\u9700\u8981\u7528\u6237\u767b\u5f55\u7684\u63a5\u53e3\uff0c\u5982\u767b\u5f55\u3001\u6ce8\u518c\u3001\u4e00\u4e9b\u57fa\u672c\u6570\u636e\u7684\u83b7\u53d6\u7b49\u3002\u83b7\u53d6\u63a5\u53e3\u4ee4\u724c\u9700\u8981\u62ffappId\u3001timestamp\u548csign\u6765\u6362\uff0csign=\u52a0\u5bc6(timestamp+key)<\/p>\n<p style=\"margin-top: 1.3em;margin-bottom: 1.3em;outline: 0px;color: inherit;font-family: system-ui, -apple-system, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;font-size: inherit;letter-spacing: 0.544px;white-space: normal;background-color: rgb(255, 255, 255);line-height: inherit;\">USER Token(\u7528\u6237\u4ee4\u724c): \u7528\u4e8e\u8bbf\u95ee\u9700\u8981\u7528\u6237\u767b\u5f55\u4e4b\u540e\u7684\u63a5\u53e3\uff0c\u5982\uff1a\u83b7\u53d6\u6211\u7684\u57fa\u672c\u4fe1\u606f\u3001\u4fdd\u5b58\u3001\u4fee\u6539\u3001\u5220\u9664\u7b49\u64cd\u4f5c\u3002\u83b7\u53d6\u7528\u6237\u4ee4\u724c\u9700\u8981\u62ff\u7528\u6237\u540d\u548c\u5bc6\u7801\u6765\u6362<\/p>\n<p style=\"margin-top: 1.3em;margin-bottom: 1.3em;outline: 0px;color: inherit;font-family: system-ui, -apple-system, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;font-size: inherit;letter-spacing: 0.544px;white-space: normal;background-color: rgb(255, 255, 255);line-height: inherit;\">\u5173\u4e8eToken\u7684\u65f6\u6548\u6027\uff1atoken\u53ef\u4ee5\u662f\u4e00\u6b21\u6027\u7684\u3001\u4e5f\u53ef\u4ee5\u5728\u4e00\u6bb5\u65f6\u95f4\u8303\u56f4\u5185\u662f\u6709\u6548\u7684\uff0c\u5177\u4f53\u4f7f\u7528\u54ea\u79cd\u770b\u4e1a\u52a1\u9700\u8981\u3002<\/p>\n<p style=\"margin-top: 1.3em;margin-bottom: 1.3em;outline: 0px;color: inherit;font-family: system-ui, -apple-system, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;font-size: inherit;letter-spacing: 0.544px;white-space: normal;background-color: rgb(255, 255, 255);line-height: inherit;\">\u4e00\u822c\u60c5\u51b5\u4e0b\u63a5\u53e3\u6700\u597d\u4f7f\u7528https\u534f\u8bae\uff0c\u5982\u679c\u4f7f\u7528http\u534f\u8bae\uff0cToken\u673a\u5236\u53ea\u662f\u4e00\u79cd\u51cf\u5c11\u88ab\u9ed1\u7684\u53ef\u80fd\u6027\uff0c\u5176\u5b9e\u53ea\u80fd\u9632\u541b\u5b50\u4e0d\u80fd\u9632\u5c0f\u4eba\u3002<\/p>\n<p style=\"margin-top: 1.3em;margin-bottom: 1.3em;outline: 0px;color: inherit;font-family: system-ui, -apple-system, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;font-size: inherit;letter-spacing: 0.544px;white-space: normal;background-color: rgb(255, 255, 255);line-height: inherit;\">\u4e00\u822ctoken\u3001timestamp\u548csign \u4e09\u4e2a\u53c2\u6570\u4f1a\u5728\u63a5\u53e3\u4e2d\u4f1a\u540c\u65f6\u4f5c\u4e3a\u53c2\u6570\u4f20\u9012\uff0c\u6bcf\u4e2a\u53c2\u6570\u90fd\u6709\u5404\u81ea\u7684\u7528\u9014\u3002<\/p>\n<h3 style=\"margin-top: 1.3em;margin-bottom: 1.3em;outline: 0px;font-weight: bold;font-size: 1.1em;color: inherit;font-family: system-ui, -apple-system, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;letter-spacing: 0.544px;white-space: normal;background-color: rgb(255, 255, 255);line-height: inherit;border-bottom: 2px solid rgb(65, 105, 225);\"><span style=\"margin-right: 3px;padding-top: 3px;padding-right: 6px;padding-left: 6px;outline: 0px;font-size: inherit;line-height: inherit;display: inline-block;font-weight: normal;background: rgb(65, 105, 225);color: rgb(255, 255, 255);border-top-right-radius: 3px;border-top-left-radius: 3px;\">timestamp \u7b80\u4ecb<\/span><\/h3>\n<p style=\"margin-top: 1.3em;margin-bottom: 1.3em;outline: 0px;color: inherit;font-family: system-ui, -apple-system, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;font-size: inherit;letter-spacing: 0.544px;white-space: normal;background-color: rgb(255, 255, 255);line-height: inherit;\">timestamp:<br style=\"outline: 0px;\"  \/>\u65f6\u95f4\u6233\uff0c\u662f\u5ba2\u6237\u7aef\u8c03\u7528\u63a5\u53e3\u65f6\u5bf9\u5e94\u7684\u5f53\u524d\u65f6\u95f4\u6233\uff0c\u65f6\u95f4\u6233\u7528\u4e8e\u9632\u6b62DoS\u653b\u51fb\u3002\u5f53\u9ed1\u5ba2\u52ab\u6301\u4e86\u8bf7\u6c42\u7684url\u53bbDoS\u653b\u51fb\uff0c\u6bcf\u6b21\u8c03\u7528\u63a5\u53e3\u65f6\u63a5\u53e3\u90fd\u4f1a\u5224\u65ad\u670d\u52a1\u5668\u5f53\u524d\u7cfb\u7edf\u65f6\u95f4\u548c\u63a5\u53e3\u4e2d\u4f20\u7684\u7684timestamp\u7684\u5dee\u503c\uff0c\u5982\u679c\u8fd9\u4e2a\u5dee\u503c\u8d85\u8fc7\u67d0\u4e2a\u8bbe\u7f6e\u7684\u65f6\u95f4(\u5047\u59825\u5206\u949f)\uff0c\u90a3\u4e48\u8fd9\u4e2a\u8bf7\u6c42\u5c06\u88ab\u62e6\u622a\u6389\uff0c\u5982\u679c\u5728\u8bbe\u7f6e\u7684\u8d85\u65f6\u65f6\u95f4\u8303\u56f4\u5185\uff0c\u662f\u4e0d\u80fd\u963b\u6b62DoS\u653b\u51fb\u7684\u3002<br style=\"outline: 0px;\"  \/>timestamp\u673a\u5236\u53ea\u80fd\u51cf\u8f7bDoS\u653b\u51fb\u7684\u65f6\u95f4\uff0c\u7f29\u77ed\u653b\u51fb\u65f6\u95f4\u3002\u5982\u679c\u9ed1\u5ba2\u4fee\u6539\u4e86\u65f6\u95f4\u6233\u7684\u503c\u53ef\u901a\u8fc7sign\u7b7e\u540d\u673a\u5236\u6765\u5904\u7406\u3002<\/p>\n<h4 style=\"margin-top: 1.3em;margin-bottom: 1.3em;outline: 0px;font-weight: bold;font-size: 1.05em;color: inherit;font-family: system-ui, -apple-system, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;letter-spacing: 0.544px;white-space: normal;background-color: rgb(255, 255, 255);line-height: inherit;\"><span style=\"outline: 0px;font-size: inherit;color: inherit;line-height: inherit;\">DoS<\/span><\/h4>\n<p style=\"margin-top: 1.3em;margin-bottom: 1.3em;outline: 0px;color: inherit;font-family: system-ui, -apple-system, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;font-size: inherit;letter-spacing: 0.544px;white-space: normal;background-color: rgb(255, 255, 255);line-height: inherit;\">DoS\u662fDenial of<br style=\"outline: 0px;\"  \/>Service\u7684\u7b80\u79f0\uff0c\u5373\u62d2\u7edd\u670d\u52a1\uff0c\u9020\u6210DoS\u7684\u653b\u51fb\u884c\u4e3a\u88ab\u79f0\u4e3aDoS\u653b\u51fb\uff0c\u5176\u76ee\u7684\u662f\u4f7f\u8ba1\u7b97\u673a\u6216\u7f51\u7edc\u65e0\u6cd5\u63d0\u4f9b\u6b63\u5e38\u7684\u670d\u52a1\u3002\u6700\u5e38\u89c1\u7684DoS\u653b\u51fb\u6709\u8ba1\u7b97\u673a\u7f51\u7edc\u5e26\u5bbd\u653b\u51fb\u548c\u8fde\u901a\u6027\u653b\u51fb\u3002<\/p>\n<p style=\"margin-top: 1.3em;margin-bottom: 1.3em;outline: 0px;color: inherit;font-family: system-ui, -apple-system, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;font-size: inherit;letter-spacing: 0.544px;white-space: normal;background-color: rgb(255, 255, 255);line-height: inherit;\">DoS\u653b\u51fb\u662f\u6307\u6545\u610f\u7684\u653b\u51fb\u7f51\u7edc\u534f\u8bae\u5b9e\u73b0\u7684\u7f3a\u9677\u6216\u76f4\u63a5\u901a\u8fc7\u91ce\u86ee\u624b\u6bb5\u6b8b\u5fcd\u5730\u8017\u5c3d\u88ab\u653b\u51fb\u5bf9\u8c61\u7684\u8d44\u6e90\uff0c\u76ee\u7684\u662f\u8ba9\u76ee\u6807\u8ba1\u7b97\u673a\u6216\u7f51\u7edc\u65e0\u6cd5\u63d0\u4f9b\u6b63\u5e38\u7684\u670d\u52a1\u6216\u8d44\u6e90\u8bbf\u95ee\uff0c\u4f7f\u76ee\u6807\u7cfb\u7edf\u670d\u52a1\u7cfb\u7edf\u505c\u6b62\u54cd\u5e94\u751a\u81f3\u5d29\u6e83\uff0c\u800c\u5728\u6b64\u653b\u51fb\u4e2d\u5e76\u4e0d\u5305\u62ec\u4fb5\u5165\u76ee\u6807\u670d\u52a1\u5668\u6216\u76ee\u6807\u7f51\u7edc\u8bbe\u5907\u3002\u8fd9\u4e9b\u670d\u52a1\u8d44\u6e90\u5305\u62ec\u7f51\u7edc\u5e26\u5bbd\uff0c\u6587\u4ef6\u7cfb\u7edf\u7a7a\u95f4\u5bb9\u91cf\uff0c\u5f00\u653e\u7684\u8fdb\u7a0b\u6216\u8005\u5141\u8bb8\u7684\u8fde\u63a5\u3002\u8fd9\u79cd\u653b\u51fb\u4f1a\u5bfc\u81f4\u8d44\u6e90\u7684\u532e\u4e4f\uff0c\u65e0\u8bba\u8ba1\u7b97\u673a\u7684\u5904\u7406\u901f\u5ea6\u591a\u5feb\u3001\u5185\u5b58\u5bb9\u91cf\u591a\u5927\u3001\u7f51\u7edc\u5e26\u5bbd\u7684\u901f\u5ea6\u591a\u5feb\u90fd\u65e0\u6cd5\u907f\u514d\u8fd9\u79cd\u653b\u51fb\u5e26\u6765\u7684\u540e\u679c\u3002<\/p>\n<p style=\"margin-top: 1.3em;margin-bottom: 1.3em;outline: 0px;color: inherit;font-family: system-ui, -apple-system, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;font-size: inherit;letter-spacing: 0.544px;white-space: normal;background-color: rgb(255, 255, 255);line-height: inherit;\">Pingflood: \u8be5\u653b\u51fb\u5728\u77ed\u65f6\u95f4\u5185\u5411\u76ee\u7684\u4e3b\u673a\u53d1\u9001\u5927\u91cfping\u5305\uff0c\u9020\u6210\u7f51\u7edc\u5835\u585e\u6216\u4e3b\u673a\u8d44\u6e90\u8017\u5c3d\u3002<\/p>\n<p style=\"margin-top: 1.3em;margin-bottom: 1.3em;outline: 0px;color: inherit;font-family: system-ui, -apple-system, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;font-size: inherit;letter-spacing: 0.544px;white-space: normal;background-color: rgb(255, 255, 255);line-height: inherit;\">Synflood: \u8be5\u653b\u51fb\u4ee5\u591a\u4e2a\u968f\u673a\u7684\u6e90\u4e3b\u673a\u5730\u5740\u5411\u76ee\u7684\u4e3b\u673a\u53d1\u9001SYN\u5305\uff0c\u800c\u5728\u6536\u5230\u76ee\u7684\u4e3b\u673a\u7684SYN ACK\u540e\u5e76\u4e0d\u56de\u5e94\uff0c\u8fd9\u6837\uff0c\u76ee\u7684\u4e3b\u673a\u5c31\u4e3a\u8fd9\u4e9b\u6e90\u4e3b\u673a\u5efa\u7acb\u4e86\u5927\u91cf\u7684\u8fde\u63a5\u961f\u5217\uff0c\u800c\u4e14\u7531\u4e8e\u6ca1\u6709\u6536\u5230ACK\u4e00\u76f4\u7ef4\u62a4\u7740\u8fd9<br style=\"outline: 0px;\"  \/>\u4e9b\u961f\u5217\uff0c\u9020\u6210\u4e86\u8d44\u6e90\u7684\u5927\u91cf\u6d88\u8017\u800c\u4e0d\u80fd\u5411\u6b63\u5e38\u8bf7\u6c42\u63d0\u4f9b\u670d\u52a1\u3002<\/p>\n<p style=\"margin-top: 1.3em;margin-bottom: 1.3em;outline: 0px;color: inherit;font-family: system-ui, -apple-system, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;font-size: inherit;letter-spacing: 0.544px;white-space: normal;background-color: rgb(255, 255, 255);line-height: inherit;\">Smurf\uff1a\u8be5\u653b\u51fb\u5411\u4e00\u4e2a\u5b50\u7f51\u7684\u5e7f\u64ad\u5730\u5740\u53d1\u4e00\u4e2a\u5e26\u6709\u7279\u5b9a\u8bf7\u6c42\uff08\u5982ICMP\u56de\u5e94\u8bf7\u6c42\uff09\u7684\u5305\uff0c\u5e76\u4e14\u5c06\u6e90\u5730\u5740\u4f2a\u88c5\u6210\u60f3\u8981\u653b\u51fb\u7684\u4e3b\u673a\u5730\u5740\u3002\u5b50\u7f51\u4e0a\u6240\u6709\u4e3b\u673a\u90fd\u56de\u5e94\u5e7f\u64ad\u5305\u8bf7\u6c42\u800c\u5411\u88ab\u653b\u51fb\u4e3b\u673a\u53d1\u5305\uff0c\u4f7f\u8be5\u4e3b\u673a\u53d7\u5230\u653b\u51fb\u3002<\/p>\n<p style=\"margin-top: 1.3em;margin-bottom: 1.3em;outline: 0px;color: inherit;font-family: system-ui, -apple-system, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;font-size: inherit;letter-spacing: 0.544px;white-space: normal;background-color: rgb(255, 255, 255);line-height: inherit;\">Land-based\uff1a\u653b\u51fb\u8005\u5c06\u4e00\u4e2a\u5305\u7684\u6e90\u5730\u5740\u548c\u76ee\u7684\u5730\u5740\u90fd\u8bbe\u7f6e\u4e3a\u76ee\u6807\u4e3b\u673a\u7684\u5730\u5740\uff0c\u7136\u540e\u5c06\u8be5\u5305\u901a\u8fc7IP\u6b3a\u9a97\u7684\u65b9\u5f0f\u53d1\u9001\u7ed9\u88ab\u653b\u51fb\u4e3b\u673a\uff0c\u8fd9\u79cd\u5305\u53ef\u4ee5\u9020\u6210\u88ab\u653b\u51fb\u4e3b\u673a\u56e0\u8bd5\u56fe\u4e0e\u81ea\u5df1\u5efa\u7acb\u8fde\u63a5\u800c\u9677\u5165\u6b7b\u5faa\u73af\uff0c\u4ece\u800c\u5f88\u5927\u7a0b\u5ea6\u5730\u964d\u4f4e\u4e86\u7cfb\u7edf\u6027\u80fd\u3002<\/p>\n<p style=\"margin-top: 1.3em;margin-bottom: 1.3em;outline: 0px;color: inherit;font-family: system-ui, -apple-system, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;font-size: inherit;letter-spacing: 0.544px;white-space: normal;background-color: rgb(255, 255, 255);line-height: inherit;\">Ping of Death\uff1a\u6839\u636eTCP\/IP\u7684\u89c4\u8303\uff0c\u4e00\u4e2a\u5305\u7684\u957f\u5ea6\u6700\u5927\u4e3a65536\u5b57\u8282\u3002\u5c3d\u7ba1\u4e00\u4e2a\u5305\u7684\u957f\u5ea6\u4e0d\u80fd\u8d85\u8fc765536\u5b57\u8282\uff0c\u4f46\u662f\u4e00\u4e2a\u5305\u5206\u6210\u7684\u591a\u4e2a\u7247\u6bb5\u7684\u53e0\u52a0\u5374\u80fd\u505a\u5230\u3002\u5f53\u4e00\u4e2a\u4e3b\u673a\u6536\u5230\u4e86\u957f\u5ea6\u5927\u4e8e65536\u5b57\u8282\u7684\u5305\u65f6\uff0c\u5c31\u662f\u53d7\u5230\u4e86Ping of Death\u653b\u51fb\uff0c\u8be5\u653b\u51fb\u4f1a\u9020\u6210\u4e3b\u673a\u7684\u5b95\u673a\u3002<\/p>\n<p style=\"margin-top: 1.3em;margin-bottom: 1.3em;outline: 0px;color: inherit;font-family: system-ui, -apple-system, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;font-size: inherit;letter-spacing: 0.544px;white-space: normal;background-color: rgb(255, 255, 255);line-height: inherit;\">Teardrop\uff1aIP\u6570\u636e\u5305\u5728\u7f51\u7edc\u4f20\u9012\u65f6\uff0c\u6570\u636e\u5305\u53ef\u4ee5\u5206\u6210\u66f4\u5c0f\u7684\u7247\u6bb5\u3002\u653b\u51fb\u8005\u53ef\u4ee5\u901a\u8fc7\u53d1\u9001\u4e24\u6bb5\uff08\u6216\u8005\u66f4\u591a\uff09\u6570\u636e\u5305\u6765\u5b9e\u73b0TearDrop\u653b\u51fb\u3002\u7b2c\u4e00\u4e2a\u5305\u7684\u504f\u79fb\u91cf\u4e3a0\uff0c\u957f\u5ea6\u4e3aN\uff0c\u7b2c\u4e8c\u4e2a\u5305\u7684\u504f\u79fb\u91cf\u5c0f\u4e8eN\u3002\u4e3a\u4e86\u5408\u5e76\u8fd9\u4e9b\u6570\u636e\u6bb5\uff0cTCP\/IP\u5806\u6808\u4f1a\u5206\u914d\u8d85\u4e4e\u5bfb\u5e38\u7684\u5de8\u5927\u8d44\u6e90\uff0c\u4ece\u800c\u9020\u6210\u7cfb\u7edf\u8d44\u6e90\u7684\u7f3a\u4e4f\u751a\u81f3\u673a\u5668\u7684\u91cd\u65b0\u542f\u52a8\u3002<\/p>\n<p style=\"margin-top: 1.3em;margin-bottom: 1.3em;outline: 0px;color: inherit;font-family: system-ui, -apple-system, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;font-size: inherit;letter-spacing: 0.544px;white-space: normal;background-color: rgb(255, 255, 255);line-height: inherit;\">PingSweep\uff1a\u4f7f\u7528ICMP Echo\u8f6e\u8be2\u591a\u4e2a\u4e3b\u673a\u3002<\/p>\n<h3 style=\"margin-top: 1.3em;margin-bottom: 1.3em;outline: 0px;font-weight: bold;font-size: 1.1em;color: inherit;font-family: system-ui, -apple-system, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;letter-spacing: 0.544px;white-space: normal;background-color: rgb(255, 255, 255);line-height: inherit;border-bottom: 2px solid rgb(65, 105, 225);\"><span style=\"margin-right: 3px;padding-top: 3px;padding-right: 6px;padding-left: 6px;outline: 0px;font-size: inherit;line-height: inherit;display: inline-block;font-weight: normal;background: rgb(65, 105, 225);color: rgb(255, 255, 255);border-top-right-radius: 3px;border-top-left-radius: 3px;\">sign \u7b80\u4ecb<\/span><\/h3>\n<p style=\"margin-top: 1.3em;margin-bottom: 1.3em;outline: 0px;color: inherit;font-family: system-ui, -apple-system, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;font-size: inherit;letter-spacing: 0.544px;white-space: normal;background-color: rgb(255, 255, 255);line-height: inherit;\">nonce\uff1a\u968f\u673a\u503c\uff0c\u662f\u5ba2\u6237\u7aef\u968f\u673a\u751f\u6210\u7684\u503c\uff0c\u4f5c\u4e3a\u53c2\u6570\u4f20\u9012\u8fc7\u6765\uff0c\u968f\u673a\u503c\u7684\u76ee\u7684\u662f\u589e\u52a0sign\u7b7e\u540d\u7684\u591a\u53d8\u6027\u3002\u968f\u673a\u503c\u4e00\u822c\u662f\u6570\u5b57\u548c\u5b57\u6bcd\u7684\u7ec4\u5408\uff0c6\u4f4d\u957f\u5ea6\uff0c\u968f\u673a\u503c\u7684\u7ec4\u6210\u548c\u957f\u5ea6\u6ca1\u6709\u56fa\u5b9a\u89c4\u5219\u3002<\/p>\n<p style=\"margin-top: 1.3em;margin-bottom: 1.3em;outline: 0px;color: inherit;font-family: system-ui, -apple-system, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;font-size: inherit;letter-spacing: 0.544px;white-space: normal;background-color: rgb(255, 255, 255);line-height: inherit;\">sign: \u4e00\u822c\u7528\u4e8e\u53c2\u6570\u7b7e\u540d\uff0c\u9632\u6b62\u53c2\u6570\u88ab\u975e\u6cd5\u7be1\u6539\uff0c\u6700\u5e38\u89c1\u7684\u662f\u4fee\u6539\u91d1\u989d\u7b49\u91cd\u8981\u654f\u611f\u53c2\u6570\uff0c<br style=\"outline: 0px;\"  \/>sign\u7684\u503c\u4e00\u822c\u662f\u5c06\u6240\u6709\u975e\u7a7a\u53c2\u6570\u6309\u7167\u5347\u7eed\u6392\u5e8f\u7136\u540e+token+key+timestamp+nonce(\u968f\u673a\u6570)\u62fc\u63a5\u5728\u4e00\u8d77\uff0c\u7136\u540e\u4f7f\u7528\u67d0\u79cd\u52a0\u5bc6\u7b97\u6cd5\u8fdb\u884c\u52a0\u5bc6\uff0c\u4f5c\u4e3a\u63a5\u53e3\u4e2d\u7684\u4e00\u4e2a\u53c2\u6570sign\u6765\u4f20\u9012\uff0c\u4e5f\u53ef\u4ee5\u5c06sign\u653e\u5230\u8bf7\u6c42\u5934\u4e2d\u3002\u63a5\u53e3\u5728\u7f51\u7edc\u4f20\u8f93\u8fc7\u7a0b\u4e2d\u5982\u679c\u88ab\u9ed1\u5ba2\u631f\u6301\uff0c\u5e76\u4fee\u6539\u5176\u4e2d\u7684\u53c2\u6570\u503c\uff0c\u7136\u540e\u518d\u7ee7\u7eed\u8c03\u7528\u63a5\u53e3\uff0c\u867d\u7136\u53c2\u6570\u7684\u503c\u88ab\u4fee\u6539\u4e86\uff0c\u4f46\u662f\u56e0\u4e3a\u9ed1\u5ba2\u4e0d\u77e5\u9053sign\u662f\u5982\u4f55\u8ba1\u7b97\u51fa\u6765\u7684\uff0c\u4e0d\u77e5\u9053sign\u90fd\u6709\u54ea\u4e9b\u503c\u6784\u6210\uff0c\u4e0d\u77e5\u9053\u4ee5\u600e\u6837\u7684\u987a\u5e8f\u62fc\u63a5\u5728\u4e00\u8d77\u7684\uff0c\u6700\u91cd\u8981\u7684\u662f\u4e0d\u77e5\u9053\u7b7e\u540d\u5b57\u7b26\u4e32\u4e2d\u7684key\u662f\u4ec0\u4e48\uff0c\u6240\u4ee5\u9ed1\u5ba2\u53ef\u4ee5\u7be1\u6539\u53c2\u6570\u7684\u503c\uff0c\u4f46\u6ca1\u6cd5\u4fee\u6539sign\u7684\u503c\uff0c\u5f53\u670d\u52a1\u5668\u8c03\u7528\u63a5\u53e3\u524d\u4f1a\u6309\u7167sign\u7684\u89c4\u5219\u91cd\u65b0\u8ba1\u7b97\u51fasign\u7684\u503c\u7136\u540e\u548c\u63a5\u53e3\u4f20\u9012\u7684sign\u53c2\u6570\u7684\u503c\u505a\u6bd4\u8f83\uff0c\u5982\u679c\u76f8\u7b49\u8868\u793a\u53c2\u6570\u503c\u6ca1\u6709\u88ab\u7be1\u6539\uff0c\u5982\u679c\u4e0d\u7b49\uff0c\u8868\u793a\u53c2\u6570\u88ab\u975e\u6cd5\u7be1\u6539\u4e86\uff0c\u5c31\u4e0d\u6267\u884c\u63a5\u53e3\u4e86\u3002<\/p>\n<h3 style=\"margin-top: 1.3em;margin-bottom: 1.3em;outline: 0px;font-weight: bold;font-size: 1.1em;color: inherit;font-family: system-ui, -apple-system, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;letter-spacing: 0.544px;white-space: normal;background-color: rgb(255, 255, 255);line-height: inherit;border-bottom: 2px solid rgb(65, 105, 225);\"><span style=\"margin-right: 3px;padding-top: 3px;padding-right: 6px;padding-left: 6px;outline: 0px;font-size: inherit;line-height: inherit;display: inline-block;font-weight: normal;background: rgb(65, 105, 225);color: rgb(255, 255, 255);border-top-right-radius: 3px;border-top-left-radius: 3px;\">\u9632\u6b62\u91cd\u590d\u63d0\u4ea4<\/span><\/h3>\n<p style=\"margin-top: 1.3em;margin-bottom: 1.3em;outline: 0px;color: inherit;font-family: system-ui, -apple-system, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;font-size: inherit;letter-spacing: 0.544px;white-space: normal;background-color: rgb(255, 255, 255);line-height: inherit;\">\u5bf9\u4e8e\u4e00\u4e9b\u91cd\u8981\u7684\u64cd\u4f5c\u9700\u8981\u9632\u6b62\u5ba2\u6237\u7aef\u91cd\u590d\u63d0\u4ea4\u7684(\u5982\u975e\u5e42\u7b49\u6027\u91cd\u8981\u64cd\u4f5c)\uff0c\u5177\u4f53\u529e\u6cd5\u662f\u5f53\u8bf7\u6c42\u7b2c\u4e00\u6b21\u63d0\u4ea4\u65f6\u5c06sign\u4f5c\u4e3akey\u4fdd\u5b58\u5230redis\uff0c\u5e76\u8bbe\u7f6e\u8d85\u65f6\u65f6\u95f4\uff0c\u8d85\u65f6\u65f6\u95f4\u548cTimestamp\u4e2d\u8bbe\u7f6e\u7684\u5dee\u503c\u76f8\u540c\u3002\u5f53\u540c\u4e00\u4e2a\u8bf7\u6c42\u7b2c\u4e8c\u6b21\u8bbf\u95ee\u65f6\u4f1a\u5148\u68c0\u6d4bredis\u662f\u5426\u5b58\u5728\u8be5sign\uff0c\u5982\u679c\u5b58\u5728\u5219\u8bc1\u660e\u91cd\u590d\u63d0\u4ea4\u4e86\uff0c\u63a5\u53e3\u5c31\u4e0d\u518d\u7ee7\u7eed\u8c03\u7528\u4e86\u3002\u5982\u679csign\u5728\u7f13\u5b58\u670d\u52a1\u5668\u4e2d\u56e0\u8fc7\u671f\u65f6\u95f4\u5230\u4e86\uff0c\u800c\u88ab\u5220\u9664\u4e86\uff0c\u6b64\u65f6\u5f53\u8fd9\u4e2aurl\u518d\u6b21\u8bf7\u6c42\u670d\u52a1\u5668\u65f6\uff0c\u56e0token\u7684\u8fc7\u671f\u65f6\u95f4\u548csign\u7684\u8fc7\u671f\u65f6\u95f4\u4e00\u76f4\uff0csign\u8fc7\u671f\u4e5f\u610f\u5473\u7740token\u8fc7\u671f\uff0c\u90a3\u6837\u540c\u6837\u7684url\u518d\u8bbf\u95ee\u670d\u52a1\u5668\u4f1a\u56e0token\u9519\u8bef\u4f1a\u88ab\u62e6\u622a\u6389\uff0c\u8fd9\u5c31\u662f\u4e3a\u4ec0\u4e48sign\u548ctoken\u7684\u8fc7\u671f\u65f6\u95f4\u8981\u4fdd\u6301\u4e00\u81f4\u7684\u539f\u56e0\u3002\u62d2\u7edd\u91cd\u590d\u8c03\u7528\u673a\u5236\u786e\u4fddURL\u88ab\u522b\u4eba\u622a\u83b7\u4e86\u4e5f\u65e0\u6cd5\u4f7f\u7528\uff08\u5982\u6293\u53d6\u6570\u636e\uff09\u3002<\/p>\n<p style=\"margin-top: 1.3em;margin-bottom: 1.3em;outline: 0px;color: inherit;font-family: system-ui, -apple-system, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;font-size: inherit;letter-spacing: 0.544px;white-space: normal;background-color: rgb(255, 255, 255);line-height: inherit;\">\u5bf9\u4e8e\u54ea\u4e9b\u63a5\u53e3\u9700\u8981\u9632\u6b62\u91cd\u590d\u63d0\u4ea4\u53ef\u4ee5\u81ea\u5b9a\u4e49\u4e2a\u6ce8\u89e3\u6765\u6807\u8bb0\u3002<\/p>\n<blockquote style=\"margin-top: 0.5em;margin-bottom: 0.5em;padding: 5px 15px 5px 1rem;outline: 0px;border-left-width: 4px;border-left-color: rgb(65, 105, 225);color: rgb(33, 37, 41);font-size: 0.8em;overflow-wrap: normal;font-family: system-ui, -apple-system, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;letter-spacing: 0.544px;white-space: normal;line-height: inherit;background: rgb(242, 247, 251);overflow: auto;word-break: normal;\">\n<p style=\"outline: 0px;font-size: inherit;color: inherit;line-height: inherit;\">\u6ce8\u610f\uff1a\u6240\u6709\u7684\u5b89\u5168\u63aa\u65bd\u90fd\u7528\u4e0a\u7684\u8bdd\u6709\u65f6\u5019\u96be\u514d\u592a\u8fc7\u590d\u6742\uff0c\u5728\u5b9e\u9645\u9879\u76ee\u4e2d\u9700\u8981\u6839\u636e\u81ea\u8eab\u60c5\u51b5\u4f5c\u51fa\u88c1\u526a\uff0c\u6bd4\u5982\u53ef\u4ee5\u53ea\u4f7f\u7528\u7b7e\u540d\u673a\u5236\u5c31\u53ef\u4ee5\u4fdd\u8bc1\u4fe1\u606f\u4e0d\u4f1a\u88ab\u7be1\u6539\uff0c\u6216\u8005\u5b9a\u5411\u63d0\u4f9b\u670d\u52a1\u7684\u65f6\u5019\u53ea\u7528Token\u673a\u5236\u5c31\u53ef\u4ee5\u4e86\u3002\u5982\u4f55\u88c1\u526a\uff0c\u5168\u770b\u9879\u76ee\u5b9e\u9645\u60c5\u51b5\u548c\u5bf9\u63a5\u53e3\u5b89\u5168\u6027\u7684\u8981\u6c42\u3002<\/p>\n<\/blockquote>\n<h3 style=\"margin-top: 1.3em;margin-bottom: 1.3em;outline: 0px;font-weight: bold;font-size: 1.1em;color: inherit;font-family: system-ui, -apple-system, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;letter-spacing: 0.544px;white-space: normal;background-color: rgb(255, 255, 255);line-height: inherit;border-bottom: 2px solid rgb(65, 105, 225);\"><span style=\"margin-right: 3px;padding-top: 3px;padding-right: 6px;padding-left: 6px;outline: 0px;font-size: inherit;line-height: inherit;display: inline-block;font-weight: normal;background: rgb(65, 105, 225);color: rgb(255, 255, 255);border-top-right-radius: 3px;border-top-left-radius: 3px;\">\u4f7f\u7528\u6d41\u7a0b<\/span><\/h3>\n<p style=\"margin-top: 1.3em;margin-bottom: 1.3em;outline: 0px;color: inherit;font-family: system-ui, -apple-system, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;font-size: inherit;letter-spacing: 0.544px;white-space: normal;background-color: rgb(255, 255, 255);line-height: inherit;\">\u63a5\u53e3\u8c03\u7528\u65b9(\u5ba2\u6237\u7aef)\u5411\u63a5\u53e3\u63d0\u4f9b\u65b9(\u670d\u52a1\u5668)\u7533\u8bf7\u63a5\u53e3\u8c03\u7528\u8d26\u53f7\uff0c\u7533\u8bf7\u6210\u529f\u540e\uff0c\u63a5\u53e3\u63d0\u4f9b\u65b9\u4f1a\u7ed9\u63a5\u53e3\u8c03\u7528\u65b9\u4e00\u4e2aappId\u548c\u4e00\u4e2akey\u53c2\u6570<\/p>\n<p style=\"margin-top: 1.3em;margin-bottom: 1.3em;outline: 0px;color: inherit;font-family: system-ui, -apple-system, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;font-size: inherit;letter-spacing: 0.544px;white-space: normal;background-color: rgb(255, 255, 255);line-height: inherit;\">\u5ba2\u6237\u7aef\u643a\u5e26\u53c2\u6570appId\u3001timestamp\u3001sign\u53bb\u8c03\u7528\u670d\u52a1\u5668\u7aef\u7684API token\uff0c\u5176\u4e2dsign=\u52a0\u5bc6(appId + timestamp + key)<\/p>\n<p style=\"margin-top: 1.3em;margin-bottom: 1.3em;outline: 0px;color: inherit;font-family: system-ui, -apple-system, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;font-size: inherit;letter-spacing: 0.544px;white-space: normal;background-color: rgb(255, 255, 255);line-height: inherit;\">\u5ba2\u6237\u7aef\u62ff\u7740api_token \u53bb\u8bbf\u95ee\u4e0d\u9700\u8981\u767b\u5f55\u5c31\u80fd\u8bbf\u95ee\u7684\u63a5\u53e3<\/p>\n<p style=\"margin-top: 1.3em;margin-bottom: 1.3em;outline: 0px;color: inherit;font-family: system-ui, -apple-system, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;font-size: inherit;letter-spacing: 0.544px;white-space: normal;background-color: rgb(255, 255, 255);line-height: inherit;\">\u5f53\u8bbf\u95ee\u7528\u6237\u9700\u8981\u767b\u5f55\u7684\u63a5\u53e3\u65f6\uff0c\u5ba2\u6237\u7aef\u8df3\u8f6c\u5230\u767b\u5f55\u9875\u9762\uff0c\u901a\u8fc7\u7528\u6237\u540d\u548c\u5bc6\u7801\u8c03\u7528\u767b\u5f55\u63a5\u53e3\uff0c\u767b\u5f55\u63a5\u53e3\u4f1a\u8fd4\u56de\u4e00\u4e2ausertoken, \u5ba2\u6237\u7aef\u62ff\u7740usertoken \u53bb\u8bbf\u95ee\u9700\u8981\u767b\u5f55\u624d\u80fd\u8bbf\u95ee\u7684\u63a5\u53e3<\/p>\n<p style=\"margin-top: 1.3em;margin-bottom: 1.3em;outline: 0px;color: inherit;font-family: system-ui, -apple-system, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;font-size: inherit;letter-spacing: 0.544px;white-space: normal;background-color: rgb(255, 255, 255);line-height: inherit;\">sign\u7684\u4f5c\u7528\u662f\u9632\u6b62\u53c2\u6570\u88ab\u7be1\u6539\uff0c\u5ba2\u6237\u7aef\u8c03\u7528\u670d\u52a1\u7aef\u65f6\u9700\u8981\u4f20\u9012sign\u53c2\u6570\uff0c\u670d\u52a1\u5668\u54cd\u5e94\u5ba2\u6237\u7aef\u65f6\u4e5f\u53ef\u4ee5\u8fd4\u56de\u4e00\u4e2asign\u7528\u4e8e\u5ba2\u6237\u5ea6\u6821\u9a8c\u8fd4\u56de\u7684\u503c\u662f\u5426\u88ab\u975e\u6cd5\u7be1\u6539\u4e86\u3002\u5ba2\u6237\u7aef\u4f20\u7684sign\u548c\u670d\u52a1\u5668\u7aef\u54cd\u5e94\u7684sign\u7b97\u6cd5\u53ef\u80fd\u4f1a\u4e0d\u540c\u3002<\/p>\n<p style=\"margin-top: 1.3em;margin-bottom: 1.3em;outline: 0px;color: inherit;font-family: system-ui, -apple-system, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;font-size: inherit;letter-spacing: 0.544px;white-space: normal;background-color: rgb(255, 255, 255);line-height: inherit;\">\u793a\u4f8b\u4ee3\u7801<\/p>\n<p style=\"margin-top: 1.3em;margin-bottom: 1.3em;outline: 0px;color: inherit;font-family: system-ui, -apple-system, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;font-size: inherit;letter-spacing: 0.544px;white-space: normal;background-color: rgb(255, 255, 255);line-height: inherit;\">dependency<\/p>\n<pre style=\"outline: 0px;color: inherit;font-size: inherit;letter-spacing: 0.544px;background-color: rgb(255, 255, 255);line-height: inherit;\"><code style=\"margin-right: 2px;margin-left: 2px;padding: 0.5em;outline: 0px;line-height: 18px;font-size: 13px;letter-spacing: 0px;font-family: Consolas, Inconsolata, Courier, monospace;border-radius: 0px;color: rgb(169, 183, 198);background: rgb(40, 43, 46);overflow-wrap: normal !important;word-break: normal !important;overflow: auto !important;display: -webkit-box !important;\"><span style=\"outline: 0px;font-size: inherit;color: inherit;line-height: inherit;overflow-wrap: inherit !important;word-break: inherit !important;\">&lt;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">dependency<\/span>&gt;<\/span><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;color: inherit;line-height: inherit;overflow-wrap: inherit !important;word-break: inherit !important;\">&lt;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">groupId<\/span>&gt;<\/span>org.springframework.boot<span style=\"outline: 0px;font-size: inherit;color: inherit;line-height: inherit;overflow-wrap: inherit !important;word-break: inherit !important;\">&lt;\/<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">groupId<\/span>&gt;<\/span><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;color: inherit;line-height: inherit;overflow-wrap: inherit !important;word-break: inherit !important;\">&lt;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">artifactId<\/span>&gt;<\/span>spring-boot-starter-data-redis<span style=\"outline: 0px;font-size: inherit;color: inherit;line-height: inherit;overflow-wrap: inherit !important;word-break: inherit !important;\">&lt;\/<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">artifactId<\/span>&gt;<\/span><br style=\"outline: 0px;\"  \/><span style=\"outline: 0px;font-size: inherit;color: inherit;line-height: inherit;overflow-wrap: inherit !important;word-break: inherit !important;\">&lt;\/<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">dependency<\/span>&gt;<\/span><br style=\"outline: 0px;\"  \/><span style=\"outline: 0px;font-size: inherit;color: inherit;line-height: inherit;overflow-wrap: inherit !important;word-break: inherit !important;\">&lt;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">dependency<\/span>&gt;<\/span><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;color: inherit;line-height: inherit;overflow-wrap: inherit !important;word-break: inherit !important;\">&lt;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">groupId<\/span>&gt;<\/span>redis.clients<span style=\"outline: 0px;font-size: inherit;color: inherit;line-height: inherit;overflow-wrap: inherit !important;word-break: inherit !important;\">&lt;\/<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">groupId<\/span>&gt;<\/span><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;color: inherit;line-height: inherit;overflow-wrap: inherit !important;word-break: inherit !important;\">&lt;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">artifactId<\/span>&gt;<\/span>jedis<span style=\"outline: 0px;font-size: inherit;color: inherit;line-height: inherit;overflow-wrap: inherit !important;word-break: inherit !important;\">&lt;\/<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">artifactId<\/span>&gt;<\/span><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;color: inherit;line-height: inherit;overflow-wrap: inherit !important;word-break: inherit !important;\">&lt;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">version<\/span>&gt;<\/span>2.9.0<span style=\"outline: 0px;font-size: inherit;color: inherit;line-height: inherit;overflow-wrap: inherit !important;word-break: inherit !important;\">&lt;\/<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">version<\/span>&gt;<\/span><br style=\"outline: 0px;\"  \/><span style=\"outline: 0px;font-size: inherit;color: inherit;line-height: inherit;overflow-wrap: inherit !important;word-break: inherit !important;\">&lt;\/<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">dependency<\/span>&gt;<\/span><br style=\"outline: 0px;\"  \/><br style=\"outline: 0px;\"  \/><span style=\"outline: 0px;font-size: inherit;color: inherit;line-height: inherit;overflow-wrap: inherit !important;word-break: inherit !important;\">&lt;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">dependency<\/span>&gt;<\/span><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;color: inherit;line-height: inherit;overflow-wrap: inherit !important;word-break: inherit !important;\">&lt;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">groupId<\/span>&gt;<\/span>org.springframework.boot<span style=\"outline: 0px;font-size: inherit;color: inherit;line-height: inherit;overflow-wrap: inherit !important;word-break: inherit !important;\">&lt;\/<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">groupId<\/span>&gt;<\/span><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;color: inherit;line-height: inherit;overflow-wrap: inherit !important;word-break: inherit !important;\">&lt;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">artifactId<\/span>&gt;<\/span>spring-boot-starter-web<span style=\"outline: 0px;font-size: inherit;color: inherit;line-height: inherit;overflow-wrap: inherit !important;word-break: inherit !important;\">&lt;\/<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">artifactId<\/span>&gt;<\/span><br style=\"outline: 0px;\"  \/><span style=\"outline: 0px;font-size: inherit;color: inherit;line-height: inherit;overflow-wrap: inherit !important;word-break: inherit !important;\">&lt;\/<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">dependency<\/span>&gt;<\/span><br style=\"outline: 0px;\"  \/><\/code><\/pre>\n<p style=\"margin-top: 1.3em;margin-bottom: 1.3em;outline: 0px;color: inherit;font-family: system-ui, -apple-system, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;font-size: inherit;letter-spacing: 0.544px;white-space: normal;background-color: rgb(255, 255, 255);line-height: inherit;\">RedisConfiguration<\/p>\n<pre style=\"outline: 0px;color: inherit;font-size: inherit;letter-spacing: 0.544px;background-color: rgb(255, 255, 255);line-height: inherit;\"><code style=\"margin-right: 2px;margin-left: 2px;padding: 0.5em;outline: 0px;line-height: 18px;font-size: 13px;letter-spacing: 0px;font-family: Consolas, Inconsolata, Courier, monospace;border-radius: 0px;color: rgb(169, 183, 198);background: rgb(40, 43, 46);overflow-wrap: normal !important;word-break: normal !important;overflow: auto !important;display: -webkit-box !important;\"><span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(91, 218, 237);overflow-wrap: inherit !important;word-break: inherit !important;\">@Configuration<\/span><br style=\"outline: 0px;\"  \/><span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">public<\/span>&nbsp;<span style=\"outline: 0px;font-size: inherit;color: inherit;line-height: inherit;overflow-wrap: inherit !important;word-break: inherit !important;\"><span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">class<\/span>&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(165, 218, 45);overflow-wrap: inherit !important;word-break: inherit !important;\">RedisConfiguration<\/span>&nbsp;<\/span>{<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(91, 218, 237);overflow-wrap: inherit !important;word-break: inherit !important;\">@Bean<\/span><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\"><span style=\"outline: 0px;font-size: inherit;line-height: inherit;overflow-wrap: inherit !important;word-break: inherit !important;\">public<\/span>&nbsp;JedisConnectionFactory&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(165, 218, 45);overflow-wrap: inherit !important;word-break: inherit !important;\">jedisConnectionFactory<\/span><span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(255, 152, 35);overflow-wrap: inherit !important;word-break: inherit !important;\">()<\/span><\/span>{<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">return<\/span>&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">new<\/span>&nbsp;JedisConnectionFactory();<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;}<br style=\"outline: 0px;\"  \/><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);overflow-wrap: inherit !important;word-break: inherit !important;\">\/**<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;\u652f\u6301\u5b58\u50a8\u5bf9\u8c61<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;<span style=\"outline: 0px;font-size: inherit;color: inherit;line-height: inherit;overflow-wrap: inherit !important;word-break: inherit !important;\">@return<\/span><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*\/<\/span><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(91, 218, 237);overflow-wrap: inherit !important;word-break: inherit !important;\">@Bean<\/span><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\"><span style=\"outline: 0px;font-size: inherit;line-height: inherit;overflow-wrap: inherit !important;word-break: inherit !important;\">public<\/span>&nbsp;RedisTemplate&lt;String,&nbsp;String&gt;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(165, 218, 45);overflow-wrap: inherit !important;word-break: inherit !important;\">redisTemplate<\/span><span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(255, 152, 35);overflow-wrap: inherit !important;word-break: inherit !important;\">()<\/span><\/span>{<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RedisTemplate&lt;String,&nbsp;String&gt;&nbsp;redisTemplate&nbsp;=&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">new<\/span>&nbsp;StringRedisTemplate();<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;redisTemplate.setConnectionFactory(jedisConnectionFactory());<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Jackson2JsonRedisSerializer&nbsp;jackson2JsonRedisSerializer&nbsp;=&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">new<\/span>&nbsp;Jackson2JsonRedisSerializer(Object.class);<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ObjectMapper&nbsp;objectMapper&nbsp;=&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">new<\/span>&nbsp;ObjectMapper();<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;objectMapper.setVisibility(PropertyAccessor.ALL,&nbsp;JsonAutoDetect.Visibility.ANY);<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);<br style=\"outline: 0px;\"  \/><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jackson2JsonRedisSerializer.setObjectMapper(objectMapper);<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;redisTemplate.afterPropertiesSet();<br style=\"outline: 0px;\"  \/><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">return<\/span>&nbsp;redisTemplate;<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;}<br style=\"outline: 0px;\"  \/>}<br style=\"outline: 0px;\"  \/><\/code><\/pre>\n<p style=\"margin-top: 1.3em;margin-bottom: 1.3em;outline: 0px;color: inherit;font-family: system-ui, -apple-system, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;font-size: inherit;letter-spacing: 0.544px;white-space: normal;background-color: rgb(255, 255, 255);line-height: inherit;\">TokenController<\/p>\n<pre style=\"outline: 0px;color: inherit;font-size: inherit;letter-spacing: 0.544px;background-color: rgb(255, 255, 255);line-height: inherit;\"><code style=\"margin-right: 2px;margin-left: 2px;padding: 0.5em;outline: 0px;line-height: 18px;font-size: 13px;letter-spacing: 0px;font-family: Consolas, Inconsolata, Courier, monospace;border-radius: 0px;color: rgb(169, 183, 198);background: rgb(40, 43, 46);overflow-wrap: normal !important;word-break: normal !important;overflow: auto !important;display: -webkit-box !important;\"><span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(91, 218, 237);overflow-wrap: inherit !important;word-break: inherit !important;\">@Slf4j<\/span><br style=\"outline: 0px;\"  \/><span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(91, 218, 237);overflow-wrap: inherit !important;word-break: inherit !important;\">@RestController<\/span><br style=\"outline: 0px;\"  \/><span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(91, 218, 237);overflow-wrap: inherit !important;word-break: inherit !important;\">@RequestMapping(<span style=\"outline: 0px;font-size: inherit;color: inherit;line-height: inherit;overflow-wrap: inherit !important;word-break: inherit !important;\">\"\/api\/token\"<\/span>)<\/span><br style=\"outline: 0px;\"  \/><span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">public<\/span>&nbsp;<span style=\"outline: 0px;font-size: inherit;color: inherit;line-height: inherit;overflow-wrap: inherit !important;word-break: inherit !important;\"><span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">class<\/span>&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(165, 218, 45);overflow-wrap: inherit !important;word-break: inherit !important;\">TokenController<\/span>&nbsp;<\/span>{<br style=\"outline: 0px;\"  \/><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(91, 218, 237);overflow-wrap: inherit !important;word-break: inherit !important;\">@Autowired<\/span><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">private<\/span>&nbsp;RedisTemplate&nbsp;redisTemplate;<br style=\"outline: 0px;\"  \/><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);overflow-wrap: inherit !important;word-break: inherit !important;\">\/**<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;API&nbsp;Token<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;<span style=\"outline: 0px;font-size: inherit;color: inherit;line-height: inherit;overflow-wrap: inherit !important;word-break: inherit !important;\">@param<\/span>&nbsp;sign<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;<span style=\"outline: 0px;font-size: inherit;color: inherit;line-height: inherit;overflow-wrap: inherit !important;word-break: inherit !important;\">@return<\/span><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*\/<\/span><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(91, 218, 237);overflow-wrap: inherit !important;word-break: inherit !important;\">@PostMapping(<span style=\"outline: 0px;font-size: inherit;color: inherit;line-height: inherit;overflow-wrap: inherit !important;word-break: inherit !important;\">\"\/api_token\"<\/span>)<\/span><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">public<\/span>&nbsp;ApiResponse&lt;AccessToken&gt;&nbsp;apiToken(String&nbsp;appId,&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(91, 218, 237);overflow-wrap: inherit !important;word-break: inherit !important;\">@RequestHeader(<span style=\"outline: 0px;font-size: inherit;color: inherit;line-height: inherit;overflow-wrap: inherit !important;word-break: inherit !important;\">\"timestamp\"<\/span>)<\/span>&nbsp;String&nbsp;timestamp,&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(91, 218, 237);overflow-wrap: inherit !important;word-break: inherit !important;\">@RequestHeader(<span style=\"outline: 0px;font-size: inherit;color: inherit;line-height: inherit;overflow-wrap: inherit !important;word-break: inherit !important;\">\"sign\"<\/span>)<\/span>&nbsp;String&nbsp;sign)&nbsp;{<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Assert.isTrue(!StringUtils.isEmpty(appId)&nbsp;&amp;&amp;&nbsp;!StringUtils.isEmpty(timestamp)&nbsp;&amp;&amp;&nbsp;!StringUtils.isEmpty(sign),&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);overflow-wrap: inherit !important;word-break: inherit !important;\">\"\u53c2\u6570\u9519\u8bef\"<\/span>);<br style=\"outline: 0px;\"  \/><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;long&nbsp;reqeustInterval&nbsp;=&nbsp;System.currentTimeMillis()&nbsp;-&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">Long<\/span>.valueOf(timestamp);<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Assert.isTrue(reqeustInterval&nbsp;&lt;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(174, 135, 250);overflow-wrap: inherit !important;word-break: inherit !important;\">5<\/span>&nbsp;*&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(174, 135, 250);overflow-wrap: inherit !important;word-break: inherit !important;\">60<\/span>&nbsp;*&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(174, 135, 250);overflow-wrap: inherit !important;word-break: inherit !important;\">1000<\/span>,&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);overflow-wrap: inherit !important;word-break: inherit !important;\">\"\u8bf7\u6c42\u8fc7\u671f\uff0c\u8bf7\u91cd\u65b0\u8bf7\u6c42\"<\/span>);<br style=\"outline: 0px;\"  \/><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);overflow-wrap: inherit !important;word-break: inherit !important;\">\/\/&nbsp;1.&nbsp;\u6839\u636eappId\u67e5\u8be2\u6570\u636e\u5e93\u83b7\u53d6appSecret<\/span><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AppInfo&nbsp;appInfo&nbsp;=&nbsp;new&nbsp;AppInfo(<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);overflow-wrap: inherit !important;word-break: inherit !important;\">\"1\"<\/span>,&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);overflow-wrap: inherit !important;word-break: inherit !important;\">\"12345678954556\"<\/span>);<br style=\"outline: 0px;\"  \/><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);overflow-wrap: inherit !important;word-break: inherit !important;\">\/\/&nbsp;2.&nbsp;\u6821\u9a8c\u7b7e\u540d<\/span><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;signString&nbsp;=&nbsp;timestamp&nbsp;+&nbsp;appId&nbsp;+&nbsp;appInfo.getKey();<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;signature&nbsp;=&nbsp;MD5Util.encode(signString);<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log.info(signature);<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Assert.isTrue(signature.equals(sign),&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);overflow-wrap: inherit !important;word-break: inherit !important;\">\"\u7b7e\u540d\u9519\u8bef\"<\/span>);<br style=\"outline: 0px;\"  \/><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);overflow-wrap: inherit !important;word-break: inherit !important;\">\/\/&nbsp;3.&nbsp;\u5982\u679c\u6b63\u786e\u751f\u6210\u4e00\u4e2atoken\u4fdd\u5b58\u5230redis\u4e2d\uff0c\u5982\u679c\u9519\u8bef\u8fd4\u56de\u9519\u8bef\u4fe1\u606f<\/span><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AccessToken&nbsp;accessToken&nbsp;=&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">this<\/span>.saveToken(<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(174, 135, 250);overflow-wrap: inherit !important;word-break: inherit !important;\">0<\/span>,&nbsp;appInfo,&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(174, 135, 250);overflow-wrap: inherit !important;word-break: inherit !important;\">null<\/span>);<br style=\"outline: 0px;\"  \/><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">return<\/span>&nbsp;ApiResponse.success(accessToken);<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;}<br style=\"outline: 0px;\"  \/><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(91, 218, 237);overflow-wrap: inherit !important;word-break: inherit !important;\">@NotRepeatSubmit(5000)<\/span><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(91, 218, 237);overflow-wrap: inherit !important;word-break: inherit !important;\">@PostMapping(<span style=\"outline: 0px;font-size: inherit;color: inherit;line-height: inherit;overflow-wrap: inherit !important;word-break: inherit !important;\">\"user_token\"<\/span>)<\/span><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">public<\/span>&nbsp;ApiResponse&lt;UserInfo&gt;&nbsp;userToken(String&nbsp;username,&nbsp;String&nbsp;password)&nbsp;{<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);overflow-wrap: inherit !important;word-break: inherit !important;\">\/\/&nbsp;\u6839\u636e\u7528\u6237\u540d\u67e5\u8be2\u5bc6\u7801,&nbsp;\u5e76\u6bd4\u8f83\u5bc6\u7801(\u5bc6\u7801\u53ef\u4ee5RSA\u52a0\u5bc6\u4e00\u4e0b)<\/span><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UserInfo&nbsp;userInfo&nbsp;=&nbsp;new&nbsp;UserInfo(username,&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);overflow-wrap: inherit !important;word-break: inherit !important;\">\"81255cb0dca1a5f304328a70ac85dcbd\"<\/span>,&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);overflow-wrap: inherit !important;word-break: inherit !important;\">\"111111\"<\/span>);<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;pwd&nbsp;=&nbsp;password&nbsp;+&nbsp;userInfo.getSalt();<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;passwordMD5&nbsp;=&nbsp;MD5Util.encode(pwd);<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Assert.isTrue(passwordMD5.equals(userInfo.getPassword()),&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);overflow-wrap: inherit !important;word-break: inherit !important;\">\"\u5bc6\u7801\u9519\u8bef\"<\/span>);<br style=\"outline: 0px;\"  \/><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);overflow-wrap: inherit !important;word-break: inherit !important;\">\/\/&nbsp;2.&nbsp;\u4fdd\u5b58Token<\/span><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AppInfo&nbsp;appInfo&nbsp;=&nbsp;new&nbsp;AppInfo(<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);overflow-wrap: inherit !important;word-break: inherit !important;\">\"1\"<\/span>,&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);overflow-wrap: inherit !important;word-break: inherit !important;\">\"12345678954556\"<\/span>);<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AccessToken&nbsp;accessToken&nbsp;=&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">this<\/span>.saveToken(<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(174, 135, 250);overflow-wrap: inherit !important;word-break: inherit !important;\">1<\/span>,&nbsp;appInfo,&nbsp;userInfo);<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;userInfo.setAccessToken(accessToken);<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">return<\/span>&nbsp;ApiResponse.success(userInfo);<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;}<br style=\"outline: 0px;\"  \/><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">private<\/span>&nbsp;AccessToken&nbsp;saveToken(int&nbsp;tokenType,&nbsp;AppInfo&nbsp;appInfo,&nbsp;&nbsp;UserInfo&nbsp;userInfo)&nbsp;{<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;token&nbsp;=&nbsp;UUID.randomUUID().toString();<br style=\"outline: 0px;\"  \/><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);overflow-wrap: inherit !important;word-break: inherit !important;\">\/\/&nbsp;token\u6709\u6548\u671f\u4e3a2\u5c0f\u65f6<\/span><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Calendar&nbsp;calendar&nbsp;=&nbsp;Calendar.getInstance();<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;calendar.setTime(new&nbsp;Date());<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;calendar.add(Calendar.SECOND,&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(174, 135, 250);overflow-wrap: inherit !important;word-break: inherit !important;\">7200<\/span>);<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Date&nbsp;expireTime&nbsp;=&nbsp;calendar.getTime();<br style=\"outline: 0px;\"  \/><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);overflow-wrap: inherit !important;word-break: inherit !important;\">\/\/&nbsp;4.&nbsp;\u4fdd\u5b58token<\/span><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ValueOperations&lt;String,&nbsp;TokenInfo&gt;&nbsp;operations&nbsp;=&nbsp;redisTemplate.opsForValue();<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TokenInfo&nbsp;tokenInfo&nbsp;=&nbsp;new&nbsp;TokenInfo();<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tokenInfo.setTokenType(tokenType);<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tokenInfo.setAppInfo(appInfo);<br style=\"outline: 0px;\"  \/><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">if<\/span>&nbsp;(tokenType&nbsp;==&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(174, 135, 250);overflow-wrap: inherit !important;word-break: inherit !important;\">1<\/span>)&nbsp;{<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tokenInfo.setUserInfo(userInfo);<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br style=\"outline: 0px;\"  \/><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;operations.<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">set<\/span>(token,&nbsp;tokenInfo,&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(174, 135, 250);overflow-wrap: inherit !important;word-break: inherit !important;\">7200<\/span>,&nbsp;TimeUnit.SECONDS);<br style=\"outline: 0px;\"  \/><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AccessToken&nbsp;accessToken&nbsp;=&nbsp;new&nbsp;AccessToken(token,&nbsp;expireTime);<br style=\"outline: 0px;\"  \/><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">return<\/span>&nbsp;accessToken;<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;}<br style=\"outline: 0px;\"  \/><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">public<\/span>&nbsp;static&nbsp;void&nbsp;main(String[]&nbsp;args)&nbsp;{<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;long&nbsp;timestamp&nbsp;=&nbsp;System.currentTimeMillis();<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">out<\/span>.println(timestamp);<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;signString&nbsp;=&nbsp;timestamp&nbsp;+&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);overflow-wrap: inherit !important;word-break: inherit !important;\">\"1\"<\/span>&nbsp;+&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);overflow-wrap: inherit !important;word-break: inherit !important;\">\"12345678954556\"<\/span>;<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;sign&nbsp;=&nbsp;MD5Util.encode(signString);<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">out<\/span>.println(sign);<br style=\"outline: 0px;\"  \/><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">out<\/span>.println(<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);overflow-wrap: inherit !important;word-break: inherit !important;\">\"-------------------\"<\/span>);<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;signString&nbsp;=&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);overflow-wrap: inherit !important;word-break: inherit !important;\">\"password=123456&amp;username=1&amp;12345678954556\"<\/span>&nbsp;+&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);overflow-wrap: inherit !important;word-break: inherit !important;\">\"ff03e64b-427b-45a7-b78b-47d9e8597d3b1529815393153sdfsdfsfs\"<\/span>&nbsp;+&nbsp;timestamp&nbsp;+&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);overflow-wrap: inherit !important;word-break: inherit !important;\">\"A1scr6\"<\/span>;<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sign&nbsp;=&nbsp;MD5Util.encode(signString);<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">out<\/span>.println(sign);<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;}<br style=\"outline: 0px;\"  \/>}<br style=\"outline: 0px;\"  \/><\/code><\/pre>\n<p style=\"margin-top: 1.3em;margin-bottom: 1.3em;outline: 0px;color: inherit;font-family: system-ui, -apple-system, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;font-size: inherit;letter-spacing: 0.544px;white-space: normal;background-color: rgb(255, 255, 255);line-height: inherit;\">WebMvcConfiguration<\/p>\n<pre style=\"outline: 0px;color: inherit;font-size: inherit;letter-spacing: 0.544px;background-color: rgb(255, 255, 255);line-height: inherit;\"><code style=\"margin-right: 2px;margin-left: 2px;padding: 0.5em;outline: 0px;line-height: 18px;font-size: 13px;letter-spacing: 0px;font-family: Consolas, Inconsolata, Courier, monospace;border-radius: 0px;color: rgb(169, 183, 198);background: rgb(40, 43, 46);overflow-wrap: normal !important;word-break: normal !important;overflow: auto !important;display: -webkit-box !important;\"><span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(91, 218, 237);overflow-wrap: inherit !important;word-break: inherit !important;\">@Configuration<\/span><br style=\"outline: 0px;\"  \/><span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">public<\/span>&nbsp;<span style=\"outline: 0px;font-size: inherit;color: inherit;line-height: inherit;overflow-wrap: inherit !important;word-break: inherit !important;\"><span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">class<\/span>&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(165, 218, 45);overflow-wrap: inherit !important;word-break: inherit !important;\">WebMvcConfiguration<\/span>&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">extends<\/span>&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(165, 218, 45);overflow-wrap: inherit !important;word-break: inherit !important;\">WebMvcConfigurationSupport<\/span>&nbsp;<\/span>{<br style=\"outline: 0px;\"  \/><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">private<\/span>&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">static<\/span>&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">final<\/span>&nbsp;String[]&nbsp;excludePathPatterns&nbsp;&nbsp;=&nbsp;{<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);overflow-wrap: inherit !important;word-break: inherit !important;\">\"\/api\/token\/api_token\"<\/span>};<br style=\"outline: 0px;\"  \/><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(91, 218, 237);overflow-wrap: inherit !important;word-break: inherit !important;\">@Autowired<\/span><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">private<\/span>&nbsp;TokenInterceptor&nbsp;tokenInterceptor;<br style=\"outline: 0px;\"  \/><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(91, 218, 237);overflow-wrap: inherit !important;word-break: inherit !important;\">@Override<\/span><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\"><span style=\"outline: 0px;font-size: inherit;line-height: inherit;overflow-wrap: inherit !important;word-break: inherit !important;\">public<\/span>&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;overflow-wrap: inherit !important;word-break: inherit !important;\">void<\/span>&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(165, 218, 45);overflow-wrap: inherit !important;word-break: inherit !important;\">addInterceptors<\/span><span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(255, 152, 35);overflow-wrap: inherit !important;word-break: inherit !important;\">(InterceptorRegistry&nbsp;registry)<\/span>&nbsp;<\/span>{<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">super<\/span>.addInterceptors(registry);<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;registry.addInterceptor(tokenInterceptor)<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.addPathPatterns(<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);overflow-wrap: inherit !important;word-break: inherit !important;\">\"\/api\/**\"<\/span>)<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.excludePathPatterns(excludePathPatterns);<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;}<br style=\"outline: 0px;\"  \/>}<br style=\"outline: 0px;\"  \/><span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(174, 135, 250);overflow-wrap: inherit !important;word-break: inherit !important;\">5<\/span>.&nbsp;TokenInterceptor<br style=\"outline: 0px;\"  \/><span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(91, 218, 237);overflow-wrap: inherit !important;word-break: inherit !important;\">@Component<\/span><br style=\"outline: 0px;\"  \/><span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">public<\/span>&nbsp;<span style=\"outline: 0px;font-size: inherit;color: inherit;line-height: inherit;overflow-wrap: inherit !important;word-break: inherit !important;\"><span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">class<\/span>&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(165, 218, 45);overflow-wrap: inherit !important;word-break: inherit !important;\">TokenInterceptor<\/span>&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">extends<\/span>&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(165, 218, 45);overflow-wrap: inherit !important;word-break: inherit !important;\">HandlerInterceptorAdapter<\/span>&nbsp;<\/span>{<br style=\"outline: 0px;\"  \/><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(91, 218, 237);overflow-wrap: inherit !important;word-break: inherit !important;\">@Autowired<\/span><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">private<\/span>&nbsp;RedisTemplate&nbsp;redisTemplate;<br style=\"outline: 0px;\"  \/><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);overflow-wrap: inherit !important;word-break: inherit !important;\">\/**<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;<span style=\"outline: 0px;font-size: inherit;color: inherit;line-height: inherit;overflow-wrap: inherit !important;word-break: inherit !important;\">@param<\/span>&nbsp;request<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;<span style=\"outline: 0px;font-size: inherit;color: inherit;line-height: inherit;overflow-wrap: inherit !important;word-break: inherit !important;\">@param<\/span>&nbsp;response<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;<span style=\"outline: 0px;font-size: inherit;color: inherit;line-height: inherit;overflow-wrap: inherit !important;word-break: inherit !important;\">@param<\/span>&nbsp;handler&nbsp;\u8bbf\u95ee\u7684\u76ee\u6807\u65b9\u6cd5<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;<span style=\"outline: 0px;font-size: inherit;color: inherit;line-height: inherit;overflow-wrap: inherit !important;word-break: inherit !important;\">@return<\/span><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;<span style=\"outline: 0px;font-size: inherit;color: inherit;line-height: inherit;overflow-wrap: inherit !important;word-break: inherit !important;\">@throws<\/span>&nbsp;Exception<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*\/<\/span><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(91, 218, 237);overflow-wrap: inherit !important;word-break: inherit !important;\">@Override<\/span><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\"><span style=\"outline: 0px;font-size: inherit;line-height: inherit;overflow-wrap: inherit !important;word-break: inherit !important;\">public<\/span>&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;overflow-wrap: inherit !important;word-break: inherit !important;\">boolean<\/span>&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(165, 218, 45);overflow-wrap: inherit !important;word-break: inherit !important;\">preHandle<\/span><span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(255, 152, 35);overflow-wrap: inherit !important;word-break: inherit !important;\">(HttpServletRequest&nbsp;request,&nbsp;HttpServletResponse&nbsp;response,&nbsp;Object&nbsp;handler)<\/span>&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;overflow-wrap: inherit !important;word-break: inherit !important;\">throws<\/span>&nbsp;Exception&nbsp;<\/span>{<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;token&nbsp;=&nbsp;request.getHeader(<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);overflow-wrap: inherit !important;word-break: inherit !important;\">\"token\"<\/span>);<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;timestamp&nbsp;=&nbsp;request.getHeader(<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);overflow-wrap: inherit !important;word-break: inherit !important;\">\"timestamp\"<\/span>);<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);overflow-wrap: inherit !important;word-break: inherit !important;\">\/\/&nbsp;\u968f\u673a\u5b57\u7b26\u4e32<\/span><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;nonce&nbsp;=&nbsp;request.getHeader(<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);overflow-wrap: inherit !important;word-break: inherit !important;\">\"nonce\"<\/span>);<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;sign&nbsp;=&nbsp;request.getHeader(<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);overflow-wrap: inherit !important;word-break: inherit !important;\">\"sign\"<\/span>);<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Assert.isTrue(!StringUtils.isEmpty(token)&nbsp;&amp;&amp;&nbsp;!StringUtils.isEmpty(timestamp)&nbsp;&amp;&amp;&nbsp;!StringUtils.isEmpty(sign),&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);overflow-wrap: inherit !important;word-break: inherit !important;\">\"\u53c2\u6570\u9519\u8bef\"<\/span>);<br style=\"outline: 0px;\"  \/><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);overflow-wrap: inherit !important;word-break: inherit !important;\">\/\/&nbsp;\u83b7\u53d6\u8d85\u65f6\u65f6\u95f4<\/span><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NotRepeatSubmit&nbsp;notRepeatSubmit&nbsp;=&nbsp;ApiUtil.getNotRepeatSubmit(handler);<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">long<\/span>&nbsp;expireTime&nbsp;=&nbsp;notRepeatSubmit&nbsp;==&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">null<\/span>&nbsp;?&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(174, 135, 250);overflow-wrap: inherit !important;word-break: inherit !important;\">5<\/span>&nbsp;*&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(174, 135, 250);overflow-wrap: inherit !important;word-break: inherit !important;\">60<\/span>&nbsp;*&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(174, 135, 250);overflow-wrap: inherit !important;word-break: inherit !important;\">1000<\/span>&nbsp;:&nbsp;notRepeatSubmit.value();<br style=\"outline: 0px;\"  \/><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);overflow-wrap: inherit !important;word-break: inherit !important;\">\/\/&nbsp;2.&nbsp;\u8bf7\u6c42\u65f6\u95f4\u95f4\u9694<\/span><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">long<\/span>&nbsp;reqeustInterval&nbsp;=&nbsp;System.currentTimeMillis()&nbsp;-&nbsp;Long.valueOf(timestamp);<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Assert.isTrue(reqeustInterval&nbsp;&lt;&nbsp;expireTime,&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);overflow-wrap: inherit !important;word-break: inherit !important;\">\"\u8bf7\u6c42\u8d85\u65f6\uff0c\u8bf7\u91cd\u65b0\u8bf7\u6c42\"<\/span>);<br style=\"outline: 0px;\"  \/><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);overflow-wrap: inherit !important;word-break: inherit !important;\">\/\/&nbsp;3.&nbsp;\u6821\u9a8cToken\u662f\u5426\u5b58\u5728<\/span><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ValueOperations&lt;String,&nbsp;TokenInfo&gt;&nbsp;tokenRedis&nbsp;=&nbsp;redisTemplate.opsForValue();<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TokenInfo&nbsp;tokenInfo&nbsp;=&nbsp;tokenRedis.get(token);<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Assert.notNull(tokenInfo,&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);overflow-wrap: inherit !important;word-break: inherit !important;\">\"token\u9519\u8bef\"<\/span>);<br style=\"outline: 0px;\"  \/><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);overflow-wrap: inherit !important;word-break: inherit !important;\">\/\/&nbsp;4.&nbsp;\u6821\u9a8c\u7b7e\u540d(\u5c06\u6240\u6709\u7684\u53c2\u6570\u52a0\u8fdb\u6765\uff0c\u9632\u6b62\u522b\u4eba\u7be1\u6539\u53c2\u6570)&nbsp;\u6240\u6709\u53c2\u6570\u770b\u53c2\u6570\u540d\u5347\u7eed\u6392\u5e8f\u62fc\u63a5\u6210url<\/span><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);overflow-wrap: inherit !important;word-break: inherit !important;\">\/\/&nbsp;\u8bf7\u6c42\u53c2\u6570&nbsp;+&nbsp;token&nbsp;+&nbsp;timestamp&nbsp;+&nbsp;nonce<\/span><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;signString&nbsp;=&nbsp;ApiUtil.concatSignString(request)&nbsp;+&nbsp;tokenInfo.getAppInfo().getKey()&nbsp;+&nbsp;token&nbsp;+&nbsp;timestamp&nbsp;+&nbsp;nonce;<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;signature&nbsp;=&nbsp;MD5Util.encode(signString);<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">boolean<\/span>&nbsp;flag&nbsp;=&nbsp;signature.equals(sign);<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Assert.isTrue(flag,&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);overflow-wrap: inherit !important;word-break: inherit !important;\">\"\u7b7e\u540d\u9519\u8bef\"<\/span>);<br style=\"outline: 0px;\"  \/><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);overflow-wrap: inherit !important;word-break: inherit !important;\">\/\/&nbsp;5.&nbsp;\u62d2\u7edd\u91cd\u590d\u8c03\u7528(\u7b2c\u4e00\u6b21\u8bbf\u95ee\u65f6\u5b58\u50a8\uff0c\u8fc7\u671f\u65f6\u95f4\u548c\u8bf7\u6c42\u8d85\u65f6\u65f6\u95f4\u4fdd\u6301\u4e00\u81f4),&nbsp;\u53ea\u6709\u6807\u6ce8\u4e0d\u5141\u8bb8\u91cd\u590d\u63d0\u4ea4\u6ce8\u89e3\u7684\u624d\u4f1a\u6821\u9a8c<\/span><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">if<\/span>&nbsp;(notRepeatSubmit&nbsp;!=&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">null<\/span>)&nbsp;{<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ValueOperations&lt;String,&nbsp;Integer&gt;&nbsp;signRedis&nbsp;=&nbsp;redisTemplate.opsForValue();<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">boolean<\/span>&nbsp;exists&nbsp;=&nbsp;redisTemplate.hasKey(sign);<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Assert.isTrue(!exists,&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);overflow-wrap: inherit !important;word-break: inherit !important;\">\"\u8bf7\u52ff\u91cd\u590d\u63d0\u4ea4\"<\/span>);<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;signRedis.set(sign,&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(174, 135, 250);overflow-wrap: inherit !important;word-break: inherit !important;\">0<\/span>,&nbsp;expireTime,&nbsp;TimeUnit.MILLISECONDS);<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br style=\"outline: 0px;\"  \/><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">return<\/span>&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">super<\/span>.preHandle(request,&nbsp;response,&nbsp;handler);<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;}<br style=\"outline: 0px;\"  \/>}<br style=\"outline: 0px;\"  \/><\/code><\/pre>\n<p style=\"margin-top: 1.3em;margin-bottom: 1.3em;outline: 0px;color: inherit;font-family: system-ui, -apple-system, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;font-size: inherit;letter-spacing: 0.544px;white-space: normal;background-color: rgb(255, 255, 255);line-height: inherit;\">MD5Util ----MD5\u5de5\u5177\u7c7b\uff0c\u52a0\u5bc6\u751f\u6210\u6570\u5b57\u7b7e\u540d<\/p>\n<pre style=\"outline: 0px;color: inherit;font-size: inherit;letter-spacing: 0.544px;background-color: rgb(255, 255, 255);line-height: inherit;\"><code style=\"margin-right: 2px;margin-left: 2px;padding: 0.5em;outline: 0px;line-height: 18px;font-size: 13px;letter-spacing: 0px;font-family: Consolas, Inconsolata, Courier, monospace;border-radius: 0px;color: rgb(169, 183, 198);background: rgb(40, 43, 46);overflow-wrap: normal !important;word-break: normal !important;overflow: auto !important;display: -webkit-box !important;\"><span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">public<\/span>&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">class<\/span>&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(165, 218, 45);overflow-wrap: inherit !important;word-break: inherit !important;\">MD5Util<\/span>&nbsp;{<br style=\"outline: 0px;\"  \/><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">private<\/span>&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">static<\/span>&nbsp;final&nbsp;String&nbsp;hexDigits[]&nbsp;=&nbsp;{&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);overflow-wrap: inherit !important;word-break: inherit !important;\">\"0\"<\/span>,&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);overflow-wrap: inherit !important;word-break: inherit !important;\">\"1\"<\/span>,&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);overflow-wrap: inherit !important;word-break: inherit !important;\">\"2\"<\/span>,&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);overflow-wrap: inherit !important;word-break: inherit !important;\">\"3\"<\/span>,&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);overflow-wrap: inherit !important;word-break: inherit !important;\">\"4\"<\/span>,&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);overflow-wrap: inherit !important;word-break: inherit !important;\">\"5\"<\/span>,<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);overflow-wrap: inherit !important;word-break: inherit !important;\">\"6\"<\/span>,&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);overflow-wrap: inherit !important;word-break: inherit !important;\">\"7\"<\/span>,&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);overflow-wrap: inherit !important;word-break: inherit !important;\">\"8\"<\/span>,&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);overflow-wrap: inherit !important;word-break: inherit !important;\">\"9\"<\/span>,&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);overflow-wrap: inherit !important;word-break: inherit !important;\">\"a\"<\/span>,&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);overflow-wrap: inherit !important;word-break: inherit !important;\">\"b\"<\/span>,&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);overflow-wrap: inherit !important;word-break: inherit !important;\">\"c\"<\/span>,&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);overflow-wrap: inherit !important;word-break: inherit !important;\">\"d\"<\/span>,&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);overflow-wrap: inherit !important;word-break: inherit !important;\">\"e\"<\/span>,&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);overflow-wrap: inherit !important;word-break: inherit !important;\">\"f\"<\/span>&nbsp;};<br style=\"outline: 0px;\"  \/><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\"><span style=\"outline: 0px;font-size: inherit;line-height: inherit;overflow-wrap: inherit !important;word-break: inherit !important;\">private<\/span>&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;overflow-wrap: inherit !important;word-break: inherit !important;\">static<\/span>&nbsp;String&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(165, 218, 45);overflow-wrap: inherit !important;word-break: inherit !important;\">byteArrayToHexString<\/span>(<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(255, 152, 35);overflow-wrap: inherit !important;word-break: inherit !important;\"><span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">byte<\/span>&nbsp;b[]<\/span>)&nbsp;<\/span>{<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StringBuffer&nbsp;resultSb&nbsp;=&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">new<\/span>&nbsp;StringBuffer();<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">for<\/span>&nbsp;(<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">int<\/span>&nbsp;i&nbsp;=&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(174, 135, 250);overflow-wrap: inherit !important;word-break: inherit !important;\">0<\/span>;&nbsp;i&nbsp;&lt;&nbsp;b.length;&nbsp;i++)<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;resultSb.append(byteToHexString(b[i]));<br style=\"outline: 0px;\"  \/><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">return<\/span>&nbsp;resultSb.toString();<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;}<br style=\"outline: 0px;\"  \/><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\"><span style=\"outline: 0px;font-size: inherit;line-height: inherit;overflow-wrap: inherit !important;word-break: inherit !important;\">private<\/span>&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;overflow-wrap: inherit !important;word-break: inherit !important;\">static<\/span>&nbsp;String&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(165, 218, 45);overflow-wrap: inherit !important;word-break: inherit !important;\">byteToHexString<\/span>(<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(255, 152, 35);overflow-wrap: inherit !important;word-break: inherit !important;\"><span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">byte<\/span>&nbsp;b<\/span>)&nbsp;<\/span>{<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">int<\/span>&nbsp;n&nbsp;=&nbsp;b;<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">if<\/span>&nbsp;(n&nbsp;&lt;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(174, 135, 250);overflow-wrap: inherit !important;word-break: inherit !important;\">0<\/span>)<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;n&nbsp;+=&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(174, 135, 250);overflow-wrap: inherit !important;word-break: inherit !important;\">256<\/span>;<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">int<\/span>&nbsp;d1&nbsp;=&nbsp;n&nbsp;\/&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(174, 135, 250);overflow-wrap: inherit !important;word-break: inherit !important;\">16<\/span>;<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">int<\/span>&nbsp;d2&nbsp;=&nbsp;n&nbsp;%&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(174, 135, 250);overflow-wrap: inherit !important;word-break: inherit !important;\">16<\/span>;<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">return<\/span>&nbsp;hexDigits[d1]&nbsp;+&nbsp;hexDigits[d2];<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;}<br style=\"outline: 0px;\"  \/><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\"><span style=\"outline: 0px;font-size: inherit;line-height: inherit;overflow-wrap: inherit !important;word-break: inherit !important;\">public<\/span>&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;overflow-wrap: inherit !important;word-break: inherit !important;\">static<\/span>&nbsp;String&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(165, 218, 45);overflow-wrap: inherit !important;word-break: inherit !important;\">encode<\/span>(<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(255, 152, 35);overflow-wrap: inherit !important;word-break: inherit !important;\">String&nbsp;origin<\/span>)&nbsp;<\/span>{<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">return<\/span>&nbsp;encode(origin,&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);overflow-wrap: inherit !important;word-break: inherit !important;\">\"UTF-8\"<\/span>);<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;}<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\"><span style=\"outline: 0px;font-size: inherit;line-height: inherit;overflow-wrap: inherit !important;word-break: inherit !important;\">public<\/span>&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;overflow-wrap: inherit !important;word-break: inherit !important;\">static<\/span>&nbsp;String&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(165, 218, 45);overflow-wrap: inherit !important;word-break: inherit !important;\">encode<\/span>(<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(255, 152, 35);overflow-wrap: inherit !important;word-break: inherit !important;\">String&nbsp;origin,&nbsp;String&nbsp;charsetname<\/span>)&nbsp;<\/span>{<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;resultString&nbsp;=&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(174, 135, 250);overflow-wrap: inherit !important;word-break: inherit !important;\">null<\/span>;<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">try<\/span>&nbsp;{<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;resultString&nbsp;=&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">new<\/span>&nbsp;String(origin);<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MessageDigest&nbsp;md&nbsp;=&nbsp;MessageDigest.getInstance(<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);overflow-wrap: inherit !important;word-break: inherit !important;\">\"MD5\"<\/span>);<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">if<\/span>&nbsp;(charsetname&nbsp;==&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(174, 135, 250);overflow-wrap: inherit !important;word-break: inherit !important;\">null<\/span>&nbsp;||&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);overflow-wrap: inherit !important;word-break: inherit !important;\">\"\"<\/span>.<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">equals<\/span>(charsetname))<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;resultString&nbsp;=&nbsp;byteArrayToHexString(md.digest(resultString<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.getBytes()));<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">else<\/span><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;resultString&nbsp;=&nbsp;byteArrayToHexString(md.digest(resultString<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.getBytes(charsetname)));<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">catch<\/span>&nbsp;(Exception&nbsp;exception)&nbsp;{<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">return<\/span>&nbsp;resultString;<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;}<br style=\"outline: 0px;\"  \/>}<br style=\"outline: 0px;\"  \/><\/code><\/pre>\n<p style=\"margin-top: 1.3em;margin-bottom: 1.3em;outline: 0px;color: inherit;font-family: system-ui, -apple-system, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;font-size: inherit;letter-spacing: 0.544px;white-space: normal;background-color: rgb(255, 255, 255);line-height: inherit;\">@NotRepeatSubmit -----\u81ea\u5b9a\u4e49\u6ce8\u89e3\uff0c\u9632\u6b62\u91cd\u590d\u63d0\u4ea4\u3002<\/p>\n<pre style=\"outline: 0px;color: inherit;font-size: inherit;letter-spacing: 0.544px;background-color: rgb(255, 255, 255);line-height: inherit;\"><code style=\"margin-right: 2px;margin-left: 2px;padding: 0.5em;outline: 0px;line-height: 18px;font-size: 13px;letter-spacing: 0px;font-family: Consolas, Inconsolata, Courier, monospace;border-radius: 0px;color: rgb(169, 183, 198);background: rgb(40, 43, 46);overflow-wrap: normal !important;word-break: normal !important;overflow: auto !important;display: -webkit-box !important;\"><span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);overflow-wrap: inherit !important;word-break: inherit !important;\">\/**<br style=\"outline: 0px;\"  \/>&nbsp;*&nbsp;\u7981\u6b62\u91cd\u590d\u63d0\u4ea4<br style=\"outline: 0px;\"  \/>&nbsp;*\/<\/span><br style=\"outline: 0px;\"  \/>@Target(ElementType.METHOD)<br style=\"outline: 0px;\"  \/>@Retention(RetentionPolicy.RUNTIME)<br style=\"outline: 0px;\"  \/><span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">public<\/span>&nbsp;@<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">interface<\/span>&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(165, 218, 45);overflow-wrap: inherit !important;word-break: inherit !important;\">NotRepeatSubmit<\/span>&nbsp;{<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);overflow-wrap: inherit !important;word-break: inherit !important;\">\/**&nbsp;\u8fc7\u671f\u65f6\u95f4\uff0c\u5355\u4f4d\u6beb\u79d2&nbsp;**\/<\/span><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\"><span style=\"outline: 0px;font-size: inherit;line-height: inherit;overflow-wrap: inherit !important;word-break: inherit !important;\">long<\/span>&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(165, 218, 45);overflow-wrap: inherit !important;word-break: inherit !important;\">value<\/span>(<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(255, 152, 35);overflow-wrap: inherit !important;word-break: inherit !important;\"><\/span>)&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;overflow-wrap: inherit !important;word-break: inherit !important;\">default<\/span>&nbsp;5000<\/span>;<br style=\"outline: 0px;\"  \/>}<br style=\"outline: 0px;\"  \/><\/code><\/pre>\n<p style=\"margin-top: 1.3em;margin-bottom: 1.3em;outline: 0px;color: inherit;font-family: system-ui, -apple-system, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;font-size: inherit;letter-spacing: 0.544px;white-space: normal;background-color: rgb(255, 255, 255);line-height: inherit;\">AccessToken<\/p>\n<pre style=\"outline: 0px;color: inherit;font-size: inherit;letter-spacing: 0.544px;background-color: rgb(255, 255, 255);line-height: inherit;\"><code style=\"margin-right: 2px;margin-left: 2px;padding: 0.5em;outline: 0px;line-height: 18px;font-size: 13px;letter-spacing: 0px;font-family: Consolas, Inconsolata, Courier, monospace;border-radius: 0px;color: rgb(169, 183, 198);background: rgb(40, 43, 46);overflow-wrap: normal !important;word-break: normal !important;overflow: auto !important;display: -webkit-box !important;\">@Data<br style=\"outline: 0px;\"  \/>@AllArgsConstructor<br style=\"outline: 0px;\"  \/><span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">public<\/span>&nbsp;<span style=\"outline: 0px;font-size: inherit;color: inherit;line-height: inherit;overflow-wrap: inherit !important;word-break: inherit !important;\"><span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">class<\/span>&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(165, 218, 45);overflow-wrap: inherit !important;word-break: inherit !important;\">AccessToken<\/span>&nbsp;{<\/span><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);overflow-wrap: inherit !important;word-break: inherit !important;\">\/**&nbsp;token&nbsp;*\/<\/span><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">private<\/span>&nbsp;String&nbsp;token;<br style=\"outline: 0px;\"  \/><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);overflow-wrap: inherit !important;word-break: inherit !important;\">\/**&nbsp;\u5931\u6548\u65f6\u95f4&nbsp;*\/<\/span><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">private<\/span>&nbsp;Date&nbsp;expireTime;<br style=\"outline: 0px;\"  \/>}<br style=\"outline: 0px;\"  \/><\/code><\/pre>\n<p style=\"margin-top: 1.3em;margin-bottom: 1.3em;outline: 0px;color: inherit;font-family: system-ui, -apple-system, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;font-size: inherit;letter-spacing: 0.544px;white-space: normal;background-color: rgb(255, 255, 255);line-height: inherit;\">AppInfo<\/p>\n<pre style=\"outline: 0px;color: inherit;font-size: inherit;letter-spacing: 0.544px;background-color: rgb(255, 255, 255);line-height: inherit;\"><code style=\"margin-right: 2px;margin-left: 2px;padding: 0.5em;outline: 0px;line-height: 18px;font-size: 13px;letter-spacing: 0px;font-family: Consolas, Inconsolata, Courier, monospace;border-radius: 0px;color: rgb(169, 183, 198);background: rgb(40, 43, 46);overflow-wrap: normal !important;word-break: normal !important;overflow: auto !important;display: -webkit-box !important;\"><span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(91, 218, 237);overflow-wrap: inherit !important;word-break: inherit !important;\">@Data<\/span><br style=\"outline: 0px;\"  \/><span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(91, 218, 237);overflow-wrap: inherit !important;word-break: inherit !important;\">@NoArgsConstructor<\/span><br style=\"outline: 0px;\"  \/><span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(91, 218, 237);overflow-wrap: inherit !important;word-break: inherit !important;\">@AllArgsConstructor<\/span><br style=\"outline: 0px;\"  \/>public&nbsp;<span style=\"outline: 0px;font-size: inherit;color: inherit;line-height: inherit;overflow-wrap: inherit !important;word-break: inherit !important;\"><span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">class<\/span>&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(165, 218, 45);overflow-wrap: inherit !important;word-break: inherit !important;\">AppInfo<\/span>&nbsp;<\/span>{<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);overflow-wrap: inherit !important;word-break: inherit !important;\">\/<span style=\"outline: 0px;font-size: inherit;color: inherit;line-height: inherit;font-style: italic;overflow-wrap: inherit !important;word-break: inherit !important;\">**&nbsp;App&nbsp;id&nbsp;*<\/span>\/<\/span><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">String<\/span>&nbsp;appId;<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);overflow-wrap: inherit !important;word-break: inherit !important;\">\/<span style=\"outline: 0px;font-size: inherit;color: inherit;line-height: inherit;font-style: italic;overflow-wrap: inherit !important;word-break: inherit !important;\">**&nbsp;API&nbsp;\u79d8\u94a5&nbsp;*<\/span>\/<\/span><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">String<\/span>&nbsp;key;<br style=\"outline: 0px;\"  \/>}<br style=\"outline: 0px;\"  \/><\/code><\/pre>\n<p style=\"margin-top: 1.3em;margin-bottom: 1.3em;outline: 0px;color: inherit;font-family: system-ui, -apple-system, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;font-size: inherit;letter-spacing: 0.544px;white-space: normal;background-color: rgb(255, 255, 255);line-height: inherit;\">TokenInfo<\/p>\n<pre style=\"outline: 0px;color: inherit;font-size: inherit;letter-spacing: 0.544px;background-color: rgb(255, 255, 255);line-height: inherit;\"><code style=\"margin-right: 2px;margin-left: 2px;padding: 0.5em;outline: 0px;line-height: 18px;font-size: 13px;letter-spacing: 0px;font-family: Consolas, Inconsolata, Courier, monospace;border-radius: 0px;color: rgb(169, 183, 198);background: rgb(40, 43, 46);overflow-wrap: normal !important;word-break: normal !important;overflow: auto !important;display: -webkit-box !important;\">@Data<br style=\"outline: 0px;\"  \/><span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">public<\/span>&nbsp;<span style=\"outline: 0px;font-size: inherit;color: inherit;line-height: inherit;overflow-wrap: inherit !important;word-break: inherit !important;\"><span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">class<\/span>&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(165, 218, 45);overflow-wrap: inherit !important;word-break: inherit !important;\">TokenInfo<\/span>&nbsp;{<\/span><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);overflow-wrap: inherit !important;word-break: inherit !important;\">\/**&nbsp;token\u7c7b\u578b:&nbsp;api:0&nbsp;\u3001user:1&nbsp;*\/<\/span><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">private<\/span>&nbsp;Integer&nbsp;tokenType;<br style=\"outline: 0px;\"  \/><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);overflow-wrap: inherit !important;word-break: inherit !important;\">\/**&nbsp;App&nbsp;\u4fe1\u606f&nbsp;*\/<\/span><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">private<\/span>&nbsp;AppInfo&nbsp;appInfo;<br style=\"outline: 0px;\"  \/><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);overflow-wrap: inherit !important;word-break: inherit !important;\">\/**&nbsp;\u7528\u6237\u5176\u4ed6\u6570\u636e&nbsp;*\/<\/span><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">private<\/span>&nbsp;UserInfo&nbsp;userInfo;<br style=\"outline: 0px;\"  \/>}<br style=\"outline: 0px;\"  \/><\/code><\/pre>\n<p style=\"margin-top: 1.3em;margin-bottom: 1.3em;outline: 0px;color: inherit;font-family: system-ui, -apple-system, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;font-size: inherit;letter-spacing: 0.544px;white-space: normal;background-color: rgb(255, 255, 255);line-height: inherit;\">UserInfo<\/p>\n<pre style=\"outline: 0px;color: inherit;font-size: inherit;letter-spacing: 0.544px;background-color: rgb(255, 255, 255);line-height: inherit;\"><code style=\"margin-right: 2px;margin-left: 2px;padding: 0.5em;outline: 0px;line-height: 18px;font-size: 13px;letter-spacing: 0px;font-family: Consolas, Inconsolata, Courier, monospace;border-radius: 0px;color: rgb(169, 183, 198);background: rgb(40, 43, 46);overflow-wrap: normal !important;word-break: normal !important;overflow: auto !important;display: -webkit-box !important;\">@Data<br style=\"outline: 0px;\"  \/><span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">public<\/span>&nbsp;<span style=\"outline: 0px;font-size: inherit;color: inherit;line-height: inherit;overflow-wrap: inherit !important;word-break: inherit !important;\"><span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">class<\/span>&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(165, 218, 45);overflow-wrap: inherit !important;word-break: inherit !important;\">UserInfo<\/span>&nbsp;{<\/span><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);overflow-wrap: inherit !important;word-break: inherit !important;\">\/**&nbsp;\u7528\u6237\u540d&nbsp;*\/<\/span><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">private<\/span>&nbsp;String&nbsp;username;<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);overflow-wrap: inherit !important;word-break: inherit !important;\">\/**&nbsp;\u624b\u673a\u53f7&nbsp;*\/<\/span><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">private<\/span>&nbsp;String&nbsp;mobile;<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);overflow-wrap: inherit !important;word-break: inherit !important;\">\/**&nbsp;\u90ae\u7bb1&nbsp;*\/<\/span><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">private<\/span>&nbsp;String&nbsp;email;<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);overflow-wrap: inherit !important;word-break: inherit !important;\">\/**&nbsp;\u5bc6\u7801&nbsp;*\/<\/span><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">private<\/span>&nbsp;String&nbsp;password;<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);overflow-wrap: inherit !important;word-break: inherit !important;\">\/**&nbsp;\u76d0&nbsp;*\/<\/span><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">private<\/span>&nbsp;String&nbsp;salt;<br style=\"outline: 0px;\"  \/><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">private<\/span>&nbsp;AccessToken&nbsp;accessToken;<br style=\"outline: 0px;\"  \/><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\"><span style=\"outline: 0px;font-size: inherit;line-height: inherit;overflow-wrap: inherit !important;word-break: inherit !important;\">public<\/span>&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(165, 218, 45);overflow-wrap: inherit !important;word-break: inherit !important;\">UserInfo<\/span><span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(255, 152, 35);overflow-wrap: inherit !important;word-break: inherit !important;\">(String&nbsp;username,&nbsp;String&nbsp;password,&nbsp;String&nbsp;salt)<\/span>&nbsp;<\/span>{<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">this<\/span>.username&nbsp;=&nbsp;username;<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">this<\/span>.password&nbsp;=&nbsp;password;<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">this<\/span>.salt&nbsp;=&nbsp;salt;<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;}<br style=\"outline: 0px;\"  \/>}<br style=\"outline: 0px;\"  \/><\/code><\/pre>\n<p style=\"margin-top: 1.3em;margin-bottom: 1.3em;outline: 0px;color: inherit;font-family: system-ui, -apple-system, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;font-size: inherit;letter-spacing: 0.544px;white-space: normal;background-color: rgb(255, 255, 255);line-height: inherit;\">ApiCodeEnum<\/p>\n<pre style=\"outline: 0px;color: inherit;font-size: inherit;letter-spacing: 0.544px;background-color: rgb(255, 255, 255);line-height: inherit;\"><code style=\"margin-right: 2px;margin-left: 2px;padding: 0.5em;outline: 0px;line-height: 18px;font-size: 13px;letter-spacing: 0px;font-family: Consolas, Inconsolata, Courier, monospace;border-radius: 0px;color: rgb(169, 183, 198);background: rgb(40, 43, 46);overflow-wrap: normal !important;word-break: normal !important;overflow: auto !important;display: -webkit-box !important;\"><span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);overflow-wrap: inherit !important;word-break: inherit !important;\">\/**<br style=\"outline: 0px;\"  \/>&nbsp;*&nbsp;\u9519\u8bef\u7801code\u53ef\u4ee5\u4f7f\u7528\u7eaf\u6570\u5b57,\u4f7f\u7528\u4e0d\u540c\u533a\u95f4\u6807\u8bc6\u4e00\u7c7b\u9519\u8bef\uff0c\u4e5f\u53ef\u4ee5\u4f7f\u7528\u7eaf\u5b57\u7b26\uff0c\u4e5f\u53ef\u4ee5\u4f7f\u7528\u524d\u7f00+\u7f16\u53f7<br style=\"outline: 0px;\"  \/>&nbsp;*<br style=\"outline: 0px;\"  \/>&nbsp;*&nbsp;\u9519\u8bef\u7801\uff1aERR +&nbsp;\u7f16\u53f7<br style=\"outline: 0px;\"  \/>&nbsp;*<br style=\"outline: 0px;\"  \/>&nbsp;*&nbsp;\u53ef\u4ee5\u4f7f\u7528\u65e5\u5fd7\u7ea7\u522b\u7684\u524d\u7f00\u4f5c\u4e3a\u9519\u8bef\u7c7b\u578b\u533a\u5206&nbsp;Info(I)&nbsp;Error(E)&nbsp;Warning(W)<br style=\"outline: 0px;\"  \/>&nbsp;*<br style=\"outline: 0px;\"  \/>&nbsp;*&nbsp;\u6216\u8005\u4ee5\u4e1a\u52a1\u6a21\u5757&nbsp;+&nbsp;\u9519\u8bef\u53f7<br style=\"outline: 0px;\"  \/>&nbsp;*<br style=\"outline: 0px;\"  \/>&nbsp;*&nbsp;TODO&nbsp;\u9519\u8bef\u7801\u8bbe\u8ba1<br style=\"outline: 0px;\"  \/>&nbsp;*<br style=\"outline: 0px;\"  \/>&nbsp;*&nbsp;Alipay&nbsp;\u7528\u4e86\u4e24\u4e2acode\uff0c\u4e24\u4e2amsg(https:\/\/docs.open.alipay.com\/api_1\/alipay.trade.pay)<br style=\"outline: 0px;\"  \/>&nbsp;*\/<\/span><br style=\"outline: 0px;\"  \/><span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">public<\/span>&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">enum<\/span>&nbsp;ApiCodeEnum&nbsp;{<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;SUCCESS(<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);overflow-wrap: inherit !important;word-break: inherit !important;\">\"10000\"<\/span>,&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);overflow-wrap: inherit !important;word-break: inherit !important;\">\"success\"<\/span>),<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;UNKNOW_ERROR(<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);overflow-wrap: inherit !important;word-break: inherit !important;\">\"ERR0001\"<\/span>,<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);overflow-wrap: inherit !important;word-break: inherit !important;\">\"\u672a\u77e5\u9519\u8bef\"<\/span>),<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;PARAMETER_ERROR(<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);overflow-wrap: inherit !important;word-break: inherit !important;\">\"ERR0002\"<\/span>,<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);overflow-wrap: inherit !important;word-break: inherit !important;\">\"\u53c2\u6570\u9519\u8bef\"<\/span>),<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;TOKEN_EXPIRE(<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);overflow-wrap: inherit !important;word-break: inherit !important;\">\"ERR0003\"<\/span>,<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);overflow-wrap: inherit !important;word-break: inherit !important;\">\"\u8ba4\u8bc1\u8fc7\u671f\"<\/span>),<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;REQUEST_TIMEOUT(<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);overflow-wrap: inherit !important;word-break: inherit !important;\">\"ERR0004\"<\/span>,<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);overflow-wrap: inherit !important;word-break: inherit !important;\">\"\u8bf7\u6c42\u8d85\u65f6\"<\/span>),<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;SIGN_ERROR(<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);overflow-wrap: inherit !important;word-break: inherit !important;\">\"ERR0005\"<\/span>,<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);overflow-wrap: inherit !important;word-break: inherit !important;\">\"\u7b7e\u540d\u9519\u8bef\"<\/span>),<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;REPEAT_SUBMIT(<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);overflow-wrap: inherit !important;word-break: inherit !important;\">\"ERR0006\"<\/span>,<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);overflow-wrap: inherit !important;word-break: inherit !important;\">\"\u8bf7\u4e0d\u8981\u9891\u7e41\u64cd\u4f5c\"<\/span>),<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;;<br style=\"outline: 0px;\"  \/><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);overflow-wrap: inherit !important;word-break: inherit !important;\">\/**&nbsp;\u4ee3\u7801&nbsp;*\/<\/span><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">private<\/span>&nbsp;String&nbsp;code;<br style=\"outline: 0px;\"  \/><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);overflow-wrap: inherit !important;word-break: inherit !important;\">\/**&nbsp;\u7ed3\u679c&nbsp;*\/<\/span><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">private<\/span>&nbsp;String&nbsp;msg;<br style=\"outline: 0px;\"  \/><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;ApiCodeEnum(String&nbsp;code,&nbsp;String&nbsp;msg)&nbsp;{<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">this<\/span>.code&nbsp;=&nbsp;code;<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">this<\/span>.msg&nbsp;=&nbsp;msg;<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;}<br style=\"outline: 0px;\"  \/><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\"><span style=\"outline: 0px;font-size: inherit;line-height: inherit;overflow-wrap: inherit !important;word-break: inherit !important;\">public<\/span>&nbsp;String&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(165, 218, 45);overflow-wrap: inherit !important;word-break: inherit !important;\">getCode<\/span><span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(255, 152, 35);overflow-wrap: inherit !important;word-break: inherit !important;\">()<\/span>&nbsp;<\/span>{<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">return<\/span>&nbsp;code;<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;}<br style=\"outline: 0px;\"  \/><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\"><span style=\"outline: 0px;font-size: inherit;line-height: inherit;overflow-wrap: inherit !important;word-break: inherit !important;\">public<\/span>&nbsp;String&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(165, 218, 45);overflow-wrap: inherit !important;word-break: inherit !important;\">getMsg<\/span><span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(255, 152, 35);overflow-wrap: inherit !important;word-break: inherit !important;\">()<\/span>&nbsp;<\/span>{<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">return<\/span>&nbsp;msg;<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;}<br style=\"outline: 0px;\"  \/>}<br style=\"outline: 0px;\"  \/><\/code><\/pre>\n<p style=\"margin-top: 1.3em;margin-bottom: 1.3em;outline: 0px;color: inherit;font-family: system-ui, -apple-system, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;font-size: inherit;letter-spacing: 0.544px;white-space: normal;background-color: rgb(255, 255, 255);line-height: inherit;\">ApiResult<\/p>\n<pre style=\"outline: 0px;color: inherit;font-size: inherit;letter-spacing: 0.544px;background-color: rgb(255, 255, 255);line-height: inherit;\"><code style=\"margin-right: 2px;margin-left: 2px;padding: 0.5em;outline: 0px;line-height: 18px;font-size: 13px;letter-spacing: 0px;font-family: Consolas, Inconsolata, Courier, monospace;border-radius: 0px;color: rgb(169, 183, 198);background: rgb(40, 43, 46);overflow-wrap: normal !important;word-break: normal !important;overflow: auto !important;display: -webkit-box !important;\"><span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(91, 218, 237);overflow-wrap: inherit !important;word-break: inherit !important;\">@Data<\/span><br style=\"outline: 0px;\"  \/><span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(91, 218, 237);overflow-wrap: inherit !important;word-break: inherit !important;\">@NoArgsConstructor<\/span><br style=\"outline: 0px;\"  \/><span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(91, 218, 237);overflow-wrap: inherit !important;word-break: inherit !important;\">@AllArgsConstructor<\/span><br style=\"outline: 0px;\"  \/>public&nbsp;<span style=\"outline: 0px;font-size: inherit;color: inherit;line-height: inherit;overflow-wrap: inherit !important;word-break: inherit !important;\"><span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">class<\/span>&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(165, 218, 45);overflow-wrap: inherit !important;word-break: inherit !important;\">ApiResult<\/span>&nbsp;<\/span>{<br style=\"outline: 0px;\"  \/><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);overflow-wrap: inherit !important;word-break: inherit !important;\">\/<span style=\"outline: 0px;font-size: inherit;color: inherit;line-height: inherit;font-style: italic;overflow-wrap: inherit !important;word-break: inherit !important;\">**&nbsp;\u4ee3\u7801&nbsp;*<\/span>\/<\/span><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">String<\/span>&nbsp;code;<br style=\"outline: 0px;\"  \/><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);overflow-wrap: inherit !important;word-break: inherit !important;\">\/<span style=\"outline: 0px;font-size: inherit;color: inherit;line-height: inherit;font-style: italic;overflow-wrap: inherit !important;word-break: inherit !important;\">**&nbsp;\u7ed3\u679c&nbsp;*<\/span>\/<\/span><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">String<\/span>&nbsp;msg;<br style=\"outline: 0px;\"  \/>}<br style=\"outline: 0px;\"  \/><\/code><\/pre>\n<p style=\"margin-top: 1.3em;margin-bottom: 1.3em;outline: 0px;color: inherit;font-family: system-ui, -apple-system, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;font-size: inherit;letter-spacing: 0.544px;white-space: normal;background-color: rgb(255, 255, 255);line-height: inherit;\">ApiUtil -------\u8fd9\u4e2a\u53c2\u8003\u652f\u4ed8\u5b9d\u52a0\u5bc6\u7684\u7b97\u6cd5\u5199\u7684.\u6211\u76f4\u63a5Copy\u8fc7\u6765\u4e86\u3002<\/p>\n<pre style=\"outline: 0px;color: inherit;font-size: inherit;letter-spacing: 0.544px;background-color: rgb(255, 255, 255);line-height: inherit;\"><code style=\"margin-right: 2px;margin-left: 2px;padding: 0.5em;outline: 0px;line-height: 18px;font-size: 13px;letter-spacing: 0px;font-family: Consolas, Inconsolata, Courier, monospace;border-radius: 0px;color: rgb(169, 183, 198);background: rgb(40, 43, 46);overflow-wrap: normal !important;word-break: normal !important;overflow: auto !important;display: -webkit-box !important;\">public&nbsp;<span style=\"outline: 0px;font-size: inherit;color: inherit;line-height: inherit;overflow-wrap: inherit !important;word-break: inherit !important;\"><span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">class<\/span>&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(165, 218, 45);overflow-wrap: inherit !important;word-break: inherit !important;\">ApiUtil<\/span>&nbsp;<\/span>{<br style=\"outline: 0px;\"  \/><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);overflow-wrap: inherit !important;word-break: inherit !important;\">\/**<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;\u6309\u53c2\u6570\u540d\u5347\u7eed\u62fc\u63a5\u53c2\u6570<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;request<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*\/<\/span><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">static<\/span>&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">String<\/span>&nbsp;concatSignString(HttpServletRequest&nbsp;request)&nbsp;{<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">Map<\/span>&lt;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">String<\/span>,&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">String<\/span>&gt;&nbsp;paramterMap&nbsp;=&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">new<\/span>&nbsp;HashMap&lt;&gt;();<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;request.getParameterMap().forEach((key,&nbsp;value)&nbsp;-&gt;&nbsp;paramterMap.put(key,&nbsp;value[<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(174, 135, 250);overflow-wrap: inherit !important;word-break: inherit !important;\">0<\/span>]));<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);overflow-wrap: inherit !important;word-break: inherit !important;\">\/\/&nbsp;\u6309\u7167key\u5347\u7eed\u6392\u5e8f\uff0c\u7136\u540e\u62fc\u63a5\u53c2\u6570<\/span><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">Set<\/span>&lt;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">String<\/span>&gt;&nbsp;keySet&nbsp;=&nbsp;paramterMap.keySet();<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">String<\/span>[]&nbsp;keyArray&nbsp;=&nbsp;keySet.toArray(<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">new<\/span>&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">String<\/span>[keySet.size()]);<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Arrays.sort(keyArray);<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StringBuilder&nbsp;sb&nbsp;=&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">new<\/span>&nbsp;StringBuilder();<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">for<\/span>&nbsp;(<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">String<\/span>&nbsp;k&nbsp;:&nbsp;keyArray)&nbsp;{<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);overflow-wrap: inherit !important;word-break: inherit !important;\">\/\/&nbsp;\u6216\u7565\u6389\u7684\u5b57\u6bb5<\/span><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">if<\/span>&nbsp;(k.equals(<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);overflow-wrap: inherit !important;word-break: inherit !important;\">\"sign\"<\/span>))&nbsp;{<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">continue<\/span>;<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">if<\/span>&nbsp;(paramterMap.<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">get<\/span>(k).trim().length()&nbsp;&gt;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(174, 135, 250);overflow-wrap: inherit !important;word-break: inherit !important;\">0<\/span>)&nbsp;{<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);overflow-wrap: inherit !important;word-break: inherit !important;\">\/\/&nbsp;\u53c2\u6570\u503c\u4e3a\u7a7a\uff0c\u5219\u4e0d\u53c2\u4e0e\u7b7e\u540d<\/span><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sb.append(k).append(<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);overflow-wrap: inherit !important;word-break: inherit !important;\">\"=\"<\/span>).append(paramterMap.<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">get<\/span>(k).trim()).append(<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);overflow-wrap: inherit !important;word-break: inherit !important;\">\"&amp;\"<\/span>);<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br style=\"outline: 0px;\"  \/><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">return<\/span>&nbsp;sb.toString();<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;}<br style=\"outline: 0px;\"  \/><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">static<\/span>&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">String<\/span>&nbsp;concatSignString(<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">Map<\/span>&lt;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">String<\/span>,&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">String<\/span>&gt;&nbsp;map)&nbsp;{<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">Map<\/span>&lt;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">String<\/span>,&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">String<\/span>&gt;&nbsp;paramterMap&nbsp;=&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">new<\/span>&nbsp;HashMap&lt;&gt;();<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.forEach((key,&nbsp;value)&nbsp;-&gt;&nbsp;paramterMap.put(key,&nbsp;value));<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);overflow-wrap: inherit !important;word-break: inherit !important;\">\/\/&nbsp;\u6309\u7167key\u5347\u7eed\u6392\u5e8f\uff0c\u7136\u540e\u62fc\u63a5\u53c2\u6570<\/span><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">Set<\/span>&lt;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">String<\/span>&gt;&nbsp;keySet&nbsp;=&nbsp;paramterMap.keySet();<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">String<\/span>[]&nbsp;keyArray&nbsp;=&nbsp;keySet.toArray(<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">new<\/span>&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">String<\/span>[keySet.size()]);<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Arrays.sort(keyArray);<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StringBuilder&nbsp;sb&nbsp;=&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">new<\/span>&nbsp;StringBuilder();<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">for<\/span>&nbsp;(<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">String<\/span>&nbsp;k&nbsp;:&nbsp;keyArray)&nbsp;{<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">if<\/span>&nbsp;(paramterMap.<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">get<\/span>(k).trim().length()&nbsp;&gt;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(174, 135, 250);overflow-wrap: inherit !important;word-break: inherit !important;\">0<\/span>)&nbsp;{<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);overflow-wrap: inherit !important;word-break: inherit !important;\">\/\/&nbsp;\u53c2\u6570\u503c\u4e3a\u7a7a\uff0c\u5219\u4e0d\u53c2\u4e0e\u7b7e\u540d<\/span><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sb.append(k).append(<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);overflow-wrap: inherit !important;word-break: inherit !important;\">\"=\"<\/span>).append(paramterMap.<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">get<\/span>(k).trim()).append(<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);overflow-wrap: inherit !important;word-break: inherit !important;\">\"&amp;\"<\/span>);<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">return<\/span>&nbsp;sb.toString();<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;}<br style=\"outline: 0px;\"  \/><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);overflow-wrap: inherit !important;word-break: inherit !important;\">\/**<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;\u83b7\u53d6\u65b9\u6cd5\u4e0a\u7684@NotRepeatSubmit\u6ce8\u89e3<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;handler<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*\/<\/span><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">static<\/span>&nbsp;NotRepeatSubmit&nbsp;getNotRepeatSubmit(<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">Object<\/span>&nbsp;handler)&nbsp;{<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">if<\/span>&nbsp;(handler&nbsp;instanceof&nbsp;HandlerMethod)&nbsp;{<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HandlerMethod&nbsp;handlerMethod&nbsp;=&nbsp;(HandlerMethod)&nbsp;handler;<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Method&nbsp;method&nbsp;=&nbsp;handlerMethod.getMethod();<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NotRepeatSubmit&nbsp;annotation&nbsp;=&nbsp;method.getAnnotation(NotRepeatSubmit.<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">class<\/span>);<br style=\"outline: 0px;\"  \/><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">return<\/span>&nbsp;annotation;<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br style=\"outline: 0px;\"  \/><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">return<\/span>&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">null<\/span>;<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;}<br style=\"outline: 0px;\"  \/>}<br style=\"outline: 0px;\"  \/><\/code><\/pre>\n<p style=\"margin-top: 1.3em;margin-bottom: 1.3em;outline: 0px;color: inherit;font-family: system-ui, -apple-system, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;font-size: inherit;letter-spacing: 0.544px;white-space: normal;background-color: rgb(255, 255, 255);line-height: inherit;\">ApiResponse<\/p>\n<pre style=\"outline: 0px;color: inherit;font-size: inherit;letter-spacing: 0.544px;background-color: rgb(255, 255, 255);line-height: inherit;\"><code style=\"margin-right: 2px;margin-left: 2px;padding: 0.5em;outline: 0px;line-height: 18px;font-size: 13px;letter-spacing: 0px;font-family: Consolas, Inconsolata, Courier, monospace;border-radius: 0px;color: rgb(169, 183, 198);background: rgb(40, 43, 46);overflow-wrap: normal !important;word-break: normal !important;overflow: auto !important;display: -webkit-box !important;\"><span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(91, 218, 237);overflow-wrap: inherit !important;word-break: inherit !important;\">@Data<\/span><br style=\"outline: 0px;\"  \/><span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(91, 218, 237);overflow-wrap: inherit !important;word-break: inherit !important;\">@Slf<\/span>4j<br style=\"outline: 0px;\"  \/>public&nbsp;<span style=\"outline: 0px;font-size: inherit;color: inherit;line-height: inherit;overflow-wrap: inherit !important;word-break: inherit !important;\"><span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">class<\/span>&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(165, 218, 45);overflow-wrap: inherit !important;word-break: inherit !important;\">ApiResponse<\/span>&lt;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(165, 218, 45);overflow-wrap: inherit !important;word-break: inherit !important;\">T<\/span>&gt;&nbsp;<\/span>{<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);overflow-wrap: inherit !important;word-break: inherit !important;\">\/<span style=\"outline: 0px;font-size: inherit;color: inherit;line-height: inherit;font-style: italic;overflow-wrap: inherit !important;word-break: inherit !important;\">**&nbsp;\u7ed3\u679c&nbsp;*<\/span>\/<\/span><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;ApiResult&nbsp;result;<br style=\"outline: 0px;\"  \/><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);overflow-wrap: inherit !important;word-break: inherit !important;\">\/<span style=\"outline: 0px;font-size: inherit;color: inherit;line-height: inherit;font-style: italic;overflow-wrap: inherit !important;word-break: inherit !important;\">**&nbsp;\u6570\u636e&nbsp;*<\/span>\/<\/span><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;T&nbsp;data;<br style=\"outline: 0px;\"  \/><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);overflow-wrap: inherit !important;word-break: inherit !important;\">\/<span style=\"outline: 0px;font-size: inherit;color: inherit;line-height: inherit;font-style: italic;overflow-wrap: inherit !important;word-break: inherit !important;\">**&nbsp;\u7b7e\u540d&nbsp;*<\/span>\/<\/span><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">String<\/span>&nbsp;sign;<br style=\"outline: 0px;\"  \/><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">static<\/span>&nbsp;&lt;T&gt;&nbsp;ApiResponse&nbsp;success(T&nbsp;data)&nbsp;{<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">return<\/span>&nbsp;response(ApiCodeEnum.SUCCESS.getCode(),&nbsp;ApiCodeEnum.SUCCESS.getMsg(),&nbsp;data);<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;}<br style=\"outline: 0px;\"  \/><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">static<\/span>&nbsp;ApiResponse&nbsp;error(<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">String<\/span>&nbsp;code,&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">String<\/span>&nbsp;msg)&nbsp;{<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">return<\/span>&nbsp;response(code,&nbsp;msg,&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">null<\/span>);<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;}<br style=\"outline: 0px;\"  \/><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">static<\/span>&nbsp;&lt;T&gt;&nbsp;ApiResponse&nbsp;response(<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">String<\/span>&nbsp;code,&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">String<\/span>&nbsp;msg,&nbsp;T&nbsp;data)&nbsp;{<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ApiResult&nbsp;result&nbsp;=&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">new<\/span>&nbsp;ApiResult(code,&nbsp;msg);<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ApiResponse&nbsp;response&nbsp;=&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">new<\/span>&nbsp;ApiResponse();<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;response.setResult(result);<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;response.setData(data);<br style=\"outline: 0px;\"  \/><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">String<\/span>&nbsp;sign&nbsp;=&nbsp;signData(data);<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;response.setSign(sign);<br style=\"outline: 0px;\"  \/><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">return<\/span>&nbsp;response;<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;}<br style=\"outline: 0px;\"  \/><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">static<\/span>&nbsp;&lt;T&gt;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">String<\/span>&nbsp;signData(T&nbsp;data)&nbsp;{<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);overflow-wrap: inherit !important;word-break: inherit !important;\">\/\/&nbsp;TODO&nbsp;\u67e5\u8be2key<\/span><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">String<\/span>&nbsp;key&nbsp;=&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);overflow-wrap: inherit !important;word-break: inherit !important;\">\"12345678954556\"<\/span>;<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">Map<\/span>&lt;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">String<\/span>,&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">String<\/span>&gt;&nbsp;responseMap&nbsp;=&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">null<\/span>;<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">try<\/span>&nbsp;{<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;responseMap&nbsp;=&nbsp;getFields(data);<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">catch<\/span>&nbsp;(IllegalAccessException&nbsp;e)&nbsp;{<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">return<\/span>&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">null<\/span>;<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">String<\/span>&nbsp;urlComponent&nbsp;=&nbsp;ApiUtil.concatSignString(responseMap);<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">String<\/span>&nbsp;signature&nbsp;=&nbsp;urlComponent&nbsp;+&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(238, 220, 112);overflow-wrap: inherit !important;word-break: inherit !important;\">\"key=\"<\/span>&nbsp;+&nbsp;key;<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">String<\/span>&nbsp;sign&nbsp;=&nbsp;MD5Util.encode(signature);<br style=\"outline: 0px;\"  \/><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">return<\/span>&nbsp;sign;<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;}<br style=\"outline: 0px;\"  \/><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(128, 128, 128);overflow-wrap: inherit !important;word-break: inherit !important;\">\/**<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;data&nbsp;\u53cd\u5c04\u7684\u5bf9\u8c61,\u83b7\u53d6\u5bf9\u8c61\u7684\u5b57\u6bb5\u540d\u548c\u503c<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@throws&nbsp;IllegalArgumentException<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@throws&nbsp;IllegalAccessException<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*\/<\/span><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">static<\/span>&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">Map<\/span>&lt;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">String<\/span>,&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">String<\/span>&gt;&nbsp;getFields(<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">Object<\/span>&nbsp;data)&nbsp;throws&nbsp;IllegalAccessException,&nbsp;IllegalArgumentException&nbsp;{<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">if<\/span>&nbsp;(data&nbsp;==&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">null<\/span>)&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">return<\/span>&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">null<\/span>;<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">Map<\/span>&lt;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">String<\/span>,&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">String<\/span>&gt;&nbsp;map&nbsp;=&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">new<\/span>&nbsp;HashMap&lt;&gt;();<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Field[]&nbsp;fields&nbsp;=&nbsp;data.getClass().getDeclaredFields();<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">for<\/span>&nbsp;(<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">int<\/span>&nbsp;i&nbsp;=&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(174, 135, 250);overflow-wrap: inherit !important;word-break: inherit !important;\">0<\/span>;&nbsp;i&nbsp;&lt;&nbsp;fields.length;&nbsp;i++)&nbsp;{<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Field&nbsp;field&nbsp;=&nbsp;fields[i];<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;field.setAccessible(<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">true<\/span>);<br style=\"outline: 0px;\"  \/><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">String<\/span>&nbsp;name&nbsp;=&nbsp;field.getName();<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">Object<\/span>&nbsp;value&nbsp;=&nbsp;field.<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">get<\/span>(data);<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">if<\/span>&nbsp;(field.<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">get<\/span>(data)&nbsp;!=&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">null<\/span>)&nbsp;{<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.put(name,&nbsp;value.toString());<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br style=\"outline: 0px;\"  \/><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">return<\/span>&nbsp;map;<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;}<br style=\"outline: 0px;\"  \/>}<br style=\"outline: 0px;\"  \/><\/code><\/pre>\n<h3 style=\"margin-top: 1.3em;margin-bottom: 1.3em;outline: 0px;font-weight: bold;font-size: 1.1em;color: inherit;font-family: system-ui, -apple-system, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;letter-spacing: 0.544px;white-space: normal;background-color: rgb(255, 255, 255);line-height: inherit;border-bottom: 2px solid rgb(65, 105, 225);\"><span style=\"margin-right: 3px;padding-top: 3px;padding-right: 6px;padding-left: 6px;outline: 0px;font-size: inherit;line-height: inherit;display: inline-block;font-weight: normal;background: rgb(65, 105, 225);color: rgb(255, 255, 255);border-top-right-radius: 3px;border-top-left-radius: 3px;\">ThreadLocal<\/span><\/h3>\n<p style=\"margin-top: 1.3em;margin-bottom: 1.3em;outline: 0px;color: inherit;font-family: system-ui, -apple-system, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;font-size: inherit;letter-spacing: 0.544px;white-space: normal;background-color: rgb(255, 255, 255);line-height: inherit;\">ThreadLocal\u662f\u7ebf\u7a0b\u5185\u7684\u5168\u5c40\u4e0a\u4e0b\u6587\u3002\u5c31\u662f\u5728\u5355\u4e2a\u7ebf\u7a0b\u4e2d\uff0c\u65b9\u6cd5\u4e4b\u95f4\u5171\u4eab\u7684\u5185\u5b58\uff0c\u6bcf\u4e2a\u65b9\u6cd5\u90fd\u53ef\u4ee5\u4ece\u8be5\u4e0a\u4e0b\u6587\u4e2d\u83b7\u53d6\u503c\u548c\u4fee\u6539\u503c\u3002<\/p>\n<p style=\"margin-top: 1.3em;margin-bottom: 1.3em;outline: 0px;color: inherit;font-family: system-ui, -apple-system, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;font-size: inherit;letter-spacing: 0.544px;white-space: normal;background-color: rgb(255, 255, 255);line-height: inherit;\">\u5b9e\u9645\u6848\u4f8b\uff1a<\/p>\n<p style=\"margin-top: 1.3em;margin-bottom: 1.3em;outline: 0px;color: inherit;font-family: system-ui, -apple-system, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;font-size: inherit;letter-spacing: 0.544px;white-space: normal;background-color: rgb(255, 255, 255);line-height: inherit;\">\u5728\u8c03\u7528api\u65f6\u90fd\u4f1a\u4f20\u4e00\u4e2atoken\u53c2\u6570\uff0c\u901a\u5e38\u4f1a\u5199\u4e00\u4e2a\u62e6\u622a\u5668\u6765\u6821\u9a8ctoken\u662f\u5426\u5408\u6cd5\uff0c\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7token\u627e\u5230\u5bf9\u5e94\u7684\u7528\u6237\u4fe1\u606f(User)\uff0c\u5982\u679ctoken\u5408\u6cd5\uff0c\u7136\u540e\u5c06\u7528\u6237\u4fe1\u606f\u5b58\u50a8\u5230ThreadLocal\u4e2d\uff0c\u8fd9\u6837\u65e0\u8bba\u662f\u5728controller\u3001service\u3001dao\u7684\u54ea\u4e00\u5c42\u90fd\u80fd\u8bbf\u95ee\u5230\u8be5\u7528\u6237\u7684\u4fe1\u606f\u3002\u4f5c\u7528\u7c7b\u4f3c\u4e8eWeb\u4e2d\u7684request\u4f5c\u7528\u57df\u3002<\/p>\n<p style=\"margin-top: 1.3em;margin-bottom: 1.3em;outline: 0px;color: inherit;font-family: system-ui, -apple-system, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;font-size: inherit;letter-spacing: 0.544px;white-space: normal;background-color: rgb(255, 255, 255);line-height: inherit;\">\u4f20\u7edf\u65b9\u5f0f\u6211\u4eec\u8981\u5728\u65b9\u6cd5\u4e2d\u8bbf\u95ee\u67d0\u4e2a\u53d8\u91cf\uff0c\u53ef\u4ee5\u901a\u8fc7\u4f20\u53c2\u7684\u5f62\u5f0f\u5f80\u65b9\u6cd5\u4e2d\u4f20\u53c2\uff0c\u5982\u679c\u591a\u4e2a\u65b9\u6cd5\u90fd\u8981\u4f7f\u7528\u90a3\u4e48\u6bcf\u4e2a\u65b9\u6cd5\u90fd\u8981\u4f20\u53c2\uff1b\u5982\u679c\u4f7f\u7528ThreadLocal\u6240\u6709\u65b9\u6cd5\u5c31\u4e0d\u9700\u8981\u4f20\u8be5\u53c2\u6570\u4e86\uff0c\u6bcf\u4e2a\u65b9\u6cd5\u90fd\u53ef\u4ee5\u901a\u8fc7ThreadLocal\u6765\u8bbf\u95ee\u8be5\u503c\u3002<\/p>\n<p style=\"margin-top: 1.3em;margin-bottom: 1.3em;outline: 0px;color: inherit;font-family: system-ui, -apple-system, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;font-size: inherit;letter-spacing: 0.544px;white-space: normal;background-color: rgb(255, 255, 255);line-height: inherit;\">ThreadLocalUtil.set(\"key\", value); \u4fdd\u5b58\u503c<br style=\"outline: 0px;\"  \/>T value = ThreadLocalUtil.get(\"key\"); \u83b7\u53d6\u503c<br  \/><\/p>\n<pre style=\"outline: 0px;color: inherit;font-size: inherit;letter-spacing: 0.544px;background-color: rgb(255, 255, 255);line-height: inherit;\"><code style=\"margin-right: 2px;margin-left: 2px;padding: 0.5em;outline: 0px;line-height: 18px;font-size: 13px;letter-spacing: 0px;font-family: Consolas, Inconsolata, Courier, monospace;border-radius: 0px;color: rgb(169, 183, 198);background: rgb(40, 43, 46);overflow-wrap: normal !important;word-break: normal !important;overflow: auto !important;display: -webkit-box !important;\">public&nbsp;<span style=\"outline: 0px;font-size: inherit;color: inherit;line-height: inherit;overflow-wrap: inherit !important;word-break: inherit !important;\"><span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">class<\/span>&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(165, 218, 45);overflow-wrap: inherit !important;word-break: inherit !important;\">ThreadLocalUtil<\/span>&lt;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(165, 218, 45);overflow-wrap: inherit !important;word-break: inherit !important;\">T<\/span>&gt;&nbsp;<\/span>{<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">static<\/span>&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">final<\/span>&nbsp;ThreadLocal&lt;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">Map<\/span>&lt;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">String<\/span>,&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">Object<\/span>&gt;&gt;&nbsp;threadLocal&nbsp;=&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">new<\/span>&nbsp;ThreadLocal()&nbsp;{<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(91, 218, 237);overflow-wrap: inherit !important;word-break: inherit !important;\">@Override<\/span><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;protected&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">Map<\/span>&lt;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">String<\/span>,&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">Object<\/span>&gt;&nbsp;initialValue()&nbsp;{<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">return<\/span>&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">new<\/span>&nbsp;HashMap&lt;&gt;(<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(174, 135, 250);overflow-wrap: inherit !important;word-break: inherit !important;\">4<\/span>);<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;};<br style=\"outline: 0px;\"  \/><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">static<\/span>&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">Map<\/span>&lt;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">String<\/span>,&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">Object<\/span>&gt;&nbsp;getThreadLocal(){<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">return<\/span>&nbsp;threadLocal.<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">get<\/span>();<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;}<br style=\"outline: 0px;\"  \/><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">static<\/span>&nbsp;&lt;T&gt;&nbsp;T&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">get<\/span>(<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">String<\/span>&nbsp;key)&nbsp;{<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">Map<\/span>&nbsp;map&nbsp;=&nbsp;(<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">Map<\/span>)threadLocal.<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">get<\/span>();<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">return<\/span>&nbsp;(T)map.<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">get<\/span>(key);<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;}<br style=\"outline: 0px;\"  \/><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">static<\/span>&nbsp;&lt;T&gt;&nbsp;T&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">get<\/span>(<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">String<\/span>&nbsp;key,T&nbsp;defaultValue)&nbsp;{<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">Map<\/span>&nbsp;map&nbsp;=&nbsp;(<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">Map<\/span>)threadLocal.<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">get<\/span>();<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">return<\/span>&nbsp;(T)map.<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">get<\/span>(key)&nbsp;==&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">null<\/span>&nbsp;?&nbsp;defaultValue&nbsp;:&nbsp;(T)map.<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">get<\/span>(key);<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;}<br style=\"outline: 0px;\"  \/><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">static<\/span>&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">void<\/span>&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">set<\/span>(<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">String<\/span>&nbsp;key,&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">Object<\/span>&nbsp;value)&nbsp;{<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">Map<\/span>&nbsp;map&nbsp;=&nbsp;(<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">Map<\/span>)threadLocal.<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">get<\/span>();<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.put(key,&nbsp;value);<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;}<br style=\"outline: 0px;\"  \/><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">static<\/span>&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">void<\/span>&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">set<\/span>(<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">Map<\/span>&lt;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">String<\/span>,&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">Object<\/span>&gt;&nbsp;keyValueMap)&nbsp;{<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">Map<\/span>&nbsp;map&nbsp;=&nbsp;(<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">Map<\/span>)threadLocal.<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">get<\/span>();<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.putAll(keyValueMap);<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;}<br style=\"outline: 0px;\"  \/><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">static<\/span>&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">void<\/span>&nbsp;remove()&nbsp;{<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;threadLocal.remove();<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;}<br style=\"outline: 0px;\"  \/><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">static<\/span>&nbsp;&lt;T&gt;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">Map<\/span>&lt;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">String<\/span>,T&gt;&nbsp;fetchVarsByPrefix(<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">String<\/span>&nbsp;prefix)&nbsp;{<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">Map<\/span>&lt;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">String<\/span>,T&gt;&nbsp;vars&nbsp;=&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">new<\/span>&nbsp;HashMap&lt;&gt;();<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">if<\/span>(&nbsp;prefix&nbsp;==&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">null<\/span>&nbsp;){<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">return<\/span>&nbsp;vars;<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">Map<\/span>&nbsp;map&nbsp;=&nbsp;(<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">Map<\/span>)threadLocal.<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">get<\/span>();<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">Set<\/span>&lt;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">Map<\/span>.Entry&gt;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">set<\/span>&nbsp;=&nbsp;map.entrySet();<br style=\"outline: 0px;\"  \/><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">for<\/span>(&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">Map<\/span>.Entry&nbsp;entry&nbsp;:&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">set<\/span>){<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">Object<\/span>&nbsp;key&nbsp;=&nbsp;entry.getKey();<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">if<\/span>(&nbsp;key&nbsp;instanceof&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">String<\/span>&nbsp;){<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">if<\/span>(&nbsp;((<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">String<\/span>)&nbsp;key).startsWith(prefix)&nbsp;){<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vars.put((<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">String<\/span>)key,(T)entry.getValue());<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">return<\/span>&nbsp;vars;<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;}<br style=\"outline: 0px;\"  \/><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">static<\/span>&nbsp;&lt;T&gt;&nbsp;T&nbsp;remove(<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">String<\/span>&nbsp;key)&nbsp;{<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">Map<\/span>&nbsp;map&nbsp;=&nbsp;(<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">Map<\/span>)threadLocal.<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">get<\/span>();<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">return<\/span>&nbsp;(T)map.remove(key);<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;}<br style=\"outline: 0px;\"  \/><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">static<\/span>&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">void<\/span>&nbsp;clear(<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">String<\/span>&nbsp;prefix)&nbsp;{<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">if<\/span>(&nbsp;prefix&nbsp;==&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">null<\/span>&nbsp;){<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">return<\/span>;<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">Map<\/span>&nbsp;map&nbsp;=&nbsp;(<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">Map<\/span>)threadLocal.<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">get<\/span>();<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">Set<\/span>&lt;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">Map<\/span>.Entry&gt;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">set<\/span>&nbsp;=&nbsp;map.entrySet();<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">List<\/span>&lt;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">String<\/span>&gt;&nbsp;removeKeys&nbsp;=&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">new<\/span>&nbsp;ArrayList&lt;&gt;();<br style=\"outline: 0px;\"  \/><br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">for<\/span>(&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">Map<\/span>.Entry&nbsp;entry&nbsp;:&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">set<\/span>&nbsp;){<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">Object<\/span>&nbsp;key&nbsp;=&nbsp;entry.getKey();<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">if<\/span>(&nbsp;key&nbsp;instanceof&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">String<\/span>&nbsp;){<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">if<\/span>(&nbsp;((<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">String<\/span>)&nbsp;key).startsWith(prefix)&nbsp;){<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;removeKeys.add((<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">String<\/span>)key);<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">for<\/span>(&nbsp;<span style=\"outline: 0px;font-size: inherit;line-height: inherit;color: rgb(248, 35, 117);overflow-wrap: inherit !important;word-break: inherit !important;\">String<\/span>&nbsp;key&nbsp;:&nbsp;removeKeys&nbsp;){<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.remove(key);<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br style=\"outline: 0px;\"  \/>&nbsp;&nbsp;&nbsp;&nbsp;}<br style=\"outline: 0px;\"  \/>}<br style=\"outline: 0px;\"  \/><\/code><\/pre>\n<h3 style=\"margin-top: 1.3em;margin-bottom: 1.3em;outline: 0px;font-weight: bold;font-size: 1.1em;color: inherit;font-family: system-ui, -apple-system, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;letter-spacing: 0.544px;white-space: normal;background-color: rgb(255, 255, 255);line-height: inherit;border-bottom: 2px solid rgb(65, 105, 225);\"><span style=\"margin-right: 3px;padding-top: 3px;padding-right: 6px;padding-left: 6px;outline: 0px;font-size: inherit;line-height: inherit;display: inline-block;font-weight: normal;background: rgb(65, 105, 225);color: rgb(255, 255, 255);border-top-right-radius: 3px;border-top-left-radius: 3px;\">\u603b\u7ed3<\/span><\/h3>\n<p style=\"margin-top: 1.3em;margin-bottom: 1.3em;outline: 0px;color: inherit;font-family: system-ui, -apple-system, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, Arial, sans-serif;font-size: inherit;letter-spacing: 0.544px;white-space: normal;background-color: rgb(255, 255, 255);line-height: inherit;\">\u8fd9\u4e2a\u662f\u76ee\u524d\u7b2c\u4e09\u65b9\u6570\u636e\u63a5\u53e3\u4ea4\u4e92\u8fc7\u7a0b\u4e2d\u5e38\u7528\u7684\u4e00\u4e9b\u53c2\u6570\u4e0e\u4f7f\u7528\u793a\u4f8b\uff0c\u5e0c\u671b\u5bf9\u5927\u5bb6\u6709\u70b9\u5e2e\u52a9\u3002\u5f53\u7136\u5982\u679c\u4e3a\u4e86\u4fdd\u8bc1\u66f4\u52a0\u7684\u5b89\u5168\uff0c\u53ef\u4ee5\u52a0\u4e0aRSA,RSA2\uff0cAES\u7b49\u7b49\u52a0\u5bc6\u65b9\u5f0f\uff0c\u4fdd\u8bc1\u4e86\u6570\u636e\u7684\u66f4\u52a0\u7684\u5b89\u5168\uff0c\u4f46\u662f\u552f\u4e00\u7684\u7f3a\u70b9\u662f\u52a0\u5bc6\u4e0e\u89e3\u5bc6\u6bd4\u8f83\u8017\u8d39CPU\u7684\u8d44\u6e90\u3002<\/p>\n<section data-tool=\"mdnice\u7f16\u8f91\u5668\" data-website=\"https:\/\/www.mdnice.com\">\n<section class=\"mp_profile_iframe_wrp\"><mp-common-profile class=\"custom_select_card mp_profile_iframe\" data-pluginname=\"mpprofile\" data-weuitheme=\"light\" data-id=\"Mzg5MzgxMTIyOQ==\" data-headimg=\"http:\/\/mmbiz.qpic.cn\/mmbiz_png\/QzI3807PeUlUKxuueCHNuNOXehciaM7OXnvr0pprJIAVYOs3hiaYh5JLyrcShyLJQ8iaqjyRPJPf1Pz4v4T6j1Fxw\/0?wx_fmt=png\" data-nickname=\"\u4e00\u5b89\u672a\u6765\" data-alias=\"Yi-an_future\" data-signature=\"\u81f4\u529b\u4e8eJava\uff0c\u5927\u6570\u636e\uff1b\u5fc3\u5f97\u4ea4\u6d41\uff0c\u6280\u672f\u5206\u4eab\uff1b\" data-from=\"0\" data-weui-theme=\"light\"><\/mp-common-profile><\/section>\n<section><br  \/><\/section>\n<p style=\"margin-bottom: 20px;padding: 15px 10px;outline: 0px;white-space: normal;caret-color: rgb(0, 0, 0);line-height: 18px;background: rgb(106, 95, 101);color: white;border-radius: 8px;\" data-tool=\"mdnice\u7f16\u8f91\u5668\"><span style=\"outline: 0px;font-size: 14px;\">\u5982\u679c\u8fd9\u7bc7\u6587\u7ae0\u5bf9\u4f60\u6709\u6240\u5e2e\u52a9\uff0c\u6216\u8005\u6709\u6240\u542f\u53d1\u7684\u8bdd\uff0c\u5e2e\u5fd9<strong style=\"outline: 0px;color: rgb(245, 241, 121);\"> \u5206\u4eab\u3001\u6536\u85cf\u3001\u70b9\u8d5e\u3001\u5728\u770b<\/strong>\uff0c\u4f60\u7684\u652f\u6301\u5c31\u662f\u6211\u575a\u6301\u4e0b\u53bb\u7684\u6700\u5927\u52a8\u529b\uff01<\/span><br style=\"outline: 0px;\"  \/><\/p>\n<\/section>\n<p style=\"text-align: center;\"><img decoding=\"async\" class=\"rich_pages wxw-img lazyload\" data-galleryid=\"\" data-ratio=\"0.08658008658008658\" data-type=\"gif\" data-w=\"462\" style=\"height: auto !important;\"  data-src=\"https:\/\/wp-moto-1258805347.cos.ap-shanghai.myqcloud.com\/2023\/06\/20230627151814597.gif\" src=\"https:\/\/s.nmxc.ltd\/sakurairo_vision\/@2.6\/load_svg\/inload.svg\" onerror=\"imgError(this)\"  \/><noscript><img decoding=\"async\" class=\"rich_pages wxw-img\" data-galleryid=\"\" data-ratio=\"0.08658008658008658\" data-type=\"gif\" data-w=\"462\" style=\"height: auto !important;\"  src=\"https:\/\/wp-moto-1258805347.cos.ap-shanghai.myqcloud.com\/2023\/06\/20230627151814597.gif\"  \/><\/noscript><\/p>\n<p style=\"text-align: center;\"><a target=\"_blank\" href=\"http:\/\/mp.weixin.qq.com\/s?__biz=Mzg5MzgxMTIyOQ==&amp;mid=2247504402&amp;idx=1&amp;sn=54b4b569e575795a6811370769bbdf03&amp;chksm=c02bbd60f75c3476736c50a5aa2d5b59568248ebab1e3c07832d825f051289f1e2ea21c3d025&amp;scene=21#wechat_redirect\" textvalue=\"@Transactional\u6ce8\u89e3\u52a0\u4e0d\u52a0 rollbackFor = Exception.class \u7684\u533a\u522b\uff1f\" linktype=\"text\" imgurl=\"\" imgdata=\"null\" data-itemshowtype=\"0\" tab=\"innerlink\" data-linktype=\"2\" rel=\"noopener\" rel=\"nofollow\" >@Transactional\u6ce8\u89e3\u52a0\u4e0d\u52a0 rollbackFor = Exception.class \u7684\u533a\u522b\uff1f<\/a><\/p>\n<hr style=\"border-style: solid;border-width: 1px 0 0;border-color: rgba(0,0,0,0.1);-webkit-transform-origin: 0 0;-webkit-transform: scale(1, 0.5);transform-origin: 0 0;transform: scale(1, 0.5);\"  \/>\n<p style=\"text-align: center;\"><a target=\"_blank\" href=\"http:\/\/mp.weixin.qq.com\/s?__biz=Mzg5MzgxMTIyOQ==&amp;mid=2247503492&amp;idx=1&amp;sn=f2f254a97918925ab32a858137cc1cb2&amp;chksm=c02ba1f6f75c28e049cc9f876a553f2127c9a80ba653c5f3dd75a760aa0aadc22fedd7f3559a&amp;scene=21#wechat_redirect\" textvalue=\"\u9762\u8bd5\u5b98\uff1a\u5982\u4f55\u901a\u8fc7\u5e03\u9686\u8fc7\u6ee4\u5668\u9632\u6b62\u7f13\u5b58\u7a7f\u900f\" linktype=\"text\" imgurl=\"\" imgdata=\"null\" data-itemshowtype=\"0\" tab=\"innerlink\" data-linktype=\"2\" rel=\"noopener\" rel=\"nofollow\" >\u9762\u8bd5\u5b98\uff1a\u5982\u4f55\u901a\u8fc7\u5e03\u9686\u8fc7\u6ee4\u5668\u9632\u6b62\u7f13\u5b58\u7a7f\u900f<\/a><\/p>\n<hr style=\"border-style: solid;border-width: 1px 0 0;border-color: rgba(0,0,0,0.1);-webkit-transform-origin: 0 0;-webkit-transform: scale(1, 0.5);transform-origin: 0 0;transform: scale(1, 0.5);\"  \/>\n<p style=\"text-align: center;\"><a target=\"_blank\" href=\"http:\/\/mp.weixin.qq.com\/s?__biz=Mzg5MzgxMTIyOQ==&amp;mid=2247503431&amp;idx=1&amp;sn=abff8b927c69c7871655ead829b15c51&amp;chksm=c02ba135f75c2823b4b2dfc3b90587723c0c3f654734acc5e7f3bb071ff6d162b14677e4b48c&amp;scene=21#wechat_redirect\" textvalue=\"Java \u5b9e\u73b0\u6ed1\u5757\u9a8c\u8bc1\u7801\u767b\u5f55\u539f\u7406\u53ca\u5b8c\u6574\u6d41\u7a0b\" linktype=\"text\" imgurl=\"\" imgdata=\"null\" data-itemshowtype=\"0\" tab=\"innerlink\" data-linktype=\"2\" rel=\"noopener\" rel=\"nofollow\" >Java \u5b9e\u73b0\u6ed1\u5757\u9a8c\u8bc1\u7801\u767b\u5f55\u539f\u7406\u53ca\u5b8c\u6574\u6d41\u7a0b<\/a><\/p>\n<p style=\"text-align: center;\"><img decoding=\"async\" class=\"rich_pages wxw-img lazyload\" data-galleryid=\"\" data-ratio=\"0.1949685534591195\" data-type=\"gif\" data-w=\"636\" style=\"height: auto !important;\"  data-src=\"https:\/\/wp-moto-1258805347.cos.ap-shanghai.myqcloud.com\/2023\/06\/20230627151815123.gif\" src=\"https:\/\/s.nmxc.ltd\/sakurairo_vision\/@2.6\/load_svg\/inload.svg\" onerror=\"imgError(this)\"  \/><noscript><img decoding=\"async\" class=\"rich_pages wxw-img\" data-galleryid=\"\" data-ratio=\"0.1949685534591195\" data-type=\"gif\" data-w=\"636\" style=\"height: auto !important;\"  src=\"https:\/\/wp-moto-1258805347.cos.ap-shanghai.myqcloud.com\/2023\/06\/20230627151815123.gif\"  \/><\/noscript><\/p>\n<p style=\"display: none;\"><mp-style-type data-value=\"3\"><\/mp-style-type><\/p>\n<blockquote>\n<p>\u672c\u7bc7\u6587\u7ae0\u6765\u6e90\u4e8e\u5fae\u4fe1\u516c\u4f17\u53f7:                 \u4e00\u5b89\u672a\u6765              <\/p>\n<\/blockquote>\n<\/div>\n","raw":"","protected":false},"excerpt":{"rendered":"<p>\u5927\u5bb6\u597d\uff0c\u6211\u662f\u4e00\u5b89~ \u524d\u8a00 \u5728\u5b9e\u9645\u7684\u4e1a\u52a1\u4e2d\uff0c\u96be\u514d\u4f1a\u8ddf\u7b2c\u4e09\u65b9\u7cfb\u7edf\u8fdb\u884c\u6570\u636e\u7684\u4ea4\u4e92\u4e0e\u4f20\u9012\uff0c\u90a3\u4e48\u5982\u4f55\u4fdd\u8bc1\u6570\u636e\u5728\u4f20\u8f93\u8fc7\u7a0b\u4e2d\u7684\u5b89\u5168\u5462\uff08\u9632\u7a83\u53d6\uff09\uff1f &#8230;<\/p>\n","protected":false},"author":1,"featured_media":2340,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"emotion":"","emotion_color":"","title_style":"","license":"","footnotes":""},"categories":[2],"tags":[],"class_list":["post-2344","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-java"],"post_thumbnail_image":"https:\/\/wp-moto-1258805347.cos.ap-shanghai.myqcloud.com\/2023\/06\/20230627151811353-150x150.jpeg","content_first_image":"https:\/\/wp-moto-1258805347.cos.ap-shanghai.myqcloud.com\/2023\/06\/20230627151813936.gif","post_medium_image_300":"https:\/\/wp-moto-1258805347.cos.ap-shanghai.myqcloud.com\/2023\/06\/20230627151811353-300x127.jpeg","post_thumbnail_image_624":"https:\/\/wp-moto-1258805347.cos.ap-shanghai.myqcloud.com\/2023\/06\/20230627151811353.jpeg","post_frist_image":"https:\/\/wp-moto-1258805347.cos.ap-shanghai.myqcloud.com\/2023\/06\/20230627151813936.gif","post_medium_image":"https:\/\/wp-moto-1258805347.cos.ap-shanghai.myqcloud.com\/2023\/06\/20230627151811353-300x127.jpeg","post_large_image":"https:\/\/wp-moto-1258805347.cos.ap-shanghai.myqcloud.com\/2023\/06\/20230627151811353.jpeg","post_full_image":"https:\/\/wp-moto-1258805347.cos.ap-shanghai.myqcloud.com\/2023\/06\/20230627151811353.jpeg","post_all_images":[{"imagesurl":"https:\/\/wp-moto-1258805347.cos.ap-shanghai.myqcloud.com\/2023\/06\/20230627151813936.gif","id":"image0"},{"imagesurl":"https:\/\/wp-moto-1258805347.cos.ap-shanghai.myqcloud.com\/2023\/06\/20230627151813936.gif","id":"image1"},{"imagesurl":"https:\/\/wp-moto-1258805347.cos.ap-shanghai.myqcloud.com\/2023\/06\/20230627151814597.gif","id":"image2"},{"imagesurl":"https:\/\/wp-moto-1258805347.cos.ap-shanghai.myqcloud.com\/2023\/06\/20230627151814597.gif","id":"image3"},{"imagesurl":"https:\/\/wp-moto-1258805347.cos.ap-shanghai.myqcloud.com\/2023\/06\/20230627151815123.gif","id":"image4"},{"imagesurl":"https:\/\/wp-moto-1258805347.cos.ap-shanghai.myqcloud.com\/2023\/06\/20230627151815123.gif","id":"image5"}],"videoAdId":"","listAd":"0","listAdId":"","listAdEvery":6,"total_comments":0,"category_name":"Java","post_date":"2023-06-27","like_count":"0","praiseWord":"\u9f13\u52b1","copyright_state":"","excitationAd":"0","rewardedVideoAdId":"","detailAdId":"","detailAd":"0","enterpriseMinapp":"0","audios":[],"postImageUrl":"https:\/\/wp-moto-1258805347.cos.ap-shanghai.myqcloud.com\/2023\/05\/20230519082947553.jpg","avatarurls":[],"related_posts":null,"pageviews":276,"next_post_id":2479,"next_post_title":"Java\u5b9e\u73b0\u516b\u5927\u6392\u5e8f\u7b97\u6cd5","previous_post_id":1377,"previous_post_title":"\u9001\u7ed9Go\u5f00\u53d1\u8005\u7684Java\u57fa\u7840\u6559\u7a0b","_links":{"self":[{"href":"https:\/\/xinchewhd.com.cn\/index.php\/wp-json\/wp\/v2\/posts\/2344","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/xinchewhd.com.cn\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/xinchewhd.com.cn\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/xinchewhd.com.cn\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/xinchewhd.com.cn\/index.php\/wp-json\/wp\/v2\/comments?post=2344"}],"version-history":[{"count":0,"href":"https:\/\/xinchewhd.com.cn\/index.php\/wp-json\/wp\/v2\/posts\/2344\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/xinchewhd.com.cn\/index.php\/wp-json\/wp\/v2\/media\/2340"}],"wp:attachment":[{"href":"https:\/\/xinchewhd.com.cn\/index.php\/wp-json\/wp\/v2\/media?parent=2344"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/xinchewhd.com.cn\/index.php\/wp-json\/wp\/v2\/categories?post=2344"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/xinchewhd.com.cn\/index.php\/wp-json\/wp\/v2\/tags?post=2344"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}