{"id":187806,"date":"2020-11-09T04:07:25","date_gmt":"2020-11-08T20:07:25","guid":{"rendered":"http:\/\/4563.org\/?p=187806"},"modified":"2020-11-09T04:07:25","modified_gmt":"2020-11-08T20:07:25","slug":"c-%e8%af%ad%e8%a8%80%e5%a4%9a%e8%bf%9b%e7%a8%8b-vs-%e5%a4%9a%e7%ba%bf%e7%a8%8b%e6%80%a7%e8%83%bd%e9%97%ae%e9%a2%98","status":"publish","type":"post","link":"http:\/\/4563.org\/?p=187806","title":{"rendered":"C \u8bed\u8a00\u591a\u8fdb\u7a0b vs \u591a\u7ebf\u7a0b\u6027\u80fd\u95ee\u9898"},"content":{"rendered":"<div>\n<div>\n<div>\n<h1>                  C \u8bed\u8a00\u591a\u8fdb\u7a0b vs \u591a\u7ebf\u7a0b\u6027\u80fd\u95ee\u9898               <\/h1>\n<p> <\/p>\n<div>\n<div> <span>\u8cc7\u6df1\u5927\u4f6c : tom82232 <\/span>  <span><i><\/i> 7<\/span> <\/div>\n<div> <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div isfirst=\"1\">                        \u6d4b\u8bd5\u6e90\u7801\u5982\u4e0b\uff1a<br \/>#define _GNU_SOURCE<br \/>#include &lt;sched.h&gt;<br \/>#include &lt;stdio.h&gt;<br \/>#include &lt;stdlib.h&gt;<br \/>#include &lt;string.h&gt;<br \/>#include &lt;pthread.h&gt;<br \/>#include &lt;stdint.h&gt;<br \/>#include &lt;unistd.h&gt;<br \/>#include &lt;sys\/syscall.h&gt;<br \/>#include &lt;sys\/types.h&gt;<br \/>#include &lt;fcntl.h&gt;<\/p>\n<p>typedef struct __test{<br \/> uint64_t a;<br \/> uint64_t b;<br \/> uint64_t c;<br \/> uint64_t d;<br \/> uint64_t e;<br \/>}test_t;<\/p>\n<p>#define CPU_MAX 128<br \/>int cpuid[CPU_MAX];<br \/>test_t tdata[CPU_MAX];<br \/>int seq[CPU_MAX];<br \/>int thd_num = 1;<br \/>uint64_t prev[CPU_MAX];<br \/>uint64_t tmp[CPU_MAX];<br \/>int flag_stat = 0;<\/p>\n<p>static void <br \/>init(void)<br \/>{<br \/> for(int i = 0; i &lt; CPU_MAX; i++) {<br \/> cpuid[i] = -1;<br \/> seq[i] = i;<br \/> tdata[i].e = 100;<br \/> tdata[i].a = 0;<br \/> tdata[i].b = 0;<br \/> tdata[i].c = 0;<br \/> tdata[i].d = 0;<br \/> prev[i] = 0;<br \/> }<br \/>}<\/p>\n<p>static int <br \/>parse_cpuid(const char *str)<br \/>{<br \/> char buf[256];<br \/> int flag_start = 0;<br \/> int thdnum = 0;<br \/> int len = strlen(str);<br \/> if(len &gt; 255) {<br \/> memcpy(buf, str, 255);<br \/> buf[255] = 0;<br \/> }<br \/> else if(0 &lt; len) {<br \/> strcpy(buf, str);<br \/> }<br \/> else return 0;<\/p>\n<p> for(int i = 0; i &lt; 256; i++) {<br \/> if(buf[i] == &#8216; &#8216; || buf[i] == &#8216;t&#8217; || buf[i] == &#8216;,&#8217;) buf[i] = 0;<br \/> }<\/p>\n<p> for(int i = 0; i &lt; 256; i++) {<br \/> if(flag_start &amp;&amp; 0 == buf[i]) flag_start = 0;<br \/> if(0 == flag_start &amp;&amp; 0 != buf[i]) {<br \/> flag_start = 1;<br \/> cpuid[thdnum] = atoi(buf+i);<br \/> if(0 &gt; cpuid[thdnum] || CPU_MAX &lt;= cpuid[thdnum]) return -1;<br \/> thdnum++;<br \/> }<br \/> }<\/p>\n<p> return 0;<br \/>}<br \/>static int <br \/>parse_cmd(int argc, char **argv)<br \/>{<br \/> if(0 &lt; argc) {<br \/> thd_num = atoi(argv[0]);<br \/> if(0 &gt; thd_num) return -1;<br \/> argc&#8211;, argv++;<br \/> }<\/p>\n<p> if(0 &lt; argc) {<br \/> return parse_cpuid(argv[0]);<br \/> }<\/p>\n<p> return 0;<br \/>}<\/p>\n<p>static void* <br \/>task_root(void *arg)<br \/>{<br \/> register int seq = *(int*)arg;<br \/> int cid = cpuid[seq];<br \/> cpu_set_t cpumask;<br \/> pid_t pid = syscall(__NR_gettid);<\/p>\n<p> if(0 &lt;= cid &amp;&amp; CPU_MAX &gt; cid) {<br \/> \/\/\u7ed1\u5b9a CPUID<br \/> CPU_ZERO(&amp;cpumask);<br \/> CPU_SET(cid, &amp;cpumask);<br \/> sched_setaffinity(pid, sizeof(cpumask), &amp;cpumask);<br \/> usleep(1000);<br \/> printf(&#8220;task[%d] run on cpuid=%dn&#8221;, seq, cid);<br \/> }<br \/> else {<br \/> printf(&#8220;task[%d] run on cpuid=auton&#8221;, seq);<br \/> }<\/p>\n<p> while(1) {<br \/> tdata[seq].a += 1;<br \/> tdata[seq].b += tdata[seq].e*8;<br \/> tdata[seq].c += 1;<br \/> tdata[seq].d += tdata[seq].e*8;<br \/> }<\/p>\n<p> return NULL;<br \/>}<\/p>\n<p>static void* <br \/>stat_root(void *arg)<\/p>\n<p>{<br \/> arg = arg;<br \/> uint64_t ttl;<br \/> uint64_t d10[CPU_MAX];<\/p>\n<p> while(1) {<\/p>\n<p> if(0 == flag_stat) {<br \/> usleep(1000);<br \/> }<br \/> else {<br \/> flag_stat = 0;<br \/> ttl = 0;<br \/> for(int i = 0; i &lt; thd_num; i++) {<br \/> tmp[i] = tdata[i].a;<br \/> }<\/p>\n<p> for(int i = 0; i &lt; thd_num; i++) {<br \/> tmp[i] = tdata[i].a;<br \/> d10[i] = tmp[i] &#8211; prev[i];<br \/> ttl += d10[i];<br \/> }<\/p>\n<p> printf(&#8220;nTotal do times: %lu(sec)n&#8221;, ttl\/10);<br \/> for(int i = 0; i &lt; thd_num; i++) {<br \/> if(-1 == cpuid[i]) {<br \/> printf(&#8220;ttask[%d] cpu=auto do times: %lu(\/sec)n&#8221;, i, d10[i]\/10);<br \/> }<br \/> else {<br \/> printf(&#8220;ttask[%d] cpu=%d do times: %lu(\/sec)n&#8221;, i, cpuid[i], d10[i]\/10);<br \/> }<\/p>\n<p> prev[i] = tmp[i];<br \/> }<br \/> }<br \/> }<\/p>\n<p> return NULL;<br \/>}<\/p>\n<p>static void* <br \/>timer_root(void *arg)<br \/>{<br \/> arg = arg;<br \/> uint64_t ttl;<br \/> uint64_t d10[CPU_MAX];<\/p>\n<p> while(1) {<br \/> sleep(10);<br \/> flag_stat = 1;<br \/> }<\/p>\n<p> return NULL;<br \/>}<\/p>\n<p>static int <br \/>task_set(void)<br \/>{<br \/> pthread_t thdid;<br \/> for(int i = 0; i &lt; thd_num; i++) {<br \/> pthread_create(&amp;thdid, NULL, task_root, &amp;seq[i]);<br \/> }<\/p>\n<p> pthread_create(&amp;thdid, NULL, timer_root, NULL);<br \/> pthread_create(&amp;thdid, NULL, stat_root, NULL);<\/p>\n<p> return 0;<br \/>}<\/p>\n<p>int main(int argc, char **argv)<br \/>{<br \/> \/\/program thread-num thread-cpu-seq<br \/> init();<br \/> argc&#8211;, argv++;<br \/> if(-1 == parse_cmd(argc, argv)) {<br \/> printf(&#8220;Input param errorn&#8221;);<br \/> exit(-1);<br \/> }<\/p>\n<p> task_set();<\/p>\n<p> while(1) {<br \/> sleep(1000);<br \/> }<\/p>\n<p> return 0;<br \/>}<\/p>\n<p>\u53cc CPU-4 \u6838-\u8d85\u7ebf\u7a0b Intel(R) Xeon(R) CPU E5620 @ 2.40GHz<br \/>\u903b\u8f91 CPU 0 8 2 10 4 12 6 14 1 9 3 11 5 13 7 15<br \/>pysical id 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0<br \/>core id 0 0 1 1 9 9 10 10 0 0 1 1 9 9 10 10<br \/>\u7cfb\u7edf\uff1acentos8<\/p>\n<p>\u6d4b\u8bd5\u7ebf\u7a0b\uff1a<br \/>\u5355\u7ebf\u7a0b\u7ed1\u5b9a 0 \u903b\u8f91 CPU \u6d4b\u8bd5\u7ed3\u679c\uff08\u6267\u884c\u7d2f\u52a0\u6b21\u6570\uff09 108363138 \uff08\u6b21 \/\u79d2\uff09<br \/>\u53cc\u7ebf\u7a0b\u7ed1\u5b9a 0,1 \u903b\u8f91 CPU \u6d4b\u8bd5\u7ed3\u679c\uff08\u6267\u884c\u7d2f\u52a0\u6b21\u6570\uff09 79961987 \uff08\u6b21 \/\u79d2\uff09<br \/>3 \u7ebf\u7a0b\u7ed1\u5b9a 0,1,2 \u903b\u8f91 CPU \u6d4b\u8bd5\u7ed3\u679c\uff08\u6267\u884c\u7d2f\u52a0\u6b21\u6570\uff09 108639280 \uff08\u6b21 \/\u79d2\uff09<br \/>4 \u7ebf\u7a0b\u7ed1\u5b9a 0,1,2,3 \u903b\u8f91 CPU \u6d4b\u8bd5\u7ed3\u679c\uff08\u6267\u884c\u7d2f\u52a0\u6b21\u6570\uff09 97511278 \uff08\u6b21 \/\u79d2\uff09<br \/>5 \u7ebf\u7a0b\u7ed1\u5b9a 0,1,2,3,4 \u903b\u8f91 CPU \u6d4b\u8bd5\u7ed3\u679c\uff08\u6267\u884c\u7d2f\u52a0\u6b21\u6570\uff09 115751101 \uff08\u6b21 \/\u79d2\uff09<br \/>6 \u7ebf\u7a0b\u7ed1\u5b9a 0,1,2,3,4,5 \u903b\u8f91 CPU \u6d4b\u8bd5\u7ed3\u679c\uff08\u6267\u884c\u7d2f\u52a0\u6b21\u6570\uff09 138198505 \uff08\u6b21 \/\u79d2\uff09<br \/>7 \u7ebf\u7a0b\u7ed1\u5b9a 0,1,2,3,4,5,6 \u903b\u8f91 CPU \u6d4b\u8bd5\u7ed3\u679c\uff08\u6267\u884c\u7d2f\u52a0\u6b21\u6570\uff09 129034696 \uff08\u6b21 \/\u79d2\uff09<br \/>8 \u7ebf\u7a0b\u7ed1\u5b9a 0,1,2,3,4,5,6,7 \u903b\u8f91 CPU \u6d4b\u8bd5\u7ed3\u679c\uff08\u6267\u884c\u7d2f\u52a0\u6b21\u6570\uff09 126871151 \uff08\u6b21 \/\u79d2\uff09<br \/>9 \u7ebf\u7a0b\u7ed1\u5b9a 0,1,2,3,4,5,6,7,8 \u903b\u8f91 CPU \u6d4b\u8bd5\u7ed3\u679c\uff08\u6267\u884c\u7d2f\u52a0\u6b21\u6570\uff09 157512706 \uff08\u6b21 \/\u79d2\uff09<br \/>10 \u7ebf\u7a0b\u7ed1\u5b9a 0,1,2,3,4,5,6,7,8,9 \u903b\u8f91 CPU \u6d4b\u8bd5\u7ed3\u679c\uff08\u6267\u884c\u7d2f\u52a0\u6b21\u6570\uff09 141989197 \uff08\u6b21 \/\u79d2\uff09<br \/> [\u7ed3\u8bba] <br \/> \u589e\u52a0\u7ebf\u7a0b\u6570\u91cf\u5e76\u6ca1\u6709\u60f3\u8c61\u4e2d\u7684\u589e\u52a0\u6027\u80fd\u3002<br \/> \u9884\u671f\u7684\u76ee\u6807\u5e94\u8be5\u662f\u589e\u52a0\u7ebf\u7a0b\u6570\uff08\u5728\u540c\u4e00\u4e2a CPU \u4e2d\u5206\u914d\u7ed9\u4e0d\u540c\u7684 CORE \u7684\u65f6\u5019\u6027\u80fd\u5e94\u8be5\u500d\u6570\u589e\u52a0\uff0c\u5b9e\u9645\u4e0a\u6ca1\u6709\uff09\uff0c\u548c\u9884\u671f\u7684\u76f8\u5dee\u5f88\u5927\u3002<\/p>\n<p>\u6d4b\u8bd5\u8fdb\u7a0b\uff1a<br \/>\u6bcf\u4e2a\u8fdb\u7a0b\u5f00\u59cb\u4e00\u4e2a\u7d2f\u52a0\u7edf\u8ba1\u7ebf\u7a0b<br \/>\u6d4b\u8bd5\u7ed3\u679c<br \/>\u8fdb\u7a0b 1 \u7ed1\u5b9a CPU0 \u6d4b\u8bd5\u7ed3\u679c\uff08\u6267\u884c\u7d2f\u52a0\u6b21\u6570\uff09 102847956 \uff08\u6b21 \/\u79d2\uff09<br \/>\u8fdb\u7a0b 2 \u7ed1\u5b9a CPU2 \u6d4b\u8bd5\u7ed3\u679c\uff08\u6267\u884c\u7d2f\u52a0\u6b21\u6570\uff09 102903297 \uff08\u6b21 \/\u79d2\uff09<br \/>\u8fdb\u7a0b 3 \u7ed1\u5b9a CPU4 \u6d4b\u8bd5\u7ed3\u679c\uff08\u6267\u884c\u7d2f\u52a0\u6b21\u6570\uff09 102909125 \uff08\u6b21 \/\u79d2\uff09<br \/>\u8fdb\u7a0b 4 \u7ed1\u5b9a CPU6 \u6d4b\u8bd5\u7ed3\u679c\uff08\u6267\u884c\u7d2f\u52a0\u6b21\u6570\uff09 102934502 \uff08\u6b21 \/\u79d2\uff09<br \/>\u8fdb\u7a0b 5 \u7ed1\u5b9a CPU3 \u6d4b\u8bd5\u7ed3\u679c\uff08\u6267\u884c\u7d2f\u52a0\u6b21\u6570\uff09 107560180 \uff08\u6b21 \/\u79d2\uff09<br \/>\u5047\u5982\u5f00\u4e00\u4e2a\u8fdb\u7a0b\uff0c\u7ed1\u5b9a CPU \u548c\u522b\u7684\u8fdb\u7a0b\u7ed1\u5b9a\u7684 CPU \u5728\u540c\u4e00\u4e2a CPU \u7684\u540c\u4e00\u4e2a CORE \u4e0b\u7684\u8bdd\uff0c\u6027\u80fd\u4f1a\u53d8\u6210\u4e00\u534a\uff0c\u4e24\u4e2a\u8fdb\u7a0b\u52a0\u8d77\u6765\u548c\u5355\u72ec\u53ea\u5f00\u4e00\u4e2a\u8fdb\u7a0b\u7684\u65f6\u5019\u5dee\u4e0d\u591a\uff0c<br \/> [\u7ed3\u8bba] <br \/>\u5f00\u8fdb\u7a0b\u5904\u7406\u6570\u636e\u6ca1\u6709\u76f8\u4e92\u5f71\u54cd\uff0c\u548c\u9884\u671f\u7684\u4e00\u6837\uff0c\u589e\u52a0\u8fdb\u7a0b\u6027\u80fd\u500d\u6570\u589e\u52a0\u3002<br \/>\u4e24\u4e2a\u8fdb\u7a0b\u5f00\u5728\u540c\u4e00\u4e2a CPU \u7684\u540c\u4e00\u4e2a CORE \u4e2d\u7684\u65f6\u5019\u6027\u80fd\u51cf\u534a\uff0c\u56e0\u4e3a\u4f7f\u7528\u540c\u4e00\u5957 CORE \u7684\u8ba1\u7b97\u5355\u5143\uff0c\u6240\u4ee5\u53ef\u4ee5\u7406\u89e3\u3002<\/p>\n<p> [\u7591\u95ee] <br \/>\u591a\u7ebf\u7a0b\u7684\u6027\u80fd\u53d8\u5316\u5e94\u8be5\u548c\u591a\u8fdb\u7a0b\u7684\u4e00\u6837\u9884\u671f\uff0c\u5b9e\u9645\u6d4b\u8bd5\u7ed3\u679c\u591a\u7ebf\u7a0b\u7684\u6027\u80fd\u63d0\u5347\u5f88\u5c11\u3002\uff08\u5230\u5e95\u662f\u4ec0\u4e48\u56e0\u7d20\u5bfc\u81f4\u7684\u8fd9\u4e2a\u6d4b\u8bd5\u7ed3\u679c\uff0c\u6ca1\u6709\u601d\u8def\uff0c\u6709\u77e5\u9053\u7684\u5927\u4f6c\u80fd\u544a\u8bc9\u4e00\u4e0b\u5417\uff1f\uff1f\uff1f      <\/div>\n<div> <b>\u5927\u4f6c\u6709\u8a71\u8aaa<\/b> (<span>6<\/span>)        <\/div>\n<div> <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<ul>\n<li data-pid=\"4018672\" data-uid=\"2\">\n<div>\n<div>\n<div> <span>\u8cc7\u6df1\u5927\u4f6c : msg7086 <\/span>  <\/div>\n<div> <i title=\"\u5f15\u7528\"><\/i>  <span>          <\/span> <\/div>\n<\/p><\/div>\n<div>                                                             \u4f60\u7528\u591a\u7ebf\u7a0b\u8dd1\u7684\u65f6\u5019\uff0cCPU \u5403\u6ee1\u4e86\u5417\uff1f                                                            <\/div>\n<\/p><\/div>\n<\/li>\n<li data-pid=\"4018673\" data-uid=\"2\">\n<div>\n<div>\n<div> <span>\u4e3b<\/span> <span>\u8cc7\u6df1\u5927\u4f6c : tom82232 <\/span>  <\/div>\n<div> <i title=\"\u5f15\u7528\"><\/i>  <span>          <\/span> <\/div>\n<\/p><\/div>\n<div>                                                             @msg7086 CPU \u662f 100%us                                                            <\/div>\n<\/p><\/div>\n<\/li>\n<li data-pid=\"4018674\" data-uid=\"2\">\n<div>\n<div>\n<div> <span>\u8cc7\u6df1\u5927\u4f6c : msg7086 <\/span>  <\/div>\n<div> <i title=\"\u5f15\u7528\"><\/i>  <span>          <\/span> <\/div>\n<\/p><\/div>\n<div>                                                             @tom82232 \u6211\u7684\u610f\u601d\u662f\uff0c\u6bcf\u4e2a Core \u90fd\u5403\u6ee1\u4e86\u4e48\u3002\u7136\u540e\u5c31\u662f\u770b\u770b\u591a\u7ebf\u7a0b\u4e0b\u7684\u7b97\u529b\u548c\u65f6\u95f4\u8ba1\u7b97\u6709\u6ca1\u6709\u9519\u3002<br \/>\u4e0a\u9762\u4ee3\u7801\u8d34\u5f97\u592a\u4e71\u5b9e\u5728\u8bfb\u4e0d\u4e0b\u53bb\u4e86\u3002                                                            <\/div>\n<\/p><\/div>\n<\/li>\n<li data-pid=\"4018675\" data-uid=\"2\">\n<div>\n<div>\n<div> <span>\u8cc7\u6df1\u5927\u4f6c : besto <\/span>  <\/div>\n<div> <i title=\"\u5f15\u7528\"><\/i>  <span>          <\/span> <\/div>\n<\/p><\/div>\n<div>                                                             \u5148\u8bf4\u70b9 \u522b\u7684\uff0ctimer \u505a\u7684\u6beb\u65e0\u610f\u4e49\uff0c\u4f60\u8fd9\u91cc\u9762\u5168\u90e8\u6ca1 mutex\uff0c\u4e0d\u5982 stat \u7684\u65f6\u5019\u5c31\u4e00\u4e2a\u7b80\u5355\u903b\u8f91 sleep(x), \u7136\u540e\u76f4\u63a5\u7b97\u8fd9\u4e2a\u671f\u95f4\u5230\u5e95\u7b97\u4e86\u591a\u5c11\u3002\u591a\u7ebf\u7a0b\u6ca1\u6709\u663e\u8457\u63d0\u5347\u6211\u89c9\u5f97\u6709\u5f88\u5927\u539f\u56e0\u662f\u548c cache \u547d\u4e2d\u6709\u5173\u7cfb\u3002 \u8bd5\u8bd5\u52a0\u5927\u8ba1\u7b97\u91cf\uff1a<br \/>diff &#8211;git a\/b.c b\/b.c<br \/>index 5168b0d..a92dc5e 100644<br \/>&#8212; a\/b.c<br \/>+++ b\/b.c<br \/>@@ -28,6 +28,8 @@ uint64_t prev[CPU_MAX];<br \/> uint64_t tmp[CPU_MAX];<br \/> int flag_stat = 0;<\/p>\n<p>+uint8_t *cache;<br \/>+<br \/> static void<br \/> init(void)<br \/> {<br \/>@@ -116,6 +118,7 @@ tdata[seq].a += 1;<br \/> tdata[seq].b += tdata[seq].e*8;<br \/> tdata[seq].c += 1;<br \/> tdata[seq].d += tdata[seq].e*8;<br \/>+memset(cache, 0, 64*1024*1024);<br \/> }<\/p>\n<p> return NULL;<br \/>@@ -195,6 +198,7 @@ return 0;<\/p>\n<p> int main(int argc, char **argv)<br \/> {<br \/>+ cache = malloc(64*1024*1024);<br \/> \/\/program thread-num thread-cpu-seq<br \/> init();<br \/> argc&#8211;, argv++;                                                            <\/div>\n<\/p><\/div>\n<\/li>\n<li data-pid=\"4018676\" data-uid=\"2\">\n<div>\n<div>\n<div> <span>\u4e3b<\/span> <span>\u8cc7\u6df1\u5927\u4f6c : tom82232 <\/span>  <\/div>\n<div> <i title=\"\u5f15\u7528\"><\/i>  <span>          <\/span> <\/div>\n<\/p><\/div>\n<div>                                                             @besto timer \u53ef\u4ee5\u4e0d\u53bb\u8003\u8651\uff0c\u90fd\u6ca1\u5173\u7cfb\u3002\u7d2f\u52a0\u7684\u65f6\u5019\u5904\u7406\u7684\u6570\u636e\u90fd\u6ca1\u6709\u53d8\u5316\uff0c\u8fd9\u6837\u4e5f\u4f1a\u53d1\u751f cache \u4e0d\u547d\u4e2d\uff1f                                                            <\/div>\n<\/p><\/div>\n<\/li>\n<li data-pid=\"4018677\" data-uid=\"2\">\n<div>\n<div>\n<div> <span>\u8cc7\u6df1\u5927\u4f6c : besto <\/span>  <\/div>\n<div> <i title=\"\u5f15\u7528\"><\/i>  <span>          <\/span> <\/div>\n<\/p><\/div>\n<div>                                                             @tom82232 \u8bf4\u5b9e\u8bdd\uff0c\u6211\u4e0d\u80fd\u786e\u5b9a\u662f\u4e0d\u662f cache \u547d\u4e2d\u5bfc\u81f4\uff0c\u4f46\u73b0\u8c61\u8ba9\u6211\u5f88\u6000\u7591\u3002\u53e6\u4e00\u4e2a\u53ef\u6000\u7591\u7684\u70b9\u5c31\u662f\u4f60\u7684\u8fd9\u4e2a\u8ba1\u7b97\u8fd0\u7b97\u91cf\u7684\u65b9\u6cd5\u3002\u3002\u3002\u6240\u4ee5\u8ba9\u6bcf\u4e2a\u5faa\u73af\u591a\u505a\u70b9\u4e8b\u60c5\u4e5f\u53ef\u80fd\u662f\u51cf\u5c11\u8bef\u5dee\u7684\u771f\u6b63\u539f\u56e0                                                            <\/div>\n<\/p><\/div>\n<\/li>\n<li>\n","protected":false},"excerpt":{"rendered":"<p>C \u8bed\u8a00\u591a\u8fdb\u7a0b vs \u591a\u7ebf\u7a0b\u6027\u80fd\u95ee&hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[],"tags":[],"_links":{"self":[{"href":"http:\/\/4563.org\/index.php?rest_route=\/wp\/v2\/posts\/187806"}],"collection":[{"href":"http:\/\/4563.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/4563.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/4563.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/4563.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=187806"}],"version-history":[{"count":0,"href":"http:\/\/4563.org\/index.php?rest_route=\/wp\/v2\/posts\/187806\/revisions"}],"wp:attachment":[{"href":"http:\/\/4563.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=187806"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/4563.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=187806"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/4563.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=187806"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}