{"id":418,"date":"2025-01-29T14:17:48","date_gmt":"2025-01-29T06:17:48","guid":{"rendered":"https:\/\/www.worldcodeing.com\/?p=418"},"modified":"2025-02-26T11:49:30","modified_gmt":"2025-02-26T03:49:30","slug":"%e5%b0%9a%e7%a1%85%e8%b0%b7%e5%b0%9a%e7%ad%b9%e7%bd%91%e9%a1%b9%e7%9b%ae%e4%bb%a3%e7%a0%81%e9%85%8d%e5%90%88%e7%8e%af%e5%a2%83%e6%95%b0%e6%8d%ae%e4%b8%8b%e8%bd%bd","status":"publish","type":"post","link":"https:\/\/www.worldcodeing.com\/index.php\/2025\/01\/29\/%e5%b0%9a%e7%a1%85%e8%b0%b7%e5%b0%9a%e7%ad%b9%e7%bd%91%e9%a1%b9%e7%9b%ae%e4%bb%a3%e7%a0%81%e9%85%8d%e5%90%88%e7%8e%af%e5%a2%83%e6%95%b0%e6%8d%ae%e4%b8%8b%e8%bd%bd\/","title":{"rendered":"\u5c1a\u7845\u8c37\u5c1a\u7b79\u7f51\u9879\u76ee\u4ee3\u7801+\u914d\u5408\u73af\u5883\u6570\u636e\u4e0b\u8f7d"},"content":{"rendered":"\n<figure class=\"wp-block-image size-full\"><img alt=\"\u56fe\u7247[1]-\u4e16\u754c\u4ee3\u7801\u5206\u4eab\u7f51-\u4e16\u754c\u4ee3\u7801\u5206\u4eab\u7f51\" loading=\"lazy\" decoding=\"async\" width=\"2468\" height=\"868\" src=\"https:\/\/www.worldcodeing.com\/wp-content\/uploads\/2025\/01\/20250129141559729-image.png\"  class=\"wp-image-425\"\/><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\">1 \u540e\u53f0\u7ba1\u7406\u7cfb\u7edf<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">1.1 \u642d\u5efa\u73af\u5883<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u4f7f\u7528 Maven \u4f5c\u4e3a\u6784\u5efa\u7ba1\u7406\u548c\u4f9d\u8d56\u7ba1\u7406\u5de5\u5177\u3002<\/li>\n\n\n\n<li>\u4f7f\u7528 SpringMVC \u4f5c\u4e3a Web \u5c42\u6846\u67b6\u3002\uff08\u666e\u901a\u8bf7\u6c42\u3001Ajax\u8bf7\u6c42\uff09\n<ul class=\"wp-block-list\">\n<li>\u666e\u901a\u8bf7\u6c42\uff1a \u8fd4\u56de\u54cd\u5e94\u4f53\u901a\u5e38\u4e3a\u4e00\u4e2a\u9875\u9762<\/li>\n\n\n\n<li>Ajax \u8bf7\u6c42\uff1a \u8fd4\u56de\u54cd\u5e94\u4f53\u901a\u5e38\u4e3a\u4e00\u4e2a JSON \u6570\u636e<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>\u4f7f\u7528 MyBatis \u4f5c\u4e3a\u6301\u4e45\u5316\u5c42\u6846\u67b6\u3002mybatis\u6846\u67b6\u6280\u672f\u603b\u7ed3\uff08PageHelper\uff09<\/li>\n\n\n\n<li>\u4f7f\u7528 MyBatis \u7684 PageHelper \u63d2\u4ef6\u5b9e\u73b0\u6570\u636e\u7684\u5206\u9875\u663e\u793a\u3002\uff08Admin \u6570\u636e\u3001Role \u6570\u636e\uff09<\/li>\n\n\n\n<li>\u4f7f\u7528 Spring \u63d0\u4f9b\u7684\u5bb9\u5668\u7ba1\u7406\u9879\u76ee\u4e2d\u7684\u7ec4\u4ef6\u3002\uff08&nbsp;Controller\u3001Service\u3001Mapper\u3001Intercept\u3001ExceptionHandler\uff09&nbsp; &nbsp;&nbsp;Spring\u6280\u672f\u603b\u7ed3\uff08\u5bb9\u5668\uff09<\/li>\n\n\n\n<li>\u501f\u52a9 SpringMVC \u63d0\u4f9b\u7684\u5f02\u5e38\u6620\u5c04\u673a\u5236\u5b9e\u73b0\u9879\u76ee\u4e2d\u9519\u8bef\u6d88\u606f\u7684\u7edf\u4e00\u7ba1\u7406\u3002\uff08\u57fa\u4e8e\u6ce8\u89e3\u3001\u57fa\u4e8e XML\uff09<\/li>\n\n\n\n<li>\u524d\u7aef\u6280\u672f\uff1aBoostrap \u4f5c\u4e3a\u524d\u7aef\u6837\u5f0f\u6846\u67b6\u3001\u4f7f\u7528 layer \u4f5c\u4e3a\u5f39\u5c42\u7ec4\u4ef6\u3001\u4f7f\u7528 zTree \u5728\u9875\u9762\u4e0a\u663e\u793a\u6811\u5f62\u7ed3\u6784<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">1.2 \u7ba1\u7406\u5458\u767b\u5f55<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u4f7f\u7528\u81ea\u5b9a\u4e49\u62e6\u622a\u5668\u68c0\u67e5\u767b\u5f55\u72b6\u6001\n<ol class=\"wp-block-list\">\n<li>\u8bf7\u6c42\u5230\u8fbeController\u524d\u5148\u7ecf\u8fc7\u81ea\u5b9a\u4e49\u62e6\u622a\u5668LoginInterceptor<\/li>\n\n\n\n<li>\u5728\u91cd\u5199\u7684\u65b9\u6cd5preHandle\u4e2d\u5224\u65adSession\u662f\u5426\u5305\u542bAdmin\uff0c\u4e0d\u5305\u542b\u629b\u51faLoginInterceptException\u5f02\u5e38\uff0c\u8fdb\u5165\u7edf\u4e00\u5f02\u5e38\u5904\u7406\u7c7b\u5904\u7406\u3002<\/li>\n<\/ol>\n<\/li>\n\n\n\n<li>\u767b\u9646\u6d41\u7a0b\n<ol class=\"wp-block-list\">\n<li>\u524d\u7aef\u53d1\u9001\u201c\/admin\/do\/login.html\u201d\u8bf7\u6c42\uff0c\u5c06loginAcct\u548cuserPswd\u53c2\u6570\u4f20\u9012\u7ed9AdminController\u3002<\/li>\n\n\n\n<li>Controller\u8c03\u7528Service\u5c42\u65b9\u6cd5getAdminByLoginAcctAndPassword\uff0cService\u5c42\u5bf9userPswd\u8fdb\u884c\u4e86MD5 \u5bc6\u7801\u52a0\u5bc6\u540e\u5904\u7406\u3002<\/li>\n\n\n\n<li>\u9a8c\u8bc1\u6210\u529f\u540e\u4e3a\u907f\u514d\u8868\u5355\u91cd\u590d\u63d0\u4ea4\u91cd\u5b9a\u5411\u56de\u7ba1\u7406\u5458\u4e2d\u5fc3\u9875\u9762&#8221;redirect:\/admmin\/to\/main\/page.html&#8221;<\/li>\n\n\n\n<li>\u9000\u51fa\u767b\u5f55<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n\n\n\n<ol class=\"wp-block-list\">\n<li>MD5\u52a0\u5bc6\u6d41\u7a0b\n<ol class=\"wp-block-list\">\n<li>MessageDigest messageDigest = MessageDigest.getInstance(&#8220;MD5&#8221;);<\/li>\n\n\n\n<li>byte[] output = messageDigest.digest(source.getBytes());<\/li>\n\n\n\n<li>String encoded= new BigInteger(1, output).toString(16). toUpperCase();<\/li>\n<\/ol>\n<\/li>\n\n\n\n<li>\u5168\u5c40\u5f02\u5e38\u5904\u7406\u7c7b\u5f02\u5e38\u5904\u7406\n<ol class=\"wp-block-list\">\n<li>Service\u5c42\u5bf9loginAcct\u548cuserPswd\u5339\u914d\u540e\u629b\u51fa\u81ea\u5b9a\u4e49\u5f02\u5e38LoginFailedException\uff0c\u7ecf\u5168\u5c40\u5f02\u5e38\u5904\u7406\u7c7b\u8df3\u8f6c\u56de\u767b\u9646\u9875\u9762<\/li>\n\n\n\n<li>\u672a\u767b\u5f55\u8bbf\u95ee\u8d44\u6e90\uff0c\u7ecf\u5168\u5c40\u5f02\u5e38\u5904\u7406\u7c7b\u8df3\u8f6c\u56de\u767b\u9646\u9875\u9762<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">1.3 \u7ba1\u7406\u5458\u7ef4\u62a4<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>&nbsp;\u91c7\u7528\u666e\u901a\u8bf7\u6c42\uff0c\u5b9e\u73b0CRUD\u529f\u80fd\u3002\u63d0\u4f9b\u4e86\u663e\u793a\u9875\u9762\u3001\u65b0\u589e\u9875\u9762\uff0c\u4fee\u6539\u9875\u9762\u3002<\/li>\n\n\n\n<li>\u663e\u793a\u529f\u80fd\uff1a\u4f7f\u7528 MyBatis \u7684 PageHelper \u63d2\u4ef6\u5b9e\u73b0\u5206\u9875\uff0c\u5728\u9875\u9762\u4e0a\u4f7f\u7528\u4e86 Pagination \u5b9e\u73b0\u6570\u5b57\u9875\u7801<\/li>\n\n\n\n<li>\u63d0\u4f9b\u4e86\u5173\u952e\u8bcd\u641c\u7d22\u529f\u80fd\uff0c\u5e76\u5728\u9875\u9762\u663e\u793a\u3002\u901a\u8fc7\u5bf9\u8bf7\u6c42\u6d88\u606f\u5934\u4fe1\u606f\u7684\u5224\u65ad\u5728\u7ed9\u51fa\u5f02\u5e38\u5904\u7406\u7ed3\u679c\u65f6\u5b9e\u73b0\u4e86\u666e\u901a\u8bf7\u6c42\u548cAjax\u8bf7\u6c42\u7684\u517c\u5bb9<\/li>\n\n\n\n<li>\u5728\u6570\u636e\u5e93\u8868\u4e2d\u7ed9 loginacct \u5b57\u6bb5\u6dfb\u52a0\u552f\u4e00\u7ea6\u675f\uff0c \u5728\u4fdd\u5b58\u4e86\u91cd\u590d\u7684 loginacct \u65f6\u89e6\u53d1\u5f02\u5e38\uff0c \u4ece\u800c\u4fdd\u8bc1\u767b\u5f55\u8d26\u53f7\u7684\u552f\u4e00<\/li>\n\n\n\n<li>\u63d0\u4f9b\u4e86\u7ed9\u7ba1\u7406\u5458\u5206\u914d\u89d2\u8272\u529f\u80fd<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">1.4 \u89d2\u8272\u7ef4\u62a4<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u4ee5 Ajax \u4ea4\u4e92\u65b9\u5f0f\u5b9e\u73b0\u6570\u636e\u7684\u589e\u5220\u6539\u67e5\u64cd\u4f5c\uff0c\u4f7f\u7528\u6a21\u6001\u6846\u5b9e\u73b0\u89d2\u8272\u6570\u636e\u7684\u589e\u5220\u6539\u3002<\/li>\n\n\n\n<li>\u63d0\u4f9b\u4e86\u7ed9\u89d2\u8272\u5206\u914d\u6743\u9650\u7684\u529f\u80fd<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">1.5 \u83dc\u5355\u7ef4\u62a4<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u4f7f\u7528 zTree \u5728\u9875\u9762\u4e0a\u663e\u793a\u6811\u5f62\u7ed3\u6784\uff0c\u5e76\u7ed3\u5408 zTree \u63d0\u4f9b\u7684 API \u663e\u793a\u81ea\u5b9a\u4e49\u56fe\u6807<\/li>\n\n\n\n<li>\u5bf9\u6811\u5f62\u8282\u70b9\u8fdb\u884c\u589e\u5220\u6539\u67e5\u64cd\u4f5c<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img alt=\"\u56fe\u7247[2]-\u4e16\u754c\u4ee3\u7801\u5206\u4eab\u7f51-\u4e16\u754c\u4ee3\u7801\u5206\u4eab\u7f51\" loading=\"lazy\" decoding=\"async\" width=\"228\" height=\"247\" src=\"https:\/\/www.worldcodeing.com\/wp-content\/uploads\/2025\/01\/20250129141254402-image.png\"  class=\"wp-image-419\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">1.6&nbsp;\u6743\u9650\u63a7\u5236<\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><img alt=\"\u56fe\u7247[3]-\u4e16\u754c\u4ee3\u7801\u5206\u4eab\u7f51-\u4e16\u754c\u4ee3\u7801\u5206\u4eab\u7f51\" loading=\"lazy\" decoding=\"async\" width=\"893\" height=\"535\" src=\"https:\/\/www.worldcodeing.com\/wp-content\/uploads\/2025\/01\/20250129141256358-image.png\"  class=\"wp-image-424\"\/><\/figure>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u601d\u8def\uff1a\u7ed9 Admin \u5206\u914d Role\uff0c\u7ed9 Role \u5206\u914d Auth<\/li>\n\n\n\n<li>\u4f7f\u7528 SpringSecurity \u63a5\u7ba1\u9879\u76ee\u7684\u767b\u5f55\u3001 \u767b\u5f55\u68c0\u67e5\u3001 \u6743\u9650\u9a8c\u8bc1<\/li>\n\n\n\n<li>SpringSecurity\u4ee3\u7801\u5b9e\u73b0\u6d41\u7a0b\n<ol class=\"wp-block-list\">\n<li>\u52a0\u4f9d\u8d56\uff0c\u5728web.xml\u914d\u7f6eDelegatingFilterProxy\u3002<\/li>\n\n\n\n<li>\u521b\u5efaUser\u7c7b\u7684\u5b50\u7c7bSecurityAdmin\uff0c\u5c06\u7ba1\u7406\u5458\u4fe1\u606f\u548c\u89d2\u8272\u6743\u9650\u4fe1\u606f\u5c01\u88c5\u8fdbSecurityAdmin\u7c7b<\/li>\n\n\n\n<li>\u521b\u5efaUserDetailsService\u63a5\u53e3\u7684\u5b9e\u73b0\u7c7bCrowdUserDetailsService\uff0c\u91cd\u5199loadUserByUsername\u65b9\u6cd5\uff0c\u5728\u65b9\u6cd5\u4f53\u5185\u67e5\u8be2\u6570\u636e\u5e93\u7684\u7ba1\u7406\u5458\u53ca\u5176\u6743\u9650\u4fe1\u606f\uff0c\u5c01\u88c5\u5230SecurityAdmin\u8fd4\u56de\u3002<\/li>\n\n\n\n<li>\u521b\u5efaWebAppSecurityConfig\u914d\u7f6e\u7c7b\uff0c\u7ee7\u627fWebSecurityConfigurerAdapter\u7236\u7c7b\uff0c\u6dfb\u52a0@Configuration\u3001@EnableWebSecurity\u3001@EnableGlobalMethodSecurity(prePostEnabled = true)\u6ce8\u89e3<\/li>\n\n\n\n<li>\u91cd\u5199\u5b9a\u5236\u8bf7\u6c42\u7684\u6388\u6743\u89c4\u5219\u65b9\u6cd5configure(HttpSecurity security)\u548c\u5b9a\u4e49\u8ba4\u8bc1\u89c4\u5219\u65b9\u6cd5configure(AuthenticationManagerBuilder builder)\u3002<\/li>\n<\/ol>\n<\/li>\n\n\n\n<li>\u603b\u7ed3\n<ol class=\"wp-block-list\">\n<li>\u8ba9 SpringSecurity \u5728\u521d\u59cb\u5316\u65f6\u4e0d\u8981\u67e5\u627e IOC \u5bb9\u5668\uff0c \u800c\u662f\u5728\u7b2c\u4e00\u6b21\u8bf7\u6c42\u65f6\u67e5\u627e\uff1b\u67e5\u627e\u7684 IOC \u5bb9\u5668\u4e5f\u6539\u6210\u4e86\u67e5\u627e SpringMVC \u7684 IOC \u5bb9\u5668\uff08\u4e5f\u5c31\u662f\u7531 DispatcherServlet\u7684\u7236\u7c7b FrameworkServlet \u521d\u59cb\u5316\u7684 IOC \u5bb9\u5668\uff09\u3002TODO\uff1a\u6539\u6e90\u7801\u6216\u8005\u6539\u914d\u7f6e\u626b\u63cf\u6d6e\u70b9\u5305<\/li>\n\n\n\n<li>\u767b\u9646\u68c0\u67e5\u662fSpringSecurity\u5185\u7f6e\u7684\uff0c\u81ea\u5df1\u4e0d\u7528\u5b9e\u73b0\u3002<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n\n\n\n<h1 class=\"wp-block-heading\">2 \u524d\u53f0\u4f1a\u5458\u7cfb\u7edf<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">2.0&nbsp;\u642d\u5efa\u73af\u5883&nbsp;&nbsp; &nbsp;<\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><img alt=\"\u56fe\u7247[4]-\u4e16\u754c\u4ee3\u7801\u5206\u4eab\u7f51-\u4e16\u754c\u4ee3\u7801\u5206\u4eab\u7f51\" loading=\"lazy\" decoding=\"async\" width=\"1026\" height=\"463\" src=\"https:\/\/www.worldcodeing.com\/wp-content\/uploads\/2025\/01\/20250129141255491-image.png\"  class=\"wp-image-420\"\/><\/figure>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u5fae\u670d\u52a1\u5de5\u7a0b\uff0c\u4f7f\u7528SpringBoot\u521b\u5efa\n<ol class=\"wp-block-list\">\n<li>\u521b\u5efamysql&nbsp;provider\u5de5\u7a0b\uff0c\u4f7f\u7528\u5230mysql\u6280\u672f<\/li>\n\n\n\n<li>\u521b\u5efaredis&nbsp;provider\u5de5\u7a0b\uff0c\u4f7f\u7528\u5230redis\u6280\u672f<\/li>\n\n\n\n<li>\u521b\u5efaauthentication&nbsp;consumer\u5de5\u7a0b\uff0c\u4f1a\u5458\u767b\u5f55\u6ce8\u518c\uff0c\u6743\u9650\u63a7\u5236\u529f\u80fd\uff08\u77ed\u4fe1\u63a5\u53e3\uff0cSpringSession\uff09<\/li>\n\n\n\n<li>\u521b\u5efaproject&nbsp;consumer\u5de5\u7a0b\uff0c\u9879\u76ee\u7ba1\u7406\u529f\u80fd\uff08OSS\u670d\u52a1\uff09<\/li>\n\n\n\n<li>\u521b\u5efaorder&nbsp;consumer\u5de5\u7a0b\uff0c\u8ba2\u5355\u5de5\u7a0b<\/li>\n\n\n\n<li>\u521b\u5efapay&nbsp;consumer\u5de5\u7a0b\uff0c\u652f\u4ed8\u529f\u80fd\uff08\u652f\u4ed8\u5b9d\u63a5\u53e3\uff09<\/li>\n<\/ol>\n<\/li>\n\n\n\n<li>SpringCloud\u7ba1\u7406\u5de5\u7a0b\n<ol class=\"wp-block-list\">\n<li>\u521b\u5efaeureka\u6ce8\u518c\u4e2d\u5fc3\u5de5\u7a0b<\/li>\n\n\n\n<li>\u521b\u5efazuul\u7f51\u5173\u5de5\u7a0b<\/li>\n<\/ol>\n<\/li>\n\n\n\n<li>\u8f85\u52a9\u5c42\n<ol class=\"wp-block-list\">\n<li>\u521b\u5efaentity\u5de5\u7a0b\uff0c\u5b9a\u4e49\u5b9e\u4f53\u7c7b\uff08VO\uff0cPO\uff09<\/li>\n\n\n\n<li>\u521b\u5efaAPI\u5de5\u7a0b\uff0c\u8c03\u7528\u8fdc\u7a0b\u7684mysql\u548credis\u63a5\u53e3\uff0c\u4e3aconsumer\u5de5\u7a0b\u63d0\u4f9bservice\u529f\u80fd\uff0c\u4f7f\u7528\u5230Feign\u6280\u672f\uff0cfeign\u5185\u7f6e\u4e86Ribbon<\/li>\n\n\n\n<li>\u4f7f\u7528\u539f\u6709\u7684util\u5de5\u7a0b<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n\n\n\n<p>TODO\uff1aSpringBoot\u6280\u672f\u603b\u7ed3\uff08Thymeleaf\u3001SpringSession\uff09&nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<\/p>\n\n\n\n<p>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp; &nbsp;SpringCloud\u6280\u672f\u603b\u7ed3\uff08Eureka\u3001Feign\u3001Ribbon\u3001Zuul\uff09<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">2.1&nbsp;\u5b9e\u4f53\u7c7b\u5de5\u7a0b\u8be6\u89e3<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>VO\uff1aView Object \u89c6\u56fe\u5bf9\u8c61\n<ul class=\"wp-block-list\">\n<li>\u7528\u9014 1\uff1a \u63a5\u6536\u6d4f\u89c8\u5668\u53d1\u9001\u8fc7\u6765\u7684\u6570\u636e<\/li>\n\n\n\n<li>\u7528\u9014 2\uff1a \u628a\u6570\u636e\u53d1\u9001\u7ed9\u6d4f\u89c8\u5668\u53bb\u663e\u793a<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>PO\uff1aPersistent Object \u6301\u4e45\u5316\u5bf9\u8c61\n<ul class=\"wp-block-list\">\n<li>\u7528\u9014 1\uff1a \u5c06\u6570\u636e\u5c01\u88c5\u5230 PO \u5bf9\u8c61\u5b58\u5165\u6570\u636e\u5e93<\/li>\n\n\n\n<li>\u7528\u9014 2\uff1a \u5c06\u6570\u636e\u5e93\u6570\u636e\u67e5\u8be2\u51fa\u6765\u5b58\u5165 PO \u5bf9\u8c61\u3002\u6240\u4ee5 PO \u5bf9\u8c61\u662f\u548c\u6570\u636e\u5e93\u8868\u5bf9\u5e94\uff0c \u4e00\u4e2a\u6570\u636e\u5e93\u8868\u5bf9\u5e94\u4e00\u4e2a PO \u5bf9\u8c61<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>DO\uff1aData Object \u6570\u636e\u5bf9\u8c61\n<ul class=\"wp-block-list\">\n<li>\u7528\u9014 1\uff1a \u4ece Redis \u67e5\u8be2\u5f97\u5230\u6570\u636e\u5c01\u88c5\u4e3a DO \u5bf9\u8c61<\/li>\n\n\n\n<li>\u7528\u9014 2\uff1a \u4ece ElasticSearch \u67e5\u8be2\u5f97\u5230\u6570\u636e\u5c01\u88c5\u4e3a DO \u5bf9\u8c61<\/li>\n\n\n\n<li>\u7528\u9014 3\uff1a \u4ece Solr \u67e5\u8be2\u5f97\u5230\u6570\u636e\u5c01\u88c5\u4e3a DO \u5bf9\u8c61\u3002\u4ece\u4e2d\u95f4\u4ef6\u6216\u5176\u4ed6\u7b2c\u4e09\u65b9\u63a5\u53e3\u67e5\u8be2\u5230\u7684\u6570\u636e\u5c01\u88c5\u4e3a DO \u5bf9\u8c61<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>DTO\uff1aData Transfer Object \u6570\u636e\u4f20\u8f93\u5bf9\u8c61\n<ul class=\"wp-block-list\">\n<li>\u7528\u9014 1\uff1a \u4ece Consumer \u53d1\u9001\u6570\u636e\u5230 Provider<\/li>\n\n\n\n<li>\u7528\u9014 2\uff1a Provider \u8fd4\u56de\u6570\u636e\u7ed9 Consumer<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img alt=\"\u56fe\u7247[5]-\u4e16\u754c\u4ee3\u7801\u5206\u4eab\u7f51-\u4e16\u754c\u4ee3\u7801\u5206\u4eab\u7f51\" loading=\"lazy\" decoding=\"async\" width=\"714\" height=\"424\" src=\"https:\/\/www.worldcodeing.com\/wp-content\/uploads\/2025\/01\/20250129141255756-image.png\"  class=\"wp-image-421\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">2.2&nbsp;Eureka\u6ce8\u518c\u4e2d\u5fc3\u5de5\u7a0b\u3001Zuul\u7f51\u5173\u5de5\u7a0b<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">(1)&nbsp;eureka\u7684properties.yml\u914d\u7f6e<\/h3>\n\n\n\n<p>\u53ea\u9700\u8981\u914d\u7f6e\u7aef\u53e3\u53f7\uff0c\u540d\u79f0\uff0c\u6ce8\u518c\u4e2d\u5fc3url\u5373\u53ef<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">server:\n  port: 1007\nspring:\n  application:\n    name: atguigu-crowd-eureka\neureka:\n  instance:\n    hostname: localhost\n  client:\n    register-with-eureka: false\n    fetch-registry: false\n    service-url:\n      defaultZone: http:\/\/${eureka.instance.hostname}:${server.port}\/eureka\/<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">(2)&nbsp;zuul\u7684properties.yml\u914d\u7f6e<\/h3>\n\n\n\n<pre class=\"wp-block-preformatted\">server:\n  port: 1017\nspring:\n  application:\n    name: atguigu-crowd-zuul\n  redis:\n    host: 127.0.0.1\n  session:\n    store-type: redis\neureka:\n  client:\n    service-url:\n      defaultZone: http:\/\/localhost:1007\/eureka\/\nzuul:\n  ignored-services: \"*\"\n  sensitive-headers: \"*\"\n  routes:                            \/\/\u8def\u7531\u8f6c\u53d1\uff0c\u6839\u636e\u8bf7\u6c42url\uff0c\u8df3\u8f6c\u81f3\u76f8\u5e94\u7684\u5fae\u670d\u52a1\u5de5\u7a0b\n    crowd-portal:\n      service-id: atguigu-crowd-auth\n      path: \/**\n    crowd-project:\n      service-id: atguigu-crowd-project\n      path: \/project\/**\n    crowd-order:\n      service-id: atguigu-crowd-order\n      path: \/order\/**\n    crowd-pay:\n      service-id: atguigu-crowd-pay\n      path: \/pay\/**\nribbon:\n  ReadTimeout: 10000\n  ConnectTimeout: 10000<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">(3)&nbsp;CrowdAccessFilter\u7c7b<\/h3>\n\n\n\n<figure class=\"wp-block-image size-full\"><img alt=\"\u56fe\u7247[6]-\u4e16\u754c\u4ee3\u7801\u5206\u4eab\u7f51-\u4e16\u754c\u4ee3\u7801\u5206\u4eab\u7f51\" loading=\"lazy\" decoding=\"async\" width=\"684\" height=\"352\" src=\"https:\/\/www.worldcodeing.com\/wp-content\/uploads\/2025\/01\/20250129141255115-image.png\"  class=\"wp-image-422\"\/><\/figure>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u521b\u5efaCrowdAccessFilter\u7c7b\u7ee7\u627f\u7236\u7c7bZuulFilter\uff0c\u91cd\u5199\u7236\u7c7b4\u4e2a\u65b9\u6cd5<\/li>\n\n\n\n<li>shouldFilter()\u65b9\u6cd5\u6765\u5224\u65ad\u8bf7\u6c42\u8d44\u6e90\u662f\u5426\u5e94\u8be5\u88ab\u62e6\u622a<\/li>\n\n\n\n<li>run()\u8868\u793a\u6267\u884c\u62e6\u622a\uff0c\u8fdb\u884c\u767b\u5f55\u68c0\u67e5<\/li>\n\n\n\n<li>filterType()\u8fd4\u56de\u201cpre\u201d\uff0c\u8868\u793a\u5728\u5230\u8fbe\u76ee\u6807\u5fae\u670d\u52a1\u524d\u6267\u884c\u62e6\u622a<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">2.3&nbsp;authentication&nbsp;consumer\u5de5\u7a0b\uff0c\u7528\u6237\u767b\u5f55\u6ce8\u518c<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">(1)&nbsp;properties.yml\u914d\u7f6e<\/h3>\n\n\n\n<pre class=\"wp-block-preformatted\">server:\n  port: 1011\nspring:\n  application:\n    name: atguigu-crowd-auth\n  thymeleaf:\n    prefix: classpath:\/templates\/\n    suffix: .html\n  redis:\n    host: 127.0.0.1\n  session:\n    store-type: redis\neureka:\n  client:\n    service-url:\n      defaultZone: http:\/\/localhost:1007\/eureka\/\nshort:\n  message:\n    app-code: 0dd300edf0944d9cae335dedbf21c94f\n    host: http:\/\/dingxin.market.alicloudapi.com\n    path: \/dx\/sendSms\n    method: POST\n    tpl_id: TP1711063<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">(2)&nbsp;\u6ce8\u518c\u529f\u80fd<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u6d41\u7a0b\uff1a\n<ol class=\"wp-block-list\">\n<li>\u53d1\u9001\u9a8c\u8bc1\u7801\uff0c\u8c03\u7528\u7b2c\u4e09\u65b9\u63a5\u53e3\u53d1\u9001\u9a8c\u8bc1\u7801\uff0c\u5c06\u624b\u673a\u53f7\u4e0e\u9a8c\u8bc1\u7801\u4ee5key-value\u7684\u5f62\u5f0f\u8c03\u7528redis\u8fdc\u7a0b\u63a5\u53e3\u4fdd\u5b58\u5230redis\u3002<\/li>\n\n\n\n<li>\u6ce8\u518c\u5bf9\u6bd4\u9a8c\u8bc1\u7801\uff0c\u4f7f\u7528 BCryptPasswordEncoder \u5b9e\u73b0\u5e26\u76d0\u503c\u7684\u52a0\u5bc6\u5bc6\u7801\uff0c\u8c03\u7528mysql\u8fdc\u7a0b\u63a5\u53e3\u5c06\u7528\u6237\u4fe1\u606f\u4fdd\u5b58\u5230\u6570\u636e\u5e93\u3002<\/li>\n<\/ol>\n<\/li>\n\n\n\n<li>\u77ed\u4fe1\u670d\u52a1&nbsp;TODO<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">(3)&nbsp;\u767b\u9646\u529f\u80fd<\/h3>\n\n\n\n<figure class=\"wp-block-image size-full\"><img alt=\"\u56fe\u7247[7]-\u4e16\u754c\u4ee3\u7801\u5206\u4eab\u7f51-\u4e16\u754c\u4ee3\u7801\u5206\u4eab\u7f51\" loading=\"lazy\" decoding=\"async\" width=\"590\" height=\"359\" src=\"https:\/\/www.worldcodeing.com\/wp-content\/uploads\/2025\/01\/20250129141256335-image.png\"  class=\"wp-image-423\"\/><\/figure>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u4f7f\u7528 SpringSession \u89e3\u51b3\u5206\u5e03\u5f0f\u73af\u5883\u4e0b Session \u4e0d\u4e00\u81f4\u95ee\u9898\uff0c\u4f7f\u7528 Redis \u4f5c\u4e3a SpringSession \u7684 Session \u5e93\n<ol class=\"wp-block-list\">\n<li>\u6dfb\u52a0\u4f9d\u8d56<\/li>\n\n\n\n<li>\u5728\u914d\u7f6e\u6587\u4ef6\u4e2d\u914d\u7f6e\uff1asession.store-type=redis<\/li>\n<\/ol>\n<\/li>\n\n\n\n<li>\u5728 Zuul \u4e2d\u4f7f\u7528 ZuulFilter \u5b9e\u73b0\u767b\u5f55\u72b6\u6001\u68c0\u67e5\uff0c\u5728 Zuul \u4e2d\u914d\u7f6e\u8bbf\u95ee\u5404\u4e2a\u5177\u4f53\u5fae\u670d\u52a1\u7684\u8def\u7531\u89c4\u5219\u3002<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">2.4&nbsp;<strong>project&nbsp;consumer\u5de5\u7a0b<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">(1)&nbsp;yml\u914d\u7f6e\u6587\u4ef6<\/h3>\n\n\n\n<pre class=\"wp-block-preformatted\">server:\n  port: 1012\nspring:\n  application:\n    name: atguigu-crowd-project\n  thymeleaf:\n    prefix: classpath:\/templates\/\n    suffix: .html\n  redis:\n    host: 127.0.0.1\n  session:\n    store-type: redis\neureka:\n  client:\n    service-url:\n      defaultZone: http:\/\/localhost:1007\/eureka\/\naliyun:\n  oss:                \/\/\u963f\u91cc\u4e91OSS\u76f8\u5173\u914d\u7f6e\n    access-key-id: \n    access-key-secret: \n    bucket-domain: \n    bucket-name: \n    end-point: <\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">(2)&nbsp;\u53d1\u5e03\u9879\u76ee<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u6d41\u7a0b\n<ul class=\"wp-block-list\">\n<li>\u9605\u8bfb\u5e76\u540c\u610f\u534f\u8bae<\/li>\n\n\n\n<li>\u786e\u8ba4\u9879\u76ee\u53ca\u53d1\u8d77\u4eba\u4fe1\u606f\uff0c\u9700\u8981\u4e0a\u4f20\u56fe\u7247\u3002\u63a5\u6536\u6570\u636e\u5c01\u88c5\u5230ProjectVO\u5bf9\u8c61\u3002<\/li>\n\n\n\n<li>\u6dfb\u52a0\u56de\u62a5\uff0c\u91c7\u7528Ajax\u8bf7\u6c42\uff0c\u4e5f\u9700\u8981\u4e0a\u4f20\u56fe\u7247\u3002\u56de\u62a5\u4fe1\u606f\u5c01\u88c5\u5230ReturnVO\u5bf9\u8c61\uff0c\u6dfb\u52a0\u5230ProjectVO\u5bf9\u8c61\u5bf9\u8c61\u5c5e\u6027\u4e2d\u3002<\/li>\n\n\n\n<li>\u6dfb\u52a0\u6536\u6b3e\u8d26\u53f7\u53ca\u6cd5\u4eba\u4fe1\u606f\u3002\u63a5\u6536\u6570\u636e\u5c01\u88c5\u5230MemberConfirmInfoVO\u5bf9\u8c61\u4e2d\uff0c\u6dfb\u52a0\u5230ProjectVO\u5bf9\u8c61\u5bf9\u8c61\u5c5e\u6027\u4e2d\u3002<\/li>\n\n\n\n<li>\u63d0\u4ea4\uff0c\u540e\u53f0\u5ba1\u6838\u3002\u5c06ProjectVO\u5bf9\u8c61\u4f20\u9012\u7ed9Mysql\u8fdc\u7a0b\u63a5\u53e3\uff0c\u4fdd\u5b58\u5230\u591a\u4e2a\u6570\u636e\u5e93\u8868\u4e2d<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>\u6570\u636e\u5e93\n<ul class=\"wp-block-list\">\n<li>t_project\uff1a\u5b58\u50a8\u9879\u76ee\u4fe1\u606f<\/li>\n\n\n\n<li>t_project_tag\uff1a\u9879\u76ee\u4e0e\u6807\u7b7e\u5173\u8054\u8868\uff0c\u591a\u5bf9\u591a\u5173\u7cfb<\/li>\n\n\n\n<li>t_project_type\uff1a\u9879\u76ee\u4e0e\u7c7b\u578b\u5173\u8054\u8868\uff0c\u591a\u5bf9\u591a\u5173\u7cfb<\/li>\n\n\n\n<li>t_project_item_pic\uff1a\u9879\u76ee\u56fe\u7247\u8868\uff0c\u4e00\u5bf9\u591a\u5173\u7cfb<\/li>\n\n\n\n<li>t_tag\uff1a\u6807\u7b7e\u4fe1\u606f\u8868<\/li>\n\n\n\n<li>t_type\uff1a\u7c7b\u578b\u4fe1\u606f\u8868<\/li>\n\n\n\n<li>t_return\uff1a\u56de\u62a5\u4fe1\u606f\u8868<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>OSS \u5bf9\u8c61\u5b58\u50a8\u670d\u52a1<\/li>\n<\/ol>\n\n\n\n<p>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;\u4f7f\u7528\u963f\u91cc\u4e91 OSS \u5bf9\u8c61\u5b58\u50a8\u670d\u52a1\u4fdd\u5b58\u7528\u6237\u4e0a\u4f20\u7684\u56fe\u7247<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">(3)&nbsp;\u5c55\u793a\u9879\u76ee<\/h3>\n\n\n\n<p>\u3000\u3000\u8c03\u7528Mysql\u8fdc\u7a0b\u63a5\u53e3\u83b7\u53d6\u9879\u76ee\u4fe1\u606f\u5c01\u88c5\u5230DetailProjectVO\u4e2d\uff0c\u524d\u9875\u9762\u7aef\u663e\u793a<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">2.5 \u652f\u6301\u9879\u76ee\uff08Order\u5de5\u7a0b\u3001Pay\u5de5\u7a0b\uff09<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">(1) Pay\u5de5\u7a0byml\u914d\u7f6e\u6587\u4ef6<\/h3>\n\n\n\n<pre class=\"wp-block-preformatted\">server:\n  port: 1014\nspring:\n  application:\n    name: atguigu-crowd-pay\n  thymeleaf:\n    prefix: classpath:\/templates\/\n    suffix: .html\n  redis:\n    host: 127.0.0.1\n  session:\n    store-type: redis\neureka:\n  client:\n    service-url:\n      defaultZone: http:\/\/localhost:1007\/eureka\/\nali:\n  pay:\n    alipay-public-key:     \/\/\u963f\u91cc\u4e91\u516c\u94a5\n    app-id: 2021000117639310\n    charset: utf-8\n    gateway-url: https:\/\/openapi.alipaydev.com\/gateway.do\n    merchant-private-key:  \/\/\u5546\u5bb6\u79c1\u94a5\n    notify-url: http:\/\/mdpe3u.natappfree.cc\/pay\/notify\n    return-url: http:\/\/localhost:1017\/pay\/return\n    sign-type: RSA2<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">(2)&nbsp;\u8ba2\u5355\u652f\u4ed8<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u6d41\u7a0b\n<ul class=\"wp-block-list\">\n<li>\u9879\u76ee\u8be6\u60c5\u9875\u70b9\u652f\u6301\u8fdb\u5165\u8ba2\u5355\u9875\u3002\u83b7\u53d6\u9879\u76ee\u4fe1\u606f\u5c01\u88c5\u5230OrderProjectVO\u5bf9\u8c61\u4e2d\u3002<\/li>\n\n\n\n<li>\u786e\u8ba4\u56de\u62a5\u5185\u5bb9\uff0c\u8f93\u5165\u56de\u62a5\u6570\u91cf\u3002\u83b7\u53d6\u56de\u62a5\u6570\u91cf\u5c01\u88c5\u5230OrderProjectVO\u5bf9\u8c61\u4e2d\u3002<\/li>\n\n\n\n<li>\u8f93\u5165\u6536\u8d27\u5730\u5740\u53d1\u7968\u91d1\u989d\u7b49\u4fe1\u606f\uff0c\u70b9\u51fb\u4ed8\u6b3e\uff0c\u751f\u6210\u8ba2\u5355\u3002\u7ed9\u652f\u4ed8\u5b9d\u63a5\u53e3\u53d1\u9001\u8bf7\u6c42<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<div class=\"wp-block-zibllblock-quote\"><div class=\"quote_q\"><i class=\"fa fa-quote-left\"><\/i><p>\u8f6c\u8f7d\uff1ahttps:\/\/www.cnblogs.com\/lukazan\/p\/14676902.html<\/p><\/div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>1 \u540e\u53f0\u7ba1\u7406\u7cfb\u7edf 1.1 \u642d\u5efa\u73af\u5883 1.2 \u7ba1\u7406\u5458\u767b\u5f55 1.3 \u7ba1\u7406\u5458\u7ef4\u62a4 1.4 \u89d2\u8272\u7ef4\u62a4 1.5 \u83dc\u5355\u7ef4\u62a4 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8,13,26],"tags":[24,25,21,23,28],"topics":[9],"class_list":["post-418","post","type-post","status-publish","format-standard","hentry","category-exclusive-for-vip","category-codeing","category-cloud-storage-resources","tag-java","tag-vip","tag-21","tag-23","tag-28","topics-exclusive-for-members"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.7 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>\u5c1a\u7845\u8c37\u5c1a\u7b79\u7f51\u9879\u76ee\u4ee3\u7801+\u914d\u5408\u73af\u5883\u6570\u636e\u4e0b\u8f7d - \u4e16\u754c\u4ee3\u7801\u5206\u4eab\u7f51<\/title>\n<meta name=\"description\" content=\"\u5c1a\u7845\u8c37\u5c1a\u7b79\u7f51\u9879\u76ee\u4ee3\u7801+\u914d\u5408\u73af\u5883\u6570\u636e\u4e0b\u8f7d \u6240\u6709\u7684\u6570\u636e\u548c\u89c6\u9891\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.worldcodeing.com\/index.php\/2025\/01\/29\/\u5c1a\u7845\u8c37\u5c1a\u7b79\u7f51\u9879\u76ee\u4ee3\u7801\u914d\u5408\u73af\u5883\u6570\u636e\u4e0b\u8f7d\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u5c1a\u7845\u8c37\u5c1a\u7b79\u7f51\u9879\u76ee\u4ee3\u7801+\u914d\u5408\u73af\u5883\u6570\u636e\u4e0b\u8f7d - \u4e16\u754c\u4ee3\u7801\u5206\u4eab\u7f51\" \/>\n<meta property=\"og:description\" content=\"\u5c1a\u7845\u8c37\u5c1a\u7b79\u7f51\u9879\u76ee\u4ee3\u7801+\u914d\u5408\u73af\u5883\u6570\u636e\u4e0b\u8f7d \u6240\u6709\u7684\u6570\u636e\u548c\u89c6\u9891\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.worldcodeing.com\/index.php\/2025\/01\/29\/\u5c1a\u7845\u8c37\u5c1a\u7b79\u7f51\u9879\u76ee\u4ee3\u7801\u914d\u5408\u73af\u5883\u6570\u636e\u4e0b\u8f7d\/\" \/>\n<meta property=\"og:site_name\" content=\"\u4e16\u754c\u4ee3\u7801\u5206\u4eab\u7f51\" \/>\n<meta property=\"article:published_time\" content=\"2025-01-29T06:17:48+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-02-26T03:49:30+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.worldcodeing.com\/wp-content\/uploads\/2025\/01\/20250129141559729-image.png\" \/>\n\t<meta property=\"og:image:width\" content=\"2468\" \/>\n\t<meta property=\"og:image:height\" content=\"868\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"\u4e16\u754c\u4ee3\u7801\u5206\u4eab\u7f51\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u4e16\u754c\u4ee3\u7801\u5206\u4eab\u7f51\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.worldcodeing.com\/index.php\/2025\/01\/29\/%e5%b0%9a%e7%a1%85%e8%b0%b7%e5%b0%9a%e7%ad%b9%e7%bd%91%e9%a1%b9%e7%9b%ae%e4%bb%a3%e7%a0%81%e9%85%8d%e5%90%88%e7%8e%af%e5%a2%83%e6%95%b0%e6%8d%ae%e4%b8%8b%e8%bd%bd\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.worldcodeing.com\/index.php\/2025\/01\/29\/%e5%b0%9a%e7%a1%85%e8%b0%b7%e5%b0%9a%e7%ad%b9%e7%bd%91%e9%a1%b9%e7%9b%ae%e4%bb%a3%e7%a0%81%e9%85%8d%e5%90%88%e7%8e%af%e5%a2%83%e6%95%b0%e6%8d%ae%e4%b8%8b%e8%bd%bd\/\"},\"author\":{\"name\":\"\u4e16\u754c\u4ee3\u7801\u5206\u4eab\u7f51\",\"@id\":\"https:\/\/www.worldcodeing.com\/#\/schema\/person\/12cf5be561c88aa60a66efa13777a669\"},\"headline\":\"\u5c1a\u7845\u8c37\u5c1a\u7b79\u7f51\u9879\u76ee\u4ee3\u7801+\u914d\u5408\u73af\u5883\u6570\u636e\u4e0b\u8f7d\",\"datePublished\":\"2025-01-29T06:17:48+00:00\",\"dateModified\":\"2025-02-26T03:49:30+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.worldcodeing.com\/index.php\/2025\/01\/29\/%e5%b0%9a%e7%a1%85%e8%b0%b7%e5%b0%9a%e7%ad%b9%e7%bd%91%e9%a1%b9%e7%9b%ae%e4%bb%a3%e7%a0%81%e9%85%8d%e5%90%88%e7%8e%af%e5%a2%83%e6%95%b0%e6%8d%ae%e4%b8%8b%e8%bd%bd\/\"},\"wordCount\":333,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.worldcodeing.com\/#\/schema\/person\/12cf5be561c88aa60a66efa13777a669\"},\"image\":{\"@id\":\"https:\/\/www.worldcodeing.com\/index.php\/2025\/01\/29\/%e5%b0%9a%e7%a1%85%e8%b0%b7%e5%b0%9a%e7%ad%b9%e7%bd%91%e9%a1%b9%e7%9b%ae%e4%bb%a3%e7%a0%81%e9%85%8d%e5%90%88%e7%8e%af%e5%a2%83%e6%95%b0%e6%8d%ae%e4%b8%8b%e8%bd%bd\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.worldcodeing.com\/wp-content\/uploads\/2025\/01\/20250129141559729-image.png\",\"keywords\":[\"java\",\"VIP\",\"\u4e0b\u8f7d\",\"\u6e90\u4ee3\u7801\",\"\u7f51\u76d8\u8d44\u6e90\"],\"articleSection\":[\"VIP\u4e13\u533a\",\"\u4ee3\u7801\u4e13\u533a\",\"\u7f51\u76d8\u8d44\u6e90\"],\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.worldcodeing.com\/index.php\/2025\/01\/29\/%e5%b0%9a%e7%a1%85%e8%b0%b7%e5%b0%9a%e7%ad%b9%e7%bd%91%e9%a1%b9%e7%9b%ae%e4%bb%a3%e7%a0%81%e9%85%8d%e5%90%88%e7%8e%af%e5%a2%83%e6%95%b0%e6%8d%ae%e4%b8%8b%e8%bd%bd\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.worldcodeing.com\/index.php\/2025\/01\/29\/%e5%b0%9a%e7%a1%85%e8%b0%b7%e5%b0%9a%e7%ad%b9%e7%bd%91%e9%a1%b9%e7%9b%ae%e4%bb%a3%e7%a0%81%e9%85%8d%e5%90%88%e7%8e%af%e5%a2%83%e6%95%b0%e6%8d%ae%e4%b8%8b%e8%bd%bd\/\",\"url\":\"https:\/\/www.worldcodeing.com\/index.php\/2025\/01\/29\/%e5%b0%9a%e7%a1%85%e8%b0%b7%e5%b0%9a%e7%ad%b9%e7%bd%91%e9%a1%b9%e7%9b%ae%e4%bb%a3%e7%a0%81%e9%85%8d%e5%90%88%e7%8e%af%e5%a2%83%e6%95%b0%e6%8d%ae%e4%b8%8b%e8%bd%bd\/\",\"name\":\"\u5c1a\u7845\u8c37\u5c1a\u7b79\u7f51\u9879\u76ee\u4ee3\u7801+\u914d\u5408\u73af\u5883\u6570\u636e\u4e0b\u8f7d - \u4e16\u754c\u4ee3\u7801\u5206\u4eab\u7f51\",\"isPartOf\":{\"@id\":\"https:\/\/www.worldcodeing.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.worldcodeing.com\/index.php\/2025\/01\/29\/%e5%b0%9a%e7%a1%85%e8%b0%b7%e5%b0%9a%e7%ad%b9%e7%bd%91%e9%a1%b9%e7%9b%ae%e4%bb%a3%e7%a0%81%e9%85%8d%e5%90%88%e7%8e%af%e5%a2%83%e6%95%b0%e6%8d%ae%e4%b8%8b%e8%bd%bd\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.worldcodeing.com\/index.php\/2025\/01\/29\/%e5%b0%9a%e7%a1%85%e8%b0%b7%e5%b0%9a%e7%ad%b9%e7%bd%91%e9%a1%b9%e7%9b%ae%e4%bb%a3%e7%a0%81%e9%85%8d%e5%90%88%e7%8e%af%e5%a2%83%e6%95%b0%e6%8d%ae%e4%b8%8b%e8%bd%bd\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.worldcodeing.com\/wp-content\/uploads\/2025\/01\/20250129141559729-image.png\",\"datePublished\":\"2025-01-29T06:17:48+00:00\",\"dateModified\":\"2025-02-26T03:49:30+00:00\",\"description\":\"\u5c1a\u7845\u8c37\u5c1a\u7b79\u7f51\u9879\u76ee\u4ee3\u7801+\u914d\u5408\u73af\u5883\u6570\u636e\u4e0b\u8f7d \u6240\u6709\u7684\u6570\u636e\u548c\u89c6\u9891\",\"breadcrumb\":{\"@id\":\"https:\/\/www.worldcodeing.com\/index.php\/2025\/01\/29\/%e5%b0%9a%e7%a1%85%e8%b0%b7%e5%b0%9a%e7%ad%b9%e7%bd%91%e9%a1%b9%e7%9b%ae%e4%bb%a3%e7%a0%81%e9%85%8d%e5%90%88%e7%8e%af%e5%a2%83%e6%95%b0%e6%8d%ae%e4%b8%8b%e8%bd%bd\/#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.worldcodeing.com\/index.php\/2025\/01\/29\/%e5%b0%9a%e7%a1%85%e8%b0%b7%e5%b0%9a%e7%ad%b9%e7%bd%91%e9%a1%b9%e7%9b%ae%e4%bb%a3%e7%a0%81%e9%85%8d%e5%90%88%e7%8e%af%e5%a2%83%e6%95%b0%e6%8d%ae%e4%b8%8b%e8%bd%bd\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.worldcodeing.com\/index.php\/2025\/01\/29\/%e5%b0%9a%e7%a1%85%e8%b0%b7%e5%b0%9a%e7%ad%b9%e7%bd%91%e9%a1%b9%e7%9b%ae%e4%bb%a3%e7%a0%81%e9%85%8d%e5%90%88%e7%8e%af%e5%a2%83%e6%95%b0%e6%8d%ae%e4%b8%8b%e8%bd%bd\/#primaryimage\",\"url\":\"https:\/\/www.worldcodeing.com\/wp-content\/uploads\/2025\/01\/20250129141559729-image.png\",\"contentUrl\":\"https:\/\/www.worldcodeing.com\/wp-content\/uploads\/2025\/01\/20250129141559729-image.png\",\"width\":2468,\"height\":868},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.worldcodeing.com\/index.php\/2025\/01\/29\/%e5%b0%9a%e7%a1%85%e8%b0%b7%e5%b0%9a%e7%ad%b9%e7%bd%91%e9%a1%b9%e7%9b%ae%e4%bb%a3%e7%a0%81%e9%85%8d%e5%90%88%e7%8e%af%e5%a2%83%e6%95%b0%e6%8d%ae%e4%b8%8b%e8%bd%bd\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.worldcodeing.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u5c1a\u7845\u8c37\u5c1a\u7b79\u7f51\u9879\u76ee\u4ee3\u7801+\u914d\u5408\u73af\u5883\u6570\u636e\u4e0b\u8f7d\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.worldcodeing.com\/#website\",\"url\":\"https:\/\/www.worldcodeing.com\/\",\"name\":\"\u4e16\u754c\u4ee3\u7801\u5206\u4eab\u7f51\",\"description\":\"\u8ba9\u6bcf\u4e00\u4e2a\u4eba\u90fd\u611f\u53d7\u4ee3\u7801\u7684\u4e50\u8da3\",\"publisher\":{\"@id\":\"https:\/\/www.worldcodeing.com\/#\/schema\/person\/12cf5be561c88aa60a66efa13777a669\"},\"alternateName\":\"\u4e16\u754c\u4ee3\u7801\u5206\u4eab\u7f51\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.worldcodeing.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"zh-Hans\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/www.worldcodeing.com\/#\/schema\/person\/12cf5be561c88aa60a66efa13777a669\",\"name\":\"\u4e16\u754c\u4ee3\u7801\u5206\u4eab\u7f51\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.worldcodeing.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.worldcodeing.com\/wp-content\/uploads\/2025\/01\/worldcodeing2.png\",\"contentUrl\":\"https:\/\/www.worldcodeing.com\/wp-content\/uploads\/2025\/01\/worldcodeing2.png\",\"width\":640,\"height\":480,\"caption\":\"\u4e16\u754c\u4ee3\u7801\u5206\u4eab\u7f51\"},\"logo\":{\"@id\":\"https:\/\/www.worldcodeing.com\/#\/schema\/person\/image\/\"},\"sameAs\":[\"https:\/\/www.worldcodeing.com\"],\"url\":\"https:\/\/www.worldcodeing.com\/index.php\/author\/1\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"\u5c1a\u7845\u8c37\u5c1a\u7b79\u7f51\u9879\u76ee\u4ee3\u7801+\u914d\u5408\u73af\u5883\u6570\u636e\u4e0b\u8f7d - \u4e16\u754c\u4ee3\u7801\u5206\u4eab\u7f51","description":"\u5c1a\u7845\u8c37\u5c1a\u7b79\u7f51\u9879\u76ee\u4ee3\u7801+\u914d\u5408\u73af\u5883\u6570\u636e\u4e0b\u8f7d \u6240\u6709\u7684\u6570\u636e\u548c\u89c6\u9891","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.worldcodeing.com\/index.php\/2025\/01\/29\/\u5c1a\u7845\u8c37\u5c1a\u7b79\u7f51\u9879\u76ee\u4ee3\u7801\u914d\u5408\u73af\u5883\u6570\u636e\u4e0b\u8f7d\/","og_locale":"zh_CN","og_type":"article","og_title":"\u5c1a\u7845\u8c37\u5c1a\u7b79\u7f51\u9879\u76ee\u4ee3\u7801+\u914d\u5408\u73af\u5883\u6570\u636e\u4e0b\u8f7d - \u4e16\u754c\u4ee3\u7801\u5206\u4eab\u7f51","og_description":"\u5c1a\u7845\u8c37\u5c1a\u7b79\u7f51\u9879\u76ee\u4ee3\u7801+\u914d\u5408\u73af\u5883\u6570\u636e\u4e0b\u8f7d \u6240\u6709\u7684\u6570\u636e\u548c\u89c6\u9891","og_url":"https:\/\/www.worldcodeing.com\/index.php\/2025\/01\/29\/\u5c1a\u7845\u8c37\u5c1a\u7b79\u7f51\u9879\u76ee\u4ee3\u7801\u914d\u5408\u73af\u5883\u6570\u636e\u4e0b\u8f7d\/","og_site_name":"\u4e16\u754c\u4ee3\u7801\u5206\u4eab\u7f51","article_published_time":"2025-01-29T06:17:48+00:00","article_modified_time":"2025-02-26T03:49:30+00:00","og_image":[{"width":2468,"height":868,"url":"https:\/\/www.worldcodeing.com\/wp-content\/uploads\/2025\/01\/20250129141559729-image.png","type":"image\/png"}],"author":"\u4e16\u754c\u4ee3\u7801\u5206\u4eab\u7f51","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"\u4e16\u754c\u4ee3\u7801\u5206\u4eab\u7f51","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"4 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.worldcodeing.com\/index.php\/2025\/01\/29\/%e5%b0%9a%e7%a1%85%e8%b0%b7%e5%b0%9a%e7%ad%b9%e7%bd%91%e9%a1%b9%e7%9b%ae%e4%bb%a3%e7%a0%81%e9%85%8d%e5%90%88%e7%8e%af%e5%a2%83%e6%95%b0%e6%8d%ae%e4%b8%8b%e8%bd%bd\/#article","isPartOf":{"@id":"https:\/\/www.worldcodeing.com\/index.php\/2025\/01\/29\/%e5%b0%9a%e7%a1%85%e8%b0%b7%e5%b0%9a%e7%ad%b9%e7%bd%91%e9%a1%b9%e7%9b%ae%e4%bb%a3%e7%a0%81%e9%85%8d%e5%90%88%e7%8e%af%e5%a2%83%e6%95%b0%e6%8d%ae%e4%b8%8b%e8%bd%bd\/"},"author":{"name":"\u4e16\u754c\u4ee3\u7801\u5206\u4eab\u7f51","@id":"https:\/\/www.worldcodeing.com\/#\/schema\/person\/12cf5be561c88aa60a66efa13777a669"},"headline":"\u5c1a\u7845\u8c37\u5c1a\u7b79\u7f51\u9879\u76ee\u4ee3\u7801+\u914d\u5408\u73af\u5883\u6570\u636e\u4e0b\u8f7d","datePublished":"2025-01-29T06:17:48+00:00","dateModified":"2025-02-26T03:49:30+00:00","mainEntityOfPage":{"@id":"https:\/\/www.worldcodeing.com\/index.php\/2025\/01\/29\/%e5%b0%9a%e7%a1%85%e8%b0%b7%e5%b0%9a%e7%ad%b9%e7%bd%91%e9%a1%b9%e7%9b%ae%e4%bb%a3%e7%a0%81%e9%85%8d%e5%90%88%e7%8e%af%e5%a2%83%e6%95%b0%e6%8d%ae%e4%b8%8b%e8%bd%bd\/"},"wordCount":333,"commentCount":0,"publisher":{"@id":"https:\/\/www.worldcodeing.com\/#\/schema\/person\/12cf5be561c88aa60a66efa13777a669"},"image":{"@id":"https:\/\/www.worldcodeing.com\/index.php\/2025\/01\/29\/%e5%b0%9a%e7%a1%85%e8%b0%b7%e5%b0%9a%e7%ad%b9%e7%bd%91%e9%a1%b9%e7%9b%ae%e4%bb%a3%e7%a0%81%e9%85%8d%e5%90%88%e7%8e%af%e5%a2%83%e6%95%b0%e6%8d%ae%e4%b8%8b%e8%bd%bd\/#primaryimage"},"thumbnailUrl":"https:\/\/www.worldcodeing.com\/wp-content\/uploads\/2025\/01\/20250129141559729-image.png","keywords":["java","VIP","\u4e0b\u8f7d","\u6e90\u4ee3\u7801","\u7f51\u76d8\u8d44\u6e90"],"articleSection":["VIP\u4e13\u533a","\u4ee3\u7801\u4e13\u533a","\u7f51\u76d8\u8d44\u6e90"],"inLanguage":"zh-Hans","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.worldcodeing.com\/index.php\/2025\/01\/29\/%e5%b0%9a%e7%a1%85%e8%b0%b7%e5%b0%9a%e7%ad%b9%e7%bd%91%e9%a1%b9%e7%9b%ae%e4%bb%a3%e7%a0%81%e9%85%8d%e5%90%88%e7%8e%af%e5%a2%83%e6%95%b0%e6%8d%ae%e4%b8%8b%e8%bd%bd\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.worldcodeing.com\/index.php\/2025\/01\/29\/%e5%b0%9a%e7%a1%85%e8%b0%b7%e5%b0%9a%e7%ad%b9%e7%bd%91%e9%a1%b9%e7%9b%ae%e4%bb%a3%e7%a0%81%e9%85%8d%e5%90%88%e7%8e%af%e5%a2%83%e6%95%b0%e6%8d%ae%e4%b8%8b%e8%bd%bd\/","url":"https:\/\/www.worldcodeing.com\/index.php\/2025\/01\/29\/%e5%b0%9a%e7%a1%85%e8%b0%b7%e5%b0%9a%e7%ad%b9%e7%bd%91%e9%a1%b9%e7%9b%ae%e4%bb%a3%e7%a0%81%e9%85%8d%e5%90%88%e7%8e%af%e5%a2%83%e6%95%b0%e6%8d%ae%e4%b8%8b%e8%bd%bd\/","name":"\u5c1a\u7845\u8c37\u5c1a\u7b79\u7f51\u9879\u76ee\u4ee3\u7801+\u914d\u5408\u73af\u5883\u6570\u636e\u4e0b\u8f7d - \u4e16\u754c\u4ee3\u7801\u5206\u4eab\u7f51","isPartOf":{"@id":"https:\/\/www.worldcodeing.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.worldcodeing.com\/index.php\/2025\/01\/29\/%e5%b0%9a%e7%a1%85%e8%b0%b7%e5%b0%9a%e7%ad%b9%e7%bd%91%e9%a1%b9%e7%9b%ae%e4%bb%a3%e7%a0%81%e9%85%8d%e5%90%88%e7%8e%af%e5%a2%83%e6%95%b0%e6%8d%ae%e4%b8%8b%e8%bd%bd\/#primaryimage"},"image":{"@id":"https:\/\/www.worldcodeing.com\/index.php\/2025\/01\/29\/%e5%b0%9a%e7%a1%85%e8%b0%b7%e5%b0%9a%e7%ad%b9%e7%bd%91%e9%a1%b9%e7%9b%ae%e4%bb%a3%e7%a0%81%e9%85%8d%e5%90%88%e7%8e%af%e5%a2%83%e6%95%b0%e6%8d%ae%e4%b8%8b%e8%bd%bd\/#primaryimage"},"thumbnailUrl":"https:\/\/www.worldcodeing.com\/wp-content\/uploads\/2025\/01\/20250129141559729-image.png","datePublished":"2025-01-29T06:17:48+00:00","dateModified":"2025-02-26T03:49:30+00:00","description":"\u5c1a\u7845\u8c37\u5c1a\u7b79\u7f51\u9879\u76ee\u4ee3\u7801+\u914d\u5408\u73af\u5883\u6570\u636e\u4e0b\u8f7d \u6240\u6709\u7684\u6570\u636e\u548c\u89c6\u9891","breadcrumb":{"@id":"https:\/\/www.worldcodeing.com\/index.php\/2025\/01\/29\/%e5%b0%9a%e7%a1%85%e8%b0%b7%e5%b0%9a%e7%ad%b9%e7%bd%91%e9%a1%b9%e7%9b%ae%e4%bb%a3%e7%a0%81%e9%85%8d%e5%90%88%e7%8e%af%e5%a2%83%e6%95%b0%e6%8d%ae%e4%b8%8b%e8%bd%bd\/#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.worldcodeing.com\/index.php\/2025\/01\/29\/%e5%b0%9a%e7%a1%85%e8%b0%b7%e5%b0%9a%e7%ad%b9%e7%bd%91%e9%a1%b9%e7%9b%ae%e4%bb%a3%e7%a0%81%e9%85%8d%e5%90%88%e7%8e%af%e5%a2%83%e6%95%b0%e6%8d%ae%e4%b8%8b%e8%bd%bd\/"]}]},{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.worldcodeing.com\/index.php\/2025\/01\/29\/%e5%b0%9a%e7%a1%85%e8%b0%b7%e5%b0%9a%e7%ad%b9%e7%bd%91%e9%a1%b9%e7%9b%ae%e4%bb%a3%e7%a0%81%e9%85%8d%e5%90%88%e7%8e%af%e5%a2%83%e6%95%b0%e6%8d%ae%e4%b8%8b%e8%bd%bd\/#primaryimage","url":"https:\/\/www.worldcodeing.com\/wp-content\/uploads\/2025\/01\/20250129141559729-image.png","contentUrl":"https:\/\/www.worldcodeing.com\/wp-content\/uploads\/2025\/01\/20250129141559729-image.png","width":2468,"height":868},{"@type":"BreadcrumbList","@id":"https:\/\/www.worldcodeing.com\/index.php\/2025\/01\/29\/%e5%b0%9a%e7%a1%85%e8%b0%b7%e5%b0%9a%e7%ad%b9%e7%bd%91%e9%a1%b9%e7%9b%ae%e4%bb%a3%e7%a0%81%e9%85%8d%e5%90%88%e7%8e%af%e5%a2%83%e6%95%b0%e6%8d%ae%e4%b8%8b%e8%bd%bd\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.worldcodeing.com\/"},{"@type":"ListItem","position":2,"name":"\u5c1a\u7845\u8c37\u5c1a\u7b79\u7f51\u9879\u76ee\u4ee3\u7801+\u914d\u5408\u73af\u5883\u6570\u636e\u4e0b\u8f7d"}]},{"@type":"WebSite","@id":"https:\/\/www.worldcodeing.com\/#website","url":"https:\/\/www.worldcodeing.com\/","name":"\u4e16\u754c\u4ee3\u7801\u5206\u4eab\u7f51","description":"\u8ba9\u6bcf\u4e00\u4e2a\u4eba\u90fd\u611f\u53d7\u4ee3\u7801\u7684\u4e50\u8da3","publisher":{"@id":"https:\/\/www.worldcodeing.com\/#\/schema\/person\/12cf5be561c88aa60a66efa13777a669"},"alternateName":"\u4e16\u754c\u4ee3\u7801\u5206\u4eab\u7f51","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.worldcodeing.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"zh-Hans"},{"@type":["Person","Organization"],"@id":"https:\/\/www.worldcodeing.com\/#\/schema\/person\/12cf5be561c88aa60a66efa13777a669","name":"\u4e16\u754c\u4ee3\u7801\u5206\u4eab\u7f51","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.worldcodeing.com\/#\/schema\/person\/image\/","url":"https:\/\/www.worldcodeing.com\/wp-content\/uploads\/2025\/01\/worldcodeing2.png","contentUrl":"https:\/\/www.worldcodeing.com\/wp-content\/uploads\/2025\/01\/worldcodeing2.png","width":640,"height":480,"caption":"\u4e16\u754c\u4ee3\u7801\u5206\u4eab\u7f51"},"logo":{"@id":"https:\/\/www.worldcodeing.com\/#\/schema\/person\/image\/"},"sameAs":["https:\/\/www.worldcodeing.com"],"url":"https:\/\/www.worldcodeing.com\/index.php\/author\/1\/"}]}},"_links":{"self":[{"href":"https:\/\/www.worldcodeing.com\/index.php\/wp-json\/wp\/v2\/posts\/418","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.worldcodeing.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.worldcodeing.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.worldcodeing.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.worldcodeing.com\/index.php\/wp-json\/wp\/v2\/comments?post=418"}],"version-history":[{"count":3,"href":"https:\/\/www.worldcodeing.com\/index.php\/wp-json\/wp\/v2\/posts\/418\/revisions"}],"predecessor-version":[{"id":487,"href":"https:\/\/www.worldcodeing.com\/index.php\/wp-json\/wp\/v2\/posts\/418\/revisions\/487"}],"wp:attachment":[{"href":"https:\/\/www.worldcodeing.com\/index.php\/wp-json\/wp\/v2\/media?parent=418"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.worldcodeing.com\/index.php\/wp-json\/wp\/v2\/categories?post=418"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.worldcodeing.com\/index.php\/wp-json\/wp\/v2\/tags?post=418"},{"taxonomy":"topics","embeddable":true,"href":"https:\/\/www.worldcodeing.com\/index.php\/wp-json\/wp\/v2\/topics?post=418"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}