{"id":1613,"date":"2018-08-17T17:36:31","date_gmt":"2018-08-17T09:36:31","guid":{"rendered":"https:\/\/damogame.cn:15443\/wordpress\/?p=1613"},"modified":"2018-08-17T17:36:31","modified_gmt":"2018-08-17T09:36:31","slug":"%e5%88%86%e5%b8%83%e5%bc%8f%e9%ab%98%e5%b9%b6%e5%8f%91%e4%b8%8b%e5%94%af%e4%b8%80%e6%a0%87%e8%af%86snowflake%e7%ae%97%e6%b3%95","status":"publish","type":"post","link":"https:\/\/i007.cc\/wordpress\/archives\/1613","title":{"rendered":"\u5206\u5e03\u5f0f\u9ad8\u5e76\u53d1\u4e0b\u552f\u4e00\u6807\u8bc6snowflake\u7b97\u6cd5"},"content":{"rendered":"<div class=\"article-header-box\">\n<div class=\"article-header\">\n<div class=\"article-title-box\">\n<h1 class=\"title-article\">\u5206\u5e03\u5f0f\u9ad8\u5e76\u53d1\u4e0b\u552f\u4e00\u6807\u8bc6snowflake\u7b97\u6cd5<\/h1>\n<\/div>\n<div class=\"article-info-box\">\n<div class=\"article-bar-top d-flex\"><span class=\"time\">2017\u5e7407\u670817\u65e5 17:43:02<\/span><\/p>\n<div class=\"float-right\"><span class=\"read-count\">\u9605\u8bfb\u6570\uff1a2939<\/span><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<article>\n<div id=\"article_content\" class=\"article_content clearfix csdn-tracking-statistics\" data-pid=\"blog\" data-mod=\"popu_307\" data-dsm=\"post\">\n<div class=\"markdown_views\">\n<h3 id=\"\u7b80\u4ecb\"><a name=\"t0\"><\/a>\u7b80\u4ecb\uff1a<\/h3>\n<p>\u5728\u7cfb\u7edf\u5c0f\u65f6\uff0c\u552f\u4e00\u6807\u8bc6\u7684\u4ea7\u751f\uff0c\u53ef\u4ee5\u5229\u7528\u516c\u7528\u6a21\u5757\u6765\u5904\u7406\uff0c\u6bd4\u5982\u6570\u636e\u5e93\u8868\u7684\u552f\u4e00\u952e\u3001\u6216\u8005\u7f13\u5b58\u7684\u552f\u4e00id\u7b49\u7b49\u65b9\u5f0f\u3002\u4f46\u5728\u5206\u5e03\u5f0f\u9ad8\u5e76\u53d1\u7684\u7cfb\u7edf\u4e2d\uff0c\u5982\u679c\u8fd8\u662f\u8fd9\u6837\u4f7f\u7528\u516c\u5171\u6a21\u5757\uff0c\u5c31\u4f1a\u4ea7\u751f\u5f88\u5927\u7684\u98ce\u9669\u548c\u74f6\u9888\u3002\u7f51\u4e0a\u4e5f\u6709\u76f8\u5173\u63a8\u8350\u7684\uff0ctwitter\u7684snowflake\u5c31\u80fd\u89e3\u51b3\u8fd9\u4e2a\u95ee\u9898\u3002<\/p>\n<p>snowflake\u6ee1\u8db3\u4e86\u4ee5\u4e0b\u4e2a\u8981\u6c42\uff1a<br \/>\n1. \u53ea\u752864\u4f4d\u5c31\u80fd\u8fbe\u5230\u8981\u6c42\uff1b\u800c\u65e0\u9700128\u7684\u65b9\u5f0f\u3002<br \/>\n2. \u8003\u8651\u5230\u6392\u5e8f\u7684\u8981\u6c42\uff0c\u6807\u8bc6\u7684\u6392\u5e8f\u8ddf\u65f6\u95f4\u4e0a\u57fa\u672c\u80fd\u4fdd\u6301\u4e00\u81f4\u3002<br \/>\n3. \u6ee1\u8db3\u4e86\u9884\u671f\u670d\u52a1\u65f6\u95f4\u5185\u7684\uff0c\u5373\u5728\u591a\u5c11\u5e74\u5185\u6b64\u7b97\u6cd5\u9002\u7528\u3002<\/p>\n<h3 id=\"snowflake\u7b97\u6cd5\u6838\u5fc3\"><a name=\"t1\"><\/a>snowflake\u7b97\u6cd5\u6838\u5fc3\uff1a<\/h3>\n<p><img decoding=\"async\" title=\"\" src=\"https:\/\/img-blog.csdn.net\/20170717164753616?watermark\/2\/text\/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemNsMTEx\/font\/5a6L5L2T\/fontsize\/400\/fill\/I0JBQkFCMA==\/dissolve\/70\/gravity\/SouthEast\" alt=\"\u8fd9\u91cc\u5199\u56fe\u7247\u63cf\u8ff0\" \/><\/p>\n<p>\u5982\u56fe\uff0c64\u4f4d\u3002\u4e3b\u8981\u75313\u5757\u6784\u6210\uff1a\u65f6\u95f4\u6233\u3001\u5de5\u4f5c\u673a\u5668id\u3001\u5e8f\u5217\u53f7\u3002<br \/>\n&#8211; \u5176\u4e2d\u7b2c\u4e00\u4f4d\u4e0d\u7528\uff0c\u4e5f\u53ef\u4ee5\u7406\u89e3\u4f5c\u4e3a\u6b63\u8d1f\u6570\u6765\u4f7f\u7528\uff0c\u9ed8\u8ba4\u6b63\u6570\u7684\u3002<br \/>\n&#8211; \u968f\u540e41\u4f4d\u8868\u793a\u65f6\u95f4\u6233\uff0c\u5728\u5b9e\u9645\u4f7f\u7528\u65f6\uff0c\u53ef\u4ee5\u5f53\u505a\u65f6\u95f4\u5dee\u6765\u4f7f\u7528\uff0c\u6bd4\u5982\u73b0\u5728\u79bb2017-01-01 00:00:00\u7684\u65f6\u95f4\u5dee\u3002\u8fd9\u6837\u7684\u8bdd\uff0c\u65f6\u95f4\u8303\u56f4\u5c31\u80fd\u8fbe\u5230\uff1a (2^41-1)\/(1000*60*60*24*365)=69.7\u5e74\u3002<br \/>\n&#8211; \u4e2d\u95f410\u4f4d\u7528\u4e8e\u5de5\u4f5c\u673a\u5668\u7684\u3002\u53ef\u4ee5\u7528\u4e8e 2^10-1=1023\u53f0\u673a\u5668\u3002<br \/>\n&#8211; \u6700\u540e12\u4f4d\u8868\u793a\u5e8f\u5217\u53f7\uff0c\u4e00\u4e2a\u673a\u5668\u5728\u4e00\u4e2a\u6beb\u79d2\u65f6\u6700\u5927\u80fd\u4ea7\u751f 2^12-1=4095\u4e2a\u3002<br \/>\n**\u5728\u5b9e\u9645\u5e94\u7528\u4e2d\uff0c\u53ef\u80fd\u65e0\u9700\u6700\u5927\u5316\u7684\uff0c\u6bd4\u5982\u65f6\u95f4\u6233\u53ea\u752830\u4f4d\u5c31\u80fd\u8fbe\u5230\u8981\u6c42\u7684\u5c31\u65e0\u970041\u4f4d\uff0c\u5176\u4ed6\u7684\u540c\u7406\u3002<br \/>\n\u5de5\u4f5c\u673a\u5668ID\uff0c\u53ef\u4ee5\u662f\u8fdb\u7a0b\u7ea7\u522b\u3002\u673a\u5668\u7ea7\u522b\u7684\u8bdd\uff0c\u53ef\u4ee5\u4f7f\u7528\u673a\u5668\u7684mac\u5730\u5740\u6216ip\u5730\u5740\u7ecf\u8fc7\u7b97\u6cd5\uff1b\u5982\u679c\u662f\u8fdb\u7a0b\u7ea7\u522b\u7684\u8bdd\uff0c\u53ef\u4ee5\u4f7f\u7528path+\u8fdb\u7a0b\u6807\u8bc6\uff1b\u4e5f\u53ef\u4ee5\u6df7\u7f16\uff0c\u5217\u5982\u524d5\u4f4d\u6807\u8bc6\u673a\u5668\uff0c\u540e5\u4f4d\u6807\u8bc6\u8fdb\u7a0b\u3002<br \/>\n\u5173\u4e8e\u5e8f\u5217\u53f7\u6709\u4e2a\u6ce8\u610f\u70b9\uff0c\u5982\u679c\u4e00\u4e2a\u6beb\u79d2\u5185\uff0c\u5e8f\u5217\u53f7\u5df2\u7ecf\u8fbe\u5230\u4e0a\u9650\uff0c\u5c31\u7b49\u5230\u4e0b\u4e00\u6beb\u79d2\uff0c\u540c\u65f6\u5e8f\u5217\u53f7\u7f6e\u96f6\u5f00\u59cb\u3002**<\/p>\n<h3 id=\"\u5177\u4f53\u4ee3\u7801\"><a name=\"t2\"><\/a>\u5177\u4f53\u4ee3\u7801\uff1a<\/h3>\n<pre class=\"prettyprint\"><code class=\"hljs java has-numbering\">\r\n<span class=\"hljs-javadoc\">\/**\r\n *<span class=\"hljs-javadoctag\"> @author<\/span> zcl\r\n *<span class=\"hljs-javadoctag\"> @date<\/span> 2017\/7\/12\r\n **\/<\/span>\r\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">MagicSnowFlake<\/span> {<\/span>\r\n\r\n    <span class=\"hljs-comment\">\/\/\u5176\u5b9e\u65f6\u95f4\u6233   2017-01-01 00:00:00<\/span>\r\n    <span class=\"hljs-keyword\">private<\/span> <span class=\"hljs-keyword\">final<\/span> <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">long<\/span> twepoch = <span class=\"hljs-number\">1483200000000<\/span>l;\r\n\r\n    <span class=\"hljs-comment\">\/\/10bit\uff08\u4f4d\uff09\u7684\u5de5\u4f5c\u673a\u5668id  \u4e2dIP\u6807\u8bc6\u6240\u5360\u7684\u4f4d\u6570 8bit\uff08\u4f4d\uff09<\/span>\r\n    <span class=\"hljs-keyword\">private<\/span> <span class=\"hljs-keyword\">final<\/span> <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">long<\/span> ipIdBits = <span class=\"hljs-number\">8<\/span>L;\r\n\r\n    <span class=\"hljs-comment\">\/\/IP\u6807\u8bc6\u6700\u5927\u503c 255  \u53732\u76848\u6b21\u65b9\u51cf\u4e00\u3002<\/span>\r\n    <span class=\"hljs-keyword\">private<\/span> <span class=\"hljs-keyword\">final<\/span> <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">long<\/span> ipIdMax = ~ (-<span class=\"hljs-number\">1<\/span>L &lt;&lt; ipIdBits);\r\n\r\n    <span class=\"hljs-comment\">\/\/10bit\uff08\u4f4d\uff09\u7684\u5de5\u4f5c\u673a\u5668id  \u4e2d\u6570\u5b57\u6807\u8bc6id\u6240\u5360\u7684\u4f4d\u6570 2bit\uff08\u4f4d\uff09<\/span>\r\n    <span class=\"hljs-keyword\">private<\/span> <span class=\"hljs-keyword\">final<\/span> <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">long<\/span> dataCenterIdBits = <span class=\"hljs-number\">2<\/span>L;\r\n\r\n    <span class=\"hljs-comment\">\/\/\u6570\u5b57\u6807\u8bc6id\u6700\u5927\u503c 3  \u53732\u76842\u6b21\u65b9\u51cf\u4e00\u3002<\/span>\r\n    <span class=\"hljs-keyword\">private<\/span> <span class=\"hljs-keyword\">final<\/span> <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">long<\/span> dataCenterIdMax = ~ (-<span class=\"hljs-number\">1<\/span>L &lt;&lt; dataCenterIdBits);\r\n\r\n    <span class=\"hljs-comment\">\/\/\u5e8f\u5217\u5728id\u4e2d\u5360\u7684\u4f4d\u6570 12bit<\/span>\r\n    <span class=\"hljs-keyword\">private<\/span> <span class=\"hljs-keyword\">final<\/span> <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">long<\/span> seqBits = <span class=\"hljs-number\">12<\/span>L;\r\n\r\n    <span class=\"hljs-comment\">\/\/\u5e8f\u5217\u6700\u5927\u503c 4095 \u53732\u768412\u6b21\u65b9\u51cf\u4e00\u3002<\/span>\r\n    <span class=\"hljs-keyword\">private<\/span> <span class=\"hljs-keyword\">final<\/span> <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">long<\/span> seqMax = ~(-<span class=\"hljs-number\">1<\/span>L &lt;&lt; seqBits);\r\n\r\n    <span class=\"hljs-comment\">\/\/ 64\u4f4d\u7684\u6570\u5b57\uff1a\u9996\u4f4d0  \u968f\u540e41\u4f4d\u8868\u793a\u65f6\u95f4\u6233 \u968f\u540e10\u4f4d\u5de5\u4f5c\u673a\u5668id\uff088\u4f4dIP\u6807\u8bc6 + 2\u4f4d\u6570\u5b57\u6807\u8bc6\uff09 \u6700\u540e12\u4f4d\u5e8f\u5217\u53f7<\/span>\r\n    <span class=\"hljs-keyword\">private<\/span> <span class=\"hljs-keyword\">final<\/span> <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">long<\/span> dataCenterIdLeftShift = seqBits;\r\n    <span class=\"hljs-keyword\">private<\/span> <span class=\"hljs-keyword\">final<\/span> <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">long<\/span> ipIdLeftShift = seqBits + dataCenterIdBits;\r\n    <span class=\"hljs-keyword\">private<\/span> <span class=\"hljs-keyword\">final<\/span> <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">long<\/span> timeLeftShift = seqBits  + dataCenterIdBits + ipIdLeftShift;\r\n\r\n    <span class=\"hljs-comment\">\/\/IP\u6807\u8bc6(0~255)<\/span>\r\n    <span class=\"hljs-keyword\">private<\/span> <span class=\"hljs-keyword\">long<\/span> ipId;\r\n\r\n    <span class=\"hljs-comment\">\/\/ \u6570\u636e\u4e2d\u5fc3ID(0~3)<\/span>\r\n    <span class=\"hljs-keyword\">private<\/span> <span class=\"hljs-keyword\">long<\/span> dataCenterId;\r\n\r\n    <span class=\"hljs-comment\">\/\/ \u6beb\u79d2\u5185\u5e8f\u5217(0~4095)<\/span>\r\n    <span class=\"hljs-keyword\">private<\/span> <span class=\"hljs-keyword\">long<\/span> seq = <span class=\"hljs-number\">0<\/span>L;\r\n\r\n    <span class=\"hljs-comment\">\/\/ \u4e0a\u6b21\u751f\u6210ID\u7684\u65f6\u95f4\u622a<\/span>\r\n    <span class=\"hljs-keyword\">private<\/span> <span class=\"hljs-keyword\">long<\/span> lastTime = -<span class=\"hljs-number\">1<\/span>L;\r\n\r\n    <span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-title\">MagicSnowFlake<\/span>(<span class=\"hljs-keyword\">long<\/span> ipId, <span class=\"hljs-keyword\">long<\/span> dataCenterId) {\r\n        <span class=\"hljs-keyword\">if<\/span>(ipId &lt; <span class=\"hljs-number\">0<\/span> || ipId &gt; ipIdMax) {\r\n            System.out.println(<span class=\"hljs-string\">\" ---------- ipId\u4e0d\u5728\u6b63\u5e38\u8303\u56f4\u5185(0~\"<\/span>+ipIdMax +<span class=\"hljs-string\">\") \"<\/span> + ipId);\r\n            System.exit(<span class=\"hljs-number\">0<\/span>);\r\n        }\r\n\r\n        <span class=\"hljs-keyword\">if<\/span>(dataCenterId &lt; <span class=\"hljs-number\">0<\/span> || dataCenterId &gt; dataCenterIdMax) {\r\n            System.out.println(<span class=\"hljs-string\">\" ---------- dataCenterId\u4e0d\u5728\u6b63\u5e38\u8303\u56f4\u5185(0~\"<\/span>+dataCenterIdMax +<span class=\"hljs-string\">\") \"<\/span> + dataCenterId);\r\n            System.exit(<span class=\"hljs-number\">0<\/span>);\r\n        }\r\n\r\n        <span class=\"hljs-keyword\">this<\/span>.ipId = ipId;\r\n        <span class=\"hljs-keyword\">this<\/span>.dataCenterId = dataCenterId;\r\n    }\r\n\r\n    <span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">synchronized<\/span> <span class=\"hljs-keyword\">long<\/span> <span class=\"hljs-title\">nextId<\/span>() {\r\n        <span class=\"hljs-keyword\">long<\/span> nowTime = System.currentTimeMillis();\r\n\r\n        <span class=\"hljs-keyword\">if<\/span>(nowTime &lt; lastTime) {\r\n            System.out.println(<span class=\"hljs-string\">\" ---------- \u5f53\u524d\u65f6\u95f4\u524d\u4e8e\u4e0a\u6b21\u64cd\u4f5c\u65f6\u95f4\uff0c\u5f53\u524d\u65f6\u95f4\u6709\u8bef: \"<\/span> + nowTime);\r\n            System.exit(<span class=\"hljs-number\">0<\/span>);\r\n        }\r\n\r\n        <span class=\"hljs-keyword\">if<\/span>(nowTime == lastTime) {\r\n            seq = (seq + <span class=\"hljs-number\">1<\/span>) &amp; seqMax;\r\n            <span class=\"hljs-keyword\">if<\/span>(seq == <span class=\"hljs-number\">0<\/span>) {\r\n                nowTime = getNextTimeStamp();\r\n            }\r\n        } <span class=\"hljs-keyword\">else<\/span> {\r\n            seq = <span class=\"hljs-number\">0<\/span>L;\r\n        }\r\n\r\n        lastTime = nowTime;\r\n\r\n        <span class=\"hljs-keyword\">return<\/span> ((nowTime - twepoch) &lt;&lt; timeLeftShift)\r\n                | (ipId &lt;&lt; ipIdLeftShift)\r\n                | (dataCenterId &lt;&lt; dataCenterIdLeftShift)\r\n                | seq;\r\n    }\r\n\r\n    <span class=\"hljs-keyword\">private<\/span> <span class=\"hljs-keyword\">long<\/span> <span class=\"hljs-title\">getNextTimeStamp<\/span>() {\r\n        <span class=\"hljs-keyword\">long<\/span> nowTime;\r\n        do {\r\n            nowTime = System.currentTimeMillis();\r\n        } <span class=\"hljs-keyword\">while<\/span>(nowTime &lt;= lastTime);\r\n        <span class=\"hljs-keyword\">return<\/span> nowTime;\r\n    }\r\n}\r\n\r\n---------------------------------------------------------------\r\n\r\n<span class=\"hljs-javadoc\">\/**\r\n *<span class=\"hljs-javadoctag\"> @author<\/span> zcl\r\n *<span class=\"hljs-javadoctag\"> @date<\/span> 2017\/7\/12\r\n **\/<\/span>\r\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">ThreadSnowFlake<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">Thread<\/span> {<\/span>\r\n\r\n    MagicSnowFlake msf;\r\n\r\n    <span class=\"hljs-keyword\">int<\/span> cnt = <span class=\"hljs-number\">0<\/span>;\r\n\r\n    <span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-title\">ThreadSnowFlake<\/span>(MagicSnowFlake msf) {\r\n        <span class=\"hljs-keyword\">this<\/span>.msf = msf;\r\n    }\r\n\r\n    <span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">run<\/span>() {\r\n        System.out.println();\r\n        <span class=\"hljs-keyword\">if<\/span>(msf != <span class=\"hljs-keyword\">null<\/span>) {\r\n            <span class=\"hljs-keyword\">while<\/span>(cnt &lt; <span class=\"hljs-number\">10<\/span>) {\r\n                System.out.print(Thread.currentThread().getId() + <span class=\"hljs-string\">\" : \"<\/span> + msf.nextId());\r\n                cnt ++;\r\n            }\r\n        }\r\n    }\r\n}\r\n\r\n-----------------------------------------------------------------------\r\n<span class=\"hljs-javadoc\">\/**\r\n *<span class=\"hljs-javadoctag\"> @author<\/span> zcl\r\n *<span class=\"hljs-javadoctag\"> @date<\/span> 2017\/7\/12\r\n **\/<\/span>\r\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">AlgorithmMain<\/span> {<\/span>\r\n\r\n    <span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">main<\/span>(String[] args) {\r\n\r\n        MagicSnowFlake msf = <span class=\"hljs-keyword\">new<\/span> MagicSnowFlake(<span class=\"hljs-number\">196<\/span>, <span class=\"hljs-number\">2<\/span>);\r\n\r\n        ThreadSnowFlake t1 = <span class=\"hljs-keyword\">new<\/span> ThreadSnowFlake(msf);\r\n        ThreadSnowFlake t2 = <span class=\"hljs-keyword\">new<\/span> ThreadSnowFlake(msf);\r\n\r\n        t1.start();\r\n        t2.start();\r\n    }\r\n}\r\n<\/code><\/pre>\n<ul class=\"pre-numbering\">\n<li>1<\/li>\n<li>2<\/li>\n<li>3<\/li>\n<li>4<\/li>\n<li>5<\/li>\n<li>6<\/li>\n<li>7<\/li>\n<li>8<\/li>\n<li>9<\/li>\n<li>10<\/li>\n<li>11<\/li>\n<li>12<\/li>\n<li>13<\/li>\n<li>14<\/li>\n<li>15<\/li>\n<li>16<\/li>\n<li>17<\/li>\n<li>18<\/li>\n<li>19<\/li>\n<li>20<\/li>\n<li>21<\/li>\n<li>22<\/li>\n<li>23<\/li>\n<li>24<\/li>\n<li>25<\/li>\n<li>26<\/li>\n<li>27<\/li>\n<li>28<\/li>\n<li>29<\/li>\n<li>30<\/li>\n<li>31<\/li>\n<li>32<\/li>\n<li>33<\/li>\n<li>34<\/li>\n<li>35<\/li>\n<li>36<\/li>\n<li>37<\/li>\n<li>38<\/li>\n<li>39<\/li>\n<li>40<\/li>\n<li>41<\/li>\n<li>42<\/li>\n<li>43<\/li>\n<li>44<\/li>\n<li>45<\/li>\n<li>46<\/li>\n<li>47<\/li>\n<li>48<\/li>\n<li>49<\/li>\n<li>50<\/li>\n<li>51<\/li>\n<li>52<\/li>\n<li>53<\/li>\n<li>54<\/li>\n<li>55<\/li>\n<li>56<\/li>\n<li>57<\/li>\n<li>58<\/li>\n<li>59<\/li>\n<li>60<\/li>\n<li>61<\/li>\n<li>62<\/li>\n<li>63<\/li>\n<li>64<\/li>\n<li>65<\/li>\n<li>66<\/li>\n<li>67<\/li>\n<li>68<\/li>\n<li>69<\/li>\n<li>70<\/li>\n<li>71<\/li>\n<li>72<\/li>\n<li>73<\/li>\n<li>74<\/li>\n<li>75<\/li>\n<li>76<\/li>\n<li>77<\/li>\n<li>78<\/li>\n<li>79<\/li>\n<li>80<\/li>\n<li>81<\/li>\n<li>82<\/li>\n<li>83<\/li>\n<li>84<\/li>\n<li>85<\/li>\n<li>86<\/li>\n<li>87<\/li>\n<li>88<\/li>\n<li>89<\/li>\n<li>90<\/li>\n<li>91<\/li>\n<li>92<\/li>\n<li>93<\/li>\n<li>94<\/li>\n<li>95<\/li>\n<li>96<\/li>\n<li>97<\/li>\n<li>98<\/li>\n<li>99<\/li>\n<li>100<\/li>\n<li>101<\/li>\n<li>102<\/li>\n<li>103<\/li>\n<li>104<\/li>\n<li>105<\/li>\n<li>106<\/li>\n<li>107<\/li>\n<li>108<\/li>\n<li>109<\/li>\n<li>110<\/li>\n<li>111<\/li>\n<li>112<\/li>\n<li>113<\/li>\n<li>114<\/li>\n<li>115<\/li>\n<li>116<\/li>\n<li>117<\/li>\n<li>118<\/li>\n<li>119<\/li>\n<li>120<\/li>\n<li>121<\/li>\n<li>122<\/li>\n<li>123<\/li>\n<li>124<\/li>\n<li>125<\/li>\n<li>126<\/li>\n<li>127<\/li>\n<li>128<\/li>\n<li>129<\/li>\n<li>130<\/li>\n<li>131<\/li>\n<li>132<\/li>\n<li>133<\/li>\n<li>134<\/li>\n<li>135<\/li>\n<li>136<\/li>\n<li>137<\/li>\n<li>138<\/li>\n<li>139<\/li>\n<li>140<\/li>\n<\/ul>\n<p>\u7ed3\u679c\u5982\u4e0b\uff1a<br \/>\n<img decoding=\"async\" title=\"\" src=\"https:\/\/img-blog.csdn.net\/20170717174115048?watermark\/2\/text\/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemNsMTEx\/font\/5a6L5L2T\/fontsize\/400\/fill\/I0JBQkFCMA==\/dissolve\/70\/gravity\/SouthEast\" alt=\"\u8fd9\u91cc\u5199\u56fe\u7247\u63cf\u8ff0\" \/><\/p>\n<\/div>\n<\/div>\n<\/article>\n<div class=\"article-bar-bottom\">\n<div class=\"tags-box artic-tag-box\"><span class=\"label\">\u6587\u7ae0\u6807\u7b7e\uff1a<\/span>\u00a0<a class=\"tag-link\" href=\"http:\/\/so.csdn.net\/so\/search\/s.do?q=%E5%88%86%E5%B8%83%E5%BC%8F&amp;t=blog\" target=\"_blank\" rel=\"noopener\" data-track-click=\"{&quot;mod&quot;:&quot;popu_626&quot;,&quot;con&quot;:&quot;\u5206\u5e03\u5f0f&quot;}\">\u5206\u5e03\u5f0f<\/a><a class=\"tag-link\" href=\"http:\/\/so.csdn.net\/so\/search\/s.do?q=%E6%A0%87%E8%AF%86&amp;t=blog\" target=\"_blank\" rel=\"noopener\" data-track-click=\"{&quot;mod&quot;:&quot;popu_626&quot;,&quot;con&quot;:&quot;\u6807\u8bc6&quot;}\">\u6807\u8bc6<\/a><\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u5206\u5e03\u5f0f\u9ad8\u5e76\u53d1\u4e0b\u552f\u4e00\u6807\u8bc6snowflake<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"colormag_page_container_layout":"default_layout","colormag_page_sidebar_layout":"default_layout","footnotes":""},"categories":[],"tags":[118],"class_list":["post-1613","post","type-post","status-publish","format-standard","hentry","tag-02-"],"_links":{"self":[{"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/posts\/1613","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/comments?post=1613"}],"version-history":[{"count":0,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/posts\/1613\/revisions"}],"wp:attachment":[{"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/media?parent=1613"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/categories?post=1613"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/tags?post=1613"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}