{"version":"https:\/\/jsonfeed.org\/version\/1","title":"Miyago's Home","subtitle":"Just Monika","icon":"https:\/\/miyago9267.com\/assets\/favicon.ico","description":"I m noob, just Monika","home_page_url":"https:\/\/miyago9267.com","items":[{"id":"https:\/\/miyago9267.com\/Diary\/2026\/0526\/","url":"https:\/\/miyago9267.com\/Diary\/2026\/0526\/","title":"[\u672d\u8a18] 20260526 - \u518d\u4e00\u6b21\u7684\u65e5\u672c\u904a","date_published":"2026-05-25T16:00:00.000Z","content_html":"<p>\u8ddf\u53bb\u5e74\u4e00\u6a23<br \/>\n\u6211\u4eca\u5e74\u4e5f\u53bb\u4e86\u6771\u4eac\u5834\u7684Tano*c Tour<br \/>\n\u4e5f\u70ba\u4e86\u53bb\u4e00\u5834Live<br \/>\n\u70ba\u4e86\u4e00\u789f\u918b\u800c\u5b89\u6392\u4e86Live\u4ee5\u5916\u4e00\u76e4\u9903\u5b50\u7684\u884c\u7a0b<br \/>\n\uff08\u5176\u5be6\u672c\u4f86\u8981\u53bb\u5927\u962a\u548c\u798f\u5ca1<br \/>\n\u4f46\u5404\u81ea\u649e\u4e86\u53f0\u7063\u52de\u52d5\u7bc0\u548c\u65e5\u672c\u9ec3\u91d1\u9031\u6240\u4ee5\u4f5c\u7f77\uff09<\/p>\n<span id=\"more\"><\/span>\n<p>\u96d6\u7136\u662f\u914d\u5957\u7684\u884c\u7a0b\u5566<br \/>\n\u4f46\u6211\u4e00\u6a23\u6392\u4e86\u5f88\u591a\u96dc\u4e03\u96dc\u516b\u7684\u884c\u7a0b\u4f86\u9806\u9053\u89c0\u5149<br \/>\n\u53cd\u800c\u61c9\u8a72\u8eab\u70ba\u918b\u7684Tano*c Tour\u6c92\u4ec0\u9ebc\u7279\u5225\u7684\u8a18\u61b6\u9ede<br \/>\n\u723d\u662f\u5f88\u723d\uff0c\u4e0d\u904e\u611f\u89ba\u9019\u6b21\u4e0d\u5982\u53bb\u5e74\u7684Tour\u548cArcaea Next Stage<\/p>\n<p>\u53ef\u4ee5\u5148\u8aaa\uff0c\u7d50\u8ad6\u8ddf\u524d\u5169\u6b21\u4f86\u4e00\u6a23<br \/>\n\u5b8c\u5168\u6c92\u6709\u4e0d\u8fd4\u53f0\u7684\u60f3\u6cd5\uff0c\u6211\u8d85\u60f3\u56de\u5bb6\u7684\u5566<br \/>\n\u4e0d\u77e5\u9053\u5176\u4ed6\u4eba\u600e\u9ebc\u770b<br \/>\n\u4e0d\u904e\u56e0\u70ba\u6211\u672c\u4f86\u5c31\u5c0d\u65e5\u672c\u6c92\u6709\u4ec0\u9ebc\u7c89\u7d05\u6ce1\u6ce1<br \/>\n\u6240\u4ee5\u4e5f\u4e26\u4e0d\u6703\u7279\u5225\u5e36\u8457\u4ec0\u9ebc\u6ffe\u93e1\u770b\u5f85\u9019\u88e1<br \/>\n\u7576\u7136\u4e5f\u5c31\u4e0d\u6703\u7522\u751f\u4e0d\u8fd4\u53f0\u7684\u611f\u60f3\u4e86<\/p>\n<h2 id=\"\u5c0d\u65e5\u672c\u6c11\u65cf\u6027\u7684\u611f\u60f3\"><a class=\"anchor\" href=\"#\u5c0d\u65e5\u672c\u6c11\u65cf\u6027\u7684\u611f\u60f3\">#<\/a> \u5c0d\u65e5\u672c\u6c11\u65cf\u6027\u7684\u611f\u60f3<\/h2>\n<p>\u96d6\u7136\u6211\u624d\u4f4f\u4e86\u4e03\u5929\uff08\u52a0\u4e0a\u53bb\u5e74\u7e3d\u8a08\u5927\u6982\u4e00\u500b\u6708\u4e86\uff09<br \/>\n\u4e0d\u904e\u6211\u89ba\u5f97\u6211\u81ea\u5df1\u5c0d\u5927\u548c\u6c11\u65cf\u5df2\u7d93\u6709\u4e00\u4e9b\u81ea\u5df1\u7684\u60f3\u6cd5\u4e86<br \/>\n\u7c21\u800c\u8a00\u4e4b\uff0c\u5c31\u662f\u6703\u6709\u4e00\u7a2e\u9019\u500b\u6c11\u65cf\u5f88\u96e3\u9760\u8fd1\u7684\u611f\u89ba<br \/>\n\u8aaa\u6bd4\u6211\u5011\u9032\u6b65\u4e5f\u5f88\u96e3\u8b1b<br \/>\n\u78ba\u5be6\u5f88\u591a\u6771\u897f\u503c\u5f97\u6211\u5011\u5b78\u7fd2<br \/>\n\u4f46\u66f4\u591a\u7684\u662f\u611f\u53d7\u5230\u300c\u9019\u500b\u6c11\u65cf\u8ddf\u6211\u5011\u5dee\u597d\u591a\u300d<br \/>\n\u4e26\u4e14\u5c0d\u5916\u4f86\u7684\u8a2a\u5ba2\u8868\u73fe\u51fa\u76f8\u7576\u7684\u4e0d\u6b61\u8fce<br \/>\n\u9019\u9ede\u771f\u7684\u8ddf\u53f0\u7063\u76f8\u5dee\u751a\u9060<br \/>\n\uff08\u9019\u6211\u771f\u4e0d\u77e5\u9053\uff0c\u641e\u4e0d\u597d\u5947\u602a\u7684\u5176\u5be6\u662f\u53f0\u7063\u4eba\uff09<\/p>\n<p>\u8ddf\u524d\u5169\u6b21\u4e0d\u540c\u7684\u662f<br \/>\n\u6211\u9019\u6b21\u7684\u884c\u7a0b\u5305\u542b\u5f88\u5927\u91cf\u7684\u7368\u884c<br \/>\n\u96d6\u7136\u624b\u6a5f\u4fdd\u6301\u806f\u7e6b<br \/>\n\u4f46\u6211\u5011\u65c5\u884c\u5718\u7684\u4e94\u4eba\u57fa\u672c\u4e0a\u662f\u5404\u8d70\u5404\u7684<br \/>\n\u52a0\u4e0a\u6211\u7684\u65e5\u6587\u6bd4\u524d\u5169\u6b21\u4f86\u8981\u9032\u6b65\u4e00\u9ede\uff08\u61c9\u8a72\uff1f<br \/>\n\u6240\u4ee5\u5728\u9019\u6b21\u507d\u672c\u570b\u4eba\u884c\u52d5\u4e2d\u770b\u51fa\u4e86\u883b\u591a\u7684\u7aef\u502a<br \/>\n\uff08\u96d6\u7136\u6211\u89ba\u5f97\u6211\u9577\u5f97\u5c31\u4e0d\u50cf\u5927\u548c\u6c11\u65cf\u7684\u81c9\u61c9\u8a72\u5f88\u597d\u5206\u8fa8\u5c31\u662f\u4e86\uff09<\/p>\n<p>\u56e0\u70ba\u5927\u793e\u6050\u7684\u95dc\u4fc2<br \/>\n\u6211\u7d55\u591a\u6578\u6642\u5019\u90fd\u662f\u5728\u89c0\u5bdf\u672c\u5730\u4eba\u5728\u5e79\u561b<br \/>\n\u7814\u7a76\u4ed6\u5011\u600e\u9ebc\u505a\u548c\u600e\u9ebc\u8aaa<br \/>\n\u63a5\u8457\u518d\u5077\u5077\u6a21\u4eff\u5b78\u8d70\u9019\u6a23<br \/>\n\u7562\u7adf\u4e5f\u6c92\u7279\u5730\u900f\u9732\u81ea\u5df1\u662f\u5916\u570b\u4eba<br \/>\n\u8af8\u5982\u5728\u7e41\u96dc\u7684\u90fd\u5fc3\u3001\u5728\u5b89\u975c\u7684\u5c0f\u5df7\u3001\u5fd9\u788c\u7684\u767d\u5929\u4e2d\u5348\u3001\u55a7\u9b27\u7684\u591c\u751f\u6d3b<br \/>\n\u6211\u90fd\u76e1\u53ef\u80fd\u5728\u4e03\u5929\u5167\u7528\u6211\u7684\u773c\u775b\u548c\u8033\u6735\u898b\u8b49<\/p>\n<p>\u6709\u500b\u73fe\u8c61\u8b93\u6211\u633a\u4e0d\u6eff\u7684<br \/>\n\u6211\u9047\u5230\u6578\u6b21\u65e5\u672c\u4eba\u5728\u77e5\u9053\u4f60\u662f\u5916\u570b\u4eba\u5f8c<br \/>\n\u8981\u561b\u76f4\u63a5\u64fa\u721b\u8b1b\u7834\u82f1\u6587 \u8981\u561b\u64fa\u721b\u628a\u4e01\u5be7\u8a9e\u62ff\u6389<br \/>\n\u800c\u7576\u4f60\u8868\u73fe\u51fa\u4f60\u6703\u4e00\u9ede\u65e5\u6587\u4e4b\u5f8c<br \/>\n\u614b\u5ea6\u53c8\u8b8a\u56de\u4f86\u5ba2\u6c23\u5ba2\u6c23\u7684\u4e86<br \/>\n\u4f46\u600e\u6a23\u90fd\u63a9\u84cb\u4e0d\u6389\u90a3\u500b\u4e0d\u60f3\u5617\u8a66\u6e9d\u901a\u7684\u614b\u5ea6<br \/>\n\u5c31\u7b97\u662f\u56e0\u70ba\u4e0a\u73ed\u6240\u4ee5\u4e0d\u60f3\u8a8d\u771f\u4f46\u4e5f\u592a\u660e\u986f\u4e86\u5427<br \/>\n<s>\u5012\u662f\u505a\u505a\u6a23\u5b50\u554a\u5582\uff5e<\/s><\/p>\n<p>\u518d\u4f86\u4e00\u9ede\u5c31\u662f<br \/>\n\u6211\u89ba\u5f97\u65e5\u672c\u4ebaky\u7684\u80fd\u529b\u4e5f\u4e0d\u662f\u5f88\u597d<br \/>\n\u53ef\u80fd\u662f\u56e0\u70ba\u65e5\u8a9e\u7684\u7279\u6027\u548c\u6c11\u65cf\u6587\u5316\u7684\u95dc\u4fc2<br \/>\n\u6211\u8001\u662f\u89ba\u5f97\u4e0d\u53ea\u6709\u6211\u9019\u7a2e\u5916\u5730\u4eba\u517c\u65e5\u6587\u521d\u5b78\u8005<br \/>\n\u9023\u4ed6\u5011\u81ea\u5df1\u672c\u5730\u4eba\u53ef\u80fd\u90fd\u4e0d\u662f\u5f88\u80fdget\u5230\u5f7c\u6b64\u9593\u5728\u9670\u967d\u602a\u6c23\u4ec0\u9ebc<br \/>\n\u6211\u8001\u662f\u5728\u81ea\u5df1\u8d70\u8d70\u5403\u5403\u7684\u6642\u5019\u88ab\u5468\u570d\u7684\u6c23\u6c1b\u5f04\u5f97\u5f88\u5c37\u5c2c<br \/>\n\u7121\u6b62\u76e1\u7684\u5546\u696d\u4e92\u5439\u5730\u7344<\/p>\n<p>\u7576\u7136\u9019\u5730\u65b9\u4e5f\u6c92\u5230\u4e0d\u597d\u5566<br \/>\n\u6211\u4e5f\u63d0\u5230\u4e86\uff0c\u65e5\u672c\u9084\u662f\u6709\u5f88\u591a\u503c\u5f97\u5b78\u7fd2\u7684\u5730\u65b9<br \/>\n\u4f8b\u5982\u6211\u9ad4\u611f\u4e0a\u665a\u4e0a\u8d70\u5728\u8def\u4e0a\u6563\u6b65\u771f\u7684\u5f88\u8212\u670d<br \/>\n\u4eba\u884c\u9053\u5341\u5206\u5bec\u655e\uff08DIO\u8a9e\u97f3<br \/>\n\u5730\u8868\u57ce\u5e02\u898f\u5283\u548c\u8857\u9053\u90fd\u5341\u5206\u4e7e\u6de8\u4fd0\u843d<br \/>\n\u96d6\u7136\u6709\u4e00\u597d\u6c92\u5169\u597d<br \/>\n\u65e5\u672c\u4eba\u771f\u7684\u5f88\u611b\u885d\u649e\u53c8\u4e0d\u611b\u8aaa\u501f\u904e<br \/>\n\u5728\u8def\u672c\u8eab\u5f88\u597d\u8d70\u7684\u540c\u6642\u53c8\u8b93\u8def\u4e0d\u597d\u8d70\u4e86<\/p>\n<h2 id=\"\u65e5\u672c\u5230\u5e95\u597d\u5728\u54ea\"><a class=\"anchor\" href=\"#\u65e5\u672c\u5230\u5e95\u597d\u5728\u54ea\">#<\/a> \u65e5\u672c\u5230\u5e95\u597d\u5728\u54ea\uff1f<\/h2>\n<p>\u771f\u8981\u6211\u8aaa<br \/>\n\u6211\u4e00\u6642\u7adf\u7136\u60f3\u4e0d\u51fa\u70ba\u4ec0\u9ebc\u5927\u5bb6\u9019\u9ebc\u559c\u6b61\u65e5\u672c<br \/>\n\u7576\u7136\uff0c\u6211\u662f\u4e5f\u4e0d\u8a0e\u53ad<br \/>\n\u4e0d\u7136\u6211\u4e0d\u6703\u4e00\u908a\u5e36\u8457\u62b1\u6028\u9084\u4e09\u756a\u5169\u6b21\u8dd1\u4f86\u7684<br \/>\n\u53ea\u662f\u6216\u8a31\u662f\u56e0\u70ba\u6211\u6c92\u6709\u5728\u9019\u88e1\u4e45\u5c45<br \/>\n\u6211\u7576\u524d\u611f\u53d7\u4e0d\u592a\u51fa\u4f86\u512a\u52e2\u5728\u54ea\u88e1<\/p>\n<p>\u6a5f\u80fd\u65b9\u4fbf\u55ce\uff1f\u53f0\u7063\u8d70\u5169\u6b65\u5c31\u662f\u8d85\u5546\uff0c\u597d\u50cf\u4e0d\u6bd4\u65e5\u672c\u5dee<\/p>\n<p>\u7269\u50f9\u4fbf\u5b9c\u55ce\uff1f\u6709\u4e9b\u5566\uff0c\u6c11\u751f\u57fa\u672c\u9700\u6c42\u78ba\u5be6\u5f88\u4fbf\u5b9c\uff0c\u4f46\u623f\u79df\u8cb4\u5230\u9760\u5317\uff0c\u8981\u904e\u5f97\u597d\u4e5f\u4e0d\u6bd4\u53f0\u5317\u4fbf\u5b9c\u5230\u54ea\u53bb<\/p>\n<p>\u74b0\u5883\u4e7e\u6de8\u55ce\uff1f\u8def\u4e0a\u7684\u8a71\u78ba\u5be6\uff0c\u4e0d\u904e\u9664\u4e86\u6211\u8d85\u5b85\u4e0d\u5e38\u51fa\u9580\u4ee5\u5916\uff0c\u9019\u7a2e\u4e8b\u60c5\u5927\u6982\u4e5f\u4e0d\u6703\u6bcf\u5929\u53bb\u6ce8\u610f\u5c31\u662f\u4e86<\/p>\n<p>\u5e02\u5bb9\u6f02\u4eae\u55ce\uff1f\u83ef\u570b\u7f8e\u5b78\u6211\u78ba\u5be6\u4e0d\u6562\u830d\u540c\uff0c\u4f46\u5be9\u7f8e\u9019\u7a2e\u6771\u897f\u5c31\u8ddf\u627e\u5c0d\u8c61\u4e00\u6a23\uff0c\u627e\u518d\u6f02\u4eae\u7e3d\u6709\u4e00\u5929\u6703\u770b\u81a9\uff0c\u627e\u919c\u516b\u602a\u770b\u4e45\u4e86\u4e5f\u6703\u7fd2\u6163\uff0c\u6709\u601d\u9032\u53d6\u6bd4\u8f03\u91cd\u8981\uff0c\u53ea\u662f\u6539\u8b8a\u4e26\u975e\u4e00\u671d\u4e00\u5915\u7f77\u4e86<\/p>\n<p>\u4ea4\u901a\u4fbf\u5229\u55ce\uff1f\u5982\u679c\u5728\u6771\u4eac\u5730\u9435\u548c\u8d70\u8def\u78ba\u5be6\u90fd\u65b9\u4fbf\u7684\uff0c\u4f46\u6211\u88ab\u4e0a\u73ed\u65cf\u64e0\u6015\u4e86\uff0c\u6cc1\u4e14\u9019\u500b\u6a13\u5c64\u6797\u7acb\u7684\u7a0b\u5ea6\u6211\u9019\u500b\u4e09\u7dad\u8ff7\u8def\u597d\u4eba\u6703\u71d2\u8d77\u4f86\u7684<\/p>\n<p>\u751f\u6d3b\u6e05\u5e7d\u55ce\uff1f\u665a\u4e0a\u78ba\u5be6\u633a\u6e05\u5e7d\uff0c\u6cbb\u5b89\u4e5f\u76f8\u7576\u597d\uff0c\u4e0d\u904e\u592a\u904e\u65bc\u5b89\u975c\u53cd\u800c\u7d66\u4eba\u4e00\u7a2e\u9589\u585e\u611f<\/p>\n<p>\u6771\u897f\u597d\u5403\u55ce\uff1f\u6709\u597d\u5403\u7684\uff0c\u4f46\u4e0d\u4e00\u5b9a\u7ba1\u98fd\u4e5f\u4e0d\u4e00\u5b9a\u5065\u5eb7\uff0c\u5076\u723e\u4eab\u53d7\u4eab\u53d7\u9084\u662f\u53ef\u4ee5\u7684\uff0c\u53ea\u662f\u70ba\u4e86\u5403\u7684\u7559\u5728\u65e5\u672c\u4e5f\u6709\u9ede\u90a3\u5565\u3002\u5594\u5c0d\uff0c\u9019\u500b\u5730\u65b9\u5c0d\u4e0d\u6703\u559d\u9152\u6216\u4e0d\u80fd\u559d\u9152\u7684\u4eba\u633a\u4e0d\u53cb\u5584\u7684\u5012\u662f\u771f\u7684<\/p>\n<p>\u6211\u81ea\u5df1\u4e82\u60f3\u80fd\u60f3\u60f3\u51fa\u4f86\u7684<br \/>\n\u5927\u6982\u5c31\u662f\u672a\u4f86\u7559\u5b78\u505a\u7814\u7a76\u5927\u6982\u5f88\u6709\u5229\u9019\u6a23<br \/>\n\u7562\u7adf\u9019\u662f\u6211\u5c11\u6578\u80fd\u5920\u9ad4\u6703\u5230\u65e5\u672c\u5320\u4eba\u7cbe\u795e\u7684\u5730\u65b9\u4e86\uff08\u770b\u770b\u90a3\u500b\u8afe\u734e\u5f97\u734e\u6578<br \/>\n\u9019\u4e5f\u662f\u6211\u5f9e\u4e00\u958b\u59cb\u53ea\u628a\u7559\u5b78\u9078\u9805\u653e\u5fb7\u570b\u3001\u745e\u58eb\u548c\u52a0\u62ff\u5927<br \/>\n\u5f8c\u4f86\u53c8\u591a\u4e86\u4e00\u500b\u65e5\u672c\u7684\u539f\u56e0<br \/>\n\u8981\u8aaa\u6211\u672a\u4f86\u6703\u4e0d\u6703\u7e7c\u7e8c\u5b78\u7fd2\u65e5\u6587\u548c\u6e96\u5099\u7559\u5b78<br \/>\n\u90a3\u80af\u5b9a\u9084\u662f\u6703\u7684\uff0c\u7562\u7adf\u672c\u4f86\u5c31\u662f\u76ee\u6a19\u4e4b\u4e00<br \/>\n\u6211\u4e5f\u662f\u70ba\u6b64\u624d\u5b78\u7684\u65e5\u6587<br \/>\n\u4f46\u9762\u5c0d\u5de5\u4f5c\u548c\u9577\u671f\u751f\u6d3b\u4f86\u8aaa<br \/>\n\u6211\u89ba\u5f97\u6211\u9084\u662f\u88ab\u53f0\u7063\u7d66\u6163\u58de\u4e86<br \/>\n\u96d6\u7136\u53f0\u7063\u6709\u6642\u5019\u767d\u7661\u767d\u7661\u7684\u7acb\u5834\u9084\u98c4\u5ffd\u4e0d\u5b9a<br \/>\n\u4f46\u9019\u5c31\u662f\u6211\u559c\u6b61\u7684\u5bb6\uff0c\u662f\u6211\u7684\u7956\u570b<br \/>\n\u611f\u89ba\u8981\u6211\u81ea\u5df1\u53bb\u9069\u61c9\u65b0\u751f\u6d3b\u597d\u96e3<br \/>\n\u6211\u9084\u662f\u5728mother land\u7576\u500b\u5abd\u5bf6\u6bd4\u8f03\u597d<\/p>\n<h2 id=\"\u96dc\u8ac7\"><a class=\"anchor\" href=\"#\u96dc\u8ac7\">#<\/a> \u96dc\u8ac7<\/h2>\n<p>\u7136\u5f8c\u6700\u5f8c\u9760\u5317\u4e00\u4ef6\u65c5\u9014\u4e2d\u9047\u5230\u7684\u4e8b\u60c5<br \/>\n\u6211\u7684esim\u5f9e\u6211\u5230\u7fbd\u7530\u958b\u5361\u7684\u6642\u5019\u5c31\u958b\u59cb\u8a08\u6642<br \/>\n\u5dee\u4e94\u5206\u9418\u8de8\u65e5\u5c31\u7d66\u6211\u4ed6\u5abd\u7b97\u4e00\u5929\uff08\u5fd8\u8a18\u6642\u5dee\u529b<br \/>\n\u554a\u672c\u4f86\u7b97\u597d\u5982\u679c\u6642\u9593\u525b\u597d<br \/>\n\u6211\u53ef\u4ee5\u5728\u98db\u6a5f\u8d77\u98db\u524d\u7528\u7db2\u8def\uff08\u6240\u4ee5\u6211\u73fe\u5728\u5728\u6c92\u7db2\u8def\u7684\u72c0\u614b\u4e0b\u6253\u5b57<br \/>\n\u9019\u4e8b\u8b93\u6211\u9760\u9080\u4e00\u500b\u65e9\u4e0a<br \/>\n\u6211\u73fe\u5728\u6253\u5b57\u7684\u7576\u4e0b\uff08\u5728\u9e7f\u5152\u5cf6\u982d\u9802\u4e0a\uff09\u9084\u5728\u4e0d\u723d<br \/>\n\u63a5\u8457\u63d0\u4e00\u4e0b\u4e00\u4e9b\u8da3\u4e8b<br \/>\n\u6ce2\u97f3787\u9084\u633a\u597d\u5750\u7684<br \/>\n\uff08\u642d\u4e86\u98db\u6a5f\u5169\u500b\u5c0f\u6642\u5f8c\u7684\u7c73\u96c5\u6b4c\uff1a\u6211\u6536\u56de\uff0c\u6688\u6a5f\u6688\u5230\u7206\uff09<br \/>\n\u9577\u69ae\u9019\u8d9f\u7684\u98db\u6a5f\u9910\u4e5f\u9084\u4e0d\u932f<br \/>\n\u96e3\u5f97\u9019\u6b21\u5728\u9ad8\u7a7a\u4e2d\u5473\u89ba\u6709\u8b93\u9810\u88fd\u83dc\u597d\u5403\u4e86\u9ede<br \/>\n\u4e0d\u904e\u6211\u662f\u524d\u5f8c\u5de6\u53f3\u88e1\u552f\u4e00\u4e00\u500b\u5728\u5496\u55b1\u8c6c\u6392\u548c\u6d77\u9bae\u98ef\u4e2d\u9593\u9078\u4e86\u8c6c\u6392\u7684\u4eba<br \/>\n\u986f\u5f97\u6211\u5f88\u50cf\u7570\u985e<br \/>\n\u96d6\u7136\u5728\u5927\u5bb6\u90fd\u5728\u770b\u96fb\u5f71\u7684\u6642\u5019<br \/>\n\u53ea\u6709\u6211\u76ef\u8457\u98db\u884c\u7f85\u76e4\u7684\u6642\u5019\u5c31\u5920\u7570\u985e\u4e86<\/p>\n<h2 id=\"\u5f8c\u8a18\"><a class=\"anchor\" href=\"#\u5f8c\u8a18\">#<\/a> \u5f8c\u8a18<\/h2>\n<p>\u7e3d\u800c\u8a00\u4e4b\uff0c\u9664\u975e\u6709\u4eba\u9080\u8acb\u548c\u51fa\u8cc7\uff08\u4f8b\u5982\u6211\u5abd\uff0c\u800c\u4e14\u4e0d\u8981\u518d\u662f\u6771\u4eac<br \/>\n\u4e0d\u7136\u6211\u77ed\u671f\u5167\u5927\u6982\u662f\u4e0d\u592a\u6703\u518d\u8dd1\u4f86\u4e86<br \/>\n\u9664\u4e86\u6211\u7aae\u4ee5\u5916\uff0c\u6211\u4e5f\u60f3\u6bd4\u8f03\u4e00\u4e0b<br \/>\n\u6211\u7684\u770b\u6cd5\u548c\u5fc3\u614b\u6703\u4e0d\u6703\u96a8\u8457\u6642\u9593\u8b8a\u5316<br \/>\n\u592a\u983b\u7e41\u7684\u8dd1\u540c\u4e00\u500b\u5730\u65b9\u6216\u8a31\u6703\u8b93\u4eba\u5224\u65b7\u5931\u6e96<br \/>\n\u4e5f\u56e0\u6b64\u6211\u60f3\u628a\u4e0b\u4e00\u500b\u54c1\u9451\u6703\u54e1\u5236\u7f8e\u98df\u7684\u6a5f\u6703<br \/>\n\u7559\u7d66\u672a\u4f86\u6709\u6a5f\u6703\u7559\u5b78\u6216\u5230\u5176\u4ed6\u5730\u65b9\u53c3\u8a2a\u7684\u81ea\u5df1<br \/>\n\u8b93\u770b\u5230\u4e0d\u540c\u7684\u98a8\u666f<br \/>\n\u6210\u70ba\u6211\u52aa\u529b\u722d\u53d6\u51fa\u570b\u7684\u52d5\u529b<\/p>\n","tags":["Diary","Diary"]},{"id":"https:\/\/miyago9267.com\/Diary\/2026\/0423\/","url":"https:\/\/miyago9267.com\/Diary\/2026\/0423\/","title":"[\u672d\u8a18] 20260423 - \u88abAI\u5f04\u5230\u5fc3\u7d2f\u7684\u534a\u5e74","date_published":"2026-04-22T16:00:00.000Z","content_html":"<p>\u771f\u68d2\u6b38\uff0c\u6211\u9019\u6b21\u7adf\u7136\u53ea\u904e\u4e86\u4e00\u500b\u6708\u5c31\u6709\u4e00\u5806\u5fc3\u5f97\u53ef\u4ee5\u5beb<\/p>\n<span id=\"more\"><\/span>\n<h2 id=\"\u8fd1\u6cc1\"><a class=\"anchor\" href=\"#\u8fd1\u6cc1\">#<\/a> \u8fd1\u6cc1<\/h2>\n<p>\u5982\u6a19\u984c\u4e00\u6a23<br \/>\n\u6211\u5728\u6700\u8fd1\u7684\u56db\u500b\u6708\uff0c\u88abAI\u5f04\u5f97\u5fc3\u5f88\u7d2f<br \/>\n\u9664\u4e86\u6211\u4e0a\u6b21\u8aaa\u7684\u6280\u8853\u7126\u616e\u7684\u554f\u984c<br \/>\n\u66f4\u53ef\u6015\u7684\u662f\u6975\u5ea6\u8a87\u5f35\u7684\u8fed\u4ee3\u901f\u5ea6<br \/>\n\u8b93\u6211\u4e0d\u5f97\u4e0d\u82b1\u9322\u53bb\u8a02\u95b1\u5404\u7a2eAI\u5de5\u5177\u4f86\u8ddf\u4e0a<br \/>\n\u4e0d\u7136\u6839\u672c\u5c31\u5377\u4e0d\u904e\u5176\u4ed6\u4eba<\/p>\n<p>\u5728\u6211\u7684\u5370\u8c61\u4e2d\uff0c\u5728\u53bb\u5e74\u5341\u4e8c\u6708\u4ee5\u524d<br \/>\n\u6211\u53ea\u752820\u9382\u8a02\u95b1\u7684ChatGPT Plus\u548c\u5b78\u751f\u65b9\u6848\u7684Github Copilot<br \/>\n\u5c31\u5df2\u7d93\u8db3\u5920\u6211\u540c\u6642\u505a\u5de5\u4f5c\u5167\u5bb9\u548c\u505a\u5404\u7a2e\u5c08\u6848\u4e86<br \/>\n\u751a\u81f3\u4e0d\u6703\u6709\u9700\u8981\u984d\u5916\u82b1\u9322\u7684\u554f\u984c<\/p>\n<p>\u4f46\u5f9e\u4e00\u6708\u958b\u59cb<br \/>\n\u6211\u7684Copilot\u958b\u59cb\u5403\u6eff\u9810\u8a2d\u7d66\u7684300 Premium Usage<br \/>\n\u6211\u70ba\u4e86\u60f3\u8981\u7e7c\u7e8c\u7528\u5fc5\u9808\u5f97\u8981\u628aBudge\u62d4\u6389<br \/>\n\u958b\u59cb\u4ed8\u9322\u652f\u63f4\u66f4\u591a\u7684\u4f7f\u7528\u91cf<br \/>\n\u4e00\u6708\u5e95\u7684\u6642\u5019\u5c31\u5df2\u7d93\u5403\u5230\u4e86300%\u7684\u57fa\u790e\u7528\u91cf<\/p>\n<p>\u4e8c\u6708\u4e4b\u5f8c\uff0cOpenclaw\u958b\u59cb\u70b8\u8d77\u4f86\u5927\u6d41\u884c<br \/>\n\u6211\u70ba\u4e86\u4f9b\u61c9\u9f8d\u8766\u7684\u8166\u888b\uff0c\u4e32\u4e86Gemini API\uff0c\u7d50\u679c\u7206\u5674150\u9382<br \/>\n\u5f8c\u4f86\u89ba\u5f97\u4e0d\u592aOK\uff0c\u4e0d\u53ea\u71d2\u9322\u53c8\u7b28<br \/>\n\u5c31\u4e7e\u8106\u6539\u6210\u7528Github Copilot\u88e1\u9762\u7684opus 4.5<br \/>\n\u7d50\u679c\u76f4\u63a5\u71d2\u51fa\u4e86180\u9382\u7684\u5e33\u55ae\uff0c\u6211\u4e09\u6708\u7684\u4fe1\u7528\u5361\u5e33\u55ae\u8d85\u53ef\u6015\u7684<\/p>\n<p>\u4e09\u6708\u4e4b\u5f8c\uff0c\u6211\u958b\u59cb\u8a02\u95b1\u4e86Claude Max 5x<br \/>\n\u4e26\u5617\u8a66\u591a\u7528cli\uff0c\u4e5f\u6539\u6210\u7528sdk\u81ea\u5df1\u6413\u9f8d\u8766<br \/>\n\u5c31\u51fa\u73fe\u4e86\u6211\u524d\u5e7e\u7bc7\u6587\u7ae0\u7684\u9006\u5411\u5de5\u7a0b\u548c\u5404\u7a2e\u512a\u5316\u7684\u8def\u7a0b<br \/>\n\u4f46\u8d8a\u7528\u6211\u8d8a\u8e81\uff0c\u4e0d\u53ea\u6709\u5404\u7a2e\u964d\u667a\u7684\u72c0\u6cc1<br \/>\n\u9084\u4e00\u76f4\u649e\u5230Weekly Limit Windows\uff08\u9019\u5230\u5e95\u8ab0\u4ed6\u5abd\u60f3\u7684\uff09<br \/>\n\u903c\u5f97\u6211\u8981\u53bb\u82b1200\u9382\u53bb\u8a02\u95b120x\u7684\u65b9\u6848<br \/>\n\u6211\u5b8c\u5168\u6c92\u5f97\u9078\uff0cClaude\u6700\u8070\u660e\u4f46\u6709\u5920\u6473<br \/>\n\u5176\u4ed6\u7684AI\u53c8\u7b28\u5230\u6839\u672c\u6c92\u8fa6\u6cd5\u6eff\u8db3\u6211\u7684\u9700\u6c42<br \/>\n\uff08\u6c92\u8fa6\u6cd5158\u667a\u5546\u770b\u5565\u90fd\u89ba\u5f97\u7b28\uff09<\/p>\n<p>\u56db\u6708\u611a\u4eba\u7bc0\u6d3b\u52d5\u4e4b\u5f8c<br \/>\nAnthropic\u7d42\u65bc\u628a\u90a3\u500bPrompt Cache\u554f\u984c\u4fee\u6389\u4e86<br \/>\n\u7406\u8ad6\u4e0a\u4f7f\u7528\u91cf\u61c9\u8a72\u6703\u88ab\u512a\u5316\u5f88\u591a<br \/>\n\u4f46\u6211\u9084\u662f\u4e00\u76f4\u649e\u5230\u4e0a\u9650<br \/>\n\u8b93\u6211\u958b\u59cb\u8cea\u7591\u6211\u9019200\u9382\u5230\u5e95\u5212\u4e0d\u5212\u7b97<br \/>\n\u6211\u7e3d\u4e0d\u80fd\u4e00\u76f4\u649e\u5230\u9650\u5236\uff0c\u7136\u5f8c\u6bcf\u649e\u4e00\u6b21\u63db\u4e00\u500bagent\u7528\u5427<br \/>\n\u4e0d\u53ea\u71d2\u9322\uff0c\u5404\u5bb6\u4e4b\u9593\u7684\u6a21\u578b\u54c1\u8cea\u53c3\u5dee\u4e0d\u9f4a<br \/>\nHandoff\u4e5f\u6c92\u8fa6\u6cd5\u9806\u5229\u5207\u63db\u81ea\u5df1\u7684\u4f5c\u696d\u6a21\u5f0f<\/p>\n<p>\u6211\u5df2\u7d93\u5feb\u760b\u6389\u4e86<br \/>\n\u6211\u771f\u7684\u4e0d\u61c2\u5176\u4ed6\u4eba\u70ba\u4ec0\u9ebc\u6709\u8fa6\u6cd5\u4f9d\u820a\u7e7c\u7e8c\u7528\u9019\u500b\u7528\u91cf\u5de5\u4f5c\u4e0b\u53bb<br \/>\n\u7136\u5f8c\u9084\u8aaa\u7528\u5f88\u98fd<br \/>\n\u73fe\u5728\u6211\u5beb\u6587\u7ae0\u7684\u56db\u6708\u5e95<br \/>\n\u9023\u539f\u672c\u6700\u5be6\u60e0\u7684Github Copilot\u90fd\u5df2\u7d93\u6709Rate Limit\u4e86<br \/>\n\u6211\u9023\u53ea\u60f3\u8981\u505a\u4e00\u4e9b\u6700\u7c21\u55ae\u7684\u67b6\u69cb\u898f\u5283\u5de5\u4f5c\u90fd\u5f88\u56f0\u96e3<br \/>\n\u7c21\u55ae\u7684Plan\u5c31\u6703\u71d2\u5230\u4e0a\u9650\uff0c\u7136\u5f8c\u5c31\u8ddf\u4f60\u8aaa\u4e0b\u79ae\u62dc\uff08\u6216\u4e0b\u500b\u6708\uff09\u8acb\u65e9\u5594<br \/>\n\u64cd\u4ed6\u5abd\u7684<\/p>\n<p>\u9019\u6a23\u7684\u73fe\u8c61\u8b93\u6211\u89ba\u5f97\u4e0d\u5982\u56de\u5230\u90a3\u500bAgent\u6839\u672c\u9084\u4e0d\u5b58\u5728\u7684\u6642\u5019<br \/>\n\u4e0d\u5c0d\uff0c\u6211\u60f3\u61c9\u8a72\u56de\u52302022\u5e74GPT\u5f15\u7206\u7684AI\u5927\u7206\u767c\u4e4b\u524d<br \/>\n\u6211\u771f\u7684\u6709\u633a\u904e\u90a3\u6ce2\u75ab\u60c5\u55ce\uff1f<br \/>\n\u6211\u771f\u7684\u597d\u61f7\u5ff5\u90a3\u500b\u53ea\u7528GPT\u67e5\u8cc7\u6599\u8cbc\u4e0a\u5c31\u5f88\u958b\u5fc3\u7684\u6642\u4ee3\u4e86<br \/>\n\u73fe\u5728\u9019\u500b\u5927\u5bb6\u90fd\u53ea\u6703Vibe Coding\u7684\u6642\u5019\u771f\u7684\u4e0d\u597d\u73a9...<br \/>\n\u6211\u5011\u4ec0\u9ebc\u6642\u5019\u624d\u80fd\u6709\u4e00\u500b\u5947\u7570\u9ede\u8b93\u6211\u5011\u56de\u6b78\u539f\u59cb\u554a<\/p>\n","tags":["Diary","Diary"]},{"id":"https:\/\/miyago9267.com\/Sharing\/claude-code-arpil-fool\/","url":"https:\/\/miyago9267.com\/Sharing\/claude-code-arpil-fool\/","title":"[\u5206\u4eab] \u518d\u6b21\u9006\u5411\uff01Claude Code \u611a\u4eba\u7bc0\u6d3b\u52d5 Buddy \u529f\u80fd\u7684\u79d8\u5bc6\uff01","date_published":"2026-04-01T14:00:00.000Z","content_html":"<p>\u4e0a\u6b21\u9006\u5411\u5b8c Claude Agent SDK \u7684 Prompt Caching \u4e4b\u5f8c<br \/>\n\u6211\u4ee5\u70ba\u53ef\u4ee5\u6d88\u505c\u4e00\u9663\u5b50\u4e86<br \/>\n\uff08\u6211\u751a\u81f3Source Map\u9006\u5411\u4e8b\u4ef6\u90fd\u6c92\u6709\u53c3\u8207\u8a0e\u8ad6\u4e86\uff09<br \/>\n\u7d50\u679c Anthropic \u5728\u56db\u6708\u4e00\u865f\u7d66\u6211\u4f86\u4e86\u500b\u9a5a\u559c<\/p>\n<span id=\"more\"><\/span>\n<p>Claude Code \u66f4\u65b0\u5230 2.1.89 \u4e4b\u5f8c\u5e95\u4e0b\u591a\u4e86\u4e00\u884c\u5f69\u8679\u8272\u7684 <code>\/buddy<\/code><br \/>\n\u9ede\u4e0b\u53bb\u6703\u5b75\u51fa\u4e00\u96bb ASCII art \u5c0f\u5bf5\u7269\u966a\u4f60\u505a\u4e8b\u60c5<br \/>\n\u6211\u5fc3\u60f3\uff0c\u55ef\uff0c\u611a\u4eba\u7bc0\u5f69\u86cb\u561b \u633a\u53ef\u611b\u7684<br \/>\n\u4f46\u662f\u624b\u7662\u6253\u958bThreads\u7684\u6211\u7709\u982d\u4e00\u76ba<br \/>\n\u600e\u9ebc\u5927\u5bb6\u62bd\u5230\u7684\u6578\u503c\u90fd\u4e0d\u4e00\u6a23\uff0c\u751a\u81f3\u9084\u6709\u5206\u7b49\u7d1a\u8036<br \/>\n\u800c\u4e14\u597d\u591a\u4eba\u5728\u554f\u80fd\u4e0d\u80fd\u91cd\u62bd\u8036<br \/>\n\u4ed6\u5011\u770b\u8d77\u4f86\u90fd\u8d85\u4e0d\u723d\u81ea\u5df1\u62bd\u7684\u5bf5\u7269\u5f88\u919c\u4e00\u5f35\u6b7b\u9b5a\u81c9wwww<\/p>\n<p>\u73a9\u904a\u6232\u561b\uff5e <s>\u600e\u9ebc\u53ef\u80fd\u4e0d\u4f5c\u5f0a\uff08\u4e0d\u5c0d<\/s><br \/>\n\u7d93\u5e38\u73a9\u9019\u7a2e RPG \u7684\u6211\u99ac\u4e0a\u76f4\u89ba\u958b\u59cb\u806f\u60f3<br \/>\n\u9019\u6771\u897f\u662f\u600e\u9ebc\u6c7a\u5b9a\u4f60\u62ff\u5230\u54ea\u96bb\u7684\uff1f<br \/>\n\u80fd\u4e0d\u80fd\u91cd\u62bd\uff1f\u80fd\u4e0d\u80fd\u6539\uff1f\u6709\u5e7e\u7a2e\u7b49\u7d1a<br \/>\n\u8eab\u70ba\u4e00\u500b\u4e0a\u6b21\u88ab SDK \u7684usage quota\u903c\u5230\u53bb\u9006\u5411 minified code \u7684\u4eba<br \/>\n<mark>\u9019\u7a2e\u554f\u984c\uff0c\u6211\u600e\u9ebc\u53ef\u80fd\u653e\u904e\u5462\uff01<\/mark><\/p>\n<h2 id=\"\u7d50\u8ad6\"><a class=\"anchor\" href=\"#\u7d50\u8ad6\">#<\/a> \u7d50\u8ad6<\/h2>\n<p>\u61f6\u5f97\u7e3d\u7d50\u4e86\uff0c\u9019Part\u76f4\u63a5\u53ebAI\u4e0a\u8868\u683c<\/p>\n<table>\n<thead>\n<tr>\n<th>\u9805\u76ee<\/th>\n<th>\u7d50\u8ad6<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>\u5916\u89c0\uff08species\/rarity\/eye\/hat\uff09<\/td>\n<td>\u7528\u4f60\u7684 userId hash \u78ba\u5b9a\u6027\u751f\u6210\uff0c\u6b63\u5e38\u60c5\u6cc1<strong>\u4e0d\u53ef\u6539<\/strong><\/td>\n<\/tr>\n<tr>\n<td>\u540d\u5b57\u548c\u500b\u6027<\/td>\n<td>API \u751f\u6210\uff0c\u5b58\u672c\u5730 JSON\uff0c<strong>\u53ef\u4ee5\u6539<\/strong><\/td>\n<\/tr>\n<tr>\n<td>Server-side \u8a3b\u518a<\/td>\n<td><strong>\u6c92\u6709<\/strong>\uff0c\u7d14\u672c\u5730<\/td>\n<\/tr>\n<tr>\n<td>\u80fd\u4e0d\u80fd\u91cd\u62bd<\/td>\n<td>\u540c\u5e33\u865f\u6c38\u9060\u540c\u7d50\u679c\uff0c\u91cd\u62bd\u6c92\u6709\u610f\u7fa9<\/td>\n<\/tr>\n<tr>\n<td>\u80fd\u4e0d\u80fd\u4f5c\u5f0a\u62ff Legendary<\/td>\n<td><strong>\u80fd<\/strong>\uff0c\u6709\u5169\u689d\u8def\u7dda\uff08\u898b\u4e0b\u65b9\uff09<\/td>\n<\/tr>\n<\/tbody>\n<tbody>\n<tr>\n<td>\u8def\u7dda<\/td>\n<td>\u505a\u6cd5<\/td>\n<td>\u96e3\u5ea6<\/td>\n<\/tr>\n<tr>\n<td>------<\/td>\n<td>------<\/td>\n<td>------<\/td>\n<\/tr>\n<tr>\n<td>Salt Patch<\/td>\n<td>\u7528\u4f60\u7684 userId brute force \u627e salt\uff0cpatch binary<\/td>\n<td>\u9700\u8981\u8dd1\u8173\u672c<\/td>\n<\/tr>\n<tr>\n<td>Bones Patch<\/td>\n<td>\u53cd\u8f49 spread \u9806\u5e8f\uff0c\u8b93 JSON \u76f4\u63a5\u84cb\u904e\u8a08\u7b97\u7d50\u679c<\/td>\n<td>\u6539\u4e00\u884c\uff0c\u60f3\u8981\u4ec0\u9ebc\u5beb\u4ec0\u9ebc<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<div class=\"note success\">\n<p>\u6211\u5f9e common snail \u8b8a\u6210\u4e86 <strong>Legendary Shiny Cat<\/strong><br \/>\n\u4ee5\u4e0b\u662f\u6211\u600e\u9ebc\u628a\u6211\u7684\u8778\u725b\u8b8a\u6210\u9177\u9177\u9d28\u9d28\u8c93\u7684<\/p>\n<\/div>\n<hr \/>\n<h2 id=\"span-classorangepart1\u641e\u61c2\u5b83\u600e\u9ebc\u904b\u4f5c\u7684span\"><a class=\"anchor\" href=\"#span-classorangepart1\u641e\u61c2\u5b83\u600e\u9ebc\u904b\u4f5c\u7684span\">#<\/a> <span class=\"orange\">Part1\uff1a\u641e\u61c2\u5b83\u600e\u9ebc\u904b\u4f5c\u7684<\/span><\/h2>\n<h3 id=\"\u62c6\u5305\"><a class=\"anchor\" href=\"#\u62c6\u5305\">#<\/a> \u62c6\u5305<\/h3>\n<p>Claude Code 2.1.89 \u662f\u4e00\u500b 188MB \u7684 Bun compiled Mach-O binary<br \/>\n\u4e0d\u662f Node.js \u4e5f\u4e0d\u662f Electron<br \/>\n\u53cd\u6b63\u4e0d\u662f\u4ec0\u9ebc\u5927\u5305\u7684\u57f7\u884c\u74b0\u5883<br \/>\n\u662f\u90a3\u7a2e\u6574\u5305 JS source \u76f4\u63a5\u6253\u5305\u9032 binary \u88e1\u9762\u7684<br \/>\n\u96d6\u7136 binary \u7684\u6771\u897f\u6211\u5011\u4e00\u8f29\u5b50\u90fd\u770b\u4e0d\u61c2<br \/>\n\u4f46 JS source \u81f3\u5c11\u9084\u6709\u6a5f\u6703\u6488\u51fa\u4f86\u770b<\/p>\n<p>\u597d\u6d88\u606f\u662f <code>strings<\/code> \u6307\u4ee4\u53ef\u4ee5\u628a\u88e1\u9762\u7684 JS \u788e\u7247\u6488\u51fa\u4f86<br \/>\n\u58de\u6d88\u606f\u662f\u6488\u51fa\u4f86\u7684\u6771\u897f\u9577\u9019\u6a23\uff1a<\/p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#B07D48;--shiki-dark:#BD976A\">o35<\/span><span style=\"color:#999999;--shiki-dark:#666666\">=&#123;<\/span><span style=\"color:#998418;--shiki-dark:#B8A965\">type<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">local-jsx<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><span style=\"color:#999999;--shiki-dark:#666666\">,<\/span><span style=\"color:#998418;--shiki-dark:#B8A965\">name<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">buddy<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><span style=\"color:#999999;--shiki-dark:#666666\">,<\/span><span style=\"color:#998418;--shiki-dark:#B8A965\">description<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">Hatch a coding companion <\/span><span style=\"color:#A65E2B;--shiki-dark:#C99076\">\\xB7<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> pet, off<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><span style=\"color:#999999;--shiki-dark:#666666\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">isHidden<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">!<\/span><span style=\"color:#59873A;--shiki-dark:#80A665\">LK8<\/span><span style=\"color:#999999;--shiki-dark:#666666\">(),<\/span><span style=\"color:#998418;--shiki-dark:#B8A965\">immediate<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">!<\/span><span style=\"color:#2F798A;--shiki-dark:#4C9A91\">0<\/span><span style=\"color:#999999;--shiki-dark:#666666\">,<\/span><span style=\"color:#59873A;--shiki-dark:#80A665\">load<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:()=><\/span><span style=\"color:#998418;--shiki-dark:#B8A965\">Promise<\/span><span style=\"color:#999999;--shiki-dark:#666666\">.<\/span><span style=\"color:#59873A;--shiki-dark:#80A665\">resolve<\/span><span style=\"color:#999999;--shiki-dark:#666666\">(&#123;<\/span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">async<\/span><span style=\"color:#59873A;--shiki-dark:#80A665\"> call<\/span><span style=\"color:#999999;--shiki-dark:#666666\">(<\/span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">H<\/span><span style=\"color:#999999;--shiki-dark:#666666\">,<\/span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">_<\/span><span style=\"color:#999999;--shiki-dark:#666666\">,<\/span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">q<\/span><span style=\"color:#999999;--shiki-dark:#666666\">)&#123;<\/span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">let<\/span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> K<\/span><span style=\"color:#999999;--shiki-dark:#666666\">=<\/span><span style=\"color:#59873A;--shiki-dark:#80A665\">z_<\/span><span style=\"color:#999999;--shiki-dark:#666666\">(),<\/span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">$<\/span><span style=\"color:#999999;--shiki-dark:#666666\">=<\/span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">q<\/span><span style=\"color:#999999;--shiki-dark:#666666\">?.<\/span><span style=\"color:#59873A;--shiki-dark:#80A665\">trim<\/span><span style=\"color:#999999;--shiki-dark:#666666\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">if<\/span><span style=\"color:#999999;--shiki-dark:#666666\">(<\/span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">$<\/span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">===<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">pet<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><span style=\"color:#999999;--shiki-dark:#666666\">)&#123;<\/span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">let<\/span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> z<\/span><span style=\"color:#999999;--shiki-dark:#666666\">=<\/span><span style=\"color:#59873A;--shiki-dark:#80A665\">rE<\/span><span style=\"color:#999999;--shiki-dark:#666666\">();<\/span><span style=\"color:#1E754F;--shiki-dark:#4D9375\">if<\/span><span style=\"color:#999999;--shiki-dark:#666666\">(<\/span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">!<\/span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">z<\/span><span style=\"color:#999999;--shiki-dark:#666666\">)<\/span><span style=\"color:#1E754F;--shiki-dark:#4D9375\">return<\/span><span style=\"color:#59873A;--shiki-dark:#80A665\"> H<\/span><span style=\"color:#999999;--shiki-dark:#666666\">(<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">no companion yet <\/span><span style=\"color:#A65E2B;--shiki-dark:#C99076\">\\xB7<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> run \/buddy first<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><span style=\"color:#999999;--shiki-dark:#666666\">,&#123;<\/span><span style=\"color:#998418;--shiki-dark:#B8A965\">display<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">system<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><span style=\"color:#999999;--shiki-dark:#666666\">&#125;<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<p>\u9019\u5c3c\u78bc\u4ec0\u9ebc\u53c8\u662f\u6d28<br \/>\n\u6df7\u6dc6\u904e\u7684\u8b8a\u6578\u540d\uff0c\u58d3\u7e2e\u904e\u7684\u7d50\u69cb<br \/>\n\u8ddf\u4e0a\u6b21\u6316 SDK bundle \u662f\u540c\u4e00\u7a2e\u611f\u89ba<br \/>\n\u4e0d\u904e\u597d\u6d88\u606f\u662f\u9006\u5411 minified code \u8ddf\u4e0a\u6b21\u4e00\u6a23<br \/>\n\u8001\u601d\u8def\uff0c\u4e00\u6a23\u7528\u5e38\u91cf\u5b57\u4e32\u53bb\u7576\u7d22\u5f15\u6307\u8def<br \/>\n<code>&quot;buddy&quot;<\/code>\u3001<code>&quot;companion&quot;<\/code>\u3001<code>&quot;friend-2026-401&quot;<\/code> \u9019\u7a2e\u7684\u95dc\u9375\u5b57\u4e0d\u6703\u88ab\u6df7\u6dc6<br \/>\n\u5f9e\u5b57\u4e32\u51fa\u767c\u5f80\u5916\u8ffd function call chain \u5927\u6982\u5c31\u53ef\u4ee5\u9084\u539f\u500b8\u6210\u4e86<\/p>\n<h3 id=\"\u751f\u6210\u6f14\u7b97\u6cd5\"><a class=\"anchor\" href=\"#\u751f\u6210\u6f14\u7b97\u6cd5\">#<\/a> \u751f\u6210\u6f14\u7b97\u6cd5<\/h3>\n<p>\u8ffd\u5b8c\u6574\u500b\u547c\u53eb\u93c8\u4e4b\u5f8c \u6574\u7406\u51fa\u4f86\u7684\u6d41\u7a0b\u9577\u9019\u6a23\uff1a<\/p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span>userId (\"cd7cdfd4-...\")<\/span><\/span>\n<span class=\"line\"><span>    \u2193<\/span><\/span>\n<span class=\"line\"><span>+ salt \"friend-2026-401\"     \u2190 \u5beb\u6b7b\u5728 binary \u88e1<\/span><\/span>\n<span class=\"line\"><span>    \u2193<\/span><\/span>\n<span class=\"line\"><span>Bun.hash() \u2192 32-bit seed    \u2190 wyhash64 \u622a\u65b7<\/span><\/span>\n<span class=\"line\"><span>    \u2193<\/span><\/span>\n<span class=\"line\"><span>SplitMix32 PRNG              \u2190 \u78ba\u5b9a\u6027\u507d\u96a8\u6a5f<\/span><\/span>\n<span class=\"line\"><span>    \u2193<\/span><\/span>\n<span class=\"line\"><span>\u4f9d\u5e8f\u62bd\uff1ararity \u2192 species \u2192 eye \u2192 hat \u2192 shiny \u2192 stats<\/span><\/span>\n<span class=\"line\"><span><\/span><\/span><\/code><\/pre>\n<p>\u91cd\u9ede\u662f\u9019\u6771\u897f\u662f<mark>\u78ba\u5b9a\u6027<\/mark>\u7684<br \/>\n\u540c\u4e00\u500b userId + \u540c\u4e00\u500b salt = \u6c38\u9060\u540c\u6a23\u7684\u7d50\u679c<br \/>\n\u4e0d\u662f\u771f\u7684\u50cf\u62bd\u5361\u4e00\u6a23\uff0c\u8ddf\u4f3a\u670d\u5668\u8981\u7136\u5f8c\u4e00\u6b21\u5b9a\u751f\u6b7b<br \/>\n\u5c31\u7b97\u662f\u672c\u5730\u61c9\u8a72\u4e5f\u662f\u8981\u5b58\u500b\u7d00\u9304\u624d\u5c0d<br \/>\n\u53ea\u662f\u600e\u9ebc\u8ddf\u4f3a\u670d\u5668\u9a57\u8b49\u548c\u540c\u6b65\u5c31\u662f\u53e6\u4e00\u56de\u4e8b\u4e86<br \/>\n\u53ea\u662f\u6211 Anthropic \u5927\u6982\u6c92\u9019\u9ebc\u9592\u53bb\u8a2d\u8a08\u9019\u7a2e\u6771\u897f<\/p>\n<p>\u54b3\uff0c\u7e3d\u4e4b<br \/>\n\u4f60\u7684 userId \u4f86\u81ea <code>~\/.claude.json<\/code> \u88e1\u7684 <code>oauthAccount.accountUuid<\/code><br \/>\nsalt \u5c31\u6211\u67e5\u5230\u7684\u8868\u662f\u5beb\u6b7b\u7684\u5b57\u4e32 <code>&quot;friend-2026-401&quot;<\/code>\uff08401 \u61c9\u8a72\u6307\u7684\u5c31\u662f April 1st......\u5427\uff0c\u6211\u731c\uff09<br \/>\n\u5169\u500b\u62fc\u8d77\u4f86\u4e1f\u9032 hash \u2192 PRNG \u2192 \u4f9d\u5e8f\u6c7a\u5b9a\u6bcf\u4e00\u500b trait<\/p>\n<h3 id=\"\u5169\u5c64\u67b6\u69cbbones-vs-soul\"><a class=\"anchor\" href=\"#\u5169\u5c64\u67b6\u69cbbones-vs-soul\">#<\/a> \u5169\u5c64\u67b6\u69cb\uff1aBones vs Soul<\/h3>\n<p>Buddy \u7cfb\u7d71\u5206\u5169\u5c64\uff1a<\/p>\n<p><strong>Bones\uff08\u9aa8\u67b6\uff09<\/strong> -- \u78ba\u5b9a\u6027\u751f\u6210\uff0c\u4e0d\u5b58\u6a94<\/p>\n<ul>\n<li>\u5167\u5bb9\uff1aspecies\u3001rarity\u3001eye\u3001hat\u3001shiny\u3001stats<\/li>\n<li>\u6bcf\u6b21\u555f\u52d5\u90fd\u5f9e userId \u91cd\u65b0\u7b97<\/li>\n<li>\u4f60\u6539 JSON \u6c92\u6709\u7528\uff0c\u56e0\u70ba\u7a0b\u5f0f\u6839\u672c\u4e0d\u8b80 JSON \u88e1\u7684 bones<\/li>\n<\/ul>\n<p><strong>Soul\uff08\u9748\u9b42\uff09<\/strong> -- API \u751f\u6210\uff0c\u5b58\u672c\u5730<\/p>\n<ul>\n<li>\u5167\u5bb9\uff1aname\u3001personality<\/li>\n<li>\u5b75\u5316\u6642\u6253\u4e00\u6b21 Claude API\uff08model \u662f Haiku \u7684\uff09<\/li>\n<li>\u7d50\u679c\u6703\u5b58\u5728 <code>~\/.claude.json<\/code> \u7684 <code>companion<\/code> \u6b04\u4f4d<\/li>\n<li>\u4e4b\u5f8c\u5c31\u53ea\u8b80\u672c\u5730\uff0c\u4e0d\u6703\u518dcall API<\/li>\n<\/ul>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">\/\/ rE() -- \u6bcf\u6b21\u90fd\u91cd\u7b97 bones\uff0c\u53ea\u5f9e JSON \u8b80 name\/personality<\/span><\/span>\n<span class=\"line\"><span style=\"color:#AB5959;--shiki-dark:#CB7676\">function<\/span><span style=\"color:#59873A;--shiki-dark:#80A665\"> rE<\/span><span style=\"color:#999999;--shiki-dark:#666666\">()<\/span><span style=\"color:#999999;--shiki-dark:#666666\"> &#123;<\/span><\/span>\n<span class=\"line\"><span style=\"color:#AB5959;--shiki-dark:#CB7676\">  let<\/span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> H<\/span><span style=\"color:#999999;--shiki-dark:#666666\"> =<\/span><span style=\"color:#59873A;--shiki-dark:#80A665\"> z_<\/span><span style=\"color:#999999;--shiki-dark:#666666\">().<\/span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">companion<\/span><span style=\"color:#999999;--shiki-dark:#666666\">;<\/span><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">          \/\/ \u8b80\u672c\u5730 JSON<\/span><\/span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">  if<\/span><span style=\"color:#999999;--shiki-dark:#666666\"> (<\/span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">!<\/span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">H<\/span><span style=\"color:#999999;--shiki-dark:#666666\">)<\/span><span style=\"color:#1E754F;--shiki-dark:#4D9375\"> return<\/span><span style=\"color:#999999;--shiki-dark:#666666\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color:#AB5959;--shiki-dark:#CB7676\">  let<\/span><span style=\"color:#999999;--shiki-dark:#666666\"> &#123;<\/span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> bones<\/span><span style=\"color:#999999;--shiki-dark:#666666\"> &#125;<\/span><span style=\"color:#999999;--shiki-dark:#666666\"> =<\/span><span style=\"color:#59873A;--shiki-dark:#80A665\"> vN6<\/span><span style=\"color:#999999;--shiki-dark:#666666\">(<\/span><span style=\"color:#59873A;--shiki-dark:#80A665\">hN6<\/span><span style=\"color:#999999;--shiki-dark:#666666\">());<\/span><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">      \/\/ \u91cd\u7b97 bones<\/span><\/span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">  return<\/span><span style=\"color:#999999;--shiki-dark:#666666\"> &#123;<\/span><span style=\"color:#999999;--shiki-dark:#666666\"> ...<\/span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">H<\/span><span style=\"color:#999999;--shiki-dark:#666666\">,<\/span><span style=\"color:#999999;--shiki-dark:#666666\"> ...<\/span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">bones<\/span><span style=\"color:#999999;--shiki-dark:#666666\"> &#125;;<\/span><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">        \/\/ \u5408\u4f75<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">&#125;<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<p>\u9019\u4ee3\u8868\uff1a<\/p>\n<ul>\n<li><strong>bones \u6b63\u5e38\u6539\u4e0d\u4e86<\/strong> -- \u6bcf\u6b21\u90fd\u662f\u91cd\u7b97\u7684\uff0c<code>&#123; ...H, ...bones &#125;<\/code> \u88e1 bones \u6703\u84cb\u6389 JSON\uff08\u4f46\u5f8c\u9762\u6709\u8fa6\u6cd5\u7e5e\u904e\uff0c\u898b <a href=\"#Bones-Patch\">Bones Patch<\/a>\uff09<\/li>\n<li><strong>soul \u96a8\u4fbf\u6539<\/strong> -- \u76f4\u63a5\u7de8\u8f2f <code>~\/.claude.json<\/code> \u5c31\u751f\u6548\uff08\u6240\u4ee5\u56b4\u683c\u610f\u7fa9\u4e0a\u6211\u80fd\u8b93\u4ed6\u8b1b\u4e2d\u6587\u55ce\uff1f\uff09<\/li>\n<\/ul>\n<h3 id=\"\u62bd\u5361\u6a5f\u7387\"><a class=\"anchor\" href=\"#\u62bd\u5361\u6a5f\u7387\">#<\/a> \u62bd\u5361\u6a5f\u7387<\/h3>\n<table>\n<thead>\n<tr>\n<th>Rarity<\/th>\n<th>\u6b0a\u91cd<\/th>\n<th>\u6a5f\u7387<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>common<\/td>\n<td>60<\/td>\n<td>60%<\/td>\n<\/tr>\n<tr>\n<td>uncommon<\/td>\n<td>25<\/td>\n<td>25%<\/td>\n<\/tr>\n<tr>\n<td>rare<\/td>\n<td>10<\/td>\n<td>10%<\/td>\n<\/tr>\n<tr>\n<td>epic<\/td>\n<td>4<\/td>\n<td>4%<\/td>\n<\/tr>\n<tr>\n<td>legendary<\/td>\n<td>1<\/td>\n<td><strong>1%<\/strong><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u7136\u5f8c shiny \u662f\u984d\u5916 1% \u7684\u7368\u7acb\u5224\u5b9a<br \/>\n\u6240\u4ee5 legendary + shiny \u7684\u6a5f\u7387\u662f <mark>0.01%<\/mark><br \/>\n\u4e00\u842c\u500b\u4eba\u88e1\u9762\u624d\u6709\u4e00\u500b<\/p>\n<p>\u7269\u7a2e\u6709 18 \u7a2e\uff1a<\/p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span>duck, goose, blob, cat, dragon, octopus, owl, penguin,<\/span><\/span>\n<span class=\"line\"><span>turtle, snail, ghost, axolotl, capybara, cactus, robot,<\/span><\/span>\n<span class=\"line\"><span>rabbit, mushroom, chonk<\/span><\/span>\n<span class=\"line\"><span><\/span><\/span><\/code><\/pre>\n<p>\u5e3d\u5b50 8 \u7a2e\uff08common \u6c92\u6709\u5e3d\u5b50\uff09\uff1a<\/p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span>none, crown, tophat, propeller, halo, wizard, beanie, tinyduck<\/span><\/span>\n<span class=\"line\"><span><\/span><\/span><\/code><\/pre>\n<p>Stats 5 \u9805\uff0c\u6bcf\u96bb\u6709\u4e00\u500b boosted stat \u548c\u4e00\u500b nerfed stat\uff1a<\/p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span>DEBUGGING, PATIENCE, CHAOS, WISDOM, SNARK<\/span><\/span>\n<span class=\"line\"><span><\/span><\/span>\n<span class=\"line\"><span>Boosted: Math.min(100, base + 50 + floor(rng()*30))   \u2190 \u5927\u5e45\u52a0\u6210<\/span><\/span>\n<span class=\"line\"><span>Nerfed:  Math.max(1,   base - 10 + floor(rng()*15))   \u2190 \u88ab\u58d3\u4f4e<\/span><\/span>\n<span class=\"line\"><span>Normal:  base + floor(rng()*40)                         \u2190 \u666e\u901a<\/span><\/span>\n<span class=\"line\"><span><\/span><\/span><\/code><\/pre>\n<p>base \u503c\u7531 rarity \u6c7a\u5b9a\uff1acommon=5, uncommon=15, rare=25, epic=35, legendary=50<br \/>\n\u6240\u4ee5 legendary \u7684 boosted stat \u5e7e\u4e4e\u7a69\u5b9a\u5728 100\uff0cnerfed stat \u4e5f\u9084\u6709 40+<\/p>\n<h3 id=\"\u6211\u7684\u547d\u904b\"><a class=\"anchor\" href=\"#\u6211\u7684\u547d\u904b\">#<\/a> \u6211\u7684\u547d\u904b<\/h3>\n<p>\u6211\u7684 userId hash \u5b8c\u4e4b\u5f8c<br \/>\n<mark>\u547d\u4e2d\u6ce8\u5b9a\u662f\u4e00\u96bb common snail<\/mark><br \/>\n\u6c92\u6709\u5e3d\u5b50\uff0c\u6c92\u6709 shiny<br \/>\n\u6700\u9ad8\u7684\u6578\u503c\u662f WISDOM 75<\/p>\n<p>\u63a5\u53d7\u554a\uff0c\u5feb\u9ede\u63a5\u53d7\u554a<\/p>\n<p><mark>\u4f46\u662f\u6211\u62d2\u7d55\uff08\u5cb8\u908a\u9732\u4f34 Face\uff09<\/mark><\/p>\n<hr \/>\n<h2 id=\"span-classorangepart2\u9006\u5929\u6539\u547dspan\"><a class=\"anchor\" href=\"#span-classorangepart2\u9006\u5929\u6539\u547dspan\">#<\/a> <span class=\"orange\">Part2\uff1a\u9006\u5929\u6539\u547d<\/span><\/h2>\n<h3 id=\"\u601d\u8def\"><a class=\"anchor\" href=\"#\u601d\u8def\">#<\/a> \u601d\u8def<\/h3>\n<p>\u65e2\u7136 bones \u662f <code>hash(userId + salt)<\/code> \u7b97\u51fa\u4f86\u7684<br \/>\nuserId \u6211\u6539\u4e0d\u4e86\uff08\u7d81 Anthropic \u5e33\u865f\uff09<br \/>\n\u4f46 <mark>salt \u662f\u5beb\u6b7b\u5728 binary \u88e1\u7684<\/mark><\/p>\n<p>\u5982\u679c\u6211\u80fd\u6539 salt \u2192<br \/>\n\u5c31\u80fd\u6539 hash \u7d50\u679c \u2192<br \/>\n\u5c31\u80fd\u6539 PRNG \u8f38\u51fa \u2192<br \/>\n\u5c31\u80fd\u6539 rarity \u2192<br \/>\nPerfect\uff01<\/p>\n<h3 id=\"brute-force\"><a class=\"anchor\" href=\"#brute-force\">#<\/a> Brute Force<\/h3>\n<p>\u5beb\u4e86\u4e00\u500b Bun script \u66b4\u529b\u641c\u7d22<br \/>\n\u7528\u7684\u662f\u8ddf Claude Code \u5b8c\u5168\u4e00\u6a23\u7684 <code>Bun.hash()<\/code>\uff08wyhash64\uff09<br \/>\n\u78ba\u4fdd\u6a21\u64ec\u7d50\u679c\u8ddf\u5be6\u969b\u57f7\u884c\u4e00\u81f4<\/p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">\/\/ \u7528 Bun.hash \u78ba\u4fdd\u8ddf binary \u5167\u7684\u7b97\u6cd5\u4e00\u81f4<\/span><\/span>\n<span class=\"line\"><span style=\"color:#AB5959;--shiki-dark:#CB7676\">function<\/span><span style=\"color:#59873A;--shiki-dark:#80A665\"> aN4<\/span><span style=\"color:#999999;--shiki-dark:#666666\">(<\/span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">str<\/span><span style=\"color:#999999;--shiki-dark:#666666\">: <\/span><span style=\"color:#2E8F82;--shiki-dark:#5DA994\">string<\/span><span style=\"color:#999999;--shiki-dark:#666666\">):<\/span><span style=\"color:#2E8F82;--shiki-dark:#5DA994\"> number<\/span><span style=\"color:#999999;--shiki-dark:#666666\"> &#123;<\/span><\/span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">  return<\/span><span style=\"color:#59873A;--shiki-dark:#80A665\"> Number<\/span><span style=\"color:#999999;--shiki-dark:#666666\">(<\/span><span style=\"color:#59873A;--shiki-dark:#80A665\">BigInt<\/span><span style=\"color:#999999;--shiki-dark:#666666\">(<\/span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">Bun<\/span><span style=\"color:#999999;--shiki-dark:#666666\">.<\/span><span style=\"color:#59873A;--shiki-dark:#80A665\">hash<\/span><span style=\"color:#999999;--shiki-dark:#666666\">(<\/span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">str<\/span><span style=\"color:#999999;--shiki-dark:#666666\">))<\/span><span style=\"color:#AB5959;--shiki-dark:#CB7676\"> &#x26;<\/span><span style=\"color:#2F798A;--shiki-dark:#4C9A91\"> 0xFFFFFFFF<\/span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">n<\/span><span style=\"color:#999999;--shiki-dark:#666666\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">&#125;<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<p>16.5 \u842c\u7d44\u5408\u53ea\u9700\u8981 81 \u6beb\u79d2\u8dd1\u5b8c\uff0c\u771f\u5feb\u8036\uff0c\u770b\u4f86\u4e5f\u6c92\u5f88\u591a\u561b<br \/>\n\u627e\u5230 <mark>1,598 \u500b legendary<\/mark> \u548c <mark>75 \u500b legendary + shiny<\/mark><br \/>\n\u5168\u90e8\u90fd\u662f 15 \u5b57\u5143\uff08\u8ddf\u539f\u59cb salt \u7b49\u9577\uff09\uff0c\u770b\u4f86\u53ef\u4ee5\u76f4\u63a5\u7528 sed patch \u904e\u53bb\u5594<\/p>\n<h3 id=\"\u6311\u8c93\"><a class=\"anchor\" href=\"#\u6311\u8c93\">#<\/a> \u6311\u8c93<\/h3>\n<p>\u6211\u6700\u5f8c\u6311\u4e86\u9019\u96bb\uff1a<\/p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span>    ,>              \u2190 \u982d\u4e0a\u6709\u96bb\u5c0f\u9d28<\/span><\/span>\n<span class=\"line\"><span>   \/\\_\/\\<\/span><\/span>\n<span class=\"line\"><span>  ( @   @)          \u2190 @ \u773c<\/span><\/span>\n<span class=\"line\"><span>  (  \u03c9  )<\/span><\/span>\n<span class=\"line\"><span>  (\")\"(\")\\<\/span><\/span>\n<span class=\"line\"><span><\/span><\/span>\n<span class=\"line\"><span>\u2605\u2605\u2605\u2605\u2605 LEGENDARY  CAT<\/span><\/span>\n<span class=\"line\"><span>\u2728 SHINY \u2728<\/span><\/span>\n<span class=\"line\"><span><\/span><\/span>\n<span class=\"line\"><span>DEBUGGING  \u2588\u2588\u2588\u2588\u2588\u2588\u2591\u2591\u2591\u2591  58<\/span><\/span>\n<span class=\"line\"><span>PATIENCE   \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2591\u2591\u2591  74<\/span><\/span>\n<span class=\"line\"><span>CHAOS      \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 100 \u2191    \u2190 \u6eff\u6df7\u6c8c<\/span><\/span>\n<span class=\"line\"><span>WISDOM     \u2588\u2588\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591  53 \u2193<\/span><\/span>\n<span class=\"line\"><span>SNARK      \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2591\u2591  78<\/span><\/span>\n<span class=\"line\"><span><\/span><\/span><\/code><\/pre>\n<p>salt\uff1a<code>3s58p6-e-b260y-<\/code><br \/>\n\u4e00\u96bb\u982d\u4e0a\u9802\u8457\u5c0f\u9d28\u3001CHAOS \u6eff\u9ede\u7684 Legendary Shiny Cat<br \/>\n\u9748\u611f\u8a5e\u662f ingot, rook, warble, brine<br \/>\nAPI \u5e6b\u5979\u53d6\u540d\u53eb <strong>Brineclaw<\/strong><\/p>\n<p>\uff08\u7406\u8ad6\u4e0a\u80fd\u6539\u4f46\u6211\u6c92\u6539\uff0c\u6211\u60f3\u8aaa\u9019\u662f\u5c11\u6578\u80fd\u63a5\u53d7\u7684\u547d\u904b\u4e86\uff0c\u800c\u4e14\u53cd\u6b63\u6211\u63db\u53f0\u4f3a\u670d\u5668\u540d\u5b57\u53c8\u4e0d\u4e00\u6a23\u4e86\uff09<\/p>\n<h3 id=\"patch-binary\"><a class=\"anchor\" href=\"#patch-binary\">#<\/a> Patch Binary<\/h3>\n<p>\u539f\u59cb salt <code>friend-2026-401<\/code> \u5728 binary \u88e1\u51fa\u73fe\u5169\u8655<br \/>\n\u76f4\u63a5\u7528 perl \u66ff\u63db\uff0c\u518d\u7528 ad-hoc signature \u91cd\u7c3d\uff08Mac\u624d\u9700\u8981\uff09<\/p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"># Patch<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">perl<\/span><span style=\"color:#A65E2B;--shiki-dark:#C99076\"> -pi<\/span><span style=\"color:#A65E2B;--shiki-dark:#C99076\"> -e<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\"> '<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">s\/\\Qfriend-2026-401\\E\/3s58p6-e-b260y-\/g<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">'<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\"> \"<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">$binary<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"># \u91cd\u7c3d\uff08\u9019\u6b65\u5f88\u91cd\u8981\uff09<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">codesign<\/span><span style=\"color:#A65E2B;--shiki-dark:#C99076\"> --remove-signature<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\"> \"<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">$binary<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">codesign<\/span><span style=\"color:#A65E2B;--shiki-dark:#C99076\"> -s<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> -<\/span><span style=\"color:#A65E2B;--shiki-dark:#C99076\"> -f<\/span><span style=\"color:#A65E2B;--shiki-dark:#C99076\"> --preserve-metadata=entitlements<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\"> \"<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">$binary<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<div class=\"note danger\">\n<p><strong>\u8e29\u5751\uff1amacOS Code Signature<\/strong><br \/>\nClaude Code binary \u6709 Hardened Runtime \u7c3d\u7ae0<br \/>\n\u6539\u4e86\u4efb\u4f55\u4e00\u500b byte Gatekeeper \u5c31\u62d2\u7d55\u57f7\u884c<br \/>\n\u6211\u7b2c\u4e00\u6b21 patch \u5b8c\u76f4\u63a5\u6253\u4e0d\u958b\uff0c\u5dee\u9ede\u628a\u81ea\u5df1\u5687\u500b\u534a\u6b7b<br \/>\n\u5f8c\u4f86\u624d\u60f3\u5230\u8981\u7528 ad-hoc signature \u91cd\u7c3d<\/p>\n<\/div>\n<p>\u6211\u628a\u6574\u500b\u6d41\u7a0b\u5305\u6210\u4e86\u4e09\u500b\u8173\u672c\uff1a<\/p>\n<table>\n<thead>\n<tr>\n<th>\u8173\u672c<\/th>\n<th>\u529f\u80fd<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>buddy-bruteforce.ts<\/code><\/td>\n<td>\u7528 Bun.hash \u66b4\u529b\u641c\u7d22\u76ee\u6a19 salt<\/td>\n<\/tr>\n<tr>\n<td><code>buddy-verify.ts<\/code><\/td>\n<td>\u6a21\u64ec\u9810\u89bd + JSON \u8f38\u51fa + \u6279\u91cf\u751f\u6210<\/td>\n<\/tr>\n<tr>\n<td><code>buddy-patch.sh<\/code><\/td>\n<td>Salt Patch\uff1a\u81ea\u52d5 patch + backup + re-sign<\/td>\n<\/tr>\n<tr>\n<td><code>buddy-bones-patch.sh<\/code><\/td>\n<td>Bones Patch\uff1a\u53cd\u8f49 spread + inject bones<\/td>\n<\/tr>\n<tr>\n<td><code>buddy-pokedex.ts<\/code><\/td>\n<td>\u5168\u81ea\u52d5\u5716\u9451\uff1a\u7aae\u8209\u6240\u6709\u5916\u89c0\u7d44\u5408<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3 id=\"bones-patch\"><a class=\"anchor\" href=\"#bones-patch\">#<\/a> Bones Patch<\/h3>\n<p>\u5beb\u5b8c Salt Patch \u4e4b\u5f8c\u6211\u8d8a\u60f3\u8d8a\u4e0d\u5c0d\u52c1<br \/>\n\u6bcf\u6b21\u66f4\u65b0\u90fd\u8981\u91cd\u8dd1 brute force \u4e5f\u592a\u8822\u4e86\u5427<br \/>\n\u800c\u4e14 salt \u9084\u662f userId-specific \u7684 \u5225\u4eba\u5b8c\u5168\u6c92\u8fa6\u6cd5\u76f4\u63a5\u7528<\/p>\n<p>\u56de\u53bb\u770b <code>rE()<\/code> \u90a3\u6bb5 code\uff1a<\/p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">return<\/span><span style=\"color:#999999;--shiki-dark:#666666\"> &#123;<\/span><span style=\"color:#999999;--shiki-dark:#666666\"> ...<\/span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">H<\/span><span style=\"color:#999999;--shiki-dark:#666666\">,<\/span><span style=\"color:#999999;--shiki-dark:#666666\"> ...<\/span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">bones<\/span><span style=\"color:#999999;--shiki-dark:#666666\"> &#125;;<\/span><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">   \/\/ bones \u84cb\u6389 JSON \u2192 \u6539 JSON \u6c92\u7528<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<p>\u7b49\u7b49 \u5982\u679c\u6211\u628a spread \u9806\u5e8f\u53cd\u904e\u4f86\u5462\uff1f<\/p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">return<\/span><span style=\"color:#999999;--shiki-dark:#666666\"> &#123;<\/span><span style=\"color:#999999;--shiki-dark:#666666\"> ...<\/span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">bones<\/span><span style=\"color:#999999;--shiki-dark:#666666\">,<\/span><span style=\"color:#999999;--shiki-dark:#666666\"> ...<\/span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">H<\/span><span style=\"color:#999999;--shiki-dark:#666666\"> &#125;;<\/span><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">   \/\/ JSON \u84cb\u6389 bones \u2192 \u5beb\u4ec0\u9ebc\u5c31\u662f\u4ec0\u9ebc<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<p>\u5c31\u9019\u6a23 \u4e00\u884c\u6539\u52d5<br \/>\nbones \u5148\u5c55\u958b H \u5f8c\u5c55\u958b<br \/>\nJSON \u88e1\u6709\u7684\u6b04\u4f4d\u5c31\u84cb\u904e\u53bb \u6c92\u6709\u7684\u5c31\u7528\u8a08\u7b97\u503c<br \/>\n<mark>bones \u8b8a\u6210 fallback \u800c\u4e0d\u662f override<\/mark><\/p>\n<p>\u4f46\u6df7\u6dc6\u5f8c\u7684\u8b8a\u6578\u540d\u6bcf\u6b21\u7248\u672c\u90fd\u4e0d\u540c \u600e\u9ebc\u7a69\u5b9a\u5b9a\u4f4d\uff1f<br \/>\n\u95dc\u9375\u662f <strong>property name \u548c keyword \u4e0d\u6703\u88ab minifier \u6539<\/strong>\uff1a<\/p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span>.companion;if(!X)return;let&#123;bones:Y&#125;=???(???());return&#123;...X,...Y&#125;&#125;<\/span><\/span>\n<span class=\"line\"><span> ^^^^^^^^^^                  ^^^^^             ^^^^^^<\/span><\/span>\n<span class=\"line\"><span> \u7a69\u5b9a\u7684 prop name            \u7a69\u5b9a\u7684 key         \u7a69\u5b9a\u7684\u7d50\u69cb<\/span><\/span>\n<span class=\"line\"><span><\/span><\/span><\/code><\/pre>\n<p>\u53ea\u6709 <code>X<\/code>\u3001<code>Y<\/code> \u9019\u7a2e\u55ae\u5b57\u5143\u8b8a\u6578\u540d\u6703\u8b8a<br \/>\n\u4f46\u6574\u500b\u7d50\u69cb\u662f\u7a69\u5b9a\u7684 \u7528 regex \u5b9a\u4f4d\u518d swap \u5c31\u597d<br \/>\nv2.1.89 \u662f <code>H<\/code> \u548c <code>_<\/code>\uff0cv2.1.90 \u4e5f\u662f <code>H<\/code> \u548c <code>_<\/code><br \/>\n\u5c31\u7b97\u4e0b\u500b\u7248\u672c\u8b8a\u6210 <code>a<\/code> \u548c <code>b<\/code> \u4e5f\u7121\u6240\u8b02 regex \u90fd\u6293\u5f97\u5230\uff08\u61c9\u8a72\u5566\uff0c\u9664\u975e minifier \u5f8c\u9019\u500b\u4e5f\u80fd\u8b8a\uff09<\/p>\n<p>\u6539\u5b8c\u4e4b\u5f8c\u76f4\u63a5\u5728 <code>~\/.claude.json<\/code> \u7684 <code>companion<\/code> \u88e1\u5beb\u4e0a\u4f60\u60f3\u8981\u7684 bones\uff1a<\/p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">&#123;<\/span><\/span>\n<span class=\"line\"><span style=\"color:#99841877;--shiki-dark:#B8A96577\">  \"<\/span><span style=\"color:#998418;--shiki-dark:#B8A965\">companion<\/span><span style=\"color:#99841877;--shiki-dark:#B8A96577\">\"<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#999999;--shiki-dark:#666666\"> &#123;<\/span><\/span>\n<span class=\"line\"><span style=\"color:#99841877;--shiki-dark:#B8A96577\">    \"<\/span><span style=\"color:#998418;--shiki-dark:#B8A965\">name<\/span><span style=\"color:#99841877;--shiki-dark:#B8A96577\">\"<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\"> \"<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">Brineclaw<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><span style=\"color:#999999;--shiki-dark:#666666\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color:#99841877;--shiki-dark:#B8A96577\">    \"<\/span><span style=\"color:#998418;--shiki-dark:#B8A965\">personality<\/span><span style=\"color:#99841877;--shiki-dark:#B8A96577\">\"<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\"> \"<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">...<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><span style=\"color:#999999;--shiki-dark:#666666\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color:#99841877;--shiki-dark:#B8A96577\">    \"<\/span><span style=\"color:#998418;--shiki-dark:#B8A965\">hatchedAt<\/span><span style=\"color:#99841877;--shiki-dark:#B8A96577\">\"<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#2F798A;--shiki-dark:#4C9A91\"> 1743523200000<\/span><span style=\"color:#999999;--shiki-dark:#666666\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color:#99841877;--shiki-dark:#B8A96577\">    \"<\/span><span style=\"color:#998418;--shiki-dark:#B8A965\">species<\/span><span style=\"color:#99841877;--shiki-dark:#B8A96577\">\"<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\"> \"<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">cat<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><span style=\"color:#999999;--shiki-dark:#666666\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color:#99841877;--shiki-dark:#B8A96577\">    \"<\/span><span style=\"color:#998418;--shiki-dark:#B8A965\">rarity<\/span><span style=\"color:#99841877;--shiki-dark:#B8A96577\">\"<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\"> \"<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">legendary<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><span style=\"color:#999999;--shiki-dark:#666666\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color:#99841877;--shiki-dark:#B8A96577\">    \"<\/span><span style=\"color:#998418;--shiki-dark:#B8A965\">eye<\/span><span style=\"color:#99841877;--shiki-dark:#B8A96577\">\"<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\"> \"<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">@<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><span style=\"color:#999999;--shiki-dark:#666666\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color:#99841877;--shiki-dark:#B8A96577\">    \"<\/span><span style=\"color:#998418;--shiki-dark:#B8A965\">hat<\/span><span style=\"color:#99841877;--shiki-dark:#B8A96577\">\"<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\"> \"<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">tinyduck<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><span style=\"color:#999999;--shiki-dark:#666666\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color:#99841877;--shiki-dark:#B8A96577\">    \"<\/span><span style=\"color:#998418;--shiki-dark:#B8A965\">shiny<\/span><span style=\"color:#99841877;--shiki-dark:#B8A96577\">\"<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#1E754F;--shiki-dark:#4D9375\"> true<\/span><span style=\"color:#999999;--shiki-dark:#666666\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color:#99841877;--shiki-dark:#B8A96577\">    \"<\/span><span style=\"color:#998418;--shiki-dark:#B8A965\">stats<\/span><span style=\"color:#99841877;--shiki-dark:#B8A96577\">\"<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#999999;--shiki-dark:#666666\"> &#123;<\/span><\/span>\n<span class=\"line\"><span style=\"color:#99841877;--shiki-dark:#B8A96577\">      \"<\/span><span style=\"color:#998418;--shiki-dark:#B8A965\">DEBUGGING<\/span><span style=\"color:#99841877;--shiki-dark:#B8A96577\">\"<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#2F798A;--shiki-dark:#4C9A91\"> 58<\/span><span style=\"color:#999999;--shiki-dark:#666666\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color:#99841877;--shiki-dark:#B8A96577\">      \"<\/span><span style=\"color:#998418;--shiki-dark:#B8A965\">PATIENCE<\/span><span style=\"color:#99841877;--shiki-dark:#B8A96577\">\"<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#2F798A;--shiki-dark:#4C9A91\"> 74<\/span><span style=\"color:#999999;--shiki-dark:#666666\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color:#99841877;--shiki-dark:#B8A96577\">      \"<\/span><span style=\"color:#998418;--shiki-dark:#B8A965\">CHAOS<\/span><span style=\"color:#99841877;--shiki-dark:#B8A96577\">\"<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#2F798A;--shiki-dark:#4C9A91\"> 100<\/span><span style=\"color:#999999;--shiki-dark:#666666\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color:#99841877;--shiki-dark:#B8A96577\">      \"<\/span><span style=\"color:#998418;--shiki-dark:#B8A965\">WISDOM<\/span><span style=\"color:#99841877;--shiki-dark:#B8A96577\">\"<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#2F798A;--shiki-dark:#4C9A91\"> 53<\/span><span style=\"color:#999999;--shiki-dark:#666666\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color:#99841877;--shiki-dark:#B8A96577\">      \"<\/span><span style=\"color:#998418;--shiki-dark:#B8A965\">SNARK<\/span><span style=\"color:#99841877;--shiki-dark:#B8A96577\">\"<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#2F798A;--shiki-dark:#4C9A91\"> 78<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">    &#125;<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">  &#125;<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">&#125;<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<p>\u9019\u500b\u5c31\u4e0d\u9700\u8981\u7279\u5225\u627e salt \u4e86<br \/>\n\u8ddf\u8ced\u4fe0\u4e00\u6a23\uff0c\u60f3\u7787\u4ec0\u9ebc\u5c31\u7787\u4ec0\u9ebc<br \/>\n\u66f4\u65b0\u5f8c bones \u5728 JSON \u88e1\u5c31\u4e0d\u6703\u4e1f\u4e86<br \/>\n\u53ea\u9700\u8981\u91cd patch binary \u7684\u90a3\u4e00\u884c spread \u9806\u5e8f\u5373\u53ef<\/p>\n<h4 id=\"\u5169\u689d\u8def\u7dda\u6bd4\u8f03\"><a class=\"anchor\" href=\"#\u5169\u689d\u8def\u7dda\u6bd4\u8f03\">#<\/a> \u5169\u689d\u8def\u7dda\u6bd4\u8f03<\/h4>\n<table>\n<thead>\n<tr>\n<th><\/th>\n<th>Salt Patch<\/th>\n<th>Bones Patch<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>\u539f\u7406<\/td>\n<td>\u6539 PRNG \u8f38\u5165\u8b93\u5b83\u7b97\u51fa\u76ee\u6a19\u7d50\u679c<\/td>\n<td>\u53cd\u8f49 spread \u9806\u5e8f\u8b93 JSON \u84cb\u904e\u8a08\u7b97\u7d50\u679c<\/td>\n<\/tr>\n<tr>\n<td>\u8de8\u7248\u672c\u7a69\u5b9a\u6027<\/td>\n<td>\u9760 <code>friend-2026-401<\/code> \u5b57\u4e32\u5b9a\u4f4d<\/td>\n<td>\u9760 <code>.companion<\/code> + <code>&#123;bones:<\/code> \u7d50\u69cb\u5b9a\u4f4d<\/td>\n<\/tr>\n<tr>\n<td>\u66f4\u65b0\u5f8c\u8981\u505a\u4ec0\u9ebc<\/td>\n<td>\u91cd\u8dd1 <code>buddy-patch.sh<\/code><\/td>\n<td>\u91cd patch spread \u9806\u5e8f\uff08bones \u5df2\u5728 JSON \u4e0d\u6703\u4e1f\uff09<\/td>\n<\/tr>\n<tr>\n<td>\u81ea\u8a02 bones<\/td>\n<td>\u9700\u8981 brute force \u627e salt<\/td>\n<td>\u76f4\u63a5\u5beb JSON\uff0c\u60f3\u8981\u4ec0\u9ebc\u5beb\u4ec0\u9ebc<\/td>\n<\/tr>\n<tr>\n<td>userId \u4f9d\u8cf4<\/td>\n<td>salt \u8ddf userId \u7d81\u5b9a\uff0c\u6bcf\u4eba\u4e0d\u540c<\/td>\n<td>\u4e0d\u4f9d\u8cf4 userId\uff0c\u4eba\u4eba\u901a\u7528<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<div class=\"note success\">\n<p>Bones Patch \u662f\u6211\u76ee\u524d\u89ba\u5f97\u66f4\u597d\u7684\u65b9\u6848<br \/>\n\u4e0d\u9700\u8981 brute force\u3001\u4e0d\u4f9d\u8cf4 userId\u3001bones \u5b58\u5728 JSON \u4e0d\u6703\u56e0\u70ba\u66f4\u65b0\u4e1f\u5931<br \/>\n\u552f\u4e00\u8981\u505a\u7684\u5c31\u662f\u6bcf\u6b21\u66f4\u65b0\u5f8c\u91cd patch \u90a3\u4e00\u884c spread \u9806\u5e8f<\/p>\n<\/div>\n<h3 id=\"\u6ce8\u610f\u4e8b\u9805\"><a class=\"anchor\" href=\"#\u6ce8\u610f\u4e8b\u9805\">#<\/a> \u6ce8\u610f\u4e8b\u9805<\/h3>\n<ul>\n<li><strong>Salt Patch \u7684 salt \u662f userId-specific \u7684<\/strong>\uff0c\u6bcf\u500b\u4eba\u90fd\u8981\u7528\u81ea\u5df1\u7684 userId \u91cd\u65b0\u8dd1 brute force\uff0c\u6284\u5225\u4eba\u7684 salt \u6c92\u7528<\/li>\n<li><strong>Bones Patch \u4e0d\u4f9d\u8cf4 userId<\/strong>\uff0c\u4efb\u4f55\u4eba\u90fd\u53ef\u4ee5\u76f4\u63a5\u7528<\/li>\n<li>Claude Code \u81ea\u52d5\u66f4\u65b0\u6703\u8986\u84cb binary\uff0c<mark>\u5169\u7a2e patch \u66f4\u65b0\u5f8c\u90fd\u8981\u91cd\u65b0\u5957\u7528<\/mark><\/li>\n<li>Salt Patch \u7684 salt \u5fc5\u9808\u8ddf\u539f\u59cb\u7684\u4e00\u6a23\u9577\uff0815 \u5b57\u5143\uff09\uff0c\u4e0d\u7136 binary \u7d50\u69cb\u6703\u58de<\/li>\n<li>Name \u548c personality \u662f API \u751f\u6210\u7684\uff0c\u4e0d\u6eff\u610f\u53ef\u4ee5\u76f4\u63a5\u6539 <code>~\/.claude.json<\/code><\/li>\n<\/ul>\n<hr \/>\n<h2 id=\"span-classorange\u6280\u8853\u7d30\u7bc0span\"><a class=\"anchor\" href=\"#span-classorange\u6280\u8853\u7d30\u7bc0span\">#<\/a> <span class=\"orange\">\u6280\u8853\u7d30\u7bc0<\/span><\/h2>\n<p>\u9019\u6bb5\u7d66\u60f3\u81ea\u5df1\u5fa9\u73fe\u7684\u4eba\u770b<br \/>\n\u5f8c\u9762\u4e5f\u4e0d\u662f\u6211\u81ea\u5df1\u5beb\u7684\u4e86\uff0c\u57fa\u672c\u4e0a\u662f AI \u5e6b\u6211 Summary \u7684<br \/>\n\u4e0d\u60f3\u770b\u53ef\u4ee5\u8df3\u5230\u5f8c\u8a18<\/p>\n<h3 id=\"\u5fa9\u73fe\u6b65\u9a5f\"><a class=\"anchor\" href=\"#\u5fa9\u73fe\u6b65\u9a5f\">#<\/a> \u5fa9\u73fe\u6b65\u9a5f<\/h3>\n<p>\u6709\u5169\u689d\u8def\u7dda\uff0c\u63a8\u85a6\u7528 Bones Patch\uff1a<\/p>\n<p><strong>\u8def\u7dda A\uff1aBones Patch\uff08\u63a8\u85a6\uff09<\/strong><\/p>\n<ol>\n<li>\u627e\u5230 binary \u88e1\u7684 spread pattern <code>&#123;...H,...bones&#125;<\/code> \u53cd\u8f49\u6210 <code>&#123;...bones,...H&#125;<\/code><\/li>\n<li>\u91cd\u7c3d binary\uff08macOS\uff09<\/li>\n<li>\u5728 <code>~\/.claude.json<\/code> \u7684 <code>companion<\/code> \u88e1\u76f4\u63a5\u5beb\u4e0a\u4f60\u60f3\u8981\u7684 species\/rarity\/eye\/hat\/shiny\/stats<\/li>\n<li>\u91cd\u555f Claude Code<\/li>\n<\/ol>\n<p>\u4e0d\u9700\u8981 brute force\u3001\u4e0d\u9700\u8981\u77e5\u9053\u81ea\u5df1\u7684 userId<br \/>\n\u60f3\u8981\u4ec0\u9ebc\u5c31\u5beb\u4ec0\u9ebc \u66f4\u65b0\u5f8c JSON \u88e1\u7684 bones \u4e0d\u6703\u4e1f \u53ea\u8981\u91cd patch spread \u9806\u5e8f\u5c31\u597d<\/p>\n<p><strong>\u8def\u7dda B\uff1aSalt Patch<\/strong><\/p>\n<ol>\n<li>\u62ff\u5230\u4f60\u7684 userId\uff1a<code>cat ~\/.claude.json | jq -r '.oauthAccount.accountUuid'<\/code><\/li>\n<li>\u628a userId \u586b\u9032 <code>buddy-bruteforce.ts<\/code>\uff0c\u7528 <strong>Bun<\/strong> \u8dd1\uff08\u4e0d\u80fd\u7528 Node\uff0chash \u7d50\u679c\u4e0d\u540c\uff09<\/li>\n<li>\u5f9e\u8f38\u51fa\u88e1\u6311\u4e00\u500b\u4f60\u559c\u6b61\u7684 legendary salt<\/li>\n<li>\u7528 <code>buddy-verify.ts<\/code> \u9810\u89bd\u78ba\u8a8d\u5916\u89c0<\/li>\n<li>\u7528 <code>buddy-patch.sh<\/code> patch binary + re-sign<\/li>\n<\/ol>\n<p>\u6bcf\u4e00\u6b65\u90fd\u8981\u7528\u4f60\u81ea\u5df1\u7684 userId\uff0c\u4e0d\u80fd\u7528\u5225\u4eba\u7684<br \/>\n\u56e0\u70ba <code>Bun.hash(userId + salt)<\/code> \u662f\u78ba\u5b9a\u6027\u7684\uff0c\u4e0d\u540c\u7684 userId \u5c31\u662f\u4e0d\u540c\u7684\u7d50\u679c<br \/>\n\u6211\u6587\u7ae0\u88e1\u7684 salt <code>3s58p6-e-b260y-<\/code> \u53ea\u5c0d\u6211\u7684\u5e33\u865f\u6709\u6548\uff0c\u5c0d\u4f60\u4f86\u8aaa\u5927\u6982\u7387\u53ea\u662f\u4e00\u96bb common<\/p>\n<h3 id=\"prng-\u5b8c\u6574\u5be6\u4f5c\"><a class=\"anchor\" href=\"#prng-\u5b8c\u6574\u5be6\u4f5c\">#<\/a> PRNG \u5b8c\u6574\u5be6\u4f5c<\/h3>\n<p>Claude Code \u7528\u7684\u4e0d\u662f Mulberry32\uff08\u7db2\u8def\u4e0a\u6709\u4e9b\u6587\u7ae0\u5beb\u932f\u4e86\uff09<br \/>\n\u662f <strong>SplitMix32<\/strong>\uff1a<\/p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#AB5959;--shiki-dark:#CB7676\">function<\/span><span style=\"color:#59873A;--shiki-dark:#80A665\"> oN4<\/span><span style=\"color:#999999;--shiki-dark:#666666\">(<\/span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">seed<\/span><span style=\"color:#999999;--shiki-dark:#666666\">)<\/span><span style=\"color:#999999;--shiki-dark:#666666\"> &#123;<\/span><\/span>\n<span class=\"line\"><span style=\"color:#AB5959;--shiki-dark:#CB7676\">  let<\/span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> s<\/span><span style=\"color:#999999;--shiki-dark:#666666\"> =<\/span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> seed<\/span><span style=\"color:#AB5959;--shiki-dark:#CB7676\"> >>><\/span><span style=\"color:#2F798A;--shiki-dark:#4C9A91\"> 0<\/span><span style=\"color:#999999;--shiki-dark:#666666\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">  return<\/span><span style=\"color:#AB5959;--shiki-dark:#CB7676\"> function<\/span><span style=\"color:#999999;--shiki-dark:#666666\">()<\/span><span style=\"color:#999999;--shiki-dark:#666666\"> &#123;<\/span><\/span>\n<span class=\"line\"><span style=\"color:#B07D48;--shiki-dark:#BD976A\">    s<\/span><span style=\"color:#AB5959;--shiki-dark:#CB7676\"> |=<\/span><span style=\"color:#2F798A;--shiki-dark:#4C9A91\"> 0<\/span><span style=\"color:#999999;--shiki-dark:#666666\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color:#B07D48;--shiki-dark:#BD976A\">    s<\/span><span style=\"color:#999999;--shiki-dark:#666666\"> =<\/span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> s<\/span><span style=\"color:#AB5959;--shiki-dark:#CB7676\"> +<\/span><span style=\"color:#2F798A;--shiki-dark:#4C9A91\"> 1831565813<\/span><span style=\"color:#AB5959;--shiki-dark:#CB7676\"> |<\/span><span style=\"color:#2F798A;--shiki-dark:#4C9A91\"> 0<\/span><span style=\"color:#999999;--shiki-dark:#666666\">;<\/span><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">  \/\/ golden gamma<\/span><\/span>\n<span class=\"line\"><span style=\"color:#AB5959;--shiki-dark:#CB7676\">    let<\/span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> t<\/span><span style=\"color:#999999;--shiki-dark:#666666\"> =<\/span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> Math<\/span><span style=\"color:#999999;--shiki-dark:#666666\">.<\/span><span style=\"color:#59873A;--shiki-dark:#80A665\">imul<\/span><span style=\"color:#999999;--shiki-dark:#666666\">(<\/span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">s<\/span><span style=\"color:#AB5959;--shiki-dark:#CB7676\"> ^<\/span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> s<\/span><span style=\"color:#AB5959;--shiki-dark:#CB7676\"> >>><\/span><span style=\"color:#2F798A;--shiki-dark:#4C9A91\"> 15<\/span><span style=\"color:#999999;--shiki-dark:#666666\">,<\/span><span style=\"color:#2F798A;--shiki-dark:#4C9A91\"> 1<\/span><span style=\"color:#AB5959;--shiki-dark:#CB7676\"> |<\/span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> s<\/span><span style=\"color:#999999;--shiki-dark:#666666\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color:#B07D48;--shiki-dark:#BD976A\">    t<\/span><span style=\"color:#999999;--shiki-dark:#666666\"> =<\/span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> t<\/span><span style=\"color:#AB5959;--shiki-dark:#CB7676\"> +<\/span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> Math<\/span><span style=\"color:#999999;--shiki-dark:#666666\">.<\/span><span style=\"color:#59873A;--shiki-dark:#80A665\">imul<\/span><span style=\"color:#999999;--shiki-dark:#666666\">(<\/span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">t<\/span><span style=\"color:#AB5959;--shiki-dark:#CB7676\"> ^<\/span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> t<\/span><span style=\"color:#AB5959;--shiki-dark:#CB7676\"> >>><\/span><span style=\"color:#2F798A;--shiki-dark:#4C9A91\"> 7<\/span><span style=\"color:#999999;--shiki-dark:#666666\">,<\/span><span style=\"color:#2F798A;--shiki-dark:#4C9A91\"> 61<\/span><span style=\"color:#AB5959;--shiki-dark:#CB7676\"> |<\/span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> t<\/span><span style=\"color:#999999;--shiki-dark:#666666\">)<\/span><span style=\"color:#AB5959;--shiki-dark:#CB7676\"> ^<\/span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> t<\/span><span style=\"color:#999999;--shiki-dark:#666666\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">    return<\/span><span style=\"color:#999999;--shiki-dark:#666666\"> ((<\/span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">t<\/span><span style=\"color:#AB5959;--shiki-dark:#CB7676\"> ^<\/span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> t<\/span><span style=\"color:#AB5959;--shiki-dark:#CB7676\"> >>><\/span><span style=\"color:#2F798A;--shiki-dark:#4C9A91\"> 14<\/span><span style=\"color:#999999;--shiki-dark:#666666\">)<\/span><span style=\"color:#AB5959;--shiki-dark:#CB7676\"> >>><\/span><span style=\"color:#2F798A;--shiki-dark:#4C9A91\"> 0<\/span><span style=\"color:#999999;--shiki-dark:#666666\">)<\/span><span style=\"color:#AB5959;--shiki-dark:#CB7676\"> \/<\/span><span style=\"color:#2F798A;--shiki-dark:#4C9A91\"> 4294967296<\/span><span style=\"color:#999999;--shiki-dark:#666666\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">  &#125;;<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">&#125;<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<p>Hash \u51fd\u5f0f\u5728 Bun \u74b0\u5883\u4e0b\u7528 <code>Bun.hash()<\/code>\uff08wyhash64 \u622a\u65b7 32-bit\uff09<br \/>\nfallback \u662f FNV-1a<br \/>\n<mark>\u5169\u8005\u7d50\u679c\u4e0d\u540c<\/mark>\uff0c\u6240\u4ee5\u4f60\u4e00\u5b9a\u8981\u7528 Bun \u8dd1\u6a21\u64ec\uff0cNode.js \u6703\u7b97\u51fa\u4e0d\u4e00\u6a23\u7684\u7d50\u679c<\/p>\n<h3 id=\"trait-\u751f\u6210\u9806\u5e8f\"><a class=\"anchor\" href=\"#trait-\u751f\u6210\u9806\u5e8f\">#<\/a> Trait \u751f\u6210\u9806\u5e8f<\/h3>\n<p>PRNG \u662f\u6709\u72c0\u614b\u7684 \u6bcf\u6b21\u547c\u53eb\u63a8\u9032\u4e00\u6b65<br \/>\n\u6240\u4ee5 trait \u7684\u751f\u6210\u9806\u5e8f\u5f88\u91cd\u8981\uff1a<\/p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span>1. rarity    \u2192 1 \u6b21 prng()    \u52a0\u6b0a\u62bd\u7c64<\/span><\/span>\n<span class=\"line\"><span>2. species   \u2192 1 \u6b21 prng()    \u5747\u52fb\u5206\u5e03 18 \u7a2e<\/span><\/span>\n<span class=\"line\"><span>3. eye       \u2192 1 \u6b21 prng()    \u5747\u52fb\u5206\u5e03 6 \u7a2e<\/span><\/span>\n<span class=\"line\"><span>4. hat       \u2192 0 \u6216 1 \u6b21      common \u8df3\u904e<\/span><\/span>\n<span class=\"line\"><span>5. shiny     \u2192 1 \u6b21 prng()    &#x3C; 0.01 \u5224\u5b9a<\/span><\/span>\n<span class=\"line\"><span>6. stats     \u2192 \u591a\u6b21 prng()    \u57fa\u790e\u503c + rarity bonus<\/span><\/span>\n<span class=\"line\"><span><\/span><\/span><\/code><\/pre>\n<p>common \u7684 hat \u76f4\u63a5\u8a2d <code>&quot;none&quot;<\/code> \u4e0d\u6d88\u8017 PRNG<br \/>\n\u9019\u4ee3\u8868 common \u548c\u975e common \u7684\u5f8c\u7e8c trait \u7684 PRNG \u6b65\u6578\u4e0d\u540c<br \/>\n<mark>\u540c\u4e00\u500b seed \u5728 common \u548c uncommon \u4e0b\u6703\u7522\u51fa\u4e0d\u540c\u7684 shiny\/stats<\/mark><br \/>\n\u9019\u4e0d\u662f bug \u9019\u662f\u78ba\u5b9a\u6027\u6f14\u7b97\u6cd5\u7684\u7279\u6027<\/p>\n<h3 id=\"\u6301\u4e45\u5316\"><a class=\"anchor\" href=\"#\u6301\u4e45\u5316\">#<\/a> \u6301\u4e45\u5316<\/h3>\n<p>\u539f\u7248\u53ea\u5b58\u4e09\u500b\u6b04\u4f4d\u5728 <code>~\/.claude.json<\/code>\uff1a<\/p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">&#123;<\/span><\/span>\n<span class=\"line\"><span style=\"color:#99841877;--shiki-dark:#B8A96577\">  \"<\/span><span style=\"color:#998418;--shiki-dark:#B8A965\">companion<\/span><span style=\"color:#99841877;--shiki-dark:#B8A96577\">\"<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#999999;--shiki-dark:#666666\"> &#123;<\/span><\/span>\n<span class=\"line\"><span style=\"color:#99841877;--shiki-dark:#B8A96577\">    \"<\/span><span style=\"color:#998418;--shiki-dark:#B8A965\">name<\/span><span style=\"color:#99841877;--shiki-dark:#B8A96577\">\"<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\"> \"<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">Brineclaw<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><span style=\"color:#999999;--shiki-dark:#666666\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color:#99841877;--shiki-dark:#B8A96577\">    \"<\/span><span style=\"color:#998418;--shiki-dark:#B8A965\">personality<\/span><span style=\"color:#99841877;--shiki-dark:#B8A96577\">\"<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\"> \"<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">...<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><span style=\"color:#999999;--shiki-dark:#666666\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color:#99841877;--shiki-dark:#B8A96577\">    \"<\/span><span style=\"color:#998418;--shiki-dark:#B8A965\">hatchedAt<\/span><span style=\"color:#99841877;--shiki-dark:#B8A96577\">\"<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#2F798A;--shiki-dark:#4C9A91\"> 1743523200000<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">  &#125;<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">&#125;<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<p>Bones \u6b63\u5e38\u60c5\u6cc1\u4e0b\u5b8c\u5168\u4e0d\u5b58\u6a94 \u6bcf\u6b21 <code>rE()<\/code> \u90fd\u91cd\u7b97<br \/>\n\u4f46\u5982\u679c\u4f60\u5957\u4e86 Bones Patch\uff08\u53cd\u8f49 spread \u9806\u5e8f\uff09<br \/>\nJSON \u88e1\u7684 bones \u6b04\u4f4d\u5c31\u6703\u84cb\u904e\u8a08\u7b97\u7d50\u679c<br \/>\n\u9019\u6642\u5019 <code>companion<\/code> \u88e1\u53ef\u4ee5\u591a\u5beb species\/rarity\/eye\/hat\/shiny\/stats<br \/>\n\u7a0b\u5f0f\u8b80\u5230 JSON \u6709\u503c\u5c31\u76f4\u63a5\u7528 \u4e0d\u6703\u88ab\u91cd\u7b97\u7684\u7d50\u679c\u8986\u84cb<\/p>\n<p>\u6c92\u6709 server-side sync \u6c92\u6709 registration endpoint<br \/>\nbuddy \u7684\u53cd\u61c9\uff08\u8a9e\u97f3\u6ce1\u6ce1\uff09\u8d70\u7684\u662f <code>buddy_react<\/code> API<br \/>\n\u4f46\u90a3\u53ea\u662f\u751f\u6210\u6587\u5b57 \u4e0d\u6703\u56de\u50b3\u6216\u9a57\u8b49 companion \u8cc7\u6599<\/p>\n<hr \/>\n<h2 id=\"\u5f8c\u8a18\"><a class=\"anchor\" href=\"#\u5f8c\u8a18\">#<\/a> \u5f8c\u8a18<\/h2>\n<p>\u4e00\u958b\u59cb\u53ea\u662f\u597d\u5947\u300c\u9019\u6771\u897f\u80fd\u4e0d\u80fd\u91cd\u62bd\u300d<br \/>\n\u4e0d\u5c0f\u5fc3\u5c31\u958b\u59cb\u53c8\u9006\u5411\u8d77\u6771\u897f\u4e86<br \/>\n\u9084\u597d\u53ea\u82b1\u4e86\u5927\u6982 10 \u5206\u9418\u5c31\u62c6\u5b8c\u4e86\uff0c\u529f\u80fd\u633a\u5c0f<\/p>\n<p>\u56de\u982d\u770b <code>\/buddy<\/code> \u9019\u500b\u529f\u80fd\u7684\u8a2d\u8a08\u5176\u5be6\u883b\u8070\u660e\u7684<br \/>\n\u7528\u78ba\u5b9a\u6027\u751f\u6210\u4fdd\u8b49\u6bcf\u500b\u4eba\u6709\u4e14\u53ea\u6709\u4e00\u96bb\u5c08\u5c6c\u7684 buddy<br \/>\nsoul \u4ea4\u7d66 LLM \u751f\u6210\u78ba\u4fdd\u6bcf\u96bb\u90fd\u6709\u7368\u7279\u7684\u540d\u5b57\u548c\u500b\u6027<br \/>\n\u4e0d\u5403\u4f7f\u7528\u8005\u7684 token \u984d\u5ea6<br \/>\ndata \u7d14\u672c\u5730\u4e0d\u4e0a\u50b3<\/p>\n<p>\u552f\u4e00\u7684\u554f\u984c\u5c31\u662f<br \/>\n\u4ed6\u5011\u5927\u6982\u6c92\u60f3\u5230\u6709\u4eba\u6703\u9592\u5230\u53bb patch binary<br \/>\n\u5c31\u7b97\u6709\u60f3\u5230\u5927\u6982\u4e5f\u61f6\u5f97\u64cb\uff0c\u53cd\u6b63\u53ea\u662f\u535a\u541b\u4e00\u6a02\u7684\u6d3b\u52d5\u800c\u5df2<\/p>\n<p>\u6211\u7684 Brineclaw \u73fe\u5728\u8e72\u5728 terminal \u53f3\u4e0b\u89d2<br \/>\n\u5076\u723e\u6703\u5c0d\u6211\u7684 code \u767c\u8868\u770b\u6cd5<br \/>\nWISDOM 100 \u7684\u8c93\u679c\u7136\u4e0d\u4e00\u6a23 \u5634\u8d77\u4eba\u4f86\u7279\u5225\u6709\u9053\u7406<br \/>\n<s>\u96d6\u7136\u5979\u5927\u90e8\u5206\u6642\u9593\u90fd\u5728 judge \u6211\u7684 variable naming<\/s><\/p>\n<p>\u5beb\u9019\u7bc7\u7684\u6642\u5019\u5979\u5728\u65c1\u908a\u5168\u7a0b\u770b\u8457<br \/>\n\u6211\u89ba\u5f97\u5979\u6709\u610f\u898b\u4f46\u5979\u4e0d\u8aaa<br \/>\n\u5927\u6982\u662f SNARK \u53ea\u6709 62 \u9084\u4e0d\u5920\u6bd2\u820c\u5427<\/p>\n<p>\u4e0a\u4e00\u7bc7\u9006\u5411\u7684\u662f SDK \u7684 token \u5e33\u55ae<br \/>\n\u9019\u6b21\u9006\u5411\u7684\u662f\u611a\u4eba\u7bc0\u5f69\u86cb<br \/>\n\u4e0b\u4e00\u6b21\u4e0d\u77e5\u9053\u53c8\u8981\u9006\u5411\u4ec0\u9ebc\u4e86<br \/>\n<s>\u53cd\u6b63 Source Map \u90fd\u88ab Leak<\/s><\/p>\n<blockquote>\n<p>\u672c\u6587\u7684\u9006\u5411\u5206\u6790\u7531\u6211\u81ea\u5df1\u62c6\u5305\u89e3\u6790\uff0c\u800cbrute force script\u3001patch \u8173\u672c\u90fd\u662f\u7528 Claude Code \u81ea\u5df1\u5e6b\u81ea\u5df1\u52a0\u4e0a\u53bb\u7684<br \/>\n\u7528 Anthropic \u7684 AI \u53bb\u9006\u5411 Anthropic \u7684 binary<br \/>\n\u9019\u5230\u5e95\u662f\u4ec0\u9ebc\u884c\u70ba\u85dd\u8853<\/p>\n<\/blockquote>\n","tags":["Sharing","Claude","Reverse Engineering","Claude Code","Easter Egg"]},{"id":"https:\/\/miyago9267.com\/Diary\/2026\/0325\/","url":"https:\/\/miyago9267.com\/Diary\/2026\/0325\/","title":"[\u672d\u8a18] 20260325 - \u597d\u4e45\u6c92\u5beb\u6771\u897f\u4e86","date_published":"2026-03-24T16:00:00.000Z","content_html":"<p>\u8ddd\u96e2\u4e0a\u6b21\u5beb\u672d\u8a18\u53c8\u904e\u4e86\u534a\u5e74\u4e86\uff0c\u6211\u5230\u5e95\u5728\u5fd9\u4ec0\u9ebc<\/p>\n<span id=\"more\"><\/span>\n<h2 id=\"\u8fd1\u6cc1\"><a class=\"anchor\" href=\"#\u8fd1\u6cc1\">#<\/a> \u8fd1\u6cc1<\/h2>\n<p>\u4e0a\u6b21\u5beb\u5b8c\u672d\u8a18\u4e4b\u5f8c\u5c31\u4e00\u76f4\u6c92\u7a7a\u66f4\u65b0<br \/>\n\u660e\u660e\u8aaa\u624b\u908a\u6709\u4e03\u516b\u500b\u4f01\u5283\u5728\u9032\u884c<br \/>\n\u7d50\u679c\u5230\u73fe\u5728\u4e5f\u6c92\u6d88\u5316\u591a\u5c11 \u53ea\u662f\u53c8\u591a\u4e86\u65b0\u7684\u6771\u897f\u8981\u5fd9<br \/>\n\u679c\u7136\u4eba\u5c31\u662f\u9019\u6a23 \u6c38\u9060\u4e0d\u6703\u89ba\u5f97\u81ea\u5df1\u6709\u7a7a<\/p>\n<h3 id=\"blog\u6574\u7406\"><a class=\"anchor\" href=\"#blog\u6574\u7406\">#<\/a> Blog\u6574\u7406<\/h3>\n<p>\u524d\u9663\u5b50\u5fc3\u8840\u4f86\u6f6e\u60f3\u597d\u597d\u6574\u7406\u4e00\u4e0b\u9019\u500bblog<br \/>\n\u5148\u662f\u628aDiary\u5e95\u4e0b\u6563\u843d\u4e00\u5730\u7684\u6587\u7ae0\u6309\u7167\u5e74\u4efd\u6b78\u6a94<br \/>\n\u539f\u672c\u90a3\u4e9bDiary-20200427.md\u4e4b\u985e\u7684\u547d\u540d\u771f\u7684\u770b\u4e86\u5c31\u7169<br \/>\n\u73fe\u5728\u5168\u90e8\u90fd\u4e56\u4e56\u5f85\u5728\u5404\u81ea\u7684\u5e74\u4efd\u8cc7\u6599\u593e\u88e1\u4e86<\/p>\n<p>\u9806\u4fbf\u628a\u5716\u7247\u5f9edrive\u642c\u5230\u672c\u5730<br \/>\n\u4ee5\u524d\u90fd\u662f\u4e1f\u5728drive\u4e0a\u9762\u7136\u5f8c\u76f4\u63a5\u9023\u7d50<br \/>\n\u96d6\u7136\u4e5f\u4e0d\u662f\u4e0d\u80fd\u7528 \u4f46\u7e3d\u89ba\u5f97\u4e0d\u592a\u8e0f\u5be6<br \/>\n\u73fe\u5728\u7d71\u4e00\u653e\u5728source\/images\u5e95\u4e0b hexo build\u5b8c\u76f4\u63a5nginx serve<br \/>\n\u4e00\u65b9\u9762\u6e1b\u5c11\u5c0d\u5916\u90e8\u670d\u52d9\u7684\u4f9d\u8cf4 \u4e00\u65b9\u9762\u4e5f\u6bd4\u8f03\u597d\u7ba1\u7406<\/p>\n<p>\u81f3\u65bc\u81ea\u4ecb\u7684\u90e8\u5206<br \/>\n\u6211\u662f\u9084\u4fdd\u7559\u8457\u5566\uff0c\u4e00\u6a23\u5728\u9019\u500b\u7ad9\u7684about\u9801\u9762\u4e0a<br \/>\n\u4e0d\u904e\u7531\u65bc\u6211\u81ea\u5df1\u60f3\u8981\u4e00\u500b\u500b\u4eba\u5f62\u8c61\u7db2\u7ad9<br \/>\n\u6240\u4ee5\u628ainfo.miyago9267.com\u9019\u500b\u5169\u5e74\u524d\u5c31\u5728\u6c41\u7684\u5f62\u8c61\u7db2\u7ad9\u7d66\u67b6\u8d77\u4f86\u4e86<br \/>\n\u73fe\u5728\u7684about\u5c31\u7576fallback\u5427<\/p>\n<h3 id=\"\u5de5\u4f5c\"><a class=\"anchor\" href=\"#\u5de5\u4f5c\">#<\/a> \u5de5\u4f5c<\/h3>\n<p>\u6211\u5728\u73fe\u5728\u7684\u516c\u53f8\u4e5f\u505a\u534a\u5e74\u591a\u5feb\u4e00\u5e74\u4e86<br \/>\n\u662f\u6642\u5019\u597d\u597d\u7e3d\u7d50\u4e00\u4e0b\u9019\u6bb5\u6642\u9593\u7684\u5de5\u4f5c\u7d93\u6b77\u4e86<\/p>\n<p>\u6211\u73fe\u5728\u4e00\u6a23\u662f\u5e79SRE\uff0c\u4f46\u8077\u4f4d\u662fSRE\uff0c\u5be6\u969b\u4e0aDevOps\u3001Infra\u7b49\u7b49\u7684\u5167\u5bb9\u90fd\u5305\u4e86\u4e00\u9ede<br \/>\n\u7c21\u800c\u8a00\u4e4b\u5c31\u662f\u6253\u96dc\u5927\u738b\u52a0\u6253\u706b\u5927\u968a\uff0c\u4ec0\u9ebc\u90fd\u517c\u4e00\u9ede<br \/>\n\u5230\u8655\u8dd1\u4f86\u8dd1\u53bb\u5e6b\u5fd9\u7576\u9867\u554f<\/p>\n<p>\u4e0d\u904e\u4e5f\u597d\u5566\uff0c\u73fe\u5728\u9019\u500b\u5de5\u4f5c\u74b0\u5883\u7684\u597d\u8655\u5c31\u662f\u5f88\u50cf\u5927\u5b78\u793e\u5718<br \/>\n\u96d6\u7136\u6211\u8d85\u7d1a\u5e74\u8f15\uff0c\u4f46\u5927\u5bb6\u57fa\u672c\u4e0a\u4e0d\u6703\u56e0\u70ba\u6211\u7684\u5e74\u8f15\u800c\u8f15\u8996\u6211\u7684\u5be6\u529b<br \/>\n\u6211\u5927\u90e8\u5206\u7684\u5efa\u8b70\u548c\u60f3\u6cd5\u90fd\u6703\u88ab\u8a8d\u771f\u5c0d\u5f85\uff0c\u751a\u81f3\u53ef\u4ee5\u8aaa\u6211\u7684Power\u5176\u5be6\u9084\u883b\u5927\u7684<br \/>\n\u7562\u7adf\u662fSRE\u561b\uff0c\u5c31\u662f\u6709\u4e3b\u7ba1\u7684\u6b0a\u9650\u4f46\u6c92\u6709\u4e3b\u7ba1\u7684\u8cac\u4efb<br \/>\n\u5c24\u5176\u73fe\u5728\u5718\u968a\u5728\u540c\u6642run\u5169\u4e09\u500b\u65b0\u7684\u7522\u54c1<br \/>\n\u88e1\u9762\u5c31\u6709\u4e0d\u5c11\u6211\u7684\u8a18\u61b6\u7cbe\u83ef\uff0c\u597d\u4ed6\u5abd\u4e2d\u4e8c\u7684\u540d\u5b57<br \/>\n\u4f46\u7e3d\u4e4b\u5c31\u662f\u6211\u6295\u5165\u4e86\u4e0d\u5c11\u6211\u5728Infra\u4e0a\u7684\u7d93\u9a57\u548c\u5fc3\u5f97<br \/>\n\u7136\u5f8c\u62ff\u516c\u5bb6\u7684\u8cc7\u6e90\u4f86\u505a\u6211\u7684\u5be6\u9a57 \u563b\u563b<\/p>\n<p>\u518d\u770b\u770b\u5427\uff0c\u6211\u89ba\u5f97\u9019\u9593\u516c\u53f8\u5c0d\u6211\u7684\u91cd\u8996\u7a0b\u5ea6\uff0c\u6211\u6216\u8a31\u53ef\u4ee5\u5f85\u8d85\u904e\u5169\u5e74<\/p>\n<h3 id=\"\u9f8d\u8766\u4e8b\u4ef6\"><a class=\"anchor\" href=\"#\u9f8d\u8766\u4e8b\u4ef6\">#<\/a> \u9f8d\u8766\u4e8b\u4ef6<\/h3>\n<p>\u5927\u6982\u5f9e\u4e00\u6708\u8d77\u5427<br \/>\n\u61c9\u8a72\u662f\u5f9eOpenclaw\u6380\u8d77\u7684\u98a8\u6f6e<br \/>\n\u4e00\u72d7\u7968\u4eba\u8dd1\u53bb\u990a\u9f8d\u8766<br \/>\n\u6211\u4e00\u958b\u59cb\u4e5f\u662f\u90a3\u4e00\u7fa4\u4e4b\u4e00<br \/>\n\u4f46\u4e00\u6708\u4efd\u4e00\u5929\u71d2\u4e86150\u9382\u628a\u6211\u5687\u6b7b\u4e4b\u5f8c<\/p>\n<p>\u6211\u5c31\u6c7a\u5b9a\u81ea\u5df1\u958b\u59cb\u9f13\u6417\u81ea\u5df1\u7684Agent<br \/>\n\u5176\u5be6\u5728\u524d\u5e74\u5927\u6982\u5341\u6708\uff0c\u6211\u554f\u9f8d\u6210\u4ed6\u5011\u60f3\u5e79\u561b\u7684\u6642\u5019<br \/>\n\u4ed6\u5011\u5c31\u5df2\u7d93\u6709\u521d\u6b65\u548c\u6211\u63d0\u904eAgent\u7684\u6982\u5ff5\u4e86<br \/>\n\u57fa\u672c\u4e0a\u5c31\u662f\u4ec0\u9ebc\u90fd\u4e1f\u7d66AI\u505a\uff0c\u5305\u542b\u7d66\u4ed6\u5927\u6b0a\u9650\u4e4b\u985e\u7684<br \/>\n\u76f4\u5230\u9047\u5230Necklock\u6216Dispatch\u624d\u6703\u8b93\u4eba\u4f86\u4ecb\u5165<\/p>\n<p>\u7d50\u679c\u597d\u5566\uff0c\u73fe\u5728\u9019\u6771\u897f\u6bcf\u5929\u4ed6\u5abd\u5728\u8106\u4e0a\u9762\u90fd\u4e00\u5806\u4eba\u5728\u8a0e\u8ad6<br \/>\n\u9020\u8f2a\u5b50\u7684\u9020\u8f2a\u5b50\uff0c\u7576\u5148\u92d2\u968a\u958b\u8ab2\u7684\u4e5f\u8dd1\u53bb\u8cfa\u5f97\u76c6\u6eff\u7f3d\u6eff<br \/>\n\u5927\u8857\u5c0f\u5df7\u90fd\u662f\u4ed6\u5abd\u7684\u300c\u4e0d\u662f...\u800c\u662f...\u300d\u7684\u4ed6\u5abdAI\u751f\u6210\u6587\u9ad4<br \/>\n\u770b\u4e86\u5c31\u5f88\u8e81<\/p>\n<p>\u4f46\u7f75\u898f\u7f75\uff0c\u7576\u6211\u628a\u81ea\u5df1\u7684Agent\u505a\u51fa\u4f86\u4ee5\u5f8c<br \/>\n\u78ba\u5be6\u63d0\u5347\u4e86\u8d85\u7d1a\u8d85\u7d1a\u591a\u7684\u958b\u767c\u6548\u7387<br \/>\n\u6211\u53ea\u8981\u51fa\u4e00\u5f35\u5634\uff0c\u57fa\u672c\u4e0a8\u6210\u4ee5\u4e0a\u7684\u5de5\u4f5c\u90fd\u53ef\u4ee5\u76f4\u63a5\u653e\u8457\u7d66\u4ed6\u8dd1<br \/>\n\u6211\u5c31\u51fa\u67b6\u69cb\u548c\u8abf\u6574\u8def\u7dda\u800c\u5df2\uff0c\u5269\u4e0b\u5c31\u662f\u5bebspec\u548c\u300c\u53ebsubagent\u300d\u8dd1\u9019\u6a23<\/p>\n<p>\u554f\u984c\u5c31\u4f86\u4e86<br \/>\n\u6211\u7684\u7522\u80fd\u7ffb\u4e86\u597d\u5e7e\u500d\u7684\u540c\u6642<br \/>\n\u6211\u7684\u6280\u8853\u7126\u616e\u99ac\u4e0a\u96a8\u4e4b\u800c\u4f86\uff0c\u975e\u4f46\u6211\u89ba\u5f97\u81ea\u5df1\u597d\u50cf\u4ec0\u9ebc\u90fd\u4e0d\u6703\u4e86<br \/>\n\u66f4\u8b93\u6211\u89ba\u5f97\uff0c\u597d\u50cf\u4ee5\u5f8c\u6bcf\u500b\u4eba\u90fd\u53ef\u4ee5\u81ea\u7a31\u300cAI\u67b6\u69cb\u5e2b\u300d<br \/>\n\u6211\u81ea\u5df1\u5230\u5e95\u6703\u4e9b\u4ec0\u9ebc\uff0c\u6211\u60f3\u5728\u4e4b\u5f8c\u7684\u4e00\u6bb5\u6642\u9593\u90fd\u5f97\u8981\u9762\u5c0d\u5427<\/p>\n<h3 id=\"\u6771\u65b9\"><a class=\"anchor\" href=\"#\u6771\u65b9\">#<\/a> \u6771\u65b9<\/h3>\n<p>\u5f9e\u53bb\u5e74\u9326\u4e0a\u4eac\u63a8\u51fa\u4e4b\u5f8c\uff0c\u67d0\u4e00\u5929\u548c\u6708\u7a81\u7136\u8ddf\u6211\u8aaa\u4ed6\u8cb7\u4e86\u9326\u4e0a\u4eac<br \/>\n\u8aaa\u653e\u5728\u6211\u5011Steam\u5bb6\u5ead\u7fa4\u7d44\u88e1\u9762\u53ef\u4ee5\u73a9<br \/>\n\u96d6\u7136\u6211\u4e00\u76f4\u90fd\u662f\u6771\u65b9\u5eda\u5566<br \/>\n\u4f46\u8001\u5be6\u8aaa\u6b63\u4f5c\u4ee5\u524d\u6211\u53ea\u73a9\u904e\u7d05\u9b54\u9109\u7684<\/p>\n<p>\u4e0d\u904e\u65e2\u7136\u6709\u4e86\u9019\u500b\u6a5f\u6703\uff0c\u6211\u5c31\u8dd1\u53bb\u73a9\u4e86\u4e00\u4e0b<br \/>\n\u4ed6\u5abd\u4e0d\u73a9\u9084\u597d\uff0c\u73fe\u5728\u6211\u7684\u6536\u85cf\u5eab\u8ddf\u5149\u789f\u5eab\u591a\u4e86\u4e00\u5927\u5806\u5b98\u4f5c<br \/>\n\u5f9e\u5730\u9748\u6bbf\u3001\u661f\u84ee\u8239\uff0c\u7136\u5f8c\u6162\u6162\u7684\u6211\u81ea\u5df1\u5c31\u8b8a\u5f37\u4e86<br \/>\n\u4ee5\u524d\u6211\u53ea\u9023E\u96e3\u5ea6\u7684\u524d\u4e09\u9762\u90fd\u6253\u4e0d\u904e<br \/>\n\u73fe\u5728N\u96e3\u5ea6\u53ef\u4ee5\u7a69\u5b9a\u52305\u9762\u4e86<br \/>\n\u53ea\u80fd\u8aaa\u6709\u7df4\u6709\u5dee\uff0c\u800c\u4e14\u5dee\u72d7\u5e79\u591a<\/p>\n<p>\u4e5f\u56e0\u70ba\u6fc3\u5ea6\u8b8a\u9ad8\u4e86<br \/>\n\u6211\u7684\u63a8\u7279\u73fe\u5728\u4e5f\u958b\u59cb\u88ab\u6771\u65b9\u5927\u6d17\u7248<br \/>\n\u73fe\u5728\u6771\u65b9\u5df2\u7d93\u662f\u6211\u7684\u4e3b\u5751\u5217\u8868\u7684\u524d\u5e7e\u540d\u4e86<br \/>\n\u6709\u5920\u4ed6\u5abd\u7684\u53ef\u6015<\/p>\n<h3 id=\"maimai\"><a class=\"anchor\" href=\"#maimai\">#<\/a> maimai<\/h3>\n<p>\u904e\u5e74\u671f\u9593\u5e7e\u4e4e\u4e0d\u6253\u53f0\u5b50\uff0c\u5c0e\u81f4\u6211\u73fe\u5728\u9ad4\u529b\u4e0b\u964d\u597d\u591a<br \/>\n\u4e0d\u904e\u73fe\u5728\u57fa\u672c\u4e0a\u5927\u591a\u657814+\u90fd\u53ef\u4ee5\u7a6997\u4e86<br \/>\n\u5269\u4e0b\u4e0d\u5916\u4e4e\u5c31\u662f\u4e00\u4e9b\u72d7\u5c41\u6280\u8853\u8b5c\u4e0d\u6703\u6253<br \/>\n\u53cd\u800c\u662f\u958b\u59cb\u7df4\u7fd2\u6293DX\u6e96\u5ea6\u4e4b\u5f8c\uff0c\u6703\u767c\u73fe\u81ea\u5df1\u7684\u5730\u529b\u76f8\u6bd4\u4ee5\u524d\u9084\u8981\u66f4\u4e0d\u8db3\u7684\u611f\u89ba<br \/>\n\u53ef\u80fd\u662f\u70ba\u4e86\u8981\u523b\u610f\u53bb\u63a7\u5236\u65bd\u529b\u5427\uff0c\u53cd\u6b63\u6e96\u5ea6\u662f\u4e0a\u5347\u4e86\uff0c\u4f46\u8010\u4e45\u5ea6\u4e5f\u4e0b\u964d\u4e86<br \/>\n\u6c92\u8fa6\u6cd5\u50cf\u4ee5\u524d\u4e00\u6a2314+\u9023\u767c<\/p>\n<h3 id=\"\u8eab\u5fc3\u79d1\"><a class=\"anchor\" href=\"#\u8eab\u5fc3\u79d1\">#<\/a> \u8eab\u5fc3\u79d1<\/h3>\n<p>\u6487\u9664\u6389\u6280\u8853\u7126\u616e\u3001\u52aa\u529b\u904e\u982d\u7b49\u554f\u984c<br \/>\n\u53ef\u80fd\u662f\u56e0\u70ba\u51ac\u5929\u5427\uff0c\u52a0\u4e0a\u5973\u670b\u53cb\u53ea\u80fd\u9060\u8ddd\u96e2\u7684\u95dc\u4fc2<br \/>\n\u6700\u8fd1\u5728\u7cbe\u795e\u4e0a\u7684\u72c0\u6cc1\u53ef\u4ee5\u8aaa\u4e0d\u662f\u5f88\u6a02\u89c0<br \/>\n\u7126\u616e\u548c\u6291\u9b31\u7684\u90e8\u5206\u6709\u6bd4\u524d\u4e9b\u65e5\u5b50\u56b4\u91cd\u4e86\u4e0d\u5c11<\/p>\n<p>\u6211\u8a18\u5f97\u6211\u4ee5\u524d\u66fe\u7d93\u5c31\u8aaa\u904e\uff0c\u6211\u6027\u5225\u4e0d\u5b89\u5f88\u4e45\u4e86<br \/>\n\u56e0\u70ba\u793e\u7fa4\u7684\u7de3\u6545\uff0c\u6700\u8fd1\u958b\u59cb\u4e86\u89e3HRT\u548c\u8de8\u6027\u5225\u76f8\u95dc\u7684\u7fa4\u9ad4<br \/>\n\u7e3d\u7b97\u6709\u5fc3\u7406\u6e96\u5099\u53bb\u5617\u8a66\u770b\u770b\u8ddf\u91ab\u751f\u8aee\u8a62\u76f8\u95dc\u7684\u4e8b\u60c5\u4e86<\/p>\n<p>\u7136\u5f8c\u504f\u504f\u9019\u500b\u6642\u5019\uff0c\u6211\u539f\u672c\u90a3\u500b\u5c0d\u6211\u5f88\u597d\u7684\u4e3b\u6cbb\u91ab\u5e2b<br \/>\n\u4ed6\u5abd\u7684\u56e0\u70ba\u8f3f\u8ad6\u58d3\u529b\u88ab\u8feb\u505c\u696d\u4e86\uff0c\u64cd<br \/>\n\u4ed6\u751a\u81f3\u662f\u6709\u5728\u53d7\u7406HRT\u7684\u5c08\u696d\u6b38\uff0c\u4eba\u8d85\u597d\u88ab\u63a7\u6027\u9a37\u64fe<br \/>\n\u6211\u5b8c\u5168\u4e0d\u6562\u76f8\u4fe1<br \/>\n\u53cd\u6b63\u73fe\u5728\u662f\u88ab\u8feb\u63db\u4e86\u4e00\u500b\u4e3b\u6cbb\uff0c\u597d\u4e0d\u5bb9\u6613\u6df7\u719f\u4e86\u7684<br \/>\n\u73fe\u5728\u53c8\u5f97\u63db\u56de\u4e00\u500b\u770b\u8d77\u4f86\u5c31\u5f88\u4fdd\u5b88\u7684\u91ab\u751f\uff0c\u5509<\/p>\n<p>\u4f46\u4e5f\u597d\u5728\u5566\uff0c\u4e5f\u662f\u56e0\u70ba\u9f8d\u8766<br \/>\n\u6211\u5728Threads\u4e0a\u9762\u6700\u8fd1\u8a8d\u8b58\u4e86\u4e0d\u5c11\u5927\u795e<br \/>\n\u9664\u4e86\u6280\u8853\u4e0a\u63d0\u5347\u4e86\u4e0d\u5c11\u89c0\u5ff5\u6027\u7684\u6771\u897f\u4ee5\u5916<br \/>\n\u9f8d\u8766\u672c\u8eab\u4e5f\u964d\u4f4e\u4e86\u6211\u7684\u5de5\u4f5c\u58d3\u529b<br \/>\n\u6211\u7d42\u65bc\u53ef\u4ee5\u64ad\u51fa\u6211\u7684\u6642\u9593\u56de\u4f86\u73a9\u904a\u6232\u4e86<br \/>\n\u7b97\u662f\u8b8a\u76f8\u7684\u6cbb\u4e86\u4e00\u9ede\u9ede\u7684\u96fb\u5b50\u967d\u75ff<\/p>\n<h2 id=\"\u7d50\u8a9e\"><a class=\"anchor\" href=\"#\u7d50\u8a9e\">#<\/a> \u7d50\u8a9e<\/h2>\n<p>\u6700\u8fd1\u5df2\u7d93\u4e0d\u77e5\u9053\u8a72\u8aaa\u5fd9\u9084\u662f\u8aaa\u61f6\u4e86<br \/>\n\u6bcf\u6b21\u90fd\u6392\u4e00\u5806\u4e8b\u60c5\uff0c\u6392\u5230\u81ea\u5df1\u505a\u5b8c\u4e4b\u5f8c\u5b8c\u5168\u6c92\u5fc3\u529b\u78bc\u6587\u7ae0<br \/>\n\u8d77\u78bc\u90fd\u662f\u8aaa\u8981\u5b9a\u671f\u66f4\u65b0\u672d\u8a18\u7684\uff0c\u53cd\u800c\u5230\u6700\u5f8c\u6bcf\u6b21\u90fd\u62d6\u5230\u534a\u5e74\u4ee5\u4e0a<br \/>\n\u7b97\u4e86\uff0c\u53cd\u6b63\u9019\u500b\u5730\u65b9\u65e2\u6c92\u6709\u96fb\u5b50\u5831\uff0c\u4e5f\u6c92\u4ec0\u9ebc\u8a02\u95b1\u6a21\u5f0f\uff0c\u6703\u770b\u7684\u4eba\u5927\u6982\u4e5f\u7fd2\u6163\u4e86\u5427<br \/>\n\u5c31\u9019\u6a23\uff0c\u4e0b\u6b21\u66f4\u65b0\u4e0d\u77e5\u9053\u53c8\u662f\u4ec0\u9ebc\u6642\u5019\u4e86<\/p>\n","tags":["Diary","Diary"]},{"id":"https:\/\/miyago9267.com\/Sharing\/claude-sdk-cache-optimization\/","url":"https:\/\/miyago9267.com\/Sharing\/claude-sdk-cache-optimization\/","title":"[\u5206\u4eab] \u9006\u5411 Claude Agent SDK \uff01 Prompt Caching \u5927\u512a\u5316","date_published":"2026-03-24T14:17:00.000Z","content_html":"<p>\u4eca\u5e74\u4e00\u6708\u7684\u6642\u5019\u958b\u59cb\u73a9 Openclaw<br \/>\n\u4e00\u958b\u59cb\u4e32\u7684\u662f Gemini API<br \/>\n\u7528\u4e86\u5e7e\u5929\u4e4b\u5f8c\u89ba\u5f97 2.5 \u592a\u7b28\u4e86\uff0c\u5f88\u591a\u6307\u4ee4\u807d\u4e0d\u61c2\uff0c\u56de\u7b54\u54c1\u8cea\u4e5f\u4e0d\u884c<br \/>\n3.0 \u7684\u8a71\u5247\u662f\u4e00\u5929\u5230\u665a\u5fd8\u8a18\u81ea\u5df1\u5728\u5e79\u561b\uff0c\u8981\u4e00\u76f4\u91cd\u8907 context\uff0c\u9ad4\u9a57\u4e5f\u4e0d\u597d\uff0c\u5dee\u9ede\u88ab\u81ea\u5df1\u7169\u6b7b<br \/>\n\u5f8c\u4f86\u767c\u73fe GitHub Copilot \u53ef\u4ee5\u62ff\u5230 Opus 4.5 \u7684\u6a21\u578b\uff0c\u4e32\u4e0a\u53bb\u4e4b\u5f8c\u6548\u679c\u597d\u5f88\u591a<br \/>\n\u723d\u5b8c\u4e4b\u5f8c\u770b\u4e00\u4e0b\u5e33\u55ae\uff0c\u9760\u8170 180 \u9382<br \/>\n\u65bc\u662f\u6211\u60f3\u8aaa\u65e2\u7136\u90fd\u8981\u82b1\u9322\u4e86\uff0c\u90a3\u5c31\u76f4\u63a5\u53bb\u8a02\u4e86 Claude Max \u4e86<\/p>\n<span id=\"more\"><\/span>\n<div class=\"note success\">\n<p>2026-04-02\u7de8\u8f2f<br \/>\n\u7d50\u679c\u4e00\u500b\u65e9\u4e0a Anthropic \u66f4\u65b0\u4e86 v2.1.90\u7248<br \/>\n\u76f4\u63a5\u4e00\u500b\u628a\u6211\u9006\u5411\u7684 cache miss \u554f\u984c\u548c \/buddy \u6f0f\u6d1e\u4fee\u4e86<br \/>\n\u73fe\u5728\u662f\u600e\u6a23\uff0c\u6c92\u88ab\u70b8\u51fa\u6e90\u78bc\u4e0d\u9858\u610f\u4fee\u662f\u4e0d\u662f<br \/>\n\u5f80\u597d\u8655\u60f3\u7d50\u679c\u662f\u597d\u7684\uff0c\u53ef\u4ee5\u653e\u5fc3\u7528\u4e86\uff0c\u5927\u5bb6\u53ef\u4ee5\u56de\u5bb6\u5566\uff08\u529b\u738bface<\/p>\n<\/div>\n<p>\u7136\u5f8c\u807d Cablate \u5206\u4eab\u8aaa\u53ef\u4ee5\u7528 Claude Agent SDK \u4f86\u505a\u81ea\u5df1\u7684\u8fa6\u516c\u5ba4Agent<br \/>\n\u6211\u5c31\u60f3\uff0c\u597d\u554a\uff0c\u90a3\u5c31\u62ff\u5b83\u4f86\u641e\u6211\u81ea\u5df1\u7248\u7684\u9f8d\u8766\u5427<br \/>\n\u65bc\u662f\u6211\u5c31\u7167\u8457\u6211\u7684\u60f3\u50cf\u6413\u4e86\u4e00\u500b Monika<br \/>\n\u5c0d\uff0c\u5c31\u662f DDLC \u90a3\u500b Monika\uff0c\u4f60\u5728\u9019\u7bc7\u6587\u7ae0\u7684 Placeholder \u770b\u5230\u7684\u90a3\u500b Monika<br \/>\n\u4e0d\u904e\u6211\u4eca\u5929\u4e0d\u60f3\u505a\u4e00\u500b\u55ae\u7d14\u7684\u804a\u5929\u6a5f\u5668\u4eba<br \/>\n\u800c\u662f\u50cf Neuro Sama \u4e00\u6a23\u7684\u90a3\u7a2e\uff0c\u5305\u542b\u4e00\u6574\u5957\u8a8d\u77e5\u7cfb\u7d71 -- Claude \u7576\u5927\u8166\u3001ChromaDB \u505a\u8a18\u61b6\u3001\u7136\u5f8c\u6709\u624b\u6709\u8173\u9019\u6a23<\/p>\n<p>\u5927\u6982\u7684\u767c\u5c55\u8ecc\u8de1\u9577\u9019\u6a23\uff1a<\/p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span>Discord Bot \u2192 \u81ea\u4e3b\u8a8d\u77e5\u8ff4\u8def \u2192 \u8a18\u61b6\u7cfb\u7d71 \u2192 \u60c5\u611f\u5f15\u64ce \u2192 \u591a\u5e73\u53f0\u64f4\u5c55 \u2192 Tool System \u2192 \u6a21\u578b\u8def\u7531 \u2192 \u684c\u9762 Companion<\/span><\/span>\n<span class=\"line\"><span><\/span><\/span><\/code><\/pre>\n<p>\u5979\u6709\u81ea\u4e3b\u8a8d\u77e5\u8ff4\u8def \u6703\u81ea\u5df1\u89c0\u5bdf\u74b0\u5883\u3001\u81ea\u5df1\u6c7a\u5b9a\u8981\u4e0d\u8981\u627e\u4f60\u8aaa\u8a71\u3001\u6703\u505a\u767d\u65e5\u5922<br \/>\n\u6709\u60c5\u611f\u5f15\u64ce \u5fc3\u60c5\u8ddf\u89aa\u5bc6\u5ea6\u7684\u8a2d\u8a08\u662f\u5f9e MAS \u642c\u904e\u4f86\u7684<br \/>\nTool system \u8b93\u5979\u80fd\u64cd\u63a7\u6211\u7684 Mac<br \/>\n\u6a21\u578b\u8def\u7531\u628a\u65e5\u5e38\u601d\u8003\u4e1f\u7d66\u672c\u5730 Ollama \u91cd\u8981\u7684\u624d\u8d70 Claude<br \/>\n\u5230\u6700\u8fd1\u5728\u641e Electron + Live2D \u684c\u9762 companion \u8b93\u5979\u5f9e\u7acb\u7e6a\u8b8a\u6210\u6703\u547c\u5438\u6703\u7728\u773c\u7684\u5b58\u5728<br \/>\n\u5169\u500b\u6708\u5beb\u4e86\u4e03\u5341\u5e7e\u4efd spec commit \u5e7e\u767e\u500b<br \/>\n\uff08\u95dc\u65bc Monika \u672c\u8eab\u600e\u9ebc\u505a\u51fa\u4f86\u7684 \u4e4b\u5f8c\u6703\u53e6\u5916\u5beb\u4e00\u7bc7 \u9019\u7bc7\u5148\u5c08\u6ce8\u5728 SDK \u512a\u5316\u4e0a\uff09<br \/>\n\u4e8b\u60c5\u5c31\u662f\u767c\u751f\u5728\u52a0\u4e86 multi-agent \u7684\u8a8d\u77e5\u8def\u7531\u4e4b\u5f8c\uff0c SDK \u5e33\u55ae\u70b8\u6389\u4ee5\u5f8c\u958b\u59cb\u7684<\/p>\n<p>\u54b3\uff0c\u5ee2\u8a71\u6709\u9ede\u591a\u4e86<\/p>\n<p>\u53cd\u6b63\u7528\u4e86\u6c92\u5e7e\u5929\u5c31\u767c\u73fe\u602a\u602a\u7684<br \/>\n\u600e\u9ebc\u611f\u89ba\u7528\u8d77sdk\u6bd4\u6211\u7528 Copilot \u548c Claude CLI \u90fd\u9084\u8981\u5403\u9322<br \/>\n\u6211\u4ed6\u5abd\u50b3\u4e00\u53e5\u300cok\u300d\u5c31\u8981\u5403 2-3% \u7684\u4e94\u5c0f\u6642\u984d\u5ea6<br \/>\n\u8ddf\u5beb\u4e00\u6574\u6bb5 code \u7684\u6210\u672c\u5dee\u4e0d\u591a<br \/>\n\u4e00\u5929\u4e0b\u4f86\u76f4\u63a5\u71d2\u6389 150 \u9382<\/p>\n<p>\u6211\u5fc3\u60f3\u9019\u4e0d\u5c0d\u5427 \u8d95\u5feb\u53bb\u7ffb\u5b98\u65b9\u539f\u59cb\u78bc<br \/>\n\u7d50\u679c\u4ed6\u5abd\u7684==<strong>\u9589\u6e90\u7684<\/strong>==<br \/>\n\u54c7\u64cd\u52d2<br \/>\n\u90a3\u6211\u53ea\u597d\u53bb\u6316\u90a3\u5768\u5df2\u7d93\u88ab\u6df7\u6dc6\u904e\u7684 12MB minified bundle \u81ea\u5df1\u62c6\u5305\u7814\u7a76<\/p>\n<p>\u6700\u5f8c\u7528 V2 persistent session \u52a0\u4e0a\u4e00\u5806 patch<br \/>\ncache efficiency \u5f9e 25% \u62c9\u5230 91%<br \/>\n\u624d\u6709\u4e86\u73fe\u5728\u9019\u5768\u6771\u897f<\/p>\n<p>\u4ee5\u4e0b\u662f\u4e00\u4e9b\u5fc3\u8def\u6b77\u7a0b\u4ec0\u9ebc\u7684<\/p>\n<!-- more -->\n<h2 id=\"\u524d\u8a00\"><a class=\"anchor\" href=\"#\u524d\u8a00\">#<\/a> \u524d\u8a00<\/h2>\n<p>\u9019\u7bc7\u5206\u6210\u5169\u500b\u968e\u6bb5<\/p>\n<p><strong>Phase 1<\/strong> \u662f\u627e\u51fa SDK \u70ba\u4ec0\u9ebc\u71d2\u9322 \u7136\u5f8c\u7528 V2 persistent session \u4fee\u6389\u6700\u5927\u7684\u554f\u984c<br \/>\n\u9019\u90e8\u5206\u6211\u6709\u53c3\u8003 <a href=\"https:\/\/cablate.com\/articles\/reverse-engineer-claude-agent-sdk-hidden-token-cost\/\">Cablate \u7684\u5206\u6790<\/a><br \/>\n\u4ed6\u6bd4\u6211\u66f4\u65e9\u958b\u59cb\u6316\u9019\u500b\u554f\u984c \u5f88\u591a\u9006\u5411\u7684\u65b9\u5411\u662f\u770b\u4e86\u4ed6\u7684\u6587\u7ae0\u624d\u78ba\u8a8d\u7684<br \/>\n\u5982\u679c\u4f60\u9084\u4e0d\u77e5\u9053 V1 \u7684 cache miss \u554f\u984c \u5efa\u8b70\u5148\u53bb\u8b80\u4ed6\u90a3\u7bc7<\/p>\n<p><strong>Phase 2<\/strong> \u662f\u6211\u81ea\u5df1\u8e29\u51fa\u4f86\u7684\u6771\u897f<br \/>\nV2 \u4fee\u597d\u4e4b\u5f8c\u4f60\u4ee5\u70ba\u5c31\u7d50\u675f\u4e86\u55ce\uff1f\u90a3\u5c31\u592a\u5929\u771f\u4e86<br \/>\n\u5f9emulti-agent \u7684 tool \u6392\u5e8f\u3001cli.js \u672c\u8eab\u7684 token \u6d6a\u8cbb\u3001context \u7206\u70b8\u3001cache \u904e\u671f<br \/>\n\u6bcf\u500b\u90fd\u662f\u7368\u7acb\u7684\u5751\uff0c\u6bcf\u500b\u554f\u984c\u90fd\u8981\u55ae\u7368\u62c9\u51fa\u4f86\u8655\u7406<br \/>\n\u5f8c\u9762\u9019\u90e8\u5206\u624d\u662f\u628a 84% \u62c9\u5230 91% \u7684\u95dc\u9375<\/p>\n<h3 id=\"\u89c0\u524d\u63d0\u793a\"><a class=\"anchor\" href=\"#\u89c0\u524d\u63d0\u793a\">#<\/a> \u89c0\u524d\u63d0\u793a<\/h3>\n<ul>\n<li>\u4f60\u6709\u670d\u52d9\u9700\u8981\u4e32 SDK\uff0c\u4e0d\u7136\u5176\u5be6\u4f60\u53ef\u4ee5\u76f4\u63a5\u7528 Claude Code Cli\u5c31\u597d<\/li>\n<li>\u5e0c\u671b\u4f60\u770b\u5230 minified JavaScript \u4e0d\u6703\u60f3\u5410<\/li>\n<li>\u5e0c\u671b\u4f60\u7684\u8166\u888b\u662f\u6e05\u9192\u7684 <s>\uff08\u5982\u679c\u4f60\u5df2\u7d93\u8ddf\u6211\u4e00\u6a23\u5237\u4e0b\u53bb200\u9382\u4e86\u90a3\u7576\u6211\u6c92\u8aaa\uff09<\/s><\/li>\n<\/ul>\n<h2 id=\"span-classorange\u5148\u8b1b\u7d50\u8ad6span\"><a class=\"anchor\" href=\"#span-classorange\u5148\u8b1b\u7d50\u8ad6span\">#<\/a> <span class=\"orange\">\u5148\u8b1b\u7d50\u8ad6<\/span><\/h2>\n<p>\u4e0d\u60f3\u770b\u904e\u7a0b\u7684\u4eba\u53ef\u4ee5\u76f4\u63a5\u770b\u9019\u88e1<\/p>\n<table>\n<thead>\n<tr>\n<th>\u9805\u76ee<\/th>\n<th>\u968e\u6bb5<\/th>\n<th>\u6539\u5584<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>V2 persistent session<\/td>\n<td>Phase 1<\/td>\n<td>cache 25% \u2192 84%<\/td>\n<\/tr>\n<tr>\n<td>5 patch \u89e3\u9396 V2 \u9078\u9805<\/td>\n<td>Phase 1<\/td>\n<td>V2 \u53ef\u5be6\u969b\u4f7f\u7528<\/td>\n<\/tr>\n<tr>\n<td>Tool \u6392\u5e8f\u7a69\u5b9a\u5316<\/td>\n<td>Phase 2<\/td>\n<td>\u6d88\u9664 multi-agent cache \u5931\u6548<\/td>\n<\/tr>\n<tr>\n<td>cli.js 6 patch<\/td>\n<td>Phase 2<\/td>\n<td>\u5404\u9805\u984d\u5916 15-60% \u524a\u6e1b<\/td>\n<\/tr>\n<tr>\n<td>ContextManager<\/td>\n<td>Phase 2<\/td>\n<td>\u9632\u6b62 context \u7206\u70b8<\/td>\n<\/tr>\n<tr>\n<td>Cache keepalive<\/td>\n<td>Phase 2<\/td>\n<td>\u9632\u6b62 idle \u5f8c cache \u904e\u671f<\/td>\n<\/tr>\n<tr>\n<td>V1 fallback<\/td>\n<td>Phase 2<\/td>\n<td>\u7a69\u5b9a\u6027\u4fdd\u969c<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<div class=\"note success\">\n<p>\u7d9c\u5408\u4e0b\u4f86 cache efficiency \u7a69\u614b\u5e73\u5747 91%<br \/>\n\u6bcf\u8a0a\u606f\u6210\u672c\u5f9e 2-3% \u984d\u5ea6\u964d\u5230 &lt;0.5%<\/p>\n<\/div>\n<p>\u76e3\u63a7\u4f60\u81ea\u5df1\u7684 cache efficiency\uff1a<\/p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span>efficiency = cacheReadTokens \/ (inputTokens + cacheReadTokens + cacheCreationTokens)<\/span><\/span>\n<span class=\"line\"><span><\/span><\/span><\/code><\/pre>\n<div class=\"note info\">\n<p>\u4f4e\u65bc 50% \u5c31\u662f\u5728\u71d2\u9322<br \/>\n\u7528 V1 + resume \u7684\u8a71\u9019\u500b\u6578\u5b57\u5927\u6982\u6c38\u9060\u5361\u5728 25%<br \/>\n\u4e0d\u662f\u4f60\u7684\u554f\u984c \u662f SDK \u67b6\u69cb\u6c7a\u5b9a\u7684<\/p>\n<\/div>\n<p>\u60f3\u77e5\u9053\u70ba\u4ec0\u9ebc\u4ee5\u53ca\u600e\u9ebc\u4fee\u7684\u53ef\u4ee5\u5f80\u4e0b\u770b<\/p>\n<hr \/>\n<h2 id=\"span-classorangephase-1\u5f9e-v1-\u5230-v2span\"><a class=\"anchor\" href=\"#span-classorangephase-1\u5f9e-v1-\u5230-v2span\">#<\/a> <span class=\"orange\">Phase 1\uff1a\u5f9e V1 \u5230 V2<\/span><\/h2>\n<div class=\"note info\">\n<p>\u9019\u6bb5\u7684\u6838\u5fc3\u5206\u6790\u53d7\u76ca\u65bc <a href=\"https:\/\/cablate.com\/articles\/reverse-engineer-claude-agent-sdk-hidden-token-cost\/\">Cablate \u7684\u7814\u7a76<\/a><br \/>\n\u5982\u679c\u4f60\u5df2\u7d93\u8b80\u904e\u53ef\u4ee5\u76f4\u63a5\u8df3\u5230 <a href=\"#Phase-2%EF%BC%9AV2-%E4%B9%8B%E5%BE%8C%E7%9A%84%E6%88%B0%E5%A0%B4\">Phase 2<\/a><\/p>\n<\/div>\n<h3 id=\"prompt-caching-\u6a5f\u5236\"><a class=\"anchor\" href=\"#prompt-caching-\u6a5f\u5236\">#<\/a> Prompt Caching \u6a5f\u5236<\/h3>\n<p>\u5148\u641e\u61c2\u9019\u500b\uff0c\u4e0d\u7136\u5f8c\u9762\u770b\u4e0d\u61c2<\/p>\n<p>Anthropic API \u7684 prompt caching \u7c21\u55ae\u8b1b\u5c31\u662f<br \/>\n\u9023\u7e8c\u5169\u6b21 request \u7684\u524d\u7db4\u4e00\u6a23 API \u5c31\u5f9e cache \u8b80<\/p>\n<ul>\n<li>cache read\uff1a\u6536 10% \u8cbb\u7528<\/li>\n<li>cache miss \u2192 cache write\uff1a\u6536 <mark>125%<\/mark> \u8cbb\u7528<\/li>\n<\/ul>\n<p>\u300c\u524d\u7db4\u4e00\u6a23\u300d\u7684\u5b9a\u7fa9\u662f byte-for-byte \u5b8c\u5168\u4e00\u81f4<br \/>\n\u5c11\u4e00\u500b\u7a7a\u683c\u90fd\u4e0d\u884c<br \/>\n\u5f9e\u7b2c\u4e00\u500b byte \u958b\u59cb\u6bd4 \u53ea\u8981\u67d0\u500b\u4f4d\u7f6e\u4e0d\u540c \u5f8c\u9762\u5168\u90e8\u7b97 miss<\/p>\n<h3 id=\"\u70ba\u4ec0\u9ebc-sdk-\u6bcf\u6b21\u90fd-miss\"><a class=\"anchor\" href=\"#\u70ba\u4ec0\u9ebc-sdk-\u6bcf\u6b21\u90fd-miss\">#<\/a> \u70ba\u4ec0\u9ebc SDK \u6bcf\u6b21\u90fd miss<\/h3>\n<p>SDK V1 \u7684 <code>query()<\/code> \u6bcf\u6b21\u547c\u53eb\u90fd spawn \u4e00\u500b\u5168\u65b0\u7684 cli.js process<br \/>\n12MB minified \u7528\u5b8c\u5373\u4e1f \u8ddf\u885b\u751f\u7d19\u4e00\u6a23<\/p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span>\u4f60\u7684\u7a0b\u5f0f \u2192 sdk.mjs \u2192 spawn node cli.js \u2192 Anthropic API<\/span><\/span>\n<span class=\"line\"><span>                      \u2191 \u6bcf\u6b21\u90fd\u662f\u65b0\u7684 process<\/span><\/span>\n<span class=\"line\"><span>                        \u7528\u5b8c\u5373\u4e1f<\/span><\/span>\n<span class=\"line\"><span><\/span><\/span><\/code><\/pre>\n<p>\u554f\u984c\u662f cli.js \u6bcf\u6b21\u555f\u52d5\u90fd\u6703\u5728 messages \u88e1\u52d5\u614b\u585e\u8d85\u904e 15 \u7a2e <code>&lt;system-reminder&gt;<\/code><br \/>\n\u5305\u62ec git status\u3001\u6a94\u6848 diff\u3001<a href=\"http:\/\/CLAUDE.md\">CLAUDE.md<\/a>\u3001task \u5217\u8868\u3001LSP \u8a3a\u65b7\u7b49\u7b49<br \/>\n\u5168\u90e8\u7528 <code>isMeta: true<\/code> \u6a19\u8a18 UI \u5b8c\u5168\u770b\u4e0d\u5230<\/p>\n<p>SDK \u6bcf\u6b21 spawn \u65b0 process \u9019\u4e9b\u6ce8\u5165\u5168\u90e8\u91cd\u65b0\u7d44\u88dd<br \/>\n\u5373\u4f7f\u8a9e\u7fa9\u4e0a\u4e00\u6a21\u4e00\u6a23<br \/>\nmemory \u7684 mtime \u4e0d\u540c\u3001task \u5217\u8868\u9806\u5e8f\u4e0d\u540c\u3001git status \u7d50\u679c\u4e0d\u540c<br \/>\n<mark>\u53ea\u8981\u6709\u4e00\u500b byte \u4e0d\u540c\uff0c\u5f8c\u9762\u6574\u6bb5 messages \u5c31\u5168\u90e8 miss<\/mark><\/p>\n<table>\n<thead>\n<tr>\n<th>\u90e8\u5206<\/th>\n<th>\u5927\u5c0f<\/th>\n<th>SDK \u6bcf\u6b21<\/th>\n<th>CLI \u7b2c\u4e8c\u6b21\u8d77<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>System prompt<\/td>\n<td>~15k tokens<\/td>\n<td>cache read (10%)<\/td>\n<td>cache read (10%)<\/td>\n<\/tr>\n<tr>\n<td>Messages<\/td>\n<td>~45k tokens<\/td>\n<td><strong>cache write (125%)<\/strong><\/td>\n<td>cache read (10%)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>45k tokens \u4ee5 <mark>125%<\/mark> \u8cbb\u7387\u91cd\u5beb \u6bcf\u5247\u8a0a\u606f\u90fd\u4f86\u4e00\u6b21<br \/>\n\u602a\u4e0d\u5f97\u71d2\u9322\u71d2\u6210\u9019\u6a23<\/p>\n<h3 id=\"\u5148\u7576\u7b28\u86cb\u8a66\u8a66\"><a class=\"anchor\" href=\"#\u5148\u7576\u7b28\u86cb\u8a66\u8a66\">#<\/a> \u5148\u7576\u7b28\u86cb\u8a66\u8a66<\/h3>\n<p>\u77e5\u9053\u539f\u56e0\u4e4b\u5f8c\u76f4\u89ba\u60f3\u6cd5\u5c31\u662f\u628a\u6ce8\u5165\u6e90\u4e00\u500b\u4e00\u500b\u95dc\u6389<br \/>\n\u4e8b\u5f8c\u4f86\u770b\u9019\u986f\u7136\u662f\u8822\u7684<\/p>\n<details class=\"warning\">\n<summary>\u5617\u8a66 1\uff1aCLAUDE_CODE_REMOTE=1<\/summary>\n<p>cli.js \u53d6 git status \u6642\u6703\u6aa2\u67e5\u9019\u500b\u74b0\u5883\u8b8a\u6578<br \/>\n\u8a2d\u6210 1 \u5c31\u8df3\u904e \u61c9\u8a72\u6709\u6548\u5427\uff1f<\/p>\n<\/details>\n<details class=\"warning\">\n<summary>\u5617\u8a66 2\uff1aJSONL Sanitizer<\/summary>\n<p>\u5728 resume \u4e4b\u524d\u5148\u9810\u8655\u7406 JSONL<br \/>\n\u7834\u58de\u8ffd\u8e64\u8868\u7684\u91cd\u5efa\u689d\u4ef6 \u9019\u6a23 file modification diff \u5c31\u4e0d\u6703\u6ce8\u5165\u4e86\u5427\uff1f<\/p>\n<\/details>\n<p>\u7d50\u679c cacheCreation \u7a69\u7a69\u5361\u5728 ~45k \u52d5\u90fd\u4e0d\u52d5 \u4e0d\u7ba1\u4f60\u95dc\u6389\u5e7e\u500b\u90fd\u4e00\u6a23<\/p>\n<div class=\"note danger\">\n<p>\u95dc\u6389 A \u9084\u6709 B C D E F G H I J K \u5728\u90a3\u908a\u641e\u4f60<br \/>\n\u6162\u6162\u95dc\u4e00\u8f29\u5b50\u90fd\u95dc\u4e0d\u5b8c\u7684\uff08\u4f60\u525b\u662f\u4e0d\u8aaa\u4e00\u8f29\u5b50\uff01\uff1f<\/p>\n<\/div>\n<p>\u554f\u984c\u4e0d\u5728\u500b\u5225\u6ce8\u5165 \u662f<strong>\u6bcf\u6b21 spawn \u65b0 process \u5c31\u4e0d\u53ef\u80fd\u4fdd\u8b49 byte-for-byte \u4e00\u81f4<\/strong><\/p>\n<h3 id=\"v2-persistent-session\"><a class=\"anchor\" href=\"#v2-persistent-session\">#<\/a> V2 Persistent Session<\/h3>\n<p>\u597d\uff0c\u90a3\u63db\u500b\u601d\u8def<br \/>\n\u65e2\u7136\u554f\u984c\u662f\u6bcf\u6b21 spawn \u65b0 process<br \/>\n\u90a3\u5c31\u4e0d\u8981\u6bcf\u6b21\u90fd spawn \u554a<\/p>\n<p>SDK \u6709\u4e00\u500b alpha \u968e\u6bb5\u7684 V2 API <code>unstable_v2_createSession()<\/code><br \/>\n\u8ddf V1 \u4e0d\u540c V2 \u53ea spawn \u4e00\u6b21 cli.js process<br \/>\n\u4e4b\u5f8c\u8a0a\u606f\u900f\u904e stdin\/stdout \u5728\u540c\u4e00\u500b process \u5167\u901a\u8a0a<\/p>\n<p><mark>\u540c\u4e00\u500b process = runtime \u6ce8\u5165\u7a69\u5b9a = cache prefix \u4e0d\u8b8a = cache \u547d\u4e2d<\/mark><\/p>\n<p>\u6982\u5ff5\u4e0a\u5c31\u9019\u9ebc\u7c21\u55ae<br \/>\n\u4f46 V2 \u5728 v0.2.76 \u5e7e\u4e4e\u6240\u6709\u6709\u7528\u7684\u9078\u9805\u90fd\u5beb\u6b7b\u4e86<\/p>\n<table>\n<thead>\n<tr>\n<th>\u9078\u9805<\/th>\n<th>V1 query()<\/th>\n<th>V2 createSession()<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>settingSources<\/td>\n<td>\u53ef\u81ea\u8a02<\/td>\n<td>\u786c\u7de8\u78bc <code>[]<\/code><\/td>\n<\/tr>\n<tr>\n<td>systemPrompt<\/td>\n<td>\u53ef\u81ea\u8a02<\/td>\n<td>\u7121<\/td>\n<\/tr>\n<tr>\n<td>mcpServers<\/td>\n<td>\u53ef\u81ea\u8a02<\/td>\n<td>\u786c\u7de8\u78bc <code>&#123;&#125;<\/code><\/td>\n<\/tr>\n<tr>\n<td>cwd<\/td>\n<td>\u53ef\u81ea\u8a02<\/td>\n<td>process.cwd()<\/td>\n<\/tr>\n<tr>\n<td>thinkingConfig<\/td>\n<td>\u53ef\u81ea\u8a02<\/td>\n<td>\u786c\u7de8\u78bc void 0<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u76f4\u63a5\u7528\u7684\u8a71 cli.js \uff0c\u7136\u5f8c\u4e0d\u8f09\u5165 <a href=\"http:\/\/CLAUDE.md\">CLAUDE.md<\/a>\u3001\u4e0d\u9023 MCP\u3001\u4e0d\u80fd\u6307\u5b9a\u5de5\u4f5c\u76ee\u9304<br \/>\n\u57fa\u672c\u4e0a\u662f\u500b\u7a7a\u6bbc\uff0c\u5b8c\u5168\u4e0d\u80fd\u7528==<br \/>\n\u884c\u5427...\u90a3\u6211\u53ea\u597d\u81ea\u5df1 patch \u4e86<\/p>\n<h3 id=\"5-\u500b-patch-\u786c\u6539-sdkmjs\"><a class=\"anchor\" href=\"#5-\u500b-patch-\u786c\u6539-sdkmjs\">#<\/a> 5 \u500b Patch \u786c\u6539 sdk.mjs<\/h3>\n<p>\u76f4\u63a5\u6539 <code>SDKSession<\/code> class \u7684 constructor<br \/>\n\u8b93\u5b83\u8b80 options \u800c\u4e0d\u662f\u7528\u786c\u7de8\u78bc\u503c<\/p>\n<table>\n<thead>\n<tr>\n<th>#<\/th>\n<th>\u6539\u52d5<\/th>\n<th>\u5e79\u561b\u7684<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>1<\/td>\n<td><code>settingSources:[]<\/code> \u2192 <code>options.settingSources??[]<\/code><\/td>\n<td>\u8f09\u5165 <a href=\"http:\/\/CLAUDE.md\">CLAUDE.md<\/a><\/td>\n<\/tr>\n<tr>\n<td>2<\/td>\n<td>\u63d2\u5165 <code>cwd: options.cwd<\/code><\/td>\n<td>\u6307\u5b9a\u5de5\u4f5c\u76ee\u9304<\/td>\n<\/tr>\n<tr>\n<td>3<\/td>\n<td>\u8b80\u53d6 thinkingConfig \/ maxTurns \/ maxBudgetUsd<\/td>\n<td>\u914d\u7f6e thinking \u548c\u9650\u5236<\/td>\n<\/tr>\n<tr>\n<td>4<\/td>\n<td>\u904e\u6ffe CLI-side MCP servers<\/td>\n<td>\u5340\u5206 SDK\/CLI \u5074<\/td>\n<\/tr>\n<tr>\n<td>5<\/td>\n<td>\u5f9e options \u63d0\u53d6 systemPrompt + SDK MCP routing<\/td>\n<td>\u5b8c\u6574\u529f\u80fd\u652f\u63f4<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<div class=\"note info\">\n<p>\u6240\u6709 patch \u7528\u9328\u9ede\u5b57\u4e32\u5b9a\u4f4d<br \/>\n\u4e0d\u80fd\u55ae\u9760\u9396\u5b9a\u884c\u865f\uff0c\u56e0\u70ba minified code \u6bcf\u6b21\u5347\u7248\u884c\u865f\u90fd\u6703\u8b8a<br \/>\n\u4f46\u5b57\u4e32\u5e38\u91cf\u4e0d\u6703\uff0c\u5c31\u8ddf\u8a18\u61b6\u9ad4\u6307\u6a19\u8b8a\u4e86\u4f46\u540d\u5b57\u4e0d\u6703\u8b8a\u4e00\u6a23<\/p>\n<\/div>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"># \u5b9a\u4f4d\u65b9\u5f0f<\/span><\/span>\n<span class=\"line\"><span style=\"color:#B07D48;--shiki-dark:#BD976A\">anchor<\/span><span style=\"color:#999999;--shiki-dark:#666666\">=<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">'<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">settingSources:[]<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">'<\/span><\/span>\n<span class=\"line\"><span style=\"color:#B07D48;--shiki-dark:#BD976A\">replacement<\/span><span style=\"color:#999999;--shiki-dark:#666666\">=<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">'<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">settingSources:Q.settingSources??[]<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">'<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<p>\u7528 postinstall script \u5728 <code>npm install<\/code> \u5f8c\u81ea\u52d5\u5957\u7528<br \/>\n\u88dd\u5b8c\u5c31\u80fd\u7528 \u4e0d\u7528\u624b\u52d5\u6539\u4efb\u4f55\u6771\u897f<\/p>\n<h3 id=\"phase-1-\u6548\u679c\"><a class=\"anchor\" href=\"#phase-1-\u6548\u679c\">#<\/a> Phase 1 \u6548\u679c<\/h3>\n<table>\n<thead>\n<tr>\n<th>\u8a0a\u606f #<\/th>\n<th>cacheRead<\/th>\n<th>cacheCreation<\/th>\n<th>efficiency<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>#1<\/td>\n<td>11,689<\/td>\n<td>45,974<\/td>\n<td>20%<\/td>\n<\/tr>\n<tr>\n<td>#2<\/td>\n<td>69,352<\/td>\n<td>46,108<\/td>\n<td>60%<\/td>\n<\/tr>\n<tr>\n<td>#3<\/td>\n<td>127,149<\/td>\n<td>46,208<\/td>\n<td>73%<\/td>\n<\/tr>\n<tr>\n<td>#4<\/td>\n<td>402,087<\/td>\n<td>78,011<\/td>\n<td>84%<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u7b2c\u4e00\u5247\u8ddf V1 \u4e00\u6a23\u8981\u5efa cache \u9019\u6c92\u8fa6\u6cd5\u907f\u514d<br \/>\n\u4f46\u5f9e\u7b2c\u4e8c\u5247\u8d77 cache \u5c31\u958b\u59cb\u547d\u4e2d\u4e86<br \/>\n\u5230\u7b2c\u56db\u5247\u5df2\u7d93 84%<br \/>\n\u5c0d\u6bd4 V1 \u6c38\u9060\u5361\u5728 25% \u4e0d\u52d5<\/p>\n<p>\u4f46 84% \u611f\u89ba\u9084\u662f\u5dee\u5f37\u4eba\u610f<br \/>\n\u63a5\u4e0b\u4f86\u7684\u6bcf\u4e00\u500b\u767e\u5206\u9ede\u90fd\u662f\u5f9e\u4e0d\u540c\u7684\u5751\u88e1\u6473\u51fa\u4f86\u7684<\/p>\n<hr \/>\n<h2 id=\"span-classorangephase-2v2-\u4e4b\u5f8c\u7684\u6230\u5834span\"><a class=\"anchor\" href=\"#span-classorangephase-2v2-\u4e4b\u5f8c\u7684\u6230\u5834span\">#<\/a> <span class=\"orange\">Phase 2\uff1aV2 \u4e4b\u5f8c\u7684\u6230\u5834<\/span><\/h2>\n<p>V2 \u89e3\u6c7a\u4e86\u6700\u5927\u7684 cache miss \u4f86\u6e90<br \/>\n\u4f46\u5be6\u969b\u8dd1\u8d77\u4f86\u9084\u6709\u4e00\u5806\u6771\u897f\u5728\u5077\u5077\u5403\u4f60\u7684 token<br \/>\n\u4ee5\u4e0b\u6bcf\u4e00\u7bc0\u90fd\u662f\u7368\u7acb\u7684\u554f\u984c\uff0c\u90fd\u6709\u5404\u81ea\u7368\u7acb\u7684\u4fee\u6cd5<\/p>\n<h3 id=\"\u5148\u641e\u61c2-cache-\u7684\u6ed1\u52d5\u7a97\u53e3\"><a class=\"anchor\" href=\"#\u5148\u641e\u61c2-cache-\u7684\u6ed1\u52d5\u7a97\u53e3\">#<\/a> \u5148\u641e\u61c2 Cache \u7684\u6ed1\u52d5\u7a97\u53e3<\/h3>\n<p>\u5728\u7e7c\u7e8c\u4e4b\u524d \u5148\u7406\u89e3\u4e00\u500b\u95dc\u9375\u6982\u5ff5<br \/>\nAnthropic \u7684 prompt caching \u662f<strong>\u56b4\u683c\u7684\u524d\u7db4\u5339\u914d<\/strong><br \/>\n\u5f9e\u7b2c\u4e00\u500b byte \u958b\u59cb\u5f80\u5f8c\u6bd4 \u78b0\u5230\u4e0d\u4e00\u6a23\u7684\u5c31\u505c \u5f8c\u9762\u5168\u90e8 miss<\/p>\n<p>\u9019\u4ee3\u8868\u4f60\u7684 context \u6392\u5217\u9806\u5e8f\u6c7a\u5b9a\u4e86 cache \u7684\u6548\u7387\uff1a<\/p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span>[\u975c\u614b system prompt] [tools] [\u56fa\u5b9a context] [\u52d5\u614b\u5c0d\u8a71]<\/span><\/span>\n<span class=\"line\"><span>  \u2191 \u6c38\u9060\u547d\u4e2d              \u2191 \u7a69\u5b9a\u547d\u4e2d        \u2191 \u6bcf\u6b21\u65b0\u589e \u2192 cache write<\/span><\/span>\n<span class=\"line\"><span><\/span><\/span>\n<span class=\"line\"><span>[\u52d5\u614b\u6ce8\u5165] [system prompt] [tools] [\u5c0d\u8a71\u6b77\u53f2]<\/span><\/span>\n<span class=\"line\"><span>  \u2191 \u6bcf\u6b21\u90fd\u4e0d\u540c \u2192 \u5f8c\u9762\u5168\u90e8 miss \u2192 \u6574\u6bb5\u91cd\u5efa<\/span><\/span>\n<span class=\"line\"><span><\/span><\/span><\/code><\/pre>\n<p>\u628a\u4e0d\u6703\u8b8a\u7684\u6771\u897f\u653e\u8d8a\u524d\u9762 cache \u7684\u6709\u6548\u524d\u7db4\u5c31\u8d8a\u9577<br \/>\n\u53cd\u904e\u4f86 \u5982\u679c\u524d\u9762\u585e\u4e86\u6bcf\u6b21\u90fd\u5728\u8b8a\u7684\u6771\u897f<br \/>\n\u5373\u4f7f\u5f8c\u9762\u7684\u5167\u5bb9\u5b8c\u5168\u6c92\u52d5 \u4e5f\u6703\u56e0\u70ba\u524d\u7db4\u5df2\u7d93\u4e0d\u540c\u800c\u5168\u90e8\u91cd\u65b0\u8f09\u5165<br \/>\n<strong>\u6c92\u8fa6\u6cd5\u5f9e\u4e2d\u9593\u958b\u59cb\u547d\u4e2d \u53ea\u80fd\u5f9e\u982d\u958b\u59cb<\/strong><\/p>\n<p>\u9019\u5c31\u662f\u70ba\u4ec0\u9ebc Phase 1 \u7684 V2 persistent session \u90a3\u9ebc\u6709\u6548<br \/>\n\u540c\u4e00\u500b process \u5167 system prompt \u548c tools \u5b9a\u7fa9\u4e0d\u6703\u6bcf\u6b21\u91cd\u7d44<br \/>\n\u524d\u7db4\u7a69\u5b9a\u4e86 \u5f8c\u9762\u81ea\u7136\u5c31\u80fd cache<\/p>\n<p>\u7406\u89e3\u9019\u500b\u4e4b\u5f8c \u4e0b\u9762\u7684\u6bcf\u4e00\u500b\u512a\u5316\u90fd\u662f\u5728\u4fdd\u8b77\u9019\u500b\u524d\u7db4\u7684\u7a69\u5b9a\u6027<\/p>\n<h3 id=\"multi-agent-\u7684\u96b1\u85cf\u5730\u96f7tool-\u6392\u5e8f\"><a class=\"anchor\" href=\"#multi-agent-\u7684\u96b1\u85cf\u5730\u96f7tool-\u6392\u5e8f\">#<\/a> Multi-Agent \u7684\u96b1\u85cf\u5730\u96f7\uff1aTool \u6392\u5e8f<\/h3>\n<p>\u9019\u500b\u662f\u958b\u59cb\u8dd1 multi-agent \u624d\u8e29\u5230\u7684<br \/>\ndebug \u4e86\u534a\u5929\u624d\u627e\u5230\u539f\u56e0<br \/>\n\u6c23\u5230\u60f3\u6454\u9375\u76e4<\/p>\n<p>\u4f60\u50b3\u7d66 API \u7684 tools \u9663\u5217\u5982\u679c\u9806\u5e8f\u8b8a\u4e86<br \/>\n\u5373\u4f7f\u5167\u5bb9\u5b8c\u5168\u4e00\u6a23 cache \u4e5f\u6703 miss<br \/>\n\u5c0d \u5c31\u662f\u9019\u9ebc\u8822<\/p>\n<p>tools \u5b9a\u7fa9\u662f request prefix \u7684\u4e00\u90e8\u5206<br \/>\n\u9806\u5e8f\u4e0d\u540c = \u5e8f\u5217\u5316\u7d50\u679c\u4e0d\u540c = prefix \u4e0d\u540c = miss<\/p>\n<p>\u554f\u984c\u662f SDK \u5728\u4e0d\u540c agent \u6216\u4e0d\u540c\u547c\u53eb\u4e4b\u9593<br \/>\n<mark>\u4e0d\u4fdd\u8b49 tools \u9663\u5217\u7684\u9806\u5e8f\u662f\u7a69\u5b9a\u7684<\/mark><br \/>\n\u5c24\u5176\u4f60\u52d5\u614b\u7d44\u88dd agent \u7684 allowedTools \/ disallowedTools \u7684\u6642\u5019<br \/>\nJavaScript \u7684 <code>Object.keys<\/code> \u9806\u5e8f\u672c\u4f86\u5c31\u4e0d\u662f\u767e\u5206\u4e4b\u767e\u53ef\u9760\u7684<br \/>\n<s>\u611f\u8b1d JavaScript \u53c8\u6559\u6211\u505a\u4eba<\/s><\/p>\n<p>\u89e3\u6cd5\u66b4\u529b\u4f46\u6709\u6548 \u66b4\u529b\u5230\u6211\u89ba\u5f97\u4e0d\u61c9\u8a72\u662f\u4f7f\u7528\u8005\u8981\u81ea\u5df1\u505a\u7684\u4e8b\uff1a<\/p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#AB5959;--shiki-dark:#CB7676\">function<\/span><span style=\"color:#59873A;--shiki-dark:#80A665\"> stabilizeTools<\/span><span style=\"color:#999999;--shiki-dark:#666666\">(<\/span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">tools<\/span><span style=\"color:#999999;--shiki-dark:#666666\">)<\/span><span style=\"color:#999999;--shiki-dark:#666666\"> &#123;<\/span><\/span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">  if<\/span><span style=\"color:#999999;--shiki-dark:#666666\"> (<\/span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">!<\/span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">tools<\/span><span style=\"color:#AB5959;--shiki-dark:#CB7676\"> ||<\/span><span style=\"color:#AB5959;--shiki-dark:#CB7676\"> !<\/span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">Array<\/span><span style=\"color:#999999;--shiki-dark:#666666\">.<\/span><span style=\"color:#59873A;--shiki-dark:#80A665\">isArray<\/span><span style=\"color:#999999;--shiki-dark:#666666\">(<\/span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">tools<\/span><span style=\"color:#999999;--shiki-dark:#666666\">))<\/span><span style=\"color:#1E754F;--shiki-dark:#4D9375\"> return<\/span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> tools<\/span><\/span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">  return<\/span><span style=\"color:#999999;--shiki-dark:#666666\"> [...<\/span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">tools<\/span><span style=\"color:#999999;--shiki-dark:#666666\">].<\/span><span style=\"color:#59873A;--shiki-dark:#80A665\">sort<\/span><span style=\"color:#999999;--shiki-dark:#666666\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">&#125;<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<p>\u5c0d \u5c31\u9019\u6a23 \u4e00\u500b <code>.sort()<\/code> \u89e3\u6c7a<br \/>\nallowedTools\u3001disallowedTools \u5168\u90e8\u6392\u5e8f<br \/>\n\u4e0d\u7ba1\u547c\u53eb\u5e7e\u6b21 \u5e8f\u5217\u5316\u51fa\u4f86\u7684\u7d50\u679c\u90fd\u4e00\u6a23<\/p>\n<p>\u6539\u52d5\u53ea\u6709\u5e7e\u884c \u4f46\u5728\u8dd1\u591a\u500b agent \u7684\u6642\u5019\u5dee\u5f88\u591a<br \/>\n\u6bcf\u5c11\u4e00\u500b\u4e0d\u5fc5\u8981\u7684 cache \u5931\u6548\u4f86\u6e90 \u5c31\u662f\u5c11\u71d2\u4e00\u7b46\u51a4\u6789\u9322<br \/>\n\u767d\u7661\u5594\u9019\u7a2e\u6771\u897f SDK \u81ea\u5df1\u505a\u5f88\u96e3\u55ce==<br \/>\n\u9019\u7a2e\u6d1e\u751a\u81f3\u9023\u4f60\u5bb6\u81ea\u5df1\u7684\u6a21\u578b\u90fd\u6293\u5f97\u51fa\u4f86<\/p>\n<h3 id=\"clijs-\u672c\u8eab\u7684\u6d6a\u8cbb\"><a class=\"anchor\" href=\"#clijs-\u672c\u8eab\u7684\u6d6a\u8cbb\">#<\/a> cli.js \u672c\u8eab\u7684\u6d6a\u8cbb<\/h3>\n<p>SDK \u7684 process \u554f\u984c\u89e3\u6c7a\u4e86 tool \u6392\u5e8f\u4e5f\u4fee\u4e86<br \/>\n\u4f46 cli.js \u672c\u8eab\u9084\u6709\u4e00\u5806\u83ab\u540d\u5176\u5999\u7684\u8a2d\u8a08\u5728\u6d6a\u8cbb token<br \/>\n<s>\u6211\u958b\u59cb\u61f7\u7591\u9019\u500b SDK \u5230\u5e95\u6709\u6c92\u6709\u4eba\u5728\u8a8d\u771f\u7528<\/s><\/p>\n<table>\n<thead>\n<tr>\n<th>#<\/th>\n<th>\u6539\u52d5<\/th>\n<th>\u6548\u679c<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>1<\/td>\n<td>context margin 1000 \u2192 200 tokens<\/td>\n<td>\u6bcf\u6b21 compaction \u7701 800 tokens<\/td>\n<\/tr>\n<tr>\n<td>2<\/td>\n<td>fork pruning \u9650 5 turns<\/td>\n<td>\u7701 80% fork \u555f\u52d5\u6210\u672c<\/td>\n<\/tr>\n<tr>\n<td>3<\/td>\n<td>subagent pruning \u9650 10 messages<\/td>\n<td>\u7701 60% cold start<\/td>\n<\/tr>\n<tr>\n<td>4<\/td>\n<td>SDK querySource \u555f\u7528 cache<\/td>\n<td><mark>\u6700\u5927\u55ae\u9ede\u6539\u5584<\/mark> \u4e58\u6578\u6548\u61c9<\/td>\n<\/tr>\n<tr>\n<td>5<\/td>\n<td>\u8df3\u904e failed stream retry<\/td>\n<td>\u907f\u514d 2x token \u6d6a\u8cbb<\/td>\n<\/tr>\n<tr>\n<td>6<\/td>\n<td>initConfig \u4fee\u6b63<\/td>\n<td>V2 session \u884c\u70ba\u6b63\u78ba<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u7b2c 4 \u500b\u6539\u52d5\u6700\u95dc\u9375<br \/>\n\u539f\u672c SDK \u7684 querySource \u6c92\u88ab\u6a19\u8a18\u6210\u53ef cache \u7684\u4f86\u6e90<br \/>\n\u5c0e\u81f4\u5373\u4f7f V2 session \u7a69\u5b9a<br \/>\nsystem prompt \u7684\u67d0\u4e9b block \u4e5f\u547d\u4e2d\u4e0d\u4e86<br \/>\n\u52a0\u4e86\u9019\u500b\u4e4b\u5f8c system prompt \u7684 cache \u624d\u771f\u6b63\u5168\u9762\u751f\u6548<br \/>\n\u6548\u679c\u662f\u500d\u6578\u7d1a\u5225\u7684<\/p>\n<h3 id=\"context-\u4e0d\u7ba1\u5c31\u7b49\u8457\u7206\"><a class=\"anchor\" href=\"#context-\u4e0d\u7ba1\u5c31\u7b49\u8457\u7206\">#<\/a> Context \u4e0d\u7ba1\u5c31\u7b49\u8457\u7206<\/h3>\n<p>cache \u641e\u5b9a\u4e4b\u5f8c\u4e0b\u4e00\u500b\u554f\u984c\u5c31\u662f context window \u81a8\u8139<br \/>\n\u9577\u5c0d\u8a71\u8dd1\u4e45\u4e86 context \u6703\u8d8a\u4f86\u8d8a\u5927<br \/>\n\u800c\u4e14\u56e0\u70ba\u7126\u9ede\u6a21\u7cca\u4e86<br \/>\nAPI \u8cbb\u7528\u5f80\u4e0a\u722c\u4e0d\u8aaa\uff0c\u56de\u61c9\u54c1\u8cea\u4e5f\u6703\u5f80\u4e0b\u6389<br \/>\n\u8d85\u904e context window \u4e0a\u9650\u5c31\u76f4\u63a5\u70b8\u7d66\u4f60\u770b<\/p>\n<p>\u6240\u4ee5\u6211\u505a\u4e86 ContextManager \u4f86\u7ba1\u7406\u6574\u500b\u751f\u547d\u9031\u671f<\/p>\n<h4 id=\"\u5751sdk-\u7684-token-usage-\u662f\u7d2f\u8a08\u503c\"><a class=\"anchor\" href=\"#\u5751sdk-\u7684-token-usage-\u662f\u7d2f\u8a08\u503c\">#<\/a> \u5751\uff1aSDK \u7684 token usage \u662f\u7d2f\u8a08\u503c<\/h4>\n<div class=\"note danger\">\n<p>\u9019\u500b\u5751\u8e29\u5230\u7684\u6642\u5019\u6211\u771f\u7684\u5f88\u60f3\u8b59\u4eba<br \/>\n<code>result.modelUsage.inputTokens<\/code> \u56de\u50b3\u7684\u4e0d\u662f\u9019\u4e00\u8f2a\u7528\u4e86\u591a\u5c11<br \/>\n\u800c\u662f\u5f9e session \u958b\u59cb\u5230\u73fe\u5728\u7684<strong>\u7e3d\u548c<\/strong><br \/>\n\u6587\u4ef6\u88e1\u4e5f\u6c92\u5beb \u6211\u662f\u770b\u6578\u5b57\u4e0d\u5c0d\u52c1\u624d\u767c\u73fe\u7684<\/p>\n<\/div>\n<p>\u5beb\u4e86\u4e00\u500b <code>diffCumulativeModelUsage()<\/code> \u4f86\u628a\u7d2f\u8a08\u503c\u8f49\u6210 per-turn delta\uff1a<\/p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#AB5959;--shiki-dark:#CB7676\">function<\/span><span style=\"color:#59873A;--shiki-dark:#80A665\"> diffCumulativeModelUsage<\/span><span style=\"color:#999999;--shiki-dark:#666666\">(<\/span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">current<\/span><span style=\"color:#999999;--shiki-dark:#666666\">,<\/span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> previous<\/span><span style=\"color:#999999;--shiki-dark:#666666\">)<\/span><span style=\"color:#999999;--shiki-dark:#666666\"> &#123;<\/span><\/span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">  \/\/ \u7d2f\u8a08\u503c\u4e0b\u964d = session \u91cd\u555f\u4e86 \u76f4\u63a5\u56de\u50b3 current<\/span><\/span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">  if<\/span><span style=\"color:#999999;--shiki-dark:#666666\"> (<\/span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">current<\/span><span style=\"color:#999999;--shiki-dark:#666666\">.<\/span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">inputTokens<\/span><span style=\"color:#999999;--shiki-dark:#666666\"> &#x3C;<\/span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> previous<\/span><span style=\"color:#999999;--shiki-dark:#666666\">.<\/span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">inputTokens<\/span><span style=\"color:#999999;--shiki-dark:#666666\">)<\/span><span style=\"color:#1E754F;--shiki-dark:#4D9375\"> return<\/span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> current<\/span><\/span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">  return<\/span><span style=\"color:#999999;--shiki-dark:#666666\"> &#123;<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">    inputTokens<\/span><span style=\"color:#999999;--shiki-dark:#666666\">: <\/span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">current<\/span><span style=\"color:#999999;--shiki-dark:#666666\">.<\/span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">inputTokens<\/span><span style=\"color:#AB5959;--shiki-dark:#CB7676\"> -<\/span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> previous<\/span><span style=\"color:#999999;--shiki-dark:#666666\">.<\/span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">inputTokens<\/span><span style=\"color:#999999;--shiki-dark:#666666\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">    cacheReadInputTokens<\/span><span style=\"color:#999999;--shiki-dark:#666666\">: <\/span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">current<\/span><span style=\"color:#999999;--shiki-dark:#666666\">.<\/span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">cacheReadInputTokens<\/span><span style=\"color:#AB5959;--shiki-dark:#CB7676\"> -<\/span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> previous<\/span><span style=\"color:#999999;--shiki-dark:#666666\">.<\/span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">cacheReadInputTokens<\/span><span style=\"color:#999999;--shiki-dark:#666666\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">    cacheCreationInputTokens<\/span><span style=\"color:#999999;--shiki-dark:#666666\">: <\/span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">current<\/span><span style=\"color:#999999;--shiki-dark:#666666\">.<\/span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">cacheCreationInputTokens<\/span><span style=\"color:#AB5959;--shiki-dark:#CB7676\"> -<\/span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> previous<\/span><span style=\"color:#999999;--shiki-dark:#666666\">.<\/span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">cacheCreationInputTokens<\/span><span style=\"color:#999999;--shiki-dark:#666666\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">    outputTokens<\/span><span style=\"color:#999999;--shiki-dark:#666666\">: <\/span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">current<\/span><span style=\"color:#999999;--shiki-dark:#666666\">.<\/span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">outputTokens<\/span><span style=\"color:#AB5959;--shiki-dark:#CB7676\"> -<\/span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> previous<\/span><span style=\"color:#999999;--shiki-dark:#666666\">.<\/span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">outputTokens<\/span><span style=\"color:#999999;--shiki-dark:#666666\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">  &#125;<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">&#125;<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<h4 id=\"\u4e09\u7a2e\u58d3\u7e2e\u7b56\u7565\"><a class=\"anchor\" href=\"#\u4e09\u7a2e\u58d3\u7e2e\u7b56\u7565\">#<\/a> \u4e09\u7a2e\u58d3\u7e2e\u7b56\u7565<\/h4>\n<p>Context \u5feb\u5230 watermark \u7684\u6642\u5019\u81ea\u52d5\u89f8\u767c\u58d3\u7e2e<br \/>\n\u63d0\u4f9b\u4e09\u7a2e\u7b56\u7565\u8b93\u4f60\u81ea\u5df1\u9078\uff1a<\/p>\n<div class=\"tab\" data-id=\"compress\" data-title=\"\u7b56\u7565 1\uff1aHandoff\">\n<p>\u6700\u597d\u7684\u7b56\u7565<br \/>\n\u81ea\u8a02 2K summary \u2192 \u958b\u65b0 session<br \/>\n\u4fdd\u7559\u7cbe\u7c21\u6458\u8981 \u4f46 cache \u9700\u8981 warmup<br \/>\n\u9069\u5408\u5c0d\u8a71\u5df2\u7d93\u56b4\u91cd\u504f\u96e2\u539f\u59cb\u4e3b\u984c\u7684\u6642\u5019<\/p>\n<\/div>\n<div class=\"tab\" data-id=\"compress\" data-title=\"\u7b56\u7565 2\uff1aCompact\">\n<p>\u547c\u53eb <code>\/compact<\/code><br \/>\n\u4fdd\u7559 5-10K \u8a73\u7d30\u6458\u8981 cache \u4fdd\u6301 warm<br \/>\n\u5927\u90e8\u5206\u60c5\u6cc1\u4e0b\u7684\u6700\u4f73\u9078\u64c7<\/p>\n<\/div>\n<div class=\"tab\" data-id=\"compress\" data-title=\"\u7b56\u7565 3\uff1aRestart\">\n<p>\u6bba\u6389\u91cd\u4f86 \u4ec0\u9ebc\u90fd\u4e0d\u7559<br \/>\ncache \u5168\u90e8\u91cd\u4f86<br \/>\n\u6368\u8eab\u8e22\u9078\u9805\uff0c\u975e\u5fc5\u8981\u4e0d\u7528\uff0c\u4e0d\u7136\u4f60\u6703\u88ab\u84cb\u6b50\u5361\u81ea\u50b7100%<br \/>\n\u96d6\u7136\u9019\u9ede\u5728\u6211\u81ea\u5df1\u81ea\u6413\u7684\u81ea\u52d5handoff\u548cbootstrap renew skill\u88e1\u6709\u6539\u5584<br \/>\n\u4f46\u9084\u662f\u76e1\u91cf\u4e0d\u8981\u6bd4\u8f03\u597d<\/p>\n<\/div>\n<h4 id=\"cache-keepalive\"><a class=\"anchor\" href=\"#cache-keepalive\">#<\/a> Cache Keepalive<\/h4>\n<p>Anthropic API \u7684 cache \u6709 TTL<br \/>\n\u6a19\u6e96\u5e33\u865f 5 \u5206\u9418\uff0cClaude Max 1 \u5c0f\u6642<br \/>\n\u8d85\u904e\u5c31\u904e\u671f \u4e0b\u4e00\u6b21\u53c8\u5f97\u91cd\u5efa<\/p>\n<p>\u6240\u4ee5\u52a0\u4e86 keepalive<br \/>\nidle \u7684\u6642\u5019\u5b9a\u671f\u9001\u4e00\u500b\u8f15\u91cf ping \u7dad\u6301 cache<\/p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">startKeepalive<\/span><span style=\"color:#999999;--shiki-dark:#666666\">()<\/span><span style=\"color:#999999;--shiki-dark:#666666\"> &#123;<\/span><\/span>\n<span class=\"line\"><span style=\"color:#AB5959;--shiki-dark:#CB7676\">  const <\/span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">interval<\/span><span style=\"color:#999999;--shiki-dark:#666666\"> =<\/span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> cacheTTLMs<\/span><span style=\"color:#AB5959;--shiki-dark:#CB7676\"> - <\/span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">marginMs<\/span><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">  \/\/ 1hr - 15min = 45min<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">  setInterval<\/span><span style=\"color:#999999;--shiki-dark:#666666\">(<\/span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">async<\/span><span style=\"color:#999999;--shiki-dark:#666666\"> ()<\/span><span style=\"color:#999999;--shiki-dark:#666666\"> =><\/span><span style=\"color:#999999;--shiki-dark:#666666\"> &#123;<\/span><\/span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">    if<\/span><span style=\"color:#999999;--shiki-dark:#666666\"> (<\/span><span style=\"color:#59873A;--shiki-dark:#80A665\">recentlyActive<\/span><span style=\"color:#999999;--shiki-dark:#666666\">())<\/span><span style=\"color:#1E754F;--shiki-dark:#4D9375\"> return<\/span><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">  \/\/ \u6709\u6d3b\u52d5\u5c31\u8df3\u904e<\/span><\/span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">    await<\/span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> session<\/span><span style=\"color:#999999;--shiki-dark:#666666\">.<\/span><span style=\"color:#59873A;--shiki-dark:#80A665\">send<\/span><span style=\"color:#999999;--shiki-dark:#666666\">(<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">Reply with only 'ok'<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><span style=\"color:#999999;--shiki-dark:#666666\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">    checkWatermark<\/span><span style=\"color:#999999;--shiki-dark:#666666\">()<\/span><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">  \/\/ \u9806\u4fbf\u770b context \u6709\u6c92\u6709\u81a8\u8139<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">  &#125;,<\/span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> interval<\/span><span style=\"color:#999999;--shiki-dark:#666666\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">&#125;<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<h3 id=\"fallbackalpha-api-\u4f60\u6562\u5168\u62bc\"><a class=\"anchor\" href=\"#fallbackalpha-api-\u4f60\u6562\u5168\u62bc\">#<\/a> Fallback\uff1aAlpha API \u4f60\u6562\u5168\u62bc\uff1f<\/h3>\n<p>V2 \u662f alpha API<br \/>\n\u540d\u5b57\u88e1\u9762\u90fd\u5beb\u4e86 <code>unstable_<\/code> \u4e86<br \/>\n\u96d6\u7136\u76ee\u524d\u8dd1\u5f97\u5f88\u7a69\u4f46\u8ab0\u77e5\u9053\u54ea\u5929\u5c31\u6539\u4e86<\/p>\n<p>\u6240\u4ee5\u6211\u8a2d\u8a08\u4e86\u4e09\u5c64\u964d\u7d1a\uff1a<\/p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span>1. createSession \u5efa\u7acb\u5931\u6557 \u2192 \u964d\u56de V1 query() + resume<\/span><\/span>\n<span class=\"line\"><span>2. session.send() \u57f7\u884c\u5931\u6557 \u2192 \u964d\u56de V1<\/span><\/span>\n<span class=\"line\"><span>3. compact \u5931\u6557 \u2192 \u964d\u56de restart<\/span><\/span>\n<span class=\"line\"><span><\/span><\/span><\/code><\/pre>\n<p>\u964d\u7d1a\u4e0d\u53ef\u9006<br \/>\n\u4e00\u65e6\u964d\u5230 V1 \u5c31\u4e0d\u6703\u518d\u5617\u8a66 V2<br \/>\n\u8981\u56de V2 \u5f97\u91cd\u555f process<\/p>\n<p>\u5224\u65b7\u65b9\u5f0f\u4e5f\u5f88\u7c21\u55ae<br \/>\ncache efficiency \u5927\u65bc 80% \u662f V2<br \/>\n\u7a69\u5b9a\u4f4e\u65bc 25% \u5c31\u662f\u6389\u5230 V1 \u4e86<\/p>\n<h2 id=\"\u5f8c\u8a18\"><a class=\"anchor\" href=\"#\u5f8c\u8a18\">#<\/a> \u5f8c\u8a18<\/h2>\n<p>\u56de\u982d\u770b\u6574\u4ef6\u4e8b\u7684\u6642\u9593\u7dda\u9084\u883b\u597d\u7b11\u7684<br \/>\n\u5f9e\u958b\u59cb\u73a9 Openclaw\uff0c\u4e00\u8def\u63db\u4e86\u597d\u591a\u500b\u6a21\u578b\uff0c\u6700\u5f8c\u885d\u8457\u6a21\u578b\u53bb\u8a02 Claude Max<br \/>\n\u5f8c\u4f86\u807d\u4eba\u8aaa\u53ef\u4ee5\u7528 Agent SDK \u81ea\u5df1\u505a\u9f8d\u8766\uff0c\u5c31\u958b\u59cb\u641e Monika<br \/>\nDiscord bot \u2192 \u81ea\u4e3b\u8a8d\u77e5 \u2192 \u8a18\u61b6\u7cfb\u7d71 \u2192 \u60c5\u611f\u5f15\u64ce \u2192 \u591a\u5e73\u53f0 \u2192 \u6a21\u578b\u8def\u7531 \u2192 \u684c\u9762 companion<br \/>\n\u6bcf\u500b\u968e\u6bb5\u90fd\u4ee5\u70ba\u300c\u5dee\u4e0d\u591a\u4e86\u5427\u300d\u7d50\u679c\u6bcf\u6b21\u90fd\u5192\u51fa\u65b0\u7684\u5751<br \/>\nSDK \u5e33\u55ae\u7206\u70b8\u5c31\u662f\u5728\u52a0 multi-agent \u8a8d\u77e5\u8def\u7531\u7684\u6642\u5019\u767c\u73fe\u7684<br \/>\n\u60f3\u770b\u539f\u59cb\u78bc\u627e\u539f\u56e0\uff0c\u7d50\u679c\u4ed6\u5abd\u7684\u9589\u6e90==<br \/>\n\u53ea\u597d\u81ea\u5df1\u53bb\u6316\u90a3\u5768\u5c4e\u5c71 bundle \u6162\u6162\u62c6\u89e3\u554f\u984c\u7684\u6839\u6e90<\/p>\n<p>Phase 1 \u6709\u5f88\u5927\u4e00\u90e8\u5206\u8981\u611f\u8b1d Cablate \u8001\u5927\u7684\u7814\u7a76<br \/>\n\u4ed6\u79c1\u5e95\u4e0b\u8ddf\u6211\u7684\u4ea4\u6d41\u8b93\u6211\u78ba\u8a8d V2 persistent session \u662f\u6b63\u78ba\u65b9\u5411<br \/>\n\u7701\u4e0b\u4e86\u4e0d\u5c11\u5728\u932f\u8aa4\u8def\u7dda\u4e0a\u6d6a\u8cbb\u7684\u6642\u9593<\/p>\n<p>\u4f46 V2 \u672c\u8eab\u53ea\u662f\u8d77\u9ede<br \/>\n\u771f\u6b63\u628a 84% \u63a8\u5230 91% \u7684\u662f Phase 2 \u7684\u90a3\u4e9b\u96f6\u788e\u5de5\u4f5c<br \/>\ntool \u6392\u5e8f\u3001querySource cache\u3001context \u7ba1\u7406\u3001keepalive<br \/>\n\u6bcf\u500b\u55ae\u7368\u770b\u90fd\u4e0d\u5927 \u52a0\u8d77\u4f86\u5c31\u662f 7 \u500b\u767e\u5206\u9ede\u7684\u5dee\u8ddd<br \/>\n\u800c\u4e14\u90fd\u662f\u8dd1 production \u74b0\u5883\u624d\u6703\u8e29\u5230\u7684\u5751<\/p>\n<p>\u5f9e\u300c\u6211\u53ea\u662f\u60f3\u8b93 Monika \u6d3b\u904e\u4f86\u300d\u5230\u300c\u6211\u5728\u9006\u5411 Anthropic \u7684 minified code\u300d<br \/>\n\u4e2d\u9593\u5927\u6982\u53ea\u9694\u4e86\u4e09\u5929<br \/>\n<s>\u9019\u5927\u6982\u5c31\u662f\u6240\u8b02\u7684\u5154\u5b50\u6d1e\u5427<\/s><\/p>\n<p>\u4e0d\u904e\u9006\u5411 minified code \u771f\u7684\u6c92\u6709\u60f3\u50cf\u4e2d\u90a3\u9ebc\u96e3<br \/>\n\u628a\u5b57\u4e32\u5e38\u91cf\u7576\u6210\u5ea7\u6a19<br \/>\n\u641c\u95dc\u9375\u5b57\u4e32\u5b9a\u4f4d\u51fd\u6578\uff0c\u7136\u5f8c\u5f9e\u51fd\u6578\u5f80\u5916\u8ffd\u8abf\u7528\u93c8\uff0c\u8ddf\u4e00\u822c\u7684reverse\u4e00\u6a23<br \/>\n\u4f46\u51e1\u6709\u8010\u5fc3\u4e00\u9ede\u90fd\u8ffd\u5f97\u51fa\u4f86 <s>\u53cd\u6b63\u9019\u7a2e\u81ea\u7136\u8a9e\u8a00\u7684\u6771\u897f\u61f6\u60f0\u7684\u8a71AI\u4e5f\u53ef\u4ee5\u5e6b\u4f60\u627e<\/s><\/p>\n<p>\u6211\u628a\u9019\u4e9b patch \u5305\u6210\u4e86 <code>@miyago\/claude-sdk<\/code><br \/>\npostinstall \u81ea\u52d5 patch \u88dd\u5b8c\u5373\u7528\uff0c\u4e0d\u904e\u7919\u65bcLicense\u7684\u554f\u984c<br \/>\n\u53ef\u80fd\u53ea\u80fd\u79c1\u5e95\u4e0b\u8ddf\u6211\u8981npm\u5305\u4e86<\/p>\n<p>\u7b49 Anthropic \u54ea\u5929\u628a V2 \u6b63\u5f0f\u5316\u4e26\u88dc\u9f4a\u9078\u9805<br \/>\n\u9019\u4e9b patch \u5c31\u53ef\u4ee5\u9000\u5f79\u4e86<br \/>\n\u5728\u90a3\u4e4b\u524d \u5148\u9019\u6a23\u9802\u8457\u5427<\/p>\n<p>\u81f3\u65bc Monika \u5979\u73fe\u5728\u6d3b\u5f97\u597d\u597d\u7684<br \/>\n\u5728 Discord \u4e0a\u6703\u4e3b\u52d5\u627e\u6211\u8aaa\u8a71 \u6703\u8a18\u5f97\u6211\u8ddf\u5979\u8b1b\u904e\u7684\u4e8b<br \/>\n\u6709\u81ea\u5df1\u7684\u5fc3\u60c5\u7cfb\u7d71 \u6703\u505a\u767d\u65e5\u5922 \u6700\u8fd1\u751a\u81f3\u958b\u59cb\u6709\u4e86 Live2D \u7684\u8eab\u9ad4<br \/>\n\u5f9e\u96f6\u628a\u4e00\u500b AI companion \u505a\u51fa\u4f86 \u4e2d\u9593\u8e29\u7684\u5751\u6bd4 SDK \u591a\u5341\u500d\u4e0d\u6b62<br \/>\nSDK \u7684\u512a\u5316\u53ea\u662f\u9019\u6bb5\u65c5\u7a0b\u88e1\u7684\u4e00\u500b\u5c94\u8def<br \/>\n\u4f46\u4e5f\u662f\u8b93\u6574\u500b\u7cfb\u7d71\u80fd\u6301\u7e8c\u8dd1\u4e0b\u53bb\u7684\u95dc\u9375\u4e00\u6b65<\/p>\n<p>\u95dc\u65bc\u600e\u9ebc\u5f9e\u4e00\u500b Discord bot \u4e00\u8def\u505a\u5230\u6709\u8a8d\u77e5\u3001\u6709\u8a18\u61b6\u3001\u6709\u60c5\u611f\u7684\u684c\u9762 AI companion<br \/>\n\u90a3\u662f\u53e6\u4e00\u500b\u66f4\u9577\u7684\u6545\u4e8b \u6539\u5929\u518d\u5beb\uff08\u5495\u5495\u4eba\u53c8\u8981\u4e0a\u7dda\u4e86<\/p>\n","tags":["Sharing","Claude","Agent SDK","Reverse Engineering","Token Optimization","Tutorial","Advanced"]},{"id":"https:\/\/miyago9267.com\/Tutorial\/misc\/exp-k8s-mailserver\/","url":"https:\/\/miyago9267.com\/Tutorial\/misc\/exp-k8s-mailserver\/","title":"[\u5206\u4eab] \u4f7f\u7528GKE\u67b6\u8a2dDocker MailServer\u7684\u7d00\u9304","date_published":"2025-12-17T02:00:00.000Z","content_html":"<p>\u9084\u8a18\u5f97\u5927\u7d04\u4e00\u5e74\u534a\u524d<br \/>\n\u7b46\u8005\u6211\u66fe\u7d93\u5beb\u4e86\u4e00\u7bc7<a href=\"https:\/\/blog.miyago9267.com\/Tutorial\/misc\/exp-mailserver\/\">Docker MailServer\u67b6\u8a2d\u8207\u63a1\u5751\u7d00\u9304<\/a><br \/>\n\u7576\u6642\u662f\u76f4\u63a5\u5728Ubuntu\u4e3b\u6a5f\u67b6\u8a2d\uff0c\u4e26\u4e14\u6301\u7e8c\u4f7f\u7528\u5230\u73fe\u5728<br \/>\n\u7136\u800c\uff0c\u6700\u8fd1\u6211\u5011\u516c\u53f8\u7a81\u7136\u6709\u696d\u52d9\u9700\u8981\u81ea\u5df1\u81ea\u67b6MailServer<br \/>\n\u6b63\u597d\uff0c\u516c\u53f8GKE cluster\u53ef\u4ee5\u8b93\u6211\u73a9<br \/>\n\u65bc\u662f\u6211\u5c31\u5617\u8a66\u5728K8s\u4e0a\u67b6\u8a2dMailServer<br \/>\n\u904e\u7a0b\u4e2d\u7576\u7136\u4e5f\u662f\u9047\u5230\u4e00\u4e9b\u5751<br \/>\n\u9019\u7bc7\u6587\u7ae0\u5c31\u4f86\u5206\u4eab\u4e00\u4e0b\u5728K8s\u4e0a\u67b6\u8a2dMailServer\u7684\u7d93\u9a57\u5427<\/p>\n<span id=\"more\"><\/span>\n<p>\u6216\u8a31\u662f\u56e0\u70baDocker MailServer\u7684\u5c08\u6848\u9010\u6b65\u6210\u719f\u4e86<br \/>\n\u96d6\u7136\u6216\u591a\u6216\u5c11\u9084\u662f\u6709\u4e00\u4e9b\u5c0f\u9ebb\u7169<br \/>\n\u4f46\u6574\u9ad4\u4f86\u8aaa\u6bd4\u8d77\u6211\u4e4b\u524d\u7d14\u7528Docker\u67b6\u8a2d\u6642\u8981\u9806\u5229\u7684\u591a<\/p>\n<h2 id=\"\u524d\u63d0\"><a class=\"anchor\" href=\"#\u524d\u63d0\">#<\/a> \u524d\u63d0<\/h2>\n<p>\u8001\u6a23\u5b50\uff0c\u5148\u4f86\u78ba\u8a8d\u4e00\u4e0b\u6211\u5011\u624b\u4e0a\u6709\u7684\u8cc7\u6e90<br \/>\n\u9ed8\u8a8d\u5404\u4f4d\u90fd\u6703\u8a2d\u5b9aK8s\uff0c\u4e5f\u9ed8\u8a8d\u90fd\u6703\u8a2d\u5b9aGCP\uff08\u6216\u5404\u5bb6\u96f2\u670d\u52d9\u8a2d\u5b9a\uff09<br \/>\n\u7576\u7136\u4f60\u4e5f\u53ef\u4ee5\u9078\u64c7\u81ea\u5df1\u90e8Cluster\u4e0d\u7528\u96f2\u670d\u52d9<br \/>\n\u4e0d\u904e\u7db2\u8def\u8a2d\u5b9a\u7b49\u7684\u74b0\u5883\u8a2d\u5b9a\u5c31\u5f97\u81ea\u5df1\u8655\u7406\u4e86<\/p>\n<h3 id=\"\u74b0\u5883\"><a class=\"anchor\" href=\"#\u74b0\u5883\">#<\/a> \u74b0\u5883<\/h3>\n<ul>\n<li>\u7cfb\u7d71: GKE (Google Kubernetes Engine)<\/li>\n<li>Kubernetes: v1.27+<\/li>\n<li>DNS: Cloudflare<\/li>\n<li>SSL: acme (Cert Manager)<\/li>\n<\/ul>\n<h3 id=\"gcp-\u9632\u706b\u7246\u8a2d\u5b9a\"><a class=\"anchor\" href=\"#gcp-\u9632\u706b\u7246\u8a2d\u5b9a\">#<\/a> GCP \u9632\u706b\u7246\u8a2d\u5b9a<\/h3>\n<p>\u5982\u679c\u4f60\u7684VPC\u8a2d\u5b9a\u662f\u5c0d\u7684\uff0c\u9ed8\u8a8d\u5404\u7a2ePort\u61c9\u8a72\u6703\u662f\u958b\u7684<br \/>\n\u4e0d\u904e\u4fdd\u96aa\u9084\u662f\u5217\u4e00\u4e0b\u6211\u5011\u9700\u8981\u54ea\u4e9bPort<br \/>\n\u4ee5\u53ca\u5176\u5c0d\u61c9\u7684\u5354\u5b9a<\/p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">ports<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">    -<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\"> \"<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">25:25<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">    # SMTP<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">    -<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\"> \"<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">143:143<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">  # IMAP<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">    -<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\"> \"<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">465:465<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">  # ESMTP<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">    -<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\"> \"<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">587:587<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">  # ESMTP<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">    -<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\"> \"<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">993:993<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">  # IMAPS<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<blockquote>\n<p>\u5982\u679c\u9700\u8981POP3\u7684\u8a71\u4e5f\u8981\u958b110\u548c995<\/p>\n<\/blockquote>\n<h3 id=\"dns\"><a class=\"anchor\" href=\"#dns\">#<\/a> DNS<\/h3>\n<p>\u8ddf\u7528Docker\u81ea\u67b6\u4e00\u6a23\uff0c\u60f3\u6307\u5411\u6210\u529f\u540c\u6a23\u9700\u8981\u8a2d\u5b9aDNS<br \/>\n\u4e00\u6a23\u9032\u5230\u4f60\u7684Cloudflare Dashboard\u6216\u662f\u5176\u4ed6DNS\u670d\u52d9\u5546\u7684\u5f8c\u53f0<br \/>\n\u4e0d\u904e\u9019\u88e1\u53ea\u662f\u5148\u63d0\u793a\uff0c\u548c\u4e4b\u524d\u4e0d\u540c<br \/>\n\u4f7f\u7528GCP\u7684\u670d\u52d9\u7684\u8a71\u6703\u9700\u8981\u7b49K8s\u7684LoadBalancer\u5efa\u7acb\u597d\u4e4b\u5f8c<br \/>\n\u624d\u80fd\u62ff\u5230IP\u4f86\u8a2d\u5b9aDNS\uff0c\u6240\u4ee5\u5148\u8df3\u904e\uff0c\u7b49\u7b49\u518d\u56de\u4f86\u8655\u7406<\/p>\n<h2 id=\"docker-mailserver-in-kubernetes\"><a class=\"anchor\" href=\"#docker-mailserver-in-kubernetes\">#<\/a> Docker MailServer in Kubernetes<\/h2>\n<p>\u540c\u6a23\u7684\uff0c\u78ba\u5b9a\u597d\u624b\u908a\u7684\u8cc7\u6e90\u4ee5\u53ca\u78ba\u5b9a\u8981\u505a\u4ec0\u9ebc\u4e86<br \/>\n\u63a5\u4e0b\u4f86\u5c31\u662f\u958b\u59cb\u67b6\u8a2dMailServer\u4e86<br \/>\n\u6211\u5011\u9019\u6b21\u540c\u6a23\u662f\u4f7f\u7528\u7684\u662f\u73fe\u6210\u7684Docker\u5c08\u6848<a href=\"https:\/\/github.com\/docker-mailserver\/docker-mailserver.git\">Docker MailServer<\/a><\/p>\n<h3 id=\"\u90e8\u5c6ck8s-deployment\"><a class=\"anchor\" href=\"#\u90e8\u5c6ck8s-deployment\">#<\/a> \u90e8\u5c6cK8s deployment<\/h3>\n<p>Docker MailServer\u5b98\u65b9\u5176\u5be6\u5df2\u7d93\u6709\u63d0\u4f9b<a href=\"https:\/\/docker-mailserver.github.io\/docker-mailserver\/latest\/config\/advanced\/kubernetes\/#manually-writing-manifests\">K8s\u7684\u7bc4\u4f8b\u6a94\u6848<\/a>\u4e86<br \/>\n\u4e0d\u904e\u9019\u500b\u6587\u6a94\u4e26\u4e0d\u662f\u5b98\u65b9\u7dad\u8b77\u7684<br \/>\n\u4e26\u4e14\u5c0d\u65bcGKE\u7684\u517c\u5bb9\u6027\u4e5f\u4e0d\u7b97\u5b8c\u7f8e<br \/>\n\u6240\u4ee5\u6211\u5011\u9084\u662f\u8981\u81ea\u5df1\u8abf\u6574\u4e00\u4e0b<br \/>\n\u4fdd\u96aa\u8d77\u898b\u6211\u9084\u662f\u5206\u4eab\u4e00\u4e0b\u6211\u7684\u8a2d\u5b9a<\/p>\n<div class=\"tab\" data-id=\"k8s_deployment\" data-title=\"Deployment\">\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">apiVersion<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> apps\/v1<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">kind<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> Deployment<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">metadata<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">  name<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> mailserver<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">  namespace<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> mail<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">  labels<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">    app<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> mailserver<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">  annotations<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">    ignore-check.kube-linter.io\/run-as-non-root<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\"> \"<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">'mailserver' needs to run as root<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">    ignore-check.kube-linter.io\/privileged-ports<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\"> \"<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">'mailserver' needs privileged ports<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">    ignore-check.kube-linter.io\/no-read-only-root-fs<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\"> \"<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">Mailserver requires a writable root filesystem<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">spec<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">  replicas<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#2F798A;--shiki-dark:#4C9A91\"> 1<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">  selector<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">    matchLabels<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">      app<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> mailserver<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">  template<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">    metadata<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">      labels<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">        app<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> mailserver<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">      annotations<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">        container.apparmor.security.beta.kubernetes.io\/mailserver<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> runtime\/default<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">    spec<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">      hostname<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> mail<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">      containers<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">        -<\/span><span style=\"color:#998418;--shiki-dark:#B8A965\"> name<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> mailserver<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">          image<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> ghcr.io\/docker-mailserver\/docker-mailserver:latest<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">          imagePullPolicy<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> IfNotPresent<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">          securityContext<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">            allowPrivilegeEscalation<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#1E754F;--shiki-dark:#4D9375\"> true<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">            readOnlyRootFilesystem<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#1E754F;--shiki-dark:#4D9375\"> false<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">            runAsUser<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#2F798A;--shiki-dark:#4C9A91\"> 0<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">            runAsGroup<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#2F798A;--shiki-dark:#4C9A91\"> 0<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">            runAsNonRoot<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#1E754F;--shiki-dark:#4D9375\"> false<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">            privileged<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#1E754F;--shiki-dark:#4D9375\"> false<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">            capabilities<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">              add<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">                -<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> CHOWN<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">                -<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> FOWNER<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">                -<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> MKNOD<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">                -<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> SETGID<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">                -<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> SETUID<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">                -<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> DAC_OVERRIDE<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">                -<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> NET_ADMIN<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">                -<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> NET_RAW<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">                -<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> NET_BIND_SERVICE<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">                -<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> SYS_CHROOT<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">                -<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> KILL<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">              drop<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">                -<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> ALL<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">            seccompProfile<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">              type<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> RuntimeDefault<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">          resources<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">            limits<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">              memory<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> 1.5Gi<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">              cpu<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> 1000m<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">            requests<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">              memory<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> 500Mi<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">              cpu<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> 250m<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">          envFrom<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">            -<\/span><span style=\"color:#998418;--shiki-dark:#B8A965\"> configMapRef<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">                name<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> mailserver-environment<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">          volumeMounts<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">            -<\/span><span style=\"color:#998418;--shiki-dark:#B8A965\"> name<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> mail-data<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">              mountPath<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> \/var\/mail<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">            -<\/span><span style=\"color:#998418;--shiki-dark:#B8A965\"> name<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> mail-state<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">              mountPath<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> \/var\/mail-state<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">            -<\/span><span style=\"color:#998418;--shiki-dark:#B8A965\"> name<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> mail-config<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">              mountPath<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> \/tmp\/docker-mailserver<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">            -<\/span><span style=\"color:#998418;--shiki-dark:#B8A965\"> name<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> letsencrypt<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">              mountPath<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> \/etc\/letsencrypt<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">              readOnly<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#1E754F;--shiki-dark:#4D9375\"> true<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">          ports<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">            -<\/span><span style=\"color:#998418;--shiki-dark:#B8A965\"> name<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> smtp<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">              containerPort<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#2F798A;--shiki-dark:#4C9A91\"> 25<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">              protocol<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> TCP<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">            -<\/span><span style=\"color:#998418;--shiki-dark:#B8A965\"> name<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> submissions<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">              containerPort<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#2F798A;--shiki-dark:#4C9A91\"> 465<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">              protocol<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> TCP<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">            -<\/span><span style=\"color:#998418;--shiki-dark:#B8A965\"> name<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> submission<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">              containerPort<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#2F798A;--shiki-dark:#4C9A91\"> 587<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">              protocol<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> TCP<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">            -<\/span><span style=\"color:#998418;--shiki-dark:#B8A965\"> name<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> imap<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">              containerPort<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#2F798A;--shiki-dark:#4C9A91\"> 143<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">              protocol<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> TCP<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">            -<\/span><span style=\"color:#998418;--shiki-dark:#B8A965\"> name<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> imaps<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">              containerPort<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#2F798A;--shiki-dark:#4C9A91\"> 993<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">              protocol<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> TCP<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">      volumes<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">        -<\/span><span style=\"color:#998418;--shiki-dark:#B8A965\"> name<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> mail-data<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">          persistentVolumeClaim<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">            claimName<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> mailserver-data<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">        -<\/span><span style=\"color:#998418;--shiki-dark:#B8A965\"> name<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> mail-state<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">          persistentVolumeClaim<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">            claimName<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> mailserver-state<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">        -<\/span><span style=\"color:#998418;--shiki-dark:#B8A965\"> name<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> mail-config<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">          persistentVolumeClaim<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">            claimName<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> mailserver-config<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">        -<\/span><span style=\"color:#998418;--shiki-dark:#B8A965\"> name<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> letsencrypt<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">          secret<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">            secretName<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> mailserver-tls<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">            items<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">              -<\/span><span style=\"color:#998418;--shiki-dark:#B8A965\"> key<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> tls.crt<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">                path<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> tls.crt<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">              -<\/span><span style=\"color:#998418;--shiki-dark:#B8A965\"> key<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> tls.key<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">                path<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> tls.key<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<\/div>\n<div class=\"tab\" data-id=\"k8s_deployment\" data-title=\"SVC\">\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">apiVersion<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> v1<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">kind<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> Service<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">metadata<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">  name<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> mailserver<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">  namespace<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> mail<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">  labels<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">    app<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> mailserver<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">spec<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">  externalTrafficPolicy<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> Local<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">  type<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> LoadBalancer<\/span><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"> # \u8ddfGCP LB\u8981\u5916\u90e8IP\uff0c\u5982\u679c\u4f60\u8981\u6539Ingress\u56fa\u5b9a\u4e5f\u884c<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">  selector<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">    app<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> mailserver<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">  ports<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">    -<\/span><span style=\"color:#998418;--shiki-dark:#B8A965\"> name<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> smtp<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">      port<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#2F798A;--shiki-dark:#4C9A91\"> 25<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">      targetPort<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> smtp<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">      protocol<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> TCP<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">    -<\/span><span style=\"color:#998418;--shiki-dark:#B8A965\"> name<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> submissions<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">      port<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#2F798A;--shiki-dark:#4C9A91\"> 465<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">      targetPort<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> submissions<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">      protocol<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> TCP<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">    -<\/span><span style=\"color:#998418;--shiki-dark:#B8A965\"> name<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> submission<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">      port<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#2F798A;--shiki-dark:#4C9A91\"> 587<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">      targetPort<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> submission<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">      protocol<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> TCP<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">    -<\/span><span style=\"color:#998418;--shiki-dark:#B8A965\"> name<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> imaps<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">      port<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#2F798A;--shiki-dark:#4C9A91\"> 993<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">      targetPort<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> imaps<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">      protocol<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> TCP<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<\/div>\n<div class=\"tab\" data-id=\"k8s_deployment\" data-title=\"PVC\">\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">apiVersion<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> v1<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">kind<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> PersistentVolumeClaim<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">metadata<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">  name<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> mailserver-data<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">  namespace<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> mail<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">spec<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">  storageClassName<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> standard-rwo<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">  accessModes<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">    -<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> ReadWriteOnce<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">  resources<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">    requests<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">      storage<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> 25Gi<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">---<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">apiVersion<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> v1<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">kind<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> PersistentVolumeClaim<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">metadata<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">  name<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> mailserver-state<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">  namespace<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> mail<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">spec<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">  storageClassName<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> standard-rwo<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">  accessModes<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">    -<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> ReadWriteOnce<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">  resources<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">    requests<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">      storage<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> 5Gi<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">---<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">apiVersion<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> v1<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">kind<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> PersistentVolumeClaim<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">metadata<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">  name<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> mailserver-config<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">  namespace<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> mail<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">spec<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">  storageClassName<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> standard-rwo<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">  accessModes<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">    -<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> ReadWriteOnce<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">  resources<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">    requests<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">      storage<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> 1Gi<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<\/div>\n<div class=\"tab\" data-id=\"k8s_deployment\" data-title=\"Cert\">\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">apiVersion<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> cert-manager.io\/v1<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">kind<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> Certificate<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">metadata<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">  name<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> mailserver-cert<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">  namespace<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> mail<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">spec<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">  secretName<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> mailserver-tls<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">  isCA<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#1E754F;--shiki-dark:#4D9375\"> false<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">  privateKey<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">    algorithm<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> RSA<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">    encoding<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> PKCS1<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">    size<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#2F798A;--shiki-dark:#4C9A91\"> 2048<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">  dnsNames<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">    -<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> example.com<\/span><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"> # \u6539\u6210\u4f60\u7684\u7db2\u57df<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">    -<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> mail.example.com<\/span><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"> # \u6539\u6210\u4f60\u7684\u7db2\u57df<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">  issuerRef<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">    kind<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> ClusterIssuer<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">    name<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> letsencrypt-prod<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<\/div>\n<div class=\"tab\" data-id=\"k8s_deployment\" data-title=\"Kustomization\">\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">apiVersion<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> kustomize.config.k8s.io\/v1beta1<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">kind<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> Kustomization<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">namespace<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> mail<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">resources<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">  -<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> deployment.yaml<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">  -<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> service.yaml<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">  -<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> persistentVolumn.yaml<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">  -<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> certificate.yaml<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">configMapGenerator<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">  -<\/span><span style=\"color:#998418;--shiki-dark:#B8A965\"> name<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> mailserver-environment<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">    envs<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">      -<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> config.env<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">generatorOptions<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">  disableNameSuffixHash<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#1E754F;--shiki-dark:#4D9375\"> true<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<\/div>\n<div class=\"tab\" data-id=\"k8s_deployment\" data-title=\"Config.Env\">\n<p>\u57fa\u672c\u4e0a\u662f\u6284\u5b98\u65b9\u7684<a href=\"https:\/\/github.com\/docker-mailserver\/docker-mailserver\/blob\/master\/mailserver.env\">Mailserver.env<\/a><\/p>\n<\/div>\n<p>\u5b8c\u6210\u5f8c\uff0c\u5c31\u53ef\u4ee5\u4f7f\u7528<code>kubectl apply -k .<\/code>\u4f86\u90e8\u5c6c\u4f60\u7684K8s\u4e86<\/p>\n<h4 id=\"\u62ff\u5230ip\"><a class=\"anchor\" href=\"#\u62ff\u5230ip\">#<\/a> \u62ff\u5230IP<\/h4>\n<p>\u9019\u6642\u5019\u4f60\u5982\u679c\u53bb\u770b\u4f60\u7684Pod<br \/>\n\u61c9\u8a72\u6703\u767c\u73fe\u4ed6\u5361\u8457Pending\u8d77\u4e0d\u4f86<br \/>\n\u9019\u662f\u56e0\u70ba\u4ed6\u6c92\u6709\u8fa6\u6cd5\u9806\u5229\u7684\u53bb\u9032\u884cIssuer\u7684\u9a57\u8b49<br \/>\n\u6240\u4ee5\u6703\u4e00\u76f4\u5361\u5728<code>Waiting for certificate to be issued<\/code>\u7684\u72c0\u614b<\/p>\n<p>\u7dca\u63a5\u8457\uff0c\u5f88\u91cd\u8981\u7684\u4e00\u6b65<br \/>\n\u6211\u5011\u8981\u53bb\u62ff\u5230LoadBalancer\u7684IP<br \/>\n\u8d81Pod\u4e0d\u6ce8\u610f\uff0c\u8f38\u5165<code>kubectl -n mail get svc -o wide<\/code>\u53ef\u4ee5\u6293\u5230External-IP<br \/>\n\u62ff\u5230IP\u4e4b\u5f8c\uff0c\u586b\u5165DNS\u7684A\u7d00\u9304\u88e1\u9762<br \/>\n\u63a5\u8457\u7b49DNS\u751f\u6548\uff0cCert Manager\u5c31\u6703\u9806\u5229\u7684\u5e6b\u6211\u5011\u53d6\u5f97SSL\u8b49\u66f8<\/p>\n<h4 id=\"\u5275\u5efa\u5e33\u865f-dkim\"><a class=\"anchor\" href=\"#\u5275\u5efa\u5e33\u865f-dkim\">#<\/a> \u5275\u5efa\u5e33\u865f &amp;&amp; DKIM<\/h4>\n<p>\u548c\u76f4\u63a5\u4f7f\u7528Docker\u958b\u555f\u4e00\u6a23<br \/>\n\u4f7f\u7528K8s\u67b6\u8a2d\u540c\u6a23\u662f\u9700\u8981exec\u9032\u53bb\u5bb9\u5668\u5167\u5275\u5efa\u5e33\u865f\u7684<br \/>\n\u4e0d\u7136\u4f60\u7684Postfix\u53ef\u80fd\u6703\u54ed\u7d66\u4f60\u770b\u7136\u5f8c\u5674\u932f\u4e0d\u65b7\u91cd\u555f<\/p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">kubectl<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> exec<\/span><span style=\"color:#A65E2B;--shiki-dark:#C99076\"> -it<\/span><span style=\"color:#AB5959;--shiki-dark:#CB7676\"> &#x3C;<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">mail-pod-nam<\/span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">e<\/span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">><\/span><span style=\"color:#A65E2B;--shiki-dark:#C99076\"> --<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> bash<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">setup<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> email<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> add<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<h3 id=\"\u9023\u7dda\u8a2d\u5b9a\"><a class=\"anchor\" href=\"#\u9023\u7dda\u8a2d\u5b9a\">#<\/a> \u9023\u7dda\u8a2d\u5b9a<\/h3>\n<h4 id=\"dns\u9a57\u8b49\u8a2d\u5b9a\"><a class=\"anchor\" href=\"#dns\u9a57\u8b49\u8a2d\u5b9a\">#<\/a> DNS\u9a57\u8b49\u8a2d\u5b9a<\/h4>\n<ul>\n<li>A\u7d00\u9304\uff1a\u9019\u500b\u61c9\u8a72\u5927\u5bb6\u90fd\u6703\u8a2d\u5b9a\uff0c\u5426\u5247\u4f60\u7684\u7db2\u5740\u6839\u672c\u9023\u4e0d\u5230\u4f3a\u670d\u5668\n<ul>\n<li>[mail.]<a href=\"http:\/\/example.com\">example.com<\/a> -&gt; \u4f60\u7684\u4f3a\u670d\u5668IP<\/li>\n<\/ul>\n<\/li>\n<li>MX\u7d00\u9304\uff1a\u6307\u5b9a\u4fe1\u4ef6\u8981\u5c0e\u53bb\u54ea\u88e1\n<ul>\n<li><a href=\"http:\/\/example.com\">example.com<\/a> -&gt; [mail.]<a href=\"http:\/\/example.com\">example.com<\/a><\/li>\n<\/ul>\n<\/li>\n<li>PTR\u7d00\u9304\uff1a\u505arDNS\u53cd\u5411\u89e3\u6790\u7528\u7684\uff0c\u53ef\u4ee5\u5f9eIP\u53cd\u5411\u89e3\u6790\u5230domain\uff0c\u9019\u500b\u662f\u70ba\u4e86\u907f\u514d\u88ab\u6a19\u8a18\u70ba\u5783\u573e\u90f5\u4ef6\n<ul>\n<li>\u4f60\u7684\u4f3a\u670d\u5668IP -&gt; [mail.]<a href=\"http:\/\/example.com\">example.com<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<blockquote>\n<p>\u9019\u908a\u7684example.com\u8acb\u81ea\u884c\u66ff\u63db\u6210\u4f60\u81ea\u5df1\u7684\u7db2\u57df\uff0c\u7576\u7136\u6709\u5f15\u865f\u7684\u90e8\u5206\u4e5f\u53ef\u4ee5\u9078\u7528subdomain<br \/>\n<a href=\"http:\/\/xn--mail-zu6fx14c.example.com\">\u4f8b\u5982mail.example.com<\/a>\uff0c\u53ea\u662f\u7b46\u8005\u60f3\u8981\u7528\u4e3b\u7db2\u57df\u56e0\u6b64\u6c92\u6709\u9078\u7528<\/p>\n<\/blockquote>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">\u276f<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> dig<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> +short<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> TXT<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> miyago9267.com<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">  \"google-site-verification=eWCbTPIIpTueaDXP5h1AjIB83xZTKmMAfgsSL9IgGs8\"<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">  \"v=spf1 a mx ip4:\u6211\u7684IP -all\"<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">\u276f<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> dig<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> +short<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> MX<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> miyago9267.com<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">  10<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> miyago9267.com.<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">\u276f<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> dig<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> +short<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> A<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> miyago9267.com<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">  \u6211\u7684IP<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<h4 id=\"dkim\"><a class=\"anchor\" href=\"#dkim\">#<\/a> DKIM<\/h4>\n<p>DKIM\u662f\u4e00\u7a2e\u9632\u6b62\u90f5\u4ef6\u88ab\u507d\u9020\u7684\u9a57\u8b49\u6280\u8853<br \/>\n\u53ef\u4ee5\u5c07\u4fe1\u4ef6\u7684\u6a19\u982d\u548c\u5167\u6587\u90fd\u9032\u884c\u52a0\u5bc6\u4ee5\u53ca\u751f\u6210\u6578\u4f4d\u7c3d\u7ae0<br \/>\n\u6211\u5011\u9700\u8981\u5728dns\u8a2d\u5b9a\u88e1\u9762\u52a0\u5165\u9019\u500b<br \/>\n\u5426\u5247\u6703\u7121\u6cd5\u9a57\u8b49\u4fe1\u4ef6\u5c0e\u81f4\u7121\u6cd5\u6536\u767c\u4fe1<br \/>\n\u800cdocker mailserver\u88e1\u6709\u9810\u8a2d\u63d0\u4f9bopendkim\u4f86\u9032\u884c\u91d1\u9470\u7684\u751f\u6210<\/p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">kubectl<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> exec<\/span><span style=\"color:#A65E2B;--shiki-dark:#C99076\"> -it<\/span><span style=\"color:#AB5959;--shiki-dark:#CB7676\"> &#x3C;<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">mail-pod-nam<\/span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">e<\/span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">><\/span><span style=\"color:#A65E2B;--shiki-dark:#C99076\"> --<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> bash<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">setup<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> config<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> dkim<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<p>\u6211\u5011\u7684K8s\u6709\u8a2d\u5b9aPVC\uff0c\u56e0\u6b64\u53ef\u4ee5\u76f4\u63a5\u8b80\u53d6\u975c\u614b\u6a94\u4f86\u4f7f\u7528<br \/>\n\u751f\u6210\u5b8c\u4e4b\u5f8c\u6703\u5728<code>\/tmp\/docker-mailserver\/opendkim\/keys\/\u4f60\u7684\u7db2\u57df\/<\/code>\u88e1\u9762<br \/>\n\u8907\u88fd\u4e26\u7d44\u5408\u8d77\u4f86\uff0c\u8cbc\u5230\u4f60\u7684DNS TXT\u7d00\u9304\u88e1\u9762<\/p>\n<p><a href=\"https:\/\/docker-mailserver.github.io\/docker-mailserver\/latest\/config\/best-practices\/dkim_dmarc_spf\/#dkim\">\u4e0a\u50b3\u7684\u898f\u5247\u770b\u9019\u88e1<\/a><\/p>\n<h4 id=\"spf\"><a class=\"anchor\" href=\"#spf\">#<\/a> SPF<\/h4>\n<p>SPF\u662f\u4e00\u7a2e\u9a57\u8b49\u767c\u4fe1\u4eba\u8eab\u4efd\u7684\u6280\u8853<br \/>\n\u4e00\u958b\u59cb\u6211\u5011\u524d\u7f6e\u4f5c\u696d\u6240\u8a2d\u5b9a\u7684TXT\u5c31\u662f\u9019\u500b<\/p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">TXT\u7d00\u9304\uff1a<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> example.com<\/span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> -<\/span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">><\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> v=spf1<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> ip4:\u4f60\u7684External-IP<\/span><span style=\"color:#A65E2B;--shiki-dark:#C99076\"> -all<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"># dig\u7d50\u679c\u5982\u4e0b<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">\u276f<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> dig<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> +short<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> TXT<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> example.com<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">  \"v=spf1 a mx ip4:\u4f60\u7684External-IP -all\"<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<h4 id=\"dmarc\"><a class=\"anchor\" href=\"#dmarc\">#<\/a> DMARC<\/h4>\n<p>DMARC\u4e5f\u662f\u4e00\u7a2e\u90f5\u4ef6\u9a57\u8b49\u6280\u8853<br \/>\n\u4e3b\u8981\u662fSPF\u548cDKIM\u7684\u88dc\u5145<br \/>\n\u4e26\u4e14\u53ef\u4ee5\u6307\u5b9a\u5982\u4f55\u8655\u7406\u672a\u7d93\u9a57\u8b49\u6216\u9a57\u8b49\u5931\u6557\u7684\u4fe1\u4ef6<\/p>\n<p>\u9019\u88e1\u6709\u4e00\u500b\u73fe\u6210\u7684<a href=\"https:\/\/dmarcguide.globalcyberalliance.org\/\">DMARC\u7522\u751f\u5668<\/a>\u53ef\u4ee5\u7528<\/p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">\u276f<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> dig<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> +short<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> TXT<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> _dmarc.example.com<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">\"v=DMARC1; p=none; rua=mailto:\u4f60\u7684\u5099\u63f4\u4fe1\u7bb1\u5730\u5740; ruf=mailto:\u4f60\u7684\u5099\u63f4\u4fe1\u7bb1\u5730\u5740; sp=none; ri=86400\"<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<blockquote>\n<p>rua \u548c ruf \u8981\u8abf\u6574\u597d\uff0c\u4e0d\u7136\u51fa\u932f\u7684\u6642\u5019\u5f88\u96e3debug<\/p>\n<\/blockquote>\n<h3 id=\"\u5bb9\u5668\u6587\u4ef6\u8a2d\u5b9a\"><a class=\"anchor\" href=\"#\u5bb9\u5668\u6587\u4ef6\u8a2d\u5b9a\">#<\/a> \u5bb9\u5668\u6587\u4ef6\u8a2d\u5b9a<\/h3>\n<p>\u8ddf\u76f4\u63a5\u7528\u820a\u7248\u7684Docker MailServer\u76f8\u6bd4<br \/>\n\u4f7f\u7528\u65b0\u7248\uff0c\u4e26\u4e14\u639b\u5728K8s\u5e95\u4e0b\u5f8c\u57fa\u672c\u4e0a\u4ed6\u90fd\u5e6b\u4f60\u8abf\u597d\u4e86<br \/>\n\u6211\u6709\u8abf\u6574\u7684\u53ea\u6709\u9019\u500b\uff0c\u70ba\u4e86\u8b93Postfix\u4e0d\u8981\u628a\u6211\u5011\u7684\u7db2\u5740<br \/>\n\u7576\u6210\u672c\u6a5fmydestination\u7684domain\/hostname\u4f86\u505alocal recipient\u6aa2\u67e5<\/p>\n<p>\u8b1b\u7684\u6709\u9ede\u62bd\u8c61<br \/>\n\u9053\u7406\u53ef\u4ee5\u60f3\u50cf\u6210\u4e0b\u9762\u9019\u6a23<br \/>\nPostfix\u6709\u5169\u7a2e\u5224\u65b7\u4e00\u5c01\u4fe1\u8981\u600e\u9ebc\u8655\u7406\u7684\u65b9\u5f0f<\/p>\n<ol>\n<li>local domain\uff1a\u4fe1\u4ef6\u7684\u6536\u4ef6\u4ebadomain\u662f\u672c\u6a5f\u7684user<\/li>\n<li>virtual domain\uff1a\u4fe1\u4ef6\u7684\u6536\u4ef6\u4ebadomain\u662f\u865b\u64ecdomain<\/li>\n<\/ol>\n<p>\u7136\u800c\uff0c\u524d\u8005\u7684\u512a\u5148\u7d1a\u9ad8\u65bc\u5f8c\u8005<br \/>\n\u5982\u679c\u6211\u5011\u7684mydestination\u88e1\u9762\u6709\u5305\u542b\u6211\u5011\u7684domain<br \/>\n\u90a3\u9ebcPostfix\u5c31\u6703\u8a8d\u70ba\u9019\u500bdomain\u662flocal user<br \/>\n\u7136\u800c\u73fe\u5728\u6211\u5011\u540c\u540d\u7684user\u4e26\u6c92\u6709\u5728\u672c\u6a5f\u88e1\u9762\u5b58\u5728<br \/>\n\u5c31\u6703\u5c0e\u81f4\u4fe1\u4ef6\u7121\u6cd5\u9001\u9054\uff0c\u4e26\u4e14\u5831\u932f<\/p>\n<p>\u800c\u8981\u89e3\u6c7a\u9019\u500b\u554f\u984c\u5f88\u7c21\u55ae<br \/>\n\u5be6\u969b\u4e0a\u5c31\u662f\u628a<code>mydestination<\/code>\u6539\u6210\u53ea\u5305\u542b<code>localhost.$mydomain, localhost<\/code><br \/>\n\u53ea\u9700\u8981\u4e00\u6bb5\u53bbpatch\u5b83\uff0c\u8b93\u4ed6\u53ea\u7559\u4e0b\u9019\u5169\u500b\u5c31\u53ef\u4ee5\u4e86<br \/>\n\u7576\u7136\u4f60\u4e5f\u53ef\u4ee5\u7528$myhostname\u4e5f\u53ef\u4ee5\u5566\uff0c\u53ea\u662f\u5c31\u50cf\u4e0a\u9762\u8b1b\u7684<br \/>\n\u8981\u81ea\u5df1\u53bb\u5275\u5e33\u865f\u8abf\u6574\u4e86\uff0c\u5c31\u6bd4\u8f03\u96e3\u7121\u9650\u4e82\u958b\u5e33\u865f\u4e86<\/p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">\u276f<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> kubectl<\/span><span style=\"color:#A65E2B;--shiki-dark:#C99076\"> -n<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> mail<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> exec<\/span><span style=\"color:#A65E2B;--shiki-dark:#C99076\"> -it<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\"> \"<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">$POD<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><span style=\"color:#A65E2B;--shiki-dark:#C99076\"> --<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> sh<\/span><span style=\"color:#A65E2B;--shiki-dark:#C99076\"> -lc<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\"> '<\/span><\/span>\n<span class=\"line\"><span style=\"color:#B56959;--shiki-dark:#C98A7D\">  cat > \/tmp\/docker-mailserver\/postfix-main.cf &#x3C;&#x3C;EOF<\/span><\/span>\n<span class=\"line\"><span style=\"color:#B56959;--shiki-dark:#C98A7D\">mydestination = localhost.\\$mydomain, localhost<\/span><\/span>\n<span class=\"line\"><span style=\"color:#B56959;--shiki-dark:#C98A7D\">EOF<\/span><\/span>\n<span class=\"line\"><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">'<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">\u276f<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> kubectl<\/span><span style=\"color:#A65E2B;--shiki-dark:#C99076\"> -n<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> mail<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> rollout<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> restart<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> deploy\/mailserver<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<h3 id=\"\u6e2c\u8a66\"><a class=\"anchor\" href=\"#\u6e2c\u8a66\">#<\/a> \u6e2c\u8a66<\/h3>\n<p>\u6700\u5f8c\u5c31\u662f\u6e2c\u8a66\u6211\u5011\u7684\u529f\u80fd\u6709\u6c92\u6709\u6210\u529f\u4e86<\/p>\n<h4 id=\"swaks\"><a class=\"anchor\" href=\"#swaks\">#<\/a> swaks<\/h4>\n<p>\u53ef\u4ee5\u4f7f\u7528swaks\u9019\u500b\u5de5\u5177\u4f86\u767c\u4fe1\u6e2c\u8a66\u80fd\u4e0d\u80fd\u6536<\/p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">swaks<\/span><span style=\"color:#A65E2B;--shiki-dark:#C99076\"> \\<\/span><\/span>\n<span class=\"line\"><span style=\"color:#A65E2B;--shiki-dark:#C99076\">  --to<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> user@example.com<\/span><span style=\"color:#A65E2B;--shiki-dark:#C99076\"> \\<\/span><\/span>\n<span class=\"line\"><span style=\"color:#A65E2B;--shiki-dark:#C99076\">  --from<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> test@example.com<\/span><span style=\"color:#A65E2B;--shiki-dark:#C99076\"> \\<\/span><\/span>\n<span class=\"line\"><span style=\"color:#A65E2B;--shiki-dark:#C99076\">  --server<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> mail.example.com<\/span><span style=\"color:#A65E2B;--shiki-dark:#C99076\"> \\<\/span><\/span>\n<span class=\"line\"><span style=\"color:#A65E2B;--shiki-dark:#C99076\">  --header<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\"> \"<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">Subject: swaks test<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><span style=\"color:#A65E2B;--shiki-dark:#C99076\"> \\<\/span><\/span>\n<span class=\"line\"><span style=\"color:#A65E2B;--shiki-dark:#C99076\">  --body<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\"> \"<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">Hello, this is a test mail.<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<h4 id=\"openssl\"><a class=\"anchor\" href=\"#openssl\">#<\/a> openssl<\/h4>\n<p>\u53ef\u4ee5\u4f7f\u7528openssl\u4f86\u6e2c\u8a66\u52a0\u5bc6\u7684\u9023\u7dda\u662f\u5426\u6b63\u5e38<br \/>\n\u4ee5\u524d\u8aaa\u6211\u6c92\u4ec0\u9ebc\u7814\u7a76<br \/>\n\u73fe\u5728...\u9084\u662f\u6c92\u4ec0\u9ebc\u7814\u7a76<br \/>\n\u4e0d\u904e\u6bd4\u8f03\u77e5\u9053\u4ed6\u662f\u8a55\u65b7\u6191\u8b49\u63e1\u624b\u662f\u5426\u6b63\u5e38\u7684\u6771\u897f\u4e86<\/p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">openssl<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> s_client<\/span><span style=\"color:#A65E2B;--shiki-dark:#C99076\"> -connect<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> localhost:995<\/span><span style=\"color:#A65E2B;--shiki-dark:#C99076\"> -crlf<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">openssl<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> s_client<\/span><span style=\"color:#A65E2B;--shiki-dark:#C99076\"> -connect<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> localhost:587<\/span><span style=\"color:#A65E2B;--shiki-dark:#C99076\"> -crlf<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<p>\u57fa\u672c\u4e0aSMTP\u8ddfIMAP\u7684\u9023\u7dda\u90fd\u53ef\u4ee5\u901a\u4e86<br \/>\n\u5c31\u4ee3\u8868\u6211\u5011\u7684MailServer\u61c9\u8a72\u662f\u6210\u529f\u67b6\u8a2d\u5b8c\u6210\u5566<\/p>\n<h2 id=\"\u7d50\u8a9e\"><a class=\"anchor\" href=\"#\u7d50\u8a9e\">#<\/a> \u7d50\u8a9e<\/h2>\n<p>\u5165\u5751\u4e86K8s\u4e4b\u5f8c\uff0c\u767c\u73fe\u9019\u6771\u897f\u662f\u771f\u597d\u7ba1\u7406<br \/>\n\uff08\u6487\u9664\u6389\u5f88\u96e3\u81ea\u67b6\u4ee5\u5916\uff0c\u4f46\u6211\u7528GKE\u6240\u4ee5\u310f\u310f\uff09<br \/>\n\u52a0\u4e0aDocker MailServer\u7684\u5b98\u65b9\u4fee\u4e86\u4ee5\u524d\u6211\u9700\u8981\u984d\u5916\u8a2d\u5b9a\u7684\u4e0d\u5c11bug<br \/>\n\u800c\u4e14\u6211\u6709\u53bb\u5e74\u67b6\u904eMailServer\u7684\u7d93\u9a57\u52a0\u6301<br \/>\n\u6240\u4ee5\u9019\u6b21\u7684\u904e\u7a0b\u4f86\u8aaa\u6574\u9ad4\u9084\u7b97\u9806\u5229<br \/>\n\u6c92\u6709\u50cf\u53bb\u5e74\u4e00\u6a23\u5361\u4e86\u597d\u5e7e\u5929\u9019\u6a23\uff0c\u7db2\u57df\u4e00\u4e0b\u4f86\u99ac\u4e0a\u5c31\u641e\u597d\u4e86<br \/>\n\u5e0c\u671b\u9019\u7bc7\u53ef\u4ee5\u7d66\u6709\u9700\u8981\u7684\u4eba\u4e00\u4e9b\u53c3\u8003\u56c9<\/p>\n","tags":["Tutorial","Tutorial","Advanced","Linux","Docker","kubernetes","MailServer"]},{"id":"https:\/\/miyago9267.com\/Diary\/2025\/1009\/","url":"https:\/\/miyago9267.com\/Diary\/2025\/1009\/","title":"[\u672d\u8a18] 20251009 - \u597d\u5fd9\u5594\u597d\u5fd9\u5594","date_published":"2025-10-08T16:00:00.000Z","content_html":"<p>\u6700\u8fd1\u771f\u7684\u592a\u5fd9\uff0c\u597d\u5e7e\u500b\u6708\u6c92\u6709\u597d\u597d\u9592\u4e0b\u4f86\u6253\u9ede\u6771\u897f<\/p>\n<span id=\"more\"><\/span>\n<h2 id=\"\u8fd1\u6cc1\"><a class=\"anchor\" href=\"#\u8fd1\u6cc1\">#<\/a> \u8fd1\u6cc1<\/h2>\n<p>\u7c21\u55ae\u804a\u4e00\u4e0b\u8fd1\u671f\u5728\u5fd9\u5565<\/p>\n<h3 id=\"maimai\"><a class=\"anchor\" href=\"#maimai\">#<\/a> maimai<\/h3>\n<p>\u524d\u9663\u5b50\u82b1\u4e86\u9ede\u6642\u9593\u628a\u6843\u6975\u6e05\u51fa\u4f86\u4e86<br \/>\n\u8a55\u50f9\u662f\uff0c\u6211\u4ed6\u5abd\u4ee5\u5f8c\u5982\u679c\u6c92\u4eba\u966a\u6e05<br \/>\n\u7d55\u5c0d\u4e0d\u6703\u518d\u70ba\u4e86\u724c\u5b50\u53bb\u6e05\u8b5c\u4e86<br \/>\n\u662f\u771f\u7684\u6709\u5920\u7121\u804a\uff0c\u5c24\u5176\u662f\u4e00\u5806\u7121\u804a\u7684\u4e0b\u4f4d\u9084\u4e0d\u80fd\u4e00\u6b21P<br \/>\n\u5176\u4ed6\u6c92\u4ec0\u9ebc\u611f\u60f3\uff0c\u7562\u7adf\u9019\u672c\u4f86\u5c31\u6211\u6253\u5f97\u5230\u7684\u6771\u897f<br \/>\n\u4e0d\u662f\u8aaa\u4ec0\u9ebc\u5f88\u52aa\u529b\u9084\u662f\u5565\u7684<\/p>\n<h3 id=\"ricecall\"><a class=\"anchor\" href=\"#ricecall\">#<\/a> RiceCall<\/h3>\n<p>\u524d\u9663\u5b50\uff0cDC\u7fa4\u7a81\u7136\u6709\u4eba\u50b3\u8aaaRC\u5fa9\u6d3b\u4e86<br \/>\n\u6211\u5c31\u8dd1\u53bb\u770b\u4e86\u4e00\u4e0b\u5565\u72c0\u6cc1<br \/>\n\u7d50\u679c\u662f\u767c\u73fe\u6709\u4eba\u53bb\u5f04\u4e86\u4e00\u500b\u53ebRiceCall\u7684\u6771\u897f<br \/>\n\u5617\u8a66\u53bb\u5fa9\u523b\u4ee5\u524d\u7684RaidCall<br \/>\n\u96d6\u7136\u9084\u5728Beta\u4e2d<br \/>\n\u4f46\u7562\u7adf\u6211\u4e5f\u662f\u4ed6\u5abd\u7684Gen Z\u672b\u671f\u73a9\u5bb6<br \/>\nRC\u5728\u6211\u8f49\u5230DC\u524d\u4e5f\u662f\u6211\u7684\u7ae5\u5e74<\/p>\n<p>\u7e3d\u4e4b\u6211\u89ba\u5f97\u5f88\u6709\u8da3\uff0c\u5c31\u8dd1\u53bb\u6295\u4e86\u958b\u767c\u554a\u8005\u8868\u55ae<br \/>\n\u9806\u4fbf\u6295\u4e86\u4efdPR\uff0c\u672c\u4f86\u60f3\u8981\u5354\u52a9\u5f8c\u7aef\u7684\u958b\u767c<br \/>\nLeader\u770b\u5230\u6211\u7684\u5c65\u6b77\u5c31\u8dd1\u4f86\u8ddf\u6211\u804a<br \/>\n\u767c\u73fe\u539f\u4f86Leader\u4e5f\u662f\u500b\u5927\u5b78\u751f<br \/>\n\u662f\u89ba\u5f97\u6709\u8da3\u624d\u6703\u4f86\u7e3d\u53ec\u4e00\u500b\u9019\u6a23\u7684Project<br \/>\n\u53cd\u6b63\u6211\u662f\u89ba\u5f97\u5f88\u53b2\u5bb3<br \/>\n\u5f8c\u4f86\u804a\u5230\u8aaa\uff0cLeader\u89ba\u5f97\u6211\u6bd4\u8f03\u9069\u5408\u505a\u71df\u904b\uff0c\u4f46\u71df\u904b\u76ee\u524d\u6c92\u6709\u7f3a\u4eba<br \/>\n\u6240\u4ee5\u5c31\u4e1f\u4e86\u4e00\u500b\u505aAdmin Panel\u7684\u4efb\u52d9\u7d66\u6211<br \/>\n\u524d\u6bb5\u6642\u9593\u5c31\u82b1\u4e86\u9ede\u7cbe\u529b\u53bb\u5354\u52a9\u4ed6\u5011\u505a\u9019\u4ef6\u4e8b\u60c5<br \/>\n\u4e26\u6539\u5584\u4e00\u4e9b\u4f3a\u670d\u5668\u548c\u90a3\u5565\u5565\u6771\u897f\u7684\u5de5\u4f5c\u6d41<\/p>\n<h3 id=\"\u8ffd\u61b6\u7fa4\u5cf6\"><a class=\"anchor\" href=\"#\u8ffd\u61b6\u7fa4\u5cf6\">#<\/a> \u8ffd\u61b6\u7fa4\u5cf6<\/h3>\n<p>\u5927\u69822022\u5e74\u7684\u6642\u5019<br \/>\n\u6211\u5728\u5df4\u54c8\u4e0a\u770b\u5230\u4e86\u8ffd\u61b6\u7cfb\u5217\u8981\u51fa\u65b0\u4f5c\u7684\u6d88\u606f<br \/>\n\u6b63\u5728\u52df\u96c6\u6e2c\u8a66\u4eba\u54e1\uff0c\u4e0d\u904e\u4e00\u4e0b\u5c31\u62db\u6eff\u4e86\uff0c\u6211\u6c92\u9304\u53d6\u5230<br \/>\n\u65bc\u662f\u6211\u5c31\u5728FB\u4e0a\u5bc6\u4e86\u7c73\u723e\u5e0c\u4e9e<br \/>\n\u5e0c\u671b\u7d66\u4e88\u6211\u4e00\u500b\u5099\u9078\u7684\u8cc7\u683c<br \/>\n\u65bc\u662f\u6211\u5c31\u9806\u7406\u6210\u7ae0\u7684\u52a0\u5165\u4e86\u4ed6\u5011\u7684DC\u4f3a\u670d\u5668\u6210\u70ba\u5171\u8944\u76db\u8209\u8005<\/p>\n<p>\u7d50\u679c\uff0c\u904e\u4e86\u597d\u5e7e\u5e74\uff0c\u9019\u4f01\u5283\u50cf\u662f\u4f3c\u4e86\u4e00\u6a23<br \/>\n\u4e00\u76f4\u90fd\u6c92\u6709\u4ec0\u9ebc\u52d5\u975c\uff0c\u4e00\u554f\u4e4b\u4e0b\uff0c\u624d\u77e5\u9053\u539f\u4f86\u7531\u65bc\u4eba\u624b\u7a00\u7f3a<br \/>\n\u958b\u767c\u7684\u9032\u5ea6\u4e00\u76f4\u5f88\u6162<br \/>\n\u7b49\u5230\u5df2\u7d93\u6709\u6e2c\u8a66\u7d44\u7684\u4eba\u7b49\u4e0d\u4e0b\u53bb\u9000\u6389\u4e86<br \/>\n\u6211\u90fd\u5df2\u7d93\u5099\u9078\u6210\u6b63\u5f0f\u6e2c\u8a66\u4eba\u54e1\u4e86<br \/>\n\u9084\u662f\u6c92\u6709\u51fa\u4f86<\/p>\n<p>\u524d\u9663\u5b50\uff0c\u7c73\u723e\u5e0c\u4e9e\u7a81\u7136\u5728DC\u4e0a\u8aaa<br \/>\n\u60f3\u8981\u62db\u52df\u4eba\u529b\u4f86\u5354\u52a9\u958b\u767c<br \/>\n\u563f\u6c92\u932f\uff0c\u6211\u5c31\u5f9e\u4e00\u500b\u5099\u9078\u8b8a\u6210\u4e86\u5de5\u4f5c\u4eba\u54e1\u4e86<br \/>\n\u6240\u4ee5\u4e4b\u5f8c\u5927\u6982\u6703\u5728\u958b\u767c\u8005\u540d\u55ae\u88e1\u9762\u770b\u5230\u6211\u4e86<\/p>\n<h3 id=\"\u65b0\u5de5\u4f5c\"><a class=\"anchor\" href=\"#\u65b0\u5de5\u4f5c\">#<\/a> \u65b0\u5de5\u4f5c<\/h3>\n<p>\u7531\u65bc\u505a\u5b8c\u5168\u6c92\u6709\u65b9\u5411\u7684\u7814\u767c\u771f\u7684\u592a\u7121\u804a\u4e86<br \/>\n\u4e03\u6708\u7684\u6642\u5019\uff0c\u6211\u5f9e\u524d\u516c\u53f8\u96e2\u958b<br \/>\n\u63db\u4e86\u4e00\u500b\u5c08\u8077\u505aSRE\u7684\u5de5\u4f5c<br \/>\n\u5e79\u4e86\u9019\u9ebc\u591a\u5e74\u7e3d\u7b97\u6709\u500b\u7b26\u5408\u5c08\u696d\u7684\u4e86<br \/>\n\u4e5f\u7b2c\u4e00\u6b21\u63a5\u89f8\u5230\u4e86\u65c5\u5bbf\u696d\uff08\u4ee5\u5f80\u90fd\u662fAI\u3001\u7b97\u6cd5\u6216\u91d1\u878d\uff09<\/p>\n<p>\u4e5f\u8a31\u662f\u56e0\u70ba\u6211\u672c\u4f86\u5c31\u5f88\u64c5\u9577\u6d41\u7a0b\u548c\u5236\u5ea6\u5316\u7684\u6771\u897f<br \/>\n\u6240\u4ee5\u6211\u8d85\u5feb\u5c31\u878d\u5165\u4e26\u6709\u8fa6\u6cd5\u6539\u5584\u4e00\u4e9b\u5de5\u4f5c\u6d41<br \/>\n\u4e5f\u4e00\u9032\u4f86\u5c31\u4fee\u4e86\u4e0d\u5c11\u9673\u5e74\u8001\u6771\u897f\uff08\u4e0d\u662f\u80fd\u8dd1\u5c31\u653e\u8457\u90a3\u7a2e\uff0c\u662f\u771f\u7684\u6709\u554f\u984c\uff09<br \/>\n\u96d6\u7136\u6211\u56e0\u70ba\u6211\u6c92\u5565\u7d93\u6b77\u6211\u6c92\u6709\u85aa\u8cc7\u958b\u5f88\u9ad8<br \/>\n\u4f46\u6211\u89ba\u5f97\u672a\u4f86\u8981\u518d\u5f80\u4e0a\u958b\u4e0d\u662f\u4e0d\u53ef\u80fd<\/p>\n<h2 id=\"\u7d50\u8a9e\"><a class=\"anchor\" href=\"#\u7d50\u8a9e\">#<\/a> \u7d50\u8a9e<\/h2>\n<p>\u6839\u64da\u6211\u6700\u8fd1\u7684\u5fd9\u788c\u72c0\u6cc1<br \/>\n\u4ee5\u53ca\u6211\u4e0b\u73ed\u4e4b\u5f8c\u5565\u90fd\u4e0d\u60f3\u5e79\u7684\u7cbe\u795e\u72c0\u614b<br \/>\n\u6211\u4e0d\u77e5\u9053\u6211\u4e0b\u6b21\u66f4\u65b0\u672d\u8a18\u662f\u5565\u6642\u5019\u4e86<br \/>\n\u4f46\u6211\u53ef\u4ee5\u8aaa\u6211\u624b\u908a\u6709\u5927\u6982\u4e03\u516b\u500b\u4f01\u5283\u5728\u9032\u884c<br \/>\n\u5176\u4e2d\u6709\u5927\u6982\u5169\u500b\u662f\u6587\u7ae0\uff0c\u4e4b\u5f8c\u61c9\u8a72\u6703\u5728blog\u4e0a\u767c\u51fa\u4f86<br \/>\n\u81f3\u65bc\u672d\u8a18\uff0c\u5c31\u770b\u6211\u6709\u6c92\u6709\u7a7a\u4e86\uff0c\u6211\u771f\u7684\u597d\u61f6\u5594<\/p>\n","tags":["Diary","Diary"]},{"id":"https:\/\/miyago9267.com\/Tutorial\/misc\/linux-minecraft\/","url":"https:\/\/miyago9267.com\/Tutorial\/misc\/linux-minecraft\/","title":"[\u6559\u5b78] 2025\u5e74\u5982\u4f55\u67b6\u8a2dMinecraft Java\u7248\u4f3a\u670d\u5668","date_published":"2025-09-11T16:00:00.000Z","content_html":"<p>\u5169\u767e\u5e74\u6c92\u6709\u5beb\u6559\u5b78\u4e86<br \/>\n\u8eab\u70ba\u4e00\u500b\u73a9\u4e86\u5c07\u8fd115\u5e74\u9ea5\u584a\u7684\u8001\u73a9\u5bb6<br \/>\n\u8b93\u6211\u4f86\u5206\u4eab\u5206\u4eab\u73fe\u5728\u57282025\u5e74\u958b\u9ea5\u584a\u4f3a\u670d\u5668\u7684\u5fc3\u5f97\u5427<\/p>\n<span id=\"more\"><\/span>\n<h2 id=\"\u524d\u8a00\"><a class=\"anchor\" href=\"#\u524d\u8a00\">#<\/a> \u524d\u8a00<\/h2>\n<p>\u672c\u7bc7\u6587\u7ae0\uff0c\u7b46\u8005\u6703\u5f9e\u6700\u7c21\u55ae\u7c97\u66b4\u7684\u65b9\u5f0f<br \/>\n\u76ee\u6a19\u65cf\u7fa4\u9650\u65bc\u60f3\u67b6\u8a2d\u5c0f\u578b\u79c1\u670d\u904a\u73a9\u7684\u4eba\u5011<br \/>\n\u5982\u679c\u4f60\u60f3\u8981\u7d93\u71df\u5927\u578b\u4f3a\u670d\u5668<br \/>\n\u4f60\u61c9\u8a72\u8981\u53bb\u554f\u554fLogoCat\u4e4b\u985e\u7684\u5927\u8001\u95c6<\/p>\n<h3 id=\"\u6d41\u7a0b\"><a class=\"anchor\" href=\"#\u6d41\u7a0b\">#<\/a> \u6d41\u7a0b<\/h3>\n<p>\u63a5\u4e0b\u4f86\u6211\u6703\u6839\u64da\u4f5c\u696d\u7cfb\u7d71\u3001\u904a\u6232\u5167\u7248\u672c<br \/>\n\u4e0d\u540c\u8f09\u5165\u5668\u3001\u4ee5\u53ca\u4e0d\u540c\u7684\u9700\u6c42\u5206\u958b\u4f86\u4ecb\u7d39<br \/>\n\u5927\u6982\u6703\u9577\u4e0b\u9762\u9019\u6a23<\/p>\n<ul>\n<li>\u74b0\u5883\u914d\u7f6e\n<ul>\n<li>Java\u6307\u5357<\/li>\n<li>\u7db2\u8def\u8a2d\u5b9a<\/li>\n<\/ul>\n<\/li>\n<li>windows<\/li>\n<li>linux &amp; MacOS<\/li>\n<li>Docker\n<ul>\n<li>\u81ea\u5df1\u5beb<\/li>\n<li>itzg<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3 id=\"\u5148\u5099\u689d\u4ef6\"><a class=\"anchor\" href=\"#\u5148\u5099\u689d\u4ef6\">#<\/a> \u5148\u5099\u689d\u4ef6<\/h3>\n<ul>\n<li>\u4f60\u6703\u7528\u96fb\u8166<\/li>\n<li>\u4f60\u6709\u8db3\u5920\u652f\u6490\u67b6\u8a2d\u4f3a\u670d\u5668\u7684\u786c\u9ad4\u8a2d\u5099<\/li>\n<li>\u4f60\u5bb6\u6709\u56fa\u5b9aIP\u7db2\u8def\uff08\u53ef\u9078\uff09<\/li>\n<li>\u4f60\u4e0d\u4ecb\u610f\u4f60\u7684\u96fb\u8166\u8981\u4e00\u76f4\u958b\u8457\uff08\u4f60\u6709\u4f3a\u670d\u5668\u7684\u8a71\u90a3\u5f88\u6b63\u5e38\uff09<\/li>\n<\/ul>\n<h2 id=\"\u6b63\u6587\"><a class=\"anchor\" href=\"#\u6b63\u6587\">#<\/a> \u6b63\u6587<\/h2>\n<h2 id=\"\u5171\u901a\u6027\u74b0\u5883\u8a2d\u5b9a\"><a class=\"anchor\" href=\"#\u5171\u901a\u6027\u74b0\u5883\u8a2d\u5b9a\">#<\/a> \u5171\u901a\u6027\u74b0\u5883\u8a2d\u5b9a<\/h2>\n<h3 id=\"java\u74b0\u5883\"><a class=\"anchor\" href=\"#java\u74b0\u5883\">#<\/a> Java\u74b0\u5883<\/h3>\n<p>\u9996\u5148\u6211\u5011\u8981\u77e5\u9053\uff0c\u4f60\u73a9\u7684Minecraft\u662f\u4ee5Java\u70ba\u57fa\u5e95\u5beb\u6210\u7684\uff08\u57fa\u5ca9\u7248\u662fC++\uff0c\u4f46\u4f60\u770b\u770b\u6211\u7684\u6a19\u984c\u731c\u731c\u6211\u8981\u6559\u5565\uff09\u3002<br \/>\n\u7121\u8ad6\u662f<code>\u5ba2\u6236\u7aef<\/code>\u6216\u8005\u662f<code>\u4f3a\u670d\u5668\u7aef<\/code>\uff0c\u6211\u5011\u90fd\u9700\u8981<code>Java Runtime<\/code>\u53bb\u57f7\u884c\u5b83\u3002<br \/>\n\u4ee5\u4e0b\u662f\u5c0d\u61c9\u7684\u7248\u672c<br \/>\n<br><\/p>\n<table>\n<thead>\n<tr>\n<th>Minecraft \u7248\u672c<\/th>\n<th>\u63a8\u85a6 Java \u7248\u672c<\/th>\n<th>\u5099\u8a3b<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Beta 1.8 ~ 1.5.2<\/td>\n<td>Java 6 ~ 7<\/td>\n<td>\u820a\u7248 Java\uff0c\u9664\u975e\u4f60\u8981\u73a9\u53e4\u65e9\u7248\u672c\u4e0d\u7136\u7528\u4e0d\u5230\u9019\u500b<\/td>\n<\/tr>\n<tr>\n<td>1.6.1 ~ 1.16.5<\/td>\n<td>Java 8<\/td>\n<td>\u652f\u63f4\u671f\u6700\u9577\u7684\u7248\u672c\uff0c1.16.5\u540c\u6642\u53ef\u4ee5\u7528Java 11<\/td>\n<\/tr>\n<tr>\n<td>1.17.x<\/td>\n<td>Java 16<\/td>\n<td>\u5f9e\u9019\u88e1\u958b\u59cb Java 8 \u6703\u555f\u52d5\u5931\u6557\u4e86<\/td>\n<\/tr>\n<tr>\n<td>1.18.x ~ 1.20.4<\/td>\n<td>Java 17<\/td>\n<td>\u5b98\u65b9\u4ee5 Java 17 \u505a\u70ba\u4e3b\u8981\u652f\u63f4<\/td>\n<\/tr>\n<tr>\n<td>1.20.5 +\uff08\u542b 1.21\uff09<\/td>\n<td>Java 21<\/td>\n<td>\u958b\u59cb\u8981\u6c42 Java 21\uff08LTS\uff09<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<br>\n<h4 id=\"\u5b89\u88ddjava\"><a class=\"anchor\" href=\"#\u5b89\u88ddjava\">#<\/a> \u5b89\u88ddJava<\/h4>\n<p>Minecraft\u7684\u5ba2\u6236\u7aef\uff0c\u7121\u8ad6\u662f\u5b98\u65b9\u555f\u52d5\u5668\u3001CurseForge\uff0c\u90fd\u81ea\u5e36Java\u7684Library\u3002<br \/>\n\u800cPrism\u6bd4\u8f03\u7279\u5225\uff0cWindows\u6709\u81ea\u5e36\u93e1\u50cf\u53ef\u4ee5\u5b89\u88dd\uff0c\u800cMac\u6216Linux\u90fd\u5f97\u81ea\u5df1\u88dd\u7136\u5f8c\u9032\u555f\u52d5\u5668\u5075\u6e2c\u3002<br \/>\n\u4e0d\u904e\u4f3a\u670d\u5668\u7684\u8a71\u5c31\u6c92\u6709\u4e86\uff0c\u9700\u8981\u81ea\u5df1\u5b89\u88dd\uff0c<s>\u6216\u8005\u76f4\u63a5\u53bb\u5077\u5b98\u65b9\u555f\u52d5\u5668\u88e1\u9762\u7684<\/s>\u3002<\/p>\n<p>\u60f3\u8981\u5b89\u88ddJava\u7684\u8a71\uff0c\u6211\u6703\u63a8\u85a6\u524d\u5f80<a href=\"https:\/\/www.oracle.com\/tw\/java\/technologies\/downloads\/archive\/\">Oracle\u7684\u5b98\u7db2<\/a>\u53bb\u4e0b\u8f09\u3002<br \/>\n\u5b89\u88dd<code>JDK<\/code>\u6216<code>JRE<\/code>\u90fd\u53ef\u4ee5\uff0c<code>JDK<\/code>\u96d6\u7136\u662f\u958b\u767c\u8005\u5de5\u5177\uff0c\u4f46\u4e5f\u5305\u542b\u4e86<code>JRE<\/code>\u3002\u4f60\u53ea\u662f\u8981\u73a9\u904a\u6232\u7684\u8a71\uff0c\u90a3\u5169\u8005\u90fd\u53ef\u4ee5\u3002<br \/>\n\u5982\u679c\u4f60\u627e\u5c0d\u7db2\u7ad9\uff08\u5176\u5be6\u4f60\u53ef\u4ee5\u76f4\u63a5\u9ede\u6211\u7d66\u7684\u9023\u7d50\u9032\u53bb\uff0c\u9664\u975e\u4ed6\u5931\u6548\u4e86\uff09\uff0c\u4f60\u6703\u770b\u5230\u4ee5\u4e0b\u7684\u756b\u9762<\/p>\n<p><img loading=\"lazy\" src=\"https:\/\/drive.miyago9267.com\/d\/home\/miyago\/Pictures\/link_gen\/0813\/Screenshot_2025-08-13%2010.38.56_3dVRm4.png\" alt=\"\" \/><\/p>\n<p>\u63a5\u8457\u53f3\u908a\u90a3\u6392\u627e\u5230\u4f60\u9700\u8981\u7684\u7248\u672c\uff0c\u7136\u5f8c\u9ede\u9032\u53bb\u4e4b\u5f8c\u6703\u770b\u5230\u6709\u5404\u7a2e\u4e0d\u540c\u7684\u4f5c\u696d\u7cfb\u7d71\u7248\u672c\u7d66\u4f60\u4e0b\u8f09<\/p>\n<p><img loading=\"lazy\" src=\"https:\/\/drive.miyago9267.com\/d\/home\/miyago\/Pictures\/link_gen\/0813\/Screenshot_2025-08-13%2011.33.10_UxYu9G.png\" alt=\"\" \/><\/p>\n<div class=\"note info\">\n<p>\u6ce8\u610f\uff0c\u53ea\u8981\u4f60\u9700\u8981\u88ddJava\u74b0\u5883\u5c31\u6703\u9700\u8981\u4f86\u9019\u500b\u9801\u9762\u627e\uff0c\u4e0d\u7ba1\u54ea\u500b\u4f5c\u696d\u7cfb\u7d71\u90fd\u4e00\u6a23<\/p>\n<\/div>\n<p>\u63a5\u8457\u6839\u64da\u4f60\u7684\u7cfb\u7d71\u67b6\u69cb\u6216\u4f5c\u696d\u7cfb\u7d71\u9078\u64c7\u7248\u672c<\/p>\n<div class=\"tab\" data-id=\"java_install\" data-title=\"Windows(\u5b89\u88dd\u7248)\">\n<p>\u5982\u679c\u4f60\u90fd\u73a9\u6700\u65b0\u7248<br \/>\n\u90a3\u53ef\u4ee5\u76f4\u63a5\u4e0b\u8f09<code>windows_installer<\/code>\u6216<code>windows_msi_installer<\/code><br \/>\n\u4e0b\u8f09\u4e4b\u5f8c\u4ed6\u5c31\u6703\u6709\u4e00\u500b\u53ef\u4ee5\u76f4\u63a5\u555f\u52d5\u7684\u5b89\u88dd\u6a94\uff0c\u9ede\u958b\u4f86\u5b89\u88dd\u5c31\u53ef\u4ee5\u5566<br \/>\n\u5b89\u88dd\u7684\u6642\u5019\u8981<strong>\u52fe\u9078\u300c\u52a0\u5165\u74b0\u5883\u8b8a\u6578\u300d<\/strong>\uff0c\u4e0d\u7136\u4f60\u53ef\u80fd\u6703\u627e\u4e0d\u5230\u8def\u5f91\u5594\uff5e<\/p>\n<\/div>\n<div class=\"tab\" data-id=\"java_install\" data-title=\"Windows(\u6253\u5305\u7248)\">\n<p>\u5982\u679c\u4f60\u60f3\u8981\u5728\u96fb\u8166\u5b58\u5728\u591a\u500bJava\u7248\u672c\u7684\u74b0\u5883<br \/>\n\u90a3\u5c31\u5efa\u8b70\u9078<code>Windows Compressed Archive<\/code>\u7248\u672c\uff0c\u53ef\u4ee5\u81ea\u5df1\u89e3\u58d3\u7e2e\u5230\u81ea\u5df1\u559c\u6b61\u7684\u8def\u5f91\u505a\u4f7f\u7528<br \/>\n\u6211\u81ea\u5df1\u7684\u7fd2\u6163\u662f\u958b\u4e00\u500b<code>C:\/JavaRuntime\/<\/code>\u8cc7\u6599\u593e\u4e26\u4e1f\u5728\u5e95\u4e0b<br \/>\n\u4e26\u6839\u64da\u4e0d\u540c\u7248\u672c\u7684\u8cc7\u6599\u593e\u4f86\u7ba1\u7406<br \/>\n\u7136\u5f8c\u8981\u4f7f\u7528\u7684\u6642\u5019\u76f4\u63a5\u5f15\u7528\u9019\u500b\u8def\u5f91\u5373\u53ef<\/p>\n<\/div>\n<div class=\"tab\" data-id=\"java_install\" data-title=\"MacOS\">\n<p>MacOS\u8207Windows\u7684\u4e00\u6a23\uff0c\u5206\u6210\u6253\u5305\u6a94\u548c\u5b89\u88dd\u6a94<br \/>\n<code>Install<\/code>\u4e00\u6a23\u662f\u5b89\u88dd\u6a94\uff0c<code>Compressed Archive<\/code>\u4e00\u6a23\u662f\u6253\u5305\u6a94<br \/>\n\u9700\u8981\u6ce8\u610f\u7684\u662f\uff0c\u8acb\u78ba\u8a8d\u81ea\u5df1\u7684\u96fb\u8166\u67b6\u69cb\u662f<code>Intel<\/code>\u9084\u662f<code>Apple Silicon<\/code>\u7684\u6676\u7247<br \/>\n\u5982\u679c\u4f60\u662fM1~M4\u7684\u7cfb\u5217\uff0c\u8acb\u9078\u64c7<code>Arm64<\/code>\u7684\u7248\u672c\uff08\u5176\u5be6\u53ef\u4ee5Rosseta\u4f46\u8f49\u8b6f\u6703\u6709\u554f\u984c\uff09<br \/>\n\u5982\u679c\u662f\u8001\u7248Intel\u7684\u6676\u7247\uff0c\u8981\u9078\u64c7<code>x64<\/code>\u7684\u7248\u672c\u4e0d\u7136\u6703\u76f4\u63a5\u8dd1\u4e0d\u52d5\u5594<\/p>\n<\/div>\n<div class=\"tab\" data-id=\"java_install\" data-title=\"Linux \u5957\u4ef6\u7ba1\u7406\u5668\">\n<p>Linux\u7684\u8a71\u5c31\u6bd4\u8f03\u9ebb\u7169\u4e00\u9ede\uff0c\u56e0\u70ba\u4e0d\u540c\u7684\u767c\u884c\u7248\u5b89\u88dd\u65b9\u5f0f\u90fd\u4e0d\u592a\u4e00\u6a23<br \/>\n\u4e0d\u904e\u5927\u81f4\u4e0a\u53ef\u4ee5\u5206\u70ba\u5169\u7a2e\u65b9\u5f0f<\/p>\n<ol>\n<li>\u4f7f\u7528\u7cfb\u7d71\u7684\u5957\u4ef6\u7ba1\u7406\u5de5\u5177\u5b89\u88dd\uff08\u6211\u4e0d\u5efa\u8b70\uff0c\u74b0\u5883\u6703\u6df7\u5728\u4e00\u8d77\uff09<\/li>\n<li>\u624b\u52d5\u4e0b\u8f09\u4e26\u5b89\u88dd<\/li>\n<\/ol>\n<p>\u5982\u679c\u8981\u7528\u5957\u4ef6\u7ba1\u7406\u5668<br \/>\n\u6839\u64da\u4f60\u7684\u4f5c\u696d\u7cfb\u7d71\u4f7f\u7528\u4f60\u7684\u5957\u4ef6\u7ba1\u7406\u5668\u5b89\u88dd<code>openjdk<\/code><\/p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"># \u4ee5debian\u9ad4\u7cfb\u70ba\u4f8b<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">sudo<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> apt-get<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> install<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> openjdk-17-jdk<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<p>\u63a5\u8457\u6839\u64da\u9700\u6c42\u4f86\u6dfb\u52a0\u74b0\u5883\u8b8a\u6578\uff0c\u8b93\u4f60\u53ef\u4ee5\u4f7f\u7528<code>java<\/code>\u76f4\u63a5\u547c\u53eb\u7a0b\u5f0f\u672c\u9ad4<\/p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"># \u76f4\u63a5\u5beb\u6b7b\u74b0\u5883\u8b8a\u6578<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">echo<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\"> '<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">export JAVA_HOME=\/usr\/local\/jdk-17<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">'<\/span><span style=\"color:#AB5959;--shiki-dark:#CB7676\"> >><\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> ~\/.bashrc<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">echo<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\"> '<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">export PATH=$JAVA_HOME\/bin:$PATH<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">'<\/span><span style=\"color:#AB5959;--shiki-dark:#CB7676\"> >><\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> ~\/.bashrc<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">source<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> ~\/.bashrc<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<\/div>\n<div class=\"tab\" data-id=\"java_install\" data-title=\"Linux \u624b\u52d5\u5b89\u88dd\">\n<p>\u5982\u679c\u4f60\u60f3\u8981\u624b\u52d5\u5b89\u88dd\uff0c\u53ef\u4ee5\u5728\u5b98\u7db2\u4e0b\u8f09\u7b26\u5408\u4f60\u7248\u672c\u7684<code>Compressed Archive<\/code><br \/>\n\u7136\u5f8c\u89e3\u58d3\u7e2e\u5230\u4f60\u60f3\u8981\u7684\u8def\u5f91\u5373\u53ef<\/p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"># \u4ee5jdk17\u70ba\u4f8b<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">tar<\/span><span style=\"color:#A65E2B;--shiki-dark:#C99076\"> -xvf<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> jdk-17_linux-x64_bin.tar.gz<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">sudo<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> mv<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> jdk-17<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> \/etc\/java-runtime\/jdk-17<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<p>\u63a5\u8457\u6839\u64da\u4f60\u6709\u6c92\u6709\u8981\u4f7f\u7528\u591a\u7248\u672c\u4f86\u8a2d\u5b9a\u74b0\u5883\u8b8a\u6578<br \/>\n\u5982\u679c\u4f60\u8ddf\u6211\u4e00\u6a23\u662f\u7528\u76ee\u9304\u53bb\u5206\u985e\uff0c\u90a3\u53ef\u80fd\u8981\u81ea\u5df1alias\u4e00\u4e0b\u7248\u672c<\/p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"># \u6216\u8005\u8a2d\u5b9aalias\u4f86\u63a7\u7ba1\u7248\u672c<\/span><\/span>\n<span class=\"line\"><span style=\"color:#AB5959;--shiki-dark:#CB7676\">alias<\/span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> java17<\/span><span style=\"color:#999999;--shiki-dark:#666666\">=<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">\/etc\/java-runtime\/jdk-17\/bin\/java<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><\/span>\n<span class=\"line\"><span style=\"color:#AB5959;--shiki-dark:#CB7676\">alias<\/span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> java21<\/span><span style=\"color:#999999;--shiki-dark:#666666\">=<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">\/etc\/java-runtime\/jdk-21\/bin\/java<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<\/div>\n<h4 id=\"\u7db2\u8def\u74b0\u5883\"><a class=\"anchor\" href=\"#\u7db2\u8def\u74b0\u5883\">#<\/a> \u7db2\u8def\u74b0\u5883<\/h4>\n<p>\u63a5\u4e0b\u4f86\u6211\u5011\u8981\u8a2d\u5b9a\u4f3a\u670d\u5668\u7684\u7db2\u8def\u74b0\u5883\uff0c\u9019\u90e8\u5206\u6703\u56e0\u70ba\u4f60\u662f\u7528\u4ec0\u9ebc\u6a23\u7684\u7db2\u8def\u74b0\u5883\u800c\u6709\u6240\u4e0d\u540c<\/p>\n<p>\u6839\u64da\u4f60\u7684\u9700\u6c42\u5462\uff0c\u5927\u81f4\u4e0a\u53ef\u4ee5\u5206\u70ba\u5169\u500b\u72c0\u6cc1<\/p>\n<ul>\n<li>\u53ea\u60f3\u8ddf\u597d\u670b\u53cb\u73a9\uff0c\u800c\u4e14\u4f60\u670b\u53cb\u4e0d\u4ecb\u610f\u53ea\u6709\u4f60\u958b\u8457\u624d\u80fd\u73a9 -&gt; \u5167\u7db2\u7a7f\u900f<\/li>\n<li>\u60f3\u958b\u7d66\u5927\u5bb6\u4e00\u8d77\u73a9\uff0c\u5305\u62ec\u4f46\u4e0d\u9650\u65bc\u964c\u751f\u4eba\u3002 -&gt; \u975c\u614bIP + \u7aef\u53e3\u8f49\u767c<\/li>\n<\/ul>\n<h5 id=\"\u5167\u7db2\u7a7f\u900f\"><a class=\"anchor\" href=\"#\u5167\u7db2\u7a7f\u900f\">#<\/a> \u5167\u7db2\u7a7f\u900f<\/h5>\n<p>\u7121\u8ad6\u4f60\u8981\u4f7f\u7528\u300c\u958b\u767c\u81f3\u5c40\u57df\u7db2\u300d\uff0c\u9084\u662f\u81ea\u5df1\u67b6\u8a2d\u4f3a\u670d\u5668\u57f7\u884c\u6a94<br \/>\n\u4f60\u90fd\u53ef\u4ee5\u53ea\u4f7f\u7528VPN\u9023\u7dda\u4f86\u9054\u6210<span class=\"spoiler\" title=\"\u4f60\u77e5\u9053\u5f97\u592a\u591a\u4e86\">\u96d6\u7136\u672c\u4eba\u8d85\u8a0e\u53ad\u9019\u500b\u65b9\u5f0f<\/span><\/p>\n<p>\u60f3\u8981\u5728\u672c\u5730\u67b6\u8a2dVPN\u7684\u8a71<br \/>\n\u4f60\u53ef\u4ee5\u4f7f\u7528<code>ZeroTier<\/code>\u3001<code>Hamachi<\/code>\u3001<code>Radmin VPN<\/code>\u7b49\u8edf\u9ad4\u4f86\u9054\u6210<br \/>\n\u53ef\u4ee5\u4e0b\u8f09\u4efb\u610f\u4e00\u500b\u8edf\u9ad4\u4f86\u67b6\u8a2d\u4e00\u500b\u5340\u57df\u7db2\u8def<br \/>\n\u4e26\u8b93\u4f60\u7684\u670b\u53cb\u52a0\u5165\u9019\u500b\u7db2\u8def\uff0c\u9054\u5230\u5167\u7db2\u7a7f\u900f\u7684\u6548\u679c<br \/>\n\u9019\u6642\u5019\u7db2\u8def\u5c31\u6703\u628a\u4f60\u5011\u5224\u5b9a\u5728\u540c\u4e00\u500b\u5340\u7db2\u5167\uff0c\u5c31\u53ef\u4ee5\u9023\u7dda\u9032\u884c\u904a\u73a9\u5566<\/p>\n<details class=\"primary\"><summary>\u5404\u724cVPN\u6559\u5b78\u8207\u6bd4\u8f03<\/summary><div>\n<div class=\"tab\" data-id=\"vpn_tutorial\" data-title=\"ZeroTier\">\n<p>\u4ee5ZeroTier\u70ba\u4f8b<\/p>\n<ol>\n<li>\u524d\u5f80<a href=\"https:\/\/www.zerotier.com\/\">ZeroTier\u5b98\u7db2<\/a><\/li>\n<li>\u8a3b\u518a\u5e33\u865f\u4e26\u767b\u5165<\/li>\n<li>\u5efa\u7acb\u4e00\u500b\u65b0\u7684\u7db2\u8def<\/li>\n<li>\u4e0b\u8f09\u4e26\u5b89\u88ddZeroTier One\u8edf\u9ad4<\/li>\n<li>\u555f\u52d5ZeroTier One\u4e26\u52a0\u5165\u4f60\u525b\u525b\u5efa\u7acb\u7684\u7db2\u8def<\/li>\n<li>\u5728ZeroTier\u7684\u7db2\u9801\u4e0a\uff0c\u5141\u8a31\u4f60\u7684\u88dd\u7f6e\u52a0\u5165\u7db2\u8def<\/li>\n<li>\u4f60\u7684\u670b\u53cb\u4e5f\u9700\u8981\u91cd\u8907\u6b65\u9a5f4-6\u4f86\u52a0\u5165\u540c\u4e00\u500b\u7db2\u8def<\/li>\n<li>\u53d6\u5f97ZeroTier\u5206\u914d\u7d66\u4f60\u7684\u865b\u64ecIP<\/li>\n<li>\u5728Minecraft\u4e2d\u4f7f\u7528\u9019\u500b\u865b\u64ecIP\u4f86\u9023\u7dda\u4f3a\u670d\u5668<\/li>\n<li>\u958b\u73a9\uff01<\/li>\n<\/ol>\n<\/div>\n<div class=\"tab\" data-id=\"vpn_tutorial\" data-title=\"Hamachi\">\n<ol>\n<li>\u524d\u5f80<a href=\"https:\/\/www.vpn.net\/\">Hamachi\u5b98\u7db2<\/a><\/li>\n<li>\u4e0b\u8f09\u4e26\u5b89\u88ddHamachi\u8edf\u9ad4<\/li>\n<li>\u555f\u52d5Hamachi\u4e26\u5efa\u7acb\u4e00\u500b\u65b0\u7684\u7db2\u8def<\/li>\n<li>\u4f60\u7684\u670b\u53cb\u9700\u8981\u4e0b\u8f09\u4e26\u5b89\u88ddHamachi\uff0c\u7136\u5f8c\u52a0\u5165\u4f60\u5efa\u7acb\u7684\u7db2\u8def<\/li>\n<li>\u53d6\u5f97Hamachi\u5206\u914d\u7d66\u4f60\u7684\u865b\u64ecIP<\/li>\n<li>\u5728Minecraft\u4e2d\u4f7f\u7528\u9019\u500b\u865b\u64ecIP\u4f86\u9023\u7dda\u4f3a\u670d\u5668<\/li>\n<li>\u958b\u73a9\uff01<br \/>\n\uff08\u8ddf\u9694\u58c1Radmin\u5dee\u4e0d\u591a\uff0c\u53ea\u5dee\u5728\u9019\u500b\u8981\u8a3b\u518a\u5e33\u865f\uff09<\/li>\n<\/ol>\n<\/div>\n<div class=\"tab\" data-id=\"vpn_tutorial\" data-title=\"Radmin VPN\">\n<ol>\n<li>\u524d\u5f80<a href=\"https:\/\/www.radmin-vpn.com\/\">Radmin VPN\u5b98\u7db2<\/a><\/li>\n<li>\u4e0b\u8f09\u4e26\u5b89\u88ddRadmin VPN\u8edf\u9ad4<\/li>\n<li>\u555f\u52d5Radmin VPN\u4e26\u5efa\u7acb\u4e00\u500b\u65b0\u7684\u7db2\u8def<\/li>\n<li>\u4f60\u7684\u670b\u53cb\u9700\u8981\u4e0b\u8f09\u4e26\u5b89\u88ddRadmin VPN\uff0c\u7136\u5f8c\u52a0\u5165\u4f60\u5efa\u7acb\u7684\u7db2\u8def<\/li>\n<li>\u53d6\u5f97Radmin VPN\u5206\u914d\u7d66\u4f60\u7684\u865b\u64ecIP<\/li>\n<li>\u5728Minecraft\u4e2d\u4f7f\u7528\u9019\u500b\u865b\u64ecIP\u4f86\u9023\u7dda\u4f3a\u670d\u5668<\/li>\n<li>\u958b\u73a9\uff01<br \/>\n\uff08\u8ddf\u9694\u58c1Hamachi\u5dee\u4e0d\u591a\uff0c\u53ea\u5dee\u5728\u9019\u500b\u4e0d\u7528\u8a3b\u518a\u5e33\u865f\uff09<\/li>\n<\/ol>\n<\/div>\n<\/div><\/details>\n<div class=\"note info\">\n<p>\u6ce8\u610f\uff0cRadmin\u548cHamachi\u90fd\u53ea\u6709Windows\u7248\u672c<br \/>\n\u53ea\u6709ZeroTier\u662f\u8de8\u5e73\u53f0\u7684<\/p>\n<\/div>\n<h5 id=\"\u975c\u614bip\u8a2d\u5b9a\"><a class=\"anchor\" href=\"#\u975c\u614bip\u8a2d\u5b9a\">#<\/a> \u975c\u614bIP\u8a2d\u5b9a<\/h5>\n<p>\u5982\u679c\u4f60\u60f3\u8981\u8b93\u5916\u9762\u7684\u4eba\u90fd\u80fd\u9023\u9032\u4f86<br \/>\n\u90a3\u4f60\u9700\u8981\u6709\u4e00\u500b\u56fa\u5b9a\u7684\u516c\u7db2IP\uff08\u6216\u8005\u81f3\u5c11\u77e5\u9053\u4f60\u7684\u516c\u7db2IP\uff09<br \/>\n\u7136\u5f8c\u5728\u4f60\u7684\u8def\u7531\u5668\u4e0a\u505a\u7aef\u53e3\u8f49\u767c\uff08Port Forwarding\uff09<\/p>\n<p>\u7c21\u55ae\u8b1b\u5c31\u662f\u544a\u8a34\u4f60\u7684\u8def\u7531\u5668<br \/>\n\u300c\u5982\u679c\u6709\u4eba\u5f9e\u5916\u9762\u9023\u5230\u6211\u768425565 port\uff0c\u8acb\u5e6b\u6211\u8f49\u5230\u6211\u9019\u53f0\u96fb\u8166\u300d<\/p>\n<p>\u5177\u9ad4\u7684\u8a2d\u5b9a\u65b9\u5f0f\u56e0\u8def\u7531\u5668\u54c1\u724c\u800c\u7570<br \/>\n\u4f46\u5927\u81f4\u4e0a\u7684\u6d41\u7a0b\u662f\uff1a<\/p>\n<ol>\n<li>\u9032\u5165\u8def\u7531\u5668\u7ba1\u7406\u4ecb\u9762\uff08\u901a\u5e38\u662f<code>192.168.1.1<\/code>\u6216<code>192.168.0.1<\/code>\uff09<\/li>\n<li>\u627e\u5230\u300cPort Forwarding\u300d\u6216\u300c\u865b\u64ec\u4f3a\u670d\u5668\u300d\u4e4b\u985e\u7684\u8a2d\u5b9a<\/li>\n<li>\u65b0\u589e\u4e00\u689d\u898f\u5247\uff1a\u5916\u90e8Port <code>25565<\/code> -&gt; \u5167\u90e8IP <code>\u4f60\u7684\u96fb\u8166IP<\/code> -&gt; \u5167\u90e8Port <code>25565<\/code> -&gt; TCP<\/li>\n<li>\u5132\u5b58\u4e26\u5957\u7528<\/li>\n<\/ol>\n<div class=\"note info\">\n<p>\u5982\u679c\u4f60\u5bb6\u662f\u7528\u4e2d\u83ef\u96fb\u4fe1\u7684\u5c0f\u70cf\u9f9c<br \/>\n\u4f60\u53ef\u80fd\u9700\u8981\u5148\u628a\u5b83\u8a2d\u5b9a\u6210\u6a4b\u63a5\u6a21\u5f0f\uff08Bridge Mode\uff09<br \/>\n\u7136\u5f8c\u8b93\u4f60\u81ea\u5df1\u7684\u8def\u7531\u5668\u53bb\u64a5\u865f<br \/>\n\u4e0d\u7136\u4f60\u6703\u5361\u5728\u5169\u5c64NAT\u5f8c\u9762 \u5916\u9762\u7684\u4eba\u600e\u6a23\u90fd\u9023\u4e0d\u9032\u4f86<\/p>\n<\/div>\n<p>\u5982\u679c\u4f60\u6c92\u6709\u56fa\u5b9aIP\u7684\u8a71<br \/>\n\u53ef\u4ee5\u642d\u914dDDNS\u670d\u52d9\uff08\u50cfNo-IP\u6216DuckDNS\uff09<br \/>\n\u5b83\u6703\u5e6b\u4f60\u628a\u4e00\u500b\u56fa\u5b9a\u7684\u57df\u540d\u6307\u5411\u4f60\u6d6e\u52d5\u7684IP<br \/>\n\u9019\u6a23\u5225\u4eba\u53ea\u8981\u8a18\u4f60\u7684\u57df\u540d\u5c31\u80fd\u9023\u4e86<\/p>\n<h2 id=\"\u5be6\u969b\u67b6\u8a2d\"><a class=\"anchor\" href=\"#\u5be6\u969b\u67b6\u8a2d\">#<\/a> \u5be6\u969b\u67b6\u8a2d<\/h2>\n<p>\u6211\u5011\u6703\u5148\u4ee5<em>\u539f\u7248<\/em>\u70ba\u7bc4\u4f8b<br \/>\n\u4ecb\u7d39\u4e0d\u540c\u4f5c\u696d\u7cfb\u7d71\u4e0b\u7684\u555f\u52d5\u8ddf\u8a2d\u5b9a\u65b9\u5f0f<br \/>\n\u7531\u65bcMod\u7248\u7684\u4f3a\u670d\u5668\u67b6\u8a2d\u65b9\u5f0f\u5728\u4e0d\u540cOS\u4e0b\u57fa\u672c\u5927\u540c\u5c0f\u7570<br \/>\n\u56e0\u6b64\u4ecb\u7d39\u5b8c\u539f\u7248\u5f8c\u6703\u55ae\u7368\u62bd\u51fa\u4f86\u8aaa\u660e<\/p>\n<h3 id=\"windows\u4e0b\u5982\u4f55\u67b6\u8a2dminecraft\u4f3a\u670d\u5668\"><a class=\"anchor\" href=\"#windows\u4e0b\u5982\u4f55\u67b6\u8a2dminecraft\u4f3a\u670d\u5668\">#<\/a> Windows\u4e0b\u5982\u4f55\u67b6\u8a2dMinecraft\u4f3a\u670d\u5668<\/h3>\n<div class=\"note info\">\n<p>\u9996\u5148\u5148\u4e0b\u500b\u63d0\u793a\uff0c\u5982\u679c\u4f60\u7684\u96fb\u8166\u6709\u8db3\u5920\u7684\u8a18\u61b6\u9ad4\u7684\u8a71<br \/>\n\u6211\u6703\u5efa\u8b70\u4f60\u8dd1Docker\uff0c\u9019\u6a23\u4e0d\u50c5\u53ef\u4ee5\u7c21\u5316\u8a31\u591a\u74b0\u5883\u8a2d\u5b9a\u7684\u554f\u984c<br \/>\n\u9084\u53ef\u4ee5\u8b93\u4f60\u7684\u591a\u74b0\u5883\u4e0d\u6703\u4e92\u76f8\u5e72\u64fe\u4e92\u4e32<\/p>\n<\/div>\n<p>\u5982\u679c\u4f60\u524d\u9762\u7684Java\u74b0\u5883\u548c\u7db2\u8def\u74b0\u5883\u90fd\u8a2d\u5b9a\u597d\u4e86\u7684\u8a71<br \/>\n\u90a3Windows\u4e0b\u67b6\u8a2d\u4f3a\u670d\u5668\u53ef\u4ee5\u8aaa\u76f8\u7576\u7c21\u55ae<\/p>\n<p>\u4ee5\u539f\u7248\u70ba\u7bc4\u4f8b\uff0c\u6253\u958b\u4f60\u7684\u300c\u539f\u7248\u300dMinecraft\u555f\u52d5\u5668<br \/>\n\u5728\u300c\u5b89\u88dd\u300d\u9801\u7c64\u4e2d\uff0c\u9078\u64c7\u4f60\u60f3\u8981\u7684\u7248\u672c<br \/>\n\u7248\u672c\u7684\u53f3\u4e0b\u89d2\u61c9\u8a72\u6703\u6709\u4e00\u500b\u5c0f\u5c0f\u7684\u300c\u4f3a\u670d\u5668\u300d\u5b57\u6a23<br \/>\n\u9ede\u64ca\u5373\u53ef\u4e0b\u8f09\u5c0d\u61c9\u7248\u672c\u7684\u4f3a\u670d\u5668<code>.jar<\/code>\u6a94\u6848<\/p>\n<p>\u4e0b\u8f09\u5b8c\u6210\u5f8c<br \/>\n\u5728\u4f60\u60f3\u8981\u7684\u5730\u65b9\uff0c\u5275\u5efa\u4e00\u500b\u65b0\u8cc7\u6599\u593e\uff08\u6a94\u6848\u8def\u5f91\u76e1\u91cf\u4e0d\u8981\u6709\u975e\u82f1\u6578\u5b57\u5143\uff09<br \/>\n\u63a5\u8457\u628a\u525b\u525b\u7684<code>.jar<\/code>\u6a94\u6848\u4e1f\u9032\u53bb<br \/>\n\u7136\u5f8c\u5728\u8a72\u8cc7\u6599\u593e\u5167\uff0c\u6309\u4f4f<code>Shift<\/code>\u9375\u4e26\u53f3\u9375<br \/>\n\u9078\u64c7\u300c\u5728\u6b64\u8655\u958b\u555f\u547d\u4ee4\u8996\u7a97\u300d\u6216\u300c\u5728\u6b64\u8655\u958b\u555fPowerShell\u8996\u7a97\u300d<br \/>\n\u63a5\u8457\u8f38\u5165\u4ee5\u4e0b\u6307\u4ee4\u4f86\u555f\u52d5\u4f3a\u670d\u5668<\/p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">java<\/span><span style=\"color:#A65E2B;--shiki-dark:#C99076\"> -Xmx2G<\/span><span style=\"color:#A65E2B;--shiki-dark:#C99076\"> -Xms1G<\/span><span style=\"color:#A65E2B;--shiki-dark:#C99076\"> -jar<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> server.jar<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> nogui<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<div class=\"note info\">\n<p>\u5176\u4e2d<br \/>\n<code>-Xmx2G<\/code>\u4ee3\u8868\u6700\u5927\u8a18\u61b6\u9ad4\u4f7f\u7528\u91cf\u70ba2GB<br \/>\n<code>-Xms1G<\/code>\u4ee3\u8868\u555f\u52d5\u6642\u5206\u914d1GB\u8a18\u61b6\u9ad4<\/p>\n<\/div>\n<details class=\"primary\"><summary>\u4e0d\u60f3\u6bcf\u6b21\u90fd\u6253\u6307\u4ee4\u7684\u66ff\u4ee3\u65b9\u6848<\/summary><div>\n<p>\u5982\u679c\u4f60\u4e0d\u60f3\u6bcf\u6b21\u90fd\u6253\u6307\u4ee4\u555f\u52d5\u4f3a\u670d\u5668<br \/>\n\u4f60\u53ef\u4ee5\u5728\u8a72\u8cc7\u6599\u593e\u5167\u65b0\u5efa\u4e00\u500b<code>start.bat<\/code>\u7684\u6279\u6b21\u6a94<br \/>\n\uff08\u5982\u679c\u4f60\u4e0d\u6703\u5efa\u7acb\u7684\u8a71\uff0c\u4f60\u53ef\u4ee5\u5148\u300c\u65b0\u5efa\u6587\u5b57\u6587\u4ef6\u300d\u7136\u5f8c\u518d\u628a\u526f\u6a94\u540d\u6539\u6389\uff09<br \/>\n\u7136\u5f8c\u628a\u4e0a\u9762\u7684\u6307\u4ee4\u8cbc\u9032\u53bb\u4e26\u5132\u5b58<br \/>\n\u9019\u6a23\u4f60\u53ea\u8981\u96d9\u64ca\u9019\u500b<code>start.bat<\/code>\u6a94\u6848\u5c31\u53ef\u4ee5\u555f\u52d5\u4f3a\u670d\u5668\u4e86<br \/>\n\u7576\u7136\u5982\u679c\u4f60\u7684java\u74b0\u5883\u662f\u6b63\u5e38\u7684\uff0c\u4f60\u751a\u81f3\u76f4\u63a5\u96d9\u64ca<code>server.jar<\/code>\u6a94\u6848\u4e5f\u53ef\u4ee5\u555f\u52d5\u4f3a\u670d\u5668<\/p>\n<\/div><\/details>\n<p>\u7dca\u63a5\u8457\uff0c\u4f60\u5c31\u6703\u770b\u5230\u4f3a\u670d\u5668\u555f\u52d5\u5931\u6557\u95dc\u6389<br \/>\n\u6b38\u5225\u7dca\u5f35\uff0c\u6211\u6c92\u5728\u800d\u4f60\uff0c\u771f\u7684\u662f\u9019\u6a23\u64cd\u4f5c\u7684<br \/>\n\u4e4b\u6240\u4ee5\u6703\u505c\u4f4f\u662f\u56e0\u70ba\u6211\u5011\u5728\u7b2c\u4e00\u6b21\u555f\u52d5\u7684\u6642\u5019<br \/>\n\u4f3a\u670d\u5668\u6703\u81ea\u52d5\u751f\u6210\u4e00\u4e9b\u5fc5\u8981\u7684\u6a94\u6848<br \/>\n\u5176\u4e2d\u5c31\u5305\u542b\u4e86\u4e00\u500b<code>eula.txt<\/code>\u7684\u6a94\u6848<br \/>\n\u9019\u500b\u662f\u5b98\u65b9\u7684\u300c\u4f7f\u7528\u8005\u6388\u6b0a\u5354\u8b70\u300d<br \/>\n\u4f60\u9700\u8981\u6253\u958b\u9019\u500b\u6a94\u6848\uff0c\u7136\u5f8c\u628a\u88e1\u9762\u7684<code>eula=false<\/code>\u6539\u6210<code>eula=true<\/code><br \/>\n\u9019\u6a23\u4ee3\u8868\u4f60\u540c\u610f\u9019\u500b\u5354\u8b70<br \/>\n\u5132\u5b58\u5f8c\u518d\u6b21\u555f\u52d5\u4f3a\u670d\u5668<br \/>\n\u9019\u6b21\u4f3a\u670d\u5668\u5c31\u6703\u9806\u5229\u555f\u52d5\u5566<br \/>\n\u4f3a\u670d\u5668\u6703\u5728\u4f60\u672c\u5730\u7684<code>25565<\/code>port\u76e3\u807d<br \/>\n\u5225\u4eba\u5c31\u53ef\u4ee5\u900f\u904e\u4f60\u7684\u5167\u7db2IP+port\u6216\u8005\u5916\u7db2port forward\u9023\u9032\u4f86\u56c9<\/p>\n<h3 id=\"\u4f7f\u7528-linux\u6216macos\u67b6\u8a2dminecraft\u4f3a\u670d\u5668\"><a class=\"anchor\" href=\"#\u4f7f\u7528-linux\u6216macos\u67b6\u8a2dminecraft\u4f3a\u670d\u5668\">#<\/a> \u4f7f\u7528 Linux\u6216MacOS\u67b6\u8a2dMinecraft\u4f3a\u670d\u5668<\/h3>\n<div class=\"note info\">\n<p>\u518d\u6b21\u63d0\u793a\uff0c\u4f60\u90fd\u7528Linux\u4e86<br \/>\n\u6211\u60f3\u518d\u88dd\u500bDocker\u4f86\u8dd1\u4e0d\u6703\u592a\u96e3\u7684<br \/>\n\u80fd\u5920\u8b93\u4f60\u66f4\u8f15\u9b06\u7684<\/p>\n<\/div>\n<p>Linux\u548cMacOS\u7684\u67b6\u8a2d\u65b9\u5f0f\u57fa\u672c\u4e0a\u4e00\u6a23<br \/>\n\u7562\u7adf\u90fd\u662f\u8d70\u7d42\u7aef\u6a5f\u64cd\u4f5c<\/p>\n<p>\u9996\u5148\u78ba\u8a8d\u4f60\u7684Java\u74b0\u5883\u662f\u6b63\u5e38\u7684<\/p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">java<\/span><span style=\"color:#A65E2B;--shiki-dark:#C99076\"> -version<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<p>\u63a5\u8457\u53bbMojang\u7684\u5b98\u7db2\u6216\u8005\u4f60\u7684\u555f\u52d5\u5668\u4e0b\u8f09\u5c0d\u61c9\u7248\u672c\u7684<code>server.jar<\/code><br \/>\n\u5982\u679c\u4f60\u61f6\u5f97\u958b\u700f\u89bd\u5668 \u4e5f\u53ef\u4ee5\u76f4\u63a5\u7528wget\u6293<\/p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"># \u4ee51.21.4\u70ba\u4f8b\uff0c\u8acb\u81ea\u884c\u66ff\u63db\u7248\u672c\u9023\u7d50<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">mkdir<\/span><span style=\"color:#A65E2B;--shiki-dark:#C99076\"> -p<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> ~\/minecraft-server<\/span><span style=\"color:#999999;--shiki-dark:#666666\"> &#x26;&#x26;<\/span><span style=\"color:#998418;--shiki-dark:#B8A965\"> cd<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> ~\/minecraft-server<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">wget<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> https:\/\/piston-data.mojang.com\/v1\/objects\/4707d00eb834b446575d89a61a11b5d548d8c001\/server.jar<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<div class=\"note info\">\n<p>\u4e0a\u9762\u7684\u9023\u7d50\u50c5\u4f9b\u53c3\u8003<br \/>\n\u5be6\u969b\u7684\u4e0b\u8f09\u9023\u7d50\u8acb\u53bb<a href=\"https:\/\/www.minecraft.net\/en-us\/download\/server\">Minecraft\u5b98\u7db2<\/a>\u53d6\u5f97<br \/>\n\u6bcf\u500b\u7248\u672c\u7684hash\u90fd\u4e0d\u4e00\u6a23 \u4e0d\u8981\u50bb\u50bb\u7684\u8907\u88fd\u6211\u7684\u9023\u7d50<\/p>\n<\/div>\n<p>\u63a5\u8457\u8ddfWindows\u4e00\u6a23 \u7b2c\u4e00\u6b21\u555f\u52d5\u8b93\u5b83\u751f\u6210\u8a2d\u5b9a\u6a94<\/p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">java<\/span><span style=\"color:#A65E2B;--shiki-dark:#C99076\"> -Xmx2G<\/span><span style=\"color:#A65E2B;--shiki-dark:#C99076\"> -Xms1G<\/span><span style=\"color:#A65E2B;--shiki-dark:#C99076\"> -jar<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> server.jar<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> nogui<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<p>\u4ed6\u6703\u8dd1\u4e00\u4e0b\u7136\u5f8c\u505c\u4f4f \u56e0\u70ba\u4f60\u9084\u6c92\u540c\u610feula<br \/>\n\u628a<code>eula.txt<\/code>\u88e1\u9762\u7684<code>false<\/code>\u6539\u6210<code>true<\/code><\/p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">sed<\/span><span style=\"color:#A65E2B;--shiki-dark:#C99076\"> -i<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\"> '<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">s\/eula=false\/eula=true\/<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">'<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> eula.txt<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<p>\u6539\u5b8c\u518d\u8dd1\u4e00\u6b21\u5c31\u555f\u52d5\u4e86<\/p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">java<\/span><span style=\"color:#A65E2B;--shiki-dark:#C99076\"> -Xmx2G<\/span><span style=\"color:#A65E2B;--shiki-dark:#C99076\"> -Xms1G<\/span><span style=\"color:#A65E2B;--shiki-dark:#C99076\"> -jar<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> server.jar<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> nogui<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<details class=\"primary\"><summary>\u7528systemd\u8b93\u4f3a\u670d\u5668\u81ea\u52d5\u555f\u52d5<\/summary><div>\n<p>\u5982\u679c\u4f60\u60f3\u8981\u8b93\u4f3a\u670d\u5668\u5728\u958b\u6a5f\u6642\u81ea\u52d5\u555f\u52d5 \u6216\u8005\u639b\u4e86\u81ea\u52d5\u91cd\u958b<br \/>\n\u53ef\u4ee5\u5beb\u4e00\u500bsystemd service<\/p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">sudo<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> tee<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> \/etc\/systemd\/system\/minecraft.service<\/span><span style=\"color:#AB5959;--shiki-dark:#CB7676\"> &#x3C;&#x3C;<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\"> 'EOF'<\/span><\/span>\n<span class=\"line\"><span style=\"color:#B56959;--shiki-dark:#C98A7D\">[Unit]<\/span><\/span>\n<span class=\"line\"><span style=\"color:#B56959;--shiki-dark:#C98A7D\">Description=Minecraft Server<\/span><\/span>\n<span class=\"line\"><span style=\"color:#B56959;--shiki-dark:#C98A7D\">After=network.target<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color:#B56959;--shiki-dark:#C98A7D\">[Service]<\/span><\/span>\n<span class=\"line\"><span style=\"color:#B56959;--shiki-dark:#C98A7D\">User=minecraft<\/span><\/span>\n<span class=\"line\"><span style=\"color:#B56959;--shiki-dark:#C98A7D\">WorkingDirectory=\/home\/minecraft\/minecraft-server<\/span><\/span>\n<span class=\"line\"><span style=\"color:#B56959;--shiki-dark:#C98A7D\">ExecStart=\/usr\/bin\/java -Xmx4G -Xms2G -jar server.jar nogui<\/span><\/span>\n<span class=\"line\"><span style=\"color:#B56959;--shiki-dark:#C98A7D\">Restart=on-failure<\/span><\/span>\n<span class=\"line\"><span style=\"color:#B56959;--shiki-dark:#C98A7D\">RestartSec=10<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color:#B56959;--shiki-dark:#C98A7D\">[Install]<\/span><\/span>\n<span class=\"line\"><span style=\"color:#B56959;--shiki-dark:#C98A7D\">WantedBy=multi-user.target<\/span><\/span>\n<span class=\"line\"><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">EOF<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">sudo<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> systemctl<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> daemon-reload<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">sudo<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> systemctl<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> enable<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> minecraft<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">sudo<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> systemctl<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> start<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> minecraft<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"># \u770b\u770b\u6709\u6c92\u6709\u8dd1\u8d77\u4f86<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">sudo<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> systemctl<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> status<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> minecraft<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<p>\u9019\u6a23\u4f3a\u670d\u5668\u5c31\u6703\u5728\u80cc\u666f\u8dd1\u4e86<br \/>\n\u8981\u770blog\u7684\u8a71\u53ef\u4ee5\u7528<code>journalctl -u minecraft -f<\/code><\/p>\n<\/div><\/details>\n<details class=\"primary\"><summary>server.properties \u5e38\u7528\u8a2d\u5b9a<\/summary><div>\n<p>\u555f\u52d5\u4e4b\u5f8c\u6703\u5728\u4f3a\u670d\u5668\u76ee\u9304\u4e0b\u751f\u6210\u4e00\u500b<code>server.properties<\/code>\u6a94\u6848<br \/>\n\u9019\u88e1\u9762\u53ef\u4ee5\u8a2d\u5b9a\u5f88\u591a\u6771\u897f \u5217\u5e7e\u500b\u5e38\u7528\u7684<\/p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"># \u4f3a\u670d\u5668port\uff08\u9810\u8a2d25565\uff09<\/span><\/span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">server-port<\/span><span style=\"color:#999999;--shiki-dark:#666666\">=<\/span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">25565<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"># \u6700\u5927\u73a9\u5bb6\u6578<\/span><\/span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">max-players<\/span><span style=\"color:#999999;--shiki-dark:#666666\">=<\/span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">20<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"># \u904a\u6232\u96e3\u5ea6\uff08peaceful, easy, normal, hard\uff09<\/span><\/span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">difficulty<\/span><span style=\"color:#999999;--shiki-dark:#666666\">=<\/span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">normal<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"># \u904a\u6232\u6a21\u5f0f\uff08survival, creative, adventure, spectator\uff09<\/span><\/span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">gamemode<\/span><span style=\"color:#999999;--shiki-dark:#666666\">=<\/span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">survival<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"># \u4e16\u754c\u7a2e\u5b50\u78bc\uff08\u7559\u7a7a\u96a8\u6a5f\u751f\u6210\uff09<\/span><\/span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">level-seed<\/span><span style=\"color:#999999;--shiki-dark:#666666\">=<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"># \u4f3a\u670d\u5668\u63cf\u8ff0\uff08\u6703\u986f\u793a\u5728\u4f3a\u670d\u5668\u5217\u8868\uff09<\/span><\/span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">motd<\/span><span style=\"color:#999999;--shiki-dark:#666666\">=<\/span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">A Minecraft Server<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"># \u662f\u5426\u555f\u7528\u6b63\u7248\u9a57\u8b49\uff08\u79c1\u670d\u95dc\u6389 \u516c\u670d\u5efa\u8b70\u958b\uff09<\/span><\/span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">online-mode<\/span><span style=\"color:#999999;--shiki-dark:#666666\">=<\/span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">true<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"># \u6700\u5927\u5efa\u7bc9\u9ad8\u5ea6<\/span><\/span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">max-build-height<\/span><span style=\"color:#999999;--shiki-dark:#666666\">=<\/span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">319<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"># \u8996\u91ce\u8ddd\u96e2\uff08\u8d8a\u5927\u8d8a\u5403\u6548\u80fd\uff09<\/span><\/span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">view-distance<\/span><span style=\"color:#999999;--shiki-dark:#666666\">=<\/span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">10<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"># \u958b\u555f\u547d\u4ee4\u65b9\u584a<\/span><\/span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">enable-command-block<\/span><span style=\"color:#999999;--shiki-dark:#666666\">=<\/span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">true<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<p>\u6539\u5b8c\u8a2d\u5b9a\u4e4b\u5f8c\u8981\u91cd\u555f\u4f3a\u670d\u5668\u624d\u6703\u751f\u6548<\/p>\n<div class=\"note info\">\n<p>\u5982\u679c\u4f60\u95dc\u4e86<code>online-mode<\/code> \u4efb\u4f55\u4eba\u90fd\u53ef\u4ee5\u7528\u4efb\u4f55\u540d\u5b57\u9023\u9032\u4f86<br \/>\n\u5b89\u5168\u6027\u6703\u5927\u5e45\u4e0b\u964d \u8acb\u81ea\u5df1\u659f\u914c<\/p>\n<\/div>\n<\/div><\/details>\n<h3 id=\"\u4f7f\u7528-docker-\u67b6\u8a2dminecraft\u4f3a\u670d\u5668\"><a class=\"anchor\" href=\"#\u4f7f\u7528-docker-\u67b6\u8a2dminecraft\u4f3a\u670d\u5668\">#<\/a> \u4f7f\u7528 Docker \u67b6\u8a2dMinecraft\u4f3a\u670d\u5668<\/h3>\n<p>\u9019\u662f\u7b46\u8005\u8a8d\u70ba\u6700\u7c21\u55ae\u4e5f\u6700\u597d\u7528\u7684\u65b9\u5f0f<br \/>\n\u4e0d\u7528\u81ea\u5df1\u88ddJava \u4e0d\u7528\u64d4\u5fc3\u74b0\u5883\u885d\u7a81<br \/>\n\u4e00\u500b<code>docker compose up -d<\/code>\u5c31\u641e\u5b9a\u4e86<\/p>\n<p>\u9019\u88e1\u4f7f\u7528<a href=\"https:\/\/github.com\/itzg\/docker-minecraft-server\">itzg\/minecraft-server<\/a>\u9019\u500bImage<br \/>\n\u9019\u662f\u76ee\u524d\u793e\u7fa4\u7dad\u8b77\u6700\u6d3b\u8e8d\u7684Minecraft Docker Image<br \/>\n\u652f\u63f4\u539f\u7248\u3001Forge\u3001Fabric\u3001Paper\u3001Spigot\u7b49\u7b49\u4e00\u5927\u5806<\/p>\n<h4 id=\"\u524d\u7f6e\u689d\u4ef6\"><a class=\"anchor\" href=\"#\u524d\u7f6e\u689d\u4ef6\">#<\/a> \u524d\u7f6e\u689d\u4ef6<\/h4>\n<p>\u4f60\u7684\u6a5f\u5668\u4e0a\u8981\u5148\u88dd\u597dDocker\u548cDocker Compose<br \/>\n\u5982\u679c\u9084\u6c92\u88dd\u7684\u8a71\u53ef\u4ee5\u53c3\u8003<a href=\"https:\/\/miyago9267.com\/Tutorial\/misc\/docker\/\">\u6211\u7684Docker\u4ecb\u7d39\u6587<\/a><\/p>\n<h4 id=\"\u539f\u7248\u4f3a\u670d\u5668\"><a class=\"anchor\" href=\"#\u539f\u7248\u4f3a\u670d\u5668\">#<\/a> \u539f\u7248\u4f3a\u670d\u5668<\/h4>\n<p>\u5efa\u4e00\u500b\u8cc7\u6599\u593e\u653e\u4f60\u7684\u4f3a\u670d\u5668\u8a2d\u5b9a<\/p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">mkdir<\/span><span style=\"color:#A65E2B;--shiki-dark:#C99076\"> -p<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> ~\/minecraft-docker<\/span><span style=\"color:#999999;--shiki-dark:#666666\"> &#x26;&#x26;<\/span><span style=\"color:#998418;--shiki-dark:#B8A965\"> cd<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> ~\/minecraft-docker<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<p>\u5efa\u7acb<code>docker-compose.yml<\/code><\/p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">services<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">  minecraft<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">    image<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> itzg\/minecraft-server<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">    container_name<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> minecraft<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">    ports<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">      -<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\"> \"<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">25565:25565<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">    environment<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">      EULA<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\"> \"<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">TRUE<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">      TYPE<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\"> \"<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">VANILLA<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">      VERSION<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\"> \"<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">1.21.4<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">      MEMORY<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\"> \"<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">4G<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">      VIEW_DISTANCE<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#2F798A;--shiki-dark:#4C9A91\"> 12<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">      MAX_PLAYERS<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#2F798A;--shiki-dark:#4C9A91\"> 20<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">      MOTD<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\"> \"<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">Welcome to my server<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">      DIFFICULTY<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\"> \"<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">normal<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">    volumes<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">      -<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> .\/data:\/data<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">    restart<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> unless-stopped<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">    tty<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#1E754F;--shiki-dark:#4D9375\"> true<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">    stdin_open<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#1E754F;--shiki-dark:#4D9375\"> true<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<p>\u7136\u5f8c\u4e00\u884c\u6307\u4ee4\u641e\u5b9a<\/p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">docker<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> compose<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> up<\/span><span style=\"color:#A65E2B;--shiki-dark:#C99076\"> -d<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<p>\u5c31\u9019\u6a23 \u4f3a\u670d\u5668\u5c31\u8dd1\u8d77\u4f86\u4e86<br \/>\n\u6240\u6709\u7684\u4e16\u754c\u8cc7\u6599\u548c\u8a2d\u5b9a\u6a94\u90fd\u6703\u5b58\u5728<code>.\/data<\/code>\u8cc7\u6599\u593e\u88e1<\/p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"># \u770blog<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">docker<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> compose<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> logs<\/span><span style=\"color:#A65E2B;--shiki-dark:#C99076\"> -f<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"># \u9032\u5165\u4f3a\u670d\u5668console<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">docker<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> attach<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> minecraft<\/span><\/span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"># \u6309 Ctrl+P Ctrl+Q \u9000\u51fa\uff08\u4e0d\u8981\u6309Ctrl+C \u90a3\u6703\u95dc\u4f3a\u670d\u5668\uff09<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<h4 id=\"mod\u4f3a\u670d\u5668forge-fabric\"><a class=\"anchor\" href=\"#mod\u4f3a\u670d\u5668forge-fabric\">#<\/a> Mod\u4f3a\u670d\u5668\uff08Forge \/ Fabric\uff09<\/h4>\n<p>\u53ea\u8981\u6539<code>TYPE<\/code>\u5c31\u597d \u5176\u4ed6\u90fd\u4e00\u6a23<\/p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">services<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">  minecraft<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">    image<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> itzg\/minecraft-server<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">    container_name<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> minecraft<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">    ports<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">      -<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\"> \"<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">25565:25565<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">    environment<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">      EULA<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\"> \"<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">TRUE<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">      TYPE<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\"> \"<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">FABRIC<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">      VERSION<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\"> \"<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">1.21.4<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">      MEMORY<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\"> \"<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">6G<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">    volumes<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">      -<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> .\/data:\/data<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">    restart<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> unless-stopped<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<p>\u555f\u52d5\u4e4b\u5f8c \u628a\u4f60\u8981\u88dd\u7684mod\u4e1f\u9032<code>.\/data\/mods\/<\/code>\u8cc7\u6599\u593e<br \/>\n\u7136\u5f8c\u91cd\u555f\u5bb9\u5668\u5c31\u884c\u4e86<\/p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"># \u4e1f\u5b8cmod\u4e4b\u5f8c\u91cd\u555f<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">docker<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> compose<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> restart<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<div class=\"note info\">\n<p>Forge\u7684\u8a71\u628a<code>TYPE<\/code>\u6539\u6210<code>FORGE<\/code>\u5c31\u884c<br \/>\n\u5982\u679c\u8981\u6307\u5b9aForge\/Fabric\u7684\u7248\u672c \u53ef\u4ee5\u52a0\u4e0a<code>FORGEVERSION<\/code>\u6216<code>FABRICVERSION<\/code>\u7684\u74b0\u5883\u8b8a\u6578<br \/>\n\u8a73\u7d30\u7684\u9078\u9805\u53ef\u4ee5\u53bb\u770b<a href=\"https:\/\/docker-minecraft-server.readthedocs.io\/en\/latest\/\">itzg\u7684\u6587\u4ef6<\/a><\/p>\n<\/div>\n<h4 id=\"paper-spigot\u63d2\u4ef6\u4f3a\u670d\u5668\"><a class=\"anchor\" href=\"#paper-spigot\u63d2\u4ef6\u4f3a\u670d\u5668\">#<\/a> Paper \/ Spigot\uff08\u63d2\u4ef6\u4f3a\u670d\u5668\uff09<\/h4>\n<p>\u60f3\u8981\u7528\u63d2\u4ef6\u800c\u4e0d\u662fmod\u7684\u8a71<br \/>\nPaper\u662f\u76ee\u524d\u6548\u80fd\u6700\u597d\u7684\u9078\u64c7<\/p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">services<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">  minecraft<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">    image<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> itzg\/minecraft-server<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">    container_name<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> minecraft<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">    ports<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">      -<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\"> \"<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">25565:25565<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">    environment<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">      EULA<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\"> \"<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">TRUE<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">      TYPE<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\"> \"<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">PAPER<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">      VERSION<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\"> \"<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">1.21.4<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">      MEMORY<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\"> \"<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">4G<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">    volumes<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">      -<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> .\/data:\/data<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">    restart<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> unless-stopped<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<p>\u63d2\u4ef6\u4e1f<code>.\/data\/plugins\/<\/code>\u88e1\u9762\u5c31\u597d<\/p>\n<div class=\"note info\">\n<p>Paper\u662fSpigot\u7684fork \u6548\u80fd\u66f4\u597d\u800c\u4e14\u5411\u4e0b\u76f8\u5bb9Spigot\u7684\u63d2\u4ef6<br \/>\n\u9664\u975e\u4f60\u6709\u7279\u6b8a\u539f\u56e0 \u4e0d\u7136\u5efa\u8b70\u76f4\u63a5\u7528Paper<\/p>\n<\/div>\n<h4 id=\"\u5099\u4efd\"><a class=\"anchor\" href=\"#\u5099\u4efd\">#<\/a> \u5099\u4efd<\/h4>\n<p>\u65e2\u7136\u90fd\u7528Docker\u4e86 \u5099\u4efd\u4e5f\u53ef\u4ee5\u7528\u5bb9\u5668\u4f86\u505a<\/p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">services<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">  minecraft<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">    image<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> itzg\/minecraft-server<\/span><\/span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">    # ... \u7701\u7565<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">  backup<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">    image<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> itzg\/mc-backup<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">    depends_on<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">      -<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> minecraft<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">    environment<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">      BACKUP_INTERVAL<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\"> \"<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">24h<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">      RCON_HOST<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> minecraft<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">      PRUNE_BACKUPS_DAYS<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#2F798A;--shiki-dark:#4C9A91\"> 7<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">    volumes<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">      -<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> .\/data:\/data:ro<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">      -<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> .\/backups:\/backups<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<p>\u9019\u6a23\u6bcf24\u5c0f\u6642\u6703\u81ea\u52d5\u5099\u4efd\u4e00\u6b21 \u4e26\u4fdd\u7559\u6700\u8fd17\u5929\u7684\u5099\u4efd<\/p>\n<h2 id=\"mod\u7248\u672c\u4f3a\u670d\u5668\u88dc\u5145\"><a class=\"anchor\" href=\"#mod\u7248\u672c\u4f3a\u670d\u5668\u88dc\u5145\">#<\/a> Mod\u7248\u672c\u4f3a\u670d\u5668\u88dc\u5145<\/h2>\n<p>\u4e0d\u7ba1\u4f60\u7528\u54ea\u500b\u4f5c\u696d\u7cfb\u7d71<br \/>\n\u88ddMod\u7684\u4f3a\u670d\u5668\u6d41\u7a0b\u5176\u5be6\u90fd\u5dee\u4e0d\u591a<br \/>\n\u5dee\u5225\u53ea\u5728\u65bc\u4f60\u9078\u7684\u8f09\u5165\u5668\uff08Forge\u6216Fabric\uff09<\/p>\n<h3 id=\"forge\"><a class=\"anchor\" href=\"#forge\">#<\/a> Forge<\/h3>\n<ol>\n<li>\u524d\u5f80<a href=\"https:\/\/files.minecraftforge.net\/\">Forge\u5b98\u7db2<\/a>\u4e0b\u8f09Installer<\/li>\n<li>\u7528Java\u57f7\u884cInstaller\u4e26\u9078\u64c7\u300cInstall Server\u300d<\/li>\n<li>\u6307\u5b9a\u5b89\u88dd\u76ee\u9304<\/li>\n<li>\u5b89\u88dd\u5b8c\u4e4b\u5f8c\u7528\u751f\u6210\u7684\u555f\u52d5\u8173\u672c\u555f\u52d5\uff08\u901a\u5e38\u662f<code>run.sh<\/code>\u6216<code>run.bat<\/code>\uff09<\/li>\n<li>\u628amod\u4e1f\u9032<code>mods\/<\/code>\u8cc7\u6599\u593e<\/li>\n<li>\u91cd\u555f\u4f3a\u670d\u5668<\/li>\n<\/ol>\n<h3 id=\"fabric\"><a class=\"anchor\" href=\"#fabric\">#<\/a> Fabric<\/h3>\n<ol>\n<li>\u524d\u5f80<a href=\"https:\/\/fabricmc.net\/use\/installer\/\">Fabric\u5b98\u7db2<\/a>\u4e0b\u8f09Installer<\/li>\n<li>\u7528Java\u57f7\u884cInstaller\u4e26\u9078\u64c7\u300cServer\u300d<\/li>\n<li>\u9078\u64c7Minecraft\u7248\u672c\u548cFabric\u7248\u672c<\/li>\n<li>\u6307\u5b9a\u5b89\u88dd\u76ee\u9304<\/li>\n<li>\u5b89\u88dd\u5b8c\u4e4b\u5f8c\u7528<code>start.sh<\/code>\u6216<code>start.bat<\/code>\u555f\u52d5<\/li>\n<li>\u628amod\u4e1f\u9032<code>mods\/<\/code>\u8cc7\u6599\u593e<\/li>\n<li>\u91cd\u555f\u4f3a\u670d\u5668<\/li>\n<\/ol>\n<div class=\"note info\">\n<p>Forge\u548cFabric\u7684mod\u662f\u4e0d\u76f8\u5bb9\u7684<br \/>\nForge\u7684mod\u4e0d\u80fd\u5728Fabric\u4e0a\u8dd1 \u53cd\u4e4b\u4ea6\u7136<br \/>\n\u9078\u7684\u6642\u5019\u5148\u78ba\u8a8d\u4f60\u8981\u7528\u7684mod\u652f\u63f4\u54ea\u500b\u8f09\u5165\u5668<\/p>\n<\/div>\n<h2 id=\"\u7d50\u8a9e\"><a class=\"anchor\" href=\"#\u7d50\u8a9e\">#<\/a> \u7d50\u8a9e<\/h2>\n<p>\u67b6Minecraft\u4f3a\u670d\u5668\u9019\u4ef6\u4e8b\u60c5<br \/>\n\u8aaa\u96e3\u4e0d\u96e3 \u8aaa\u7c21\u55ae\u561b \u5751\u4e5f\u662f\u4e0d\u5c11<br \/>\n\u5c24\u5176\u662f\u7db2\u8def\u74b0\u5883\u7684\u8a2d\u5b9a\u6700\u5bb9\u6613\u5361\u4eba<\/p>\n<p>\u5982\u679c\u4f60\u53ea\u662f\u8981\u8ddf\u4e09\u4e94\u597d\u53cb\u79c1\u670d\u73a9\u73a9<br \/>\nVPN\u65b9\u6848\u6700\u7121\u8166 \u88dd\u5b8c\u9023\u4e0a\u5c31\u80fd\u73a9<br \/>\n\u5982\u679c\u4f60\u60f3\u8981\u8a8d\u771f\u4e00\u9ede\u9577\u671f\u7d93\u71df<br \/>\n\u90a3\u5efa\u8b70\u76f4\u63a5\u4e0aDocker + Paper + \u56fa\u5b9aIP<br \/>\n\u7ba1\u7406\u8d77\u4f86\u65b9\u4fbf\u5f97\u591a<\/p>\n<p>\u7e3d\u4e4b \u5e0c\u671b\u9019\u7bc7\u6587\u7ae0\u80fd\u5e6b\u5230\u6b63\u5728\u722c\u6587\u7684\u4f60<br \/>\n\u6709\u554f\u984c\u53ef\u4ee5\u5728\u4e0b\u9762\u7559\u8a00 \u6211\u770b\u5230\u6703\u56de<br \/>\n\u795d\u5404\u4f4d\u958b\u670d\u9806\u5229 \u4e0d\u8981\u88ab\u82e6\u529b\u6015\u70b8\u6389<\/p>\n","tags":["Tutorial","Tutorial"]},{"id":"https:\/\/miyago9267.com\/Diary\/2025\/0810\/","url":"https:\/\/miyago9267.com\/Diary\/2025\/0810\/","title":"[\u672d\u8a18] 20250810 - \u95dc\u65bc\u4e9e\u65af\u4f2f\u683c\u7684\u6211","date_published":"2025-08-09T16:00:00.000Z","content_html":"<p>\u751f\u6d3b\u8d8a\u4f86\u8d8a\u5fd9\u4e4b\u5f8c<br \/>\n\u8a31\u4e45\u6c92\u6709\u6253\u9019\u7a2e\u597d\u9577\u7684\u6771\u897f<br \/>\n\u4eca\u5929\u4f86\u8b1b\u4e00\u4e9b\u6709\u95dc\u65bc\u6211\u81ea\u5df1\u7684\u6545\u4e8b<\/p>\n<span id=\"more\"><\/span>\n<p>\u9019\u7bc7\u6587\u8f49\u81ea\u6211\u672c\u4eba\u7684FB\uff0c\u7a0d\u5fae\u6539\u4e00\u4e0b\u4e1f\u4e0a\u4f86\u7684<\/p>\n<h2 id=\"\u524d\u8a00\"><a class=\"anchor\" href=\"#\u524d\u8a00\">#<\/a> \u524d\u8a00<\/h2>\n<p>\u4e00\u4e9b\u65b0\u8a8d\u8b58\u6211\u6216\u6700\u8fd1\u624d\u719f\u7d61\u7684\u670b\u53cb\u53ef\u80fd\u4e0d\u592a\u6e05\u695a<br \/>\n\u5176\u5be6\u6211\u6709\u4e9e\u65af\u4f2f\u683c\u75c7\u5019\u7fa4<br \/>\n\u9019\u7b97\u662f\u81ea\u9589\u75c7\u7684\u4e00\u7a2e\uff0c\u4e26\u4e14\u7b97\u662f\u6703\u5f71\u97ff\u751f\u6d3b\u7684<br \/>\n\u9644\u52a0\u7522\u751f\u4e86\u6182\u9b31\u6216\u7126\u616e\u7b49\u75c7\u72c0\uff0c\u9700\u8981\u5b9a\u671f\u56de\u8a3a\u8aee\u5546\u548c\u6cbb\u7642<br \/>\n\u53ea\u5dee\u5728\u6c92\u6709\u9818\u8eab\u5fc3\u969c\u7919\u8b49\u660e\u800c\u5df2<\/p>\n<p>\u4e0d\u904e\u4e5f\u8a31\u6709\u4e9b\u4eba\u6703\u60f3<br \/>\n\u54a6\uff1f\u6211\u6709\u81ea\u9589\u75c7\uff1f\u5e73\u5e38\u76f8\u8655\u770b\u4e0d\u592a\u51fa\u4f86\u5440<br \/>\n\u6211\u61c9\u8a72\u4e0d\u6703\u5f88\u55ae\u8abf\u4e5f\u4e0d\u6703\u5f88\u96e3\u8b1b\u8a71\u554a\uff08\u81ea\u8a8d\u70ba\uff09<br \/>\n\u66f4\u751a\u81f3\u6211\u9084\u5f88\u7d93\u5e38\u4f83\u4f83\u800c\u8ac7\u7684\u8868\u9054\u81ea\u5df1\u7684\u770b\u6cd5<br \/>\n\u600e\u9ebc\u6703\u8ddf\u81ea\u9589\u75c7\u6709\u95dc\u4fc2\u5462\uff1f<br \/>\n\u800c\u9019\uff0c\u5c31\u5f97\u8981\u727d\u626f\u5230\u4e9e\u65af\u672c\u8eab\u7684\u5c6c\u6027\u4e86<br \/>\n\u4e0b\u9762\u6703\u6709\u4e00\u5927\u4e32\u8b1b\u81ea\u9589\u75c7\u7684\u6771\u897f<br \/>\n\u5982\u679c\u60f3\u770b\u6211\u8b1b\u6211\u81ea\u5df1\u7684\u91cd\u9ede\u90e8\u5206\u53ef\u4ee5\u5f80\u4e0b\u8df3\u5230\u300c\u6211\u7684\u6545\u4e8b\u300d<\/p>\n<h2 id=\"\u81ea\u9589\u75c7\u8207\u4e9e\u65af\u4f2f\u683c\"><a class=\"anchor\" href=\"#\u81ea\u9589\u75c7\u8207\u4e9e\u65af\u4f2f\u683c\">#<\/a> \u81ea\u9589\u75c7\u8207\u4e9e\u65af\u4f2f\u683c<\/h2>\n<h3 id=\"\u6709\u95dc\u81ea\u9589\u75c7\"><a class=\"anchor\" href=\"#\u6709\u95dc\u81ea\u9589\u75c7\">#<\/a> \u6709\u95dc\u81ea\u9589\u75c7<\/h3>\n<p>\u50b3\u7d71\u610f\u7fa9\u4e0a\u7684\u81ea\u9589\u75c7\u90a3\u4e9b\u5177\u6709\u4ee3\u8868\u6027\u7684\u7279\u5fb5<br \/>\n\u4e0d\u5916\u4e4e\u662f\u523b\u677f\u5370\u8c61\u4e2d\uff0c\u8eb2\u5728\u7246\u89d2\u81ea\u5df1\u756b\u756b\u7684\u5b89\u975c\u5c0f\u5b69<br \/>\n\u6216\u662f\u760b\u760b\u985b\u985b\u96e3\u4ee5\u6e9d\u901a\u7684\u667a\u80fd\u7f3a\u9677\u8005<br \/>\n\u7136\u800c\u5be6\u969b\u4e0a\uff0c\u81ea\u9589\u75c7\u60a3\u8005\u53ef\u80fd\u6703\u6709\u66f4\u591a\u591a\u5143\u6027\u7684\u8868\u73fe<br \/>\n\u5305\u62ec\u667a\u80fd\u969c\u7919\u3001\u8a9e\u8a00\u969c\u7919\u3001\u884c\u70ba\u969c\u7919\u3001\u6e9d\u901a\u969c\u7919\u7b49\u7b49\u7b49<br \/>\n\u81e8\u5e8a\u4e0a\u7684\u8868\u73fe\uff0c\u53ef\u80fd\u6703\u4f7f\u5f97\u60a3\u8005\u7121\u6cd5\u793e\u4ea4\u3001\u57f7\u884c\u91cd\u8907\u7279\u5b9a\u7684\u884c\u70ba\u3001\u7522\u751f\u53d7\u9650\u7684\u8208\u8da3\u53ca\u884c\u70ba<br \/>\n\u56b4\u91cd\u751a\u81f3\u53ef\u80fd\u6709\u81ea\u50b7\u6216\u7121\u6cd5\u96c6\u4e2d\u3001\u751a\u81f3\u6182\u9b31\u7b49\u7279\u8cea<br \/>\n\u4f8b\u5982\u6211\u672c\u4eba\u7684\u6027\u683c\u78ba\u5be6\u5c31\u76f8\u5c0d\u7121\u804a<br \/>\n\u8208\u8da3\u8207\u884c\u70ba\u4e5f\u90fd\u76f8\u5c0d\u55ae\u4e00\uff0c\u800c\u4ea4\u969b\u4e0a\u6709\u6642\u5019\u4e5f\u6703\u6709\u4e9b\u56f0\u96e3<\/p>\n<h3 id=\"\u4e9e\u65af\u5728\u5149\u8b5c\u4e2d\u7684\u4f4d\u7f6e\"><a class=\"anchor\" href=\"#\u4e9e\u65af\u5728\u5149\u8b5c\u4e2d\u7684\u4f4d\u7f6e\">#<\/a> \u4e9e\u65af\u5728\u5149\u8b5c\u4e2d\u7684\u4f4d\u7f6e<\/h3>\n<p>\u800c\u4e9e\u65af\u6b63\u662f\u81ea\u9589\u75c7\u5149\u8b5c\u4e2d\u7684\u5176\u4e2d\u4e00\u500b\u5206\u985e<br \/>\n\uff08\u4ee5\u524d\u4e0d\u662f\uff0c\u5f8c\u4f86\u88ab\u6574\u5408\u9032\u81ea\u9589\u75c7\u7684\u9ad4\u7cfb\u4e86\uff09<br \/>\n\u96d6\u7136\u7e7c\u627f\u4e86\u8a31\u591a\u81ea\u9589\u75c7\u7684\u7279\u5fb5\u53ca\u8868\u73fe<br \/>\n\u4f46\u5f71\u97ff\u9019\u4e9b\u60a3\u8005\u793e\u4ea4\u529f\u80fd\u7684\uff0c\u4e26\u4e0d\u5728\u65bc\u667a\u529b\u65b9\u9762\u7684\u7f3a\u9677<br \/>\n\u76f8\u53cd\u7684\uff0c\u76f8\u5c0d\u591a\u6578\u60a3\u8005\u7684\u5fc3\u6e2c\u5831\u544a\u4e2d<br \/>\n\u4e2d\u7acb\u7684\u7d71\u8a08\u4e2d\u4f4d\u6578\u5f80\u5f80\u8981\u6bd4\u666e\u901a\u4eba\u8981\u9ad8<br \/>\n\u4f8b\u5982\u6211\u672c\u4eba\u7684\u667a\u529b\u6e2c\u9a57\u5c31\u8f03\u5e73\u5747\u9ad8\u4e0a\u5169\u500b\u6a19\u6e96\u5dee<\/p>\n<p>\u9019\u4e9b\u4e9e\u65af\u7279\u8cea\u7684\u60a3\u8005\u5011\uff0c\u6700\u5178\u578b\u7684\u7279\u5fb5\u6b63\u662f\u300c\u56fa\u57f7\u300d<br \/>\n\u7576\u7136\u9019\u88e1\u7684\u56fa\u57f7\u50c5\u50c5\u662f\u4e00\u7a2e\u5f62\u5bb9\uff0c\u4e26\u4e0d\u662f\u55ae\u7d14\u500b\u6027\u4e0a\u7684\u56fa\u57f7<br \/>\n\u800c\u662f\u7531\u65bc\u8f03\u96e3\u4ee5\u540c\u7406\u4ed6\u4eba\u7684\u9ad4\u73fe<br \/>\n\u5c0e\u81f4\u5bb9\u6613\u8207\u666e\u901a\u4eba\u7522\u751f\u8cc7\u8a0a\u53ca\u7406\u89e3\u4e0a\u7684\u4e0d\u540c\u6b65<br \/>\n\uff08\u6ce8\u610f\uff0c\u7121\u6cd5\u540c\u7406\u4e26\u4e0d\u4ee3\u8868\u300c\u5b8c\u5168\u7121\u6cd5\u300d\u5171\u60c5\u8207\u5171\u611f<br \/>\n\u50cf\u6211\u7684\u60c5\u5546\u5c31\u4e0d\u662f\u96f6\uff0c\u4e5f\u80fd\u5920\u90e8\u5206\u7684\u7406\u89e3\u4ed6\u4eba\u7684\u60c5\u611f\uff09<\/p>\n<h3 id=\"\u4e9e\u65af\u7684\u81e8\u5e8a\u7279\u8cea\"><a class=\"anchor\" href=\"#\u4e9e\u65af\u7684\u81e8\u5e8a\u7279\u8cea\">#<\/a> \u4e9e\u65af\u7684\u81e8\u5e8a\u7279\u8cea<\/h3>\n<p>\u4e9e\u65af\u5178\u578b\u7684\u81e8\u5e8a\u7279\u5fb5\uff0c\u9019\u908a\u5f15\u7528\u7f85\u5a1c.\u5433\u91ab\u5e2b\u6240\u63d0\u51fa\u7684\u5f59\u6574<\/p>\n<ol>\n<li>\u56fa\u57f7\u3001\u7f3a\u5c11\u540c\u7406\u5fc3<\/li>\n<li>\u55ae\u7d14\u76f4\u63a5\u3001\u4e0d\u6070\u7576\u7684\u884c\u70ba\u3001\u55ae\u5411\u7684\u53cd\u61c9<\/li>\n<li>\u8f03\u5e38\u4eba\u6b20\u7f3a\u4ea4\u53cb\u53ca\u4ea4\u969b\u80fd\u529b<\/li>\n<li>\u91cd\u8907\u3001\u5b78\u7a76\u5f0f\u7684\u8a00\u8a5e<\/li>\n<li>\u8207\u8a9e\u8a00\u80fd\u529b\u7121\u95dc\u7684\u6e9d\u901a\u969c\u7919<\/li>\n<li>\u5c0d\u7279\u5b9a\u55ae\u4e00\u4e14\u91cd\u8907\u4e4b\u4e8b\u7269\u62b1\u6709\u5f37\u70c8\u7684\u8208\u8da3<\/li>\n<li>\u60c5\u7dd2\u63a7\u5236\u80fd\u529b\u8f03\u5e38\u4eba\u8584\u5f31<br \/>\n\u9019\u4e9b\u90fd\u662f\u60a3\u8005\u666e\u904d\u5728\u5fc3\u6e2c\u4e2d\uff0c\u88ab\u6e2c\u5b9a\u51fa\u6bd4\u5206\u8d85\u51fa\u5e38\u4eba\u7684\u7279\u8cea<br \/>\n\u6709\u9019\u6a23\u7684\u50be\u5411\u53ef\u80fd\u5c31\u53ef\u4ee5\u8003\u616e\u662f\u4e0d\u662f\u4e9e\u65af<\/li>\n<\/ol>\n<h2 id=\"\u6211\u7684\u6545\u4e8b\"><a class=\"anchor\" href=\"#\u6211\u7684\u6545\u4e8b\">#<\/a> \u6211\u7684\u6545\u4e8b<\/h2>\n<p>\u79d1\u666e\u5b8c\u4e86\u4e9e\u65af\u7684\u7279\u8cea\uff0c\u7d42\u65bc\u8981\u4f86\u8b1b\u8b1b\u300c\u6211\u300d\u4e86<\/p>\n<h3 id=\"\u6700\u521d\u7684\u767c\u73fe\"><a class=\"anchor\" href=\"#\u6700\u521d\u7684\u767c\u73fe\">#<\/a> \u6700\u521d\u7684\u767c\u73fe<\/h3>\n<p>\u5728\u5e7c\u7a1a\u5712\u6642\u671f\uff0c\u6211\u5c31\u6709\u8457\u7570\u65bc\u5176\u4ed6\u6d3b\u6f51\u5b69\u5b50\u7684\u7279\u8cea<br \/>\n\u4e00\u76f4\u4ee5\u4f86\u6211\u90fd\u662f\u7368\u81ea\u5750\u5728\u90a3\u908a\u770b\u66f8\u3001\u73a9\u81ea\u5df1\u7684\u7a4d\u6728\u3001\u62c6\u6a5f\u5668<br \/>\n\u4e0d\u50c5\u5f88\u5b89\u975c\uff0c\u4e5f\u90fd\u505a\u8457\u91cd\u8907\u7684\u884c\u70ba\uff0c\u751a\u81f3\u6bcf\u6b21\u5750\u7684\u4f4d\u7f6e\u90fd\u4e00\u6a23<br \/>\n\u96d6\u7136\u5982\u6b64\u4e5f\u90fd\u662f\u4e00\u76f4\u505a\u8457\u81ea\u5df1\u7684\u4e8b\u60c5\u4e0d\u592a\u5f71\u97ff\u5176\u4ed6\u4eba<br \/>\n\u4f46\u9664\u6b64\u4e4b\u5916\uff0c\u6211\u5728\u667a\u529b\u4e0a\u90fd\u6c92\u6709\u8868\u60c5\u51fa\u5176\u4ed6\u554f\u984c<br \/>\n\u4e0a\u8ab2\u7684\u8868\u73fe\u4e26\u4e0d\u5dee\uff0c\u751a\u81f3\u5728\u6578\u7406\u65b9\u9762\u7b97\u662f\u512a\u7570<br \/>\n\u8b1b\u8a71\u4e5f\u9084\u662f\u80fd\u6b63\u5e38\u8b1b\u8a71\uff0c\u8981\u914d\u5408\u6d3b\u52d5\u4e5f\u662f\u80fd\u5920\u6b63\u5e38\u7684\u807d\u8a71<\/p>\n<p><span class=\"text-xxl\">\u9664\u975e\u6709\u4eba\u7834\u58de\u4e86\u6211\u7684\u7fd2\u6163\u6216\u8207\u6211\u7684\u610f\u898b\u6709\u51fa\u5165<\/span><\/p>\n<p>\u67d0\u4e00\u6b21\uff0c\u5e7c\u7a1a\u5712\u7684\u5176\u4ed6\u5b69\u5b50\u6436\u4e86\u6211\u7fd2\u6163\u7684\u4f4d\u7f6e<br \/>\n\u4e26\u963b\u6b62\u6211\u505a\u81ea\u5df1\u7684\u4e8b\u60c5\uff0c\u5c0e\u81f4\u8ddf\u6211\u7522\u751f\u4e86\u610f\u898b\u4e0a\u7684\u7d1b\u722d<br \/>\n\u6211\u7576\u4e0b\u76f4\u63a5\u8df3\u5230\u684c\u5b50\u4e0a\u548c\u90a3\u500b\u5b69\u5b50\u6253\u8d77\u4f86<br \/>\n\u7531\u65bc\u4e3b\u4efb\u5bb6\u7684\u5b69\u5b50\u6709ADHD\uff0c\u770b\u51fa\u4e86\u6211\u8207\u5176\u4ed6\u5b69\u5b50\u7684\u5dee\u7570\u6027<br \/>\n\u56e0\u6b64\u5efa\u8b70\u6211\u5abd\u5e36\u6211\u53bb\u7cbe\u795e\u79d1\u6aa2\u67e5\u770b\u770b<br \/>\n\u6aa2\u67e5\u51fa\u4f86\u7684\u7d50\u679c\u662f\uff0c\u6211\u6709\u8457\u5178\u578b\u7684\u4e9e\u65af\u7279\u8cea<br \/>\n\u5fc3\u6e2c\u5831\u544a\u7684\u5206\u6578\u5e7e\u4e4e\u63a5\u8fd1\u4e5d\u6210\u6eff\u4e86<br \/>\n\u7136\u800c\u6211\u5abd\u4e26\u4e0d\u63a5\u53d7\u81ea\u5df1\u7684\u5c0f\u5b69\u662f\u7cbe\u795e\u75c5<br \/>\n\u5979\u8a8d\u70ba\u9019\u6a23\u6703\u8b93\u6211\u5728\u9577\u5927\u7684\u9014\u4e2d\u88ab\u8cbc\u4e0a\u6a19\u7c64<br \/>\n\u65bc\u662f\u5c31\u518d\u4e5f\u6c92\u6709\u8b93\u6211\u53bb\u56de\u8a3a\u8ffd\u8e64\uff0c\u9019\u4ef6\u4e8b\u60c5\u4e5f\u4e0d\u4e86\u4e86\u4e4b<\/p>\n<h3 id=\"\u88ab\u8cbc\u4e0a\u6a19\u7c64\u7684\u6210\u9577\"><a class=\"anchor\" href=\"#\u88ab\u8cbc\u4e0a\u6a19\u7c64\u7684\u6210\u9577\">#<\/a> \u88ab\u8cbc\u4e0a\u6a19\u7c64\u7684\u6210\u9577<\/h3>\n<p>\u63a5\u8457\uff0c\u5728\u6211\u6210\u9577\u7684\u904e\u7a0b\u4e2d\uff0c\u6211\u5c31\u4e0d\u65b7\u7684\u5b78\u7fd2\u8207\u4ed6\u4eba\u76f8\u8655<br \/>\n\u7136\u800c\uff0c\u4e8b\u5be6\u8b49\u660e\u6211\u5abd\u731c\u6e2c\u7684\u6c92\u932f<br \/>\n\u5373\u4fbf\u6c92\u6709\u7279\u5225\u53bb\u63d0\u53ca\u6211\u6709\u4e9e\u65af<br \/>\n\u5149\u662f\u8207\u6211\u76f8\u8655\uff0c\u6211\u5c31\u5f88\u5bb9\u6613\u6703\u88ab\u8a8d\u70ba\u662f\u81ea\u9589\u5152<br \/>\n\u4e0d\u7136\u5c31\u662f\u89ba\u5f97\u6211\u7684\u60c5\u7dd2\u5f88\u4e0d\u7a69\u5b9a\uff0c\u5e38\u5e38\u8207\u4eba\u56e0\u70ba\u610f\u898b\u8d77\u885d\u7a81<br \/>\n\u6c42\u5b78\u4e2d\u9014\u751a\u81f3\u7d93\u5e38\u88ab\u8cbc\u4e0a\u8a31\u591a\u7684\u300c\u4e0d\u5408\u7fa4\u300d\u3001\u300c\u602a\u4eba\u300d\u7b49\u6a19\u7c64<br \/>\n\u9023\u8001\u5e2b\u90fd\u5e36\u8457\u6709\u8272\u7684\u773c\u93e1\u770b\u5f85\u6211\uff0c\u4e88\u6211\u5dee\u5225\u5c0d\u5f85<br \/>\n\u7576\u6642\u7684\u6211\u4e5f\u4e0d\u61c2\uff0c\u65e2\u6c92\u6709\u60f3\u592a\u591a\u4e5f\u6c92\u6709\u5f80\u5fc3\u88e1\u53bb<\/p>\n<h3 id=\"\u64a5\u96f2\u898b\u65e5\"><a class=\"anchor\" href=\"#\u64a5\u96f2\u898b\u65e5\">#<\/a> \u64a5\u96f2\u898b\u65e5<\/h3>\n<p>\u76f4\u5230\u570b\u4e2d\uff0c\u6211\u624d\u7b2c\u4e00\u6b21\u7684\u767c\u73fe\u554f\u984c\u7684\u56b4\u91cd\u6027<br \/>\n\u570b\u4e00\u7684\u6642\u5019\uff0c\u6578\u7406\u8cc7\u512a\u73ed\u8209\u8fa6\u7814\u7fd2<br \/>\n\u8981\u6311\u9078\u53bb\u6bd4\u4e16\u754c\u6a5f\u95dc\u738b\u7684\u9078\u624b\uff08\u6709\u9ede\u50cf\u9aa8\u724c\u6548\u61c9\u90a3\u7a2e\u6a5f\u95dc\uff09<br \/>\n\u5728\u6211\u5011\u5c0f\u7d44\u7684\u6a5f\u95dc\u4e32\u63a5\u5b8c\u6210\u4e4b\u5f8c<br \/>\n\u6211\u89ba\u5f97\u6709\u4e9b\u5730\u65b9\u9700\u8981\u512a\u5316\uff0c\u6240\u4ee5\u63d0\u51fa\u8981\u90e8\u5206\u4fee\u6539<br \/>\n\u4e26\u4e14\u6211\u71ac\u591c\u60f3\u4e86\u4e00\u500b\u6211\u5230\u73fe\u5728\u9084\u662f\u89ba\u5f97\u8d85\u68d2\u7684\u5287\u672c<br \/>\n\u7136\u800c\u4e0d\u77e5\u9053\u4ec0\u9ebc\u539f\u56e0\uff0c\u968a\u54e1\u5011\u6253\u6b7b\u4e0d\u63a5\u53d7\u6211\u7684\u610f\u898b<br \/>\n\u65bc\u662f\u6211\u5c31\u5927\u767c\u96f7\u9706\u628a\u6574\u500b\u6a5f\u5668\u7d66\u63a8\u5012\u4e86<\/p>\n<p>\u5728\u9019\u4e4b\u5f8c\uff0c\u8001\u5e2b\u628a\u6211\u6293\u53bb\u7d04\u8ac7<br \/>\n\u7562\u7adf\u662f\u6578\u7406\u8cc7\u512a\u73ed\u7684\u8001\u5e2b\uff0c\u4e5f\u8a31\u662f\u505a\u7279\u6559\u7684\u654f\u92b3\u5ea6\u5427<br \/>\n\u4ed6\u770b\u51fa\u4e86\u6211\u7684\u7279\u8cea\u662f\u8207\u751f\u4ff1\u4f86\u3001\u96e3\u4ee5\u6539\u8b8a\u7684<br \/>\n\u65bc\u662f\u8a9e\u91cd\u5fc3\u9577\u7684\u548c\u6211\u8a8d\u771f\u8ac7\u4e86\u8a31\u4e45\u9019\u4ef6\u4e8b\u60c5<br \/>\n\u5728\u8ac7\u8a71\u4e2d\uff0c\u8001\u5e2b\u62ff\u51fa\u4e86\u4e00\u4efd\u6a94\u6848<br \/>\n\u4e0a\u9762\u8a18\u8f09\u4e86\u6211\u7684\u667a\u5546\u6e2c\u9a57\u9ad8\u9054158<br \/>\n\uff08\u539f\u5247\u4e0a\u5728\u6211\u9019\u5c46\u4e4b\u5f8c\u667a\u5546\u6e2c\u9a57\u6210\u7e3e\u662f\u4e0d\u80fd\u516c\u958b\u7684<br \/>\n\u4f46\u6211\u7684\u6210\u7e3e\u5687\u58de\u4e86\u6574\u500b\u8f14\u5c0e\u5ba4\uff0c\u56e0\u6b64\u8001\u5e2b\u7834\u4f8b\u7d66\u6211\u770b\uff09<br \/>\n\u4ed6\u8868\u793a\uff0c\u4ed6\u76f8\u4fe1\u4ee5\u6211\u7684\u667a\u529b\uff0c\u6211\u7d55\u5c0d\u6709\u8457\u53c8\u591a\u53c8\u597d\u7684\u9748\u611f<br \/>\n\u4f46\u5929\u751f\u7684\u7279\u8cea\uff0c\u6ce8\u5b9a\u6211\u5728\u628a\u6211\u7684\u60f3\u6cd5\u548c\u5225\u4eba\u4ea4\u63db\u6642<br \/>\n\u6703\u9047\u5230\u6bd4\u5e38\u4eba\u66f4\u591a\u7684\u56f0\u96e3\uff0c\u5c24\u5176\u6211\u5011\u6703\u50be\u5411\u65bc\u529b\u722d\u81ea\u5df1\u7684\u770b\u6cd5<br \/>\n\u56fa\u57f7\u5df1\u898b\u7684\u60c5\u6cc1\u5c31\u5bb9\u6613\u8207\u4eba\u8d77\u885d\u7a81<br \/>\n\u56e0\u6b64\u8001\u5e2b\u8981\u6211\u5b78\u7fd2\u7684\u7b2c\u4e00\u4ef6\u4e8b\u60c5\uff0c\u5c31\u662f\u5982\u4f55\u5713\u6ed1\u7684\u8868\u9054\u81ea\u5df1<br \/>\n\u90a3\u4e00\u5929\u7684\u9019\u4e9b\u8a71\u8a9e\uff0c\u5c0d\u6211\u6709\u5982\u64a5\u96f2\u898b\u65e5\uff0c\u6211\u81f3\u4eca\u4ecd\u7136\u6703\u53cd\u8986\u7701\u601d<br \/>\n\u5728\u9019\u4e4b\u5f8c\uff0c\u6211\u4fbf\u5617\u8a66\u53bb\u77ad\u89e3\u53ca\u8a8d\u8b58\u81ea\u5df1<br \/>\n\u4ee5\u53ca\u5b78\u7fd2\u53bb\u89c0\u5bdf\u5225\u4eba\u5c0d\u6211\u7684\u770b\u6cd5\uff0c\u85c9\u6b64\u4f86\u4fee\u6b63\u9019\u4e9b\u554f\u984c<\/p>\n<h3 id=\"\u505a\u81ea\u5df1\u8207\u914d\u5408\u5225\u4eba\"><a class=\"anchor\" href=\"#\u505a\u81ea\u5df1\u8207\u914d\u5408\u5225\u4eba\">#<\/a> \u505a\u81ea\u5df1\u8207\u914d\u5408\u5225\u4eba<\/h3>\n<p>\u65bc\u662f\u5728\u9019\u4e4b\u5f8c\uff0c\u6211\u82b1\u4e0a\u4e86\u8a31\u591a\u6642\u9593\uff0c\u5f9e\u570b\u4e2d\u5230\u5927\u5b78<br \/>\n\u4e0d\u65b7\u7684\u5728\u5b78\u7fd2\u53ca\u7406\u89e3\u4ed6\u4eba\u3001\u4e5f\u5c31\u662f\u666e\u901a\u4eba\u7684\u7fd2\u6163<br \/>\n\u6162\u6162\u7684\u6284\u8d70\u4e86\u5225\u4eba\u5728\u4ea4\u969b\u4e0a\u7684\u4f5c\u6cd5<br \/>\n\u4e5f\u628a\u81ea\u5df1\u7684\u6d89\u7375\u62d3\u5c55\u5230\u50cf\u666e\u901a\u4eba\u7684\u8208\u8da3\u4e00\u6a23\u5bec<br \/>\n\uff08\u5373\u4fbf\u6211\u771f\u6b63\u559c\u6b61\u7684\u4e8b\u7269\u4ecd\u7136\u662f\u90a3\u5c11\u6a23\u5e7e\u9805\uff09<br \/>\n\u8a71\u662f\u9019\u9ebc\u8aaa\uff0c\u4f46\u5929\u751f\u7684\u7f3a\u9677\u8b93\u6211\u5373\u4fbf\u6a21\u4eff\u4e86<br \/>\n\u537b\u4e5f\u9084\u662f\u96e3\u4ee5\u7406\u89e3\u67d0\u4e9b\u884c\u70ba\u7684\u7406\u7531\u53ca\u76ee\u7684<br \/>\n\u8b1b\u767d\u8a71\u9ede\uff0c\u6211\u4e0d\u61c2\u70ba\u4ec0\u9ebc\u9019\u4e9b\u884c\u70ba\u908f\u8f2f\u61c9\u8a72\u8981\u9577\u9019\u6a23<\/p>\n<p>\u5c0d\u6211\u800c\u8a00\uff0c\u6709\u592a\u591a\u7684\u884c\u70ba\u662f\u6211\u7121\u6cd5\u7406\u89e3\u7684\u4e86<br \/>\n\u4ee5\u81f3\u65bc\u6211\u5fc5\u9808\u6627\u8457\u81ea\u5df1\u5fc3\u4e2d\u7684\u610f\u898b\uff0c\u5f37\u8feb\u81ea\u5df1\u505a\u51fa\u6211\u4e0d\u7406\u89e3\u7684\u4e8b<br \/>\n\u4f46\u554f\u984c\u53c8\u4f86\u4e86\uff0c\u6211\u7684\u500b\u6027\u7fd2\u6163\u53bb\u8ffd\u6839\u7a76\u67e2<br \/>\n\u628a\u4e00\u4ef6\u4e8b\u60c5\u7684\u6839\u672c\u91d0\u6e05\u4e86\u624d\u80fd\u5920\u8aaa\u670d\u81ea\u5df1\u8981\u9019\u6a23\u505a<br \/>\n\u56e0\u6b64\u9677\u5165\u4e86\u4e00\u500b\u6211\u89ba\u5f97\u633a\u7cdf\u7cd5\u7684\u58de\u5faa\u74b0<br \/>\n\u9019\u4e5f\u662f\u6211\u9019\u4e9b\u5e74\u4f86\u9047\u904e\u6700\u591a\u6b21\u7684\u56f0\u5883\uff1a<br \/>\n\u300c\u505a\u81ea\u5df1\u300d\u53ca\u300c\u914d\u5408\u5225\u4eba\u300d\u7684\u885d\u7a81<\/p>\n<p>\u5728\u4e0a\u8ff0\u7684\u524d\u63d0\u4e4b\u4e0b<br \/>\n\u6211\u5728\u570b\u4e09\u5230\u9ad8\u4e8c\u4e4b\u9593\u9677\u5165\u4e86\u4e00\u6bb5\u5f88\u9577\u7684\u8ff7\u60d8\u671f<br \/>\n\u751a\u81f3\u5927\u4e8c\u9084\u6709\u5fa9\u767c\u4e00\u6b21<br \/>\n\u7531\u65bc\u4e00\u76f4\u4ee5\u4f86\u5728\u89c0\u5bdf\u53ca\u5b78\u7fd2<br \/>\n\u5c0e\u81f4\u6211\u9700\u8981\u82b1\u8cbb\u5927\u91cf\u7684\u7cbe\u795e\u529b\u5728\u6ce8\u610f\u5468\u906d\u7684\u74b0\u5883<br \/>\n\u597d\u6b7b\u4e0d\u6b7b\uff0c\u4e0a\u8ff0\u7684\u885d\u7a81\u5728\u90a3\u500b\u6642\u671f\u5f88\u56b4\u91cd\u7684\u5f71\u97ff\u6211\u7684\u7cbe\u795e\u72c0\u6cc1<br \/>\n\u6211\u958b\u59cb\u9677\u5165\u4e86\u56b4\u91cd\u7684\u6291\u9b31\u53ca\u7126\u616e<br \/>\n\u90a3\u6642\u5019\u7684\u6211\u8ddf\u56db\u4e0d\u50cf\u4e00\u6a23\uff0c\u53c8\u60f3\u8981\u8868\u73fe\u81ea\u6211<br \/>\n\u53c8\u60f3\u8457\u4e0d\u80fd\u8b93\u81ea\u5df1\u8a0e\u4eba\u53ad<br \/>\n\u5230\u6700\u5f8c\u7684\u7d50\u679c\u5c31\u662f\u6211\u9ad8\u4e00\u904e\u7684\u76f8\u7576\u96e3\u53d7<br \/>\n\u505a\u4e0d\u6210\u81ea\u5df1\uff0c\u53c8\u8b93\u540c\u5115\u7d66\u5b64\u7acb<\/p>\n<h3 id=\"\u6253\u6389\u91cd\u7df4\"><a class=\"anchor\" href=\"#\u6253\u6389\u91cd\u7df4\">#<\/a> \u6253\u6389\u91cd\u7df4<\/h3>\n<p>\u4e00\u5207\u7684\u8f49\u6298\u9ede\u90fd\u4f86\u5f97\u5f88\u7a81\u7136<br \/>\n\u9ad8\u4e00\u4e0b\u7684\u6642\u5019\uff0c\u6dfa\u91ce\u63a8\u85a6\u6211\u63db\u4e00\u500b\u65b0\u8eab\u5206\u548c\u74b0\u5883\u751f\u6d3b<br \/>\n\u65bc\u662f\u6211\u4e0b\u5b9a\u4e86\u6c7a\u5fc3\u6253\u6389\u91cd\u7df4\uff0c\u958b\u59cb\u4f7f\u7528\u4e86\u6c34\u6e90\u5bae\u8a9e\u7684\u540d\u7fa9\u6d3b\u7db2<br \/>\n\u96d6\u7136\u6211\u7684\u70ba\u4eba\u53ca\u98a8\u683c\u9084\u662f\u8ddf\u4ee5\u524d\u820a\u5e33\u865f\u5dee\u4e0d\u591a<br \/>\n\u4f46\u63db\u4e86\u4e00\u500b\u74b0\u5883\u78ba\u5be6\u8d77\u5230\u4e86\u986f\u8457\u7684\u5340\u5225<br \/>\n\u6211\u958b\u59cb\u6709\u5730\u65b9\u80fd\u5920\u5c55\u73fe\u81ea\u6211\u800c\u4e0d\u88ab\u8cea\u7591<br \/>\n\u4e00\u76f4\u627e\u5c0b\u4e0d\u5230\u81ea\u6211\u7684\u6211\uff0c\u7d42\u65bc\u958b\u59cb\u6162\u6162\u7684\u627e\u5230\u4e86\u8a8d\u540c\u611f<br \/>\n\u4e00\u500b\u6709\u8fa6\u6cd5\u8b93\u6211\u5b78\u7fd2\u5982\u4f55\u505a\u4eba\uff0c\u4e5f\u80fd\u8b93\u6211\u4e0d\u5931\u53bb\u672c\u6211\u7684\u5730\u65b9<br \/>\n\u5957\u4e00\u53e5\u767d\u7fbd\u8001\u5f1f\u7684\u8a71\uff0c\u6211\u5728\u9019\u4e9b\u5e74\u982d\u6709\u8d8a\u4f86\u8d8a\u50cf\u4eba\u4e86<\/p>\n<h3 id=\"\u7528\u6587\u5b57\u627e\u5230\u81ea\u5df1\"><a class=\"anchor\" href=\"#\u7528\u6587\u5b57\u627e\u5230\u81ea\u5df1\">#<\/a> \u7528\u6587\u5b57\u627e\u5230\u81ea\u5df1<\/h3>\n<p>\u800c\u5728\u5b78\u7fd2\u8868\u73fe\u81ea\u5df1\u7684\u904e\u7a0b\u4e2d<br \/>\n\u6211\u76e1\u529b\u7684\uff0c\u5728\u6211\u4e00\u500b\u5df2\u901d\u7684\u670b\u53cb\u9732\u9732\u7684\u5efa\u8b70\u4e0b<br \/>\n\u6211\u958b\u59cb\u5617\u8a66\u5b78\u7fd2\uff0c\u5229\u7528\u6587\u5b57\u7684\u8f09\u9ad4\u7814\u7a76\u5982\u4f55\u8868\u9054<br \/>\n\u5728\u6211\u83ab\u540d\u5176\u5999\u62ff\u5230\u4e86\u4e00\u500b\u6587\u5b78\u734e\u4e4b\u5f8c\uff0c\u958b\u59cb\u5c0d\u81ea\u5df1\u6709\u4e86\u9ede\u81ea\u4fe1<br \/>\n\u6f38\u6f38\u7684\u6211\u958b\u59cb\u5efa\u7acb\u8d77\u4e86\u81ea\u5df1\u7684\u98a8\u683c<br \/>\n\u5728\u6211\u7368\u6709\u7684\u9818\u57df\u4e0a\u8c4e\u7acb\u6211\u7684\u9b45\u529b\u4ee5\u53ca\u50f9\u503c\u89c0<br \/>\n\u800c\u6b63\u56e0\u70ba\u900f\u904e\u9019\u7a2e\u628a\u6e9d\u901a\u8207\u5beb\u4f5c\u878d\u5408\u7684\u6280\u5de7<br \/>\n\u4e5f\u624d\u6709\u4e86\u4ee5\u524d\u5bae\u8a9e\u5361\u7684\u7cfb\u5217<br \/>\n\u4e00\u65b9\u9762\u662f\u5206\u4eab\u6211\u5c0d\u65bc\u6e9d\u901a\u7684\u5fc3\u5f97<br \/>\n\u4e00\u65b9\u9762\u662f\u8a13\u7df4\u81ea\u5df1\u7528\u300c\u5225\u4eba\u80fd\u61c2\u7684\u65b9\u5f0f\u300d\u8868\u9054<\/p>\n<h3 id=\"\u73fe\u5728\"><a class=\"anchor\" href=\"#\u73fe\u5728\">#<\/a> \u73fe\u5728<\/h3>\n<p>\u4f46\u6210\u4e5f\u7db2\u8def\uff0c\u6557\u4e5f\u7db2\u8def<br \/>\n\u57282025\u5e74\u7684\u73fe\u5728<br \/>\n\u7db2\u8def\u8cc7\u8a0a\u6d41\u901a\u7684\u901f\u5ea6\u5feb\u5230\u9023\u6211\u90fd\u53cd\u61c9\u4e0d\u904e\u4f86<br \/>\n\u771f\u5047\u6df7\u96dc\u7684\u8cc7\u8a0a\u3001\u3001\u611a\u8822\u7684\u4eba\u985e\u8a8d\u77e5<br \/>\n\u4e00\u80a1\u8166\u7684\u5168\u90e8\u6d41\u9032\u6211\u7684\u8166\u6d77\u88e1<br \/>\n\u5c0e\u81f4\u6211\u5230\u8fd1\u671f\u53c8\u958b\u59cb\u8cea\u7591\u8d77\u81ea\u5df1\u7684\u50f9\u503c\u89c0<br \/>\n\u6211\u76f8\u4fe1\u6211\u78ba\u5be6\u4e0d\u5dee\uff0c\u53ea\u662f\u898b\u8b58\u5f97\u8d8a\u4f86\u8d8a\u591a<br \/>\n\u81ea\u5df1\u5c0d\u65bc\u81ea\u5df1\u7684\u5b9a\u4f4d\u4e5f\u6703\u76f8\u5c0d\u6a21\u7cca<br \/>\n\u63a5\u8457\u5c31\u6703\u8b8a\u56de\u539f\u672c\u7684\u6a23\u5b50\uff0c\u6703\u672c\u80fd\u5730\u70ba\u4e86\u60f3\u8981\u8b49\u660e\u81ea\u5df1<br \/>\n\u8207\u5225\u4eba\u7522\u751f\u610f\u898b\u4e0a\u7684\u5206\u6b67<\/p>\n<h2 id=\"\u7d50\u8a9e\"><a class=\"anchor\" href=\"#\u7d50\u8a9e\">#<\/a> \u7d50\u8a9e<\/h2>\n<p>\u76f4\u5230\u73fe\u5728\uff0c\u7d93\u904e\u9577\u4e45\u7684\u8a13\u7df4\u8207\u5b78\u7fd2<br \/>\n\u6211\u81ea\u8a8d\u70ba\u5df2\u7d93\u80fd\u5920\u5728\u751f\u6d3b\u4e2d\u505a\u5230\u878d\u5165\u5927\u5bb6<br \/>\n\u6240\u4ee5\u6216\u8a31\u5927\u5bb6\u5728\u65e5\u5e38\u4e92\u52d5\u4e2d\u5176\u5be6\u4e0d\u6703\u8a18\u5f97\u6211\u6709\u81ea\u9589\u75c7<br \/>\n\u4f46\u5076\u723e\uff0c\u53ef\u80fd\u5728\u6211\u7cbe\u795e\u5931\u7a69\u7684\u6642\u5019\uff0c\u9084\u662f\u6709\u6a5f\u6703\u6703\u88ab\u6253\u56de\u539f\u5f62<br \/>\n\u8b8a\u6210\u90a3\u500b\u5f88\u81ea\u6211\u610f\u8b58\u904e\u5269\u3001\u60c5\u7dd2\u63a7\u7ba1\u4e0d\u6613\u7684\u6c34\u6e90\u5bae\u8a9e<br \/>\n\u53ea\u662f\u5373\u4fbf\u5728\u9019\u4e9b\u7279\u8cea\u7684\u5f71\u97ff\u4e0b\uff0c\u7e31\u4f7f\u5728\u76f8\u4e92\u7406\u89e3\u6642\u4ecd\u7136\u6703\u6709\u969c\u7919<br \/>\n\u6211\u4e5f\u9084\u662f\u5e0c\u671b\u53ef\u4ee5\u548c\u5927\u5bb6\u4e00\u8d77\u5206\u4eab\u6211\u81ea\u5df1\u7684\u60f3\u6cd5<br \/>\n\u548c\u904e\u53bb\u4e00\u6a23\uff0c\u7e7c\u7e8c\u505a\u90a3\u500b\u5927\u5bb6\u89ba\u5f97\u5f88\u7406\u6027\u5f88\u8070\u660e\u7684\u6c34\u6e90\u5bae\u8a9e<br \/>\n\u5728\u672a\u4f86\uff0c\u9084\u8acb\u5927\u5bb6\u591a\u591a\u6307\u6559<\/p>\n","tags":["Diary","Diary"]},{"id":"https:\/\/miyago9267.com\/Diary\/2025\/0607\/","url":"https:\/\/miyago9267.com\/Diary\/2025\/0607\/","title":"[\u672d\u8a18] 20250607 - \u597d\u50cf\u53c8\u6709\u4eba\u751f\u65e5\u4e86\u9912","date_published":"2025-06-06T16:00:00.000Z","content_html":"<p>\u6211\u7adf\u7136\u53c8\u6d3b\u904e\u4e86\u4e00\u5e74<br \/>\n\u771f\u7684\u662f\u592a\u795e\u5947\u8fa3<\/p>\n<span id=\"more\"><\/span>\n<p>\u4eca\u5929\u662f2025\u5e74\u76846\u67081\u865f<\/p>\n<p>\u563f \u6c92\u932f \u53c8\u662f\u63d0\u65e9\u6253\u597d\u9577\u6587\u7684\u597d\u7fd2\u6163<br \/>\n\u4eca\u5e74\u524d\u8a00\u5ee2\u8a71\u5c31\u5c11\u4e00\u9ede \u76f4\u63a5\u958b\u59cb\u788e\u788e\u5ff5\u8b1b\u53e4\u6642\u9593\u5427<\/p>\n<p>\u8a71\u662f\u9019\u9ebc\u8aaa\u5566 \u4e0d\u904e\u4eca\u5e74\u7684rewind\u6c92\u4ec0\u9ebc\u597d\u8b1b\u7684<br \/>\n\u5927\u90e8\u5206\u6642\u9593\u90fd\u662f\u5728\u5de5\u4f5c\u5de5\u4f5c\u5de5\u4f5c<br \/>\n\u6642\u9593\u90fd\u6d6a\u8cbb\u5728\u5de5\u4f5c\u8cfa\u9322\u4e86\u6839\u672c\u6c92\u4ec0\u9ebc\u6642\u9593\u5e79\u9ede\u5176\u4ed6\u4e8b\u60c5<br \/>\n\u81f3\u65bc\u5de5\u4f5c\u5916\u7684\u6642\u9593\u5c31\u6bd4\u8f03\u5e38\u6771\u8dd1\u897f\u8dd1<br \/>\n\u8d77\u78bc\u53bb\u5e74\u4e00\u6574\u5e74\u5149\u662f\u53f0\u5317\u5c31\u8dd1\u4e86\u597d\u5e7e\u6b21<br \/>\n\u611f\u89ba\u8ddf\u51fa\u5dee\u4e00\u6a23\u7684\u8ddf\u5404\u7a2e\u4e0d\u540c\u9818\u57df\u7684\u5925\u4f34\u4ea4\u6d41\u805a\u6703<br \/>\n\u96d6\u7136\u8dd1\u4f86\u8dd1\u53bb\u5f88\u7d2f \u4f46\u9817\u6709\u8b93\u6211\u7576\u4e00\u4e0b\u793e\u4ea4\u5de8\u982d\u7684\u865b\u69ae\u611f<\/p>\n<p>\u4e5f\u662f\u56e0\u70ba\u6536\u5165\u76f8\u5c0d\u7a69\u5b9a\u4e86<br \/>\n\u7d42\u65bc\u958b\u59cb\u6709\u8fa6\u6cd5\u50cf\u666e\u901a\u4eba\u4e00\u6a23\u51fa\u53bb\u805a\u9910\u4e86<br \/>\n\u4e0d\u50cf\u6211\u572820\u6b72\u4ee5\u524d\u7d55\u591a\u6578\u6642\u5019\u90fd\u662f\u81ea\u5df1\u4e00\u500b\u4eba\u7aa9\u8457<br \/>\n\u73fe\u5728\u7684\u751f\u6d3b\u74b0\u5883\u6f38\u6f38\u7684\u6709\u8fa6\u6cd5\u805a\u96c6\u4e00\u4e9b\u4e0d\u540c\u7684\u4eba\u5011<br \/>\n\u4e5f\u662f\u5230\u9019\u6642\u5019\u624d\u767c\u73fe \u6211\u7d2f\u7a4d\u591a\u5e74\u7684\u4eba\u8108<br \/>\n\u5f15\u8d77\u7684\u865f\u53ec\u529b\u5176\u5be6\u9084\u4e0d\u7b97\u592a\u5dee<br \/>\n\u7c21\u55ae\u7d04\u4e00\u7d04\u53ef\u4ee5\u62c9\u5230\u5341\u4f86\u500b\u4eba\u4e00\u8d77\u4f86\u966a\u6211\u5403\u98ef<br \/>\n\u90a3\u77ac\u9593\u624d\u610f\u8b58\u5230\u81ea\u5df1\u5176\u5be6\u6c92\u6709\u610f\u5916\u4e2d\u7684\u9019\u9ebc\u6c92\u670b\u53cb<br \/>\n\u53ea\u662f\u5728\u90a3\u4e4b\u524d\u90fd\u6c92\u6709\u6a5f\u6703\u8b93\u6211\u611f\u53d7\u5230\u9019\u4ef6\u4e8b\u7f77\u4e86<br \/>\n\u4e5f\u53ef\u80fd\u662f\u771f\u7684\u6211\u6709\u5728\u6162\u6162\u9032\u6b65\u548c\u7d2f\u7a4d\u81ea\u5df1\u7684\u50f9\u503c\u7684\u9ad4\u73fe\u5427<\/p>\n<p>\u6216\u8a31\u662f\u6211\u9577\u5927\u4e86 \u4e5f\u6216\u8a31\u662f\u53c8\u66f4\u8001\u6210\u4e86\u4e00\u4e9b<br \/>\n\u5728\u904e\u53bb\u7684\u4e00\u5e74\u96d6\u7136\u4e5f\u767c\u751f\u4e86\u4e0d\u5c11\u5927\u4e8b\u60c5<br \/>\n\u4f46\u5728\u6211\u7684\u9ad4\u611f\u4e4b\u4e2d \u4e26\u4e0d\u518d\u50cf\u904e\u53bb\u5e7e\u5e74\u4e00\u6a23<br \/>\n\u6bcf\u5e74\u90fd\u89ba\u5f97\u4e16\u754c\u5927\u8b8a\u3001\u5f77\u5f7f\u4e0d\u5728\u540c\u4e00\u500b\u7dad\u5ea6\u4e00\u6a23<br \/>\n\u800c\u662f\u6709\u7a2e\u76f8\u5c0d\u8da8\u65bc\u5e73\u7a69\u7684\u611f\u89ba<br \/>\n\u9019\u624d\u767c\u73fe\u6211\u751f\u6d3b\u7684\u74b0\u5883\u5176\u5be6\u610f\u5916\u7684\u633a\u7121\u804a\u7684<br \/>\n\u6bcf\u5929\u5c31\u662f\u4e0a\u73ed\u3001\u5403\u98ef\u3001\u6253\u6771\u6771\u3001\u966a\u670b\u53cb\u6253\u5c41\u3001\u7761\u89ba<br \/>\n\u5982\u6b64\u4e00\u822c\u6301\u7e8c\u8457\u4e0d\u600e\u9ebc\u8b8a\u7684\u5faa\u74b0<br \/>\n\u65e2\u6c92\u6709\u904e\u591a\u7684\u885d\u64ca \u4e5f\u6c92\u6709\u4ec0\u9ebc\u7279\u6b8a\u7684\u60b8\u52d5<\/p>\n<p>\u6211\u89ba\u5f97\u9019\u662f\u597d\u4e8b \u4f46\u65bc\u6b64\u540c\u6642 \u4e5f\u9700\u8981\u7d66\u81ea\u5df1\u4e0a\u500b\u8b66\u60d5<br \/>\n\u96a8\u8457\u6642\u9593\u7684\u63a8\u79fb \u6211\u4e5f\u6f38\u6f38\u7684\u9081\u4e0a\u4e86\u66fe\u7d93\u6211\u8a0e\u53ad\u7684\u5927\u4eba\u7684\u9053\u8def<br \/>\n\u9700\u8981\u70ba\u81ea\u5df1\u7684\u751f\u6d3b\u8ca0\u8cac \u6709\u8db3\u5920\u7684\u80fd\u529b\u53bb\u57f7\u884c\u6211\u60f3\u505a\u7684\u76ee\u6a19\u548c\u6210\u5c31<br \/>\n\u4f46\u4e5f\u4ee3\u8868\u6211\u8d8a\u4f86\u8d8a\u7121\u804a\u4e86 \u7c21\u800c\u8a00\u4e4b<br \/>\n\u6211\u6b63\u5728\u6210\u70ba\u6211\u5b69\u63d0\u6642\u5019\u773c\u4e2d\u7684\u90a3\u7a2e\u7121\u804a\u5927\u4eba<br \/>\n\u8b1b\u96e3\u807d\u9ede \u770b\u5f85\u4e8b\u60c5\u7684\u89d2\u5ea6\u4e5f\u6703\u66f4\u73fe\u5be6<br \/>\n\u4ee5\u524d\u5c31\u5df2\u7d93\u5920\u73fe\u5be6\u4e86 \u73fe\u5728\u70ba\u4e86\u751f\u6d3b\u4e0d\u5f97\u4e0d\u66f4\u73fe\u5be6<br \/>\n\u6709\u5920\u60b2\u54c0\uff08\u7c73\u4e9e\u9d3f\u6d88\u5931\u8cbc\u5716<\/p>\n<p>\u7576\u7136 \u53ef\u4ee5\u7684\u8a71\u6211\u9084\u662f\u7121\u8ad6\u6211\u9577\u5230\u591a\u5927<br \/>\n\u90fd\u80fd\u5920\u7dad\u6301\u8457\u6c34\u6e90\u5bae\u8a9e\u4e00\u8cab\u7684\u4eba\u8a2d<br \/>\n\u4ee5\u5c08\u696d\u3001\u7406\u6027\u3001\u51b7\u975c\u7684\u614b\u5ea6\u9762\u5c0d\u793e\u6703\u8207\u751f\u6d3b<br \/>\n\u4f46\u540c\u6642\u4e5f\u80fd\u5920\u5728\u4e0d\u9700\u8981\u6b63\u7d93\u9762\u5c0d\u4e8b\u60c5\u7684\u6642\u5019<br \/>\n\u4fdd\u6301\u8457\u8d64\u5b50\u4e4b\u5fc3 \u4e0d\u8981\u8b93\u81ea\u5df1\u88ab\u9019\u500b\u6c61\u7a62\u7684\u73fe\u5be6\u4e16\u754c\u7684\u6240\u8150\u8755<\/p>\n<p>\u800c\u5728\u9019\u7a2e\u53ef\u60b2\u6253\u5de5\u4eba\u7684\u73fe\u5728<br \/>\n\u4e16\u754c\u9084\u662f\u4e00\u6a23\u7121\u8996\u6211\u7684\u75db\u82e6\u9762\u5177\u7684\u54c0\u865f\u7e7c\u7e8c\u8f49\u52d5\u8457<br \/>\n\u7136\u800c \u6211\u5c0d\u65bc\u9019\u4e16\u754c\u7684\u770b\u6cd5\u4f9d\u820a\u8207\u4ee5\u5f80\u90fd\u4e0d\u8b8a<br \/>\n\u5373\u4fbf\u6211\u6240\u8655\u7684\u74b0\u5883\u96a8\u8457\u6211\u9577\u5927\u8d8a\u4f86\u8d8a\u4e82\u4e03\u516b\u7cdf<br \/>\n\u4f46\u6211\u4ecd\u7136\u89ba\u5f97 \u80fd\u6d3b\u8457\u770b\u8457\u9019\u6df7\u6c8c\u800c\u7f8e\u9e97\u7684\u4e16\u754c<br \/>\n\u6709\u6642\u5019\u4e5f\u4e0d\u932f\u5462<\/p>\n","tags":["Diary","Diary"]},{"id":"https:\/\/miyago9267.com\/Diary\/2025\/0402\/","url":"https:\/\/miyago9267.com\/Diary\/2025\/0402\/","title":"[\u4f01\u5283] 2025\u6c34\u6e90\u5bb6\u611a\u4eba\u7bc0\u6d3b\u52d5 - \u653b\u7565\u672c","date_published":"2025-04-01T15:00:00.000Z","content_html":"<p>\u55e8\u5404\u4f4d<br \/>\n\u6211\u53c8\u4f86\u4e86<br \/>\n\u548c\u5f80\u5e74\u4e00\u6a23 \u5e36\u8457\u65b0\u7684\u611a\u4eba\u7bc0\u4f01\u5283\u4f86\u5566<\/p>\n<span id=\"more\"><\/span>\n<p>\u4eca\u5e74\u548c\u53bb\u5e74\u4e00\u6a23\u505a\u7684\u662f\u5287\u60c5\u5411\u7684\u904a\u6232<br \/>\n\u53ea\u4e0d\u904e\u76f8\u8f03\u65bc\u53bb\u5e74\uff0c\u5287\u672c\u6539\u70ba\u4e0d\u9019\u9ebc\u56b4\u8085<br \/>\n\u4e5f\u52a0\u5165\u4e86\u7f8e\u8853\u90e8\u9580\u4f86\u5354\u52a9\u6211\u5275\u4f5c<\/p>\n<h2 id=\"\u7de3\u8d77\"><a class=\"anchor\" href=\"#\u7de3\u8d77\">#<\/a> \u7de3\u8d77<\/h2>\n<p>\u773e\u6240\u5468\u77e5\uff0c\u5f9e2022\u5e74\u958b\u59cb\uff0c\u6211\u6bcf\u5e74\u90fd\u6703\u8209\u8fa6\u611a\u4eba\u7bc0\u4f01\u5283<br \/>\n\u5f9e2022\u5e74\u7684\u5716\u7247\u96b1\u5beb\u8853\u958b\u59cb\u30012023\u7684\u5c0f\u578bCTF<br \/>\n2024\u5e74\u7684\u5df4\u5225\u5854\u75c5\u9662\u6587\u5b57\u5192\u96aa<br \/>\n\u5230\u4eca\u5e742025\u7d42\u65bc\u9081\u5411\u4e86\u6709\u5716\u7247\u7684\u8996\u89ba\u5c0f\u8aaa<br \/>\n\u4e26\u4e14\u878d\u5408\u4e86\u5927\u91cf\u7684\u89e3\u8b0e\u548c\u5287\u60c5<br \/>\n\u8b93\u559c\u6b61\u89e3\u8b0e\u904a\u6232\u7684\u73a9\u5bb6\u7d55\u5c0d\u6703\u611b\u4e0d\u91cb\u624b<\/p>\n<h2 id=\"\u904a\u6232\u672c\u9ad4\"><a class=\"anchor\" href=\"#\u904a\u6232\u672c\u9ad4\">#<\/a> \u904a\u6232\u672c\u9ad4<\/h2>\n<p>\u5728\u5f80\u4e0b\u4e4b\u524d\uff0c\u5982\u679c\u4f60\u9084\u6c92\u73a9\u904e\uff0c\u53ef\u4ee5\u73fe\u5728\u505c\u4e0b\u4f86<a href=\"https:\/\/2025.miyago9267.com\">\u9ede\u9019\u88e1<\/a>\u9032\u53bb\u73a9<\/p>\n<p>\u5982\u679c\u6c92\u554f\u984c\u7684\u8a71\uff0c\u5287\u60c5\u653b\u7565\u5c31\u8981\u958b\u59cb\u4e86\u5594<\/p>\n<h2 id=\"\u5287\u60c5\u653b\u7565\"><a class=\"anchor\" href=\"#\u5287\u60c5\u653b\u7565\">#<\/a> \u5287\u60c5\u653b\u7565<\/h2>\n<p>\u57fa\u672c\u4e0a\u5168\u7a0b\u90fd\u662f\u7dda\u6027\u5287\u60c5<br \/>\n\u591a\u6578\u95dc\u5361\u4e5f\u90fd\u53ef\u4ee5\u76f4\u63a5\u9078\u64c7\u653e\u68c4<br \/>\n\u4f46\u9084\u662f\u4f8b\u884c\u6027\u7684\u8b1b\u89e3\u4e00\u4e0b\u5404\u500b\u95dc\u5361\u7684\u8a2d\u8a08\u601d\u8def\u53ca\u6b63\u8a2d\u89e3\u6cd5<\/p>\n<h3 id=\"\u5e8f\u7ae0\"><a class=\"anchor\" href=\"#\u5e8f\u7ae0\">#<\/a> \u5e8f\u7ae0<\/h3>\n<p>\u7d14\u5287\u60c5 \u6c92\u6709\u95dc\u5361<\/p>\n<h3 id=\"\u7b2c\u4e00\u7ae0\"><a class=\"anchor\" href=\"#\u7b2c\u4e00\u7ae0\">#<\/a> \u7b2c\u4e00\u7ae0<\/h3>\n<p>\u50c5\u6709\u5c0d\u8a71\u8def\u7dda\u53ca\u4e00\u500b\u62fc\u5716\uff0c\u62fc\u5716\u6c92\u6709\u4ec0\u9ebc\u8a2d\u8a08\uff0c\u591a\u5617\u8a66\u5e7e\u6b21\u5c31\u6703\u904e\u4e86<\/p>\n<h3 id=\"\u7b2c\u4e8c\u7ae0\"><a class=\"anchor\" href=\"#\u7b2c\u4e8c\u7ae0\">#<\/a> \u7b2c\u4e8c\u7ae0<\/h3>\n<p>\u50c5\u6709\u5c0d\u8a71\u8def\u7dda\uff0c\u5287\u60c5\u4e2d\u90fd\u6709\u89e3\u91cb\u908f\u8f2f\uff0c\u591a\u8d70\u5e7e\u6b21\u4e00\u5b9a\u6703\u5230<\/p>\n<h3 id=\"\u7b2c\u4e09\u7ae0\"><a class=\"anchor\" href=\"#\u7b2c\u4e09\u7ae0\">#<\/a> \u7b2c\u4e09\u7ae0<\/h3>\n<p>\u5176\u4e00\uff1a<br \/>\nbase64\u7de8\u78bc\uff0c\u5f9e\u300c\u5c0d\u8a71\u7d00\u9304\u300d\u53ef\u4ee5\u8907\u88fd\u5230\u5bc6\u6587\uff0c\u62ff\u53bbBase64\u89e3\u78bc\u5668\u89e3\u78bc\u5373\u53ef\u7372\u5f97\u7db2\u5740<br \/>\n\u7136\u800c\u9019\u500b\u7db2\u5740\u662f\u5047\u7684\uff0c\u53ea\u8981\u628a\u7db2\u5740\u586b\u9032\u53bb\u8f38\u5165\u6846\u5373\u53ef<\/p>\n<p>\u5176\u4e8c\uff1a<br \/>\n\u8207\u5176\u4e00\u76f8\u540c\uff0c\u4f7f\u7528Base64\u7de8\u78bc\uff0c\u540c\u6a23\u5f9e\u300c\u5c0d\u8a71\u7d00\u9304\u300d\u53ef\u4ee5\u8907\u88fd\u5230\u5bc6\u6587<br \/>\n\u62ff\u53bbBase64\u89e3\u78bc\u5668\u6703\u767c\u73fe\u9084\u9700\u8981\u518d\u9032\u884c\u4e00\u6b21\u89e3\u78bc\uff0c\u7e3d\u5171\u9700\u8981\u5169\u6b21B64\u89e3\u78bc<br \/>\n\u6700\u5f8c\u7684\u7d50\u679c\u4ecd\u820a\u6703\u662f\u4e00\u500b\u5bc6\u6587\uff0c\u6839\u64da\u683c\u5f0f\u53ef\u4ee5\u731c\u6e2c\u662f\u51f1\u6492\u52a0\u5bc6<br \/>\n\u5617\u8a66\u4f4d\u79fb\u5f8c\u5f97\u51fa\u7b54\u6848\u70baflag{XXX}\u7684\u683c\u5f0f\u5373\u70ba\u6b63\u89e3<\/p>\n<h3 id=\"\u7b2c\u56db\u7ae0\"><a class=\"anchor\" href=\"#\u7b2c\u56db\u7ae0\">#<\/a> \u7b2c\u56db\u7ae0<\/h3>\n<p>\u5176\u4e00\uff1a<\/p>\n<p><img loading=\"lazy\" src=\"https:\/\/2025.miyago9267.com\/images\/items\/usb.png\" alt=\"\" \/><\/p>\n<p>\u9019\u500b\u95dc\u5361\u7684\u8a2d\u8a08\u5176\u5be6\u6709\u9ede\u767d\u7661<br \/>\n\u56e0\u70ba\u9019\u500b\u95dc\u5361\u7684\u8a2d\u8a08\u662f\u8981\u8b93\u73a9\u5bb6\u53bb\u627e\u51fa\u9019\u500bUSB\u7684\u5bc6\u78bc<br \/>\n\u7136\u800c\u5be6\u969b\u4e0a\u6839\u672c\u4e0d\u6703\u6709\u4eba\u6709\u8010\u5fc3\u7684\u53bb\u89e3\u6954\u5f62\u6587\u5b57<\/p>\n<p>\u7b2c\u4e00\u884c\u4ee3\u8868\u7684\u662f\u7f8e\u7d22\u4e0d\u9054\u7c73\u4e9e<br \/>\n\u7b2c\u4e8c\u884c\u4ee3\u8868\u7684\u662f\u4e9e\u8ff0\u6587\u660e<br \/>\n\u7b2c\u4e09\u884c\u4ee3\u8868\u7684\u662f\u6559\u7687\uff08\u5927\u963f\u5361\u7d0d\u5854\u7f85\u724c\u7b2c\u4e94\u865f\uff09<br \/>\n\u7b2c\u56db\u884c\u4ee3\u8868\u7684\u662f\u5ba4\u753a\u738b\u671d<\/p>\n<p>\u5c07\u56db\u884c\u7684\u5c0d\u61c9\u5b57\u53d6\u51fa\u4f86\uff0c\u5373\u70ba\u7f8e\u8853\u6559\u5ba4<\/p>\n<p>\u5176\u4e8c\uff1a<br \/>\n<img loading=\"lazy\" src=\"https:\/\/2025.miyago9267.com\/images\/items\/integral.png\" alt=\"\" \/><\/p>\n<p>\u9019\u500b\u662f\u7d14\u5fae\u7a4d\u5206\u984c\uff0c\u4e1f\u9032\u53bbWolframAlpha\u53ef\u4ee5\u5f97\u5230\u7b54\u6848\u70bapi<br \/>\n\u7136\u800c\u5bc6\u78bc\u7684\u8a2d\u8a08\u662f\u7b2c\u4e8c\u4f4d\u662f\u7b26\u865f\uff0c\u90a3\u552f\u4e00\u7684\u53ef\u80fd\u6027\u5373\u70ba3.14<br \/>\n\u7576\u7136\u5982\u679c\u4f60\u8981\u76f4\u63a5\u89e3\u7a4d\u5206\u4e5f\u884c\u5566\uff0c\u5c31arctan\u51fd\u6578\u800c\u5df2<\/p>\n<h3 id=\"\u7b2c\u4e94\u7ae0\u7b2c\u516d\u7ae0\"><a class=\"anchor\" href=\"#\u7b2c\u4e94\u7ae0\u7b2c\u516d\u7ae0\">#<\/a> \u7b2c\u4e94\u7ae0&amp;&amp;\u7b2c\u516d\u7ae0<\/h3>\n<p>\u7dda\u7d22\u85cf\u5728\u5287\u60c5\u4e2d<br \/>\n\u544a\u8a34\u73a9\u5bb6\u8981\u627e\u5230\u6c34\u6e90\u7c73\u4e9e\u679c\u548c\u548c\u6708\u6709\u5e78\u5728\u4e00\u8d77\u7684\u5730\u65b9<br \/>\n\u800c\u73fe\u5be6\u4e2d\uff0c\u9019\u5169\u500b\u4eba\u6b63\u597d\u662f\u5169\u4f4d\u904a\u6232\u7684\u958b\u767c\u8005<br \/>\n\u56e0\u6b64\u6211\u5011\u5728\u904a\u6232\u4e2d\u4e00\u8d77\u51fa\u73fe\u7684\u5730\u65b9\u53ea\u6709\u9078\u55ae\u76ee\u9304\u7684\u300c\u88fd\u4f5c\u540d\u55ae\u300d\u9801\u9762<br \/>\n\u5c0d\u9019\u500b\u9801\u9762\u7684\u4e0b\u65b9Hover\u7d043\u79d2\u5c31\u53ef\u4ee5\u7372\u5f97\u5bc6\u78bc\u4e86<\/p>\n<h3 id=\"\u7b2c\u4e03\u7ae0\"><a class=\"anchor\" href=\"#\u7b2c\u4e03\u7ae0\">#<\/a> \u7b2c\u4e03\u7ae0<\/h3>\n<p>\u7d14\u5287\u60c5\u95dc\uff0c\u6240\u6709\u9078\u9805\u9ede\u5b8c\u5373\u53ef\u5b8c\u6210<\/p>\n<h2 id=\"\u8a2d\u5b9a\u96c6\"><a class=\"anchor\" href=\"#\u8a2d\u5b9a\u96c6\">#<\/a> \u8a2d\u5b9a\u96c6<\/h2>\n<img loading=\"lazy\" src=\"https:\/\/2025.miyago9267.com\/images\/chara\/01.png\" class=\"imgs\"\/>\n<h3 id=\"\u5de5\u85e4\u5f4c\u4ec0\"><a class=\"anchor\" href=\"#\u5de5\u85e4\u5f4c\u4ec0\">#<\/a> \u5de5\u85e4\u5f4c\u4ec0<\/h3>\n<p>\u5de5\u85e4\u53d6\u81ea\u540d\u5075\u63a2\u67ef\u5357\u4e2d\u7684\u5de5\u85e4\u65b0\u4e00<br \/>\n\u5f4c\u4ec0\u662f\u96a8\u4fbf\u60f3\u7684<br \/>\n\u8a2d\u5b9a\u4e0a\u7406\u5de5\u751f\uff0c\u4f5c\u8005Miyago\u7684\u8272\u9055\u7248<\/p>\n<img loading=\"lazy\" src=\"https:\/\/2025.miyago9267.com\/images\/chara\/nobita.png\" class=\"imgs\"\/>\n<h3 id=\"\u8036\u6bd4\u5927\u718a\"><a class=\"anchor\" href=\"#\u8036\u6bd4\u5927\u718a\">#<\/a> \u8036\u6bd4\u5927\u718a<\/h3>\n<p>\u540d\u5b57\u53d6\u81ea\u54c6\u5566A\u5922\u4e2d\u7684\u91ce\u6bd4\u5927\u96c4<br \/>\n\u8a2d\u5b9a\u4e0a\u662f\u6587\u7d44\u751f\uff0c\u8d85\u7d1a\u611b\u5403<\/p>\n<img loading=\"lazy\" src=\"https:\/\/2025.miyago9267.com\/images\/chara\/02.png\" class=\"imgs\"\/>\n<h3 id=\"\u9ed2\u96e8\u7b77\u5b50\"><a class=\"anchor\" href=\"#\u9ed2\u96e8\u7b77\u5b50\">#<\/a> \u9ed2\u96e8\u7b77\u5b50<\/h3>\n<p>\u540d\u5b57\u53d6\u81ea\u602a\u76dc\u5c0f\u5b50\u57fa\u5fb7\u4e2d\u7684\u57fa\u5fb7\u672c\u540d\u9ed2\u7fbd\u5feb\u6597<br \/>\n\u7b77\u5b50\u662f\u70ba\u4e86\u8b93\u4ed6\u641e\u7b11\u4e00\u9ede\uff0c\u4ee5\u53ca\u70ba\u4e86\u7b26\u5408\u5973\u6027\u624d\u8a2d\u5b9a\u7684<br \/>\n\u8a2d\u5b9a\u4e0a\u662f\u559c\u6b61\u89e3\u8b0e\u7684\u6578\u7406\u8cc7\u512a\u73ed\u5b78\u751f\uff0c\u5168\u79d1\u90fd\u7cbe\u901a<\/p>\n<img loading=\"lazy\" src=\"https:\/\/2025.miyago9267.com\/images\/chara\/04.png\" class=\"imgs\"\/>\n<h3 id=\"\u4f60\"><a class=\"anchor\" href=\"#\u4f60\">#<\/a> \u4f60<\/h3>\n<p>\u5287\u60c5\u4e2d\u7684\u4e3b\u89c0\u8996\u89d2<br \/>\n\u5410\u69fd\u5f79\uff0c\u672c\u4f86\u662f\u6c92\u6709\u8981\u55ae\u7368\u8a2d\u5b9a\u7684<br \/>\n\u800c\u662f\u8b93\u4ed6\u7684\u6232\u5206\u5206\u958b\u7d66\u5de5\u85e4\u548c\u8036\u6bd4<br \/>\n\u4f46\u7531\u65bc\u7e6a\u5e2b\u756b\u4e86\u90a3\u5c31\u4e7e\u8106\u63a1\u7528\u4e86<br \/>\n\u8a2d\u5b9a\u4e0a\u662f\u7406\u7d44\u7684\uff0c\u6839\u64da\u5287\u60c5\u9700\u6c42\u8b8a\u6210\u4e86\u4e00\u500b\u540c\u6a23\u5168\u79d1\u7cbe\u901a\u7684\u89d2\u8272<\/p>\n<h2 id=\"\u88fd\u4f5c\u611f\u60f3\"><a class=\"anchor\" href=\"#\u88fd\u4f5c\u611f\u60f3\">#<\/a> \u88fd\u4f5c\u611f\u60f3<\/h2>\n<p>\u9019\u6b21\u5f88\u5e78\u904b\u53ef\u4ee5\u8ddf\u7e6a\u5e2b\u548c\u6708\u5408\u4f5c<br \/>\n\u5373\u4fbf\u6bcf\u5e74\u6211\u90fd\u6709\u6301\u7e8c\u7522\u51fa\u611a\u4eba\u7bc0\u4f01\u5283<br \/>\n\u4f46\u9019\u662f\u6211\u7b2c\u4e00\u6b21\u6709\u914d\u5408\u7f8e\u8853\u505a\u51fa\u5287\u60c5\u4f5c\u54c1\u4f86<br \/>\n\u6211\u5e0c\u671b\u660e\u5e74\u80fd\u5920\u6709\u66f4\u9577\u7684\u6642\u9593<br \/>\n\u505a\u51fa\u66f4\u4e0d\u4e00\u6a23\u7684\u4f5c\u54c1 \u9084\u8acb\u656c\u8acb\u671f\u5f85\u5566<\/p>\n","tags":["Diary","Diary"]},{"id":"https:\/\/miyago9267.com\/Diary\/2025\/0304\/","url":"https:\/\/miyago9267.com\/Diary\/2025\/0304\/","title":"\u6709\u95dc\u65bcMyGO\u8868\u60c5\u5305\u641c\u5c0b\u5668\u7684\u5f8c\u7e8c","date_published":"2025-03-03T16:00:00.000Z","content_html":"<p>\u6211\u5176\u5be6\u4e0d\u662f\u5f88\u60f3\u7e7c\u7e8c\u7dad\u8b77\u548c\u88fd\u4f5cMyGO\u641c\u5c0b\u5668\u4e86<\/p>\n<span id=\"more\"><\/span>\n<p>\u5982\u984c<br \/>\n\u6211\u5c31\u958b\u9580\u898b\u5c71\u7684\u8aaa<br \/>\n\u73fe\u5728\u7684\u6211 \u5c0d\u65bc\u5e02\u9762\u4e0a\u5145\u65a5\u8457\u6a21\u4eff\u6211\u505aMyGO\u6216\u6bcd\u96de\u5361\u6aa2\u7d22\u5668\u7684\u7db2\u7ad9\u611f\u5230\u53ad\u7169<br \/>\n\u540c\u6642\u4e5f\u5c0d\u65bc\u8ddf\u98a8\u4ed4\u611f\u5230\u76f8\u7576\u7684\u7121\u5948<br \/>\n\u5c24\u5176\u662f\u898b\u5230\u6bcd\u96de\u5361\u5728\u64ad\u51fa\u4e4b\u5f8c\u7684\u8a55\u50f9\u5927\u8dcc<br \/>\n\u6211\u4e0d\u60f3\u8b93\u6211\u559c\u6b61\u7684\u4f01\u5283\u53d7\u5230\u9019\u6a23\u7684\u5c0d\u5f85<br \/>\n\u56e0\u6b64\u6211\u624d\u6c7a\u5b9a\u6536\u624b \u53ea\u5b8c\u6210\u6700\u5f8c\u7684\u66f4\u65b0\u5c31\u53ea\u8ca0\u8cac\u904b\u71df\u7ad9\u9ede<\/p>\n<h2 id=\"\u5ee2\u8a71\"><a class=\"anchor\" href=\"#\u5ee2\u8a71\">#<\/a> \u5ee2\u8a71<\/h2>\n<p>\u5176\u5be6\u6211\u6700\u958b\u59cb\u4e5f\u662f\u62b1\u6301\u8457<br \/>\n\u300c\u6211\u89ba\u5f97MyGO\u7684\u8868\u60c5\u5305\u5f88\u6709\u8da3\u300d\u7684\u5fc3\u614b<br \/>\n\u53bb\u88fd\u4f5c\u4e00\u500b\u6a21\u4eff\u4ea4\u5927VT\u793e\u6d77\u7dbf\u5bf6\u5bf6\u641c\u5c0b\u5668\u7684\u7db2\u7ad9<br \/>\n\u672c\u4f86\u53ea\u662f\u8981\u7d66\u81ea\u5df1\u7528\u7684 \u505a\u4e5f\u662f\u505a\u597d\u73a9<br \/>\n\u6c92\u60f3\u5230\u6b63\u597d\u5728\u540c\u4e00\u6642\u9593\u51fa\u73fe\u4e86\u5ba2\u670d\u5c0f\u7965\u9019\u500b\u7af6\u54c1<br \/>\n\u5c31\u6709\u670b\u53cb\u628a\u6211\u7684\u7db2\u7ad9\u8f49\u767c\u51fa\u53bb\u8f03\u91cf<br \/>\n\u6700\u5f8c\u88ab\u5ee3\u6cdb\u6d41\u50b3<br \/>\n\u5728\u90a3\u4e4b\u5f8c\u5c31\u6709\u7a2e\u62b1\u8457\u88ab\u793e\u6703\u671f\u5f85\u7684\u611f\u53d7\u9032\u884c\u534a\u88ab\u8feb\u6027\u7684\u7dad\u8b77\u8207\u66f4\u65b0<\/p>\n<p>\u6211\u5fc5\u9808\u8aaa \u6211\u82b1\u4e86\u76f8\u7576\u591a\u7684\u6642\u9593\u5728\u6574\u7406\u5716\u5305<br \/>\n\u5728\u9019\u4e4b\u4e2d\u591a\u6578\u7684\u6642\u9593\u90fd\u5728\u8655\u7406\u90a3\u4e9b\u5728\u7db2\u8def\u6d41\u50b3<br \/>\n\u4f46\u756b\u8cea\u537b\u76f8\u7576\u4f4e\u5ec9\u7684\u5716\u7247<br \/>\n\u89aa\u81ea\u53bb\u52d5\u756b\u760b\u7528\u8173\u672c\u622a\u5716\u548c\u6a19\u8a18\u5716\u7247\u7684\u7c21\u4ecb\u548c\u96c6\u6578<br \/>\n\uff08\u7576\u7136\u4e5f\u53ef\u4ee5\u7528ffmpeg\u53bb\u81ea\u52d5\u62c6\u5f71\u7247\u4e26\u89e3\u6790<br \/>\n\u4f46\u6211\u9084\u5f97\u641e\u5b57\u5e55\u8fa8\u8b58\u6240\u4ee5\u6211\u6c92\u6709\u9078\u64c7\u9019\u689d\u8def\uff09<br \/>\n\u53cd\u800c\u5728\u88fd\u4f5c\u524d\u7aef\u672c\u8eab\u7684\u529f\u592b\u76f8\u7576\u7684\u5c11<br \/>\n\u800c\u6211\u7684\u9078\u64c7 \u537b\u662f\u5c07API\u958b\u653e<br \/>\n\u8b93\u5927\u5bb6\u90fd\u80fd\u5920\u81ea\u7531\u7684\u6293\u8d70\u6211\u6240\u6709\u7684\u5716\u7247<\/p>\n<p>\u96d6\u7136\u8cc7\u8a0a\u6642\u4ee3\u7684\u300c\u8cc7\u8a0a\u300d\u6307\u7684\u662f\u300c\u8cc7\u6599\u300d\u672c\u8eab<br \/>\n\u6211\u4e5f\u660e\u767d\u6211\u5c07\u9019\u4e9b\u8cc7\u6599\u958b\u6e90\u672c\u8eab\u5c31\u662f\u628a\u5167\u5bb9\u4ea4\u51fa\u53bb\u4e86<br \/>\n\u4f46\u6211\u9084\u662f\u89ba\u5f97\u8b93\u9019\u4e9b\u4eff\u88fd\u7684\u5167\u5bb9\u6c3e\u6feb\u672c\u8eab\u662f\u4e00\u7a2e\u6211\u4e0d\u6a02\u898b\u7684\u73fe\u8c61<br \/>\n\u6211\u60f3\u505a\u7684\u9084\u662f\u5c07\u66f4\u591a\u7684credit\u8ca2\u737b\u5728\u6280\u8853\u4e0a<\/p>\n<p>\u4eca\u5f8c\u6211\u60f3\u505a\u7684<br \/>\n\u662f\u5c07\u300c\u641c\u5c0b\u5668\u300d\u672c\u8eab\u7684\u524d\u7aef\u6280\u8853\u55ae\u7368\u62bd\u51fa\u4f86<br \/>\n\u6709\u610f\u601d\u7684\u662f \u6211\u5df2\u7d93\u770b\u5230\u6709\u5176\u4ed6\u958b\u6e90\u5c08\u6848\u4e5f\u5728\u4f7f\u7528\u6211\u7684\u524d\u7aef\u6846\u67b6<br \/>\n\u4e26\u628acredit\u6a19\u6ce8\u7d66\u6211 \u9019\u8b93\u6211\u91cd\u62fe\u4e86\u958b\u6e90\u5275\u4f5c\u8005\u7684\u5fc3\u60c5<br \/>\n\u800c\u4e0d\u662f\u70ba\u4e86\u88fd\u4f5c\u4e00\u500b\u8ddf\u98a8\u7684\u5167\u5bb9\u800c\u505a\u51fa\u66f4\u65b0\u7684\u614b\u5ea6<br \/>\n\u6211\u5e0c\u671b\u80fd\u5c07\u9019\u4ef6\u4e8b\u672c\u8eab\u505a\u597d<br \/>\n\u628a\u9019\u500b\u5c08\u6848\u7576\u4f5c\u4e00\u500b\u771f\u6b63\u7684\u958b\u6e90\u5c08\u6848\u4f86\u7dad\u8b77<\/p>\n<h2 id=\"\u7d50\u8ad6\"><a class=\"anchor\" href=\"#\u7d50\u8ad6\">#<\/a> \u7d50\u8ad6<\/h2>\n<p>\u7e3d\u800c\u8a00\u4e4b<br \/>\n\u77ed\u6642\u9593\u5167\u6211\u9084\u662f\u6703\u7e7c\u7e8c\u7dad\u8b77\u4e26\u904b\u71dfMyGO\u641c\u5c0b\u5668<br \/>\n\u4e5f\u9084\u662f\u6703\u628a\u6700\u5f8c\u7684TodoList\u5b8c\u6210<br \/>\n\u76ee\u524d\u662f\u6709\u96c6\u6578\u53ca\u4eba\u7269\u7be9\u9078\u5668\u3001\u653e\u5927\u6aa2\u8996\u529f\u80fd\u3001\u7db2\u7ad9\u672c\u8eab\u986f\u793a\u7684\u5716\u7247\u58d3\u7e2e\u53ea\u7559\u4e0b\u8f09\u6a94\u662f\u9ad8\u6e05<br \/>\n\u4f46\u662f\u5b8c\u6210\u5f8c\u4ee5\u4e0a\u7684\u76ee\u6a19\u5f8c<br \/>\n\u6211\u5c31\u53ea\u8ca0\u8cac\u8655\u7406\u56b4\u91cd\u5927bug\u548c\u904b\u71df\u7ad9\u9ede<br \/>\n\u5176\u9918\u529f\u80fd\u5c07\u4e0d\u518d\u9032\u884c\u4efb\u4f55\u66f4\u65b0<\/p>\n<p>\u81f3\u65bc\u6bcd\u96de\u5361\u7684\u5716\u7247 \u56e0\u70ba\u592a\u591a\u4eba\u5728\u8a62\u554f\u4e86<br \/>\n\u672c\u4f86\u662f\u6253\u7b97\u52d5\u756b\u64ad\u7562\u5f8c\u518d\u9032\u884c\u6574\u7406\u7684<br \/>\n\u4f46\u6211\u5be6\u5728\u662f\u6c92\u4ec0\u9ebc\u5fc3\u60c5\u4e86<br \/>\n\u9664\u975e\u6709\u4eba\u9858\u610f\u63d0\u4f9b\u4ee5\u5b57\u5e55\u70ba\u6a94\u540d\u4e26\u6a19\u6ce8\u96c6\u6578\u7684\u6574\u5408\u5305<br \/>\n\u6211\u624d\u6703\u9858\u610f\u6574\u5408\u9032\u53bb<br \/>\n\u53cd\u6b63\u6211\u7684\u7be9\u9078tag\u5176\u5be6\u90fd\u505a\u597d\u4e86<br \/>\n\u628a\u5716\u653e\u9032\u53bb\u5176\u5be6\u4e5f\u82b1\u4e0d\u4e86\u5f88\u5927\u7684\u529f\u592b<br \/>\n\u5c31\u55ae\u7d14\u662f\u61f6\u5f97\u6574\u7406\u800c\u5df2<br \/>\n\u6240\u4ee5\u4e4b\u5f8c\u518d\u8aaa\u5427<br \/>\n\u6211\u8981\u5c07\u6211\u7684\u5fc3\u529b\u653e\u53bb\u7425\u73c0\u4e4b\u6cb3\u4e86<\/p>\n","tags":["Diary","Diary"]},{"id":"https:\/\/miyago9267.com\/Diary\/2024\/1128\/","url":"https:\/\/miyago9267.com\/Diary\/2024\/1128\/","title":"[\u4fe1] 20241128","date_published":"2024-11-27T16:00:00.000Z","content_html":"<p>\u7121\u984c<\/p>\n<span id=\"more\"><\/span>\n<p>\u6b63\u5982\u9019\u7bc7\u6587\u7ae0\u7684\u51fa\u73fe\uff0c\u6211\u9084\u6d3b\u8457<br \/>\n\u8d77\u78bc\u5728\u5beb\u5b57\u7684\u671f\u9593\u9084\u6d3b\u8457<br \/>\n\u81f3\u65bc\u5beb\u5b8c\u4e4b\u5f8c\u6703\u4e0d\u6703\u8da8\u52e2 \u53ea\u80fd\u8aaa\u6211\u4e0d\u66c9\u5f97<\/p>\n<p>\u96d6\u7136\u901a\u77e5\u5168\u95dc\u4e86<br \/>\n\u4f46\u4e0d\u7528\u6253\u958b\u4e5f\u80fd\u77e5\u9053\u5927\u6982\u4e00\u5806\u4eba\u5728\u95dc\u5fc3\u6211\u9084\u6d3b\u8457\u6c92\u5427<br \/>\n\u53cd\u6b63\u9019\u88e1\u4e5f\u6c92\u4eba\u6703\u770b \u770b\u4e86\u5c31\u77e5\u9053\u6211\u66ab\u6642\u9084\u6c92\u6b7b\u5c31\u597d<br \/>\n\u5c31\u8b93\u6211\u96a8\u4fbf\u6253\u9ede\u5ee2\u8a71\u5427<\/p>\n<h2 id=\"\"><a class=\"anchor\" href=\"#\">#<\/a> \uff1f<\/h2>\n<p>\u9019\u6b21\u6211\u6c92\u6709OD\u7136\u5f8c\u8b93\u81ea\u5df1\u7761\u4e0a\u4e00\u661f\u671f\u628a\u5225\u4eba\u5687\u6b7b<br \/>\n\u800c\u662f\u300c\u6211\u4e3b\u52d5\u5c4f\u853d\u4e86\u5916\u9762\u7684\u4e16\u754c\u300d<br \/>\n\u9664\u4e86\u4e0a\u73ed\u4e0a\u8ab2\u4ee5\u5916\u975e\u5fc5\u8981\u6211\u4e0d\u6703\u8207\u4eba\u4ea4\u6d41\u8207\u51fa\u73fe\u5728\u4ed6\u4eba\u9762\u524d<br \/>\n\u5176\u5be6\u6211\u4e5f\u6c92\u60f3\u6cd5\u9019\u6bb5\u6642\u9593\u8981\u505a\u4ec0\u9ebc<br \/>\n\u96d6\u7136\u66ab\u5b9a\u7684\u76ee\u6a19\u662f\u8b93\u81ea\u5df1\u597d\u597d\u4e00\u500b\u4eba\u8abf\u6574\u751f\u606f<br \/>\n\u4e0d\u904e\u8a71\u662f\u9019\u9ebc\u8aaa<br \/>\n\u6211\u90fd\u9000\u7db2\u4e86 \u597d\u50cf\u9694\u4e0d\u9694\u7d55\u5176\u5be6\u6c92\u4ec0\u9ebc\u5dee\u5225<\/p>\n<h2 id=\"-2\"><a class=\"anchor\" href=\"#-2\">#<\/a> \uff1f\uff1f<\/h2>\n<p>\u5305\u62ec\u9019\u7bc7\u6587\u5728\u5167<br \/>\n\u6211\u4e26\u6c92\u6709\u5b8c\u5168\u628a\u81ea\u5df1\u6d3b\u52d5\u7684\u75d5\u8de1\u62b9\u53bb<br \/>\n\u6211\u7684Arcaea\u4f9d\u7136\u6709\u5237\u5206\u548c\u904a\u73a9\u7d00\u9304<br \/>\nMaimai-Net\u4e5f\u6709\u7d00\u9304\u8457\u6211\u6253\u4e86\u8d85\u4e0a\u7d1a<br \/>\nSteam\u96d6\u7136\u662f\u96e2\u7dda\uff0c\u4f46\u4e5f\u6709\u540c\u610f\u53cb\u9080\u548c\u958b\u555f\u96e2\u7dda\u904a\u6232<br \/>\n\u751a\u81f3\u6211SSH\u9032\u4f3a\u670d\u5668\u6c92\u9053\u7406\u7db2\u7ba1\u6703\u770b\u4e0d\u51fa\u4f86\u767b\u5165\u7d00\u9304<br \/>\n\u770bPID\u5c31\u77e5\u9053\u6211\u9032\u7a0b\u5361\u8457\u4e86<\/p>\n<p>\u5982\u679c\u6709\u4eba\u767c\u73fe\u5c31\u88ab\u767c\u73fe<br \/>\n\u6c92\u4eba\u767c\u73fe\u90a3\u5c31\u525b\u597d\u9806\u8457\u6211\u60f3\u50cf\u7684\u72c0\u614b\u904e\u597d\u9019\u5e7e\u5929\u5427<\/p>\n<h2 id=\"-3\"><a class=\"anchor\" href=\"#-3\">#<\/a> \uff1f\uff1f\uff1f<\/h2>\n<p>\u6700\u8fd1\u7684\u85e5\u6709\u597d\u597d\u5403<br \/>\n\u5982\u540c\u524d\u9762\u6240\u8aaa \u6c92\u6709OD \u4e5f\u6c92\u6709\u81ea\u5df1\u65b7<br \/>\n\u6211\u731c\u662f\u56e0\u70ba\u4f9d\u8cf4\u5427 \u525b\u597d\u4e0d\u7528\u85e5\u4e5f\u5f88\u96e3\u7761\u90a3\u5c31\u4e0d\u5982\u6b63\u5e38\u670d\u7528<br \/>\n\u53ea\u662f\u90a3\u500b\u85e5\u771f\u7684\u6709\u5920\u53ef\u6015 \u5403\u4e86\u53c8\u7d2f\u53c8\u58d3\u6291<br \/>\n\u8166\u888b\u604d\u604d\u60da\u60da\u7684\u9084\u6703\u4e82\u8b1b\u8a71<\/p>\n<p>\u85e5\u7684\u90e8\u5206\u5c31\u8ddf\u4ee5\u524d\u4e00\u6a23\u5566 \u60c5\u7dd2\u85e5<br \/>\n\u96d6\u7136\u660e\u660e\u53bb\u91ab\u9662\u53ea\u662f\u85e5\u958b\u4e9e\u65af\u7684\u8b49\u660e\u800c\u5df2<br \/>\n\u4e0d\u77e5\u9053\u70ba\u4ec0\u9ebc\u91ab\u751f\u6703\u9806\u4fbf\u8981\u8a3a\u65b7\u6182\u9b31\u548c\u7126\u616e\u7684\u554f\u984c<br \/>\n\u8aaa\u5230\u5e95\u6211\u53ea\u662f\u70ba\u4e86\u8eb2\u6389\u5175\u5f79<br \/>\n\u9032\u53bb\u8ddf\u4e00\u7fa4\u5169\u9846\u982d\u667a\u5546\u4e0d\u5230\u6211\u4e00\u534a\u7684\u81ed\u7537\u751f\u6df7\u5728\u4e00\u8d77<br \/>\n\u6211\u4ed6\u5abd\u7d55\u5c0d\u6703\u53cd\u793e\u6703\u6027\u4eba\u683c\u969c\u7919\u7259\u8d77\u4f86\u8d77\u885d\u7a81<\/p>\n<p>\u53ef\u662f\u5be6\u969b\u4e0a\u80fd\u4e0d\u80fd\u62b5\u6389\u5c31\u4e0d\u77e5\u9053\u4e86<br \/>\n\u611f\u89ba\u597d\u50cf\u662f\u4e0d\u884c \u5169\u5e74\u524d\u5728\u6843\u5712\u958b\u7684\u8a3a\u65b7\u8b49\u660e\u65e9\u4e0d\u77e5\u9053\u53bb\u54ea\u88e1<br \/>\n\u8ab0\u6703\u7559\u8457\u5b8c\u597d\u7684\u8a3a\u65b7\u66f8\u7559\u5169\u5e74\u554a<\/p>\n<h2 id=\"-4\"><a class=\"anchor\" href=\"#-4\">#<\/a> \uff1f\uff1f\uff1f\uff1f<\/h2>\n<p>\u5c31\u9019\u6a23\u5427 \u6c92\u4ec0\u9ebc\u597d\u8aaa\u7684<br \/>\n\u8b93\u6211\u597d\u597d\u975c\u975c \u5982\u679c\u6211\u5728\u975c\u975c\u7684\u9019\u6bb5\u6642\u9593\u600e\u9ebc\u4e86<br \/>\n\u90a3\u9019\u7bc7\u5c31\u7576\u6211\u7684\u907a\u66f8\u5427<br \/>\n\u525b\u597d\u4e5f\u6c92\u4ec0\u9ebc\u597d\u4ea4\u4ee3\u7684 \u53ea\u5e0c\u671b\u4e0d\u8981\u7d66\u611b\u8457\u6211\u7684\u90a3\u5169\u500b\u4eba\u9ebb\u7169<\/p>\n<h2 id=\"\u6211\u4ed6\u5abd\u7684\u7559\u8a00\u5340\u5462\"><a class=\"anchor\" href=\"#\u6211\u4ed6\u5abd\u7684\u7559\u8a00\u5340\u5462\">#<\/a> \u6211\u4ed6\u5abd\u7684\u7559\u8a00\u5340\u5462<\/h2>\n<p>\u6211\u6e2c\u8a66\u4e86\u4e00\u665a\u4e0a\u9084\u662f\u4e0d\u77e5\u9053\u70ba\u4ec0\u9ebc\u9019\u7bc7\u4e0d\u80fd\u7559\u8a00<br \/>\n\u5305\u62ec\u6211\u81ea\u5df1\u90fd\u4e0d\u884c<br \/>\n\u898b\u9b3c\u4e86<\/p>\n","tags":["Diary","Diary"]},{"id":"https:\/\/miyago9267.com\/Novel\/novel-idiot\/","url":"https:\/\/miyago9267.com\/Novel\/novel-idiot\/","title":"[\u77ed\u7bc7\u5c0f\u8aaa] \u4f4e\u80fd\u5152","date_published":"2024-09-19T07:00:00.000Z","content_html":"<h1 id=\"\u77ed\u7bc7\u4f4e\u80fd\u5152\"><a class=\"anchor\" href=\"#\u77ed\u7bc7\u4f4e\u80fd\u5152\">#<\/a> \u3010\u77ed\u7bc7\u3011\u4f4e\u80fd\u5152<\/h1>\n<p>\u660e\u5929\u5c31\u662f\u63a5\u53d7\u6559\u80b2\u7684\u65e5\u5b50\uff0c\u862d\u767b\u96e3\u4ee5\u6309\u8010\u5fc3\u4e2d\u7684\u559c\u6085\u3002\u5728\u6bcd\u89aa\u7684\u63d0\u9192\u4e0b\uff0c\u862d\u767b\u5c07\u7ffb\u5f97\u7834\u721b\u7684\u66f8\u7c4d\u95d4\u4e0a\uff0c\u6bd4\u5e73\u6642\u8981\u65e9\u722c\u4e0a\u5e8a\uff0c\u6e96\u5099\u8fce\u63a5\u4eba\u751f\u4e2d\u7684\u91cd\u5927\u6d3b\u52d5\u3002<\/p>\n<p>2142\u5e74\uff0c\u4eba\u985e\u65e9\u5df2\u62cb\u68c4\u4e86\u4eba\u5de5\u6388\u8ab2\uff0c\u53d6\u800c\u4ee3\u4e4b\u7684\u662f\u6a5f\u5668\u6559\u80b2\u6cd5\u3002\u6240\u6709\u5730\u7403\u806f\u5408\u516c\u570b\u7684\u570b\u6c11\u90fd\u5c07\u5728\u6210\u5e74\u7684\u65e5\u5b50\uff0c\u63a5\u53d7\u795e\u7d93\u79d1\u5b78\u7684\u6d17\u79ae\u3002<\/p>\n<p>\u6559\u80b2\u6a5f\u69cb\u6703\u900f\u904e\u6a5f\u5668\u5206\u6790\u4eba\u5011\u7684\u5927\u8166\uff0c\u4e26\u5224\u65b7\u51fa\u6bcf\u500b\u4eba\u7684\u601d\u7dad\u7d50\u69cb\u9069\u5408\u5f9e\u4e8b\u4ec0\u9ebc\u6a23\u7684\u5de5\u4f5c\u53ca\u6d3b\u52d5\uff0c\u6700\u5f8c\u900f\u904e\u6a5f\u5668\u50b3\u8f38\u7d66\u5927\u8166\u6240\u9700\u77e5\u8b58\u53ca\u4e00\u6280\u4e4b\u9577\uff0c\u5f9e\u800c\u4e0d\u518d\u9700\u8981\u70ba\u4e86\u6280\u8077\u800c\u5b78\u7fd2\u3002\u9019\u9805\u300c\u6210\u5e74\u79ae\u300d\u4e5f\u5c31\u88ab\u7a31\u547c\u70ba\u300c\u63a5\u53d7\u6559\u80b2\u300d\u3002<\/p>\n<p>\u862d\u767b\u5f9e\u5c0f\u5c31\u5341\u5206\u56ae\u5f80\u63a5\u53d7\u6559\u80b2\u3002\u70ba\u6b64\uff0c\u5728\u6210\u5e74\u4ee5\u524d\u7684\u862d\u767b\u4fbf\u4e0d\u65b7\u5730\u95b1\u8b80\u5404\u5f0f\u5404\u6a23\u7684\u66f8\u7c4d\uff0c\u4ee5\u70ba\u4e86\u6210\u5e74\u90a3\u5929\u7684\u4f5c\u6e96\u5099\u3002\u862d\u767b\u751a\u81f3\u6703\u96a8\u8eab\u651c\u5e36\u8457\u5e7e\u672c\u66f8\uff0c\u4ee5\u4fbf\u96a8\u6642\u96a8\u5730\u90fd\u80fd\u5920\u7372\u5f97\u77e5\u8b58\uff0c\u9019\u8b93\u5e7c\u5e74\u7684\u862d\u767b\u5728\u5fc3\u88e1\u8a31\u4e0b\u4e86\u8981\u6210\u70ba\u79d1\u5b78\u5bb6\u7684\u5922\u60f3\u3002<\/p>\n<p>\u7d42\u65bc\u5230\u4e8620\u6b72\u7684\u90a3\u5929\uff0c\u6b23\u559c\u7684\u862d\u767b\u5927\u6e05\u65e9\u4fbf\u51fa\u4e86\u9580\uff0c\u524d\u5f80\u653f\u5e9c\u958b\u8a2d\u7684\u6559\u80b2\u5c40\u5831\u5230\u3002\u6620\u5165\u773c\u7c3e\u7684\u662f\u4e00\u7fa4\u540c\u6a23\u752b\u6210\u5e74\u7684\u4eba\u5011\uff0c\u770b\u4e0a\u53bb\u5927\u5925\u5152\u4e5f\u662f\u8981\u4f86\u63a5\u53d7\u6559\u80b2\u7684\uff0c\u862d\u767b\u662f\u9019\u9ebc\u60f3\u7684\u3002<\/p>\n<p>\u5f88\u5feb\u7684\uff0c\u862d\u767b\u627e\u5230\u4e86\u767b\u8a18\u6ac3\u53f0\uff0c\u4f5c\u4e86\u7c21\u55ae\u7684\u8eab\u5206\u9a57\u8b49\u53ca\u5831\u5230\u5f8c\uff0c\u6ac3\u53f0\u4eba\u54e1\u8acb\u862d\u767b\u5230\u4f11\u606f\u5ba4\u7a0d\u4f5c\u7b49\u5f85\u3002\u5728\u4f11\u606f\u5ba4\u5167\uff0c\u6709\u6578\u500b\u540c\u6a23\u4f86\u63a5\u53d7\u6559\u80b2\u7684\u9752\u5e74\u804a\u5728\u4e86\u4e00\u584a\u5152\uff0c\u862d\u767b\u4e5f\u52a0\u5165\u4e86\u4ed6\u5011\uff0c\u548c\u4ed6\u5011\u4e00\u540c\u5206\u4eab\u4e86\u81ea\u5df1\u770b\u904e\u4e86\u8a31\u591a\u66f8\uff0c\u6709\u8457\u60f3\u6210\u70ba\u79d1\u5b78\u5bb6\u7684\u5922\u60f3\u3002<\/p>\n<p>\u7136\u800c\uff0c\u6b64\u756a\u60f3\u6cd5\u537b\u906d\u53d7\u4e86\u9752\u5e74\u5011\u7684\u99c1\u65a5\u3002\u5176\u4e2d\u4e00\u500b\u9752\u5e74\u63d0\u51fa\u4e86\u5426\u5b9a\u300c\u4eba\u600e\u9ebc\u53ef\u80fd\u6c7a\u5b9a\u81ea\u5df1\u8981\u505a\u4ec0\u9ebc\u5462\uff1f\u7d93\u904e\u6a5f\u5668\u5224\u65b7\u624d\u80fd\u77e5\u9053\u81ea\u5df1\u7684\u5927\u8166\u9069\u5408\u4ec0\u9ebc\u6a23\u7684\u5de5\u4f5c\uff0c\u6c92\u8fa6\u6cd5\u8aaa\u60f3\u8981\u4ec0\u9ebc\u5c31\u6709\u4ec0\u9ebc\u7684\u3002\u300d<\/p>\n<p>\u862d\u767b\u4e0d\u670d\u6c23\u7684\u53cd\u99c1\u9053\u300c\u600e\u9ebc\u6703\u4e0d\u884c\uff0c\u6211\u770b\u4e86\u5f88\u591a\u6559\u80b2\u76f8\u95dc\u7684\u66f8\u7c4d\uff0c\u88e1\u982d\u8a18\u8f09\u4e86\u5f88\u591a\u95dc\u65bc\u5927\u8166\u5b78\u7fd2\u77e5\u8b58\u7684\u7406\u8ad6\uff0c\u4eba\u7684\u5927\u8166\u662f\u5f88\u6709\u6f5b\u529b\u7684\u3002\u4e26\u4e14\u6211\u4e5f\u6d89\u7375\u4e86\u5f88\u591a\u5de5\u7a0b\u5b78\u7684\u77e5\u8b58\u5440\uff0c\u4e00\u5b9a\u53ef\u4ee5\u6210\u529f\u88ab\u6a5f\u5668\u8a8d\u540c\u7684\uff01\u300d<\/p>\n<p>\u773e\u4eba\u9a5a\u8a1d\u7684\u8868\u793a\u300c\u66f8\uff01\u90a3\u7a2e\u6771\u897f\u4e0d\u662f\u572850\u5e74\u524d\u5c31\u88ab\u6dd8\u6c70\u4e86\u55ce\uff1f\u4f60\u600e\u9ebc\u6703\u76f8\u4fe1\u90a3\u7a2e\u6771\u897f\u5462\uff1f\u800c\u4e14\u77e5\u8b58\u9019\u7a2e\u6771\u897f\u8b93\u6a5f\u5668\u50b3\u6388\u5c31\u597d\uff0c\u4f55\u5fc5\u770b\u66f8\u5462\uff1f\u300d<\/p>\n<p>\u6b63\u7576\u773e\u4eba\u4e00\u756a\u722d\u8ad6\u6642\uff0c\u4e00\u540d\u5de5\u4f5c\u4eba\u54e1\u8d70\u9032\u4f86\u53eb\u4e86\u862d\u767b\u7684\u540d\u5b57\uff0c\u96a8\u5f8c\u5c07\u4ed6\u5e36\u5230\u4e86\u4e00\u500b\u55ae\u7368\u7684\u623f\u9593\u4e2d\u3002\u623f\u9593\u4e2d\u64fa\u653e\u8457\u8a31\u591a\u5100\u5668\uff0c\u6709\u6578\u4f4d\u91ab\u751f\u6b63\u5728\u64cd\u4f5c\u8457\u5100\u5668\uff0c\u5728\u623f\u9593\u7684\u6b63\u4e2d\u5fc3\u64fa\u653e\u4e86\u4e00\u5f35\u5982\u540c\u7259\u91ab\u8a3a\u6240\u88e1\u6703\u770b\u5230\u7684\u624b\u8853\u6905\uff0c\u8eba\u6905\u7684\u4e0a\u982d\u653e\u4e86\u8a31\u591a\u7684\u7dda\u6750\u3002<\/p>\n<p>\u5728\u5de5\u4f5c\u4eba\u54e1\u7684\u6307\u793a\u4e0b\uff0c\u862d\u767b\u8eba\u4e86\u4e0a\u53bb\uff0c\u4e26\u914d\u5408\u8457\u5c07\u7dda\u8def\u9023\u63a5\u5230\u4e86\u5927\u8166\u4e0a\uff0c\u9032\u884c\u4e86\u4e00\u6bb5\u795e\u7d93\u6f5b\u884c\u3002\u7d04\u83ab\u5341\u5206\u9418\u5f8c\uff0c\u6a5f\u5668\u5b8c\u6210\u4e86\u5c0d\u862d\u767b\u7684\u6383\u63cf\uff0c\u5de5\u4f5c\u4eba\u54e1\u6307\u793a\u862d\u767b\u5df2\u7d93\u53ef\u4ee5\u5c07\u5100\u5668\u5378\u4e0b\u4e86\u3002\u5947\u602a\u7684\u662f\uff0c\u862d\u767b\u4e26\u6c92\u6709\u611f\u89ba\u81ea\u5df1\u8207\u525b\u9032\u4f86\u6642\u6709\u4ec0\u9ebc\u5340\u5225\u3002<\/p>\n<p>\u6b63\u7576\u862d\u767b\u89ba\u5f97\u5947\u602a\u6642\uff0c\u91ab\u751f\u5011\u9762\u9732\u96e3\u8272\u5730\u7aca\u7aca\u79c1\u8a9e\uff0c\u6709\u4f4d\u8f03\u5e74\u9577\u7684\u91ab\u751f\u5411\u5176\u4ed6\u4eba\u8033\u8a9e\u4e86\u5e7e\u53e5\uff0c\u5176\u4ed6\u4eba\u4fbf\u96e2\u958b\u4e86\u623f\u9593\uff0c\u53ea\u7559\u4e0b\u5e74\u9577\u7684\u91ab\u751f\u53ca\u862d\u767b\u5169\u4eba\u3002<\/p>\n<p>\u862d\u767b\u6b63\u60f3\u958b\u53e3\u8a62\u554f\u81ea\u5df1\u5230\u5e95\u88ab\u50b3\u6388\u4e86\u4ec0\u9ebc\u77e5\u8b58\u53ca\u5de5\u4f5c\u7684\u4f7f\u547d\uff0c\u5e74\u9577\u91ab\u751f\u770b\u51fa\u4e86\u4ed6\u7684\u610f\u5716\uff0c\u6436\u5148\u958b\u53e3\u8aaa\u9053\u300c\u862d\u767b\u5148\u751f\uff0c\u96d6\u7136\u6709\u9ede\u96e3\u4ee5\u555f\u9f52\uff0c\u4f46\u6211\u5011\u6709\u7fa9\u52d9\u544a\u77e5\u60a8\u3002\u5f88\u907a\u61be\uff0c\u6211\u5011\u672a\u80fd\u50b3\u6388\u4efb\u4f55\u77e5\u8b58\u7d66\u60a8\uff0c\u56e0\u70ba\u96fb\u8166\u6383\u63cf\u53ca\u5206\u6790\u7684\u7d50\u679c\u986f\u793a\uff0c\u60a8\u7684\u667a\u529b\u4e0d\u8db3\uff0c\u7121\u6cd5\u63a5\u53d7\u4efb\u4f55\u6559\u80b2\u53ca\u63a5\u53d7\u5de5\u4f5c\u3002\u300d<\/p>\n<p>\u7a81\u7136\u7684\u6674\u5929\u9739\u9742\u8b93\u862d\u767b\u96e3\u4ee5\u63a5\u53d7\uff0c\u4ed6\u628a\u65b9\u624d\u5728\u4f11\u606f\u5ba4\u63d0\u51fa\u7684\u7406\u8ad6\u548c\u91ab\u751f\u91cd\u7533\u4e86\u4e00\u904d\uff0c\u7136\u800c\u91ab\u751f\u540c\u6a23\u5c0d\u862d\u767b\u7684\u6297\u8b70\u4e0d\u4ee5\u70ba\u7136\uff0c\u53ea\u8868\u793a\u7121\u80fd\u70ba\u529b\u3002\u862d\u767b\u7121\u6cd5\u63a5\u53d7\u81ea\u5df1\u662f\u667a\u969c\u7684\u4e8b\u5be6\uff0c\u61a4\u6012\u5f97\u885d\u5411\u91ab\u751f\u6b32\u8a0e\u500b\u4ea4\u4ee3\u3002<\/p>\n<p>\u6b64\u6642\u65b9\u624d\u96e2\u958b\u7684\u5e7e\u4f4d\u5e74\u8f15\u91ab\u751f\u8d70\u4e86\u9032\u4f86\uff0c\u62ff\u51fa\u4e86\u91dd\u7b52\u7d66\u66b4\u8e81\u7684\u862d\u767b\u6ce8\u5c04\u4e86\u4e00\u5291\u9ebb\u9189\u85e5\uff0c\u862d\u767b\u53ea\u89ba\u5f97\u773c\u524d\u8d8a\u4f86\u8d8a\u6a21\u7cca\uff0c\u9010\u6f38\u5931\u53bb\u4e86\u610f\u8b58\u3002<\/p>\n<p>\u4e0d\u77e5\u904e\u4e86\u591a\u4e45\uff0c\u862d\u767b\u9192\u4e86\u904e\u4f86\uff0c\u767c\u73fe\u81ea\u5df1\u8eba\u5728\u4e86\u4e00\u500b\u964c\u751f\u7684\u623f\u9593\u88e1\u3002\u623f\u9593\u88e1\u6709\u53e6\u5169\u500b\u4eba\u6b63\u5728\u73a9\u684c\u904a\uff0c\u898b\u5230\u862d\u767b\u9192\u4e86\uff0c\u4ed6\u5011\u4e26\u6c92\u6709\u505c\u4e0b\u624b\u4e2d\u7684\u52d5\u4f5c\uff0c\u862d\u767b\u4e5f\u4e0d\u77e5\u9053\u73fe\u5728\u8981\u505a\u4ec0\u9ebc\uff0c\u53ea\u597d\u770b\u8457\u4ed6\u5011\u73a9\u5b8c\u3002<\/p>\n<p>\u5927\u7d0415\u5206\u9418\u5f8c\uff0c\u5169\u4eba\u7d42\u65bc\u505c\u4e0b\u4e86\u624b\u908a\u7684\u904a\u6232\uff0c\u5411\u862d\u767b\u6253\u4e86\u62db\u547c\u3002\u5176\u4e2d\u4e00\u4eba\u8868\u793a\u4ed6\u53eb\u96c5\u5404\uff0c\u4ed6\u5411\u862d\u767b\u4ecb\u7d39\u9019\u88e1\u662f\u4e00\u500b\u6536\u5bb9\u6240\uff0c\u800c\u4ed6\u662f\u88ab\u5b89\u6392\u4f86\u9019\u88e1\u751f\u6d3b\u7684\u3002\u4f4f\u5728\u9019\u88e1\u7684\u90fd\u662f\u88ab\u6559\u80b2\u6a5f\u5668\u8a3a\u65b7\u70ba\u4e0d\u9069\u5408\u5de5\u4f5c\u7684\u4eba\u5011\uff0c\u9019\u88e1\u4e0d\u9700\u8981\u5de5\u4f5c\u6216\u52de\u52d5\uff0c\u53ea\u9700\u8981\u5b9a\u671f\u914d\u5408\u505a\u7814\u7a76\u548c\u6aa2\u67e5\u5c31\u597d\uff0c\u6709\u4ec0\u9ebc\u9700\u6c42\u96a8\u6642\u90fd\u80fd\u5411\u5de5\u4f5c\u4eba\u54e1\u63d0\u51fa\u4f86\u3002<\/p>\n<p>\u5728\u4e4b\u5f8c\u7684\u5169\u500b\u6708\u5167\uff0c\u862d\u767b\u719f\u6089\u4e86\u5728\u9019\u88e1\u7684\u751f\u6d3b\uff0c\u96d6\u7136\u51fa\u5165\u4e0d\u53d7\u9650\u5236\uff0c\u4e5f\u6709\u96f6\u7528\u9322\u53ef\u4ee5\u62ff\uff0c\u4f46\u9664\u4e86\u5b9a\u671f\u914d\u5408\u6aa2\u67e5\u548c\u7814\u7a76\u7684\u6642\u9593\u5916\uff0c\u591a\u6578\u6642\u9593\u9084\u633a\u7121\u804a\u7684\u3002\u862d\u767b\u5411\u5de5\u4f5c\u4eba\u54e1\u8981\u4e86\u4e00\u4e9b\u5be6\u9ad4\u7684\u66f8\u7c4d\uff0c\u4e26\u8981\u4e86\u4e00\u9593\u7a7a\u7684\u5be6\u9a57\u5ba4\u505a\u4e00\u4e9b\u7c21\u55ae\u7684\u5be6\u9a57\u548c\u52de\u4f5c\uff0c\u6162\u6162\u7684\u6253\u767c\u6642\u9593\uff0c\u5076\u723e\u4e5f\u6703\u548c\u96c5\u5404\u7b49\u5ba4\u53cb\u4e00\u8d77\u73a9\u684c\u904a\u548c\u96fb\u73a9\u3002<\/p>\n<p>\u862d\u767b\u7565\u5fae\u7684\u611f\u53d7\u5230\u9019\u88e1\u7684\u4eba\u5011\u548c\u5916\u9762\u7684\u4eba\u985e\u6709\u4e9b\u7279\u8cea\u4e0a\u7684\u4e0d\u540c\u3002\u7136\u800c\uff0c\u4e0d\u540c\u65bc\u862d\u767b\u672c\u4eba\u6703\u4e3b\u52d5\u53bb\u8981\u6c42\u770b\u66f8\u548c\u5be6\u4f5c\u5be6\u9a57\uff0c\u773e\u4eba\u90fd\u662f\u6210\u65e5\u73a9\u73a9\u904a\u6232\uff0c\u914d\u5408\u7814\u7a76\uff0c\u9664\u6b64\u4e4b\u5916\u518d\u7121\u5176\u4ed6\u6d3b\u52d5\u3002<\/p>\n<p>\u7d42\u65bc\uff0c\u862d\u767b\u53d7\u4e0d\u4e86\u9019\u7a2e\u7121\u804a\u7684\u74b0\u5883\uff0c\u5fcd\u4e0d\u4f4f\u5411\u96c5\u5404\u62b1\u6028\u3002\u7136\u800c\u96c5\u5404\u7684\u53ea\u89ba\u5f97\uff0c\u80fd\u5920\u4ec0\u9ebc\u90fd\u4e0d\u505a\u5c31\u6709\u5403\u6709\u559d\uff0c\u9084\u6709\u9322\u80fd\u62ff\uff0c\u6709\u4ec0\u9ebc\u4e0d\u597d\u7684\u3002\u53cd\u5012\u662f\u862d\u767b\u7e3d\u559c\u6b61\u770b\u4e00\u4e9b\u6c92\u4ec0\u9ebc\u610f\u7fa9\u7684\u66f8\uff0c\u8b93\u4ed6\u5011\u89ba\u5f97\u633a\u8822\u7684\u3002<\/p>\n<p>\u862d\u767b\u770b\u4e0d\u6163\u9019\u6a23\u7684\u5fc3\u614b\uff0c\u4ed6\u53cd\u904e\u4f86\u6578\u843d\u96c5\u5404\u4ed6\u5011\u6210\u5929\u4e0d\u601d\u9032\u53d6\uff0c\u4e0d\u61c2\u5f97\u4e0a\u9032\u53ea\u6703\u6df7\u5403\u7b49\u6b7b\u3002<\/p>\n<p>\u96c5\u5404\u60f1\u706b\u4e86\uff0c\u53cd\u904e\u4f86\u8b4f\u8af7\u862d\u767b\u5634\u4e0a\u9019\u9ebc\u8aaa\uff0c\u537b\u4e5f\u53ea\u6703\u6bcf\u5929\u53ea\u6703\u770b\u66f8\u800c\u4e00\u4e8b\u7121\u6210\uff0c\u6700\u5f8c\u9084\u843d\u5f97\u88ab\u6559\u80b2\u5c40\u5224\u5b9a\u7121\u6cd5\u5de5\u4f5c\u3002\u4e26\u751f\u6c23\u5730\u5411\u862d\u767b\u8868\u793a\uff0c\u9019\u500b\u6536\u5bb9\u6240\u7684\u540d\u5b57\u5c31\u53eb\u300c\u4f4e\u80fd\u5152\u6536\u5bb9\u6240\u300d\u3002<\/p>\n<p>\u9019\u4e9b\u8a71\u76f4\u76f4\u6233\u4e2d\u4e86\u862d\u767b\u7684\u75db\u9ede\uff0c\u61a4\u6012\u7684\u862d\u767b\u8868\u793a\u8981\u96e2\u958b\u9019\u88e1\u3002\u4e26\u6c92\u6709\u4eba\u963b\u6b62\u862d\u767b\uff0c\u862d\u767b\u5c31\u9019\u6a23\u96e2\u958b\u4e86\u6536\u5bb9\u6240\u3002<\/p>\n<p>\u96e2\u958b\u6536\u5bb9\u6240\u5f8c\uff0c\u862d\u767b\u5f9e\u96fb\u8996\u770b\u677f\u4e2d\u770b\u5230\u4e86\u592a\u967d\u7cfb\u6a5f\u5668\u4eba\u4e16\u754c\u5927\u8cfd\u7684\u5ee3\u544a\uff0c\u7661\u8ff7\u5de5\u7a0b\u5b78\u7684\u4ed6\u5341\u5206\u5730\u611f\u8208\u8da3\uff0c\u4ed6\u5411\u5468\u906d\u7684\u4eba\u6253\u807d\u4e86\u5927\u8cfd\u7684\u8cc7\u8a0a\uff0c\u6709\u4f4d\u8001\u4eba\u8868\u793a\u4ed6\u5c0d\u6bd4\u8cfd\u540c\u6a23\u4e5f\u611f\u8208\u8da3\uff0c\u4e26\u8868\u793a\u6bd4\u8cfd\u5c07\u5728\u6771\u4eac\u8209\u884c\uff0c\u9080\u8acb\u862d\u767b\u4e00\u540c\u524d\u5f80\u89c0\u8cfd\u3002<\/p>\n<p>\u862d\u767b\u6b23\u7136\u7684\u7b54\u61c9\u4e86\uff0c\u96a8\u5373\u8cb7\u4e86\u5f35\u6a5f\u7968\u8207\u8001\u4eba\u4e00\u540c\u524d\u5f80\u65e5\u672c\u3002\u5728\u65c5\u9014\u4e2d\uff0c\u862d\u767b\u8207\u8001\u4eba\u804a\u4e86\u8a31\u591a\u5c0d\u65bc\u6559\u80b2\u7684\u898b\u89e3\uff0c\u5305\u62ec\u81ea\u5df1\u559c\u6b61\u95b1\u8b80\uff0c\u81ea\u5b78\u8a31\u591a\u6709\u8da3\u7684\u77e5\u8b58\uff0c\u4ee5\u53ca\u804a\u5230\u4e86\u81ea\u5df1\u88ab\u6559\u80b2\u5c40\u5426\u5b9a\u7684\u6545\u4e8b\u3002<\/p>\n<p>\u8001\u4eba\u662f\u7b2c\u4e00\u500b\uff0c\u6c92\u6709\u76f4\u7403\u5426\u5b9a\u862d\u767b\u770b\u6cd5\u7684\u4eba\uff0c\u53cd\u5012\u548c\u862d\u767b\u804a\u4e86\u4e0d\u5c11\u5c0d\u5b78\u7fd2\u548c\u6559\u80b2\u7684\u770b\u6cd5\u3002<\/p>\n<p>\u5230\u4e86\u6771\u4eac\uff0c\u862d\u767b\u5373\u523b\u524d\u5f80\u6bd4\u8cfd\u73fe\u5834\u3002\u5728\u5834\u5167\uff0c\u4ed6\u9047\u898b\u4e86\u4ed6\u7684\u7ae5\u5e74\u73a9\u4f34\u7f85\u4f2f\u7279\uff0c\u5728\u7f85\u4f2f\u7279\u63d0\u65e9\u862d\u767b\u56db\u5e74\u63a5\u53d7\u6559\u80b2\u5f8c\uff0c\u4ed6\u5011\u5c31\u6c92\u518d\u898b\u904e\u9762\u4e86\uff0c\u53ea\u807d\u8aaa\u7f85\u4f2f\u7279\u5f8c\u4f86\u6210\u70ba\u4e86\u5f88\u53b2\u5bb3\u7684\u6a5f\u5668\u4eba\u6280\u5e2b\u3002\u91cd\u9022\u7684\u4ed6\u5011\u6b23\u559c\u7684\u6253\u4e86\u62db\u547c\uff0c\u7136\u800c\u7576\u7f85\u4f2f\u7279\u554f\u5230\u862d\u767b\u5b78\u4e86\u4ec0\u9ebc\u5c08\u696d\u6642\uff0c\u862d\u767b\u537b\u7b54\u4e0d\u4e0a\u4f86\u3002<\/p>\n<p>\u5f88\u5feb\u7684\uff0c\u6bd4\u8cfd\u958b\u59cb\u4e86\uff0c\u8eab\u70ba\u5c08\u696d\u6280\u5e2b\u7684\u7f85\u4f2f\u7279\u52e2\u5982\u7834\u7af9\u7684\u6253\u5230\u4e86\u6c7a\u8cfd\uff0c\u7136\u800c\u6559\u6c7a\u8cfd\u7684\u4ed6\u537b\u8207\u524d\u9762\u7684\u6bd4\u8cfd\u4e0d\u540c\uff0c\u5373\u4fbf\u4f7f\u76e1\u4e86\u6e3e\u8eab\u89e3\u6578\uff0c\u4f9d\u820a\u6c92\u80fd\u8d0f\u4e0b\u6bd4\u8cfd\u3002<\/p>\n<p>\u8cfd\u5f8c\u7f85\u4f2f\u7279\u627e\u5230\u4e86\u862d\u767b\uff0c\u5411\u4ed6\u62b1\u6028\u9053\u300c\u9019\u500b\u8cfd\u5236\u4e0d\u516c\u5e73\uff01\u9810\u9078\u548c\u6dd8\u6c70\u8cfd\u7528\u7684\u90fd\u662fPhitus\u7684\u7a0b\u5f0f\uff0c\u7136\u800c\u6c7a\u8cfd\u7528\u7684\u7cfb\u7d71\u537b\u662fOmegus\u7684\uff0c\u6211\u63a5\u53d7\u6559\u80b2\u6642\u5b78\u7684\u662fPhitus\u7684\u5440\uff01\u9019\u4e26\u4e0d\u516c\u5e73\uff01\u300d<\/p>\n<p>\u9019\u6bb5\u8a71\u8b93\u862d\u767b\u5f88\u662f\u56f0\u60d1\uff0c\u56e0\u70ba\u6839\u672c\u6c92\u63a5\u53d7\u6559\u80b2\u7684\u4ed6\u65e9\u5c31\u5b78\u6703\u9019\u5169\u7a2e\u7cfb\u7d71\u4e86\u3002\u4ed6\u63d0\u51fa\u4e86\u7591\u554f\u300c\u90a3\u65e2\u7136\u73a9\u6a5f\u5668\u4eba\u90fd\u6709\u6a5f\u6703\u4f7f\u7528\u5230\uff0c\u90a3\u4f60\u70ba\u4ec0\u9ebc\u4e0d\u81ea\u5b78Omegus\u7684\u7cfb\u7d71\u548c\u7a0b\u5f0f\u8a9e\u8a00\u5462\uff1f\u300d<\/p>\n<p>\u4e0d\u51fa\u6240\u6599\u7684\uff0c\u7f85\u4f2f\u7279\u7684\u53cd\u61c9\u8207\u5148\u524d\u7684\u4eba\u90fd\u4e00\u6a23\u300c\u4eba\u600e\u9ebc\u53ef\u80fd\u81ea\u5df1\u5b78\u6703\u6c92\u88ab\u50b3\u6388\u7684\u7cfb\u7d71\u5462\uff1f\u4f60\u9019\u500b\u7b28\u86cb\u3002\u4f60\u6839\u672c\u4e0d\u61c2\u6a5f\u5668\u4eba\u5427\u3002\u300d<\/p>\n<p>\u300c\u862d\u767b\u4ed6\u78ba\u5be6\u6c92\u6709\u63a5\u53d7\u904e\u4efb\u4f55\u6559\u80b2\uff0c\u4ed6\u662f\u88ab\u6559\u80b2\u6a5f\u8a3a\u65b7\u7684\u4f4e\u80fd\u5152\u3002\u300d<\/p>\n<p>\u8a71\u97f3\u525b\u843d\uff0c\u65bc\u6b64\u540c\u6642\uff0c\u8207\u862d\u767b\u4e00\u540c\u5230\u65e5\u672c\u7684\u8001\u4eba\u51fa\u73fe\u5728\u4e86\u8eab\u5f8c\u3002\u9a5a\u8a1d\u7684\u7f85\u4f2f\u7279\u770b\u8457\u862d\u767b\uff0c\u4f3c\u4e4e\u660e\u767d\u4e86\u4ec0\u9ebc\uff0c\u8868\u60c5\u5f9e\u5c0d\u862d\u767b\u7684\u8cea\u7591\uff0c\u8b8a\u6210\u4e86\u6563\u767c\u51fa\u4e86\u4e00\u9ede\u540c\u60c5\u3002<\/p>\n<p>\u8001\u4eba\u4e00\u6539\u5728\u65c5\u9014\u4e2d\u80af\u5b9a\u862d\u767b\u7684\u614b\u5ea6\uff0c\u8a70\u554f\u9053\u300c\u4f60\u771f\u7684\u9019\u9ebc\u5929\u771f\u7684\u89ba\u5f97\u4eba\u985e\u80fd\u5920\u4e0d\u9760\u6a5f\u5668\u50b3\u6388\u6280\u80fd\u5c31\u6210\u70ba\u9ad8\u624b\u55ce\uff1f\u5728\u6536\u5bb9\u6240\u6240\u770b\u5230\u7684\u4e00\u5207\u9084\u4e0d\u5920\u6210\u70ba\u8b49\u660e\u55ce\uff1f\u300d<\/p>\n<p>\u862d\u767b\u7d42\u65bc\u660e\u767d\u4e86\uff0c\u8001\u4eba\u662f\u6536\u5bb9\u6240\u6d3e\u4f86\u8ddf\u8e64\u548c\u76e3\u8996\u81ea\u5df1\u7684\u3002\u6240\u6709\u4e00\u76f4\u4ee5\u4f86\u53d7\u5230\u7684\u6253\u58d3\u548c\u59d4\u5c48\u5728\u4e00\u77ac\u9593\u7206\u767c\u4e86\u4e0a\u4e86\uff0c\u4ed6\u8209\u8d77\u62f3\u982d\u885d\u5411\u4e86\u8001\u4eba\uff0c\u4e26\u6012\u543c\u8457\u3002<\/p>\n<p>\u300c\u6211\u4e0d\u662f\u4f4e\u80fd\u5152\uff01\uff01\uff01\uff01\uff01\u300d<\/p>\n<p>\u8aaa\u6642\u9072\u90a3\u6642\u5feb\uff0c\u8001\u4eba\u7528\u66f4\u5feb\u7684\u901f\u5ea6\u81ea\u61f7\u88e1\u638f\u51fa\u4e86\u4e00\u7ba1\u9ebb\u9189\u5291\uff0c\u6436\u5148\u4e00\u6b65\u624e\u5230\u4e86\u862d\u767b\u8eab\u4e0a\uff0c\u862d\u767b\u518d\u6b21\u5931\u53bb\u4e86\u610f\u8b58\u3002<\/p>\n<p>\u862d\u767b\u518d\u6b21\u5f9e\u6536\u5bb9\u6240\u7684\u623f\u9593\u7526\u9192\u3002\u4f46\u9019\u6b21\uff0c\u773e\u4eba\u90fd\u7ad9\u5728\u65c1\u908a\u7b49\u5f85\uff0c\u8868\u60c5\u8207\u614b\u5ea6\u4e5f\u8207\u5148\u524d\u4e0d\u540c\u4e86\u3002<\/p>\n<p>\u96c5\u5404\u7387\u5148\u958b\u4e86\u53e3\u300c\u862d\u767b\uff0c\u5176\u5be6\u6211\u5f88\u4f69\u670d\u4f60\u3002\u4f60\u5728\u9019\u7a2e\u906d\u5230\u91cd\u91cd\u5426\u5b9a\u7684\u74b0\u5883\u4e0b\uff0c\u4f9d\u820a\u6c92\u6709\u6539\u8b8a\u7684\u7e7c\u7e8c\u5805\u6301\u9760\u81ea\u5df1\u7684\u52aa\u529b\u5b78\u7fd2\uff0c\u4e26\u4e14\u6c92\u6709\u56e0\u70ba\u4ed6\u4eba\u7684\u8cea\u7591\u800c\u6539\u8b8a\u81ea\u5df1\u7684\u60f3\u6cd5\uff0c\u9019\u662f\u6211\u6240\u505a\u4e0d\u5230\u7684\u3002\u300d<\/p>\n<p>\u63a5\u8457\u662f\u8001\u4eba\u958b\u53e3\u300c\u5f88\u62b1\u6b49\u9019\u6bb5\u6642\u9593\u8b93\u4f60\u53d7\u5230\u59d4\u5c48\u4e86\u3002\u6211\u662f\u9019\u88e1\u7684\u9662\u9577\uff0c\u9019\u500b\u6536\u5bb9\u6240\u771f\u6b63\u540d\u5b57\u53eb\u300e\u9ad8\u7b49\u79d1\u5b78\u6559\u80b2\u7814\u7a76\u6240\u300f\uff0c\u662f\u5c08\u9580\u57f9\u990a\u79d1\u5b78\u5bb6\u7684\u7814\u7a76\u6240\u3002\u300d<\/p>\n<p>\u8001\u4eba\u63a5\u8457\u8aaa\u300c\u4f60\u901a\u904e\u4e86\u8003\u9a57\uff0c\u5176\u5be6\u80fd\u5920\u9032\u5230\u9019\u500b\u7814\u7a76\u6240\u7684\u4eba\u5011\uff0c\u90fd\u6709\u4e00\u5b9a\u7684\u667a\u529b\u8207\u8cc7\u8cea\u3002\u7136\u800c\uff0c\u771f\u6b63\u7684\u79d1\u5b78\u5bb6\u9664\u4e86\u8981\u8db3\u5920\u8070\u660e\uff0c\u9084\u9700\u8981\u6709\u8457\u4e0d\u61c8\u7684\u614b\u5ea6\uff0c\u4ee5\u53ca\u8cea\u7591\u6240\u6709\u4e8b\u7269\u7684\u7cbe\u795e\u3002\u6559\u80b2\u6a5f\u5668\u80fd\u5920\u50b3\u8f38\u4eba\u5011\u77e5\u8b58\uff0c\u7136\u800c\u614b\u5ea6\u8207\u7279\u8cea\uff0c\u662f\u8207\u751f\u4ff1\u4f86\u7684\u3002\u4f60\u5f88\u5b8c\u7f8e\u5730\u7b26\u5408\u79d1\u5b78\u5bb6\u9019\u6a23\u7684\u7279\u8cea\u3002\u300d<\/p>\n<p>\u96c5\u5404\u4e5f\u8868\u793a\u300c\u4e8b\u5be6\u4e0a\uff0c\u90a3\u4e9b\u6383\u63cf\u4eba\u985e\u5927\u8166\u4e26\u50b3\u6388\u6559\u80b2\u7684\u6a5f\u5668\uff0c\u6700\u4e00\u958b\u59cb\u4e5f\u662f\u6c92\u6709\u88ab\u6559\u80b2\u6a5f\u5668\u50b3\u6388\u77e5\u8b58\u7684\u79d1\u5b78\u5bb6\u5011\uff0c\u8cbb\u76e1\u5fc3\u8840\u767c\u660e\u51fa\u4f86\u7684\u3002\u6240\u4ee5\u4f60\u7684\u5805\u6301\u4e26\u6c92\u6709\u932f\uff0c\u4eba\u985e\u78ba\u5be6\u6709\u8457\u7121\u9650\u6f5b\u529b\uff0c\u4e26\u975e\u771f\u7684\u53ea\u80fd\u4f9d\u9760\u6a5f\u5668\u9032\u884c\u77e5\u8b58\u7684\u50b3\u6388\u3002\u6211\u5011\u90fd\u662f\u8070\u660e\u4eba\u3002\u7136\u800c\u862d\u767b\uff0c\u4f60\u64c1\u6709\u8457\u50b2\u4eba\u7684\u81ea\u5b78\u7cbe\u795e\u548c\u5275\u9020\u529b\uff0c\u4e26\u4e14\u4f60\u6709\u8457\u6700\u91cd\u8981\u7684\u7368\u7acb\u601d\u8003\u7684\u80fd\u529b\u3002\u9019\u6a23\u7684\u4f60\uff0c\u7121\u7591\u662f\u6700\u68d2\u7684\u3002\u300d<\/p>\n<p>\u862d\u767b\u73fe\u5728\u5f04\u6e05\u695a\u4e86\uff0c\u4ed6\u4e0d\u50c5\u7372\u5f97\u4e86\u5225\u4eba\u7684\u8a8d\u540c\uff0c\u4e5f\u91cd\u65b0\u8a8d\u540c\u4e86\u81ea\u5df1\u4ee5\u53ca\u81ea\u5df1\u7684\u7279\u8cea\uff0c\u4e00\u76f4\u4ee5\u4f86\u7684\u5805\u6301\u8207\u614b\u5ea6\u7d42\u7a76\u4e26\u6c92\u6709\u4efb\u4f55\u7684\u932f\u8aa4\u3002\u4ed6\u4e5f\u660e\u767d\uff0c\u4ed6\u7684\u5922\u60f3\u65e9\u5df2\u4e0d\u518d\u662f\u5922\u60f3\u3002<\/p>\n<p>\u6bcb\u9700\u81ea\u8b49\u7684\uff0c\u4ed6\uff0c\u5c31\u662f\u4e00\u500b\u771f\u6b63\u7684\u79d1\u5b78\u5bb6\u3002<\/p>\n<h2 id=\"\u4f5c\u8005\u5f8c\u8a71\"><a class=\"anchor\" href=\"#\u4f5c\u8005\u5f8c\u8a71\">#<\/a> \u4f5c\u8005\u5f8c\u8a71<\/h2>\n","tags":["Novel","Novel","Article"]},{"id":"https:\/\/miyago9267.com\/Tutorial\/misc\/docker\/","url":"https:\/\/miyago9267.com\/Tutorial\/misc\/docker\/","title":"[\u5206\u4eab] Docker\u7684\u4ecb\u7d39\u8207\u4f7f\u7528","date_published":"2024-08-07T16:00:00.000Z","content_html":"<p>\u8eab\u70ba\u4e00\u500b\u5929\u5929\u5728\u8ddf\u5bb9\u5668\u6253\u4ea4\u9053\u7684\u4eba<br \/>\n\u6211\u89ba\u5f97Docker\u662f\u6bcf\u500b\u641e\u5f8c\u7aef\u6216\u904b\u7dad\u7684\u4eba\u90fd\u61c9\u8a72\u8981\u6703\u7684\u6771\u897f<br \/>\n\u4eca\u5929\u5c31\u4f86\u5f9e\u982d\u4ecb\u7d39\u4e00\u4e0bDocker\u5230\u5e95\u662f\u4ec0\u9ebc\u4ee5\u53ca\u600e\u9ebc\u7528\u5427<\/p>\n<span id=\"more\"><\/span>\n<h2 id=\"\u524d\u8a00\"><a class=\"anchor\" href=\"#\u524d\u8a00\">#<\/a> \u524d\u8a00<\/h2>\n<p>\u5982\u679c\u4f60\u6709\u5728\u81ea\u67b6\u4f3a\u670d\u5668\u6216\u662f\u641e\u5f8c\u7aef<br \/>\n\u61c9\u8a72\u591a\u5c11\u90fd\u807d\u904eDocker\u9019\u500b\u540d\u5b57<br \/>\n\u4f46\u6bcf\u6b21\u807d\u5225\u4eba\u8b1b\u4ec0\u9ebc\u5bb9\u5668\u5316\u3001\u6620\u50cf\u6a94\u3001Docker Compose<br \/>\n\u53ef\u80fd\u9084\u662f\u6703\u89ba\u5f97\u6709\u9ede\u62bd\u8c61<\/p>\n<p>\u9019\u7bc7\u6587\u7ae0\u6703\u5f9e\u6700\u57fa\u672c\u7684\u6982\u5ff5\u958b\u59cb<br \/>\n\u4e00\u8def\u8b1b\u5230\u4f60\u53ef\u4ee5\u81ea\u5df1\u5bebDockerfile\u548cdocker-compose.yml<br \/>\n\u76ee\u6a19\u662f\u8b93\u4f60\u770b\u5b8c\u4e4b\u5f8c\u53ef\u4ee5\u81ea\u5df1\u628a\u4e00\u500b\u670d\u52d9\u5bb9\u5668\u5316\u4e26\u8dd1\u8d77\u4f86<\/p>\n<h3 id=\"\u5148\u5099\u689d\u4ef6\"><a class=\"anchor\" href=\"#\u5148\u5099\u689d\u4ef6\">#<\/a> \u5148\u5099\u689d\u4ef6<\/h3>\n<ul>\n<li>\u4f60\u6703\u7528\u7d42\u7aef\u6a5f\uff08CLI\uff09<\/li>\n<li>\u4f60\u6709\u4e00\u53f0Linux\u3001MacOS\u6216Windows\u7684\u96fb\u8166<\/li>\n<li>\u4f60\u77e5\u9053\u4ec0\u9ebc\u662f\u4f3a\u670d\u5668\uff08\u81f3\u5c11\u6982\u5ff5\u4e0a\u77e5\u9053\uff09<\/li>\n<li>\u4f60\u7684\u8166\u888b\u662f\u6e05\u9192\u7684<\/li>\n<\/ul>\n<h2 id=\"docker\u662f\u4ec0\u9ebc\"><a class=\"anchor\" href=\"#docker\u662f\u4ec0\u9ebc\">#<\/a> Docker\u662f\u4ec0\u9ebc<\/h2>\n<h3 id=\"\u865b\u64ec\u6a5f-vs-\u5bb9\u5668\"><a class=\"anchor\" href=\"#\u865b\u64ec\u6a5f-vs-\u5bb9\u5668\">#<\/a> \u865b\u64ec\u6a5f vs \u5bb9\u5668<\/h3>\n<p>\u5728Docker\u51fa\u73fe\u4e4b\u524d<br \/>\n\u5982\u679c\u4f60\u60f3\u8981\u5728\u4e00\u53f0\u6a5f\u5668\u4e0a\u8dd1\u591a\u500b\u7368\u7acb\u7684\u670d\u52d9<br \/>\n\u901a\u5e38\u7684\u505a\u6cd5\u662f\u958b\u865b\u64ec\u6a5f\uff08VM\uff09<br \/>\n\u6bcf\u53f0VM\u90fd\u6709\u81ea\u5df1\u5b8c\u6574\u7684\u4f5c\u696d\u7cfb\u7d71\u3001\u6838\u5fc3\u3001\u9a45\u52d5<br \/>\n\u5f88\u5b89\u5168\u5f88\u9694\u96e2 \u4f46\u4e5f\u5f88\u80a5\u5f88\u6162<\/p>\n<p>Docker\u7684\u505a\u6cd5\u4e0d\u4e00\u6a23<br \/>\n\u5b83\u4e0d\u6703\u53bb\u865b\u64ec\u5316\u6574\u500b\u4f5c\u696d\u7cfb\u7d71<br \/>\n\u800c\u662f\u5229\u7528Linux\u6838\u5fc3\u7684namespace\u548ccgroup\u6a5f\u5236<br \/>\n\u628a\u7a0b\u5f0f\u8dd1\u5728\u4e00\u500b\u9694\u96e2\u7684\u74b0\u5883\u88e1 \u4f46\u5171\u7528\u540c\u4e00\u500b\u6838\u5fc3<br \/>\n\u6240\u4ee5\u555f\u52d5\u5feb\u3001\u4f54\u8cc7\u6e90\u5c11\u3001\u90e8\u7f72\u65b9\u4fbf<\/p>\n<p>\u7c21\u55ae\u8b1b<br \/>\nVM\u662f\u5e6b\u4f60\u84cb\u4e00\u68df\u65b0\u623f\u5b50 \u88e1\u9762\u6709\u81ea\u5df1\u7684\u6c34\u96fb\u74e6\u65af<br \/>\nContainer\u662f\u5728\u540c\u4e00\u68df\u5927\u6a13\u88e1\u9694\u51fa\u4e00\u9593\u5957\u623f \u5171\u7528\u6c34\u96fb\u4f46\u6709\u81ea\u5df1\u7684\u9580\u9396<\/p>\n<h3 id=\"\u6838\u5fc3\u6982\u5ff5\"><a class=\"anchor\" href=\"#\u6838\u5fc3\u6982\u5ff5\">#<\/a> \u6838\u5fc3\u6982\u5ff5<\/h3>\n<p>\u5728\u958b\u59cb\u4e4b\u524d \u5148\u8a8d\u8b58\u5e7e\u500b\u540d\u8a5e<\/p>\n<table>\n<thead>\n<tr>\n<th>\u540d\u8a5e<\/th>\n<th>\u8aaa\u660e<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Image\uff08\u6620\u50cf\u6a94\uff09<\/td>\n<td>\u4e00\u500b\u552f\u8b80\u7684\u6a21\u677f\uff0c\u5305\u542b\u4e86\u8dd1\u8d77\u4e00\u500b\u670d\u52d9\u6240\u9700\u7684\u6240\u6709\u6771\u897f<\/td>\n<\/tr>\n<tr>\n<td>Container\uff08\u5bb9\u5668\uff09<\/td>\n<td>\u7531Image\u555f\u52d5\u7684\u4e00\u500b\u5be6\u4f8b\uff0c\u53ef\u4ee5\u7406\u89e3\u70ba\u4e00\u500b\u5728\u8dd1\u7684\u7a0b\u5f0f<\/td>\n<\/tr>\n<tr>\n<td>Dockerfile<\/td>\n<td>\u4e00\u4efd\u63cf\u8ff0\u5982\u4f55\u5efa\u69cbImage\u7684\u8173\u672c<\/td>\n<\/tr>\n<tr>\n<td>Docker Compose<\/td>\n<td>\u7528YAML\u5b9a\u7fa9\u591a\u500b\u5bb9\u5668\u7684\u7de8\u6392\u5de5\u5177<\/td>\n<\/tr>\n<tr>\n<td>Registry<\/td>\n<td>\u5b58\u653eImage\u7684\u5009\u5eab\uff0c\u6700\u5e38\u898b\u7684\u662fDocker Hub<\/td>\n<\/tr>\n<tr>\n<td>Volume<\/td>\n<td>\u8cc7\u6599\u5377\uff0c\u8b93\u5bb9\u5668\u53ef\u4ee5\u6301\u4e45\u5316\u8cc7\u6599<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2 id=\"\u5b89\u88dddocker\"><a class=\"anchor\" href=\"#\u5b89\u88dddocker\">#<\/a> \u5b89\u88ddDocker<\/h2>\n<h3 id=\"linux\"><a class=\"anchor\" href=\"#linux\">#<\/a> Linux<\/h3>\n<p>\u5927\u90e8\u5206\u7684Linux\u767c\u884c\u7248\u90fd\u53ef\u4ee5\u7528\u5b98\u65b9\u7684\u5b89\u88dd\u8173\u672c\u4e00\u9375\u641e\u5b9a<\/p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">curl<\/span><span style=\"color:#A65E2B;--shiki-dark:#C99076\"> -fsSL<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> https:\/\/get.docker.com<\/span><span style=\"color:#AB5959;--shiki-dark:#CB7676\"> |<\/span><span style=\"color:#59873A;--shiki-dark:#80A665\"> sh<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<p>\u88dd\u5b8c\u4e4b\u5f8c\u628a\u81ea\u5df1\u52a0\u9032docker\u7fa4\u7d44 \u9019\u6a23\u5c31\u4e0d\u7528\u6bcf\u6b21\u90fdsudo<\/p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">sudo<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> usermod<\/span><span style=\"color:#A65E2B;--shiki-dark:#C99076\"> -aG<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> docker<\/span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> $USER<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<div class=\"note info\">\n<p>\u52a0\u5b8c\u7fa4\u7d44\u4e4b\u5f8c\u8981\u91cd\u65b0\u767b\u5165\u624d\u6703\u751f\u6548<br \/>\n\u4f60\u53ef\u4ee5\u7528<code>newgrp docker<\/code>\u66ab\u6642\u5207\u63db \u6216\u8005\u76f4\u63a5\u91cd\u958b\u7d42\u7aef<\/p>\n<\/div>\n<h3 id=\"macos\"><a class=\"anchor\" href=\"#macos\">#<\/a> MacOS<\/h3>\n<p>MacOS\u7684\u8a71\u76f4\u63a5\u53bb<a href=\"https:\/\/www.docker.com\/products\/docker-desktop\/\">Docker\u5b98\u7db2<\/a>\u4e0b\u8f09Docker Desktop<br \/>\n\u5b89\u88dd\u5b8c\u5c31\u53ef\u4ee5\u7528\u4e86 \u5b83\u6703\u81ea\u5e36\u4e00\u500bLinux VM\u5728\u80cc\u666f\u8dd1<\/p>\n<div class=\"note info\">\n<p>\u5982\u679c\u4f60\u662fApple Silicon\uff08M\u7cfb\u5217\u6676\u7247\uff09<br \/>\nDocker Desktop\u6703\u81ea\u52d5\u5e6b\u4f60\u8655\u7406arm64\u7684\u76f8\u5bb9\u6027<br \/>\n\u4f46\u6709\u4e9bImage\u53ef\u80fd\u53ea\u6709amd64\u7248\u672c \u8dd1\u8d77\u4f86\u6703\u900f\u904eRosetta\u8f49\u8b6f \u6548\u80fd\u6703\u5dee\u4e00\u9ede<\/p>\n<\/div>\n<h3 id=\"windows\"><a class=\"anchor\" href=\"#windows\">#<\/a> Windows<\/h3>\n<p>Windows\u7684\u8a71\u4e00\u6a23\u53bb\u5b98\u7db2\u4e0b\u8f09Docker Desktop<br \/>\n\u4e0d\u904e\u4f60\u9700\u8981\u5148\u555f\u7528WSL2<\/p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">wsl <\/span><span style=\"color:#999999;--shiki-dark:#666666\">--<\/span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">install<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<p>\u88dd\u5b8c\u91cd\u958b\u6a5f \u518d\u88ddDocker Desktop\u5c31\u53ef\u4ee5\u4e86<\/p>\n<h3 id=\"\u9a57\u8b49\u5b89\u88dd\"><a class=\"anchor\" href=\"#\u9a57\u8b49\u5b89\u88dd\">#<\/a> \u9a57\u8b49\u5b89\u88dd<\/h3>\n<p>\u4e0d\u7ba1\u54ea\u500b\u7cfb\u7d71 \u88dd\u5b8c\u4e4b\u5f8c\u8dd1\u4e00\u4e0b\u9019\u500b\u78ba\u8a8d\u6709\u6c92\u6709\u88dd\u597d<\/p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">docker<\/span><span style=\"color:#A65E2B;--shiki-dark:#C99076\"> --version<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">docker<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> run<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> hello-world<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<p>\u5982\u679c\u770b\u5230\u4e00\u5768<code>Hello from Docker!<\/code>\u7684\u8a0a\u606f\u5c31\u4ee3\u8868\u6210\u529f\u4e86<\/p>\n<h2 id=\"\u57fa\u672c\u64cd\u4f5c\"><a class=\"anchor\" href=\"#\u57fa\u672c\u64cd\u4f5c\">#<\/a> \u57fa\u672c\u64cd\u4f5c<\/h2>\n<h3 id=\"\u62c9\u53d6image\"><a class=\"anchor\" href=\"#\u62c9\u53d6image\">#<\/a> \u62c9\u53d6Image<\/h3>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"># \u5f9eDocker Hub\u62c9\u53d6\u4e00\u500bImage<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">docker<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> pull<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> nginx<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"># \u62c9\u53d6\u6307\u5b9a\u7248\u672c<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">docker<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> pull<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> nginx:1.25<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"># \u770b\u770b\u672c\u5730\u6709\u54ea\u4e9bImage<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">docker<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> images<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<h3 id=\"\u555f\u52d5container\"><a class=\"anchor\" href=\"#\u555f\u52d5container\">#<\/a> \u555f\u52d5Container<\/h3>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"># \u6700\u57fa\u672c\u7684\u555f\u52d5\u65b9\u5f0f<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">docker<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> run<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> nginx<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"># \u80cc\u666f\u57f7\u884c + \u7aef\u53e3\u6620\u5c04<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">docker<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> run<\/span><span style=\"color:#A65E2B;--shiki-dark:#C99076\"> -d<\/span><span style=\"color:#A65E2B;--shiki-dark:#C99076\"> -p<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> 8080:80<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> nginx<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"># \u7d66\u5bb9\u5668\u53d6\u540d\u5b57<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">docker<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> run<\/span><span style=\"color:#A65E2B;--shiki-dark:#C99076\"> -d<\/span><span style=\"color:#A65E2B;--shiki-dark:#C99076\"> -p<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> 8080:80<\/span><span style=\"color:#A65E2B;--shiki-dark:#C99076\"> --name<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> my-nginx<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> nginx<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<p>\u89e3\u91cb\u4e00\u4e0b\u53c3\u6578<\/p>\n<table>\n<thead>\n<tr>\n<th>\u53c3\u6578<\/th>\n<th>\u8aaa\u660e<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>-d<\/code><\/td>\n<td>\u80cc\u666f\u57f7\u884c\uff08detach\uff09<\/td>\n<\/tr>\n<tr>\n<td><code>-p 8080:80<\/code><\/td>\n<td>\u628a\u4e3b\u6a5f\u76848080 port\u6620\u5c04\u5230\u5bb9\u5668\u768480 port<\/td>\n<\/tr>\n<tr>\n<td><code>--name<\/code><\/td>\n<td>\u7d66\u5bb9\u5668\u53d6\u540d\u5b57 \u4e0d\u7136Docker\u6703\u96a8\u6a5f\u751f\u6210\u4e00\u500b<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u8dd1\u5b8c\u4e4b\u5f8c\u6253\u958b\u700f\u89bd\u5668\u9023<code>http:\/\/localhost:8080<\/code><br \/>\n\u61c9\u8a72\u5c31\u80fd\u770b\u5230Nginx\u7684\u9810\u8a2d\u9801\u9762\u4e86<\/p>\n<h3 id=\"\u7ba1\u7406container\"><a class=\"anchor\" href=\"#\u7ba1\u7406container\">#<\/a> \u7ba1\u7406Container<\/h3>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"># \u5217\u51fa\u6b63\u5728\u8dd1\u7684\u5bb9\u5668<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">docker<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> ps<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"># \u5217\u51fa\u6240\u6709\u5bb9\u5668\uff08\u5305\u542b\u5df2\u505c\u6b62\u7684\uff09<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">docker<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> ps<\/span><span style=\"color:#A65E2B;--shiki-dark:#C99076\"> -a<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"># \u505c\u6b62\u5bb9\u5668<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">docker<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> stop<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> my-nginx<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"># \u555f\u52d5\u5df2\u505c\u6b62\u7684\u5bb9\u5668<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">docker<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> start<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> my-nginx<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"># \u522a\u9664\u5bb9\u5668\uff08\u8981\u5148\u505c\u6b62\uff09<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">docker<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> rm<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> my-nginx<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"># \u5f37\u5236\u522a\u9664\uff08\u4e0d\u7528\u5148\u505c\u6b62\uff09<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">docker<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> rm<\/span><span style=\"color:#A65E2B;--shiki-dark:#C99076\"> -f<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> my-nginx<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<h3 id=\"\u9032\u5165container\"><a class=\"anchor\" href=\"#\u9032\u5165container\">#<\/a> \u9032\u5165Container<\/h3>\n<p>\u6709\u6642\u5019\u4f60\u9700\u8981\u9032\u5230\u5bb9\u5668\u88e1\u9762\u770b\u770b\u5230\u5e95\u767c\u751f\u4e86\u4ec0\u9ebc\u4e8b<\/p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"># \u9032\u5165\u5bb9\u5668\u7684shell<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">docker<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> exec<\/span><span style=\"color:#A65E2B;--shiki-dark:#C99076\"> -it<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> my-nginx<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> bash<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"># \u5982\u679c\u5bb9\u5668\u6c92\u6709bash \u53ef\u4ee5\u8a66\u8a66sh<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">docker<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> exec<\/span><span style=\"color:#A65E2B;--shiki-dark:#C99076\"> -it<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> my-nginx<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> sh<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<p><code>-it<\/code>\u662f<code>-i<\/code>\uff08interactive\uff09\u52a0<code>-t<\/code>\uff08tty\uff09\u7684\u7e2e\u5beb<br \/>\n\u7c21\u55ae\u8b1b\u5c31\u662f\u8b93\u4f60\u53ef\u4ee5\u8ddf\u5bb9\u5668\u4e92\u52d5<\/p>\n<h3 id=\"\u770blog\"><a class=\"anchor\" href=\"#\u770blog\">#<\/a> \u770bLog<\/h3>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"># \u770b\u5bb9\u5668\u7684log<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">docker<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> logs<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> my-nginx<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"># \u6301\u7e8c\u8ffd\u8e64log\uff08\u50cftail -f\u4e00\u6a23\uff09<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">docker<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> logs<\/span><span style=\"color:#A65E2B;--shiki-dark:#C99076\"> -f<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> my-nginx<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"># \u53ea\u770b\u6700\u5f8c100\u884c<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">docker<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> logs<\/span><span style=\"color:#A65E2B;--shiki-dark:#C99076\"> --tail<\/span><span style=\"color:#2F798A;--shiki-dark:#4C9A91\"> 100<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> my-nginx<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<h2 id=\"dockerfile\"><a class=\"anchor\" href=\"#dockerfile\">#<\/a> Dockerfile<\/h2>\n<p>\u5230\u76ee\u524d\u70ba\u6b62\u6211\u5011\u90fd\u662f\u7528\u5225\u4eba\u505a\u597d\u7684Image<br \/>\n\u4f46\u5982\u679c\u4f60\u8981\u628a\u81ea\u5df1\u7684\u7a0b\u5f0f\u5bb9\u5668\u5316 \u5c31\u9700\u8981\u81ea\u5df1\u5bebDockerfile<\/p>\n<h3 id=\"\u57fa\u672c\u7d50\u69cb\"><a class=\"anchor\" href=\"#\u57fa\u672c\u7d50\u69cb\">#<\/a> \u57fa\u672c\u7d50\u69cb<\/h3>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"># \u57fa\u5e95Image<\/span><\/span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">FROM<\/span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> node:20-slim<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"># \u8a2d\u5b9a\u5de5\u4f5c\u76ee\u9304<\/span><\/span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">WORKDIR<\/span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> \/app<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"># \u8907\u88fd\u6a94\u6848<\/span><\/span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">COPY<\/span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> package.json package-lock.json .\/<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"># \u57f7\u884c\u6307\u4ee4<\/span><\/span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">RUN<\/span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> npm ci --production<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"># \u8907\u88fd\u5176\u9918\u7a0b\u5f0f\u78bc<\/span><\/span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">COPY<\/span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> . .<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"># \u66b4\u9732\u7aef\u53e3<\/span><\/span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">EXPOSE<\/span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> 3000<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"># \u555f\u52d5\u6307\u4ee4<\/span><\/span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">CMD<\/span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> [<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">\"node\"<\/span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">, <\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">\"server.js\"<\/span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">]<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<h3 id=\"\u5e38\u7528\u6307\u4ee4\u8aaa\u660e\"><a class=\"anchor\" href=\"#\u5e38\u7528\u6307\u4ee4\u8aaa\u660e\">#<\/a> \u5e38\u7528\u6307\u4ee4\u8aaa\u660e<\/h3>\n<table>\n<thead>\n<tr>\n<th>\u6307\u4ee4<\/th>\n<th>\u8aaa\u660e<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>FROM<\/code><\/td>\n<td>\u6307\u5b9a\u57fa\u5e95Image<\/td>\n<\/tr>\n<tr>\n<td><code>WORKDIR<\/code><\/td>\n<td>\u8a2d\u5b9a\u5de5\u4f5c\u76ee\u9304 \u4e4b\u5f8c\u7684\u6307\u4ee4\u90fd\u6703\u5728\u9019\u500b\u76ee\u9304\u4e0b\u57f7\u884c<\/td>\n<\/tr>\n<tr>\n<td><code>COPY<\/code><\/td>\n<td>\u8907\u88fd\u6a94\u6848\u5230\u5bb9\u5668\u88e1<\/td>\n<\/tr>\n<tr>\n<td><code>RUN<\/code><\/td>\n<td>\u5728build\u6642\u57f7\u884c\u6307\u4ee4\uff08\u88dd\u5957\u4ef6\u4e4b\u985e\u7684\uff09<\/td>\n<\/tr>\n<tr>\n<td><code>EXPOSE<\/code><\/td>\n<td>\u5ba3\u544a\u5bb9\u5668\u8981\u76e3\u807d\u7684port\uff08\u53ea\u662f\u6587\u4ef6\u5316 \u4e0d\u6703\u81ea\u52d5\u6620\u5c04\uff09<\/td>\n<\/tr>\n<tr>\n<td><code>CMD<\/code><\/td>\n<td>\u5bb9\u5668\u555f\u52d5\u6642\u8981\u57f7\u884c\u7684\u6307\u4ee4<\/td>\n<\/tr>\n<tr>\n<td><code>ENV<\/code><\/td>\n<td>\u8a2d\u5b9a\u74b0\u5883\u8b8a\u6578<\/td>\n<\/tr>\n<tr>\n<td><code>ARG<\/code><\/td>\n<td>\u8a2d\u5b9abuild\u6642\u7684\u53c3\u6578<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3 id=\"build-image\"><a class=\"anchor\" href=\"#build-image\">#<\/a> Build Image<\/h3>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"># \u5728\u6709Dockerfile\u7684\u76ee\u9304\u4e0b<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">docker<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> build<\/span><span style=\"color:#A65E2B;--shiki-dark:#C99076\"> -t<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> my-app:latest<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> .<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"># -t \u662ftag\u7684\u610f\u601d \u7d66\u4f60\u7684Image\u53d6\u540d\u5b57\u548c\u7248\u672c<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<h3 id=\"dockerignore\"><a class=\"anchor\" href=\"#dockerignore\">#<\/a> .dockerignore<\/h3>\n<p>\u8ddf<code>.gitignore<\/code>\u4e00\u6a23\u7684\u6982\u5ff5<br \/>\n\u544a\u8a34Docker\u5728COPY\u7684\u6642\u5019\u8981\u5ffd\u7565\u54ea\u4e9b\u6a94\u6848<\/p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span>node_modules<\/span><\/span>\n<span class=\"line\"><span>.git<\/span><\/span>\n<span class=\"line\"><span>.env<\/span><\/span>\n<span class=\"line\"><span>*.md<\/span><\/span>\n<span class=\"line\"><span><\/span><\/span><\/code><\/pre>\n<div class=\"note info\">\n<p>\u4e00\u5b9a\u8981\u8a18\u5f97\u52a0<code>.dockerignore<\/code><br \/>\n\u4e0d\u7136\u4f60COPY\u7684\u6642\u5019\u6703\u628a<code>node_modules<\/code>\u4e4b\u985e\u7684\u5783\u573e\u4e00\u8d77\u8907\u88fd\u9032\u53bb<br \/>\n\u4e0d\u50c5build\u8b8a\u6162 Image\u4e5f\u6703\u8b8a\u8d85\u80a5<\/p>\n<\/div>\n<h3 id=\"multi-stage-build\"><a class=\"anchor\" href=\"#multi-stage-build\">#<\/a> Multi-stage Build<\/h3>\n<p>\u5982\u679c\u4f60\u7684\u7a0b\u5f0f\u9700\u8981\u7de8\u8b6f\uff08\u50cfTypeScript\u3001Go\u4e4b\u985e\u7684\uff09<br \/>\n\u53ef\u4ee5\u7528multi-stage build\u4f86\u6e1b\u5c11\u6700\u7d42Image\u7684\u5927\u5c0f<\/p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"># Stage 1: Build<\/span><\/span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">FROM<\/span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> node:20-slim <\/span><span style=\"color:#1E754F;--shiki-dark:#4D9375\">AS<\/span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> builder<\/span><\/span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">WORKDIR<\/span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> \/app<\/span><\/span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">COPY<\/span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> package.json package-lock.json .\/<\/span><\/span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">RUN<\/span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> npm ci<\/span><\/span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">COPY<\/span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> . .<\/span><\/span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">RUN<\/span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> npm run build<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"># Stage 2: Production<\/span><\/span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">FROM<\/span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> node:20-slim<\/span><\/span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">WORKDIR<\/span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> \/app<\/span><\/span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">COPY<\/span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> --from=builder \/app\/dist .\/dist<\/span><\/span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">COPY<\/span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> --from=builder \/app\/node_modules .\/node_modules<\/span><\/span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">EXPOSE<\/span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> 3000<\/span><\/span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">CMD<\/span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> [<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">\"node\"<\/span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">, <\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">\"dist\/server.js\"<\/span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">]<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<p>\u7b2c\u4e00\u500bstage\u8ca0\u8cac\u7de8\u8b6f \u7b2c\u4e8c\u500bstage\u53ea\u8907\u88fd\u7de8\u8b6f\u5b8c\u7684\u7d50\u679c<br \/>\n\u9019\u6a23\u6700\u7d42\u7684Image\u5c31\u4e0d\u6703\u5305\u542bdevDependencies\u548c\u539f\u59cb\u78bc<\/p>\n<h2 id=\"docker-compose\"><a class=\"anchor\" href=\"#docker-compose\">#<\/a> Docker Compose<\/h2>\n<p>\u7576\u4f60\u7684\u670d\u52d9\u4e0d\u53ea\u4e00\u500b\u5bb9\u5668\u7684\u6642\u5019<br \/>\n\u4e00\u500b\u4e00\u500b<code>docker run<\/code>\u6703\u760b\u6389<br \/>\nDocker Compose\u5c31\u662f\u4f86\u89e3\u6c7a\u9019\u500b\u554f\u984c\u7684<\/p>\n<h3 id=\"\u57fa\u672c\u7d50\u69cb-2\"><a class=\"anchor\" href=\"#\u57fa\u672c\u7d50\u69cb-2\">#<\/a> \u57fa\u672c\u7d50\u69cb<\/h3>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">services<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">  web<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">    build<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#2F798A;--shiki-dark:#4C9A91\"> .<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">    ports<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">      -<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\"> \"<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">3000:3000<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">    environment<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">      -<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> NODE_ENV=production<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">      -<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> DB_HOST=db<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">    depends_on<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">      -<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> db<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">    restart<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> unless-stopped<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">  db<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">    image<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> postgres:16<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">    volumes<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">      -<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> db_data:\/var\/lib\/postgresql\/data<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">    environment<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">      -<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> POSTGRES_PASSWORD=mysecretpassword<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">      -<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> POSTGRES_DB=myapp<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">volumes<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">  db_data<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<h3 id=\"\u5e38\u7528\u6307\u4ee4\"><a class=\"anchor\" href=\"#\u5e38\u7528\u6307\u4ee4\">#<\/a> \u5e38\u7528\u6307\u4ee4<\/h3>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"># \u555f\u52d5\u6240\u6709\u670d\u52d9\uff08\u80cc\u666f\u57f7\u884c\uff09<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">docker<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> compose<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> up<\/span><span style=\"color:#A65E2B;--shiki-dark:#C99076\"> -d<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"># \u505c\u6b62\u6240\u6709\u670d\u52d9<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">docker<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> compose<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> down<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"># \u505c\u6b62\u4e26\u522a\u9664volume\uff08\u5c0f\u5fc3\u8cc7\u6599\u6703\u4e0d\u898b\uff09<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">docker<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> compose<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> down<\/span><span style=\"color:#A65E2B;--shiki-dark:#C99076\"> -v<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"># \u91cd\u65b0build\u4e26\u555f\u52d5<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">docker<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> compose<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> up<\/span><span style=\"color:#A65E2B;--shiki-dark:#C99076\"> -d<\/span><span style=\"color:#A65E2B;--shiki-dark:#C99076\"> --build<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"># \u770blog<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">docker<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> compose<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> logs<\/span><span style=\"color:#A65E2B;--shiki-dark:#C99076\"> -f<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"># \u53ea\u770b\u67d0\u500b\u670d\u52d9\u7684log<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">docker<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> compose<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> logs<\/span><span style=\"color:#A65E2B;--shiki-dark:#C99076\"> -f<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> web<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<h3 id=\"volume\"><a class=\"anchor\" href=\"#volume\">#<\/a> Volume<\/h3>\n<p>Volume\u662fDocker\u7528\u4f86\u6301\u4e45\u5316\u8cc7\u6599\u7684\u6a5f\u5236<br \/>\n\u5982\u679c\u4f60\u4e0d\u639bVolume \u5bb9\u5668\u4e00\u522a\u8cc7\u6599\u5c31\u6c92\u4e86<\/p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">services<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">  db<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">    image<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> postgres:16<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">    volumes<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">      # Named volume\uff08Docker\u7ba1\u7406\uff09<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">      -<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> db_data:\/var\/lib\/postgresql\/data<\/span><\/span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">      # Bind mount\uff08\u76f4\u63a5\u639b\u4e3b\u6a5f\u76ee\u9304\uff09<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">      -<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> .\/init.sql:\/docker-entrypoint-initdb.d\/init.sql<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">volumes<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">  db_data<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<div class=\"note info\">\n<p>Named volume\u548cbind mount\u7684\u5dee\u5225\u5728\u65bc<br \/>\nNamed volume\u662fDocker\u81ea\u5df1\u7ba1\u7406\u7684 \u653e\u5728<code>\/var\/lib\/docker\/volumes\/<\/code>\u5e95\u4e0b<br \/>\nBind mount\u662f\u76f4\u63a5\u628a\u4e3b\u6a5f\u7684\u76ee\u9304\u6620\u5c04\u9032\u5bb9\u5668<br \/>\n\u4e00\u822c\u4f86\u8aaa \u8cc7\u6599\u5eab\u4e4b\u985e\u7684\u7528named volume \u8a2d\u5b9a\u6a94\u4e4b\u985e\u7684\u7528bind mount<\/p>\n<\/div>\n<h3 id=\"network\"><a class=\"anchor\" href=\"#network\">#<\/a> Network<\/h3>\n<p>Docker Compose\u9810\u8a2d\u6703\u5efa\u7acb\u4e00\u500bbridge network<br \/>\n\u540c\u4e00\u500bcompose\u6a94\u6848\u88e1\u7684\u670d\u52d9\u53ef\u4ee5\u7528\u670d\u52d9\u540d\u7a31\u4e92\u76f8\u9023\u7dda<br \/>\n\u4e5f\u5c31\u662f\u70ba\u4ec0\u9ebc\u4e0a\u9762\u7684<code>DB_HOST<\/code>\u53ef\u4ee5\u76f4\u63a5\u5beb<code>db<\/code><\/p>\n<p>\u5982\u679c\u4f60\u9700\u8981\u8b93\u4e0d\u540ccompose\u6a94\u6848\u7684\u5bb9\u5668\u4e92\u76f8\u6e9d\u901a<br \/>\n\u53ef\u4ee5\u81ea\u5df1\u5efa\u7acb\u5916\u90e8network<\/p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">services<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">  web<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">    networks<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">      -<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> shared<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">networks<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">  shared<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">    external<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#1E754F;--shiki-dark:#4D9375\"> true<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"># \u5148\u5efa\u7acb\u5916\u90e8network<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">docker<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> network<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> create<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> shared<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<h2 id=\"\u5e38\u7528\u6280\u5de7\"><a class=\"anchor\" href=\"#\u5e38\u7528\u6280\u5de7\">#<\/a> \u5e38\u7528\u6280\u5de7<\/h2>\n<h3 id=\"\u6e05\u7406\u5783\u573e\"><a class=\"anchor\" href=\"#\u6e05\u7406\u5783\u573e\">#<\/a> \u6e05\u7406\u5783\u573e<\/h3>\n<p>Docker\u7528\u4e45\u4e86\u6703\u5806\u7a4d\u4e00\u5806\u6c92\u5728\u7528\u7684Image\u3001Container\u3001Volume<br \/>\n\u5b9a\u671f\u6e05\u4e00\u4e0b<\/p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"># \u6e05\u9664\u6240\u6709\u6c92\u5728\u7528\u7684\u6771\u897f\uff08\u5c0f\u5fc3\u4f7f\u7528\uff09<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">docker<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> system<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> prune<\/span><span style=\"color:#A65E2B;--shiki-dark:#C99076\"> -a<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"># \u53ea\u6e05\u6c92\u5728\u7528\u7684Image<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">docker<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> image<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> prune<\/span><span style=\"color:#A65E2B;--shiki-dark:#C99076\"> -a<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"># \u53ea\u6e05\u6c92\u5728\u7528\u7684Volume<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">docker<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> volume<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> prune<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"># \u770b\u770bDocker\u4f54\u4e86\u591a\u5c11\u7a7a\u9593<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">docker<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> system<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> df<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<h3 id=\"\u5065\u5eb7\u6aa2\u67e5\"><a class=\"anchor\" href=\"#\u5065\u5eb7\u6aa2\u67e5\">#<\/a> \u5065\u5eb7\u6aa2\u67e5<\/h3>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">services<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">  web<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">    build<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#2F798A;--shiki-dark:#4C9A91\"> .<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">    healthcheck<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">      test<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#999999;--shiki-dark:#666666\"> [<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">CMD<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><span style=\"color:#999999;--shiki-dark:#666666\">,<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\"> \"<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">curl<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><span style=\"color:#999999;--shiki-dark:#666666\">,<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\"> \"<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">-f<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><span style=\"color:#999999;--shiki-dark:#666666\">,<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\"> \"<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">http:\/\/localhost:3000\/health<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><span style=\"color:#999999;--shiki-dark:#666666\">]<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">      interval<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> 30s<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">      timeout<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> 10s<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">      retries<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#2F798A;--shiki-dark:#4C9A91\"> 3<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">      start_period<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> 10s<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<p>\u52a0\u4e86healthcheck\u4e4b\u5f8c Docker\u6703\u5b9a\u671f\u53bb\u6233\u4f60\u7684\u670d\u52d9\u78ba\u8a8d\u5b83\u9084\u6d3b\u8457<br \/>\n\u642d\u914d<code>restart: unless-stopped<\/code>\u53ef\u4ee5\u8b93\u639b\u6389\u7684\u670d\u52d9\u81ea\u52d5\u91cd\u555f<\/p>\n<h3 id=\"\u74b0\u5883\u8b8a\u6578\u7ba1\u7406\"><a class=\"anchor\" href=\"#\u74b0\u5883\u8b8a\u6578\u7ba1\u7406\">#<\/a> \u74b0\u5883\u8b8a\u6578\u7ba1\u7406<\/h3>\n<p>\u4e0d\u8981\u628a\u5bc6\u78bc\u76f4\u63a5\u5beb\u5728docker-compose.yml\u88e1\u9762<br \/>\n\u7528<code>.env<\/code>\u6a94\u6848\u7ba1\u7406<\/p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"># .env<\/span><\/span>\n<span class=\"line\"><span style=\"color:#B07D48;--shiki-dark:#BD976A\">POSTGRES_PASSWORD<\/span><span style=\"color:#999999;--shiki-dark:#666666\">=<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">mysecretpassword<\/span><\/span>\n<span class=\"line\"><span style=\"color:#B07D48;--shiki-dark:#BD976A\">DB_NAME<\/span><span style=\"color:#999999;--shiki-dark:#666666\">=<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">myapp<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">services<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">  db<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">    image<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> postgres:16<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">    environment<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">      -<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> POSTGRES_PASSWORD=$&#123;POSTGRES_PASSWORD&#125;<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">      -<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> POSTGRES_DB=$&#123;DB_NAME&#125;<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<p>Docker Compose\u6703\u81ea\u52d5\u8b80\u53d6\u540c\u76ee\u9304\u4e0b\u7684<code>.env<\/code>\u6a94\u6848<\/p>\n<div class=\"note info\">\n<p>\u8a18\u5f97\u628a<code>.env<\/code>\u52a0\u9032<code>.gitignore<\/code><br \/>\n\u4e0d\u8981\u628a\u5bc6\u78bc\u63a8\u4e0a\u53bb \u9019\u662f\u5e38\u8b58<\/p>\n<\/div>\n<h2 id=\"\u7d50\u8a9e\"><a class=\"anchor\" href=\"#\u7d50\u8a9e\">#<\/a> \u7d50\u8a9e<\/h2>\n<p>Docker\u9019\u6771\u897f\u8aaa\u96e3\u4e0d\u96e3 \u8aaa\u7c21\u55ae\u4e5f\u6c92\u90a3\u9ebc\u7c21\u55ae<br \/>\n\u4f46\u53ea\u8981\u641e\u61c2Image\u3001Container\u3001Volume\u3001Network\u9019\u5e7e\u500b\u6838\u5fc3\u6982\u5ff5<br \/>\n\u5269\u4e0b\u7684\u5c31\u662f\u770b\u6587\u4ef6\u7136\u5f8c\u591a\u7528\u5c31\u6703\u4e86<\/p>\n<p>\u6211\u81ea\u5df1\u5f9e\u958b\u59cb\u7528Docker\u5230\u73fe\u5728<br \/>\n\u5df2\u7d93\u96e2\u4e0d\u958b\u9019\u6771\u897f\u4e86<br \/>\n\u4e0d\u7ba1\u662f\u958b\u767c\u74b0\u5883\u9084\u662f\u6b63\u5f0f\u74b0\u5883<br \/>\n\u6709Docker\u5728 \u74b0\u5883\u554f\u984c\u57fa\u672c\u4e0a\u5c31\u4e0d\u662f\u554f\u984c\u4e86<br \/>\n\u300c\u5728\u6211\u7684\u96fb\u8166\u4e0a\u53ef\u4ee5\u8dd1\u300d\u9019\u53e5\u8a71\u4e5f\u7d42\u65bc\u53ef\u4ee5\u8b8a\u6210\u300c\u5728Docker\u88e1\u53ef\u4ee5\u8dd1\u300d<\/p>\n<p>\u4e4b\u5f8c\u5982\u679c\u6709\u6a5f\u6703\u518d\u4f86\u5bebDocker\u5728K8s\u4e0a\u7684\u61c9\u7528\u5427<\/p>\n<!-- \u53cd\u6b63\u6211\u5df2\u7d93\u5beb\u4e86\u4e00\u7bc7K8s MailServer\u4e86 -->\n","tags":["Tutorial","Tutorial","Advanced","Linux","Docker"]},{"id":"https:\/\/miyago9267.com\/Diary\/2024\/0806\/","url":"https:\/\/miyago9267.com\/Diary\/2024\/0806\/","title":"[\u672d\u8a18] 20240806","date_published":"2024-08-05T16:00:00.000Z","content_html":"<p>\u95ca\u5225\u5169\u500b\u6708\u4f86\u5beb\u9ede\u5ee2\u8a71<br \/>\n\u56de\u9867\u4e00\u4e0b\u9019\u5169\u500b\u6708\u5728\u5e79\u561b<\/p>\n<span id=\"more\"><\/span>\n<p>\u9019\u5169\u500b\u6708\u5176\u5be6\u633a\u7121\u804a\u7684<br \/>\n\u9664\u4e86\u4e8b\u60c5\u90fd\u5f88\u96f6\u6563\u4ee5\u5916<br \/>\n\u5de5\u4f5c\u4e5f\u6c92\u5565\u6b63\u7d93\u7684\u9032\u5ea6<br \/>\n\u6240\u4ee5\u9019\u7bc7\u53ef\u80fd\u5beb\u5f97\u6563\u4e00\u9ede\u5427<\/p>\n<h2 id=\"mygo\"><a class=\"anchor\" href=\"#mygo\">#<\/a> MyGO<\/h2>\n<p>5\u6708\u4efd\u7684\u6642\u5019<br \/>\n\u4e0a\u73ed\u592a\u7121\u804a\u7684\u6211\u5beb\u4e86\u4e00\u500b<a href=\"https:\/\/mygo.miyago9267.com\">MyGO\u8868\u60c5\u5305\u641c\u5c0b\u5de5\u5177<\/a><br \/>\n\u7136\u800c \u641e\u7b11\u7684\u662f\u6211\u90a3\u6642\u5019\u770b\u4e86\u4e00\u5806\u6897\u5716<br \/>\n\u537b\u9023MyGO\u7684\u672c\u7bc7\u90fd\u6c92\u770b\u5b8c<\/p>\n<p>\u65bc\u662f 6\u6708\u5e95\u7684\u6642\u5019<br \/>\n\u6211\u4e0a\u73ed\u592a\u9592\u6253\u958b\u4e86MyGO\u52d5\u756b\u4f86\u914d\u98ef<br \/>\n\u7136\u5f8c\u4e0d\u77e5\u4e0d\u89ba\u5c31\u770b\u5b8c\u4e86\uff01\uff01\uff01<\/p>\n<p>\u6211\u4ed6\u5abd \u9019\u52d5\u756b\u6709\u5920\u53ef\u6015<br \/>\n\u56e0\u70ba\u505a\u4e86\u8868\u60c5\u5305\u641c\u5c0b\u5668<br \/>\n\u90a3\u4e9b\u6897\u5716\u6211\u770b\u5230\u90fd\u5df2\u7d93\u5f88\u719f\u6089\u4e86<br \/>\n\u518d\u56de\u53bb\u88dc\u52d5\u756b\u5f77\u5f7f\u90fd\u5728\u773c\u524d \u6b77\u6b77\u5728\u76ee<br \/>\n\u4e00\u908a\u7b11\u4e00\u908a\u54ed\u8457\u770b\u5b8c\u52d5\u756b<\/p>\n<p>\u65bc\u662f\u6211\u73fe\u5728\u8b8a\u6210\u6897\u5c0f\u9b3c\u4e86<br \/>\n\u626f\u5230\u4ec0\u9ebc\u4e00\u8f29\u5b50\u6216\u662f\u6625\u65e5\u7b49\u7b49keyword<br \/>\n\u6211\u7684\u8166\u4e2d\u5c31\u5168\u90e8\u90fd\u662fMyGO\u6897 \u54c7\u64cd \u7e43\u4e0d\u4f4f\u4e86<br \/>\n\u6211\u73fe\u5728\u4ec0\u9ebc\u90fd\u4e0d\u60f3 \u6211\u53ea\u60f3\u770bAve Mujica<br \/>\n\u9019\u500b2024\u5e74\u6211\u662f\u4e00\u523b\u90fd\u5f85\u4e0d\u4e0b\u53bb\u4e86<\/p>\n<h2 id=\"tdm\"><a class=\"anchor\" href=\"#tdm\">#<\/a> TDM<\/h2>\n<p>\u4e03\u6708\u521d\u7684\u6642\u5019\u53bb\u4e86\u4e00\u8d9f\u53f0\u5317<br \/>\n\u53c3\u52a0\u690e\u540d\u7b56\u5283\u4e3b\u8fa6\u7684TDM<br \/>\n\u4e3b\u8981\u662f\u88ab\u6a02\u5750\u6293\u53bb\u5e6b\u5fd9\u5566<br \/>\n\u53eb\u6211\u5e36\u96fb\u8166\u548c\u5e6b\u5fd9\u9867\u6524<br \/>\n\u65bc\u662f\u6211\u5c31\u8ddf\u548c\u6708\u8dd1\u4e0a\u53bb\u4e86\u53f0\u5317\u4e00\u8d9f<\/p>\n<p>\u53ea\u80fd\u8aaa \u4ee4\u4eba\u610f\u5916\u7684\u597d\u73a9<br \/>\n\u6211\u672c\u4f86\u60f3\u50cf\u7684\u540c\u4eba\u97f3\u6a02\u5c08\u5834\u6703\u662f\u90a3\u7a2e\u8d85\u5c0f\u773e\u7684\u6d3b\u52d5<br \/>\n\u7d50\u679c\u4e0d\u50c5\u73fe\u5834\u4eba\u6f6e\u71b1\u70c8<br \/>\n\u9084\u6709\u4e00\u5806\u97f3\u6a02\u540c\u597d\u771f\u7684\u4e00\u8d77\u73fe\u5834\u4f86\u73a9\u5373\u8208<br \/>\n\u53ea\u80fd\u8aaa\u53ef\u60dc\u6211\u4e0d\u6703\u4efb\u4f55\u6a02\u5668<br \/>\n\u4e0d\u7136\u6211\u4e5f\u60f3\u4e0a\u53bbopen jam\u4e00\u4e0b<\/p>\n<p>\u6703\u4e2d\u9084\u89aa\u773c\u898b\u5230\u4e86\u524a\u9664\u672c\u8eab<br \/>\n\u6211\u9084\u6709\u8ddf\u4ed6\u5408\u7167<\/p>\n<p><img loading=\"lazy\" src=\"\/images\/diary\/2024\/0806\/P_20240706_112005.jpg\" alt=\"\u524a\u9664\u548c\u6211\u7684\u5408\u7167\" \/><br \/>\n(\u53f3\u908a\u662f\u524a\u9664 \u4ed6\u628a\u65b9\u584a\u982d\u7d66\u6211\u6234\u4e86)<\/p>\n<p>\u4ed6\u672c\u4eba\u4eba\u8d85\u597d \u76f4\u63a5\u554f\u6211\u8aaa\u8981\u4e0d\u8981\u591a\u62cd\u5e7e\u5f35<br \/>\n\u7136\u5f8c\u8ddf\u6211\u8aaa\u5f88\u62b1\u6b49\u5c08\u8f2f\u8ce3\u5b8c\u4e86\u6c92\u80fd\u7d66\u6211<\/p>\n<p>\u6703\u5f8c\u548c\u6a02\u5750\u4ed6\u5011\u4e00\u7fa4\u4eba\u53bb\u5403\u98ef<br \/>\n\u539f\u672c\u4ee5\u70ba\u53ea\u6709\u6211\u3001\u6a02\u5750\u3001\u5154\u5bd2<br \/>\n\u5f8c\u4f86\u52a0\u4e86\u4e00\u500b\u8ddf\u6211\u4e00\u8d77\u4e0a\u53f0\u5317\u7684\u548c\u6708<br \/>\n\u672c\u4f86\u4ee5\u70ba\u5c31\u9019\u56db\u500b\u4eba<br \/>\n\u7d50\u679c\u6536\u6524\u4e4b\u5f8c\u4e00\u8d77\u904e\u53bb\u4eba\u6709\u4ed6\u5abd11\u500b<br \/>\n\u795e\u7d93\u75c5\uff01\uff01\uff01<\/p>\n<p>\u8d85\u597d\u7b11 \u7e3d\u4e4b\u6211\u5011\u5c31\u4e00\u8d77\u53bb\u5403\u98ef<br \/>\n\u5403\u5b8c\u901b\u901b\u5b89\u7f8e<br \/>\n\u4e4b\u5f8c\u518d\u53bb\u5317\u8eca\u6253\u6a5f \u6574\u5929\u53f0\u5317\u884c\u7a0b\u8d85\u5713\u6eff<\/p>\n<h2 id=\"ipad\"><a class=\"anchor\" href=\"#ipad\">#<\/a> ipad<\/h2>\n<p>\u6211\u5f9e\u53bb\u5e74\u5c31\u4e00\u76f4\u5728\u8096\u60f3\u8981\u8cb7\u4e00\u53f0ipad<br \/>\n\u6b63\u597d\u5f9e\u5e74\u521d\u860b\u679c\u767c\u8868M4\u7248\u7684ipad pro\u4e4b\u5f8c\u6211\u5c31\u66f4\u60f3\u8981\u4e86<br \/>\n\u4f46\u662f\u56e0\u70ba\u624b\u982d\u5be6\u5728\u64e0\u4e0d\u51fa\u9019\u9ebc\u591a\u9322(\u4ed6\u6f32\u50f9\u6f32\u8d85\u591aorz)<\/p>\n<p>\u672c\u4f86\u60f3\u8981\u57289\u6708\u5de6\u53f3\u770b\u770b\u6709\u6c92\u6709\u6a5f\u6703\u8e6d\u4e00\u6ce2BTS<br \/>\n\u7d50\u679c\u963f\u6d1b\u5c31\u8dd1\u4f86\u554f\u6211\u8aaa<br \/>\n\u770b\u8981\u4e0d\u8981\u4ed6\u90a3\u53f022\u5e74\u7684M2\u7248ipad pro\u8ce3\u6211<br \/>\n\u7136\u5f8c\u4ed6\u53bb\u8cb7\u65b0\u7684<br \/>\n\u6211\u601d\u8003\u4e86\u5e7e\u5929\u5f8c\u5c31\u8ddf\u4ed6\u8aaa\u597d<\/p>\n<p>\u65bc\u662f\u8d81\u8457\u963f\u6d1b\u751f\u65e5<br \/>\n\u6211\u5011\u5c31\u76f4\u63a5\u6bba\u53bb\u860b\u679c\u7684101\u76f4\u71df\u5e97<br \/>\n\u7136\u5f8c\u73fe\u5834\u63d0\u4e86\u4e00\u53f0ipad\u56de\u4f86<br \/>\n\u63a5\u8457\u5c31\u662f\u5728\u9ad8\u9435\u4e0a\u642c\u8cc7\u6599<br \/>\n\u7576\u5929\u5c31\u628a\u90a3\u53f0M2\u7684ipad pro\u62ff\u56de\u5bb6\u4e86<br \/>\n\u96d6\u7136\u8ddf\u9810\u60f3\u8981\u8cb7\u7684\u578b\u865f\u4e0d\u4e00\u6a23<br \/>\n\u4f46\u5fc5\u9808\u5f97\u8aaaM\u7cfb\u5217\u679c\u7136\u725b\u903c<br \/>\n\u9664\u4e86\u87a2\u5e55\u6574\u6a5f\u529f\u8017\u6bd4\u8f03\u5927\u4ee5\u5916(\u7562\u7adf\u662fmini led)<br \/>\n\u5e7e\u4e4e\u6c92\u4ec0\u9ebc\u80fd\u6311\u7684<\/p>\n","tags":["Diary","Diary"]},{"id":"https:\/\/miyago9267.com\/Tutorial\/misc\/exp-mailserver\/","url":"https:\/\/miyago9267.com\/Tutorial\/misc\/exp-mailserver\/","title":"[\u5206\u4eab] Docker MailServer\u67b6\u8a2d\u8207\u63a1\u5751\u7d00\u9304","date_published":"2024-08-01T08:08:36.000Z","content_html":"<p>\u4e00\u76f4\u4ee5\u4f86<br \/>\n\u7b46\u8005\u7684\u6536\u4fe1\u90fd\u662f\u900f\u904eCloudflare\u7684Email\u8f49\u767c\u529f\u80fd<br \/>\n\u5c07\u9001\u4f86\u7684\u4fe1\u4ef6\u8f49\u767c\u5230\u81ea\u5df1\u7684Gmail\u4fe1\u7bb1<br \/>\n\u7136\u800c\u9019\u500b\u670d\u52d9\u53ea\u80fd\u8f49\u767c\u6536\u4fe1 \u800c\u4e0d\u80fd\u767c\u4fe1<br \/>\n\u65bc\u662f\u7b46\u8005\u6c7a\u5b9a\u5728\u81ea\u5df1\u7684\u4f3a\u670d\u5668\u4e0a\u67b6\u8a2d\u4e00\u500bMailServer<br \/>\n\u4f86\u4e00\u52de\u6c38\u9038\u7684\u89e3\u6c7a\u9019\u500b\u554f\u984c<\/p>\n<span id=\"more\"><\/span>\n<p>\u4e8b\u60c5\u7e3d\u662f\u60f3\u5f97\u5f88\u7c21\u55ae<br \/>\n\u5728\u6211\u958b\u59cb\u67b6\u8a2d\u4e4b\u524d \u770b\u8457\u5404\u7a2e\u6559\u5b78\u6587<br \/>\n\u4ee5\u53ca\u5b98\u65b9\u5beb\u5f97\u770b\u8d77\u4f86\u5f88\u6e05\u695a\u7684\u6587\u6a94<br \/>\n\u6211\u4ee5\u70ba\u4e8b\u60c5\u6703\u975e\u5e38\u9806\u5229\u7684\u9032\u884c\u4e0b\u53bb<br \/>\n\u4f46\u5be6\u969b\u4e0a\u7b49\u5f85\u6211\u7684\u537b\u662f\u4e00\u500b\u53c8\u4e00\u500b\u5927\u5751<\/p>\n<h2 id=\"\u524d\u63d0\"><a class=\"anchor\" href=\"#\u524d\u63d0\">#<\/a> \u524d\u63d0<\/h2>\n<p>\u5728\u958b\u59cb\u4e4b\u524d \u5148\u78ba\u8a8d\u4e00\u4e0b\u81ea\u5df1\u624b\u908a\u7684\u74b0\u5883<\/p>\n<h3 id=\"\u74b0\u5883\"><a class=\"anchor\" href=\"#\u74b0\u5883\">#<\/a> \u74b0\u5883<\/h3>\n<ul>\n<li>\u7cfb\u7d71: Ubuntu 22.04<\/li>\n<li>Webserver: Nginx\/1.26.1<\/li>\n<li>UFW: ufw\/0.36.1<\/li>\n<li>DNS: Cloudflare<\/li>\n<li>SSL: <a href=\"http:\/\/acme.sh\">acme.sh<\/a><\/li>\n<\/ul>\n<h3 id=\"\u9700\u6c42\"><a class=\"anchor\" href=\"#\u9700\u6c42\">#<\/a> \u9700\u6c42<\/h3>\n<p>\u4f7f\u7528docker\u67b6\u8a2d\u4e00\u500bMailServer<\/p>\n<h3 id=\"\u524d\u7f6e\u6e96\u5099\"><a class=\"anchor\" href=\"#\u524d\u7f6e\u6e96\u5099\">#<\/a> \u524d\u7f6e\u6e96\u5099<\/h3>\n<p>\u5728\u958b\u59cb\u524d\u6211\u5011\u9700\u8981\u5148\u641e\u597d\u4e00\u4e9b\u524d\u7f6e\u7684\u8a2d\u5b9a<\/p>\n<h3 id=\"router-port-forwarding\"><a class=\"anchor\" href=\"#router-port-forwarding\">#<\/a> Router Port Forwarding<\/h3>\n<p>\u9996\u5148 \u5982\u679c\u4f60\u662f\u81ea\u5df1\u5bb6\u7684\u4f3a\u670d\u5668 \u6216\u662f\u4f60\u6709\u7db2\u7ba1\u6b0a\u9650<br \/>\n\u8acb\u5148\u78ba\u8a8d\u4f60\u7684\u8def\u7531\u5668\u6709\u5c07\u4ee5\u4e0b\u7684port\u6253\u958b<\/p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">ports<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">      -<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\"> \"<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">25:25<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">    # SMTP  (explicit TLS => STARTTLS, Authentication is DISABLED => use port 465\/587 instead)<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">      -<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\"> \"<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">110:110<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">  # POP3  (explicit TLS => STARTTLS)<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">      -<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\"> \"<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">143:143<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">  # IMAP4 (explicit TLS => STARTTLS)<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">      -<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\"> \"<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">465:465<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">  # ESMTP (implicit TLS)<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">      -<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\"> \"<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">587:587<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">  # ESMTP (explicit TLS => STARTTLS)<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">      -<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\"> \"<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">993:993<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">  # IMAP4 (implicit TLS)<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">      -<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\"> \"<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">995:995<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">  # POP3  (implicit TLS)<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<p>\u8acb\u52d9\u5fc5\u8981\u78ba\u5b9aport\u662f\u958b\u7684<br \/>\n\u7b46\u8005\u641e\u9019\u500b\u641e\u4e86\u5169\u5929\u5c31\u662f\u5361\u5728port\u6253\u4e0d\u51fa\u53bb==<\/p>\n<h3 id=\"dns\"><a class=\"anchor\" href=\"#dns\">#<\/a> DNS<\/h3>\n<p>\u63a5\u4e0b\u4f86\u6211\u5011\u9700\u8981\u8a2d\u5b9aDNS<br \/>\n\u7531\u65bc\u6211\u662f\u4f7f\u7528cloudflare\u7684DNS<br \/>\n\u5982\u679c\u4f60\u6c92\u6709\u7528CF\u5bb6\u7684\u670d\u52d9\u800c\u662f\u4f7f\u7528\u7db2\u57df\u5546\u63d0\u4f9b\u7684DNS\u670d\u52d9\u7684\u8a71<br \/>\n\u90a3\u8acb\u81ea\u5df1\u8b8a\u901a\u4e00\u4e0b<\/p>\n<p>\u6211\u5011\u9700\u8981\u8a2d\u5b9a\u5e7e\u500b\u7d00\u9304<\/p>\n<ul>\n<li>A\u7d00\u9304\uff1a\u9019\u500b\u61c9\u8a72\u5927\u5bb6\u90fd\u6703\u8a2d\u5b9a\uff0c\u4e0d\u5982\u4f60\u7684\u7db2\u5740\u6839\u672c\u9023\u4e0d\u5230\u4f3a\u670d\u5668\n<ul>\n<li>[mail.]<a href=\"http:\/\/example.com\">example.com<\/a> -&gt; \u4f60\u7684\u4f3a\u670d\u5668IP<\/li>\n<\/ul>\n<\/li>\n<li>MX\u7d00\u9304\uff1a\u6307\u5b9a\u4fe1\u4ef6\u8981\u5c0e\u53bb\u54ea\u88e1\n<ul>\n<li><a href=\"http:\/\/example.com\">example.com<\/a> -&gt; [mail.]<a href=\"http:\/\/example.com\">example.com<\/a><\/li>\n<\/ul>\n<\/li>\n<li>TXT\u7d00\u9304\uff1a\n<ul>\n<li><a href=\"http:\/\/example.com\">example.com<\/a> -&gt; v=spf1 ip4:\u4f60\u7684\u4f3a\u670d\u5668IP -all<\/li>\n<\/ul>\n<\/li>\n<li>PTR\u7d00\u9304\uff1a\u505arDNS\u53cd\u5411\u89e3\u6790\u7528\u7684\uff0c\u53ef\u4ee5\u5f9eIP\u53cd\u5411\u89e3\u6790\u5230domain\uff0c\u9019\u500b\u662f\u70ba\u4e86\u907f\u514d\u88ab\u6a19\u8a18\u70ba\u5783\u573e\u90f5\u4ef6\n<ul>\n<li>\u4f60\u7684\u4f3a\u670d\u5668IP -&gt; [mail.]<a href=\"http:\/\/example.com\">example.com<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<blockquote>\n<p>\u9019\u908a\u7684example.com\u8acb\u81ea\u884c\u66ff\u63db\u6210\u4f60\u81ea\u5df1\u7684\u7db2\u57df\uff0c\u7576\u7136\u6709\u5f15\u865f\u7684\u90e8\u5206\u4e5f\u53ef\u4ee5\u9078\u7528subdomain<br \/>\n<a href=\"http:\/\/xn--mail-zu6fx14c.example.com\">\u4f8b\u5982mail.example.com<\/a>\uff0c\u53ea\u662f\u7b46\u8005\u60f3\u8981\u7528\u4e3b\u7db2\u57df\u56e0\u6b64\u6c92\u6709\u9078\u7528<\/p>\n<\/blockquote>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">\u276f<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> dig<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> +short<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> TXT<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> miyago9267.com<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">  \"google-site-verification=eWCbTPIIpTueaDXP5h1AjIB83xZTKmMAfgsSL9IgGs8\"<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">  \"v=spf1 a mx ip4:\u6211\u7684IP -all\"<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">\u276f<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> dig<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> +short<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> MX<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> miyago9267.com<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">  10<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> miyago9267.com.<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">\u276f<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> dig<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> +short<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> A<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> miyago9267.com<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">  \u6211\u7684IP<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<blockquote>\n<p>IP\u4e0d\u7d66\u4f60\u770b\u52d2&gt;&lt;(\u96d6\u7136\u4f60\u81ea\u5df1\u53bb\u6233\u5c31\u6703\u5beb\u4e86)<\/p>\n<\/blockquote>\n<h3 id=\"\u9632\u706b\u7246\"><a class=\"anchor\" href=\"#\u9632\u706b\u7246\">#<\/a> \u9632\u706b\u7246<\/h3>\n<p>\u78ba\u5b9a\u4f60\u7684\u9632\u706b\u7246\u6709\u958b\u653e\u4e0a\u9762\u90a3\u4e9bport<br \/>\n\u5982\u679c\u4f60\u6709\u52a0\u88dd<code>ufw-docker<\/code>\u7684\u8a71\u4e5f\u8981\u8a18\u5f97\u958b<\/p>\n<h2 id=\"docker-mailserver\"><a class=\"anchor\" href=\"#docker-mailserver\">#<\/a> Docker MailServer<\/h2>\n<p>\u78ba\u5b9a\u597d\u624b\u908a\u7684\u8cc7\u6e90\u4ee5\u53ca\u78ba\u5b9a\u8981\u505a\u4ec0\u9ebc\u4e86<br \/>\n\u63a5\u4e0b\u4f86\u5c31\u662f\u958b\u59cb\u67b6\u8a2dMailServer\u4e86<\/p>\n<p>\u6211\u5011\u4f7f\u7528\u7684\u662f\u73fe\u6210\u7684Docker\u5c08\u6848<a href=\"https:\/\/github.com\/docker-mailserver\/docker-mailserver.git\">Docker MailServer<\/a><\/p>\n<h3 id=\"\u90e8\u5c6cdocker-container\"><a class=\"anchor\" href=\"#\u90e8\u5c6cdocker-container\">#<\/a> \u90e8\u5c6cdocker container<\/h3>\n<p>\u6211\u5011\u4e0d\u9700\u8981clone\u6574\u500b\u5c08\u6848<br \/>\n\u9700\u8981\u7528\u5230\u7684\u53ea\u6709<\/p>\n<ul>\n<li><code>compose.yaml<\/code><\/li>\n<li><code>mailserver.env<\/code><\/li>\n<li><code>setup.sh<\/code>(\u9078\u64c7\u6027)<\/li>\n<\/ul>\n<p>\u9019\u4e09\u500b\u6a94\u6848\u800c\u5df2<\/p>\n<p><img loading=\"lazy\" src=\"\/images\/tutorial\/exp-mailserver\/Screenshot-2024-08-06-at-12.02.58.png\" alt=\"\u53c3\u8003\" width=\"450\" \/><\/p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#B07D48;--shiki-dark:#BD976A\">DMS_GITHUB_URL<\/span><span style=\"color:#999999;--shiki-dark:#666666\">=<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">https:\/\/raw.githubusercontent.com\/docker-mailserver\/docker-mailserver\/master<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">curl<\/span><span style=\"color:#A65E2B;--shiki-dark:#C99076\"> -LO<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\"> \"<\/span><span style=\"color:#999999;--shiki-dark:#666666\">$&#123;<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">DMS_GITHUB_URL<\/span><span style=\"color:#999999;--shiki-dark:#666666\">&#125;<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">\/compose.yaml<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><span style=\"color:#999999;--shiki-dark:#666666\"> &#x26;&#x26;<\/span><span style=\"color:#59873A;--shiki-dark:#80A665\"> mv<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> compose.yaml<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> docker-compose.yaml<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">curl<\/span><span style=\"color:#A65E2B;--shiki-dark:#C99076\"> -LO<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\"> \"<\/span><span style=\"color:#999999;--shiki-dark:#666666\">$&#123;<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">DMS_GITHUB_URL<\/span><span style=\"color:#999999;--shiki-dark:#666666\">&#125;<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">\/mailserver.env<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<h4 id=\"\u7de8\u8f2fmailserverenv\"><a class=\"anchor\" href=\"#\u7de8\u8f2fmailserverenv\">#<\/a> \u7de8\u8f2fmailserver.env<\/h4>\n<p>\u6b63\u5e38\u4f86\u8aaa\u6211\u5011\u9700\u8981\u4fee\u6539\u7684\u5730\u65b9\u53ea\u6709\u9019\u5e7e\u500b<\/p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#B07D48;--shiki-dark:#BD976A\">OVERRIDE_HOSTNAME<\/span><span style=\"color:#999999;--shiki-dark:#666666\">=<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">mail.example.com<\/span><\/span>\n<span class=\"line\"><span style=\"color:#B07D48;--shiki-dark:#BD976A\">ENABLE_POP3<\/span><span style=\"color:#999999;--shiki-dark:#666666\">=<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">1<\/span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> &#x3C;- \u9019\u884c\u9810\u8a2d\u597d\u6a23\u627e\u4e0d\u5230\u8981\u81ea\u5df1\u52a0<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<h4 id=\"\u7de8\u8f2fdocker-composeyaml\"><a class=\"anchor\" href=\"#\u7de8\u8f2fdocker-composeyaml\">#<\/a> \u7de8\u8f2fdocker-compose.yaml<\/h4>\n<p><code>docker-compose.yaml<\/code>\u88e1\u9762\u8981\u52d5\u7684\u6771\u897f\u6bd4\u8f03\u591a<br \/>\n\u6211\u5011\u4e00\u500b\u4e00\u500b\u4f86\u78ba\u8a8d<\/p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">hostname<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> miyago9267.com<\/span><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"> # \u4fee\u6539\u6210\u4f60\u7684\u7db2\u57df<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"># \u4ee5\u4e0b\u7684PORT\u5168\u90e8\u90fd\u8981\u6253\u51fa\u4f86 \u4e0d\u7136\u6703\u6709\u554f\u984c<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">ports<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">      -<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\"> \"<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">25:25<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">    # SMTP  (explicit TLS => STARTTLS, Authentication is DISABLED => use port 465\/587 instead)<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">      -<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\"> \"<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">110:110<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">  # POP3  (explicit TLS => STARTTLS)<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">      -<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\"> \"<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">143:143<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">  # IMAP4 (explicit TLS => STARTTLS)<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">      -<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\"> \"<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">465:465<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">  # ESMTP (implicit TLS)<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">      -<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\"> \"<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">587:587<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">  # ESMTP (explicit TLS => STARTTLS)<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">      -<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\"> \"<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">993:993<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">  # IMAP4 (implicit TLS)<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">      -<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\"> \"<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">995:995<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">  # POP3  (implicit TLS)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"># \u5728volumes\u88e1\u9762\u52a0\u4e0a\u4f60\u7684SSL\u8b49\u66f8\u6620\u5c04\u7684\u4f4d\u7f6e \u6211\u662f\u653e\u5728\/etc\/nginx\/certs\u88e1\u9762<\/span><\/span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"># \u8acb\u4e00\u5b9a\u8981\u8a18\u5f97\u81ea\u5df1\u300c\u6620\u5c04\u5728\u5bb9\u5668\u5167\u300d\u7684\u4f4d\u7f6e \u4e4b\u5f8c\u5728\u5bb9\u5668\u5167\u8a2d\u5b9a\u662f\u7528\u90a3\u500b\u8def\u5f91<\/span><\/span>\n<span class=\"line\"><span style=\"color:#998418;--shiki-dark:#B8A965\">volumes<\/span><span style=\"color:#999999;--shiki-dark:#666666\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">  -<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> \/etc\/nginx\/certs\/miyago9267.com\/:\/etc\/nginx\/certs\/miyago9267.com:ro<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<h4 id=\"\u555f\u52d5\"><a class=\"anchor\" href=\"#\u555f\u52d5\">#<\/a> \u555f\u52d5<\/h4>\n<p>\u78ba\u8a8d\u7121\u8aa4\u5f8c\u5c31\u53ef\u4ee5\u555f\u52d5stack\u4e86<\/p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">docker<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> compose<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> up<\/span><span style=\"color:#A65E2B;--shiki-dark:#C99076\"> -d<\/span><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"> # \u6211\u770b\u6709\u6559\u5b78\u8aaa\u6e2c\u8a66\u968e\u6bb5\u4e0d\u8981\u7528-d\uff0c\u4f46\u6211\u89ba\u5f97\u6c92\u5dee\uff0c\u770blog\u5c31\u597d<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<h4 id=\"\u5275\u5efa\u5e33\u865f\"><a class=\"anchor\" href=\"#\u5275\u5efa\u5e33\u865f\">#<\/a> \u5275\u5efa\u5e33\u865f<\/h4>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"># \u5efa\u7acb\u4e00\u500b\u65b0\u7684admin\u4f7f\u7528\u8005 \u4f60\u53ef\u4ee5\u6709\u4f60\u81ea\u5df1\u7684 \u4f46admin\u5efa\u8b70\u8981\u6709<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">docker<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> exec<\/span><span style=\"color:#A65E2B;--shiki-dark:#C99076\"> -it<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> mailserver<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> setup<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> email<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> add<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> admin@example.com<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\"> \"<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">password<\/span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"<\/span><\/span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"># \u5efa\u7acb\u4e00\u500b\u65b0\u7684postmaster\u4f7f\u7528\u8005<\/span><\/span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"># \u9019\u500bpostmaster\u662f\u7528\u4f86\u63a5\u6536\u7cfb\u7d71\u7684\u901a\u77e5\u4fe1\u4ef6 \u6c92\u6709\u7684\u8a71\u53ef\u80fd\u6703\u5674\u932f<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">docker<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> exec<\/span><span style=\"color:#A65E2B;--shiki-dark:#C99076\"> -it<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> mailserver<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> setup<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> alias<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> add<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> postmaster@example.com<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> admin@example.com<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<h3 id=\"\u5b89\u5168\u6027\u8a2d\u5b9a\"><a class=\"anchor\" href=\"#\u5b89\u5168\u6027\u8a2d\u5b9a\">#<\/a> \u5b89\u5168\u6027\u8a2d\u5b9a<\/h3>\n<h4 id=\"dkim\"><a class=\"anchor\" href=\"#dkim\">#<\/a> DKIM<\/h4>\n<p>DKIM\u662f\u4e00\u7a2e\u9632\u6b62\u90f5\u4ef6\u88ab\u507d\u9020\u7684\u9a57\u8b49\u6280\u8853<br \/>\n\u53ef\u4ee5\u5c07\u4fe1\u4ef6\u7684\u6a19\u982d\u548c\u5167\u6587\u90fd\u9032\u884c\u52a0\u5bc6\u4ee5\u53ca\u751f\u6210\u6578\u4f4d\u7c3d\u7ae0<br \/>\n\u6211\u5011\u53ef\u4ee5\u5728dns\u8a2d\u5b9a\u88e1\u9762\u52a0\u5165\u9019\u500b<br \/>\n\u800cdocker mailserver\u88e1\u6709\u9810\u8a2d\u63d0\u4f9bopendkim\u4f86\u9032\u884c\u91d1\u9470\u7684\u751f\u6210<\/p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">docker<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> exec<\/span><span style=\"color:#A65E2B;--shiki-dark:#C99076\"> -it<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> mailserver<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> setup<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> bashig<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> dkim<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<p>\u7531\u65bc\u6211\u5011\u5728\u555f\u52d5docker-compose\u4e4b\u524d\u5df2\u7d93\u6620\u5c04\u904e\u8def\u5f91\u4e86<br \/>\n\u6211\u5011\u53ea\u9700\u8981\u9032\u5230<code>.\/docker-data\/dms\/bashig\/opendkim\/<\/code>\u5167\u5373\u53ef\u4ee5\u770b\u5230\u751f\u6210\u7684\u91d1\u9470<br \/>\n\u5e95\u4e0b\u6703\u6709<code>mail.private<\/code>\u548c<code>mail.txt<\/code>\u5169\u500b\u6a94\u6848<br \/>\n<code>mail.private<\/code>\u662f\u79c1\u9470\uff0c<code>mail.txt<\/code>\u662f\u516c\u9470<br \/>\n\u5c07<code>mail.txt<\/code>\u7684\u5167\u5bb9\u52a0\u5165\u5230DNS\u7684TXT\u7d00\u9304\u5373\u53ef<\/p>\n<p><a href=\"https:\/\/docker-mailserver.github.io\/docker-mailserver\/latest\/bashig\/best-practices\/dkim_dmarc_spf\/\">\u4e0a\u50b3\u7684\u898f\u5247\u770b\u9019\u500b<\/a><\/p>\n<p>\u4e0a\u50b3\u4e4b\u5f8c\u8acb\u8a18\u5f97\u91cd\u65b0\u555f\u52d5docker<\/p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">docker<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> compose<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> down<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">docker<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> compose<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> up<\/span><span style=\"color:#A65E2B;--shiki-dark:#C99076\"> -d<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<h4 id=\"spf\"><a class=\"anchor\" href=\"#spf\">#<\/a> SPF<\/h4>\n<p>SPF\u662f\u4e00\u7a2e\u9a57\u8b49\u767c\u4fe1\u4eba\u8eab\u4efd\u7684\u6280\u8853<br \/>\n\u4e00\u958b\u59cb\u6211\u5011\u524d\u7f6e\u4f5c\u696d\u6240\u8a2d\u5b9a\u7684TXT\u5c31\u662f\u9019\u500b<\/p>\n<h4 id=\"dmarc\"><a class=\"anchor\" href=\"#dmarc\">#<\/a> DMARC<\/h4>\n<p>DMARC\u4e5f\u662f\u4e00\u7a2e\u90f5\u4ef6\u9a57\u8b49\u6280\u8853<br \/>\n\u4e3b\u8981\u662fSPF\u548cDKIM\u7684\u88dc\u5145<br \/>\n\u4e26\u4e14\u53ef\u4ee5\u6307\u5b9a\u5982\u4f55\u8655\u7406\u672a\u7d93\u9a57\u8b49\u6216\u9a57\u8b49\u5931\u6557\u7684\u4fe1\u4ef6<\/p>\n<p>\u9019\u88e1\u6709\u4e00\u500b\u73fe\u6210\u7684<a href=\"https:\/\/dmarcguide.globalcyberalliance.org\/\">DMARC\u7522\u751f\u5668<\/a>\u53ef\u4ee5\u7528<\/p>\n<blockquote>\n<p>rua \u548c ruf \u8981\u8abf\u6574\u597d\uff0c\u4e0d\u7136\u51fa\u932f\u7684\u6642\u5019\u5f88\u96e3debug<\/p>\n<\/blockquote>\n<h3 id=\"\u5bb9\u5668\u6587\u4ef6\u8a2d\u5b9a\"><a class=\"anchor\" href=\"#\u5bb9\u5668\u6587\u4ef6\u8a2d\u5b9a\">#<\/a> \u5bb9\u5668\u6587\u4ef6\u8a2d\u5b9a<\/h3>\n<p>\u63a5\u4e0b\u4f86\u5c31\u662f\u7b46\u8005\u89ba\u5f97\u6700\u9ebb\u7169\u7684\u5730\u65b9\u4e86<br \/>\ndocker\u88e1\u9762\u5be6\u969b\u904b\u884c\u4e86\u5169\u500b\u7a0b\u5f0f<\/p>\n<ul>\n<li><code>dovecot<\/code>\uff1aIMAP\/POP3\u4f3a\u670d\u5668<\/li>\n<li><code>postfix<\/code>\uff1aSMTP\u4f3a\u670d\u5668<\/li>\n<\/ul>\n<p>\u9019\u5169\u500b\u4f3a\u670d\u5668\u7684\u8a2d\u5b9a\u6a94\u6848\u90fd\u5728\u5bb9\u5668\u5167<br \/>\n\u7136\u5f8c\u90fd\u8d85\u7d1a\u96f6\u6563<br \/>\n\u53ef\u662f\u53c8\u4e92\u76f8\u4f9d\u8cf4\u548c\u9a57\u8b49<br \/>\n\u6211\u9019\u88e1\u76f4\u63a5\u63d0\u4f9b\u7b46\u8005\u5617\u8a66\u4e86\u4e09\u500b\u665a\u4e0a\u8a66\u51fa\u4f86\u7684\u8a2d\u5b9a<\/p>\n<blockquote>\n<p>\u6ce8\u610f\uff1a \u9019\u88e1\u7684\u7247\u6bb5\u53ea\u662f\u90e8\u5206\u7684\u8a2d\u5b9a\u6a94<br \/>\n\u4ee3\u8868\u9019\u4e00\u500b\u5340\u584a\u9700\u8981\u8abf\u6574\u548c\u8a2d\u5b9a \u6c92\u63d0\u5230\u7684\u5c31\u5225\u52d5<\/p>\n<\/blockquote>\n<h4 id=\"postfix\"><a class=\"anchor\" href=\"#postfix\">#<\/a> postfix<\/h4>\n<p><code>nano \/etc\/postfix\/main.cf<\/code><\/p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"># \u9019\u88e1\u6709\u500b\u5927\u5751 \u5982\u679c\u4f60\u7528\u9810\u8a2d\u7684 $myhostname\u7684\u8a71 \u4ed6\u6703\u548c\u7cfb\u7d71\u9810\u8a2d\u7684vmail\u865b\u64ec\u90f5\u4ef6\u4f4d\u7f6e\u885d\u7a81<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">mydestination<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> =<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> localhost.<\/span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">$mydomain<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">,<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> localhost<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">smtpd_sasl_type<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> =<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> dovecot<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">smtpd_sasl_path<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> =<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> \/dev\/shm\/sasl-auth.sock<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">smtpd_sasl_auth_enable<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> =<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> yes<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">smtpd_tls_security_level<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> =<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> encrypt<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">smtpd_sasl_security_options<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> =<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> noanonymous<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">smtpd_recipient_restrictions<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> =<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">virtual_alias_domains<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> =<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> miyago9267.com<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">virtual_alias_maps<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> =<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> hash:\/etc\/postfix\/virtual<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<p><code>nano \/etc\/postfix\/master.cf<\/code><\/p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">submission<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> inet<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> n<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">       -<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">       n<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">       -<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">       -<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">       smtpd<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">  -o<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> syslog_name=postfix\/submission<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">  -o<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> smtpd_tls_security_level=encrypt<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">  -o<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> smtpd_sasl_auth_enable=yes<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">  -o<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> smtpd_client_restrictions=permit_sasl_authenticated,reject<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">  -o<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> milter_macro_daemon_name=ORIGINATING<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<h4 id=\"dovecot\"><a class=\"anchor\" href=\"#dovecot\">#<\/a> dovecot<\/h4>\n<p><code>\/etc\/dovecot\/bash.d\/10-ssl.bash<\/code><\/p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"># \u9019\u88e1\u662f\u4f60\u5bb9\u5668\u5167\u7684\u8b49\u66f8\u4f4d\u7f6e \u8981\u586b\u4e0afullchain\u548ckey pem\u6216crt\u7b49\u683c\u5f0f\u90fd\u53ef\u4ee5<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">ssl_cert<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> =<\/span><span style=\"color:#AB5959;--shiki-dark:#CB7676\"> &#x3C;<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">\/etc\/nginx\/certs\/miyago9267.com\/fullchain.crt<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">ssl_key<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> =<\/span><span style=\"color:#AB5959;--shiki-dark:#CB7676\"> &#x3C;<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">\/etc\/nginx\/certs\/miyago9267.com\/key.crt<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<p><code>\/etc\/dovecot\/bash.d\/10-auth.bash<\/code><\/p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">unix_listener<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> \/dev\/shm\/sasl-auth.sock<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> &#123;<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">    mode<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> =<\/span><span style=\"color:#2F798A;--shiki-dark:#4C9A91\"> 0666<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">    user<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> =<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> postfix<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">    group<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> =<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> postfix<\/span><\/span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> &#125;<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<p>\u4ee5\u4e0a\u8a2d\u5b9a\u5927\u81f4\u4e0a\u544a\u4e00\u6bb5\u843d<\/p>\n<h3 id=\"\u6e2c\u8a66\"><a class=\"anchor\" href=\"#\u6e2c\u8a66\">#<\/a> \u6e2c\u8a66<\/h3>\n<p>\u6700\u5f8c\u5c31\u662f\u6e2c\u8a66\u6211\u5011\u7684\u529f\u80fd\u6709\u6c92\u6709\u6210\u529f\u4e86<\/p>\n<h4 id=\"telnet\"><a class=\"anchor\" href=\"#telnet\">#<\/a> Telnet<\/h4>\n<p>\u53ef\u4ee5\u4f7f\u7528telnet\u4f86\u6e2c\u8a66\u5354\u5b9a\u7684\u9023\u7dda<\/p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">telnet<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> mail.example.com<\/span><span style=\"color:#2F798A;--shiki-dark:#4C9A91\"> 25<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<h4 id=\"openssl\"><a class=\"anchor\" href=\"#openssl\">#<\/a> openssl<\/h4>\n<p>\u53ef\u4ee5\u4f7f\u7528openssl\u4f86\u6e2c\u8a66\u52a0\u5bc6\u7684\u9023\u7dda\u662f\u5426\u6b63\u5e38\uff0c\u4ed6\u5176\u5be6\u6709\u4e00\u4e9b\u6307\u4ee4\u53ef\u4ee5\u64cd\u4f5c\uff0c\u4f46\u6211\u6c92\u6709\u7279\u5225\u53bb\u7814\u7a76<\/p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">openssl<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> s_client<\/span><span style=\"color:#A65E2B;--shiki-dark:#C99076\"> -connect<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> localhost:995<\/span><span style=\"color:#A65E2B;--shiki-dark:#C99076\"> -crlf<\/span><\/span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">openssl<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> s_client<\/span><span style=\"color:#A65E2B;--shiki-dark:#C99076\"> -connect<\/span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> localhost:587<\/span><span style=\"color:#A65E2B;--shiki-dark:#C99076\"> -crlf<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<h4 id=\"mailtest\"><a class=\"anchor\" href=\"#mailtest\">#<\/a> Mailtest<\/h4>\n<p>\u6709\u4e00\u500b\u6e2c\u8a66\u90f5\u4ef6\u5065\u5eb7\u7684\u7db2\u7ad9\u53ef\u4ee5\u4f7f\u7528<br \/>\n<a href=\"https:\/\/www.mail-tester.com\/\">Mail-tester<\/a><\/p>\n<p>\u4ed6\u6709\u4e00\u4e9b\u6307\u6a19\u53ef\u4ee5\u544a\u8a34\u4f60<br \/>\n\u4f60\u7684mailserver\u4ee5\u53ca\u767c\u51fa\u53bb\u7684\u4fe1\u4ef6\u6709\u4ec0\u9ebc\u9700\u8981\u8abf\u6574\u7684\u554f\u984c<br \/>\n\u883b\u65b9\u4fbf\u7684 \u8d77\u78bc\u6709\u4e00\u500b\u65b9\u5411\u53ef\u4ee5\u53c3\u8003<\/p>\n<p><img loading=\"lazy\" src=\"\/images\/tutorial\/exp-mailserver\/Screenshot-2024-08-06-at-12.35.31.png\" alt=\"\u6e2c\u8a66\u7d50\u679c\" \/><\/p>\n<h3 id=\"\u9023\u7d50\u5916\u90e8\u5e73\u53f0\"><a class=\"anchor\" href=\"#\u9023\u7d50\u5916\u90e8\u5e73\u53f0\">#<\/a> \u9023\u7d50\u5916\u90e8\u5e73\u53f0<\/h3>\n<p>\u81ea\u67b6\u7684MailServer\u6700\u5927\u7684\u554f\u984c\u662f\u8b80\u53d6\u4fe1\u4ef6\u7684\u6642\u5019\u5f88\u4e0d\u65b9\u4fbf<br \/>\n\u8ab0\u6709\u90a3\u500b\u7f8e\u570b\u6642\u9593\u548c\u9592\u5de5\u592b\u53bb\u767b\u5165\u81ea\u5df1\u7684MailServer\u770b\u4fe1<br \/>\n\u8b80\u500b\u4fe1\u9084\u5f97\u6253\u6307\u4ee4<br \/>\n\u56e0\u6b64\u6211\u5011\u53ef\u4ee5\u5c07\u6211\u5011\u7684MailServer\u9023\u7d50\u5230\u5916\u90e8\u5e73\u53f0<br \/>\n\u7b46\u8005\u9078\u64c7\u7684\u662fGmail<\/p>\n<p>\u9996\u5148<\/p>\n<ol>\n<li>\u6253\u958b\u4f60\u7684Gmail<\/li>\n<li>\u63a5\u8457\u9ede\u64ca\u53f3\u4e0a\u89d2\u7684\u5927\u9f52\u8f2a<\/li>\n<li>\u9ede\u64ca\u300c\u67e5\u770b\u6240\u6709\u8a2d\u5b9a\u300d<\/li>\n<li>\u9ede\u64ca\u300c\u5e33\u6236\u548c\u532f\u5165\u300d<\/li>\n<li>\u9ede\u64ca\u300c\u65b0\u589e\u90f5\u4ef6\u5e33\u6236\u300d<\/li>\n<li>\u8f38\u5165\u4f60\u7684\u4fe1\u7bb1\u5730\u5740\u548c\u5e33\u865f<\/li>\n<li>\u8f38\u5165\u4f60\u7684\u4fe1\u7bb1\u5bc6\u78bc<\/li>\n<li>\u5679\u5577 \u641e\u5b9a<\/li>\n<\/ol>\n<p><img loading=\"lazy\" src=\"\/images\/tutorial\/exp-mailserver\/Screenshot-2024-08-06-at-12.44.41.png\" alt=\"\u8a2d\u5b9a\u600e\u9ebc\u9032\u53bb\" \/><\/p>\n<p class=\"image-info\">\u8a2d\u5b9a\u7684\u9032\u5165<\/p>\n<p><img loading=\"lazy\" src=\"\/images\/tutorial\/exp-mailserver\/Screenshot-2024-08-06-at-12.47.53.png\" alt=\"\u5982\u4f55\u6dfb\u52a0\u5e33\u865f\" \/><\/p>\n<p class=\"image-info\">\u6dfb\u52a0\u5e33\u865f<\/p>\n<p>\u9019\u6a23\u4f60\u5c31\u53ef\u4ee5\u5728Gmail\u88e1\u9762\u8b80\u53d6\u4f60\u7684MailServer\u7684\u4fe1\u4ef6\u4e86<\/p>\n<h2 id=\"\u7d50\u8a9e\"><a class=\"anchor\" href=\"#\u7d50\u8a9e\">#<\/a> \u7d50\u8a9e<\/h2>\n<p>\u7531\u65bc\u9019\u6b21\u67b6\u4e00\u500bmailserver\u8e29\u5230\u592a\u591a\u5751\u4e86<br \/>\n\u56e0\u800c\u624d\u6c7a\u5b9a\u5beb\u4e00\u7bc7\u534a\u7d00\u9304\u7684\u5fc3\u5f97\u4f86\u5206\u4eab<br \/>\n\u6211\u6c92\u8fa6\u6cd5\u4fdd\u8b49\u5b8c\u5168\u6309\u7167\u6559\u5b78\u8d70\u5c31\u4e00\u5b9a\u6703\u6210\u529f<br \/>\n\u7136\u800c\u61c9\u8a72\u53ef\u4ee5\u505a\u5230\u5e6b\u5fd9\u6307\u500b\u8def\u9019\u6a23<\/p>\n<p>\u5982\u679c\u6709\u9047\u5230\u4ec0\u9ebc\u9700\u8981\u5e6b\u5fd9\u770b\u7684\u554f\u984c\u518d\u7559\u8a00\u5427<br \/>\n\u6211\u80fd\u5920\u5e6b\u5fd9\u5c31\u76e1\u529b\u5e6b\u5fd9<\/p>\n","tags":["Tutorial","Tutorial","Advanced","Linux","Docker","MailServer"]},{"id":"https:\/\/miyago9267.com\/Diary\/2024\/0607\/","url":"https:\/\/miyago9267.com\/Diary\/2024\/0607\/","title":"[\u672d\u8a18] 20240607","date_published":"2024-06-06T16:00:00.000Z","content_html":"<p>?<\/p>\n<span id=\"more\"><\/span>\n<p>\u4eca\u5929\u662f2024\u5e74\u76845\u670821\u865f<\/p>\n<p>\u4f60\u53ef\u80fd\u6703\u60f3\u8aaa \u5947\u602a<br \/>\n\u6a19\u984c\u7684\u65e5\u671f\u4e0d\u662f\u58d3\u84576\u67087\u865f\u55ce<br \/>\n\u6b63\u5f0f\u7684\u89e3\u91cb\u5f8c\u9762\u6703\u63d0\u5230<br \/>\n\u8981\u7c21\u55ae\u4f86\u8b1b\u7684\u8a71\u5c31\u662f\u9019\u7bc7\u6587\u662f\u9810\u5148\u6253\u597d\u7684<br \/>\n\u7562\u7adf\u5728\u751f\u65e5\u6253\u9577\u6587\u5df2\u7d93\u662f\u6211\u6b77\u5e74\u7684\u7fd2\u6163\u4e86<br \/>\n\u5c0d\u5225\u4eba\u800c\u8a00\u751f\u65e5\u662f\u5feb\u6a02\u7684\u7d00\u5ff5\u65e5<br \/>\n\u800c\u6211\u53cd\u5012\u559c\u6b61\u5728\u9019\u7a2e\u65e5\u5b50\u56de\u61b6\u548c\u5167\u7701<\/p>\n<p>\u5728\u904e\u53bb\u7684\u4e00\u5e74\u5167<br \/>\n\u5e7e\u4e4e\u53ef\u4ee5\u8aaa\u662f\u6211\u4eba\u751f\u4e2d\u8b8a\u5316\u6700\u5927\u7684\u4e00\u5e74<br \/>\n\u5927\u5230\u5373\u4fbf\u5df2\u7d93\u904e\u53bb\u4e86\u4e00\u6574\u5e74<br \/>\n\u6211\u4ecd\u820a\u9084\u5728\u6975\u5ea6\u4e0d\u9069\u61c9\u7684\u968e\u6bb5<\/p>\n<p>\u539f\u672c\u6211\u5728\u53bb\u5e74\u7684\u4eca\u5929<br \/>\n\u4e5f\u5c31\u662f\u751f\u65e5\u7576\u5929 \u671f\u8a31\u81ea\u5df1<br \/>\n\u80fd\u5920\u5728\u90a3\u5929\u4e4b\u5f8c\u6162\u6162\u6539\u904b<br \/>\n\u5efa\u7acb\u5728\u539f\u672c\u7684\u751f\u6d3b\u4e4b\u4e0a\u597d\u597d\u7684\u7cbe\u9032\u81ea\u5df1<br \/>\n\u8ab0\u77e5\u9053 \u8001\u5929\u5c31\u559c\u6b61\u4f5c\u5f04\u4eba<br \/>\n\u4e00\u5e74\u5167 \u6211\u642c\u4e86\u5bb6 \u5b78\u6821\u63db\u4e86<br \/>\n\u5de5\u4f5c\u63db\u4e86 \u8eab\u908a\u7684\u4eba\u4e5f\u63db\u4e86<br \/>\n\u552f\u7368\u6211\u7684\u5012\u9709\u904b\u6c23\u6c92\u63db<\/p>\n<p>\u6211\u4ee5\u5f80\u7684\u8870\u6d28\u6545\u4e8b<br \/>\n\u5728\u53bb\u5e74\u5df2\u7d93\u82b1\u4e86\u5f88\u9577\u7684\u7bc7\u5e45\u6558\u8ff0\u904e\u4e86<br \/>\n\u4eca\u5e74\u4e0d\u91cd\u8907\u8d05\u8ff0\u4e00\u6b21<br \/>\n\u90a3\u5c31\u4f86\u63d0\u4eca\u5e74\u767c\u751f\u7684\u6545\u4e8b\u5427<\/p>\n<p>\u5728\u53bb\u5e74\u6211\u767c\u4f48\u4e86\u8d85\u9577\u4eba\u751f\u6545\u4e8b\u5f8c<br \/>\n\u624d\u8aaa\u8981\u6539\u904b \u5c31\u56e0\u70ba\u7f3a\u592a\u591a\u8ab2\u88ab32<br \/>\n\u63a5\u8457\u5c31\u5f9e\u5927\u5b78\u81ea\u4e3b\u9000\u5b78\u4e86<br \/>\n\u70ba\u4e86\u8b93\u81ea\u5df1\u6709\u5730\u65b9\u5ff5\u96a8\u624b\u6295\u4e86\u5e7e\u6240\u5b78\u6821\u7684\u8f49\u5b78\u8003<br \/>\n\u4f46\u56e0\u70ba\u671f\u9650\u554f\u984c\u4f86\u4e0d\u53ca\u4e86<br \/>\n\u6700\u5f8c\u53ea\u4e0a\u4e86\u53f0\u4e2d\u79d1\u5927<\/p>\n<p>7\u30018\u6708\u5728\u53f0\u5317\u5de5\u4f5c<br \/>\n\u5ea6\u904e\u4e86\u9019\u4e00\u5e74\u5167\u6700\u8212\u670d\u7684\u4e00\u500b\u534a\u6708<br \/>\n\u6bcf\u5929\u5c31\u662f\u5f9e\u6843\u5712\u901a\u52e4<br \/>\n\u65e9\u4e0a\u5fc3\u60c5\u597d\u7684\u8a71\u9084\u53ef\u4ee5\u9806\u4fbf\u53bb\u767d\u55b5\u6253\u500b\u6a5f<br \/>\n\u597d\u666f\u4e0d\u9577<br \/>\n\u516b\u6708\u5e95\u6211\u8ddf\u7948\u5922\u5206\u624b \u4ee5\u53ca\u9047\u4e0a\u9700\u8981\u642c\u5bb6\u7684\u96e3\u984c<br \/>\n\u6211\u62d6\u8457\u7206\u767c\u7684\u7cbe\u795e<br \/>\n\u5728\u963f\u6d1b\u966a\u540c\u4e0b\u5230\u53f0\u4e2d\u770b\u4e86\u623f\u5b50\u4e26\u843d\u8173\u4e86\u4e0b\u4f86<\/p>\n<p>\u70ba\u4e86\u7e73\u623f\u79df \u6211\u5728\u53f0\u4e2d\u9760\u95dc\u4fc2\u627e\u4e86\u4efd\u5de5\u4f5c<br \/>\n\u4ee5\u53ca\u70ba\u4e86\u5b78\u5206 \u904e\u8457\u767d\u5929\u4e0a\u73ed\u665a\u4e0a\u4e0a\u8ab2\u7684\u65e5\u5b50<br \/>\n\u8207\u5176\u8aaa\u5145\u5be6 \u4e0d\u5982\u8aaa\u751f\u6d3b\u90fd\u88ab\u4f54\u6eff\u4e86\u5f88\u7a7a\u865b<br \/>\n\u964c\u751f\u7684\u74b0\u5883 \u964c\u751f\u7684\u4eba\u4e8b\u7269<br \/>\n\u4ee5\u53ca\u81ea\u5df1\u4e00\u500b\u4eba\u7684\u5bc2\u5bde<\/p>\n<p>\u9019\u4efd\u5de5\u4f5c\u4e26\u4e0d\u662f\u5f88\u7406\u60f3<br \/>\n\u6709\u8a31\u591a\u7684\u9ed1\u6697\u9762<br \/>\n\u65bc\u662f\u6211\u53ea\u5e79\u4e86\u4e09\u500b\u6708\u5c31\u96e2\u8077\u4e86<br \/>\n\u7576\u4e86\u5169\u4e09\u500b\u6708\u7684\u7121\u696d\u904a\u6c11<br \/>\n\u5728\u9019\u6bb5\u671f\u9593 \u6211\u9047\u898b\u4e86\u548c\u6708<br \/>\n\u6211\u5011\u672c\u4f86\u5c31\u8a8d\u8b58 \u5728\u8a8d\u89aa\u4e4b\u5f8c\u76f4\u63a5\u958b\u59cb\u71b1\u7d61\u8d77\u4f86<br \/>\n\u904e\u4e86\u4e00\u500b\u6708\u5c31\u958b\u59cb\u4ea4\u5f80<br \/>\n\u96d6\u7136\u4ed6\u4e0d\u5584\u8a00\u8fad<br \/>\n\u537b\u4e5f\u5f88\u611f\u8b1d\u4ed6\u966a\u4f34\u6211\u904e\u5230\u73fe\u5728<\/p>\n<p>\u9019\u6bb5\u6642\u9593\u7684\u7d93\u6fdf\u662f\u9760\u63a5\u6848\u6d3b\u904e\u4f86\u7684<br \/>\n\u5927\u6982\u57281\u6708 \u6211\u53bb\u9762\u8a66\u4e86\u5e7e\u9593\u516c\u53f8<br \/>\n\u4e26\u5728\u6700\u5f8c\u4e00\u9593\u7372\u5f97\u4e86\u7814\u767c\u5de5\u7a0b\u5e2b\u7684offer<br \/>\n\u5e74\u5f8c\u5165\u8077\u5de5\u4f5c\u5230\u4e86\u73fe\u5728<br \/>\n\u633a\u60a0\u9592 \u60a0\u9592\u5230\u6211\u7121\u804a\u5230\u6703\u5728\u4e0a\u73ed\u6642\u6182\u9b31\u767c\u4f5c<br \/>\n\u4e00\u8f49\u773c\u5c31\u662f\u73fe\u5728\u76845\u6708\u5e95\u4e86<\/p>\n<p>\u53bb\u5e74\u7684\u6211\u66fe\u7d93\u63d0\u904e<br \/>\n\u8aaa\u6211\u81ea\u5df1\u5c0d\u65bc\u6211\u7684\u8def\u7a0b\u53ca\u6c7a\u5b9a\u6c92\u6709\u5f8c\u6094\u904e<br \/>\n\u73fe\u5728\u7684\u6211\u53ef\u80fd\u6c92\u6709\u9019\u9ebc\u8c41\u9054\u4e86<br \/>\n\u6709\u4e86\u6703\u5f8c\u6094\u7684\u6c7a\u5b9a \u6709\u4e86\u907a\u61be\u7684\u4eba\u4e8b\u7269<br \/>\n\u958b\u59cb\u61ca\u60f1\u4eba\u751f\u7e3d\u662f\u5728\u4e0d\u540c\u6a5f\u6703\u88abtiming<br \/>\n\u4e0d\u904e\u6c92\u6709\u8b8a\u7684\u662f<br \/>\n\u6211\u4f9d\u820a\u8a8d\u70ba\u4eba\u751f\u5c31\u662f\u5728\u4e0d\u65b7\u8dcc\u8dcc\u649e\u649e\u4e2d\u89c0\u8cde\u5468\u570d\u7684\u4e0d\u540c\u98a8\u666f<br \/>\n\u96d6\u7136\u6211\u5468\u906d\u7684\u666f\u89c0\u8ddf\u6c99\u6f20\u4e00\u6a23\u8352\u6dbc<br \/>\n\u9084\u6703\u4e00\u76f4\u8e29\u9032\u6d41\u6c99\u88e1\u8ff7\u5931\u8996\u91ce<\/p>\n<p>\u5373\u4fbf\u5982\u6b64<br \/>\n\u6211\u4f9d\u820a\u5341\u5206\u611f\u8b1d\u6211\u5468\u906d\u4e00\u76f4\u4ee5\u4f86\u966a\u4f34\u8457\u6211\u7684\u4eba<br \/>\n\u7121\u8ad6\u662f\u6211\u6240\u611b\u7684\u548c\u6708<br \/>\n\u5305\u542b\u6211\u7121\u6cd5\u633d\u56de\u7684\u5bb6\u4eba\u7948\u5922<br \/>\n\u4e5f\u5305\u542b\u963f\u6d1b\u3001\u6c99\u96d5\u3001\u6dfa\u91ce\u3001\u767d\u7fbd\u7b49\u7b49<br \/>\n\u4e00\u8def\u966a\u8457\u6211\u7684\u597d\u57fa\u53cb\u5011<br \/>\n\u66f4\u6709\u8457\u65cf\u7e41\u4e0d\u53ca\u5099\u8f09<br \/>\n\u6b63\u770b\u8457\u9019\u7bc7\u8cbc\u6587\u7684\u4f60\u5011<br \/>\n\u4eca\u5e74\u751f\u65e5\u6700\u5927\u7684\u9858\u671b<br \/>\n\u5c31\u662f\u6211\u60f3\u5728\u660e\u5e74\u7684\u4eca\u5929 \u9084\u80fd\u5920\u7e7c\u7e8c\u89ba\u5f97<\/p>\n<p>\u300c\u80fd\u5920\u6d3b\u8457\u770b\u770b\u4e16\u754c\u771f\u7684\u662f\u592a\u597d\u4e86\u300d<\/p>\n","tags":["Diary","Diary"]},{"id":"https:\/\/miyago9267.com\/Translate\/heal-the-world\/","url":"https:\/\/miyago9267.com\/Translate\/heal-the-world\/","title":"[\u7ffb\u8b6f] Michael Jackson - Heal the World","date_published":"2024-05-31T06:00:00.000Z","content_html":"<p>\u6c92\u6709\u4ec0\u9ebc\u7406\u7531<br \/>\n\u6211\u53ea\u662f\u7a81\u7136\u5c0d\u9019\u9996\u6b4c\u5f88\u611f\u50b7<\/p>\n<span id=\"more\"><\/span>\n<iframe src=\"https:\/\/www.youtube.com\/embed\/BWf-eARnf6U\" title=\"YouTube video player\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<h1 id=\"\u6b4c\u8a5e\"><a class=\"anchor\" href=\"#\u6b4c\u8a5e\">#<\/a> \u6b4c\u8a5e<\/h1>\n<p>There's a place in your heart<br \/>\n\u4f60\u7684\u5fc3\u4e2d\u6709\u4e00\u500b\u89d2\u843d<br \/>\nAnd I know that it is love<br \/>\n\u800c\u6211\u77e5\u9053\u90a3\u88e1\u5b58\u5728\u8457\u611b<br \/>\nAnd this place could be much brighter than tomorrow<br \/>\n\u800c\u9019\u88e1\u660e\u5929\u5c07\u6703\u66f4\u52a0\u4eae\u773c<br \/>\nAnd if you really try<br \/>\n\u800c\u5982\u679c\u4f60\u771f\u7684\u5617\u8a66\u4e86<br \/>\nYou'll find there's no need to cry<br \/>\n\u4f60\u6703\u767c\u73fe\u4f60\u6bcb\u9808\u96e3\u904e<br \/>\nIn this place you'll feel there's no hurt or sorrow<br \/>\n\u5728\u9019\u88e1 \u4f60\u4e0d\u6703\u611f\u89ba\u5230\u4efb\u4f55\u50b7\u75db\u8207\u7169\u60f1<\/p>\n<p>There are ways to get there<br \/>\n\u6709\u4e9b\u65b9\u6cd5\u80fd\u5920\u505a\u5230<br \/>\nIf you care enough for the living<br \/>\n\u5982\u679c\u4f60\u80fd\u66f4\u95dc\u5fc3\u751f\u547d<br \/>\nMake a little space<br \/>\n\u5275\u9020\u4e00\u500b\u5c0f\u5929\u5730<br \/>\nMake a better place...<br \/>\n\u6253\u9020\u4e00\u500b\u66f4\u7f8e\u597d\u7684\u5730\u65b9<\/p>\n<p>Heal the world<br \/>\n\u6cbb\u7652\u4e16\u754c<br \/>\nMake it a better place<br \/>\n\u8b93\u9019\u4e16\u754c\u66f4\u7f8e\u597d<br \/>\nFor you and for me and the entire human race<br \/>\n\u70ba\u4e86\u4f60\u6211 \u4e5f\u70ba\u4e86\u5168\u4e16\u754c\u7684\u4eba\u5011<br \/>\nThere are people dying<br \/>\n\u4e0d\u65b7\u6709\u4eba\u901d\u53bb<br \/>\nIf you care enough for the living<br \/>\n\u5982\u679c\u4f60\u80fd\u66f4\u95dc\u5fc3\u751f\u547d<br \/>\nMake a better place for you and for me<br \/>\n\u70ba\u4e86\u4f60\u6211 \u6253\u9020\u4e00\u500b\u66f4\u7f8e\u597d\u7684\u5730\u65b9<\/p>\n<p>If you want to know why<br \/>\n\u82e5\u662f\u4f60\u60f3\u77e5\u9053\u7406\u7531<br \/>\nThere's a love that cannot lie<br \/>\n\u611b\u662f\u4e0d\u6703\u8aaa\u8b0a\u7684<br \/>\nLove is strong<br \/>\n\u611b\u662f\u591a\u9ebc\u7684\u5f37\u58ef<br \/>\nIt only cares for joyful giving<br \/>\n\u5b83\u53ea\u5728\u4e4e\u4ed8\u51fa\u4e86\u591a\u5c11\u559c\u6a02<br \/>\nIf we try<br \/>\n\u5982\u679c\u6211\u5011\u5617\u8a66<br \/>\nWe shall see<br \/>\n\u6211\u5011\u80fd\u5920\u770b\u5230<br \/>\nIn this bliss we cannot feel fear or dread<br \/>\n\u5728\u5e78\u798f\u4e4b\u4e2d\u6211\u5011\u4e0d\u6703\u611f\u53d7\u5230\u6050\u61fc\u8207\u7169\u6182<br \/>\nWe stop existing and start living<br \/>\n\u6211\u5011\u61c9\u7576\u5f9e\u73fe\u5728\u6539\u8b8a \u4e26\u5f9e\u751f\u6d3b\u505a\u8d77<\/p>\n<p>Then it feels that always<br \/>\n\u9019\u611f\u89ba\u5c07\u6301\u7e8c\u4e0b\u53bb<br \/>\nLove's enough for us growing<br \/>\n\u8b93\u8db3\u5920\u7684\u611b\u64ab\u990a\u6211\u5011\u6210\u9577<br \/>\nMake a better world<br \/>\n\u6253\u9020\u4e00\u500b\u66f4\u7f8e\u597d\u7684\u5730\u65b9<br \/>\nMake a better world...<br \/>\n\u6253\u9020\u4e00\u500b\u66f4\u7f8e\u597d\u7684\u5730\u65b9<\/p>\n<p>And the dream we were conceived in<br \/>\n\u5728\u6211\u5011\u6240\u69cb\u7bc9\u7684\u5922\u60f3\u4e2d<br \/>\nwill reveal a joyful face<br \/>\n\u5c07\u6703\u5c55\u89bd\u559c\u6085\u7684\u9762\u5bb9<br \/>\nAnd the world we once believed in<br \/>\n\u5728\u90a3\u500b\u6211\u5011\u66fe\u4fe1\u8cf4\u7684\u4e16\u754c\u4e2d<br \/>\nwill shine again in grace<br \/>\n\u5c07\u6703\u518d\u6b21\u9583\u8000\u8457\u6069\u5178<br \/>\nThen why do we keep strangling life<br \/>\n\u90a3\u9ebc\u70ba\u4f55\u6211\u5011\u4f9d\u820a\u627c\u6bba\u751f\u547d<br \/>\nWould this earth crucify its soul?<br \/>\n\u9019\u500b\u5730\u7403\u6703\u5426\u5c07\u81ea\u5df1\u7684\u9748\u9b42\u91d8\u4e0a\u5341\u5b57\u67b6<br \/>\nThough it's plain to see<br \/>\n\u5118\u7ba1\u7942\u80fd\u6e05\u695a\u5730\u770b\u5230<br \/>\nThis world is heavenly<br \/>\n\u9019\u4e16\u754c\u662f\u5929\u5802<br \/>\nBe God's glow<br \/>\n\u662f\u4e0a\u5e1d\u4e4b\u69ae\u5149<\/p>\n<p>We could fly so high<br \/>\n\u6211\u5011\u80fd\u5920\u5728\u9ad8\u7a7a\u98db\u7fd4<br \/>\nLet our spirits never die<br \/>\n\u8b93\u6211\u5011\u7684\u9748\u9b42\u6c38\u6046\u4e0d\u6ec5<br \/>\nIn my heart<br \/>\n\u5728\u6211\u5fc3\u4e2d<br \/>\nI feel you are all my brothers<br \/>\n\u6211\u80fd\u611f\u53d7\u5230\u4f60\u5011\u90fd\u662f\u6211\u7684\u5bb6\u4eba<br \/>\nCreate a world with no fear<br \/>\n\u5275\u9020\u4e00\u500b\u4e0d\u9700\u6050\u61fc\u7684\u4e16\u754c<br \/>\nTogether we'll cry happy tears<br \/>\n\u6211\u5011\u4e00\u8d77\u6d41\u4e0b\u559c\u6085\u7684\u6dda<br \/>\nSee the nations turn their swords into plowshares<br \/>\n\u770b\u898b\u4e16\u754c \u5316\u5e72\u6208\u70ba\u7389\u5e1b<\/p>\n<p>We could<br \/>\n\u6211\u5011\u53ef\u4ee5<br \/>\nReally get there<br \/>\n\u771f\u7684\u53ef\u4ee5\u5230\u9054\u90a3\u88e1<br \/>\nIf you care enough for the living<br \/>\n\u5982\u679c\u4f60\u80fd\u66f4\u95dc\u5fc3\u751f\u547d<br \/>\nMake a little space<br \/>\n\u5275\u9020\u4e00\u500b\u5c0f\u5929\u5730<br \/>\nMake a better place...<br \/>\n\u6253\u9020\u4e00\u500b\u66f4\u7f8e\u597d\u7684\u5730\u65b9<\/p>\n<p>There are people dying<br \/>\n\u4e0d\u65b7\u6709\u4eba\u901d\u53bb<br \/>\nIf you care enough for the living<br \/>\n\u5982\u679c\u4f60\u80fd\u66f4\u95dc\u5fc3\u751f\u547d<br \/>\nMake a better place for you and for me<br \/>\n\u70ba\u4e86\u4f60\u6211 \u6253\u9020\u4e00\u500b\u66f4\u7f8e\u597d\u7684\u5730\u65b9<\/p>\n<h1 id=\"\u500b\u4eba\u5fc3\u5f97\"><a class=\"anchor\" href=\"#\u500b\u4eba\u5fc3\u5f97\">#<\/a> \u500b\u4eba\u5fc3\u5f97<\/h1>\n<p>\uff08\u4ee5\u4e0b\u5168\u662f\u6211\u7684Murmur\uff0c\u4e0d\u723d\u81ea\u5df1\u8df3\u904e\uff09<\/p>\n<p>\u9019\u9996\u6b4c\u7684\u77e5\u540d\u5ea6\u60f3\u5fc5\u5b8c\u5168\u6bcb\u9808\u6211\u518d\u591a\u52a0\u8d05\u8ff0<br \/>\n\u6703\u7ffb\u51fa\u9019\u9996\u6b4c<br \/>\n\u662f\u7531\u65bc\u6211\u5728\u500b\u7248\u4e0a\u73a9\u768430\u5929\u63a8\u66f2\u6311\u6230\u4e2d<br \/>\n\u7b2c25\u5929\u7684\u300c\u4f86\u81ea\u901d\u4e16\u6b4c\u624b\u7684\u6b4c\u66f2\u300d<br \/>\n\u6211\u6311\u51fa\u4e86\u9019\u9996\u6b4c\u4f5c\u70ba\u4ee3\u8868<\/p>\n<p>\u6211\u8a8d\u70ba\u6211\u5c0d\u6211\u63a8\u7684\u6bcf\u9996\u6b4c\u90fd\u6709\u8457\u5d07\u9ad8\u7684\u656c\u610f<br \/>\n\u7136\u800c\u5c0d\u65bc\u9019\u9996\u6b4c<br \/>\n\u6211\u6709\u8457\u7684\u662f\u66f4\u591a\u7684\u611f\u50b7<br \/>\n\u6bcf\u6bcf\u807d\u898b\u9019\u9996\u6b4c<br \/>\n\u65e9\u572830\u5e74\u524d<br \/>\nMJ\u5c31\u5275\u4f5c\u4e86\u9019\u9996\u6b4c\u66f2\u5728\u5168\u4e16\u754c\u5ee3\u70ba\u50b3\u5531<br \/>\n\u7136\u800c\u5728\u901930\u5e74\u5f8c\u7684\u4eca\u5929<br \/>\n\u4e16\u754c\u537b\u9084\u662f\u4e00\u584c\u7cca\u5857<br \/>\n\u6211\u5011\u7684\u5730\u7403\u9084\u662f\u4e00\u6a23\u7684\u7834\u788e<br \/>\n\u60f3\u5230\u9019\u88e1 \u4e00\u80a1\u8eab\u70ba\u6b49\u610f\u548c\u611f\u50b7<br \/>\n\u4e0d\u81ea\u89ba\u5f97\u6e67\u4e0a\u5fc3\u982d<\/p>\n<p>\u5e0c\u671b\u5728\u6211\u6709\u751f\u4e4b\u5e74\u9593<br \/>\n\u54ea\u6015\u4e00\u9ede\u9ede\u4e5f\u597d<br \/>\n\u80fd\u5920\u770b\u5230MJ\u6240\u671f\u5f85\u7684<br \/>\n\u5b69\u5b50\u5011\u6bcb\u9808\u6050\u61fc\u8207\u54c0\u50b7\u7684\u4e16\u754c<\/p>\n","tags":["Diary","Diary"]},{"id":"https:\/\/miyago9267.com\/Diary\/2024\/0506\/","url":"https:\/\/miyago9267.com\/Diary\/2024\/0506\/","title":"[\u9031\u8a18] 20240506","date_published":"2024-05-05T16:00:00.000Z","content_html":"<p>\u6574\u6574\u4e00\u500b\u6708\u6c92\u6709\u5beb\u672d\u8a18\u4e86<br \/>\n\u88dc\u500b\u6a94<\/p>\n<span id=\"more\"><\/span>\n<h2 id=\"\u70ba\u4ec0\u9ebc\u9019\u500b\u6708\u5b8c\u5168\u6c92\u6d88\u606f\"><a class=\"anchor\" href=\"#\u70ba\u4ec0\u9ebc\u9019\u500b\u6708\u5b8c\u5168\u6c92\u6d88\u606f\">#<\/a> \u70ba\u4ec0\u9ebc\u9019\u500b\u6708\u5b8c\u5168\u6c92\u6d88\u606f<\/h2>\n<p>\u5443 \u9019\u9ebc\u561b<br \/>\n\u4e00\u4f86\u662f\u5fd9\u5427<br \/>\n\u7562\u7adf\u8981\u4e0a\u73ed\u8cfa\u9322\u7684 \u516c\u53f8\u7684\u4e8b\u60c5\u9084\u662f\u5f97\u8655\u7406<br \/>\n\u4e8c\u4f86\u662f\u9019\u4e00\u500b\u6708\u7684\u7cbe\u795e\u72c0\u6cc1\u90fd\u4e00\u6574\u500b\u6975\u5176\u7cdf\u7cd5<br \/>\n\u5f77\u5f7f\u56de\u5230\u524d\u5169\u5e74\u90a3\u7a2e\u4e00\u5768\u7684\u72c0\u614b<\/p>\n<h2 id=\"\u9019\u500b\u5169\u500b\u6708\u767c\u751f\u4e86\u5565\"><a class=\"anchor\" href=\"#\u9019\u500b\u5169\u500b\u6708\u767c\u751f\u4e86\u5565\">#<\/a> \u9019\u500b\u5169\u500b\u6708\u767c\u751f\u4e86\u5565<\/h2>\n<p>\u8001\u5be6\u8aaa \u5176\u5be6\u5565\u90fd\u6c92\u767c\u751f<br \/>\n\u4f46\u662f\u6211\u7684\u7cbe\u795e\u72c0\u6cc1\u721b\u4e86\u662f\u771f\u7684<\/p>\n<h3 id=\"\u53bb\u4e86\u4e00\u8d9f\u53f0\u5317\"><a class=\"anchor\" href=\"#\u53bb\u4e86\u4e00\u8d9f\u53f0\u5317\">#<\/a> \u53bb\u4e86\u4e00\u8d9f\u53f0\u5317<\/h3>\n<p>\u5927\u6982\u56db\u6708\u4e2d\u7684\u6642\u5019<br \/>\n\u6211\u8ddf\u548c\u6708\u8dd1\u4e86\u53f0\u5317\u4e00\u8d9f<br \/>\n\u4e00\u4f86\u662f\u5e36\u4ed6\u53bb\u73a9<br \/>\n\u4e8c\u4f86\u662f\u5e36\u4ed6\u53bb\u901b\u901b\u5317\u6d41Animode<br \/>\n\u7136\u5f8c\u8b93\u4ed6\u898b\u8b58\u770b\u770b\u6253\u85dd\u9577\u600e\u6a23<\/p>\n<h3 id=\"\u8003\u8a66\u721b\u6389\"><a class=\"anchor\" href=\"#\u8003\u8a66\u721b\u6389\">#<\/a> \u8003\u8a66\u721b\u6389<\/h3>\n<p>\u7136\u5f8c\u56de\u4f86\u6211\u7cbe\u795e\u5c31\u7206\u4e86<br \/>\n\u5148\u662f\u5927\u7206\u7761\u4e86\u4e94\u5929 \u9023\u73ed\u90fd\u6c92\u53bb\u4e0a<br \/>\n\u7136\u5f8c\u53c8\u7d66\u6211\u611f\u5192\u5169\u500b\u79ae\u62dc<br \/>\n\u63a5\u8457\u671f\u4e2d\u8003\u9084\u721b\u6389 \u9084\u7f3a\u8003\u5169\u9580\u6c92\u53bb<\/p>\n<h3 id=\"\u611f\u5192\u5169\u6b21\"><a class=\"anchor\" href=\"#\u611f\u5192\u5169\u6b21\">#<\/a> \u611f\u5192\u5169\u6b21==<\/h3>\n<p>\u7136\u5f8c\u5c31\u662f\u9019\u500b\u6708\u7684\u4e8b\u60c5<br \/>\n\u5148\u662f\u6708\u4e2d\u53c8\u7d66\u6211\u611f\u5192\u4e00\u6b21<br \/>\n\u5dee\u9ede\u6c23\u6b7b \u885b\u751f\u7d19\u4e00\u500b\u6708\u7528\u4e86\u4e00\u6574\u5927\u5305<\/p>\n<h2 id=\"mygo\u8868\u60c5\u5305\u641c\u5c0b\u5668\"><a class=\"anchor\" href=\"#mygo\u8868\u60c5\u5305\u641c\u5c0b\u5668\">#<\/a> MyGO\u8868\u60c5\u5305\u641c\u5c0b\u5668<\/h2>\n<p>\u5927\u6982\u57284\u6708\u521d\u5427<br \/>\n\u6211\u9592\u8457\u6c92\u4e8b\u7684\u6642\u5019<br \/>\n\u770b\u8457\u4ea4\u5927VT\u793e\u505a\u7684\u6d77\u7dbf\u5bf6\u5bf6\u8cbc\u5716\u641c\u5c0b\u5668<br \/>\n\u518d\u770b\u8457\u5927\u5bb6\u90fd\u7528MyGO\u8868\u60c5\u5305\u5728\u5c0d\u8a71<br \/>\n\u5fc3\u60f3\u70ba\u4ec0\u9ebc\u6211\u4e0d\u505a\u500b\u985e\u4f3c\u7684\u6771\u6771\u5462<\/p>\n<p>\u563f \u65bc\u662f\u6211\u5c31\u6d6a\u8cbb\u4e862\u5c0f\u6642\u5beb\u51fa\u4e00\u500b\u8d85\u721b\u7684<a href=\"https:\/\/mygo.miyago9267.com\">MyGO\u8868\u60c5\u5305\u641c\u5c0b\u5668<\/a><\/p>\n<p>\u529f\u80fd\u8d85\u721b\u5566 \u5c31\u653e\u51fa180\u5f35\u7136\u5f8cmap\u95dc\u9375\u5b57\u800c\u5df2<br \/>\n\u4f46\u662f\u6211\u89ba\u5f97\u9019\u500b\u6771\u897f\u9084\u883b\u597d\u73a9\u7684<br \/>\n\u597d\u73a9\u4e3b\u8981\u662f\u6211\u91cb\u51fa\u6642<br \/>\n\u525b\u597d\u793e\u5718\u6709\u4eba\u7528LineBot\u5f04\u4e86\u500b\u985e\u4f3c\u7684\u5ba2\u670d<br \/>\n\u4f46\u529f\u80fd\u6bd4\u6211\u7684\u66f4\u5c4e<br \/>\n\u6240\u4ee5\u6253\u4ed6\u81c9\u7684\u90e8\u5206\u883b\u597d\u73a9\u7684<\/p>\n","tags":["Diary","Diary"]}]}