-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsearch.xml
809 lines (768 loc) · 40.3 KB
/
search.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
<?xml version="1.0" encoding="utf-8"?>
<search>
<entry>
<title>first_move</title>
<url>/2021/07/27/first-move/</url>
<content><![CDATA[<h1 id="这是这个静态Blog的第一篇文章"><a href="#这是这个静态Blog的第一篇文章" class="headerlink" title="这是这个静态Blog的第一篇文章"></a>这是这个静态Blog的第一篇文章</h1><p>由于之前的服务器没续费导致之前用wordpress写的好多文章都没了,不过我在尝试找回。</p>
<p>这个Blog的意义在于我想将之后我学到的东西尽力的记录在这里,以备后续回忆。</p>
<span id="more"></span>
<p>祝我好运!</p>
<img src="/2021/07/27/first-move/1.png" class="" title="图片1">
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/[email protected]/dist/kity.min.js"></script><script type="text/javascript" src="https://cdn.jsdelivr.net/npm/[email protected]/dist/kityminder.core.min.js"></script><script defer="true" type="text/javascript" src="https://cdn.jsdelivr.net/npm/[email protected]/dist/mindmap.min.js"></script><link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/mindmap.min.css">]]></content>
<categories>
<category>告示</category>
</categories>
</entry>
<entry>
<title>发布与编辑</title>
<url>/2021/07/27/hello-world/</url>
<content><![CDATA[<p>本篇是有关于文章发布相关指令以及部分格式编辑方式的文章。</p>
<span id="more"></span>
<h2 id="快速开始"><a href="#快速开始" class="headerlink" title="快速开始"></a>快速开始</h2><h3 id="新建文章"><a href="#新建文章" class="headerlink" title="新建文章"></a>新建文章</h3><figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">$ hexo new <span class="string">"My New Post"</span></span><br></pre></td></tr></table></figure>
<h3 id="启动hexo"><a href="#启动hexo" class="headerlink" title="启动hexo"></a>启动hexo</h3><figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">$ hexo server</span><br><span class="line">$ hexo s</span><br></pre></td></tr></table></figure>
<h3 id="渲染静态页面"><a href="#渲染静态页面" class="headerlink" title="渲染静态页面"></a>渲染静态页面</h3><figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">$ hexo generate</span><br><span class="line">$ hexo g</span><br></pre></td></tr></table></figure>
<h3 id="部署网页"><a href="#部署网页" class="headerlink" title="部署网页"></a>部署网页</h3><figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">$ hexo deploy</span><br><span class="line">$ hexo d</span><br></pre></td></tr></table></figure>
<h3 id="清除-渲染-部署"><a href="#清除-渲染-部署" class="headerlink" title="清除+渲染+部署"></a>清除+渲染+部署</h3><figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">$ hexo clean && hexo g && hexo d</span><br><span class="line">$ hexo clean && hexo g -d</span><br></pre></td></tr></table></figure>
<h2 id="文章格式"><a href="#文章格式" class="headerlink" title="文章格式"></a>文章格式</h2><h3 id="加密"><a href="#加密" class="headerlink" title="加密"></a>加密</h3><figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">password: 密码在这里</span><br></pre></td></tr></table></figure>
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/[email protected]/dist/kity.min.js"></script><script type="text/javascript" src="https://cdn.jsdelivr.net/npm/[email protected]/dist/kityminder.core.min.js"></script><script defer="true" type="text/javascript" src="https://cdn.jsdelivr.net/npm/[email protected]/dist/mindmap.min.js"></script><link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/mindmap.min.css">]]></content>
<categories>
<category>告示</category>
</categories>
</entry>
<entry>
<title>加密测试</title>
<url>/2021/07/30/%E5%8A%A0%E5%AF%86%E6%B5%8B%E8%AF%95/</url>
<content><![CDATA[<div class="hbe hbe-container" id="hexo-blog-encrypt" data-wpm="Oh, this is an invalid password. Check and try again, please." data-whm="OOPS, these decrypted content may changed, but you can still have a look.">
<script id="hbeData" type="hbeData" data-hmacdigest="8bf64fc329aab110beb4bf711c1216c2d915bba8166607c381fc59afc064e041">165d50f05814027fb7fe5e4ae8a088d85e75c61d48a21fe4f92c66618cda8718aded696b6d7976ed7665f2fd4f349bf2f624708d3a6f73318e6b9fe92f2e9ba753a4e70a9524add18a09baee09a1409f09e1b7c6fadd8d57ca48e619fa97df018213bb127f7b99b6dc4b9202e2fffcb3e0427c398af58b5b81a9c7f46ee2ec352e64217470d45b88521e07918191614585ea8ca6f5c2f9cb635793882c93eece438f491ac5cf04418382d7961b7dbe25ae23b32eef2d62f6722316dcc22298c7a48c7bea9198dc8a8cc6535a6b8167a169483e91f1804591b14f6538635893c1e9666688724bbe4e2785b2db7d8367e9be8122a410872e99fd21eb9be80b433ef87fee77b86917da04b181be09d5ee34b47e761b95e978ac09db683514f343e4e5a06bd4ec34bd5e3c38c8533063c19dca1542351f12a2a5e67b0075de63f41a4563d1af77d22b70b9a60912bc9422ab82845fc99bcba6c6cf66481b3eb147e0f4544d201092e6fac19f768ae70351a2ea52e39ecf55fbd7b082e2b56a0f602f667bc5366327e21e902d92c83d5d0095d08fbed6014f4e2f805f5c12339d54fb06ef3af7503d6d08a898592c0131887ce4923fa62b4a2462f4658ec7049059fec52cc1df4e2e2853dcebdbeb4c317d28b7bc0809d762abb1d6030a7c03a34357137ca155e7bafdebf583d0f7c4c644f6e04d04f174e4d416087e51ad3b5416583f868311be4d59e07d04dfd35b72e06c7eef190eaf52567af7c81053f0d1d405e5a5acd6e294ccb6d5952e909010c225b1a8c4d45f1ada98341dcc898d31b154c8c968ffb8230a4967c2496e414fada509c3d09477b51eba318634abfe4bad424aef50182f15283df99ceb80c3434b021a9d5d060f6a9a670593d2c97b73440ec74722a4293737f3bda8d9635845e44837d2e312f765006a432c7e3d24578d65e908b3d6eefd1c4bbc0d7b9c0857e98dd73e2b43a715bcea637210fe855f37bf68b0faad880e2be5bf035723f1b60633942358a2d2d9137d5727ba1631f65258f0092944513542bdd41ad915c3b760549c8072502c3f9263291c5aa7dae57e1ac9d0f37f3ce38b19aded05fcf49e8c79f2e3de7256e2cec777e9f8eb6ad53595</script>
<div class="hbe hbe-content">
<div class="hbe hbe-input hbe-input-default">
<input class="hbe hbe-input-field hbe-input-field-default" type="password" id="hbePass">
<label class="hbe hbe-input-label hbe-input-label-default" for="hbePass">
<span class="hbe hbe-input-label-content hbe-input-label-content-default">Hey, password is required here.</span>
</label>
</div>
</div>
</div>
<script data-pjax src="/lib/hbe.js"></script><link href="/css/hbe.style.css" rel="stylesheet" type="text/css">]]></content>
<categories>
<category>告示</category>
</categories>
</entry>
<entry>
<title>基于ardunio的蓝牙开门装置</title>
<url>/2021/07/28/%E5%9F%BA%E4%BA%8Eardunio%E7%9A%84%E8%93%9D%E7%89%99%E5%BC%80%E9%97%A8%E8%A3%85%E7%BD%AE/</url>
<content><![CDATA[<h1 id="蓝牙舵机"><a href="#蓝牙舵机" class="headerlink" title="蓝牙舵机"></a>蓝牙舵机</h1><p>我用这个来开宿舍门的,可惜后面未实装,但在家里试过了可以。</p>
<p>其实装置本身很简单,总共三个模块 。</p>
<p>分别是<code>Ardunio</code>、<code>HC-05</code>、<code>舵机</code>,都是上淘宝买的,加加起来差不多50左右。</p>
<p>对了设备之间连接的杜邦线之类的也别忘了。</p>
<span id="more"></span>
<h2 id="原理"><a href="#原理" class="headerlink" title="原理"></a>原理</h2><p>其实整个装置的原理非常简单,就是通过设备向蓝牙模块<code>HC-05</code>发送特定的字符,然后蓝牙模块将受到的字符传输给上位机,也就是<code>Ardunio</code>,然后经过一段很简单的if判断是否为正确字符后就可以向舵机发送指定电平让舵机转动从而带动某样东西。</p>
<p>理论上这个装置不仅仅是开门,有很多地方都可以用到,只要传动装置的力够,我买的舵机只有10N,差不多可以拉动一公斤的东西。</p>
<p>哦对了,如果真实装最好考虑一下电源,用电池或者小充电宝啥的,值得注意的是现在的充电宝都有放电检测,<code>Ardunio</code>的耗电太小可能不在检测范围内导致充电宝断电,非常难受。</p>
<h2 id="代码"><a href="#代码" class="headerlink" title="代码"></a>代码</h2><figure class="highlight c"><table><tr><td class="code"><pre><span class="line"><span class="meta">#<span class="meta-keyword">include</span> <span class="meta-string"><SoftwareSerial.h></span> <span class="comment">//库文件</span></span></span><br><span class="line"><span class="meta">#<span class="meta-keyword">include</span> <span class="meta-string"><Servo.h></span> </span></span><br><span class="line"></span><br><span class="line">Servo myservo; </span><br><span class="line"><span class="function">SoftwareSerial <span class="title">BT</span><span class="params">(<span class="number">8</span>, <span class="number">9</span>)</span></span>; <span class="comment">//设置蓝牙与板子的连接端口。 pin 8 接蓝牙的 TXD pin 9 接蓝牙的 RXD</span></span><br><span class="line"><span class="keyword">char</span> X; <span class="comment">//定义一个变量存数据。</span></span><br><span class="line"></span><br><span class="line"><span class="function"><span class="keyword">void</span> <span class="title">setup</span><span class="params">()</span> </span></span><br><span class="line"><span class="function"></span>{</span><br><span class="line"> Serial.begin(<span class="number">9600</span>); <span class="comment">//串口监视器通信速率,38400</span></span><br><span class="line"> Serial.println(<span class="string">"蓝牙连接正常"</span>); <span class="comment">//串口监视器显示蓝牙正常状态</span></span><br><span class="line"> myservo.attach(<span class="number">10</span>); <span class="comment">// 将引脚10上的舵机与声明的舵机对象连接起来</span></span><br><span class="line"> BT.begin(<span class="number">9600</span>); <span class="comment">//蓝牙通信速率,默认一般为 38400</span></span><br><span class="line">}</span><br><span class="line"></span><br><span class="line"><span class="function"><span class="keyword">void</span> <span class="title">loop</span><span class="params">()</span> <span class="comment">//大循环,执行。</span></span></span><br><span class="line"><span class="function"></span>{</span><br><span class="line"> <span class="keyword">if</span> (Serial.available()) <span class="comment">//检测:【串口】如果数据写入,则执行。</span></span><br><span class="line"> {</span><br><span class="line"> X = Serial.read(); <span class="comment">//把写入的数据给到自定义变量 X</span></span><br><span class="line"> BT.print(X); <span class="comment">//把数据给蓝牙</span></span><br><span class="line"> }</span><br><span class="line"></span><br><span class="line"> <span class="keyword">if</span> (BT.available()) <span class="comment">//检测:【蓝牙】如果数据写入,则执行。</span></span><br><span class="line"> {</span><br><span class="line"> X = BT.read(); <span class="comment">//把检测到的数据给到自定义变量 X</span></span><br><span class="line"> Serial.print(X); <span class="comment">//把从蓝牙得到的数据显示到串口监视器</span></span><br><span class="line"> }</span><br><span class="line"> <span class="keyword">if</span>(X==<span class="string">'O'</span>)</span><br><span class="line"> {</span><br><span class="line"> Serial.println(<span class="string">"检测到开锁信号,正在开锁"</span>);</span><br><span class="line"> myservo.write(<span class="number">180</span>); </span><br><span class="line"> delay(<span class="number">8000</span>);</span><br><span class="line"> X=<span class="string">'L'</span>; </span><br><span class="line"> Serial.println(<span class="string">"开锁时间结束"</span>); </span><br><span class="line"> delay(<span class="number">100</span>); </span><br><span class="line"> }</span><br><span class="line"> <span class="keyword">if</span>(X!=<span class="string">'O'</span>)</span><br><span class="line"> { </span><br><span class="line"> myservo.write(<span class="number">0</span>); </span><br><span class="line"> }</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h3 id="代码解析"><a href="#代码解析" class="headerlink" title="代码解析"></a>代码解析</h3><p>上面的代码并未有什么很难的地方,就是一个基本框架。可以在里面添加很多东西,比如 <code>myservo.write(180);</code>这里是舵机的转动角度,理论上配合合适的时延和不同的转动角度可以办到一些更加精细的活。</p>
<p>还可以在<code>if</code>里添加<code>else</code>做到更多的判定。总的来说这就是个框架,补一补还是能在很多地方的。我懒,就算了,开个门得了。😂</p>
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/[email protected]/dist/kity.min.js"></script><script type="text/javascript" src="https://cdn.jsdelivr.net/npm/[email protected]/dist/kityminder.core.min.js"></script><script defer="true" type="text/javascript" src="https://cdn.jsdelivr.net/npm/[email protected]/dist/mindmap.min.js"></script><link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/mindmap.min.css">]]></content>
<categories>
<category>ardunio</category>
</categories>
<tags>
<tag>单片机</tag>
</tags>
</entry>
<entry>
<title>自学C++_01</title>
<url>/2021/07/29/%E8%87%AA%E5%AD%A6C++_01/</url>
<content><![CDATA[<h1 id="初学C"><a href="#初学C" class="headerlink" title="初学C++"></a>初学C++</h1><p>在学校的课程里,大一曾学过<code>C语言</code>,当时啥啥分不清,天真的以为<code>C</code>就是<code>C++</code>毕竟当时是一点都不了解,后来在深入学习后才明白<code>C</code>和<code>C++</code>是两个东西。</p>
<p>由于带着<code>C</code>的基础,所以在自学过程中会粗略学习基础,例如输出<code>函数</code>、<code>变量</code>、<code>注释</code>、<code>基本语法</code>。</p>
<p>当然,我还会着重<code>指针</code>相关的知识,毕竟这才是痛点。</p>
<span id="more"></span>
<h2 id="输出Hello-World"><a href="#输出Hello-World" class="headerlink" title="输出Hello World"></a>输出Hello World</h2><p>几乎在我学习和了解到的计算机语言里,都是从如何打印Hello World开始的,比如<code>C</code>、<code>Python</code>、<code>JAVA</code>。</p>
<figure class="highlight c++"><table><tr><td class="code"><pre><span class="line"><span class="meta">#<span class="meta-keyword">include</span><span class="meta-string"><iostream></span></span></span><br><span class="line"><span class="keyword">using</span> <span class="keyword">namespace</span> std;</span><br><span class="line"></span><br><span class="line"><span class="function"><span class="keyword">int</span> <span class="title">main</span><span class="params">()</span> </span></span><br><span class="line"><span class="function"></span>{</span><br><span class="line"> cout << <span class="string">"Hello World"</span> << endl;</span><br><span class="line"> <span class="built_in">system</span>(<span class="string">"pause"</span>);</span><br><span class="line"> <span class="keyword">return</span> <span class="number">0</span>;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<p>与<code>C</code>中的<code>printf</code>还是不太一样的。</p>
<h1 id="注释"><a href="#注释" class="headerlink" title="注释"></a>注释</h1><p>和<code>C</code>一样,分单行和多行</p>
<figure class="highlight c++"><table><tr><td class="code"><pre><span class="line"><span class="comment">//这是单行注释</span></span><br><span class="line"></span><br><span class="line"><span class="comment">/* </span></span><br><span class="line"><span class="comment">这是多行注释</span></span><br><span class="line"><span class="comment">这是多行注释</span></span><br><span class="line"><span class="comment">这是多行注释</span></span><br><span class="line"><span class="comment">*/</span></span><br></pre></td></tr></table></figure>
<h1 id="变量"><a href="#变量" class="headerlink" title="变量"></a>变量</h1><p>依旧和<code>C</code>一样。</p>
<p><strong>语法</strong>:<code>数据类型 变量名 = 初始值;</code></p>
<figure class="highlight c++"><table><tr><td class="code"><pre><span class="line"><span class="keyword">int</span> a = <span class="number">1</span>;</span><br></pre></td></tr></table></figure>
<h1 id="常量"><a href="#常量" class="headerlink" title="常量"></a>常量</h1><p>也就是无法修改的变量,C++中有两种。</p>
<figure class="highlight c++"><table><tr><td class="code"><pre><span class="line"><span class="comment">//宏定义</span></span><br><span class="line"><span class="meta">#<span class="meta-keyword">define</span> a 1</span></span><br><span class="line"></span><br><span class="line"><span class="comment">//const修饰的变量</span></span><br><span class="line"><span class="keyword">const</span> <span class="keyword">int</span> a = <span class="number">1</span>;</span><br></pre></td></tr></table></figure>
<h1 id="关键字"><a href="#关键字" class="headerlink" title="关键字"></a>关键字</h1><table>
<thead>
<tr>
<th align="left"><strong>asm</strong></th>
<th><strong>do</strong></th>
<th><strong>if</strong></th>
<th><strong>return</strong></th>
<th><strong>typedef</strong></th>
</tr>
</thead>
<tbody><tr>
<td align="left"><strong>auto</strong></td>
<td><strong>double</strong></td>
<td><strong>inline</strong></td>
<td><strong>short</strong></td>
<td><strong>typeid</strong></td>
</tr>
<tr>
<td align="left"><strong>bool</strong></td>
<td><strong>dynamic_cast</strong></td>
<td><strong>int</strong></td>
<td><strong>signed</strong></td>
<td><strong>typename</strong></td>
</tr>
<tr>
<td align="left"><strong>break</strong></td>
<td><strong>else</strong></td>
<td><strong>long</strong></td>
<td><strong>sizeof</strong></td>
<td><strong>union</strong></td>
</tr>
<tr>
<td align="left"><strong>case</strong></td>
<td><strong>enum</strong></td>
<td><strong>mutable</strong></td>
<td><strong>static</strong></td>
<td><strong>unsigned</strong></td>
</tr>
<tr>
<td align="left"><strong>catch</strong></td>
<td><strong>explicit</strong></td>
<td><strong>namespace</strong></td>
<td><strong>static_cast</strong></td>
<td><strong>using</strong></td>
</tr>
<tr>
<td align="left"><strong>char</strong></td>
<td><strong>export</strong></td>
<td><strong>new</strong></td>
<td><strong>struct</strong></td>
<td><strong>virtual</strong></td>
</tr>
<tr>
<td align="left"><strong>class</strong></td>
<td><strong>extern</strong></td>
<td><strong>operator</strong></td>
<td><strong>switch</strong></td>
<td><strong>void</strong></td>
</tr>
<tr>
<td align="left"><strong>const</strong></td>
<td><strong>false</strong></td>
<td><strong>private</strong></td>
<td><strong>template</strong></td>
<td><strong>volatile</strong></td>
</tr>
<tr>
<td align="left"><strong>const_cast</strong></td>
<td><strong>float</strong></td>
<td><strong>protected</strong></td>
<td><strong>this</strong></td>
<td><strong>wchar_t</strong></td>
</tr>
<tr>
<td align="left"><strong>continue</strong></td>
<td><strong>for</strong></td>
<td><strong>public</strong></td>
<td><strong>throw</strong></td>
<td><strong>while</strong></td>
</tr>
<tr>
<td align="left"><strong>default</strong></td>
<td><strong>friend</strong></td>
<td><strong>register</strong></td>
<td><strong>true</strong></td>
<td></td>
</tr>
<tr>
<td align="left"><strong>delete</strong></td>
<td><strong>goto</strong></td>
<td><strong>reinterpret_cast</strong></td>
<td><strong>try</strong></td>
<td></td>
</tr>
</tbody></table>
<p>关键字挺多,希望到时候创建变量别给撞上吧。</p>
<h1 id="标识符命名规则"><a href="#标识符命名规则" class="headerlink" title="标识符命名规则"></a>标识符命名规则</h1><p>1.不能撞关键字(这个没啥好说的)</p>
<p>2.只能有<code>字母</code>、<code>数字</code>、<code>下划线</code></p>
<p>3.在2的基础上,第一个字符不能是<code>数字</code></p>
<p>4.大小写敏感</p>
<p>总结:和<code>C</code>一样。</p>
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/[email protected]/dist/kity.min.js"></script><script type="text/javascript" src="https://cdn.jsdelivr.net/npm/[email protected]/dist/kityminder.core.min.js"></script><script defer="true" type="text/javascript" src="https://cdn.jsdelivr.net/npm/[email protected]/dist/mindmap.min.js"></script><link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/mindmap.min.css">]]></content>
<categories>
<category>计算机语言</category>
</categories>
<tags>
<tag>C++</tag>
</tags>
</entry>
<entry>
<title>自学C++_02</title>
<url>/2021/08/01/%E8%87%AA%E5%AD%A6C++_02/</url>
<content><![CDATA[<h2 id="数据类型"><a href="#数据类型" class="headerlink" title="数据类型"></a>数据类型</h2><table>
<thead>
<tr>
<th><strong>数据类型</strong></th>
<th><strong>占用空间</strong></th>
<th>取值范围</th>
</tr>
</thead>
<tbody><tr>
<td>short(短整型)</td>
<td>2字节</td>
<td>(-2^15 ~ 2^15-1)</td>
</tr>
<tr>
<td>int(整型)</td>
<td>4字节</td>
<td>(-2^31 ~ 2^31-1)</td>
</tr>
<tr>
<td>long(长整形)</td>
<td>Windows为4字节,Linux为4字节(32位),8字节(64位)</td>
<td>(-2^31 ~ 2^31-1)</td>
</tr>
<tr>
<td>long long(长长整形)</td>
<td>8字节</td>
<td>(-2^63 ~ 2^63-1)</td>
</tr>
</tbody></table>
<p>有了long long格式,没瞅见过。</p>
<span id="more"></span>
<p>关于如何得到一个变量或者数据类型所占用的空间可以通过<code>sizeof</code>获得。</p>
<h4 id="sizeof"><a href="#sizeof" class="headerlink" title="sizeof"></a>sizeof</h4><p><strong>语法:</strong> <code>sizeof( 数据类型 / 变量)</code></p>
<figure class="highlight c++"><table><tr><td class="code"><pre><span class="line"><span class="built_in"><span class="keyword">sizeof</span></span>(<span class="keyword">short</span>)</span><br><span class="line"><span class="built_in"><span class="keyword">sizeof</span></span>(<span class="keyword">long</span>)</span><br><span class="line"> </span><br><span class="line"><span class="keyword">int</span> a=<span class="number">0</span>;</span><br><span class="line"><span class="built_in"><span class="keyword">sizeof</span></span>(a)</span><br></pre></td></tr></table></figure>
<h2 id="浮点型"><a href="#浮点型" class="headerlink" title="浮点型"></a>浮点型</h2><p>依旧和C一样有<code>float</code>、<code>double</code></p>
<table>
<thead>
<tr>
<th><strong>数据类型</strong></th>
<th><strong>占用空间</strong></th>
<th><strong>有效数字范围</strong></th>
</tr>
</thead>
<tbody><tr>
<td>float</td>
<td>4字节</td>
<td>7位有效数字</td>
</tr>
<tr>
<td>double</td>
<td>8字节</td>
<td>15~16位有效数字</td>
</tr>
</tbody></table>
<figure class="highlight c++"><table><tr><td class="code"><pre><span class="line"><span class="keyword">float</span> f1 = <span class="number">1.23f</span>;</span><br><span class="line"><span class="keyword">double</span> d1 = <span class="number">1.23</span>;</span><br><span class="line"></span><br><span class="line"><span class="comment">//科学计数法</span></span><br><span class="line"><span class="keyword">float</span> f2 = <span class="number">6e3</span>; <span class="comment">//相当于6*10^3 </span></span><br></pre></td></tr></table></figure>
<p>这里<code>float</code>后面多了个<code>f</code>是为了声明<code>1.23</code>这是一个<code>float</code>的格式,若没有这个<code>f</code>会默认为双精度,然后转换后由<code>float</code>接收。</p>
<h2 id="字符型"><a href="#字符型" class="headerlink" title="字符型"></a>字符型</h2><figure class="highlight c++"><table><tr><td class="code"><pre><span class="line"><span class="keyword">char</span> Ch=<span class="string">'f'</span>;</span><br><span class="line"> <span class="comment">//若要得到f的ASCLL码,强制转换为int即可</span></span><br><span class="line"> cout << <span class="built_in"><span class="keyword">int</span></span>(Ch) <<endl;</span><br><span class="line"> </span><br><span class="line"> </span><br></pre></td></tr></table></figure>
<table>
<thead>
<tr>
<th><strong>数据类型</strong></th>
<th><strong>占用空间</strong></th>
</tr>
</thead>
<tbody><tr>
<td>char</td>
<td>1字节</td>
</tr>
</tbody></table>
<p>和<code>c</code>一样,实际存储的是ASCLL码</p>
<h4 id="ASCLL码表"><a href="#ASCLL码表" class="headerlink" title="ASCLL码表"></a>ASCLL码表</h4><p>ASCII码表格:</p>
<table>
<thead>
<tr>
<th><strong>ASCII</strong>值</th>
<th><strong>控制字符</strong></th>
<th><strong>ASCII</strong>值</th>
<th><strong>字符</strong></th>
<th><strong>ASCII</strong>值</th>
<th><strong>字符</strong></th>
<th><strong>ASCII</strong>值</th>
<th><strong>字符</strong></th>
</tr>
</thead>
<tbody><tr>
<td>0</td>
<td>NUT</td>
<td>32</td>
<td>(space)</td>
<td>64</td>
<td>@</td>
<td>96</td>
<td>、</td>
</tr>
<tr>
<td>1</td>
<td>SOH</td>
<td>33</td>
<td>!</td>
<td>65</td>
<td>A</td>
<td>97</td>
<td>a</td>
</tr>
<tr>
<td>2</td>
<td>STX</td>
<td>34</td>
<td>“</td>
<td>66</td>
<td>B</td>
<td>98</td>
<td>b</td>
</tr>
<tr>
<td>3</td>
<td>ETX</td>
<td>35</td>
<td>#</td>
<td>67</td>
<td>C</td>
<td>99</td>
<td>c</td>
</tr>
<tr>
<td>4</td>
<td>EOT</td>
<td>36</td>
<td>$</td>
<td>68</td>
<td>D</td>
<td>100</td>
<td>d</td>
</tr>
<tr>
<td>5</td>
<td>ENQ</td>
<td>37</td>
<td>%</td>
<td>69</td>
<td>E</td>
<td>101</td>
<td>e</td>
</tr>
<tr>
<td>6</td>
<td>ACK</td>
<td>38</td>
<td>&</td>
<td>70</td>
<td>F</td>
<td>102</td>
<td>f</td>
</tr>
<tr>
<td>7</td>
<td>BEL</td>
<td>39</td>
<td>,</td>
<td>71</td>
<td>G</td>
<td>103</td>
<td>g</td>
</tr>
<tr>
<td>8</td>
<td>BS</td>
<td>40</td>
<td>(</td>
<td>72</td>
<td>H</td>
<td>104</td>
<td>h</td>
</tr>
<tr>
<td>9</td>
<td>HT</td>
<td>41</td>
<td>)</td>
<td>73</td>
<td>I</td>
<td>105</td>
<td>i</td>
</tr>
<tr>
<td>10</td>
<td>LF</td>
<td>42</td>
<td>*</td>
<td>74</td>
<td>J</td>
<td>106</td>
<td>j</td>
</tr>
<tr>
<td>11</td>
<td>VT</td>
<td>43</td>
<td>+</td>
<td>75</td>
<td>K</td>
<td>107</td>
<td>k</td>
</tr>
<tr>
<td>12</td>
<td>FF</td>
<td>44</td>
<td>,</td>
<td>76</td>
<td>L</td>
<td>108</td>
<td>l</td>
</tr>
<tr>
<td>13</td>
<td>CR</td>
<td>45</td>
<td>-</td>
<td>77</td>
<td>M</td>
<td>109</td>
<td>m</td>
</tr>
<tr>
<td>14</td>
<td>SO</td>
<td>46</td>
<td>.</td>
<td>78</td>
<td>N</td>
<td>110</td>
<td>n</td>
</tr>
<tr>
<td>15</td>
<td>SI</td>
<td>47</td>
<td>/</td>
<td>79</td>
<td>O</td>
<td>111</td>
<td>o</td>
</tr>
<tr>
<td>16</td>
<td>DLE</td>
<td>48</td>
<td>0</td>
<td>80</td>
<td>P</td>
<td>112</td>
<td>p</td>
</tr>
<tr>
<td>17</td>
<td>DCI</td>
<td>49</td>
<td>1</td>
<td>81</td>
<td>Q</td>
<td>113</td>
<td>q</td>
</tr>
<tr>
<td>18</td>
<td>DC2</td>
<td>50</td>
<td>2</td>
<td>82</td>
<td>R</td>
<td>114</td>
<td>r</td>
</tr>
<tr>
<td>19</td>
<td>DC3</td>
<td>51</td>
<td>3</td>
<td>83</td>
<td>S</td>
<td>115</td>
<td>s</td>
</tr>
<tr>
<td>20</td>
<td>DC4</td>
<td>52</td>
<td>4</td>
<td>84</td>
<td>T</td>
<td>116</td>
<td>t</td>
</tr>
<tr>
<td>21</td>
<td>NAK</td>
<td>53</td>
<td>5</td>
<td>85</td>
<td>U</td>
<td>117</td>
<td>u</td>
</tr>
<tr>
<td>22</td>
<td>SYN</td>
<td>54</td>
<td>6</td>
<td>86</td>
<td>V</td>
<td>118</td>
<td>v</td>
</tr>
<tr>
<td>23</td>
<td>TB</td>
<td>55</td>
<td>7</td>
<td>87</td>
<td>W</td>
<td>119</td>
<td>w</td>
</tr>
<tr>
<td>24</td>
<td>CAN</td>
<td>56</td>
<td>8</td>
<td>88</td>
<td>X</td>
<td>120</td>
<td>x</td>
</tr>
<tr>
<td>25</td>
<td>EM</td>
<td>57</td>
<td>9</td>
<td>89</td>
<td>Y</td>
<td>121</td>
<td>y</td>
</tr>
<tr>
<td>26</td>
<td>SUB</td>
<td>58</td>
<td>:</td>
<td>90</td>
<td>Z</td>
<td>122</td>
<td>z</td>
</tr>
<tr>
<td>27</td>
<td>ESC</td>
<td>59</td>
<td>;</td>
<td>91</td>
<td>[</td>
<td>123</td>
<td>{</td>
</tr>
<tr>
<td>28</td>
<td>FS</td>
<td>60</td>
<td><</td>
<td>92</td>
<td>/</td>
<td>124</td>
<td>|</td>
</tr>
<tr>
<td>29</td>
<td>GS</td>
<td>61</td>
<td>=</td>
<td>93</td>
<td>]</td>
<td>125</td>
<td>}</td>
</tr>
<tr>
<td>30</td>
<td>RS</td>
<td>62</td>
<td>></td>
<td>94</td>
<td>^</td>
<td>126</td>
<td>`</td>
</tr>
<tr>
<td>31</td>
<td>US</td>
<td>63</td>
<td>?</td>
<td>95</td>
<td>_</td>
<td>127</td>
<td>DEL</td>
</tr>
</tbody></table>
<p>字符 ASCLL</p>
<p>“0<del>9” ==》48</del>57</p>
<p>“A<del>Z” ==》65</del>90</p>
<p>“a<del>z” ==》97</del>122</p>
<h2 id="转义符"><a href="#转义符" class="headerlink" title="转义符"></a>转义符</h2><table>
<thead>
<tr>
<th><strong>转义字符</strong></th>
<th><strong>含义</strong></th>
<th><strong>ASCII</strong>码值(十进制)</th>
</tr>
</thead>
<tbody><tr>
<td>\a</td>
<td>警报</td>
<td>007</td>
</tr>
<tr>
<td>\b</td>
<td>退格(BS) ,将当前位置移到前一列</td>
<td>008</td>
</tr>
<tr>
<td>\f</td>
<td>换页(FF),将当前位置移到下页开头</td>
<td>012</td>
</tr>
<tr>
<td><strong>\n</strong></td>
<td><strong>换行(LF) ,将当前位置移到下一行开头</strong></td>
<td><strong>010</strong></td>
</tr>
<tr>
<td>\r</td>
<td>回车(CR) ,将当前位置移到本行开头</td>
<td>013</td>
</tr>
<tr>
<td><strong>\t</strong></td>
<td><strong>水平制表(HT) (跳到下一个TAB位置)</strong></td>
<td><strong>009</strong></td>
</tr>
<tr>
<td>\v</td>
<td>垂直制表(VT)</td>
<td>011</td>
</tr>
<tr>
<td>*<em>\\*</em></td>
<td><strong>代表一个反斜线字符”"</strong></td>
<td><strong>092</strong></td>
</tr>
<tr>
<td>'</td>
<td>代表一个单引号(撇号)字符</td>
<td>039</td>
</tr>
<tr>
<td>"</td>
<td>代表一个双引号字符</td>
<td>034</td>
</tr>
<tr>
<td>?</td>
<td>代表一个问号</td>
<td>063</td>
</tr>
<tr>
<td>\0</td>
<td>数字0</td>
<td>000</td>
</tr>
<tr>
<td>\ddd</td>
<td>8进制转义字符,d范围0~7</td>
<td>3位8进制</td>
</tr>
<tr>
<td>\xhh</td>
<td>16进制转义字符,h范围0<del>9,a</del>f,A~F</td>
<td>3位16进制</td>
</tr>
</tbody></table>
<h2 id="字符串型"><a href="#字符串型" class="headerlink" title="字符串型"></a>字符串型</h2><script type="text/javascript" src="https://cdn.jsdelivr.net/npm/[email protected]/dist/kity.min.js"></script><script type="text/javascript" src="https://cdn.jsdelivr.net/npm/[email protected]/dist/kityminder.core.min.js"></script><script defer="true" type="text/javascript" src="https://cdn.jsdelivr.net/npm/[email protected]/dist/mindmap.min.js"></script><link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/mindmap.min.css">]]></content>
<categories>
<category>计算机语言</category>
</categories>
<tags>
<tag>C++</tag>
</tags>
</entry>
<entry>
<title>访问博客速度问题</title>
<url>/2021/07/27/%E8%AE%BF%E9%97%AE%E9%97%AE%E9%A2%98/</url>
<content><![CDATA[<h1 id="托管于Github的静态网页访问缓慢"><a href="#托管于Github的静态网页访问缓慢" class="headerlink" title="托管于Github的静态网页访问缓慢"></a>托管于Github的静态网页访问缓慢</h1><p>大学狗由于缺乏资金,无法长期购置服务器以及域名,所以才使用Github+hexo搭建个人博客,但是Github在国内似乎被墙了,大多数地区访问缓慢甚至无法访问。目前我在想办法,看看能否用别的方法代理网页,大概要money吧,白嫖应该是不可能了。</p>
<p>2021/07/30 <a href="https://wbsy.netlify.app/">添加新访问地址</a>这个链接访问国内访问似乎比github.io的快</p>
<span id="more"></span>
<p>祝我好运!</p>
<ul>
<li><p><img src="https://z3.ax1x.com/2021/07/29/Wqfkfe.jpg" alt="image"></p>
</li>
<li><p>看起来不太妙啊,后续我考虑考虑买不买域名吧,主要是长期维护的话是一笔不菲的费用。而且这个博客大概也就我自己看看吧。毕竟github屏蔽了百度的爬虫,在国内应该大部分人用的还是百度之类的吧,Google用的人还是少。</p>
</li>
</ul>
<ul>
<li><p>更新 2021/07/30</p>
</li>
<li><p>利用netlify加速解析,国内算是能用了吧。</p>
</li>
</ul>
<ul>
<li><p>目前站点有两个域名</p>
</li>
<li><p><a href="https://287857652.github.io/">287857652.github.io</a></p>
</li>
<li><p><a href="https://wbsy.netlify.app/">wbsy.netlify.app</a></p>
</li>
</ul>
<p>虽然第二个域名挺丑的,但是能用就好,以后考虑绑定自己买的域名吧。</p>
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/[email protected]/dist/kity.min.js"></script><script type="text/javascript" src="https://cdn.jsdelivr.net/npm/[email protected]/dist/kityminder.core.min.js"></script><script defer="true" type="text/javascript" src="https://cdn.jsdelivr.net/npm/[email protected]/dist/mindmap.min.js"></script><link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/mindmap.min.css">]]></content>
<categories>
<category>告示</category>
</categories>
</entry>
<entry>
<title>回顾《雷神之锤III》平方根倒数算法</title>
<url>/2021/08/13/%E3%80%8A%E9%9B%B7%E7%A5%9E%E4%B9%8B%E9%94%A43%E3%80%8B%E5%B9%B3%E6%96%B9%E6%A0%B9%E5%80%92%E6%95%B0%E7%AE%97%E6%B3%95/</url>
<content><![CDATA[<h1 id="关于平方根倒数快速算法"><a href="#关于平方根倒数快速算法" class="headerlink" title="关于平方根倒数快速算法"></a>关于平方根倒数快速算法</h1><p>《雷神之锤III》这款游戏的源码公布后,有人在里面发现了一个好玩的算法,是关于平方根倒数的算法。虽然该算法如今已经过时了,但是其中涉及的浮点数标准和牛顿迭代法还是挺值得一看的。</p>
<p>该算法一般用于求向量模长等地方,可以说在游戏建模中涉及物理还原这块用到这个平方根倒数还挺多的。</p>
<p>如果给我一个公式如下:</p>
<span id="more"></span>
<p>$$<br>f=\frac{1}{\sqrt{x}}<br>$$<br>我想我可能会写下</p>
<figure class="highlight c"><table><tr><td class="code"><pre><span class="line"><span class="meta"># <span class="meta-keyword">include</span> <span class="meta-string"><math.h></span></span></span><br><span class="line"><span class="keyword">float</span> y = <span class="built_in">sqrt</span>(x);</span><br></pre></td></tr></table></figure>
<p>但是在《雷神之锤III》里的算法并不是<code>math.h</code>里的算法。</p>
<h3 id="源码"><a href="#源码" class="headerlink" title="源码"></a>源码</h3><figure class="highlight c"><table><tr><td class="code"><pre><span class="line"><span class="function"><span class="keyword">float</span> <span class="title">Q_rsqrt</span><span class="params">( <span class="keyword">float</span> number )</span></span></span><br><span class="line"><span class="function"></span>{</span><br><span class="line"> <span class="keyword">long</span> i;</span><br><span class="line"> <span class="keyword">float</span> x2,y;</span><br><span class="line"> <span class="keyword">const</span> <span class="keyword">float</span> threehalfs = <span class="number">1.5F</span>;</span><br><span class="line"> </span><br><span class="line"> ×<span class="number">2</span> = number * <span class="number">0.5F</span>;</span><br><span class="line"> y = number;</span><br><span class="line"> i = * ( <span class="keyword">long</span> * ) &y; <span class="comment">// evil floating point bit hack</span></span><br><span class="line"> i = <span class="number">0x5f3759df</span> - ( i >><span class="number">1</span> ); <span class="comment">// what the fuck?</span></span><br><span class="line"> y = * ( <span class="keyword">float</span> * ) &i;</span><br><span class="line"> y = y * ( threehalfs - ( x2* y *y ) ); <span class="comment">// 1st iteration</span></span><br><span class="line"><span class="comment">// y -y * ( threehalfs - ( x2* y * y ) ); // 2nd iteration, can be removed</span></span><br><span class="line"> <span class="keyword">return</span> y;</span><br><span class="line">}</span><br><span class="line"></span><br></pre></td></tr></table></figure>
<p>这个<code>Q_rsqrt</code>函数可以说是越看越怪,其中的<code>0x5f3759df</code>是哪里来的简直一头雾水。</p>
<h3 id="IEEE754"><a href="#IEEE754" class="headerlink" title="IEEE754"></a>IEEE754</h3><p>首先需要了解浮点数的存储,IEEE二进制浮点数算术标准(<code>IEEE 754</code>),以下为例子,具体请自行了解。</p>
<p><img src="https://z3.ax1x.com/2021/08/13/fswdzt.png"></p>
<p>其中第一位0正1负。</p>
<h3 id="第一步:"><a href="#第一步:" class="headerlink" title="第一步:"></a>第一步:</h3><figure class="highlight c"><table><tr><td class="code"><pre><span class="line">i = ( <span class="keyword">long</span> )y; </span><br></pre></td></tr></table></figure>
<p><strong>将<code>y</code>强制转换为<code>long</code>格式是为了让y能够进行位操作</strong>,<code>float</code>并不能进行位操作。 (long 32bit)</p>
<p>但是转换会有误差产生,比如y=3.33在经过强制转换为long格式后就会变为3。同时内存小数部分也被打乱。</p>
<figure class="highlight c"><table><tr><td class="code"><pre><span class="line"><span class="number">3.33</span> <span class="number">0</span> <span class="number">10000000</span> <span class="number">10101010001111010111000</span> <span class="comment">//IEEE 754 </span></span><br><span class="line"><span class="number">3</span> <span class="number">00000000</span> <span class="number">00000000</span> <span class="number">0000000</span> <span class="number">00000011</span></span><br></pre></td></tr></table></figure>
<p>此时并不能达到要求,即对<code>float</code>格式的y进行位操作,毕竟内存中的位都改变了。</p>
<p>于是就有了</p>
<figure class="highlight c"><table><tr><td class="code"><pre><span class="line">i = * ( <span class="keyword">long</span> * ) &y; <span class="comment">// evil floating point bit hack</span></span><br></pre></td></tr></table></figure>
<p><strong><u>这里首先通过<code>&y</code>获得了<code>y</code>的地址,然后通过<code>(long *)</code> 将改地址转换为<code>long</code>格式的地址,最后通过<code>*</code>获取地址内的值返回给i。</u></strong></p>
<p>此时</p>
<p>上面这句话就是对第一步的理解,通俗来说就是原来<code>IEEE 754</code>的<code>y</code>的地址值是<code>float</code>格式,但是要保留地址内值不变的情况下告诉<code>CPU</code>这是<code>long</code>格式。</p>
<h3 id="第二步:"><a href="#第二步:" class="headerlink" title="第二步:"></a>第二步:</h3><figure class="highlight c"><table><tr><td class="code"><pre><span class="line">i = <span class="number">0x5f3759df</span> - ( i >><span class="number">1</span> ); <span class="comment">// what the fuck?</span></span><br></pre></td></tr></table></figure>
<h3 id="第三步:"><a href="#第三步:" class="headerlink" title="第三步:"></a>第三步:</h3><p>牛顿迭代法<br>$$<br>f(x)=\frac{1}{x^{2}}-x<br>$$</p>
<p>$$<br>f^{\prime}(x)=\left.f^{\prime}(y)\right|_{y=x}=-\frac{2}{y^{3}}=-\frac{2}{x^{3}}<br>$$</p>
<p>$$<br>x_{\text {new }}=x-\frac{f(x)}{f^{\prime}(x)}=x-\frac{\frac{1}{x^{2}}-x}{-\frac{2}{x^{3}}}=\frac{3}{2} x-\frac{1}{2} x^{4}<br>$$</p>
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/[email protected]/dist/kity.min.js"></script><script type="text/javascript" src="https://cdn.jsdelivr.net/npm/[email protected]/dist/kityminder.core.min.js"></script><script defer="true" type="text/javascript" src="https://cdn.jsdelivr.net/npm/[email protected]/dist/mindmap.min.js"></script><link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/mindmap.min.css">]]></content>
<categories>
<category>计算机语言</category>
</categories>
<tags>
<tag>算法</tag>
</tags>
</entry>
</search>