{"generator":"Jekyll","link":[{"@attributes":{"href":"https:\/\/windy810.github.io\/feed.xml","rel":"self","type":"application\/atom+xml"}},{"@attributes":{"href":"https:\/\/windy810.github.io\/","rel":"alternate","type":"text\/html","hreflang":"en"}}],"updated":"2023-03-22T03:24:57+00:00","id":"https:\/\/windy810.github.io\/feed.xml","title":"Windy","subtitle":"'Think like a man of action, act like a man of thought.'\n","author":{"name":"Windy","email":"windy23334@gmail.com"},"entry":[{"title":"\u6b63\u5219\u76f8\u5173\u5e38\u7528\u6307\u4ee4","link":{"@attributes":{"href":"https:\/\/windy810.github.io\/blog\/2023-03-09-regex\/","rel":"alternate","type":"text\/html","title":"\u6b63\u5219\u76f8\u5173\u5e38\u7528\u6307\u4ee4"}},"published":"2023-03-09T00:00:00+00:00","updated":"2023-03-09T00:00:00+00:00","id":"https:\/\/windy810.github.io\/blog\/regex","content":"<ul id=\"markdown-toc\">\n  <li><a href=\"#\u5143\u5b57\u7b26\" id=\"markdown-toc-\u5143\u5b57\u7b26\">\u5143\u5b57\u7b26<\/a><\/li>\n  <li><a href=\"#\u7279\u6b8a\" id=\"markdown-toc-\u7279\u6b8a\">\u7279\u6b8a<\/a><\/li>\n  <li><a href=\"#\u4e3e\u4f8b\" id=\"markdown-toc-\u4e3e\u4f8b\">\u4e3e\u4f8b<\/a><\/li>\n<\/ul>\n\n<h2 id=\"\u5143\u5b57\u7b26\">\u5143\u5b57\u7b26<\/h2>\n\n<table>\n  <thead>\n    <tr>\n      <th>\u5143\u5b57\u7b26<\/th>\n      <th>\u8bf4\u660e<\/th>\n    <\/tr>\n  <\/thead>\n  <tbody>\n    <tr>\n      <td>.<\/td>\n      <td>\u5339\u914d\u9664\u6362\u884c\u7b26\u4ee5\u5916\u7684\u4efb\u610f\u5b57\u7b26<\/td>\n    <\/tr>\n    <tr>\n      <td>\\w<\/td>\n      <td>\u5339\u914d\u6570\u5b57\u3001\u5b57\u6bcd\u3001\u4e0b\u5212\u7ebf\uff0c\u76f8\u5f53\u4e8e[a-zA-Z0-9]<\/td>\n    <\/tr>\n    <tr>\n      <td>\\s<\/td>\n      <td>\u4efb\u610f\u7a7a\u767d\u7b26<\/td>\n    <\/tr>\n    <tr>\n      <td>\\d<\/td>\n      <td>\u6570\u5b57\uff0c\u76f8\u5f53\u4e8e[0-9]<\/td>\n    <\/tr>\n    <tr>\n      <td>|<\/td>\n      <td>\u6216\u5339\u914d<\/td>\n    <\/tr>\n    <tr>\n      <td>^<\/td>\n      <td>\u5339\u914d\u5b57\u7b26\u4e32\u7684\u5f00\u59cb<\/td>\n    <\/tr>\n    <tr>\n      <td>$<\/td>\n      <td>\u5339\u914d\u5b57\u7b26\u4e32\u7684\u7ed3\u675f<\/td>\n    <\/tr>\n  <\/tbody>\n<\/table>\n\n<h2 id=\"\u7279\u6b8a\">\u7279\u6b8a<\/h2>\n\n<p>$1\u4fdd\u7559\u4e00\u90e8\u5206\u524d\u7f6e\u5339\u914d\u7684\u5b57\u7b26<\/p>\n\n<h2 id=\"\u4e3e\u4f8b\">\u4e3e\u4f8b<\/h2>\n\n<table>\n  <thead>\n    <tr>\n      <th>\u5b57\u7b26<\/th>\n      <th>\u8bf4\u660e<\/th>\n    <\/tr>\n  <\/thead>\n  <tbody>\n    <tr>\n      <td>(imgur.com\/(\\w+))-&gt;$1.png<\/td>\n      <td>\u53d8\u66f4\u4e3aimgur.com\/xxxxx.png<\/td>\n    <\/tr>\n    <tr>\n      <td>re.findall(\u2018\u201cid\u201d:(.*?),\u2019, id_content)<\/td>\n      <td>\u6b63\u5219\u5339\u914d\u201did\u201d:\u548c,\u4e4b\u95f4\u7684\u5185\u5bb9<\/td>\n    <\/tr>\n    <tr>\n      <td>re.findall(\u201c&lt;b&gt;.*?(\\d{6})\u201d, mail_content)<\/td>\n      <td>\u6b63\u5219\u5339\u914d&lt;b&gt;\u540e\u9762\u76846\u4f4d\u6570\u5b57<\/td>\n    <\/tr>\n  <\/tbody>\n<\/table>","author":{"name":"Windy","email":"windy23334@gmail.com"},"category":[{"@attributes":{"term":"blog"}},{"@attributes":{"term":"skill"}}],"summary":{"@attributes":{"type":"html"}}},{"title":"2022\u5e74\u7ec8\u603b\u7ed3","link":{"@attributes":{"href":"https:\/\/windy810.github.io\/blog\/2023-03-09-2022summary\/","rel":"alternate","type":"text\/html","title":"2022\u5e74\u7ec8\u603b\u7ed3"}},"published":"2023-03-09T00:00:00+00:00","updated":"2023-03-09T00:00:00+00:00","id":"https:\/\/windy810.github.io\/blog\/2022summary","content":"<ul id=\"markdown-toc\">\n  <li><a href=\"#\u8fc7\u53bb\u4e00\u5e74\u5e72\u4e86\u4ec0\u4e48\" id=\"markdown-toc-\u8fc7\u53bb\u4e00\u5e74\u5e72\u4e86\u4ec0\u4e48\">\u8fc7\u53bb\u4e00\u5e74\u5e72\u4e86\u4ec0\u4e48<\/a><\/li>\n  <li><a href=\"#\u4e00\u4e9b\u9057\u61be\" id=\"markdown-toc-\u4e00\u4e9b\u9057\u61be\">\u4e00\u4e9b\u9057\u61be<\/a><\/li>\n  <li><a href=\"#\u4e00\u70b9\u70b9\u672a\u6765\u7684\u5c0f\u76ee\u6807\" id=\"markdown-toc-\u4e00\u70b9\u70b9\u672a\u6765\u7684\u5c0f\u76ee\u6807\">\u4e00\u70b9\u70b9\u672a\u6765\u7684\u5c0f\u76ee\u6807<\/a><\/li>\n<\/ul>\n\n<p>\u8fd9\u4e00\u5e74\u662f\u5341\u5206\u666e\u901a\u53c8\u8bb0\u5fc6\u6df1\u523b\u7684\u4e00\u5e74\uff0c\u6309\u7406\u6765\u8bf4\u5e94\u5f53\u7b97\u662fgap year\u4e86\uff0c\u4f46\u662f\u5b9e\u9645\u4e0a\u4e0a\u534a\u5e74\u751f\u6d3b\u5341\u5206\u532e\u4e4f\uff0c\u6bcf\u5929\u9664\u4e86\u966a\u5988\u5988\u4e70\u83dc\uff0c\u8df3\u8df3\u7ef3\uff0c\u6563\u6563\u6b65\uff0c\u5e76\u672a\u4f53\u9a8c\u5f88\u591a\u65b0\u9c9c\u4e8b\u7269\u3002<br \/>\n\u800c\u4e0b\u534a\u5e74\u91cd\u65b0\u6765\u5230\u5317\u4eac\uff0c\u5927\u7ea6\u662f\u521d\u5230\u65b0\u73af\u5883\u7684\u7f18\u6545\uff0c\u867d\u7136\u6ca1\u6709\u592a\u591a\u4e0d\u9002\u5e94\uff0c\u5374\u4e5f\u56e0\u4e3a\u6821\u56ed\u751f\u6d3b\u7684\u964c\u751f\u548c\u5355\u8c03\u4e00\u5ea6\u5fc3\u60c5\u4e0d\u6109\u60a6\uff0c\u53ea\u80fd\u501f\u52a9\u6e38\u620f\u6765\u9ebb\u75f9\u81ea\u5df1\uff0c\u77ed\u6682\u5730\u7529\u5f00\u70e6\u607c\u3002\u597d\u5728\u6700\u540e\u968f\u7740\u5f62\u52bf\u7684\u5927\u53d8\u5316\uff0c\u6211\u7684\u751f\u6d3b\u4e5f\u5f00\u59cb\u9010\u6e10\u597d\u8d77\u6765\uff0c\u5e74\u672b\u7684\u65f6\u5019\uff0c\u5728\u9505\u9505\u90a3\u8fb9\u5b89\u5fc3\u5f53\u4e86\u4e00\u4e2a\u6708\u7c73\u866b\u3002<br \/>\n\u6ca1\u60f3\u5230\u7684\u662f\uff0c\u65b0\u5e74\u521d\u5976\u5976\u8fd8\u662f\u8d70\u4e86\uff0c\u7238\u7238\u7684\u6765\u5904\u4e5f\u5c31\u6b64\u5168\u6ca1\u4e86\uff0c\u81f3\u4eca\u60f3\u8d77\u4ecd\u5341\u5206\u96be\u53d7\u3002\u4e8e\u6211\u6765\u8bf4\uff0c\u7ecf\u8fc7\u8fd9\u4e00\u832c\uff0c\u5374\u4e5f\u7a81\u7136\u60f3\u8d77\u6765\u4e86\u8bb8\u591a\u8bb0\u5fc6\u91cc\u5feb\u6d88\u5931\u7684\u4e1c\u897f\uff0c\u4e5f\u7a81\u7136\u60f3\u5f00\u4e86\u4e0a\u534a\u5e74\u5728\u5bb6\u4e4f\u5473\u7684\u65e5\u5e38\uff0c\u4e5f\u8bb8\u8fd9\u79cd\u5bb6\u4eba\u4e4b\u95f4\u7684\u966a\u4f34\u5176\u5b9e\u672a\u514d\u4e0d\u662f\u4e00\u756a\u5e78\u8fd0\u3002<br \/>\n\u201c\u4eba\u7684\u4e00\u751f\u4f1a\u7ecf\u5386\u4e24\u6b21\u6b7b\u4ea1\u3002\u7b2c\u4e00\u6b21\u662f\u751f\u7406\u4e0a\u7684\u6b7b\u4ea1,\u7b2c\u4e8c\u6b21\u662f\u5f53\u88ab\u6240\u6709\u6d3b\u7740\u7684\u4eba\u9057\u5fd8\u3002\u201d<\/p>\n\n<h2 id=\"\u8fc7\u53bb\u4e00\u5e74\u5e72\u4e86\u4ec0\u4e48\">\u8fc7\u53bb\u4e00\u5e74\u5e72\u4e86\u4ec0\u4e48<\/h2>\n\n<ul class=\"task-list\">\n  <li class=\"task-list-item\"><input type=\"checkbox\" class=\"task-list-item-checkbox\" disabled=\"disabled\" checked=\"checked\" \/>\u5b8c\u6210\u6bd5\u8bbe\uff0c\u5e76\u62ff\u5230\u4e86\u4f18\u79c0\u6bd5\u4e1a\u8bbe\u8ba1\uff08\u6ca1\u6709\u5956\u91d1\u6709\u70b9\u62c9\u80ef\uff09<\/li>\n  <li class=\"task-list-item\"><input type=\"checkbox\" class=\"task-list-item-checkbox\" disabled=\"disabled\" checked=\"checked\" \/>\u5ea6\u8fc7\u6211\u4eec\u7684\u4e09\u5468\u5e74\u7eaa\u5ff5\u65e5<\/li>\n  <li class=\"task-list-item\"><input type=\"checkbox\" class=\"task-list-item-checkbox\" disabled=\"disabled\" checked=\"checked\" \/>\u5b8c\u6210\u4e86\u53bb\u5e74\u60f3\u5b9e\u73b0\u7684\u201c\u9760\u6280\u672f\u8d5a\u5f97\u7b2c\u4e00\u6876\u91d1\u201d\uff0c\u5e26\u7740\u5c0f\u961f\u4f0d\u4e00\u8d77\u8d5a\u4e86\u4e00\u70b9\u5c0f\u94b1\u94b1<\/li>\n  <li class=\"task-list-item\"><input type=\"checkbox\" class=\"task-list-item-checkbox\" disabled=\"disabled\" checked=\"checked\" \/>\u575a\u6301\u8df3\u7ef3\u4e00\u4e24\u4e2a\u6708\u5427\uff0c\u4f46\u662f\u4f53\u91cd\u4e00\u70b9\u53d8\u5316\u90fd\u6ca1\u6709\u252d\u252e\ufe4f\u252d\u252e<\/li>\n  <li class=\"task-list-item\"><input type=\"checkbox\" class=\"task-list-item-checkbox\" disabled=\"disabled\" checked=\"checked\" \/>\u548c\u767d\u767d\u3001\u5f6c\u5f6c\u53bb\u4e86\u5408\u80a5\u548c\u82cf\u5dde\uff0c\u5b8c\u6210\u4e86\u6bd5\u4e1a\u65c5\u884c<\/li>\n  <li class=\"task-list-item\"><input type=\"checkbox\" class=\"task-list-item-checkbox\" disabled=\"disabled\" checked=\"checked\" \/>\u9760\u81ea\u5df1\u8d5a\u7684\u94b1\u94b1\u7ed9\u9505\u9505\u548c\u81ea\u5df1\u4e70\u4e86\u4e00\u53f0switch\uff08\u867d\u7136\u73b0\u5728\u56e0\u4e3asteam deck\u7684\u5230\u6765\uff0c\u5b83\u5df2\u7ecf\u5403\u7070\u591a\u5e74\u4e86&gt;_&lt;\uff09<\/li>\n  <li class=\"task-list-item\"><input type=\"checkbox\" class=\"task-list-item-checkbox\" disabled=\"disabled\" checked=\"checked\" \/>\u6536\u83b7\u4e86ggj\u9001\u7684\u751f\u65e5\u793c\u7269\u2014\u2014\u4fee\u677f\u677f\uff08\u516b\u626c\u5f71\u97f3\u677f\u771f\u662f\u5de8\u723d\u5566\uff09<\/li>\n  <li class=\"task-list-item\"><input type=\"checkbox\" class=\"task-list-item-checkbox\" disabled=\"disabled\" checked=\"checked\" \/>\u89c1\u5230\u4e86\u5f88\u4e45\u6ca1\u89c1\u8fc7\u7684\u540c\u5b66\u548c\u8001\u5e08\uff0c\u51e0\u5e74\u8fc7\u53bb\u597d\u50cf\u4e5f\u6ca1\u6709\u6539\u53d8\u592a\u591a<\/li>\n  <li class=\"task-list-item\"><input type=\"checkbox\" class=\"task-list-item-checkbox\" disabled=\"disabled\" checked=\"checked\" \/>\u53bb\u4e86\u5317\u4eacx3\uff08\u4f53\u9a8c\u4e86\u6e56\u91cc\u7684\u751f\u6d3b\uff0c\u62ff\u5230\u4e86\u5f88\u591a\u6587\u521b\uff1b\u8ddf\u9505\u9505\u4e00\u8d77\u901b\u4e86\u767e\u4eac\u57ce\u5185\u5f88\u591a\u5730\u65b9\uff09<\/li>\n  <li class=\"task-list-item\"><input type=\"checkbox\" class=\"task-list-item-checkbox\" disabled=\"disabled\" checked=\"checked\" \/>\u6478\u6478\u515a\u4e86\u4e00\u4e2a\u5c0f\u5783\u573e\u5355\u53cd\uff0c\u592a\u5783\u573e\u53c8\u5356\u6389\u4e86<\/li>\n  <li class=\"task-list-item\"><input type=\"checkbox\" class=\"task-list-item-checkbox\" disabled=\"disabled\" checked=\"checked\" \/>\u4e70\u4e86\u4e00\u4e2a\u5c0f\u81ea\u884c\u8f66\uff08\u79bb\u5f00\u6e56\u91cc\u53c8\u5356\u4e86\uff09<\/li>\n  <li class=\"task-list-item\"><input type=\"checkbox\" class=\"task-list-item-checkbox\" disabled=\"disabled\" checked=\"checked\" \/>\u7535\u5f71\u9605\u7247\u91cf\u5de8\u589e<\/li>\n  <li class=\"task-list-item\"><input type=\"checkbox\" class=\"task-list-item-checkbox\" disabled=\"disabled\" checked=\"checked\" \/>\u88ab\u6002\u607f\u7740\u4e70\u4e86\u4e2a\u56fa\u6001\uff0c\u786e\u5b9e\u6ca1\u6709\u5bb9\u91cf\u7126\u8651\u4e86\uff08\u4f46\u662f\u53c8\u60f3\u6362\u7535\u8111\u4e86\u54c8\u54c8\u54c8\u54c8\u54c8\uff09<\/li>\n<\/ul>\n\n<h2 id=\"\u4e00\u4e9b\u9057\u61be\">\u4e00\u4e9b\u9057\u61be<\/h2>\n\n<ul class=\"task-list\">\n  <li class=\"task-list-item\"><input type=\"checkbox\" class=\"task-list-item-checkbox\" disabled=\"disabled\" \/>\u4e00\u5e74\u4e2d\u73a9\u4e5f\u6ca1\u73a9\u597d\uff0c\u5b66\u4e5f\u6ca1\u5b66\u597d\uff08\u65e9\u70b9\u8fdb\u7ec4\u53ef\u80fd\u4f1a\u597d\u4e00\u70b9\uff09<\/li>\n  <li class=\"task-list-item\"><input type=\"checkbox\" class=\"task-list-item-checkbox\" disabled=\"disabled\" \/>\u5f88\u591a\u60f3\u53bb\u65c5\u6e38\u7684\u57ce\u5e02\u6ca1\u6709\u5728\u6bd5\u4e1a\u65c5\u884c\u5b8c\u6210<\/li>\n  <li class=\"task-list-item\"><input type=\"checkbox\" class=\"task-list-item-checkbox\" disabled=\"disabled\" \/>\u56e0\u4e3a\u6700\u540e\u51e0\u4e2a\u6708\u4e71\u4e03\u516b\u7cdf\u7684\u4e8b\u60c5\u538b\u5728\u4e00\u8d77\uff0c\u590d\u80d6\u4e86\u51e0\u65a4<\/li>\n  <li class=\"task-list-item\"><input type=\"checkbox\" class=\"task-list-item-checkbox\" disabled=\"disabled\" \/>\u6ca1\u6709\u7a7f\u7740\u5b66\u58eb\u670d\u771f\u6b63\u62cd\u4e00\u6b21\u6bd5\u4e1a\u7167<\/li>\n  <li class=\"task-list-item\"><input type=\"checkbox\" class=\"task-list-item-checkbox\" disabled=\"disabled\" \/>\u7814\u7a76\u65b9\u5411\u4e0e\u9884\u671f\u6709\u70b9\u4e0d\u4e00\u6837<\/li>\n<\/ul>\n\n<h2 id=\"\u4e00\u70b9\u70b9\u672a\u6765\u7684\u5c0f\u76ee\u6807\">\u4e00\u70b9\u70b9\u672a\u6765\u7684\u5c0f\u76ee\u6807<\/h2>\n\n<ol>\n  <li>\u5e0c\u671b\u81ea\u5df1\u80fd\u5728\u7814\u7a76\u751f\u7684\u65b9\u5411\u4e0a\u5c3d\u65e9\u51fa\u6210\u679c\uff1a\n    <ul class=\"task-list\">\n      <li class=\"task-list-item\"><input type=\"checkbox\" class=\"task-list-item-checkbox\" disabled=\"disabled\" \/>\u5b8c\u6210\u73b0\u6709\u9009\u9898\u7684\u67b6\u6784\u7ec6\u8282\u642d\u5efa<\/li>\n      <li class=\"task-list-item\"><input type=\"checkbox\" class=\"task-list-item-checkbox\" disabled=\"disabled\" \/>\u719f\u6089\u591a\u667a\u80fd\u4f53\u7b97\u6cd5\u7684\u7f16\u5199<\/li>\n      <li class=\"task-list-item\"><input type=\"checkbox\" class=\"task-list-item-checkbox\" disabled=\"disabled\" \/>\u591a\u9605\u8bfb\u8bba\u6587\uff0c\u79ef\u7d2f\u64b0\u5199\u7ecf\u9a8c<\/li>\n      <li class=\"task-list-item\"><input type=\"checkbox\" class=\"task-list-item-checkbox\" disabled=\"disabled\" \/>\u4ee5\u9ad8\u6c34\u5e73\u8bba\u6587\u4e3a\u76ee\u6807\uff0c\u4fdd\u4e00\u4e89\u4e8c<\/li>\n    <\/ul>\n  <\/li>\n  <li>\u5728\u82f1\u8bed\u65b9\u9762\u6709\u8fdb\u4e00\u6b65\u7684\u63d0\u5347\n    <ul class=\"task-list\">\n      <li class=\"task-list-item\"><input type=\"checkbox\" class=\"task-list-item-checkbox\" disabled=\"disabled\" \/>\u8003\u4e00\u4e2a\u96c5\u601d<\/li>\n    <\/ul>\n  <\/li>\n  <li>\u53bb\u51e0\u4e2a\u4ee5\u524d\u5f88\u60f3\u53bb\u4f46\u6ca1\u53bb\u8fc7\u7684\u5730\u65b9\u4f53\u9a8c\u4f53\u9a8c<\/li>\n  <li>\u613f\u9505\u9505\u80fd\u5728\u5e74\u5e95\u6536\u5230\u597d\u7684\u6765\u4fe1<\/li>\n<\/ol>","author":{"name":"Windy","email":"windy23334@gmail.com"},"category":[{"@attributes":{"term":"blog"}},{"@attributes":{"term":"summary"}}],"summary":{"@attributes":{"type":"html"}}},{"title":"HTTP\/HTTPS\u670d\u52a1\u5668\u7684\u5b9e\u73b0","link":{"@attributes":{"href":"https:\/\/windy810.github.io\/blog\/2022-10-31-httpserver\/","rel":"alternate","type":"text\/html","title":"HTTP\/HTTPS\u670d\u52a1\u5668\u7684\u5b9e\u73b0"}},"published":"2022-10-31T00:00:00+00:00","updated":"2022-10-31T00:00:00+00:00","id":"https:\/\/windy810.github.io\/blog\/httpserver","content":"<ul id=\"markdown-toc\">\n  <li><a href=\"#\u9879\u76ee\u7b80\u4ecb\" id=\"markdown-toc-\u9879\u76ee\u7b80\u4ecb\">\u9879\u76ee\u7b80\u4ecb<\/a><\/li>\n  <li><a href=\"#\u9879\u76ee\u5730\u5740\u6682\u4e0d\u5f00\u6e90\" id=\"markdown-toc-\u9879\u76ee\u5730\u5740\u6682\u4e0d\u5f00\u6e90\">\u9879\u76ee\u5730\u5740(\u6682\u4e0d\u5f00\u6e90)<\/a><\/li>\n  <li><a href=\"#\u9879\u76ee\u8bf4\u660e\" id=\"markdown-toc-\u9879\u76ee\u8bf4\u660e\">\u9879\u76ee\u8bf4\u660e<\/a><\/li>\n  <li><a href=\"#\u4ee3\u7801\u5b9e\u73b0\u903b\u8f91\" id=\"markdown-toc-\u4ee3\u7801\u5b9e\u73b0\u903b\u8f91\">\u4ee3\u7801\u5b9e\u73b0\u903b\u8f91<\/a><\/li>\n<\/ul>\n\n<h2 id=\"\u9879\u76ee\u7b80\u4ecb\">\u9879\u76ee\u7b80\u4ecb<\/h2>\n\n<p>\u4f7f\u7528C++\u8bed\u8a00\u5b9e\u73b0\u6700\u7b80\u5355\u7684HTTP\u670d\u52a1\u5668\uff0c\u652f\u6301HTTP\u548cHTTPS;\u652f\u6301GET\u65b9\u6cd5\uff0c\u89e3\u6790\u8bf7\u6c42\u62a5\u6587\uff0c\u8fd4\u56de\u76f8\u5e94\u5e94\u7b54\u53ca\u5185\u5bb9;\u80fd\u5b8c\u6210HTTP\u670d\u52a1\u5668\u5206\u53d1\u89c6\u9891\u3002<\/p>\n\n<h2 id=\"\u9879\u76ee\u5730\u5740\u6682\u4e0d\u5f00\u6e90\">\u9879\u76ee\u5730\u5740(\u6682\u4e0d\u5f00\u6e90)<\/h2>\n\n<p><a href=\"https:\/\/github.com\/Windy810\/HTTP-Server\/\">HTTP-Server<\/a><\/p>\n\n<h2 id=\"\u9879\u76ee\u8bf4\u660e\">\u9879\u76ee\u8bf4\u660e<\/h2>\n\n<ol>\n  <li>HTTP\u670d\u52a1\u5668\u652f\u6301HTTP\u548cHTTPS\nHTTP\u670d\u52a1\u5668\u540c\u65f6\u652f\u6301HTTP\uff0880\u7aef\u53e3\uff09\u548cHTTPS\uff08443\u7aef\u53e3\uff09\uff0c\u4f7f\u7528\u4e24\u4e2a\u7ebf\u7a0b\u5206\u522b\u76d1\u542c\u5404\u81ea\u7aef\u53e3\u3002<\/li>\n  <li>HTTP\u670d\u52a1\u5668\u652f\u6301GET\u65b9\u6cd5\nHTTP\u670d\u52a1\u5668\u652f\u6301GET\u65b9\u6cd5\uff0c\u89e3\u6790\u8bf7\u6c42\u62a5\u6587\uff0c\u8fd4\u56de\u76f8\u5e94\u5e94\u7b54\u53ca\u5185\u5bb9\uff0c\u8981\u6c42\u652f\u6301\u7684\u72b6\u6001\u7801\u53ca\u5bf9\u5e94\u573a\u666f\u4fe1\u606f\u5982\u4e0b\u8868\u3002<\/li>\n<\/ol>\n\n<table>\n  <thead>\n    <tr>\n      <th style=\"text-align: center\">\u72b6\u6001\u7801<\/th>\n      <th style=\"text-align: center\">\u72b6\u6001\u7801\u82f1\u6587\u540d\u79f0<\/th>\n      <th style=\"text-align: center\">\u573a\u666f<\/th>\n    <\/tr>\n  <\/thead>\n  <tbody>\n    <tr>\n      <td style=\"text-align: center\">200<\/td>\n      <td style=\"text-align: center\">OK<\/td>\n      <td style=\"text-align: center\">\u5bf9\u4e8e443\u7aef\u53e3\u63a5\u6536\u7684\u8bf7\u6c42\uff0c\u5982\u679c\u7a0b\u5e8f\u6240\u5728\u6587\u4ef6\u5939\u5b58\u5728\u6240\u8bf7\u6c42\u7684\u6587\u4ef6\uff0c\u8fd4\u56de\u8be5\u72b6\u6001\u7801\u548c\u8be5\u6587\u4ef6<\/td>\n    <\/tr>\n    <tr>\n      <td style=\"text-align: center\">301<\/td>\n      <td style=\"text-align: center\">Moved Permanently<\/td>\n      <td style=\"text-align: center\">\u5bf9\u4e8e80\u7aef\u53e3\u63a5\u6536\u7684\u8bf7\u6c42\uff0c\u8fd4\u56de\u8be5\u72b6\u6001\u7801\uff0c\u5728\u5e94\u7b54\u4e2d\u4f7f\u7528Location\u5b57\u6bb5\u8868\u8fbe\u76f8\u5e94\u7684https URL<\/td>\n    <\/tr>\n    <tr>\n      <td style=\"text-align: center\">206<\/td>\n      <td style=\"text-align: center\">Partial Content<\/td>\n      <td style=\"text-align: center\">\u5bf9\u4e8e443\u7aef\u53e3\u63a5\u6536\u7684\u8bf7\u6c42\uff0c\u5982\u679c\u6240\u8bf7\u6c42\u7684\u4e3a\u90e8\u5206\u5185\u5bb9\uff08\u8bf7\u6c42\u4e2d\u6709Range\u5b57\u6bb5\uff09\uff0c\u8fd4\u56de\u8be5\u72b6\u6001\u7801\uff0c\u4ee5\u53ca\u76f8\u5e94\u7684\u90e8\u5206\u5185\u5bb9<\/td>\n    <\/tr>\n    <tr>\n      <td style=\"text-align: center\">404<\/td>\n      <td style=\"text-align: center\">Not Found<\/td>\n      <td style=\"text-align: center\">\u5bf9\u4e8e443\u7aef\u53e3\u63a5\u6536\u7684\u8bf7\u6c42\uff0c\u5982\u679c\u7a0b\u5e8f\u6240\u5728\u6587\u4ef6\u5939\u6ca1\u6709\u6240\u8bf7\u6c42\u7684\u6587\u4ef6\uff0c\u8fd4\u56de\u8be5\u72b6\u6001\u7801<\/td>\n    <\/tr>\n  <\/tbody>\n<\/table>\n\n<ol>\n  <li>HTTP\u670d\u52a1\u5668\u5206\u53d1\u89c6\u9891\n\u5728\u4e3b\u673ah1\u4e0a\u8fd0\u884chttp-server\uff0c\u6240\u5728\u76ee\u5f55\u4e0b\u6709\u4e00\u4e2a\u5c0f\u89c6\u9891\uff0830\u79d2\u5de6\u53f3\uff09\u3002\u5728\u4e3b\u673ah2\u4e0a\u8fd0\u884cvlc\uff08\u666e\u901a\u7528\u6237\uff09\uff0c\u901a\u8fc7\u7f51\u7edc\u83b7\u53d6\u5e76\u64ad\u653e\u8be5\u5c0f\u89c6\u9891\u3002\u6293\u5305\u5206\u6790HTTP\u670d\u52a1\u5668\u548cVLC\u5ba2\u6237\u7aef\u4e4b\u95f4\u5982\u4f55\u4f20\u8f93\u89c6\u9891\u6587\u4ef6\u3002<\/li>\n<\/ol>\n\n<h2 id=\"\u4ee3\u7801\u5b9e\u73b0\u903b\u8f91\">\u4ee3\u7801\u5b9e\u73b0\u903b\u8f91<\/h2>\n\n<ol>\n  <li>\n    <p>\u7ebf\u7a0b\u7684\u5efa\u7acb<br \/>\n\u2460\t\u8c03\u7528<code class=\"language-plaintext highlighter-rouge\">pthread_t<\/code>\u5206\u522b\u5b9a\u4e49\u4e24\u4e2a\u7ebf\u7a0bth1\u548cth2<br \/>\n\u2461\t\u518d\u5229\u7528<code class=\"language-plaintext highlighter-rouge\">pthread_create<\/code>\u521b\u5efa\u4e0d\u540c\u7684\u7ebf\u7a0b\uff0c\u8c03\u7528\u7f16\u5199\u7684<code class=\"language-plaintext highlighter-rouge\">http_server<\/code>\uff08\u5904\u740680\u7aef\u53e3\u7684\u8bf7\u6c42\uff09\u548c<code class=\"language-plaintext highlighter-rouge\">https_server<\/code>\uff08\u5904\u7406443\u7aef\u53e3\u7684\u8bf7\u6c42\uff09\u51fd\u6570<\/p>\n  <\/li>\n  <li>\n    <p>HTTP\u670d\u52a1\u5668\u5b9e\u73b0<br \/>\n\u2460\t\u5229\u7528<code class=\"language-plaintext highlighter-rouge\">socket<\/code>\u51fd\u6570\u521b\u5efa\u670d\u52a1\u5668\u5957\u63a5\u5b57\uff0c\u6307\u5b9aIP\u534f\u8bae\u53ca\u6570\u636e\u4f20\u8f93\u683c\u5f0f<br \/>\n\u2461\t\u8bbe\u7f6e\u670d\u52a1\u5668IP\u5730\u5740\u548c\u7aef\u53e3\u53f780\uff0c\u5e76\u5c06\u5176\u5229\u7528<code class=\"language-plaintext highlighter-rouge\">bind<\/code>\u51fd\u6570\u4e0e\u5957\u63a5\u5b57\u7ed1\u5b9a<br \/>\n\u2462\t\u4f7f\u7528<code class=\"language-plaintext highlighter-rouge\">listen<\/code>\u51fd\u6570\u76d1\u542c\u8be5\u670d\u52a1\u5668\u5957\u63a5\u5b57<br \/>\n\u2463\t\u8bbe\u7f6ewhile\u5faa\u73af\uff0c\u4fdd\u8bc1\u670d\u52a1\u5668\u53ef\u6301\u7eed\u8c03\u7528<code class=\"language-plaintext highlighter-rouge\">accept<\/code>\u51fd\u6570\u63a5\u6536\u6765\u81ea\u5ba2\u6237\u7aef\u7684\u8fde\u63a5\u8bf7\u6c42\uff0c\u5e76\u5728while\u5faa\u73af\u5185\u5229\u7528<code class=\"language-plaintext highlighter-rouge\">recv<\/code>\u51fd\u6570\u8bfb\u53d6\u8bf7\u6c42\u8be6\u7ec6\u4fe1\u606f\uff0c\u5bf9\u5176\u8fdb\u884c\u62c6\u5206\u5904\u7406\uff0c\u5212\u5206request\u62a5\u6587\u5b57\u6bb5\uff0c\u53d6\u51fa\u8bf7\u6c42\u7684uri<br \/>\n\u2464\t\u7f16\u5199response\u62a5\u6587\u5b57\u6bb5\uff1a\u8fd4\u56de301\u62a5\u5934\u4ee5\u53ca<code class=\"language-plaintext highlighter-rouge\">Location<\/code>\u5b57\u6bb5\uff0c\u4fbf\u4e8e\u5ba2\u6237\u7aef\u91cd\u5b9a\u5411\u5230\u5bf9\u5e94HTTPS\u5730\u5740<br \/>\n\u2465\t\u5173\u95ed\u8fde\u63a5\uff0c\u7ee7\u7eed\u7b49\u5f85\u4e0b\u4e00\u6b21\u8fde\u63a5<\/p>\n  <\/li>\n  <li>\n    <p>HTTPS\u670d\u52a1\u5668\u5b9e\u73b0<br \/>\n\u2460\t\u521d\u59cb\u5316SSL\u76f8\u5173\u7684\u5e93<br \/>\n\u2461\t\u8c03\u7528<code class=\"language-plaintext highlighter-rouge\">SSL_CTX_set_verify<\/code>\u51fd\u6570\u9a8c\u8bc1\u5ba2\u6237\u7aef\u8bc1\u4e66\uff0c\u8bbe\u7f6e\u5176\u9a8c\u8bc1\u6a21\u5f0f\u4e3a<code class=\"language-plaintext highlighter-rouge\">SSL_VERIFY_FAIL_IF_NO_PEER_CERT<\/code>\uff0c\u82e5\u6ca1\u6709\u8bc1\u4e66\u5219\u8fde\u63a5\u76f4\u63a5\u5931\u8d25<br \/>\n\u2462\t\u91c7\u7528<code class=\"language-plaintext highlighter-rouge\">SSL_CTX_use_certificate_chain_file<\/code>\u51fd\u6570\u52a0\u8f7d\u81ea\u5df1\u672c\u5730\u7684\u8bc1\u4e66\u6587\u4ef6\uff0c<code class=\"language-plaintext highlighter-rouge\">SSL_CTX_set_default_passwd_cb_userdata<\/code>\u51fd\u6570\u7528\u4e8e\u52a0\u8f7d\u79c1\u94a5<br \/>\n\u2463\t\u521b\u5efa\u670d\u52a1\u5668\u5957\u63a5\u5b57\uff0c\u8bbe\u7f6e\u76f8\u5e94\u7684\u534f\u8bae\u3001IP\u5730\u5740\u3001\u7aef\u53e3443\u5e76\u7ed1\u5b9a<br \/>\n\u2464\t\u4f7f\u7528listen\u51fd\u6570\u5f00\u59cb\u76d1\u542c\u8be5\u670d\u52a1\u5668\u5957\u63a5\u5b57<br \/>\n\u2465\t\u8bbe\u7f6e\u65e0\u9650\u5faa\u73af\uff0c\u6301\u7eed\u7b49\u5f85\u63a5\u6536\u5ba2\u6237\u7aef\u8fde\u63a5<br \/>\n\u2466\t\u5f53\u63a5\u6536\u5230\u8fde\u63a5\u8bf7\u6c42\u540e\uff0c\u8c03\u7528<code class=\"language-plaintext highlighter-rouge\">SSL_set_fd<\/code>\u65b9\u6cd5\u8fde\u63a5socket\u548cssl<br \/>\n\u2467\t\u5229\u7528SSL_read\u89e3\u6790\u8bf7\u6c42\u62a5\u6587\uff0c\u5212\u5206\u8bf7\u6c42\u7684uri\u7b49\u5b57\u6bb5\uff0c\u5e76\u6839\u636e\u8be5uri\u8c03\u7528<code class=\"language-plaintext highlighter-rouge\">access<\/code>\u65b9\u6cd5\u5224\u65ad\u8be5\u8bf7\u6c42\u7684\u6587\u4ef6\u662f\u5426\u5b58\u5728\uff0c\u82e5\u5b58\u5728\u5219\u8fdb\u5165\u4e0b\u4e00\u6b65\uff0c\u4e0d\u5b58\u5728\u5219\u8fd4\u56de404\u62a5\u6587<br \/>\n\u2468\t\u82e5\u5b58\u5728\u8be5\u6587\u4ef6\u4e14\u5b58\u5728Range\u5b57\u6bb5\uff0c\u5219\u8fd4\u56de206\u62a5\u6587\uff0c\u5e76\u8c03\u7528open\u51fd\u6570\u8bfb\u53d6\u76f8\u5e94\u7684\u6587\u4ef6\uff0c\u6839\u636eRange\u7684\u524d\u540e\u8303\u56f4\u5212\u5206\uff0c\u5faa\u73af\u8bfb\u53d6\u6587\u4ef6\u5185\u5bb9\uff0c\u7531<code class=\"language-plaintext highlighter-rouge\">SSL_write<\/code>\u51fd\u6570\u53d1\u9001\u7ed9\u5ba2\u6237\u7aef<br \/>\n\u2469\t\u82e5\u4e0d\u5b58\u5728Range\u5b57\u6bb5\u5219\u76f4\u63a5\u5faa\u73af\u8bfb\u53d6\u6587\u4ef6\u5185\u5bb9\uff0c\u91c7\u7528<code class=\"language-plaintext highlighter-rouge\">SSL_write<\/code>\u51fd\u6570\u5c06\u7f13\u51b2\u533a\u5185\u8bfb\u53d6\u7684\u6587\u4ef6\u7247\u6bb5\u4f9d\u6b21\u8fd4\u56de\u7ed9\u5ba2\u6237\u7aef<br \/>\n\u246a\t\u6700\u540e\u91ca\u653essl\u5e76\u5173\u95ed\u5957\u63a5\u5b57\uff0c\u7b49\u5f85\u4e0b\u4e00\u6b21\u8fde\u63a5\u8bf7\u6c42<\/p>\n  <\/li>\n<\/ol>","author":{"name":"Windy","email":"windy23334@gmail.com"},"category":[{"@attributes":{"term":"blog"}},{"@attributes":{"term":"network"}}],"summary":{"@attributes":{"type":"html"}}},{"title":"Machine_Learning_at_the _Wireless_Edge","link":{"@attributes":{"href":"https:\/\/windy810.github.io\/blog\/2022-10-28-Machine_Learning_at_the-_Wireless_Edge\/","rel":"alternate","type":"text\/html","title":"Machine_Learning_at_the _Wireless_Edge"}},"published":"2022-10-28T00:00:00+00:00","updated":"2022-10-28T00:00:00+00:00","id":"https:\/\/windy810.github.io\/blog\/Machine_Learning_at_the%20_Wireless_Edge","content":"<ul id=\"markdown-toc\">\n  <li><a href=\"#\u5f15\u8a00\u673a\u5668\u5b66\u4e60\u4e0e\u65e0\u7ebf\u7f51\u7edc\u7684\u5173\u8054\" id=\"markdown-toc-\u5f15\u8a00\u673a\u5668\u5b66\u4e60\u4e0e\u65e0\u7ebf\u7f51\u7edc\u7684\u5173\u8054\"><strong>\u5f15\u8a00<\/strong>\uff08\u673a\u5668\u5b66\u4e60\u4e0e\u65e0\u7ebf\u7f51\u7edc\u7684\u5173\u8054\uff09\uff1a<\/a><\/li>\n  <li><a href=\"#1-motivation\" id=\"markdown-toc-1-motivation\">1. Motivation<\/a>    <ul>\n      <li><a href=\"#11-\u673a\u5668\u5b66\u4e60\u6700\u65b0\u73b0\u72b6\" id=\"markdown-toc-11-\u673a\u5668\u5b66\u4e60\u6700\u65b0\u73b0\u72b6\">1.1 \u673a\u5668\u5b66\u4e60\u6700\u65b0\u73b0\u72b6<\/a><\/li>\n      <li><a href=\"#12-\u65e0\u7ebf\u8fb9\u7f18\u7684\u673a\u5668\u5b66\u4e60\" id=\"markdown-toc-12-\u65e0\u7ebf\u8fb9\u7f18\u7684\u673a\u5668\u5b66\u4e60\">1.2 \u65e0\u7ebf\u8fb9\u7f18\u7684\u673a\u5668\u5b66\u4e60<\/a><\/li>\n      <li><a href=\"#13-\u7f51\u7edc\u5316\u673a\u5668\u5b66\u4e60\u6a21\u578b\" id=\"markdown-toc-13-\u7f51\u7edc\u5316\u673a\u5668\u5b66\u4e60\u6a21\u578b\">1.3 \u7f51\u7edc\u5316\u673a\u5668\u5b66\u4e60\u6a21\u578b<\/a><\/li>\n    <\/ul>\n  <\/li>\n  <li><a href=\"#2-\u8054\u90a6\u5b66\u4e60\" id=\"markdown-toc-2-\u8054\u90a6\u5b66\u4e60\">2. \u8054\u90a6\u5b66\u4e60<\/a>    <ul>\n      <li><a href=\"#21-\u57fa\u672c\u67b6\u6784\" id=\"markdown-toc-21-\u57fa\u672c\u67b6\u6784\">2.1 \u57fa\u672c\u67b6\u6784<\/a><\/li>\n      <li><a href=\"#22-\u9700\u8981\u89e3\u51b3\u7684\u95ee\u9898\" id=\"markdown-toc-22-\u9700\u8981\u89e3\u51b3\u7684\u95ee\u9898\">2.2 \u9700\u8981\u89e3\u51b3\u7684\u95ee\u9898<\/a><\/li>\n      <li><a href=\"#23-\u8c03\u5ea6\u673a\u5236\" id=\"markdown-toc-23-\u8c03\u5ea6\u673a\u5236\">2.3 \u8c03\u5ea6\u673a\u5236<\/a><\/li>\n      <li><a href=\"#24-\u6027\u80fd\u6307\u6807\" id=\"markdown-toc-24-\u6027\u80fd\u6307\u6807\">2.4 \u6027\u80fd\u6307\u6807<\/a><\/li>\n      <li><a href=\"#25-\u4f18\u5316\u8c03\u5ea6\" id=\"markdown-toc-25-\u4f18\u5316\u8c03\u5ea6\">2.5 \u4f18\u5316\u8c03\u5ea6<\/a><\/li>\n      <li><a href=\"#26-\u8054\u90a6\u5b66\u4e60\u4e2d\u7684\u9690\u79c1\u4fdd\u62a4\" id=\"markdown-toc-26-\u8054\u90a6\u5b66\u4e60\u4e2d\u7684\u9690\u79c1\u4fdd\u62a4\">2.6 \u8054\u90a6\u5b66\u4e60\u4e2d\u7684\u9690\u79c1\u4fdd\u62a4<\/a><\/li>\n    <\/ul>\n  <\/li>\n  <li><a href=\"#3-\u53bb\u4e2d\u5fc3\u5316\u5b66\u4e60\" id=\"markdown-toc-3-\u53bb\u4e2d\u5fc3\u5316\u5b66\u4e60\">3. \u53bb\u4e2d\u5fc3\u5316\u5b66\u4e60<\/a>    <ul>\n      <li><a href=\"#31-\u57fa\u672c\u6a21\u578b\" id=\"markdown-toc-31-\u57fa\u672c\u6a21\u578b\">3.1 \u57fa\u672c\u6a21\u578b<\/a><\/li>\n      <li><a href=\"#32-\u534f\u540c\u7b97\u6cd5\" id=\"markdown-toc-32-\u534f\u540c\u7b97\u6cd5\">3.2 \u534f\u540c\u7b97\u6cd5<\/a><\/li>\n      <li><a href=\"#33-\u5206\u5e03\u5f0f\u5f3a\u5316\u5b66\u4e60\" id=\"markdown-toc-33-\u5206\u5e03\u5f0f\u5f3a\u5316\u5b66\u4e60\">3.3 \u5206\u5e03\u5f0f\u5f3a\u5316\u5b66\u4e60<\/a><\/li>\n    <\/ul>\n  <\/li>\n  <li><a href=\"#4-conclusion\" id=\"markdown-toc-4-conclusion\">4. Conclusion<\/a><\/li>\n  <li><a href=\"#5-\u63d0\u95ee\u4e0e\u56de\u7b54\" id=\"markdown-toc-5-\u63d0\u95ee\u4e0e\u56de\u7b54\">5. \u63d0\u95ee\u4e0e\u56de\u7b54<\/a><\/li>\n<\/ul>\n\n<p>URL: https:\/\/www.ee.bgu.ac.il\/~haimp\/VincentPoorMLCOM22.pdf<br \/>\nURL 2: \u3010\u3010\u76f4\u64ad\u56de\u653e\u3011IEEE TNSE\u6770\u51fa\u8bb2\u5ea7\u7cfb\u5217\uff08\u4e94\uff09 2022\u5e7410\u670828\u65e58\u70b9\u573a\u3011 https:\/\/www.bilibili.com\/video\/BV1Qv4y1S73b\/?share_source=copy_web&amp;vd_source=a55b4d059ed3cf630e3c5f3bb2f7e95b<\/p>\n\n<h2 id=\"\u5f15\u8a00\u673a\u5668\u5b66\u4e60\u4e0e\u65e0\u7ebf\u7f51\u7edc\u7684\u5173\u8054\"><strong>\u5f15\u8a00<\/strong>\uff08\u673a\u5668\u5b66\u4e60\u4e0e\u65e0\u7ebf\u7f51\u7edc\u7684\u5173\u8054\uff09\uff1a<\/h2>\n\n<ul>\n  <li>\u4f7f\u7528\u673a\u5668\u5b66\u4e60\u4f18\u5316\u901a\u4fe1\u7f51\u7edc<\/li>\n  <li>\u5728\u79fb\u52a8\u8bbe\u5907\u4e0a\u5b66\u4e60<\/li>\n<\/ul>\n\n<h2 id=\"1-motivation\">1. Motivation<\/h2>\n\n<h3 id=\"11-\u673a\u5668\u5b66\u4e60\u6700\u65b0\u73b0\u72b6\">1.1 \u673a\u5668\u5b66\u4e60\u6700\u65b0\u73b0\u72b6<\/h3>\n\n<ul>\n  <li>\u5927\u91cf\u6570\u636e\u53ef\u7528\uff0c\u8ba1\u7b97\u80fd\u529b\u63d0\u9ad8<\/li>\n  <li>\u6807\u51c6\u7684\u673a\u5668\u5b66\u4e60\u662f\u96c6\u4e2d\u5f0f\u7684\uff0c\u53ef\u4ee5\u8bbf\u95ee\u6240\u6709\u6570\u636e<\/li>\n  <li>\u5728\u4e91\u7aef\u4f7f\u7528\u8f6f\u4ef6\u5de5\u5177\u8fd0\u884c\u6a21\u578b\uff0c\u901a\u8fc7\u7279\u6b8a\u786c\u4ef6\u52a0\u901f<\/li>\n<\/ul>\n\n<p><img src=\"https:\/\/imgur.com\/xCQo3Mx.png\" alt=\"Untitled\" \/><\/p>\n\n<h3 id=\"12-\u65e0\u7ebf\u8fb9\u7f18\u7684\u673a\u5668\u5b66\u4e60\">1.2 \u65e0\u7ebf\u8fb9\u7f18\u7684\u673a\u5668\u5b66\u4e60<\/h3>\n\n<ul>\n  <li>\u96c6\u4e2d\u673a\u5668\u5b66\u4e60\u4e0d\u9002\u5408\u4e00\u4e9b\u65b0\u5174\u5e94\u7528\uff0c\u5982\uff1a\u81ea\u52a8\u9a7e\u9a76\u3001\u6025\u6551\u7f51\u7edc\u3001\u533b\u7597\u7f51\u7edc<\/li>\n  <li>\u8fd9\u4e9b\u573a\u666f\u7279\u6b8a\u7684\u539f\u56e0\uff1a\u6570\u636e\u7531\u8fb9\u7f18\u4ea7\u751f\u3001\u6709\u9650\u5bb9\u91cf\u4e0a\u884c\u94fe\u8def \u3001\u4f4e\u5ef6\u8fdf\u548c\u9ad8\u53ef\u9760\u6027\u3001\u6570\u636e\u9690\u79c1\/\u5b89\u5168\u3001\u53ef\u6269\u5c55\u6027\u548c\u5c40\u90e8\u6027<\/li>\n<\/ul>\n\n<p>\u4ee5\u4e0a\u539f\u56e0\u4fc3\u4f7f\u4e86\u673a\u5668\u5b66\u4e60\u9700\u8981\u66f4\u63a5\u8fd1\u7f51\u7edc\u8fb9\u7f18<\/p>\n\n<p><img src=\"https:\/\/imgur.com\/2z4ZBoQ.png\" alt=\"Untitled\" \/><\/p>\n\n<h3 id=\"13-\u7f51\u7edc\u5316\u673a\u5668\u5b66\u4e60\u6a21\u578b\">1.3 \u7f51\u7edc\u5316\u673a\u5668\u5b66\u4e60\u6a21\u578b<\/h3>\n\n<ul>\n  <li>\u6807\u51c6\u673a\u5668\u5b66\u4e60\uff1a\u6570\u636e\u5b58\u50a8\u5728\u4e91\u7aef\uff1b\u5728\u4e91\u7aef\u8fdb\u884c\u8bad\u7ec3\uff1b\u6ca1\u6709\u9690\u79c1<\/li>\n  <li>\u8054\u90a6\u673a\u5668\u5b66\u4e60\uff1a\u4e91\u4e0e\u7528\u6237\u8bbe\u5907\u540c\u65f6\u673a\u5668\u5b66\u4e60\uff1b\u53ea\u6709\u90e8\u5206\u6570\u636e\u5b58\u50a8\u5728\u4e91\u7aef\uff1b\u4fc3\u8fdb\u9690\u79c1<\/li>\n  <li>\u53bb\u4e2d\u5fc3\u5316\u673a\u5668\u5b66\u4e60\uff1a\u6ca1\u6709\u7c7b\u4f3c\u4e8e\u4e91\u7684\u57fa\u7840\u8bbe\u65bd\uff1b\u6570\u636e\u5b8c\u5168\u5206\u5e03\uff1b\u534f\u4f5c\u667a\u80fd\uff1b\u9690\u79c1<\/li>\n<\/ul>\n\n<p><img src=\"https:\/\/imgur.com\/NpXEPP8.png\" alt=\"Untitled\" \/><\/p>\n\n<h2 id=\"2-\u8054\u90a6\u5b66\u4e60\">2. \u8054\u90a6\u5b66\u4e60<\/h2>\n\n<h3 id=\"21-\u57fa\u672c\u67b6\u6784\">2.1 \u57fa\u672c\u67b6\u6784<\/h3>\n\n<p>\u3010\u6570\u636e\u96c6\u3011\u7ec8\u7aef\u7528\u6237(UE)\u4f7f\u7528\u672c\u5730\u7684\u539f\u59cb\u6570\u636e\u2192<\/p>\n\n<p>\u3010\u8bad\u7ec3\u3011\u7ec8\u7aef\u7528\u6237\u4f7f\u7528\u5171\u4eab\u6a21\u578b\u8fdb\u884c\u8bad\u7ec3\u2192<\/p>\n\n<p>\u3010\u8054\u90a6\u8ba1\u7b97\u3011\u8fb9\u7f18\u8282\u70b9(AP)\u4ece\u7ec8\u7aef\u6536\u96c6\u6743\u91cd\u5e76\u66f4\u65b0\u5171\u4eab\u6a21\u578b\u2192\u8fed\u4ee3\u81f3\u6536\u655b<\/p>\n\n<p><img src=\"https:\/\/imgur.com\/aFewsqH.png\" alt=\"Untitled\" \/><\/p>\n\n<h3 id=\"22-\u9700\u8981\u89e3\u51b3\u7684\u95ee\u9898\">2.2 \u9700\u8981\u89e3\u51b3\u7684\u95ee\u9898<\/h3>\n\n<ul>\n  <li>\u4e0e\u8fb9\u7f18\u8282\u70b9\u7684\u4ea4\u6d41\u53ea\u80fd\u901a\u8fc7\u65e0\u7ebf\u4fe1\u9053<\/li>\n  <li>\u65e0\u7ebf\u4ecb\u8d28\u662f\u5171\u4eab\u7684\u800c\u4e14\u6709\u9650\uff1a\u6bcf\u8f6e\u66f4\u65b0\u53ea\u80fd\u9009\u53d6\u90e8\u5206\u8bbe\u5907\uff1b\u56e0\u4e3a\u5e72\u6270\u4f20\u8f93\u4e0d\u53ef\u9760<\/li>\n<\/ul>\n\n<p><img src=\"https:\/\/imgur.com\/hPUU0zs.png\" alt=\"Untitled\" \/><\/p>\n\n<h3 id=\"23-\u8c03\u5ea6\u673a\u5236\">2.3 \u8c03\u5ea6\u673a\u5236<\/h3>\n\n<ul>\n  <li>\u968f\u673a\u8c03\u5ea6<\/li>\n  <li>\u8f6e\u8be2\uff1a\u5206\u7ec4\u518d\u4f9d\u6b21\u9009\u7ec4<\/li>\n  <li>\u6bd4\u4f8b\u516c\u5e73\uff1a\u9009\u62e9\u6700\u5f3a\u4fe1\u566a\u6bd4\u7684\u7ec8\u7aef\u7528\u6237<\/li>\n<\/ul>\n\n<p><img src=\"https:\/\/imgur.com\/65XiqPK.png\" alt=\"Untitled\" \/><\/p>\n\n<h3 id=\"24-\u6027\u80fd\u6307\u6807\">2.4 \u6027\u80fd\u6307\u6807<\/h3>\n\n<ul>\n  <li>\u66f4\u65b0\u7684\u524d\u63d0\u6761\u4ef6\uff1a\n    <ol>\n      <li>\u7ec8\u7aef\u7528\u6237\u88ab\u8c03\u5ea6\u5668\u9009\u62e9<\/li>\n      <li>\u63a5\u6536\u7684\u4fe1\u566a\u6bd4\u5927\u4e8e\u89e3\u7801\u9608\u503c<\/li>\n    <\/ol>\n  <\/li>\n  <li>\u91cf\u5316\u8bad\u7ec3\u6709\u6548\u6027\u7684\u6307\u6807\uff1a\u8fbe\u5230\u89e3\u6cd5\u7cbe\u5ea6\u6240\u9700\u8981\u7684\u6c9f\u901a\u8f6e\u6b21<\/li>\n<\/ul>\n\n<p>\u3010\u6ce8\u3011$\\epsilon$-accurate solution\uff1a\u6700\u5927\u5316\u4e00\u4e2a\u5f3a\u51f8\u51fd\u6570\uff08\u539f\u59cb\u89e3\u548c\u5bf9\u5076\u89e3\u662f\u76f8\u540c\u7684\uff09\uff0c\u6b64\u65f6\uff0c\u53ea\u6709\u4e24\u4e2a\u89e3\uff0c\u539f\u59cb\u89e3\u548c\u5bf9\u5076\u89e3\uff0c\u5f7c\u6b64\u5728$\\epsilon$\u4e4b\u5185<\/p>\n\n<p><img src=\"https:\/\/imgur.com\/7RbB76r.png\" alt=\"Untitled\" \/><\/p>\n\n<p>\u3010\u53c2\u6570\u6ce8\u89e3\u3011$\\epsilon$\u662f\u8bd5\u56fe\u5b9e\u73b0\u7684\u4e8c\u5143\u5dee\uff0c$\\theta$\u662f\u4fe1\u566a\u6bd4\u9608\u503c\uff0c\u5176\u4ed6\u5982\u56fe\u6240\u793a\uff08\u5177\u4f53\u7ec6\u8282\u53ef\u4ee5\u6682\u65f6\u4e0d\u6ce8\u610f\uff09<\/p>\n\n<p><img src=\"https:\/\/imgur.com\/15GhQeO.png\" alt=\"\u8054\u90a6\u5b66\u4e60\u7684\u6536\u655b\u901f\u5ea6\" \/><\/p>\n\n<p>\u8054\u90a6\u5b66\u4e60\u7684\u6536\u655b\u901f\u5ea6<\/p>\n\n<p>\u3010\u5b9e\u9a8c\u8bf4\u660e\u3011<\/p>\n\n<ul>\n  <li>\u5de6\u56fe\u4e3a\u89e3\u7801\u9608\u503c\u5f88\u5927\uff0c\u610f\u5473\u7740\u4f20\u8f93\u901a\u9053\u5f88\u5dee\uff0c\u6240\u4ee5\u9700\u8981\u9ad8\u4fe1\u566a\u6bd4\u624d\u80fd\u6210\u529f\u89e3\u7801\uff0c\u6b64\u79cd\u60c5\u51b5\u6bd4\u4f8b\u516c\u5e73\u7684\u65b9\u6cd5\u8868\u73b0\u6700\u597d<\/li>\n  <li>\u53f3\u56fe\u89e3\u7801\u9608\u503c\u5f88\u5c0f\uff0c\u8bf4\u660e\u4f20\u8f93\u901a\u9053\u5f88\u4e0d\u9519\uff0c\u8f83\u4f4e\u7684\u4fe1\u566a\u6bd4\u4e5f\u80fd\u89e3\u7801\uff0c\u6b64\u65f6\u8f6e\u8be2\u8868\u73b0\u6700\u597d<\/li>\n<\/ul>\n\n<p>\u539f\u56e0\u8bf4\u660e\uff1a\u5f53\u4fe1\u9053\u5f88\u597d\u7684\u65f6\u5019\uff0c\u610f\u5473\u7740\u6570\u636e\u5305\u90fd\u901a\u8fc7\u4e86\uff0c\u6240\u4ee5\u6bcf\u4e2a\u6570\u636e\u5305\u7b49\u91cf\u5730\u88ab\u4f7f\u7528\u662f\u6700\u5408\u9002\u7684<\/p>\n\n<p><img src=\"https:\/\/imgur.com\/bfmGGcD.png\" alt=\"Untitled\" \/><\/p>\n\n<p>\u3010\u7ed3\u8bba\u3011\u8c03\u5ea6\u534f\u8bae\u5341\u5206\u91cd\u8981<\/p>\n\n<p>\u5728\u8f83\u4f18\u7684\u9891\u9053\u4e2d\u6d4b\u8bd5\uff0c\u4ee5\u6781\u4f4e\u7684\u4fe1\u566a\u6bd4\uff0c\u53ea\u6bd4\u8f83\u968f\u673a\u8c03\u5ea6\u548c\u8f6e\u8be2\uff0c\u5de6\u8fb9\u4e3a\u635f\u5931\uff0c\u53f3\u56fe\u4e3a\u7cbe\u51c6\u5ea6\uff0c\u57fa\u4e8eMNIST\u624b\u5199\u6570\u636e\u96c6\u5efa\u7acbSVM\u6a21\u578b<\/p>\n\n<ul>\n  <li>\u8f6e\u8be2\u5728\u4e24\u65b9\u9762\u8868\u73b0\u90fd\u660e\u663e\u8f83\u597d<\/li>\n  <li>\u5982\u679c\u4ea4\u6d41\u56de\u5408\u591f\u591a\uff0c\u5219\u4e24\u8005\u5dee\u4e0d\u591a\uff0c\u6b21\u6570\u8f83\u5c11\u7684\u60c5\u51b5\u4e0b\uff0c\u8f6e\u8be2\u6536\u655b\u5feb\u5f88\u591a<\/li>\n<\/ul>\n\n<p><img src=\"https:\/\/imgur.com\/CSFru05.png\" alt=\"Untitled\" \/><\/p>\n\n<h3 id=\"25-\u4f18\u5316\u8c03\u5ea6\">2.5 \u4f18\u5316\u8c03\u5ea6<\/h3>\n\n<ul>\n  <li>\u8bbe\u8ba1\u60f3\u6cd5\uff1a\u56e0\u4e3a\u5728\u7c7b\u4f3c\u4e8e\u4f20\u611f\u5668\u7f51\u7edc\u4e2d\uff0c\u6570\u636e\u7684\u53ca\u65f6\u6027\u548c\u51c6\u786e\u6027\u540c\u6837\u91cd\u8981\uff0c\u6240\u4ee5\u8981\u786e\u4fdd\u8bf8\u5982\u6b64\u7c7b\u60c5\u51b5\uff0c\u7ec8\u7aef\u8bbe\u5907\u7684\u6570\u636e\u5728\u4e00\u4e2a\u5408\u7406\u7684\u65f6\u95f4\u9650\u5236\u5185\u4e0a\u4f20<\/li>\n  <li>\u8bbe\u8ba1\u6307\u6807\uff1a\u4fe1\u606f\u65f6\u4ee3\/\u4fe1\u606f\u7684\u5e74\u9f84(AoI)<\/li>\n  <li>\u8bbe\u8ba1\u601d\u8def\uff1a\u6bcf\u56de\u4ea4\u6d41\uff0c\u5982\u679c\u88ab\u9009\u62e9\uff0c\u5219\u5c06AoI\u964d\u4e3a0\uff0c\u5426\u5219\uff0c\u52a01<\/li>\n<\/ul>\n\n<p><img src=\"https:\/\/imgur.com\/X5SmANb.png\" alt=\"Untitled\" \/><\/p>\n\n<ul>\n  <li><strong>\u6700\u7ec8\u7b97\u6cd5<\/strong>\uff1a\u4e8e\u662f\uff0c\u636e\u6b64\u8bbe\u8ba1\u4e00\u4e2a\u4f7f\u5f97\u5e73\u5747\u4fe1\u606f\u5e74\u9f84\u6700\u5c0f\u5316\u7684\u7b97\u6cd5\uff0c\u79f0\u4e3a<strong>\u65e0\u7ebf\u8f6e\u8be2<\/strong><\/li>\n<\/ul>\n\n<p>\u3010\u5b9e\u9a8c\u5206\u6790\u3011\u5982\u4e0a\u7c7b\u4f3c\u7684\u5b9e\u9a8c\u6761\u4ef6\uff0c\u6bd4\u8f83\u65e0\u7ebf\u8f6e\u8be2\u548c\u6700\u5927\u5305\u7b97\u6cd5\uff08\u6bcf\u4e00\u8f6e\u53d1\u51fa\u5c3d\u53ef\u80fd\u6700\u591a\u7684\u5305\uff09\u7684\u8868\u73b0\uff0c\u53d1\u73b0\u5176\u660e\u663e\u4f18\u4e8e\u8be5\u7b97\u6cd5<\/p>\n\n<p><img src=\"https:\/\/imgur.com\/Dw35124.png\" alt=\"Untitled\" \/><\/p>\n\n<h3 id=\"26-\u8054\u90a6\u5b66\u4e60\u4e2d\u7684\u9690\u79c1\u4fdd\u62a4\">2.6 \u8054\u90a6\u5b66\u4e60\u4e2d\u7684\u9690\u79c1\u4fdd\u62a4<\/h3>\n\n<ul>\n  <li>\u6700\u521d\u56e0\u4e3a\u6570\u636e\u4fdd\u7559\u5728\u7ec8\u7aef\u4e0a\uff0c\u8ba4\u4e3a\u5176\u53ef\u4ee5\u4fdd\u62a4\u9690\u79c1<\/li>\n  <li>\u540e\u6765\u53d1\u73b0\u7528\u6237\u6570\u636e\u53ef\u4ee5\u4ece\u6a21\u578b\u53c2\u6570\u4e2d\u63a8\u65ad\u51fa\u6765<\/li>\n  <li>\u6240\u4ee5\u7528\u6237\u6570\u636e\u7684\u9690\u79c1\u662f\u8054\u90a6\u5b66\u4e60\u7684\u4e00\u4e2a\u95ee\u9898<\/li>\n<\/ul>\n\n<p><img src=\"https:\/\/imgur.com\/la90Qpa.png\" alt=\"Untitled\" \/><\/p>\n\n<p>\u6240\u4ee5\u63d0\u51fa\u4e86\u4e00\u4e9b\u89e3\u51b3\u65b9\u6848\uff0c\u7c7b\u4f3c\u4e8e<strong>\u5dee\u5206\u9690\u79c1<\/strong>\uff0c\u7279\u5f81\u5982\u4e0b<\/p>\n\n<ul>\n  <li>\u5206\u4e3a\u4e24\u4e2a\u6570\u636e\u96c6\uff0c\u4e00\u4e2a\u6709\u79c1\u4eba\u4fe1\u606f\uff0c\u4e00\u4e2a\u6ca1\u6709\u79c1\u4eba\u4fe1\u606f\uff0c\u5176\u4ed6\u90e8\u5206\u76f8\u540c<\/li>\n  <li>\u4e0d\u80fd\u901a\u8fc7\u7edf\u8ba1\u67e5\u8be2\uff08\u9ad8\u6982\u7387\uff09\u533a\u5206<\/li>\n  <li>\u6709\u65f6\u5019\u53ef\u4ee5\u5411\u6570\u636e\u6dfb\u52a0\u566a\u58f0\u6765\u5b9e\u73b0\u5dee\u5f02\u9690\u79c1\uff0c\u4f46\u662f\u4f1a\u5f71\u54cd\u6027\u80fd<\/li>\n  <li>\u9700\u8981\u5728\u9690\u79c1\u548c\u6027\u80fd\u4e4b\u95f4\u8fdb\u884c\u6743\u8861<\/li>\n<\/ul>\n\n<p><img src=\"https:\/\/imgur.com\/5lvYZKk.png\" alt=\"Untitled\" \/><\/p>\n\n<p>\u3010\u5b9e\u9a8c\u8bf4\u660e\u3011\u5bf9MNIST\u6570\u636e\u96c6\u8fdb\u884c\u5377\u79ef\u795e\u7ecf\u7f51\u7edc\u62df\u5408<\/p>\n\n<ul>\n  <li>\u7d2b\u8272\u7ebf\u4e3a\u6ca1\u6709\u6dfb\u52a0\u4efb\u4f55\u566a\u97f3<\/li>\n  <li>$\\epsilon$\u53c2\u6570\u8d8a\u5c0f\uff0c\u5219\u5dee\u5206\u9690\u79c1\u7684\u9690\u79c1\u7a0b\u5ea6\u8d8a\u5927\uff0c\u5176\u6027\u80fd\u4e5f\u5c31\u8d8a\u5dee<\/li>\n<\/ul>\n\n<p><img src=\"https:\/\/imgur.com\/qYVxuuN.png\" alt=\"Untitled\" \/><\/p>\n\n<h2 id=\"3-\u53bb\u4e2d\u5fc3\u5316\u5b66\u4e60\">3. \u53bb\u4e2d\u5fc3\u5316\u5b66\u4e60<\/h2>\n\n<p><strong>\u7279\u6027<\/strong>\uff1a\u6a21\u578b\u5728\u7ec8\u7aef\u7528\u6237\u8bbe\u5907\u4e0a\u6784\u5efa\uff0c\u4f46\u662f\u6240\u6709\u7684\u6a21\u578b\u5171\u4eab\u548c\u534f\u4f5c\u90fd\u662f\u4ee5\u70b9\u5bf9\u70b9\u7684\u65b9\u5f0f\u8fdb\u884c\u7684<\/p>\n\n<h3 id=\"31-\u57fa\u672c\u6a21\u578b\">3.1 \u57fa\u672c\u6a21\u578b<\/h3>\n\n<p>\u3010\u56fe\u5206\u6790\u3011\u4e00\u4e2a\u4e8c\u5206\u56fe\uff0c\u4e00\u90e8\u5206\u4e3a\u8bad\u7ec3\u6837\u672c\uff0c\u53e6\u4e00\u90e8\u5206\u4e3a\u5b66\u4e60\u4f53\uff0c\u56fe\u7247\u8868\u793a\u4e86\u5b66\u4e60\u4f53\u53ef\u4ee5\u8bbf\u95ee\u7684\u8bad\u7ec3\u6570\u636e\u5e93\u3002\u53ef\u4ee5\u770b\u51fa\uff0c\u5e76\u4e0d\u662f\u6bcf\u4e2a\u5b66\u4e60\u4f53\u90fd\u53ef\u4ee5\u8bbf\u95ee\u6bcf\u4e2a\u8bad\u7ec3\u6570\u636e\u5e93<\/p>\n\n<p>\u96c6\u4e2d\u5b66\u4e60\uff1a\u5b66\u4e60\u4f53\u6570\u91cf=1<\/p>\n\n<p>\u53bb\u4e2d\u5fc3\u5316\u5b66\u4e60\uff1a\u5b66\u4e60\u4f53\u6570\u91cf=\u8bad\u7ec3\u6837\u672c\u6570<\/p>\n\n<p><img src=\"https:\/\/imgur.com\/v3zHoWC.png\" alt=\"Untitled\" \/><\/p>\n\n<p>\u4f46\u662f\u672c\u5730\u7684\u5b66\u4e60\u662f<strong>\u5c40\u90e8\u4e0d\u8fde\u8d2f<\/strong>\u7684\uff1a<\/p>\n\n<p>\u5982\u679c\u4e24\u4e2a\u5b66\u4e60\u4f53\u53ef\u8bbf\u95ee\u7684\u8bad\u7ec3\u6570\u636e\u5e93\u6709\u91cd\u5408\u90e8\u5206\uff0c\u4f8b\u5982$L_1$\u548c$L_m$\u90fd\u53ef\u4ee5\u8bbf\u95ee$x_1,y_1$\uff0c\u4f46\u662f\u4ed6\u4eec\u5f97\u5230\u7684$\\hat{f}_1$\u548c$\\hat{f}_m$\u662f\u4e0d\u4e00\u6837\u7684\uff0c\u8fd9\u5c31\u662f\u5c40\u90e8\u4e0d\u8fde\u8d2f<\/p>\n\n<p>\u5982\u679c\u4e00\u4e2a\u6a21\u578b\u4e2d\u6709\u5c40\u90e8\u4e0d\u8fde\u8d2f\uff0c\u90a3\u4e48\u5176\u662f\u6b21\u4f18\u7684<\/p>\n\n<p><img src=\"https:\/\/imgur.com\/fM4Bs5c.png\" alt=\"Untitled\" \/><\/p>\n\n<h3 id=\"32-\u534f\u540c\u7b97\u6cd5\">3.2 \u534f\u540c\u7b97\u6cd5<\/h3>\n\n<p>\u6240\u4ee5\u4e3a\u4e86\u89e3\u51b3\u4e0a\u8ff0\u95ee\u9898\uff0c\u63d0\u51fa\u4e86\u4e00\u4e2a<strong>\u534f\u540c\u7b97\u6cd5<\/strong><\/p>\n\n<p>\u3010\u7b97\u6cd5\u9610\u8ff0\u3011\u5728\u5b66\u4e60\u4f531\u5b8c\u6210\u8bad\u7ec3\u540e\uff0c\u5c06\u5176\u5bf9\u76ee\u6807\u7684\u9884\u4f30\u5199\u56de\u539f\u6570\u636e\u5e93\uff0c\u518d\u8fdb\u5165\u5b66\u4e60\u4f532\u7684\u8bad\u7ec3\uff0c\u8fd9\u6837\uff0c\u5b66\u4e60\u4f531\u7684\u7ecf\u9a8c\u5373\u53ef\u88ab\u8f6c\u79fb\u5230\u5b66\u4e60\u4f532\u3002\u4f9d\u6b21\u8fed\u4ee3\uff0c\u53cd\u590d\u8fd9\u6837\u505a\u4ee5\u540e\uff0c\u7ed3\u679c\u5219\u4f1a\u8fde\u8d2f\u5730\u6536\u655b\u5230\u5168\u5c40\u89e3<\/p>\n\n<p>\u3010\u5f15\u7533\u7ed3\u8bba\u3011\u5206\u5e03\u5f0f\u673a\u5668\u5b66\u4e60\u53ef\u4ee5\u901a\u8fc7\u6d88\u9664\u6b64\u7c7b\u4e0d\u4e00\u81f4\u6765\u83b7\u5f97\u63a5\u8fd1\u6700\u4f18\u7684\u7b97\u6cd5<\/p>\n\n<p><img src=\"https:\/\/imgur.com\/9gkJQl6.png\" alt=\"Untitled\" \/><\/p>\n\n<p>\u3010\u5b9e\u9a8c\u5206\u6790\u3011\u670950\u4e2a\u4f20\u611f\u5668\u6784\u6210\u7684\u5b66\u4e60\u4f53\u548c50\u4e2a\u8bad\u7ec3\u6570\u636e\u5e93\uff0c\u5047\u8bbe\u56de\u5f52\u51fd\u6570f\u662f\u7ebf\u6027\u7684\uff0ci\u548cj\u79f0\u4e3a\u90bb\u5c45\uff0c\u5176\u8ddd\u79bb\u5b9a\u4e49\u4e3ar\uff0c\u4ee3\u8868\u8fde\u901a\u6027\uff0cr\u8d8a\u5927\u5219\u4e8c\u5206\u56fe\u4e2d\u7684\u8fb9\u8d8a\u591a\uff0c\u5373\u6bcf\u4e2a\u5b66\u4e60\u4f53\u53ef\u4ee5\u8bbf\u95ee\u7684\u6570\u636e\u5e93\u8d8a\u591a\u3002\u4f7f\u7528\u7ebf\u6027\u5185\u6838\u8fdb\u884c\u5185\u6838\u5b66\u4e60\uff0c\u7eb5\u8f74\u4ee3\u8868\u5e73\u5747\u5e73\u65b9\u8bef\u5dee<\/p>\n\n<ul>\n  <li>\u56fe\u7684\u6700\u5e95\u90e8\u6709\u4e00\u6761\u76f4\u7ebf\uff0c\u662f\u96c6\u4e2d\u5b66\u4e60\u7684\u8868\u73b0<\/li>\n  <li>\u8f83\u9ad8\u7684\u865a\u7ebf\u4e3a\u6ca1\u6709\u534f\u540c\u7b97\u6cd5\u7684\uff0c\u9700\u8981\u8fde\u901a\u6027\u5f88\u5927\u7684\u60c5\u51b5\u4e0b\u624d\u80fd\u8fbe\u5230\u96c6\u4e2d\u5b66\u4e60\u7684\u8868\u73b0<\/li>\n  <li>\u8f83\u77ee\u7684\u865a\u7ebf\u4e3a\u6709\u534f\u540c\u7b97\u6cd5\u7684\uff0c\u660e\u663e\u5728\u5408\u7406\u7684\u65f6\u95f4\u5185\u548c\u96c6\u4e2d\u5b66\u4e60\u7684\u8868\u73b0\u4e00\u6837\u597d<\/li>\n<\/ul>\n\n<p><img src=\"https:\/\/imgur.com\/9AEThHd.png\" alt=\"Untitled\" \/><\/p>\n\n<h3 id=\"33-\u5206\u5e03\u5f0f\u5f3a\u5316\u5b66\u4e60\">3.3 \u5206\u5e03\u5f0f\u5f3a\u5316\u5b66\u4e60<\/h3>\n\n<ul>\n  <li>\u5f3a\u5316\u5b66\u4e60\uff1a\u7528\u4e8e\u89e3\u51b3\u9a6c\u5c14\u79d1\u592b\u51b3\u7b56\u95ee\u9898\uff0c\u5373\u7528\u4e8e\u5bfb\u627e\u6700\u4f18\u51b3\u7b56\u548c\u63a7\u5236\u7b56\u7565<\/li>\n  <li>Q-learning\uff1a\u7279\u6b8a\u7c7b\u578b\u7684\u5f3a\u5316\u5b66\u4e60\uff0c\u6bcf\u6b21\u5b66\u4e60\u8fed\u4ee3\u4e2d\uff0c\u90fd\u9700\u8981\u66f4\u65b0\u7684Q-function\uff1b\u5229\u7528\u68af\u5ea6\u4e0b\u964d\u7b49\u65b9\u6cd5\u6765\u6536\u655b\u5230\u6700\u4f18<\/li>\n  <li>\u5206\u5e03\u5f0f\u5f3a\u5316\u5b66\u4e60\uff1a\u56e0\u4e3a\u65e0\u6cd5\u5728\u672c\u5730\u8ba1\u7b97\u68af\u5ea6\u4e86\uff0c\u6240\u4ee5\u53ef\u4ee5\u6839\u636e\n    <ol>\n      <li>\u672c\u5730\u90bb\u5c45\u7684\u6570\u636e\u6765\u8ba1\u7b97\u5c40\u90e8\u68af\u5ea6<\/li>\n      <li>\u5728\u90bb\u5c45\u95f4\u5bfb\u627e\u5171\u8bc6\uff0c\u8fbe\u6210\u4e00\u81f4<\/li>\n      <li>\u5728\u8fde\u901a\u6027\u4e0a\u6536\u655b\u5230\u5168\u5c40\u6700\u4f18<\/li>\n    <\/ol>\n  <\/li>\n<\/ul>\n\n<p><img src=\"https:\/\/imgur.com\/aYpzOxc.png\" alt=\"Untitled\" \/><\/p>\n\n<p>\u3010\u6a21\u62df\u3011Q\u51fd\u6570\u6709\u56db\u4e2a\u503c\uff0c\u5c06\u5176\u968f\u673a\u6254\u5230\u4e00\u4e2a\u533a\u57df\u91cc\uff0c\u7136\u540e\u4f7f\u7528\u4e24\u4e2a\u6700\u8fd1\u7684\u90bb\u5c45\u6765\u8fde\u901a\uff0c\u518d\u6765\u7ed8\u5236\u56fe\u3002\u5de6\u56fe\u4e3a\u4e00\u4e2a\u5178\u578b\u7684agent\uff0c\u53f3\u56fe\u4e3a\u5341\u4e2aagent<\/p>\n\n<ul>\n  <li>\u5de6\u56fe\u80fd\u8fbe\u5230\u96c6\u4e2d\uff0c\u6c47\u805a\u5728\u4e00\u8d77\u4e86<\/li>\n  <li>\u53f3\u56fe\u663e\u793a\uff0c\u4e00\u5f00\u59cb\u4ed6\u4eec\u53d8\u5316\u5f88\u5927\uff0c\u4f46\u662f\u7531\u4e8e\u7b97\u6cd5\u7684\u4e00\u81f4\u6027\uff0c\u6700\u540e\u4ed6\u4eec\u4f1a\u6536\u655b\u5230\u4e00\u8d77\uff0c\u8fbe\u6210\u5171\u8bc6<\/li>\n<\/ul>\n\n<p><img src=\"https:\/\/imgur.com\/SXmqNTB.png\" alt=\"Untitled\" \/><\/p>\n\n<h2 id=\"4-conclusion\">4. Conclusion<\/h2>\n\n<p>\u65e0\u7ebf\u7f51\u7edc\u53ef\u4ee5\u6210\u4e3a\u673a\u5668\u5b66\u4e60\u7684\u5e73\u53f0<\/p>\n\n<ul>\n  <li>\u8054\u90a6\u5b66\u4e60\uff1a\u8fb9\u7f18\u8bbe\u5907\u4e0e\u7ec8\u7aef\u7528\u6237\u8bbe\u5907\u4ea4\u4e92\u6765\u5b66\u4e60\u5e38\u7528\u6a21\u578b<\/li>\n  <li>\u53bb\u4e2d\u5fc3\u5316\u5b66\u4e60\uff1a\u7ec8\u7aef\u7528\u6237\u8bbe\u5907\u4e0e\u53e6\u4e00\u53f0\u8bbe\u5907\u4ea4\u4e92\u6765\u534f\u4f5c\u5b66\u4e60\u6a21\u578b\u6216\u52a8\u4f5c<\/li>\n<\/ul>\n\n<p><img src=\"https:\/\/imgur.com\/tzhE5tQ.png\" alt=\"Untitled\" \/><\/p>\n\n<p>\u3010\u4e00\u4e9b\u7814\u7a76\u4e0a\u7684\u95ee\u9898\u3011<\/p>\n\n<ul>\n  <li>\u8bbe\u5907\u9650\u5236<\/li>\n  <li>\u901a\u4fe1\u6548\u7387<\/li>\n  <li>\u8fb9\u7f18\u6570\u636e\u6709\u9650<\/li>\n  <li>\u5b89\u5168\u548c\u9690\u79c1<\/li>\n<\/ul>\n\n<p><img src=\"https:\/\/imgur.com\/xwu3GLq.png\" alt=\"Untitled\" \/><\/p>\n\n<p>\u3010\u76f8\u5173\u8bba\u6587\u3011<\/p>\n\n<p><img src=\"https:\/\/imgur.com\/QNgl4ym.png\" alt=\"Untitled\" \/><\/p>\n\n<h2 id=\"5-\u63d0\u95ee\u4e0e\u56de\u7b54\">5. \u63d0\u95ee\u4e0e\u56de\u7b54<\/h2>\n\n<ul>\n  <li>\n    <p>\u9664\u4e86\u53ef\u80fd\u5f71\u54cd\u6027\u80fd\u7684\u5dee\u5206\u9690\u79c1\uff0c\u5982\u4f55\u89e3\u51b3\u8054\u90a6\u5b66\u4e60\u4e2d\u7684\u9690\u79c1\u95ee\u9898\uff1f<\/p>\n\n    <p>A\uff1a\u2460\u4f7f\u7528\u67d0\u79cd\u540c\u6001\u52a0\u5bc6\u53ef\u4ee5\u5b9e\u73b0\u5728\u4e0d\u89e3\u5bc6\u7684\u60c5\u51b5\u4e0b\u8fdb\u884c\u805a\u5408\uff08\u5bf9\u805a\u5408\u5668\u8fdb\u884c\u4fdd\u5bc6\uff09\u2461\u4f7f\u7528\u533a\u5757\u94fe\u5206\u5e03\u5f0f\u8d26\u672c\uff0c\u7531\u7ec8\u7aef\u7528\u6237\u81ea\u884c\u8fdb\u884c\u805a\u5408\u3002\u4e3b\u8981\u53d6\u51b3\u4e8e\u60f3\u5bf9\u8c01\u8fdb\u884c\u4fdd\u5bc6\uff0c\u9632\u8303\u8c01\u3002<\/p>\n  <\/li>\n  <li>\n    <p>\u4e24\u4e2a\u8fd0\u884c\u5728\u4e0d\u540c\u670d\u52a1\u5668\u7684\u4e0d\u540c\u7684\u8054\u90a6\u5b66\u4e60\u5e94\u7528\u6709\u4e2a\u516c\u5171\u6c60\/\u91cd\u53e0\u6c60\uff1f<\/p>\n\n    <p>A\uff1a\u805a\u5408\u5668\u8981\u505a\u7684\u5de5\u4f5c\u662f\u533a\u5206\u4e0d\u540c\u7684\u5b50\u96c6\uff0c\u4e3a\u5176\u63d0\u4f9b\u76f8\u5e94\u7684\u5e73\u7b49\u670d\u52a1\u3002\u4f46\u662f\u5212\u5206\u4e0d\u540c\u7684\u8fdb\u7a0b\u6bd4\u8f83\u96be\u4ee5\u505a\u5230\u3002<\/p>\n\n    <p>\u4e0d\u80fd\u4e00\u5473\u5730\u8fdb\u884c\u805a\u5408\uff0c\u6bd4\u5982\u6709\u4e9b\u7ec8\u7aef\u662f\u89c6\u9891\u6570\u636e\uff0c\u6709\u4e9b\u662f\u56fe\u7247\u6570\u636e\uff0c\u4e24\u8005\u805a\u5408\u5e76\u6ca1\u6709\u597d\u5904\uff0c\u5e94\u5f53\u8ba9\u5176\u4ee5\u81ea\u9002\u5e94\u7684\u65b9\u5f0f\u8fdb\u884c\u96c6\u7fa4\u805a\u5408<\/p>\n  <\/li>\n  <li>\n    <p>\u5173\u4e8e\u53bb\u4e2d\u5fc3\u5316\u5b66\u4e60<\/p>\n\n    <p>\u53ef\u4ee5\u5c06\u5206\u5e03\u5f0f\u5b66\u4e60\u53d8\u5316\u4e3a\u591a\u5c42\u7ea7\u7684\uff0c\u4e0d\u4e00\u5b9a\u53ea\u662f\u770b\u8d77\u6765\u7684\u70b9\u5bf9\u70b9\u3002\u4f8b\u5982\u8fb9\u7f18\u8ba1\u7b97\u52a0\u5165\u96fe\u8ba1\u7b97\/\u4e00\u4e9b\u63a7\u5236\u5668\u7b49\u7b49\u65b9\u6cd5<\/p>\n  <\/li>\n<\/ul>","author":{"name":"Windy","email":"windy23334@gmail.com"},"category":[{"@attributes":{"term":"blog"}},{"@attributes":{"term":"machinelearning"}}],"summary":{"@attributes":{"type":"html"}}},{"title":"\u5f00\u53d1\u73af\u5883\u642d\u5efa\u5e38\u89c1\u95ee\u9898","link":{"@attributes":{"href":"https:\/\/windy810.github.io\/blog\/2022-05-24-enviroment\/","rel":"alternate","type":"text\/html","title":"\u5f00\u53d1\u73af\u5883\u642d\u5efa\u5e38\u89c1\u95ee\u9898"}},"published":"2022-05-24T00:00:00+00:00","updated":"2022-05-24T00:00:00+00:00","id":"https:\/\/windy810.github.io\/blog\/enviroment","content":"<ul id=\"markdown-toc\">\n  <li><a href=\"#\u4e00wsl2\u4ee3\u7406\u95ee\u9898\" id=\"markdown-toc-\u4e00wsl2\u4ee3\u7406\u95ee\u9898\">\u4e00\u3001WSL2\u4ee3\u7406\u95ee\u9898<\/a><\/li>\n  <li><a href=\"#\u4e8cgithub\u8fde\u63a5\u95ee\u9898\" id=\"markdown-toc-\u4e8cgithub\u8fde\u63a5\u95ee\u9898\">\u4e8c\u3001GitHub\u8fde\u63a5\u95ee\u9898<\/a>    <ul>\n      <li><a href=\"#21-ssh\u8ba4\u8bc1\u5931\u8d25\u95ee\u9898\" id=\"markdown-toc-21-ssh\u8ba4\u8bc1\u5931\u8d25\u95ee\u9898\">2.1 ssh\u8ba4\u8bc1\u5931\u8d25\u95ee\u9898<\/a><\/li>\n      <li><a href=\"#22-kex_exchange_identification-connection-closed-by-remote-host-\u95ee\u9898\" id=\"markdown-toc-22-kex_exchange_identification-connection-closed-by-remote-host-\u95ee\u9898\">2.2 <code class=\"language-plaintext highlighter-rouge\">kex_exchange_identification: Connection closed by remote host<\/code> \u95ee\u9898<\/a><\/li>\n    <\/ul>\n  <\/li>\n  <li><a href=\"#\u4e09github-action\u7684\u5c0f\u7528\u5904\" id=\"markdown-toc-\u4e09github-action\u7684\u5c0f\u7528\u5904\">\u4e09\u3001GitHub Action\u7684\u5c0f\u7528\u5904<\/a><\/li>\n<\/ul>\n\n<h2 id=\"\u4e00wsl2\u4ee3\u7406\u95ee\u9898\">\u4e00\u3001WSL2\u4ee3\u7406\u95ee\u9898<\/h2>\n\n<p>wsl2\u7ecf\u5e38\u8bbf\u95ee\u4e0d\u4e86\u5916\u7f51\uff0c\u96be\u4ee5\u4e0b\u8f7d\u4e00\u4e9b\u6587\u4ef6\uff0c\u6240\u4ee5\u5728\u672c\u673a\u6709clash\u7b49\u4ee3\u7406\u65b9\u5f0f\u7684\u60c5\u51b5\u4e0b\uff0c\u53ef\u4ee5\u5728zshrc\u4e2d\u52a0\u5165\u4ee5\u4e0b\u53c2\u6570\uff1a<\/p>\n\n<div class=\"language-bash highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code><span class=\"nb\">export <\/span><span class=\"nv\">hostip<\/span><span class=\"o\">=<\/span><span class=\"si\">$(<\/span><span class=\"nb\">cat<\/span> \/etc\/resolv.conf |grep <span class=\"nt\">-oP<\/span> <span class=\"s1\">'(?&lt;=nameserver\\ ).*'<\/span><span class=\"si\">)<\/span>\n<span class=\"nb\">export <\/span><span class=\"nv\">https_proxy<\/span><span class=\"o\">=<\/span><span class=\"s2\">\"http:\/\/<\/span><span class=\"k\">${<\/span><span class=\"nv\">hostip<\/span><span class=\"k\">}<\/span><span class=\"s2\">:7890\"<\/span>\n<span class=\"nb\">export <\/span><span class=\"nv\">http_proxy<\/span><span class=\"o\">=<\/span><span class=\"s2\">\"http:\/\/<\/span><span class=\"k\">${<\/span><span class=\"nv\">hostip<\/span><span class=\"k\">}<\/span><span class=\"s2\">:7890\"<\/span>\n<span class=\"nb\">export <\/span>all_proxy <span class=\"o\">=<\/span> <span class=\"s1\">'sock5:\/\/172.30.48.1:7890'<\/span>\n<span class=\"nb\">export <\/span>ALL_PROXY <span class=\"o\">=<\/span> <span class=\"s1\">'sock5:\/\/172.30.48.1:7890'<\/span>\n<\/code><\/pre><\/div><\/div>\n\n<p>\u7136\u540e\u8fd8\u9700\u8981\u5728clash\u5185\u6253\u5f00allow lan<\/p>\n\n<h2 id=\"\u4e8cgithub\u8fde\u63a5\u95ee\u9898\">\u4e8c\u3001GitHub\u8fde\u63a5\u95ee\u9898<\/h2>\n\n<h3 id=\"21-ssh\u8ba4\u8bc1\u5931\u8d25\u95ee\u9898\">2.1 ssh\u8ba4\u8bc1\u5931\u8d25\u95ee\u9898<\/h3>\n\n<ol>\n  <li>\u8bbe\u7f6e\u516c\u79c1\u94a5<\/li>\n  <li>\u5728zshrc\u5185\u5199\u5165\uff1a<\/li>\n<\/ol>\n\n<div class=\"language-bash highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code><span class=\"nb\">eval<\/span> <span class=\"s2\">\"<\/span><span class=\"si\">$(<\/span>ssh-agent<span class=\"si\">)<\/span><span class=\"s2\">\"<\/span>\nssh-add ~\/.ssh\/github\n<\/code><\/pre><\/div><\/div>\n\n<h3 id=\"22-kex_exchange_identification-connection-closed-by-remote-host-\u95ee\u9898\">2.2 <code class=\"language-plaintext highlighter-rouge\">kex_exchange_identification: Connection closed by remote host<\/code> \u95ee\u9898<\/h3>\n\n<ol>\n  <li>\u7ecf\u68c0\u67e5\u53d1\u73b0Github\u5e73\u53f0\u4e0e\u672c\u5730\u7684ssh key\u5747\u914d\u7f6e\u6b63\u5e38<\/li>\n  <li>\u6267\u884c\u547d\u4ee4<code class=\"language-plaintext highlighter-rouge\">ssh -T git@github.com<\/code>\u8fd4\u56de\u4e0a\u8ff0\u7ed3\u679c<\/li>\n  <li>\u539f\u56e0\uff1a\u5728\u9505\u9505\u7684\u6709\u6548\u641c\u7d22\u65b9\u6cd5\u4e0b\uff0c\u53d1\u73b0\u53ef\u80fd\u662f\u4f7f\u7528\u7684\u68af\u5b50\u5c01\u7981\u4e86 Github \u7aef\u53e3 22 \u7684\u8fde\u63a5<\/li>\n  <li>\u89e3\u51b3\u65b9\u6848\uff1a\u4e3a<code class=\"language-plaintext highlighter-rouge\">~\/.ssh\/config<\/code>\u6dfb\u52a0\u4ee5\u4e0b\u4ee3\u7801\uff1a\n    <div class=\"language-plaintext highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code>  Host github.com\n   HostName ssh.github.com\n   User git\n   Port 443\n<\/code><\/pre><\/div>    <\/div>\n  <\/li>\n<\/ol>\n\n<h2 id=\"\u4e09github-action\u7684\u5c0f\u7528\u5904\">\u4e09\u3001GitHub Action\u7684\u5c0f\u7528\u5904<\/h2>\n\n<p>\u6709\u65f6\u5019\u6709\u4e9bjio\u672c\u53ef\u80fd\u60f3\u8ba9\u4ed6\u5b9a\u671f\u6267\u884c\uff0c\u5e76\u7ed9\u81ea\u5df1\u53d1\u9001\u4e00\u4e9b\u63a8\u9001\uff0c\u4f46\u662f\u4e3a\u6b64\u5f00\u4e00\u4e2a\u670d\u52a1\u5668\u6bd4\u8f83\u6d6a\u8d39\uff0c\u6240\u4ee5\u53ef\u4ee5\u7528\u4e00\u624bGitHub\u7684action\u529f\u80fd\uff0c\u5b9e\u73b0\u5b9a\u65f6\/\u89e6\u53d1\u6267\u884c\u4ee3\u7801\u3002<\/p>\n\n<ol>\n  <li>\u5728\u9879\u76ee\u5e95\u4e0b\u5efa\u7acb\u76ee\u5f55<code class=\"language-plaintext highlighter-rouge\">.github\/workflows<\/code><\/li>\n  <li>\u76ee\u5f55\u4e0b\u5efa\u7acb<code class=\"language-plaintext highlighter-rouge\">xxx.yml<\/code>\u6587\u4ef6<\/li>\n  <li>\u7f16\u5199\u89e6\u53d1\u6761\u4ef6\u53ca\u73af\u5883\u7b49\uff0c\u5177\u4f53\u4ee3\u7801\u5982\u4e0b\uff1a<\/li>\n<\/ol>\n\n<div class=\"language-yaml highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code><span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">CI<\/span>\n\n<span class=\"c1\"># Controls when the workflow will run<\/span>\n<span class=\"na\">on<\/span><span class=\"pi\">:<\/span>\n  <span class=\"c1\"># Triggers the workflow on push or pull request events but only for the master branch<\/span>\n  <span class=\"na\">push<\/span><span class=\"pi\">:<\/span>\n    <span class=\"na\">branches<\/span><span class=\"pi\">:<\/span> <span class=\"pi\">[<\/span> <span class=\"nv\">python-dev<\/span> <span class=\"pi\">]<\/span>\n  <span class=\"na\">pull_request<\/span><span class=\"pi\">:<\/span>\n    <span class=\"na\">branches<\/span><span class=\"pi\">:<\/span> <span class=\"pi\">[<\/span> <span class=\"nv\">python-dev<\/span> <span class=\"pi\">]<\/span>\n  <span class=\"na\">schedule<\/span><span class=\"pi\">:<\/span>\n    <span class=\"pi\">-<\/span> <span class=\"na\">cron<\/span><span class=\"pi\">:<\/span> <span class=\"s1\">'<\/span><span class=\"s\">0<\/span><span class=\"nv\"> <\/span><span class=\"s\">5<\/span><span class=\"nv\"> <\/span><span class=\"s\">5,20<\/span><span class=\"nv\"> <\/span><span class=\"s\">*<\/span><span class=\"nv\"> <\/span><span class=\"s\">*'<\/span>\n  <span class=\"c1\"># Allows you to run this workflow manually from the Actions tab<\/span>\n  <span class=\"na\">workflow_dispatch<\/span><span class=\"pi\">:<\/span>\n\n<span class=\"c1\"># A workflow run is made up of one or more jobs that can run sequentially or in parallel<\/span>\n<span class=\"na\">jobs<\/span><span class=\"pi\">:<\/span>\n  <span class=\"c1\"># This workflow contains a single job called \"build\"<\/span>\n  <span class=\"na\">get-proxy<\/span><span class=\"pi\">:<\/span>\n    <span class=\"c1\"># The type of runner that the job will run on<\/span>\n    <span class=\"na\">runs-on<\/span><span class=\"pi\">:<\/span> <span class=\"s\">ubuntu-latest<\/span>\n\n    <span class=\"c1\"># Steps represent a sequence of tasks that will be executed as part of the job<\/span>\n    <span class=\"na\">steps<\/span><span class=\"pi\">:<\/span>\n      <span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s1\">'<\/span><span class=\"s\">Checkout<\/span><span class=\"nv\"> <\/span><span class=\"s\">codes'<\/span> <span class=\"c1\"># \u6b65\u9aa4\u4e00\uff0c\u83b7\u53d6\u4ed3\u5e93\u4ee3\u7801<\/span>\n        <span class=\"na\">uses<\/span><span class=\"pi\">:<\/span> <span class=\"s\">actions\/checkout@v2<\/span>\n      <span class=\"c1\"># Runs a single command using the runners shell<\/span>\n      <span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">Run a one-line script<\/span>\n        <span class=\"na\">run<\/span><span class=\"pi\">:<\/span> <span class=\"s\">python3 .\/jisujioben.py<\/span>\n<\/code><\/pre><\/div><\/div>","author":{"name":"Windy","email":"windy23334@gmail.com"},"category":[{"@attributes":{"term":"blog"}},{"@attributes":{"term":"skill"}}],"summary":{"@attributes":{"type":"html"}}},{"title":"EdgeX Foundry\u8e29\u5751\u65e5\u5e38","link":{"@attributes":{"href":"https:\/\/windy810.github.io\/blog\/2022-04-24-edgexfoundry\/","rel":"alternate","type":"text\/html","title":"EdgeX Foundry\u8e29\u5751\u65e5\u5e38"}},"published":"2022-04-24T00:00:00+00:00","updated":"2022-04-24T00:00:00+00:00","id":"https:\/\/windy810.github.io\/blog\/edgexfoundry","content":"<ul id=\"markdown-toc\">\n  <li><a href=\"#\u4e00docker\u5236\u4f5c\u670d\u52a1\u955c\u50cf\" id=\"markdown-toc-\u4e00docker\u5236\u4f5c\u670d\u52a1\u955c\u50cf\">\u4e00\u3001Docker\u5236\u4f5c\u670d\u52a1\u955c\u50cf<\/a><\/li>\n  <li><a href=\"#\u95ee\u98981\u5361\u5728run-make-build\u65e0\u6cd5\u4e0b\u8f7d\u76f8\u5173\u5305\" id=\"markdown-toc-\u95ee\u98981\u5361\u5728run-make-build\u65e0\u6cd5\u4e0b\u8f7d\u76f8\u5173\u5305\">\u95ee\u98981\uff1a\u5361\u5728RUN make build\uff0c\u65e0\u6cd5\u4e0b\u8f7d\u76f8\u5173\u5305<\/a><\/li>\n<\/ul>\n\n<h2 id=\"\u4e00docker\u5236\u4f5c\u670d\u52a1\u955c\u50cf\">\u4e00\u3001Docker\u5236\u4f5c\u670d\u52a1\u955c\u50cf<\/h2>\n\n<h2 id=\"\u95ee\u98981\u5361\u5728run-make-build\u65e0\u6cd5\u4e0b\u8f7d\u76f8\u5173\u5305\">\u95ee\u98981\uff1a\u5361\u5728RUN make build\uff0c\u65e0\u6cd5\u4e0b\u8f7d\u76f8\u5173\u5305<\/h2>\n\n<p>\u89e3\u51b3\u65b9\u6cd5\uff1a\u5728RUN make build\u547d\u4ee4\u524d\u52a0\u5165<code class=\"language-plaintext highlighter-rouge\">RUN go env -w GOPROXY=https:\/\/goproxy.cn,direct<\/code><\/p>","author":{"name":"Windy","email":"windy23334@gmail.com"},"category":[{"@attributes":{"term":"blog"}},{"@attributes":{"term":"edgecomputing"}}],"summary":{"@attributes":{"type":"html"}}},{"title":"\u300a\u8fb9\u7f18\u8ba1\u7b97\uff1a\u539f\u7406\u3001\u6280\u672f\u4e0e\u5b9e\u8df5\u300b\u9605\u8bfb\u7b14\u8bb0","link":{"@attributes":{"href":"https:\/\/windy810.github.io\/blog\/2022-01-17-readingnote\/","rel":"alternate","type":"text\/html","title":"\u300a\u8fb9\u7f18\u8ba1\u7b97\uff1a\u539f\u7406\u3001\u6280\u672f\u4e0e\u5b9e\u8df5\u300b\u9605\u8bfb\u7b14\u8bb0"}},"published":"2022-01-17T00:00:00+00:00","updated":"2022-01-17T00:00:00+00:00","id":"https:\/\/windy810.github.io\/blog\/readingnote","content":"<ul id=\"markdown-toc\">\n  <li><a href=\"#\u4e00\u8fb9\u7f18\u8ba1\u7b97\u6982\u8ff0\" id=\"markdown-toc-\u4e00\u8fb9\u7f18\u8ba1\u7b97\u6982\u8ff0\">\u4e00\u3001\u8fb9\u7f18\u8ba1\u7b97\u6982\u8ff0<\/a>    <ul>\n      <li><a href=\"#11-\u5386\u53f2\u5fc5\u7136\u6027\" id=\"markdown-toc-11-\u5386\u53f2\u5fc5\u7136\u6027\">1.1 \u5386\u53f2\u5fc5\u7136\u6027<\/a><\/li>\n      <li><a href=\"#14-\u8fb9\u7f18\u8ba1\u7b97\u4e2d\u7684\u5173\u952e\u95ee\u9898\" id=\"markdown-toc-14-\u8fb9\u7f18\u8ba1\u7b97\u4e2d\u7684\u5173\u952e\u95ee\u9898\">1.4 \u8fb9\u7f18\u8ba1\u7b97\u4e2d\u7684\u5173\u952e\u95ee\u9898<\/a><\/li>\n    <\/ul>\n  <\/li>\n<\/ul>\n\n<h2 id=\"\u4e00\u8fb9\u7f18\u8ba1\u7b97\u6982\u8ff0\">\u4e00\u3001\u8fb9\u7f18\u8ba1\u7b97\u6982\u8ff0<\/h2>\n\n<h3 id=\"11-\u5386\u53f2\u5fc5\u7136\u6027\">1.1 \u5386\u53f2\u5fc5\u7136\u6027<\/h3>\n\n<table>\n  <thead>\n    <tr>\n      <th>\u901a\u4fe1\u7684\u53d1\u5c55<\/th>\n      <th>ARPANET<\/th>\n      <th>TCP\/IP<\/th>\n      <th>\u7a84\u5e26\u4e92\u8054\u7f512G\/2.5G<\/th>\n      <th>\u5149\u7ea4\u5bbd\u5e263G\/4G<\/th>\n      <th>5G\/6G<\/th>\n    <\/tr>\n  <\/thead>\n  <tbody>\n    <tr>\n      <td>\u8ba1\u7b97\u670d\u52a1<\/td>\n      <td>\u591a\u7528\u6237\u5206\u65f6\u6279\u5904\u7406<\/td>\n      <td>\u7f51\u7edc\u8bbf\u95ee<\/td>\n      <td>\u7f51\u7edc\u5e94\u7528<\/td>\n      <td>\u4e91\u8ba1\u7b97<\/td>\n      <td>\u8fb9\u7f18\u8ba1\u7b97\/\u96fe\u8ba1\u7b97<\/td>\n    <\/tr>\n    <tr>\n      <td>\u8fd0\u7b97\u786c\u4ef6<\/td>\n      <td>\u5927\u578b\u8ba1\u7b97\u673a<\/td>\n      <td>\u4e2a\u4eba\u8ba1\u7b97\u673a<\/td>\n      <td>\u524d\u7aef\u6280\u672f<\/td>\n      <td>\u667a\u80fd\u624b\u673a<\/td>\n      <td>\u667a\u80fd\u4e07\u7269<\/td>\n    <\/tr>\n  <\/tbody>\n<\/table>\n\n<h3 id=\"14-\u8fb9\u7f18\u8ba1\u7b97\u4e2d\u7684\u5173\u952e\u95ee\u9898\">1.4 \u8fb9\u7f18\u8ba1\u7b97\u4e2d\u7684\u5173\u952e\u95ee\u9898<\/h3>","author":{"name":"Windy","email":"windy23334@gmail.com"},"category":[{"@attributes":{"term":"blog"}},{"@attributes":{"term":"edgecomputing"}}],"summary":{"@attributes":{"type":"html"}}},{"title":"Git\u5e38\u7528\u6307\u4ee4","link":{"@attributes":{"href":"https:\/\/windy810.github.io\/blog\/2022-01-06-git\/","rel":"alternate","type":"text\/html","title":"Git\u5e38\u7528\u6307\u4ee4"}},"published":"2022-01-06T00:00:00+00:00","updated":"2022-01-06T00:00:00+00:00","id":"https:\/\/windy810.github.io\/blog\/git","content":"<ul id=\"markdown-toc\">\n  <li><a href=\"#github\u767b\u5f55\u95ee\u9898\" id=\"markdown-toc-github\u767b\u5f55\u95ee\u9898\">github\u767b\u5f55\u95ee\u9898<\/a><\/li>\n  <li><a href=\"#\u57fa\u672c\u4f7f\u7528\" id=\"markdown-toc-\u57fa\u672c\u4f7f\u7528\">\u57fa\u672c\u4f7f\u7528<\/a><\/li>\n  <li><a href=\"#\u514b\u9686\u53ca\u5206\u652f\u5207\u6362\" id=\"markdown-toc-\u514b\u9686\u53ca\u5206\u652f\u5207\u6362\">\u514b\u9686\u53ca\u5206\u652f\u5207\u6362<\/a><\/li>\n  <li><a href=\"#\u7248\u672c\u95ee\u9898\" id=\"markdown-toc-\u7248\u672c\u95ee\u9898\">\u7248\u672c\u95ee\u9898<\/a><\/li>\n  <li><a href=\"#\u5206\u652f\u540c\u6b65\u95ee\u9898\" id=\"markdown-toc-\u5206\u652f\u540c\u6b65\u95ee\u9898\">\u5206\u652f\u540c\u6b65\u95ee\u9898<\/a><\/li>\n  <li><a href=\"#\u4fee\u8865commit\" id=\"markdown-toc-\u4fee\u8865commit\">\u4fee\u8865commit<\/a><\/li>\n  <li><a href=\"#git-fetch\u548cgit-pull\u7684\u533a\u522b\" id=\"markdown-toc-git-fetch\u548cgit-pull\u7684\u533a\u522b\">git fetch\u548cgit pull\u7684\u533a\u522b<\/a><\/li>\n  <li><a href=\"#\u5de5\u4f5c\u73b0\u573a\" id=\"markdown-toc-\u5de5\u4f5c\u73b0\u573a\">\u5de5\u4f5c\u73b0\u573a<\/a><\/li>\n  <li><a href=\"#\u4fee\u6539commit\u5408\u5e76\u591a\u4f59commit\u7b49\" id=\"markdown-toc-\u4fee\u6539commit\u5408\u5e76\u591a\u4f59commit\u7b49\">\u4fee\u6539commit\uff08\u5408\u5e76\u591a\u4f59commit\u7b49\uff09<\/a><\/li>\n  <li><a href=\"#\u64a4\u9500commit\u7684\u5185\u5bb9\" id=\"markdown-toc-\u64a4\u9500commit\u7684\u5185\u5bb9\">\u64a4\u9500commit\u7684\u5185\u5bb9<\/a><\/li>\n  <li><a href=\"#\u53c2\u8003\u6587\u7ae0\" id=\"markdown-toc-\u53c2\u8003\u6587\u7ae0\">\u53c2\u8003\u6587\u7ae0<\/a><\/li>\n<\/ul>\n\n<h2 id=\"github\u767b\u5f55\u95ee\u9898\">github\u767b\u5f55\u95ee\u9898<\/h2>\n\n<ol>\n  <li>\u751f\u6210\u516c\u79c1\u94a5\uff1a<code class=\"language-plaintext highlighter-rouge\">ssh-keygen -t rsa -C \"\u81ea\u5df1\u7684github\u90ae\u7bb1\"<\/code><\/li>\n  <li>\u63d0\u5347\u7ec8\u7aef\u7b49\u7ea7\uff08\u5047\u8bbe\u662f\u5427\uff09\uff1a<code class=\"language-plaintext highlighter-rouge\">ssh-agent zsh<\/code><\/li>\n  <li>\u6dfb\u52a0\u79c1\u94a5\u4f4d\u7f6e\uff1a<code class=\"language-plaintext highlighter-rouge\">ssh-add ~\/.ssh\/github<\/code><\/li>\n  <li>\u6d4b\u8bd5\u8fde\u63a5\uff1a<code class=\"language-plaintext highlighter-rouge\">ssh -T git@github.com<\/code><\/li>\n<\/ol>\n\n<h2 id=\"\u57fa\u672c\u4f7f\u7528\">\u57fa\u672c\u4f7f\u7528<\/h2>\n\n<ol>\n  <li>\u65b0\u5efarepo<\/li>\n  <li>\u8fdb\u5165\u9879\u76ee\u76ee\u5f55\u518d\u521d\u59cb\u5316\uff1a<code class=\"language-plaintext highlighter-rouge\">git init<\/code><\/li>\n  <li>\u8fde\u63a5\u8fdc\u7a0b\u4ed3\u5e93\uff1a<code class=\"language-plaintext highlighter-rouge\">git remote add origin xxxxx@xxxx.git<\/code><\/li>\n  <li>\u521d\u6b21\u4e0a\u4f20\uff1a<code class=\"language-plaintext highlighter-rouge\">git push -u origin master<\/code>\uff08\u9700\u8981-u\u53c2\u6570\uff0c\u56e0\u4e3a\u8fdc\u7a0b\u6ca1\u6709\u5206\u652f\uff09<\/li>\n  <li>\u6dfb\u52a0\u4fee\u6539\u7684\u6587\u4ef6\u5230\u7f13\u51b2\u533a\uff1a<code class=\"language-plaintext highlighter-rouge\">git add .<\/code><\/li>\n  <li>\u4e0a\u4f20commit\uff1a<code class=\"language-plaintext highlighter-rouge\">git commit -m \"\u672c\u6b21\u4fee\u6539\u7684\u8bf4\u660e\"<\/code><\/li>\n  <li>\u67e5\u770b\u5386\u53f2\u65e5\u5fd7\uff1a<code class=\"language-plaintext highlighter-rouge\">git log<\/code><\/li>\n<\/ol>\n\n<h2 id=\"\u514b\u9686\u53ca\u5206\u652f\u5207\u6362\">\u514b\u9686\u53ca\u5206\u652f\u5207\u6362<\/h2>\n\n<ol>\n  <li><code class=\"language-plaintext highlighter-rouge\">git clone https:\/\/xxx.git \/\/\u514b\u9686\u9879\u76ee\uff08\u9ed8\u8ba4master\u5206\u652f\uff09<\/code><\/li>\n  <li>\u8fdb\u5165\u9879\u76ee\u76ee\u5f55\uff1a<code class=\"language-plaintext highlighter-rouge\">cd xxx<\/code><\/li>\n  <li>\u5217\u51fa\u6240\u6709\u5206\u652f\uff1a<code class=\"language-plaintext highlighter-rouge\">git branch -a<\/code><\/li>\n  <li>\u5728\u672c\u5730\u65b0\u5efa\u5206\u652f\u5e76\u4e0e\u8fdc\u7a0b\u4ed3\u5e93\u7684\u5206\u652f\u8fdb\u884c\u5173\u8054\uff1a<code class=\"language-plaintext highlighter-rouge\">git checkout -b dev origin\/dev<\/code><\/li>\n<\/ol>\n\n<h2 id=\"\u7248\u672c\u95ee\u9898\">\u7248\u672c\u95ee\u9898<\/h2>\n\n<ul>\n  <li>\u5f3a\u5236\u56de\u9000\u81f3\u4e4b\u524d\u7684\u7248\u672c\u2013hard\uff1a\n    <ul>\n      <li><code class=\"language-plaintext highlighter-rouge\">git reset HEAD^ --hard<\/code>\uff08\u56de\u9000\u51e0\u4e2a\u7248\u672c\u52a0\u51e0\u4e2a\u5c0f\u5c16\u5c16^\uff09<\/li>\n      <li><code class=\"language-plaintext highlighter-rouge\">git reset --hard &lt;commitHash&gt;<\/code>\uff08\u53ef\u4ee5\u4e0d\u5199\u5168\uff09<\/li>\n      <li><code class=\"language-plaintext highlighter-rouge\">git reset HEAD~(num) --hard<\/code><\/li>\n    <\/ul>\n  <\/li>\n  <li>\u9664\u56de\u6eaf\u8282\u70b9\u5916\uff0c\u8fd8\u4f1a\u4fdd\u7559\u8282\u70b9\u7684\u4fee\u6539\u5185\u5bb9\u2013soft\uff1a\u6b64\u65f6\u7684HEAD\u56de\u5230\u8be5\u8282\u70b9\uff0c\u8be5\u8282\u70b9\u4e4b\u540e\u7684\u4fee\u6539\u5185\u5bb9\u90fd\u56de\u5230\u4e86\u6682\u5b58\u533a<\/li>\n<\/ul>\n\n<h2 id=\"\u5206\u652f\u540c\u6b65\u95ee\u9898\">\u5206\u652f\u540c\u6b65\u95ee\u9898<\/h2>\n\n<ul>\n  <li>\u672c\u5730\u5206\u652f\u4e0e\u8fdc\u7a0b\u5206\u652f\u540c\u6b65\uff1a\n    <ol>\n      <li>\u5efa\u7acb\u672c\u5206\u652f\u7684\u5907\u4efd\uff1a<code class=\"language-plaintext highlighter-rouge\">git branch -branchbak<\/code><\/li>\n      <li>\u53d6\u56de\u8fdc\u7a0b\u7684commit\uff1a<code class=\"language-plaintext highlighter-rouge\">git fetch origin branch<\/code><\/li>\n      <li>\u672c\u5730\u53d8\u57fa\uff1a<code class=\"language-plaintext highlighter-rouge\">git rebase origin\/branch<\/code>\n        <ul>\n          <li>\u89e3\u51b3\u51b2\u7a81<\/li>\n          <li><code class=\"language-plaintext highlighter-rouge\">git add .<\/code><\/li>\n          <li><code class=\"language-plaintext highlighter-rouge\">git rebase --contine  \/\/\u7ee7\u7eedrebase\u8fc7\u7a0b<\/code><\/li>\n        <\/ul>\n      <\/li>\n    <\/ol>\n  <\/li>\n  <li>\u5220\u9664\u8fdc\u7a0b\u4e0d\u5b58\u5728\u7684\u672c\u5730\u5206\u652f\uff1a<code class=\"language-plaintext highlighter-rouge\">git fetch -p<\/code><\/li>\n  <li>\u63a8\u9001\u672c\u5730\u5206\u652f\u5230\u8fdc\u7aef\uff1a<code class=\"language-plaintext highlighter-rouge\">git push &lt;\u8fdc\u7a0b\u4e3b\u673a\u540d&gt; &lt;\u672c\u5730\u5206\u652f\u540d&gt;:&lt;\u8fdc\u7a0b\u5206\u652f\u540d&gt;<\/code><\/li>\n  <li>\u5efa\u7acb\u8fdc\u7a0b\u5206\u652f\uff1a\n    <ol>\n      <li>\u5efa\u7acb\u5206\u652f\uff1a<code class=\"language-plaintext highlighter-rouge\">git checkout -b new-branch<\/code><\/li>\n      <li>\u63a8\u9001\u7ed9\u8fdc\u7a0b\uff1a<code class=\"language-plaintext highlighter-rouge\">git push --set-upstream origin new-branch<\/code><\/li>\n    <\/ol>\n  <\/li>\n  <li>\u5f3a\u5236\u5c06\u8fdc\u7a0b\u540c\u6b65\u7ed9\u672c\u5730\uff1a<code class=\"language-plaintext highlighter-rouge\">git reset --hard origin\/branch<\/code><\/li>\n<\/ul>\n\n<h2 id=\"\u4fee\u8865commit\">\u4fee\u8865commit<\/h2>\n\n<ul>\n  <li>\u4fee\u8865\u4e0a\u6b21commit\uff0c\u4f46\u662f\u4e0d\u60f3\u5f62\u6210\u65b0\u7684commit\uff1a\n    <ol>\n      <li>\u6b63\u5e38\u4fdd\u5b58\u66f4\u6539<\/li>\n      <li>\u63d0\u4ea4commit\uff1a<code class=\"language-plaintext highlighter-rouge\">git commit --amend --no-edit<\/code><\/li>\n      <li>\u63a8\u9001\u5230\u8fdc\u7a0b\uff1a<code class=\"language-plaintext highlighter-rouge\">git push -f<\/code><\/li>\n    <\/ol>\n  <\/li>\n  <li>\u5c06\u67d0\u6b21commit-id\u8f6c\u79fb\u8fc7\u6765\uff1a<code class=\"language-plaintext highlighter-rouge\">git cherry-pick &lt;commit-id&gt;<\/code><\/li>\n<\/ul>\n\n<h2 id=\"git-fetch\u548cgit-pull\u7684\u533a\u522b\">git fetch\u548cgit pull\u7684\u533a\u522b<\/h2>\n\n<ul>\n  <li>git fetch\u662f\u4ece\u8fdc\u7a0b\u83b7\u53d6\u6700\u65b0\u7248\u672c\u5230\u672c\u5730\uff0c\u4f46\u4e0d\u4f1a\u81ea\u52a8merge<\/li>\n  <li>git pull\u5219\u662f\u4f1a\u83b7\u53d6\u6240\u6709\u8fdc\u7a0b\u7d22\u5f15\u5e76\u5408\u5e76\u5230\u672c\u5730\u5206\u652f\u4e2d\u6765<\/li>\n<\/ul>\n\n<h2 id=\"\u5de5\u4f5c\u73b0\u573a\">\u5de5\u4f5c\u73b0\u573a<\/h2>\n\n<ul>\n  <li>\u4fdd\u5b58\u5de5\u4f5c\u73b0\u573a\uff1a<code class=\"language-plaintext highlighter-rouge\">git stash (save \"xxx\")<\/code>\uff08\u53ef\u4ee5\u591a\u6b21\u4f7f\u7528\uff0csave\u7528\u4e8e\u6dfb\u52a0\u5907\u6ce8\uff09<\/li>\n  <li>\u67e5\u770b\u4fdd\u5b58\u7684\u5217\u8868\uff1a<code class=\"language-plaintext highlighter-rouge\">git stash list<\/code><\/li>\n  <li>\u6062\u590d\u5de5\u4f5c\u73b0\u573a\uff1a<code class=\"language-plaintext highlighter-rouge\">git stash apply<\/code>\uff1b\u5b58\u5728\u591a\u6761\u8bb0\u5f55\u65f6\uff1a<code class=\"language-plaintext highlighter-rouge\">git stash apply stash@{1}<\/code><\/li>\n  <li>\u5220\u9664\u5df2\u4fdd\u5b58\u7684\u73b0\u573a\uff1a<code class=\"language-plaintext highlighter-rouge\">git stash drop<\/code><\/li>\n<\/ul>\n\n<h2 id=\"\u4fee\u6539commit\u5408\u5e76\u591a\u4f59commit\u7b49\">\u4fee\u6539commit\uff08\u5408\u5e76\u591a\u4f59commit\u7b49\uff09<\/h2>\n\n<ul>\n  <li>git rebase\u547d\u4ee4\uff1a<code class=\"language-plaintext highlighter-rouge\">git rebase -i [startpoint] [endpoint]<\/code><\/li>\n  <li>\u5408\u5e76\u4ece\u5f53\u524dhead\u523015f745b(commit id)\uff1a<code class=\"language-plaintext highlighter-rouge\">git rebase -i 15f745b<\/code><\/li>\n  <li>\u5408\u5e76\u6700\u8fd1\u7684\u4e24\u6b21\u63d0\u4ea4\uff1a<code class=\"language-plaintext highlighter-rouge\">\u5408\u5e76\u6700\u8fd1\u7684\u4e24\u6b21\u63d0\u4ea4<\/code><\/li>\n<\/ul>\n\n<p>\u8fdb\u5165\u7f16\u8f91\u5668\u540e\u4f1a\u51fa\u73b0\u4ee5\u4e0b\u63d0\u793a\uff1a<\/p>\n\n<ul>\n  <li>pick\uff1a\u4fdd\u7559\u8be5commit\uff08\u7f29\u5199:p\uff09<\/li>\n  <li>reword\uff1a\u4fdd\u7559\u8be5commit\uff0c\u4f46\u6211\u9700\u8981\u4fee\u6539\u8be5commit\u7684\u6ce8\u91ca\uff08\u7f29\u5199:r\uff09<\/li>\n  <li>edit\uff1a\u4fdd\u7559\u8be5commit, \u4f46\u6211\u8981\u505c\u4e0b\u6765\u4fee\u6539\u8be5\u63d0\u4ea4(\u4e0d\u4ec5\u4ec5\u4fee\u6539\u6ce8\u91ca)\uff08\u7f29\u5199:e\uff09<\/li>\n  <li>squash\uff1a\u5c06\u8be5commit\u548c\u524d\u4e00\u4e2acommit\u5408\u5e76\uff08\u7f29\u5199:s\uff09<\/li>\n  <li>fixup\uff1a\u5c06\u8be5commit\u548c\u524d\u4e00\u4e2acommit\u5408\u5e76\uff0c\u4f46\u6211\u4e0d\u8981\u4fdd\u7559\u8be5\u63d0\u4ea4\u7684\u6ce8\u91ca\u4fe1\u606f\uff08\u7f29\u5199:f\uff09<\/li>\n  <li>exec\uff1a\u6267\u884cshell\u547d\u4ee4\uff08\u7f29\u5199:x\uff09<\/li>\n  <li>drop\uff1a\u6211\u8981\u4e22\u5f03\u8be5commit\uff08\u7f29\u5199:d\uff09<\/li>\n<\/ul>\n\n<h2 id=\"\u64a4\u9500commit\u7684\u5185\u5bb9\">\u64a4\u9500commit\u7684\u5185\u5bb9<\/h2>\n\n<ul>\n  <li>\u5c06\u73b0\u6709\u7684\u63d0\u4ea4\u8fd8\u539f\uff0c\u6062\u590d\u63d0\u4ea4\u7684\u5185\u5bb9\uff0c\u5e76\u751f\u6210\u4e00\u6761\u8fd8\u539f\u8bb0\u5f55:<code class=\"language-plaintext highlighter-rouge\">git revert &lt;commitHash&gt;<\/code><\/li>\n  <li>revert \u5408\u5e76\u63d0\u4ea4\uff1a<code class=\"language-plaintext highlighter-rouge\">git revert -m 1 &lt;commitHash&gt;<\/code><\/li>\n<\/ul>\n\n<h2 id=\"\u53c2\u8003\u6587\u7ae0\">\u53c2\u8003\u6587\u7ae0<\/h2>\n\n<p><a href=\"https:\/\/github.com\/zyazhb\/Tutorial\/blob\/master\/Git.md\">Git<\/a><br \/>\n<a href=\"https:\/\/mp.weixin.qq.com\/s\/UwdJJHkH7DQM47VfT82lyw\">Git \u4e0d\u8981\u53ea\u4f1a pull \u548c push\uff0c\u8bd5\u8bd5\u8fd9 5 \u6761\u63d0\u9ad8\u6548\u7387\u7684\u547d\u4ee4<\/a><\/p>","author":{"name":"Windy","email":"windy23334@gmail.com"},"category":[{"@attributes":{"term":"blog"}},{"@attributes":{"term":"skill"}}],"summary":{"@attributes":{"type":"html"}}},{"title":"2021\u5e74\u7ec8\u603b\u7ed3","link":{"@attributes":{"href":"https:\/\/windy810.github.io\/blog\/2022-01-06-2021summary\/","rel":"alternate","type":"text\/html","title":"2021\u5e74\u7ec8\u603b\u7ed3"}},"published":"2022-01-06T00:00:00+00:00","updated":"2022-01-06T00:00:00+00:00","id":"https:\/\/windy810.github.io\/blog\/2021summary","content":"<ul id=\"markdown-toc\">\n  <li><a href=\"#\u8fc7\u53bb\u4e00\u5e74\u5e72\u4e86\u4ec0\u4e48\" id=\"markdown-toc-\u8fc7\u53bb\u4e00\u5e74\u5e72\u4e86\u4ec0\u4e48\">\u8fc7\u53bb\u4e00\u5e74\u5e72\u4e86\u4ec0\u4e48<\/a><\/li>\n  <li><a href=\"#\u4e00\u4e9b\u9057\u61be\" id=\"markdown-toc-\u4e00\u4e9b\u9057\u61be\">\u4e00\u4e9b\u9057\u61be<\/a><\/li>\n  <li><a href=\"#\u4e00\u70b9\u70b9\u672a\u6765\u7684\u5c0f\u76ee\u6807\" id=\"markdown-toc-\u4e00\u70b9\u70b9\u672a\u6765\u7684\u5c0f\u76ee\u6807\">\u4e00\u70b9\u70b9\u672a\u6765\u7684\u5c0f\u76ee\u6807<\/a><\/li>\n<\/ul>\n\n<h2 id=\"\u8fc7\u53bb\u4e00\u5e74\u5e72\u4e86\u4ec0\u4e48\">\u8fc7\u53bb\u4e00\u5e74\u5e72\u4e86\u4ec0\u4e48<\/h2>\n\n<ul class=\"task-list\">\n  <li class=\"task-list-item\"><input type=\"checkbox\" class=\"task-list-item-checkbox\" disabled=\"disabled\" checked=\"checked\" \/>\u62ff\u5230\u4e00\u6b21\u7ade\u8d5b\u7684\u56fd\u5956<\/li>\n  <li class=\"task-list-item\"><input type=\"checkbox\" class=\"task-list-item-checkbox\" disabled=\"disabled\" checked=\"checked\" \/>\u4fdd\u7814\u6210\u529f<\/li>\n  <li class=\"task-list-item\"><input type=\"checkbox\" class=\"task-list-item-checkbox\" disabled=\"disabled\" checked=\"checked\" \/>\u4fdd\u6301\u4f53\u578b<\/li>\n  <li class=\"task-list-item\"><input type=\"checkbox\" class=\"task-list-item-checkbox\" disabled=\"disabled\" checked=\"checked\" \/>\u81ea\u5df1\u5e26\u961f\u505a\u4e86\u4e00\u4e2a\u9879\u76ee\uff0c\u7533\u8bf7\u4e86\u4e13\u5229<\/li>\n  <li class=\"task-list-item\"><input type=\"checkbox\" class=\"task-list-item-checkbox\" disabled=\"disabled\" checked=\"checked\" \/>\u53bb\u4e86\u5317\u4eacx2<\/li>\n  <li class=\"task-list-item\"><input type=\"checkbox\" class=\"task-list-item-checkbox\" disabled=\"disabled\" checked=\"checked\" \/>\u6536\u83b7\u4e86ggj\u9001\u7684\u4fdd\u7814\u793c\u7269VR<\/li>\n  <li class=\"task-list-item\"><input type=\"checkbox\" class=\"task-list-item-checkbox\" disabled=\"disabled\" checked=\"checked\" \/>\u5ea6\u8fc7\u6211\u4eec\u7684999\u30011000\u30011024\u7eaa\u5ff5\u65e5<\/li>\n  <li class=\"task-list-item\"><input type=\"checkbox\" class=\"task-list-item-checkbox\" disabled=\"disabled\" checked=\"checked\" \/>\u638c\u63e1\u4e86go\u7684\u57fa\u672c\u8bed\u6cd5\u548c\u4e00\u4e9b\u7279\u6027\uff0c\u5b8c\u6210\u4e86sololearn\u7684\u8bfe\u7a0b<\/li>\n  <li class=\"task-list-item\"><input type=\"checkbox\" class=\"task-list-item-checkbox\" disabled=\"disabled\" checked=\"checked\" \/>\u65e0\u5fe7\u65e0\u8651\u5730\u8fc7\u4e86\u51e0\u4e2a\u6708<\/li>\n  <li class=\"task-list-item\"><input type=\"checkbox\" class=\"task-list-item-checkbox\" disabled=\"disabled\" checked=\"checked\" \/>\u8fd8\u662f\u6362\u4e86\u4e00\u4e2a\u706b\u9f99\u624b\u673a\u545c\u545c<\/li>\n<\/ul>\n\n<h2 id=\"\u4e00\u4e9b\u9057\u61be\">\u4e00\u4e9b\u9057\u61be<\/h2>\n\n<ul class=\"task-list\">\n  <li class=\"task-list-item\"><input type=\"checkbox\" class=\"task-list-item-checkbox\" disabled=\"disabled\" \/>\u81ea\u5df1\u7684\u9879\u76ee\u56fd\u8d5b\u966a\u8dd1\u60f9\ud83d\ude2d<\/li>\n  <li class=\"task-list-item\"><input type=\"checkbox\" class=\"task-list-item-checkbox\" disabled=\"disabled\" \/>\u6700\u7ec8\u6ca1\u80fd\u4fdd\u53bbiie<\/li>\n  <li class=\"task-list-item\"><input type=\"checkbox\" class=\"task-list-item-checkbox\" disabled=\"disabled\" \/>\u6ca1\u6709\u7ec3\u51fa\u66f4\u597d\u7684\u8eab\u6750<\/li>\n  <li class=\"task-list-item\"><input type=\"checkbox\" class=\"task-list-item-checkbox\" disabled=\"disabled\" \/>\u6ca1\u6709\u771f\u6b63\u719f\u7ec3\u638c\u63e1\u4e00\u95e8\u4e13\u4e1a\u6280\u672f\uff0c\u90fd\u662f\u534a\u540a\u5b50<\/li>\n  <li class=\"task-list-item\"><input type=\"checkbox\" class=\"task-list-item-checkbox\" disabled=\"disabled\" \/>\u8d5b\u5b63\u672b\u73ed\u8f66\u4e5f\u6ca1\u80fd\u4e0a\u738b\u8005<\/li>\n  <li class=\"task-list-item\"><input type=\"checkbox\" class=\"task-list-item-checkbox\" disabled=\"disabled\" \/>\u6ca1\u6709\u6536\u83b7\u4e00\u4e2a\u5bb6\u4eba\u4e0e\u4e2a\u4eba\u751f\u6d3b\u7684\u5e73\u8861<\/li>\n  <li class=\"task-list-item\"><input type=\"checkbox\" class=\"task-list-item-checkbox\" disabled=\"disabled\" \/>\u6ca1\u6709\u8d5a\u5230\u9760\u6280\u672f\u7684\u7b2c\u4e00\u6876\u91d1<\/li>\n<\/ul>\n\n<h2 id=\"\u4e00\u70b9\u70b9\u672a\u6765\u7684\u5c0f\u76ee\u6807\">\u4e00\u70b9\u70b9\u672a\u6765\u7684\u5c0f\u76ee\u6807<\/h2>\n\n<ol>\n  <li>\u5e0c\u671b\u81ea\u5df1\u80fd\u5728\u7814\u7a76\u751f\u7684\u65b9\u5411\u4e0a\u6c89\u4e0b\u5fc3\u6765\u5b66\u66f4\u591a\u7684\u4e1c\u897f\uff1a\n    <ul class=\"task-list\">\n      <li class=\"task-list-item\"><input type=\"checkbox\" class=\"task-list-item-checkbox\" disabled=\"disabled\" \/>go\u7f16\u5199\u901a\u4fe1\u7a0b\u5e8f<\/li>\n      <li class=\"task-list-item\"><input type=\"checkbox\" class=\"task-list-item-checkbox\" disabled=\"disabled\" \/>\u638c\u63e1\u57fa\u7840\u7684AI\u7b97\u6cd5\uff0c\u8865\u8db3\u6570\u5b66\u57fa\u7840<\/li>\n      <li class=\"task-list-item\"><input type=\"checkbox\" class=\"task-list-item-checkbox\" disabled=\"disabled\" \/>\u719f\u7ec3\u638c\u63e1docker\u7684\u7528\u6cd5\uff0cdockerfile\u7684\u7f16\u5199\u7b49<\/li>\n      <li class=\"task-list-item\"><input type=\"checkbox\" class=\"task-list-item-checkbox\" disabled=\"disabled\" \/>\u5b8c\u6210\u73b0\u6709\u7684\u6bd5\u4e1a\u8bbe\u8ba1\u9879\u76ee<\/li>\n      <li class=\"task-list-item\"><input type=\"checkbox\" class=\"task-list-item-checkbox\" disabled=\"disabled\" \/>\u5e72\u51fa\u70b9\u5c0f\u6210\u679c<\/li>\n    <\/ul>\n  <\/li>\n  <li>\u5e0c\u671b\u80fd\u6512\u4e00\u70b9\u70b9\u5c0f\u94b1\u94b1\uff0c\u5b9e\u73b0\u7535\u5b50\u4ea7\u54c1\u81ea\u7531\n    <ul class=\"task-list\">\n      <li class=\"task-list-item\"><input type=\"checkbox\" class=\"task-list-item-checkbox\" disabled=\"disabled\" \/>\u628a\u56fa\u6001\u6574\u5927\u4e00\u70b9\/\u6362\u4e2a\u66f4\u597d\u7684\u7535\u8111\u54c8\u54c8\u54c8\u54c8\u54c8<\/li>\n      <li class=\"task-list-item\"><input type=\"checkbox\" class=\"task-list-item-checkbox\" disabled=\"disabled\" \/>\u6574\u4e2a\u597d\u7528\u8f7b\u8584\u7684\u5c0f\u5e73\u677f\uff08\u8fa3\ud83d\udc24\u82cf\u83f2\u5a46\uff01\uff09<\/li>\n      <li class=\"task-list-item\"><input type=\"checkbox\" class=\"task-list-item-checkbox\" disabled=\"disabled\" \/>\u6574\u4e2a\u5c0f\u76f8\u673a\uff0c\u7c97\u95e8\u73a9\u53ef\u4ee5\u62cd\u597d\u591a\u7682\u7247<\/li>\n    <\/ul>\n  <\/li>\n  <li>\u5e0c\u671b\u6709\u4e00\u6b21\u5f00\u5fc3\u7684\u6bd5\u4e1a\u65c5\u884c\uff0c\u6709ggj\u6700\u597d\uff01<\/li>\n  <li>\u597d\u597d\u8fc7\u5b8c\u5feb\u843d\u7684\u5927\u56db\u4e0b\uff01<\/li>\n<\/ol>","author":{"name":"Windy","email":"windy23334@gmail.com"},"category":[{"@attributes":{"term":"blog"}},{"@attributes":{"term":"summary"}}],"summary":{"@attributes":{"type":"html"}}},{"title":"\u6570\u636e\u7ed3\u6784\u603b\u7ed3\uff08\u4e00\uff09\u903b\u8f91\u7ed3\u6784","link":{"@attributes":{"href":"https:\/\/windy810.github.io\/blog\/2021-08-16-LogicalStructure\/","rel":"alternate","type":"text\/html","title":"\u6570\u636e\u7ed3\u6784\u603b\u7ed3\uff08\u4e00\uff09\u903b\u8f91\u7ed3\u6784"}},"published":"2021-08-16T00:00:00+00:00","updated":"2021-08-16T00:00:00+00:00","id":"https:\/\/windy810.github.io\/blog\/LogicalStructure","content":"<ul id=\"markdown-toc\">\n  <li><a href=\"#11-\u7ebf\u6027\u7ed3\u6784\" id=\"markdown-toc-11-\u7ebf\u6027\u7ed3\u6784\">1.1 \u7ebf\u6027\u7ed3\u6784<\/a>    <ul>\n      <li><a href=\"#111-\u987a\u5e8f\u8868\" id=\"markdown-toc-111-\u987a\u5e8f\u8868\">1.1.1 \u987a\u5e8f\u8868<\/a><\/li>\n      <li><a href=\"#112-\u5355\u5411\u94fe\u8868\" id=\"markdown-toc-112-\u5355\u5411\u94fe\u8868\">1.1.2 \u5355\u5411\u94fe\u8868<\/a><\/li>\n      <li><a href=\"#113-\u53cc\u5411\u94fe\u8868\" id=\"markdown-toc-113-\u53cc\u5411\u94fe\u8868\">1.1.3 \u53cc\u5411\u94fe\u8868<\/a><\/li>\n      <li><a href=\"#114-\u5faa\u73af\u94fe\u8868\" id=\"markdown-toc-114-\u5faa\u73af\u94fe\u8868\">1.1.4 \u5faa\u73af\u94fe\u8868<\/a><\/li>\n      <li><a href=\"#115-\u987a\u5e8f\u8868\u4e0e\u94fe\u8868\" id=\"markdown-toc-115-\u987a\u5e8f\u8868\u4e0e\u94fe\u8868\">1.1.5 \u987a\u5e8f\u8868\u4e0e\u94fe\u8868<\/a><\/li>\n    <\/ul>\n  <\/li>\n  <li><a href=\"#12-\u6808\" id=\"markdown-toc-12-\u6808\">1.2 \u6808<\/a>    <ul>\n      <li><a href=\"#121-\u987a\u5e8f\u6808\" id=\"markdown-toc-121-\u987a\u5e8f\u6808\">1.2.1 \u987a\u5e8f\u6808<\/a><\/li>\n      <li><a href=\"#122-\u94fe\u6808\" id=\"markdown-toc-122-\u94fe\u6808\">1.2.2 \u94fe\u6808<\/a><\/li>\n    <\/ul>\n  <\/li>\n  <li><a href=\"#13-\u961f\u5217\" id=\"markdown-toc-13-\u961f\u5217\">1.3 \u961f\u5217<\/a><\/li>\n  <li><a href=\"#14-\u4e32\" id=\"markdown-toc-14-\u4e32\">1.4 \u4e32<\/a><\/li>\n  <li><a href=\"#\u6811\" id=\"markdown-toc-\u6811\">\u6811<\/a>    <ul>\n      <li><a href=\"#21-\u4e8c\u53c9\u6811\" id=\"markdown-toc-21-\u4e8c\u53c9\u6811\">2.1 \u4e8c\u53c9\u6811<\/a><\/li>\n    <\/ul>\n  <\/li>\n<\/ul>\n\n<h2 id=\"11-\u7ebf\u6027\u7ed3\u6784\">1.1 \u7ebf\u6027\u7ed3\u6784<\/h2>\n\n<ol>\n  <li>\u903b\u8f91\u7ed3\u6784<\/li>\n  <li>\u8fd0\u7b97<\/li>\n<\/ol>\n\n<h3 id=\"111-\u987a\u5e8f\u8868\">1.1.1 \u987a\u5e8f\u8868<\/h3>\n\n<ol>\n  <li>\u7279\u70b9\uff1a\u5730\u5740\u8fde\u7eed\uff1b\u65b9\u4fbf\u8bfb\u53d6\uff1b\u63d2\u5165\u4e0e\u5220\u9664\u9700\u8981\u5927\u91cf\u79fb\u52a8\u5143\u7d20<\/li>\n  <li>\u7ed3\u6784\u5b9a\u4e49\uff1a<\/li>\n<\/ol>\n\n<div class=\"language-cpp highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code><span class=\"cp\">#define MAXSIZE 100\n<\/span><span class=\"k\">typedef<\/span> <span class=\"k\">struct<\/span><span class=\"p\">{<\/span>\n  <span class=\"n\">ElemType<\/span> <span class=\"o\">*<\/span><span class=\"n\">elem<\/span><span class=\"p\">;<\/span>\n  <span class=\"kt\">int<\/span> <span class=\"n\">length<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">}<\/span><span class=\"n\">SqList<\/span>\n<\/code><\/pre><\/div><\/div>\n\n<h3 id=\"112-\u5355\u5411\u94fe\u8868\">1.1.2 \u5355\u5411\u94fe\u8868<\/h3>\n\n<ol>\n  <li>\n    <p>\u7279\u70b9\uff1a\u53d6\u503c\u65f6\u95f4\u590d\u6742\u5ea6\u4e3aO(n)\uff1b\u63d2\u5165\u65f6\u95f4\u590d\u6742\u5ea6\u4e3aO(1)\uff1b\u5220\u9664\u65f6\u95f4\u590d\u6742\u5ea6\u4e3aO(1);\u5728p\u7684\u524d\u9762\u63d2\u5165\u4e0d\u65b9\u4fbf<\/p>\n\n    <div class=\"language-cpp highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code> <span class=\"c1\">\/\/p\u4e4b\u540e\u63d2\u5165\u8282\u70b9s<\/span>\n <span class=\"n\">s<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">next<\/span><span class=\"o\">=<\/span><span class=\"n\">p<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">next<\/span><span class=\"p\">;<\/span>\n <span class=\"n\">p<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">next<\/span><span class=\"o\">=<\/span><span class=\"n\">s<\/span><span class=\"p\">;<\/span>\n\n <span class=\"c1\">\/\/\u5220\u9664p\u4e4b\u540e\u7684\u8282\u70b9<\/span>\n <span class=\"n\">q<\/span><span class=\"o\">=<\/span><span class=\"n\">p<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">next<\/span><span class=\"p\">;<\/span>\n <span class=\"n\">p<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">next<\/span><span class=\"o\">=<\/span><span class=\"n\">q<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">next<\/span><span class=\"p\">;<\/span>\n <span class=\"k\">delete<\/span> <span class=\"n\">q<\/span><span class=\"p\">;<\/span>\n<\/code><\/pre><\/div>    <\/div>\n  <\/li>\n  <li>\u5206\u7c7b\uff1a\u5e26\u5934\u7ed3\u70b9\uff08<code class=\"language-plaintext highlighter-rouge\">first-&gt;next=null<\/code>)\uff1b\u4e0d\u5e26\u5934\u7ed3\u70b9\uff08<code class=\"language-plaintext highlighter-rouge\">first=null<\/code>\uff09<\/li>\n  <li>\n    <p>\u7ed3\u6784\u5b9a\u4e49\uff1a<\/p>\n\n    <div class=\"language-cpp highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code> <span class=\"k\">typedef<\/span> <span class=\"k\">struct<\/span> <span class=\"nc\">Node<\/span><span class=\"p\">{<\/span>\n   <span class=\"n\">ElemType<\/span> <span class=\"n\">data<\/span><span class=\"p\">;<\/span>\n   <span class=\"k\">struct<\/span> <span class=\"nc\">Node<\/span> <span class=\"o\">*<\/span><span class=\"n\">next<\/span><span class=\"p\">;<\/span>\n <span class=\"p\">}<\/span><span class=\"n\">LNode<\/span><span class=\"p\">,<\/span><span class=\"o\">*<\/span><span class=\"n\">LinkList<\/span><span class=\"p\">;<\/span>\n<\/code><\/pre><\/div>    <\/div>\n  <\/li>\n<\/ol>\n\n<h3 id=\"113-\u53cc\u5411\u94fe\u8868\">1.1.3 \u53cc\u5411\u94fe\u8868<\/h3>\n\n<div class=\"language-cpp highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code><span class=\"c1\">\/\/\u5728p\u4e4b\u524d\u5b9e\u73b0\u63d2\u5165s<\/span>\n<span class=\"n\">s<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">prior<\/span><span class=\"o\">=<\/span><span class=\"n\">p<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">prior<\/span><span class=\"p\">;<\/span>\n<span class=\"n\">p<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">prior<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">next<\/span><span class=\"o\">=<\/span><span class=\"n\">s<\/span><span class=\"p\">;<\/span>\n<span class=\"n\">s<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">next<\/span><span class=\"o\">=<\/span><span class=\"n\">p<\/span><span class=\"p\">;<\/span>\n<span class=\"n\">p<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">prior<\/span><span class=\"o\">=<\/span><span class=\"n\">s<\/span><span class=\"p\">;<\/span>\n\n<span class=\"c1\">\/\/\u5220\u9664p<\/span>\n<span class=\"n\">p<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">prior<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">next<\/span><span class=\"o\">=<\/span><span class=\"n\">p<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">next<\/span><span class=\"p\">;<\/span>\n<span class=\"n\">p<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">next<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">prior<\/span><span class=\"o\">=<\/span><span class=\"n\">p<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">prior<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">delete<\/span> <span class=\"n\">p<\/span><span class=\"p\">;<\/span>\n<\/code><\/pre><\/div><\/div>\n\n<h3 id=\"114-\u5faa\u73af\u94fe\u8868\">1.1.4 \u5faa\u73af\u94fe\u8868<\/h3>\n\n<ol>\n  <li>\u5934\u8282\u70b9\u7684prior\u6307\u5411\u5c3e\u90e8<\/li>\n  <li>\u5c3e\u8282\u70b9\u7684next\u6307\u5411\u5934\u90e8<\/li>\n<\/ol>\n\n<h3 id=\"115-\u987a\u5e8f\u8868\u4e0e\u94fe\u8868\">1.1.5 \u987a\u5e8f\u8868\u4e0e\u94fe\u8868<\/h3>\n\n<table>\n  <thead>\n    <tr>\n      <th>\u00a0<\/th>\n      <th>\u00a0<\/th>\n      <th>\u987a\u5e8f\u8868<\/th>\n      <th>\u94fe\u8868<\/th>\n    <\/tr>\n  <\/thead>\n  <tbody>\n    <tr>\n      <td>\u7a7a\u95f4<\/td>\n      <td>\u5b58\u50a8\u7a7a\u95f4<\/td>\n      <td>\u9884\u5148\u5206\u914d\uff0c\u5b58\u5728\u6ea2\u51fa<\/td>\n      <td>\u52a8\u6001\u5206\u914d<\/td>\n    <\/tr>\n    <tr>\n      <td>\u00a0<\/td>\n      <td>\u5b58\u50a8\u5bc6\u5ea6<\/td>\n      <td>=1<\/td>\n      <td>&lt;1(\u501f\u52a9\u6307\u9488)<\/td>\n    <\/tr>\n    <tr>\n      <td>\u65f6\u95f4<\/td>\n      <td>\u5b58\u53d6\u5143\u7d20<\/td>\n      <td>\u968f\u673a\u5b58\u53d6\uff0c\u65f6\u95f4\u590d\u6742\u5ea6\u4e3aO(1)(<\/td>\n      <td>\u987a\u5e8f\u5b58\u53d6\uff0cO(n)<\/td>\n    <\/tr>\n    <tr>\n      <td>\u00a0<\/td>\n      <td>\u63d2\u5165\u3001\u5220\u9664<\/td>\n      <td>\u5e73\u5747\u79fb\u52a8\u8868\u4e2d\u4e00\u534a\u5143\u7d20\uff0cO(n)<\/td>\n      <td>O(1)<\/td>\n    <\/tr>\n    <tr>\n      <td>\u9002\u7528\u60c5\u51b5<\/td>\n      <td>\u00a0<\/td>\n      <td>\u2460\u8868\u957f\u53d8\u5316\u4e0d\u5927<\/td>\n      <td>\u2460\u957f\u5ea6\u53d8\u5316\u5927<\/td>\n    <\/tr>\n    <tr>\n      <td>\u00a0<\/td>\n      <td>\u00a0<\/td>\n      <td>\u2461\u5f88\u5c11\u63d2\u5165\u6216\u8005\u5220\u9664\uff0c\u7ecf\u5e38\u8bbf\u95ee<\/td>\n      <td>\u2461\u9891\u7e41\u63d2\u5165\u5220\u9664<\/td>\n    <\/tr>\n  <\/tbody>\n<\/table>\n\n<h2 id=\"12-\u6808\">1.2 \u6808<\/h2>\n\n<ol>\n  <li>\u903b\u8f91\u7ed3\u6784\uff1a\u4e00\u5bf9\u4e00<\/li>\n  <li>\u8fd0\u7b97\uff08\u540e\u8fdb\u540e\u51fa\uff09<\/li>\n  <li>\u5b58\u50a8\u7ed3\u6784\uff1a\u987a\u5e8f\u6808\uff1b\u94fe\u6808<\/li>\n<\/ol>\n\n<h3 id=\"121-\u987a\u5e8f\u6808\">1.2.1 \u987a\u5e8f\u6808<\/h3>\n\n<ol>\n  <li>\u7a7a\u6808\uff1abase==top\uff08\u51fa\u6808\u9700\u5224\u5b9a\uff09<\/li>\n  <li>\u6808\u6ee1\uff1atop-base=stacksize\uff08\u5165\u6808\u9700\u5224\u65ad\uff09<\/li>\n  <li>\n    <p>\u7ed3\u6784\u5b9a\u4e49\uff1a<\/p>\n\n    <div class=\"language-cpp highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code> <span class=\"cp\">#define MAXSIZE 100\n<\/span> <span class=\"k\">typedef<\/span> <span class=\"k\">struct<\/span><span class=\"p\">{<\/span>\n   <span class=\"n\">SElemType<\/span> <span class=\"o\">*<\/span><span class=\"n\">base<\/span><span class=\"p\">;<\/span>\n   <span class=\"n\">SElemType<\/span> <span class=\"o\">*<\/span><span class=\"n\">top<\/span><span class=\"p\">;<\/span>\n   <span class=\"kt\">int<\/span> <span class=\"n\">stacksize<\/span><span class=\"p\">;<\/span>\n <span class=\"p\">}<\/span><span class=\"n\">SqStack<\/span><span class=\"p\">;<\/span>\n\n <span class=\"c1\">\/\/\u5165\u6808<\/span>\n <span class=\"o\">*<\/span><span class=\"n\">S<\/span><span class=\"p\">.<\/span><span class=\"n\">top<\/span><span class=\"o\">=<\/span><span class=\"n\">e<\/span><span class=\"p\">;<\/span>\n <span class=\"o\">*<\/span><span class=\"n\">S<\/span><span class=\"p\">.<\/span><span class=\"n\">top<\/span><span class=\"o\">++<\/span><span class=\"p\">;<\/span>\n\n <span class=\"c1\">\/\/\u51fa\u6808<\/span>\n <span class=\"o\">--<\/span><span class=\"n\">S<\/span><span class=\"p\">.<\/span><span class=\"n\">top<\/span><span class=\"p\">;<\/span>\n <span class=\"n\">e<\/span><span class=\"o\">=*<\/span><span class=\"n\">S<\/span><span class=\"p\">.<\/span><span class=\"n\">top<\/span><span class=\"p\">;<\/span>\n<\/code><\/pre><\/div>    <\/div>\n  <\/li>\n<\/ol>\n\n<h3 id=\"122-\u94fe\u6808\">1.2.2 \u94fe\u6808<\/h3>\n\n<h2 id=\"13-\u961f\u5217\">1.3 \u961f\u5217<\/h2>\n\n<ol>\n  <li>\u903b\u8f91\u7ed3\u6784\uff1a\u4e00\u5bf9\u4e00<\/li>\n  <li>\u8fd0\u7b97\uff08\u5148\u8fdb\u5148\u51fa\uff09<\/li>\n  <li>\u5b58\u50a8\u7ed3\u6784\uff1a\u987a\u5e8f\u961f\u5217\uff1b\u94fe\u961f\u5217<\/li>\n  <li>\u4e3a\u7a7a\u6761\u4ef6\uff1a<br \/>\n\u94fe\/\u5faa\u73af\u961f\u5217\uff1a<code class=\"language-plaintext highlighter-rouge\">Q-&gt;front=Q-&gt;rear<\/code><\/li>\n  <li>\u4e3a\u6ee1\u6761\u4ef6\uff1a<br \/>\n\u5faa\u73af\u961f\u5217\uff1a<code class=\"language-plaintext highlighter-rouge\">(Q-&gt;rear+1)%MAXQSIZE==Q.front<\/code><\/li>\n<\/ol>\n\n<h2 id=\"14-\u4e32\">1.4 \u4e32<\/h2>\n\n<h1 id=\"\u6811\">\u6811<\/h1>\n\n<h2 id=\"21-\u4e8c\u53c9\u6811\">2.1 \u4e8c\u53c9\u6811<\/h2>\n\n<ol>\n  <li>\n    <p>\u6027\u8d28\uff1a<\/p>\n\n    <ul>\n      <li>\u6027\u8d281\uff1a\u7b2ci\u5c42\u6700\u591a\u7ed3\u70b9\u6570\uff1a\\(2^{i-1}\\)<\/li>\n      <li>\u6027\u8d282\uff1a\u6df1\u5ea6k\u81f3\u591a\u7684\u7ed3\u70b9\u6570\uff1a\\(2^k-1\\)<\/li>\n      <li>\u6027\u8d283\uff1a\\(n_0=n_2+1\\)<\/li>\n      <li>\u6027\u8d284\uff1an\u4e2a\u7ed3\u70b9\u5b8c\u5168\u4e8c\u53c9\u6811\u7684\u6df1\u5ea6 \\(\\lfloor log_2n \\rfloor +1\\)<\/li>\n      <li>\u6027\u8d285\uff1a\u5b8c\u5168\u4e8c\u53c9\u6811\u7684\u7f16\u53f7\uff0c\u7236\u4eb2\u4e0e\u5b69\u5b50\u4e4b\u95f4\u7684\u5173\u7cfb \\(\u7236\u8282\u70b9\uff1a\\frac i 2\\) \\(\u7ed3\u70b9\u672c\u8eab\uff1ai\\) \\(\u5de6\u5b50\u7ed3\u70b9\uff1a2i \\ \u53f3\u5b50\u7ed3\u70b9\uff1a2i+1\\)<\/li>\n    <\/ul>\n  <\/li>\n  <li>\n    <p>\u4e8c\u53c9\u6811\u7684\u904d\u5386\u53ca\u4f9d\u636e\u5e8f\u5217\u8fd8\u539f<\/p>\n\n    <ul>\n      <li>\n        <p>\u5148\u5e8f\u904d\u5386\uff1a\u4e2d\u5de6\u53f3\uff08\u786e\u5b9a\u6839\uff0c\u65e0\u6cd5\u8fd8\u539f\uff09<\/p>\n\n        <div class=\"language-cpp highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code><span class=\"c1\">\/\/\u5148\u5e8f\u904d\u5386<\/span>\n<span class=\"n\">Status<\/span> <span class=\"nf\">PreOrderTraverse<\/span><span class=\"p\">(<\/span><span class=\"n\">BiTree<\/span> <span class=\"n\">T<\/span><span class=\"p\">){<\/span>\n  <span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"n\">T<\/span><span class=\"o\">==<\/span><span class=\"nb\">NULL<\/span><span class=\"p\">)<\/span><span class=\"k\">return<\/span> <span class=\"n\">OK<\/span><span class=\"p\">;<\/span>\n  <span class=\"k\">else<\/span><span class=\"p\">{<\/span>\n    <span class=\"n\">cout<\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"n\">T<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">data<\/span><span class=\"p\">;<\/span>\n    <span class=\"n\">PreOrderTraverse<\/span><span class=\"p\">(<\/span><span class=\"n\">T<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">lchild<\/span><span class=\"p\">);<\/span>\n    <span class=\"n\">PreOrderTraverse<\/span><span class=\"p\">(<\/span><span class=\"n\">T<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">rchild<\/span><span class=\"p\">);<\/span>\n  <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre><\/div>        <\/div>\n      <\/li>\n      <li>\u4e2d\u5e8f\u904d\u5386\uff1a\u5de6\u4e2d\u53f3\uff08\u786e\u5b9a\u5de6\u53f3\uff09<\/li>\n      <li>\u540e\u5e8f\u904d\u5386\uff1a\u5de6\u53f3\u4e2d\uff08\u786e\u5b9a\u6839\uff0c\u65e0\u6cd5\u8fd8\u539f\uff09<\/li>\n      <li>\u5c42\u6b21\u904d\u5386\uff1a\u4e0a\u5230\u4e0b\uff0c\u5de6\u5230\u53f3<\/li>\n    <\/ul>\n  <\/li>\n<\/ol>","author":{"name":"Windy","email":"windy23334@gmail.com"},"category":[{"@attributes":{"term":"blog"}},{"@attributes":{"term":"datastructure"}}],"summary":{"@attributes":{"type":"html"}}}]}