forked from chenshuo/coolshell
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.html
980 lines (947 loc) · 129 KB
/
index.html
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
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
<!DOCTYPE html>
<!--[if IE 8]>
<html id="ie8" dir="ltr" lang="zh-CN"
prefix="og: https://ogp.me/ns#" >
<![endif]-->
<!--[if !(IE 8) ]><!-->
<html dir="ltr" lang="zh-CN" prefix="og: https://ogp.me/ns#">
<!--<![endif]-->
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width" />
<link rel="profile" href="https://gmpg.org/xfn/11" />
<link rel="pingback" href="https://coolshell.cn/xmlrpc.php" />
<link rel="shortcut icon" href="/favicon.png">
<title>酷壳 – CoolShell.cn</title>
<meta name="description" content="享受编程和技术所带来的快乐 – https://coolshell.cn" />
<meta name="robots" content="max-image-preview:large" />
<meta name="keywords" content="排序,正则表达式,程序员,算法,软件开发,ajax,algorithm,android,bash,book,c++,code review,coding,css,database,debug,ebook,erlang,game,go,google,html,ie,java,javascript,jquery,linus torvalds,linux,mac,mysql,oracle,os,perl,php,programmer,programming,language,python,ruby,sql,ubuntu,ui,unix,vim,web,windows" />
<link rel="canonical" href="https://coolshell.cn" />
<link rel="next" href="/page/2" />
<meta name="generator" content="All in One SEO (AIOSEO) 4.3.6.1 " />
<meta property="og:locale" content="zh_CN" />
<meta property="og:site_name" content="酷 壳 - CoolShell" />
<meta property="og:type" content="article" />
<meta property="og:title" content="酷 壳 - CoolShell" />
<meta property="og:description" content="享受编程和技术所带来的快乐 - Coding Your Ambition" />
<meta property="og:url" content="https://coolshell.cn" />
<meta property="og:image" content="/wp-content/uploads/2020/04/mini.logo_.png" />
<meta property="og:image:secure_url" content="/wp-content/uploads/2020/04/mini.logo_.png" />
<meta name="twitter:card" content="summary" />
<meta name="twitter:title" content="酷 壳 - CoolShell" />
<meta name="twitter:description" content="享受编程和技术所带来的快乐 - Coding Your Ambition" />
<meta name="twitter:image" content="/wp-content/uploads/2020/04/mini.logo_.png" />
<script type="application/ld+json" class="aioseo-schema">
{"@context":"https:\/\/schema.org","@graph":[{"@type":"BreadcrumbList","@id":"https:\/\/coolshell.cn#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/coolshell.cn\/#listItem","position":1,"item":{"@type":"WebPage","@id":"https:\/\/coolshell.cn\/","name":"\u4e3b\u9801","description":"\u4eab\u53d7\u7f16\u7a0b\u548c\u6280\u672f\u6240\u5e26\u6765\u7684\u5feb\u4e50 \u2013 https:\/\/coolshell.cn","url":"https:\/\/coolshell.cn\/"}}]},{"@type":"CollectionPage","@id":"https:\/\/coolshell.cn#collectionpage","url":"https:\/\/coolshell.cn","name":"\u9177\u58f3 \u2013 CoolShell.cn","description":"\u4eab\u53d7\u7f16\u7a0b\u548c\u6280\u672f\u6240\u5e26\u6765\u7684\u5feb\u4e50 \u2013 https:\/\/coolshell.cn","inLanguage":"zh-CN","isPartOf":{"@id":"https:\/\/coolshell.cn\/#website"},"breadcrumb":{"@id":"https:\/\/coolshell.cn#breadcrumblist"},"about":{"@id":"https:\/\/coolshell.cn\/#organization"}},{"@type":"Organization","@id":"https:\/\/coolshell.cn\/#organization","name":"\u9177\u58f3-CoolShell","url":"https:\/\/coolshell.cn\/","logo":{"@type":"ImageObject","url":"https:\/\/coolshell.cn\/wp-content\/uploads\/2020\/04\/mini.logo_.png","@id":"https:\/\/coolshell.cn\/#organizationLogo","width":306,"height":306},"image":{"@id":"https:\/\/coolshell.cn\/#organizationLogo"}},{"@type":"WebSite","@id":"https:\/\/coolshell.cn\/#website","url":"https:\/\/coolshell.cn\/","name":"\u9177 \u58f3 - CoolShell","description":"\u4eab\u53d7\u7f16\u7a0b\u548c\u6280\u672f\u6240\u5e26\u6765\u7684\u5feb\u4e50 - Coding Your Ambition","inLanguage":"zh-CN","publisher":{"@id":"https:\/\/coolshell.cn\/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/coolshell.cn\/?s={search_term_string}"},"query-input":"required name=search_term_string"}}]}
</script>
<script type="3f139aa76ddd12292059324c-text/javascript">
window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;
ga('create', "UA-7486123-1", { 'cookieDomain': 'coolshell.cn' } );
ga('send', 'pageview');
</script>
<script async src="https://www.google-analytics.com/analytics.js" type="3f139aa76ddd12292059324c-text/javascript"></script>
<link rel="dns-prefetch" href="//fonts.googleapis.com" />
<link rel="alternate" type="application/rss+xml" title="酷 壳 - CoolShell » Feed" href="https://coolshell.cn/feed" />
<link rel="alternate" type="application/rss+xml" title="酷 壳 - CoolShell » 评论Feed" href="https://coolshell.cn/comments/feed" />
<script type="3f139aa76ddd12292059324c-text/javascript">
window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/14.0.0\/72x72\/","ext":".png","svgUrl":"https:\/\/s.w.org\/images\/core\/emoji\/14.0.0\/svg\/","svgExt":".svg","source":{"concatemoji":"https:\/\/coolshell.cn\/wp-includes\/js\/wp-emoji-release.min.js?ver=6.2"}};
/*! This file is auto-generated */
!function(e,a,t){var n,r,o,i=a.createElement("canvas"),p=i.getContext&&i.getContext("2d");function s(e,t){p.clearRect(0,0,i.width,i.height),p.fillText(e,0,0);e=i.toDataURL();return p.clearRect(0,0,i.width,i.height),p.fillText(t,0,0),e===i.toDataURL()}function c(e){var t=a.createElement("script");t.src=e,t.defer=t.type="text/javascript",a.getElementsByTagName("head")[0].appendChild(t)}for(o=Array("flag","emoji"),t.supports={everything:!0,everythingExceptFlag:!0},r=0;r<o.length;r++)t.supports[o[r]]=function(e){if(p&&p.fillText)switch(p.textBaseline="top",p.font="600 32px Arial",e){case"flag":return s("\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!s("\ud83c\uddfa\ud83c\uddf3","\ud83c\uddfa\u200b\ud83c\uddf3")&&!s("\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!s("\ud83e\udef1\ud83c\udffb\u200d\ud83e\udef2\ud83c\udfff","\ud83e\udef1\ud83c\udffb\u200b\ud83e\udef2\ud83c\udfff")}return!1}(o[r]),t.supports.everything=t.supports.everything&&t.supports[o[r]],"flag"!==o[r]&&(t.supports.everythingExceptFlag=t.supports.everythingExceptFlag&&t.supports[o[r]]);t.supports.everythingExceptFlag=t.supports.everythingExceptFlag&&!t.supports.flag,t.DOMReady=!1,t.readyCallback=function(){t.DOMReady=!0},t.supports.everything||(n=function(){t.readyCallback()},a.addEventListener?(a.addEventListener("DOMContentLoaded",n,!1),e.addEventListener("load",n,!1)):(e.attachEvent("onload",n),a.attachEvent("onreadystatechange",function(){"complete"===a.readyState&&t.readyCallback()})),(e=t.source||{}).concatemoji?c(e.concatemoji):e.wpemoji&&e.twemoji&&(c(e.twemoji),c(e.wpemoji)))}(window,document,window._wpemojiSettings);
</script>
<style type="text/css">
img.wp-smiley,
img.emoji {
display: inline !important;
border: none !important;
box-shadow: none !important;
height: 1em !important;
width: 1em !important;
margin: 0 0.07em !important;
vertical-align: -0.1em !important;
background: none !important;
padding: 0 !important;
}
</style>
<link rel="stylesheet" id="series_font-css" href="/wp-content/plugins/simple-post-series/inc/icomoon/style.css?ver=2.4" type="text/css" media="all" />
<link rel="stylesheet" id="wp-block-library-css" href="/wp-content/plugins/gutenberg/build/block-library/style.css?ver=15.7.0" type="text/css" media="all" />
<link rel="stylesheet" id="classic-theme-styles-css" href="/wp-includes/css/classic-themes.min.css?ver=6.2" type="text/css" media="all" />
<style id="global-styles-inline-css" type="text/css">
body{--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgba(252,185,0,1) 0%,rgba(255,105,0,1) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgba(255,105,0,1) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgba(255, 255, 255, 1), 6px 6px rgba(0, 0, 0, 1);--wp--preset--shadow--crisp: 6px 6px 0px rgba(0, 0, 0, 1);}:where(.is-layout-flex){gap: 0.5em;}body .is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}body .is-layout-flex{flex-wrap: wrap;align-items: center;}body .is-layout-flex > *{margin: 0;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}:where(.wp-block-columns.is-layout-flex){gap: 2em;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}
:where(.wp-block-columns.is-layout-flex){gap: 2em;}
.wp-block-pullquote{font-size: 1.5em;line-height: 1.6;}
.wp-block-navigation a:where(:not(.wp-element-button)){color: inherit;}
</style>
<link rel="stylesheet" id="wp-postratings-css" href="/wp-content/plugins/wp-postratings/css/postratings-css.css?ver=1.90.1" type="text/css" media="all" />
<link rel="stylesheet" id="wp-pagenavi-css" href="/wp-content/plugins/wp-pagenavi/pagenavi-css.css?ver=2.70" type="text/css" media="all" />
<link rel="stylesheet" id="bootstrap-css" href="/wp-content/themes/MyNisarg/css/bootstrap.css?ver=6.2" type="text/css" media="all" />
<link rel="stylesheet" id="nisarg-style-css" href="/wp-content/themes/MyNisarg/style.css?ver=6.2" type="text/css" media="all" />
<style id="nisarg-style-inline-css" type="text/css">
/* Color Scheme */
/* Accent Color */
a:active,
a:hover,
a:focus {
color: #009688;
}
.navbar-default .navbar-nav > li > a:hover, .navbar-default .navbar-nav > li > a:focus {
color: #009688;
}
.navbar-default .navbar-nav > .active > a, .navbar-default .navbar-nav > .active > a:hover, .navbar-default .navbar-nav > .active > a:focus {
color: #009688;
}
@media (min-width: 768px){
.navbar-default .navbar-nav > .active > a, .navbar-default .navbar-nav > .active > a:hover, .navbar-default .navbar-nav > .active > a:focus {
border-top: 4px solid #009688;
}
}
.dropdown-menu > .active > a, .dropdown-menu > .active > a:hover, .dropdown-menu > .active > a:focus {
background-color: #009688;
}
.navbar-default .navbar-nav > .open > a, .navbar-default .navbar-nav > .open > a:hover, .navbar-default .navbar-nav > .open > a:focus {
color: #009688;
}
.navbar-default .navbar-nav > li > .dropdown-menu > li > a:hover,
.navbar-default .navbar-nav > li > .dropdown-menu > li > a:focus {
color: #fff;
background-color: #009688;
}
.navbar-default .navbar-nav .open .dropdown-menu > .active > a, .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {
background-color: #fff;
color: #009688;
}
@media (max-width: 767px) {
.navbar-default .navbar-nav .open .dropdown-menu > li > a:hover {
background-color: #009688;
color: #fff;
}
}
.sticky-post{
background: #009688;
color:white;
}
.entry-title a:hover,
.entry-title a:focus{
color: #009688;
}
.entry-header .entry-meta::after{
background: #009688;
}
.fa {
color: #009688;
}
.btn-default{
border-bottom: 1px solid #009688;
}
.btn-default:hover, .btn-default:focus{
border-bottom: 1px solid #009688;
background-color: #009688;
}
.nav-previous:hover, .nav-next:hover{
border: 1px solid #009688;
background-color: #009688;
}
.next-post a:hover,.prev-post a:hover{
color: #009688;
}
.posts-navigation .next-post a:hover .fa, .posts-navigation .prev-post a:hover .fa{
color: #009688;
}
#secondary .widget-title::after{
background-color: #009688;
content: "";
position: absolute;
width: 75px;
display: block;
height: 4px;
bottom: -15px;
}
#secondary .widget a:hover,
#secondary .widget a:focus{
color: #009688;
}
#secondary .widget_calendar tbody a {
background-color: #009688;
color: #fff;
padding: 0.2em;
}
#secondary .widget_calendar tbody a:hover{
background-color: #009688;
color: #fff;
padding: 0.2em;
}
</style>
<link rel="stylesheet" id="font-awesome-css" href="/wp-content/themes/MyNisarg/font-awesome/css/font-awesome.min.css?ver=6.2" type="text/css" media="all" />
<link rel="stylesheet" id="nisarggooglefonts-css" href="//fonts.googleapis.com/css?family=Lato:400,300italic,700|Source+Sans+Pro:400,400italic" type="text/css" media="all" />
<link rel="stylesheet" id="enlighterjs-css" href="/wp-content/plugins/enlighter/cache/enlighterjs.min.css?ver=0cuVQBPCj0viGB0" type="text/css" media="all" />
<script type="3f139aa76ddd12292059324c-text/javascript" src="/wp-includes/js/jquery/jquery.min.js?ver=3.6.3" id="jquery-core-js"></script>
<script type="3f139aa76ddd12292059324c-text/javascript" src="/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.4.0" id="jquery-migrate-js"></script>
<script type="3f139aa76ddd12292059324c-text/javascript" src="/wp-content/plugins/simple-post-series/autohide.js?ver=2.4" id="series-js"></script>
<!--[if lt IE 9]>
<script type='text/javascript' src='/wp-content/themes/MyNisarg/js/html5shiv.js?ver=3.7.3' id='html5shiv-js'></script>
<![endif]-->
<link rel="https://api.w.org/" href="/wp-json/" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://coolshell.cn/xmlrpc.php?rsd" />
<link rel="wlwmanifest" type="application/wlwmanifest+xml" href="/wp-includes/wlwmanifest.xml" />
<meta name="generator" content="WordPress 6.2" />
<script type="3f139aa76ddd12292059324c-text/javascript">
window._wp_rp_static_base_url = 'https://wprp.zemanta.com/static/';
window._wp_rp_wp_ajax_url = "https://coolshell.cn/wp-admin/admin-ajax.php";
window._wp_rp_plugin_version = '3.6.4';
window._wp_rp_post_id = '22422';
window._wp_rp_num_rel_posts = '6';
window._wp_rp_thumbnails = true;
window._wp_rp_post_title = '%E6%98%AF%E5%BE%AE%E6%9C%8D%E5%8A%A1%E6%9E%B6%E6%9E%84%E4%B8%8D%E9%A6%99%E8%BF%98%E6%98%AF%E4%BA%91%E4%B8%8D%E9%A6%99%EF%BC%9F';
window._wp_rp_post_tags = ['aws', 'serverless', 'lambda', 'step+function', 'microservice', '%E4%B8%9A%E7%95%8C%E6%96%B0%E9%97%BB', '%E6%9D%82%E9%A1%B9%E8%B5%84%E6%BA%90', '%E7%B3%BB%E7%BB%9F%E6%9E%B6%E6%9E%84', 'sn', 'lambda', 'spring', 'li', 's3', 'lia', 'prime', 'media', 'ec2', 'ol', 'video', 'amazon', 'servic', 'nginx', 'alt'];
window._wp_rp_promoted_content = true;
</script>
<link rel="stylesheet" href="/wp-content/plugins/wordpress-23-related-posts-plugin/static/themes/vertical-m.css?version=3.6.4" />
<style type="text/css">
.site-header { background: #1d2b2d; }
</style>
</head>
<body class="home blog group-blog">
<link rel="stylesheet" id="nisarg-style-css" href="/wp-content/themes/MyNisarg/style.css" type="text/css" media="all">
<div id="page" class="hfeed site">
<header id="masthead" role="banner">
<nav class="navbar navbar-default navbar-fixed-top navbar-left" role="navigation">
<div class="container" id="navigation_menu">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-ex1-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="/"><div class="coolshell_logo"></div>酷 壳 – CoolShell</a>
</div>
<div class="collapse navbar-collapse navbar-ex1-collapse"><ul id="menu-coolshell" class="nav navbar-nav"><li id="menu-item-17405" class="menu-item menu-item-type-custom menu-item-object-custom current-menu-item current_page_item menu-item-home menu-item-17405 active"><a title="首页" href="/">首页</a></li>
<li id="menu-item-17406" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-17406"><a title="推荐文章" href="/featured.html">推荐文章</a></li>
<li id="menu-item-17407" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-17407"><a title="本站插件" href="/plugins">本站插件</a></li>
<li id="menu-item-17408" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-17408"><a title="留言小本" href="/guestbook">留言小本</a></li>
<li id="menu-item-17409" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-17409"><a title="关于酷壳" href="/about">关于酷壳</a></li>
<li id="menu-item-17410" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-17410"><a title="关于陈皓" href="/haoel">关于陈皓</a></li>
<li id="menu-item-17582" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-17582"><a title="RSS" href="https://coolshell.cn/feed">RSS</a></li>
</ul></div>
</div>
</nav>
<div id="cc_spacer"></div>
<div class="site-header">
<div class="pull-right">
<a title="把这个链接拖到你的Chrome收藏夹工具栏中" href="javascript:(function(){function c(){var e=document.createElement("link");e.setAttribute("type","text/css");e.setAttribute("rel","stylesheet");e.setAttribute("href",f);e.setAttribute("class",l);document.body.appendChild(e)}function h(){var e=document.getElementsByClassName(l);for(var t=0;t<e.length;t++){document.body.removeChild(e[t])}}function p(){var e=document.createElement("div");e.setAttribute("class",a);document.body.appendChild(e);setTimeout(function(){document.body.removeChild(e)},100)}function d(e){return{height:e.offsetHeight,width:e.offsetWidth}}function v(i){var s=d(i);return s.height>e&&s.height<n&&s.width>t&&s.width<r}function m(e){var t=e;var n=0;while(!!t){n+=t.offsetTop;t=t.offsetParent}return n}function g(){var e=document.documentElement;if(!!window.innerWidth){return window.innerHeight}else if(e&&!isNaN(e.clientHeight)){return e.clientHeight}return 0}function y(){if(window.pageYOffset){return window.pageYOffset}return Math.max(document.documentElement.scrollTop,document.body.scrollTop)}function E(e){var t=m(e);return t>=w&&t<=b+w}function S(){var e=document.createElement("audio");e.setAttribute("class",l);e.src=i;e.loop=false;e.addEventListener("canplay",function(){setTimeout(function(){x(k)},500);setTimeout(function(){N();p();for(var e=0;e<O.length;e++){T(O[e])}},15500)},true);e.addEventListener("ended",function(){N();h()},true);e.innerHTML=" <p>If you are reading this, it is because your browser does not support the audio element. We recommend that you get a new browser.</p> <p>";document.body.appendChild(e);e.play()}function x(e){e.className+=" "+s+" "+o}function T(e){e.className+=" "+s+" "+u[Math.floor(Math.random()*u.length)]}function N(){var e=document.getElementsByClassName(s);var t=new RegExp("\\b"+s+"\\b");for(var n=0;n<e.length;){e[n].className=e[n].className.replace(t,"")}}var e=30;var t=30;var n=350;var r=350;var i="//s3.amazonaws.com/moovweb-marketing/playground/harlem-shake.mp3";var s="mw-harlem_shake_me";var o="im_first";var u=["im_drunk","im_baked","im_trippin","im_blown"];var a="mw-strobe_light";var f="//s3.amazonaws.com/moovweb-marketing/playground/harlem-shake-style.css";var l="mw_added_css";var b=g();var w=y();var C=document.getElementsByTagName("*");var k=null;for(var L=0;L<C.length;L++){var A=C[L];if(v(A)){if(E(A)){k=A;break}}}if(A===null){console.warn("Could not find a node of the right size. Please try a different page.");return}c();S();var O=[];for(var L=0;L<C.length;L++){var A=C[L];if(v(A)){O.push(A)}}})() ">High一下!</a>
</div>
<div class="site-branding">
<a class="home-link" href="https://coolshell.cn/" title="酷 壳 – CoolShell" rel="home">
<h1 class="site-title">酷 壳 – CoolShell</h1>
<h2 class="site-description">享受编程和技术所带来的快乐 – Coding Your Ambition</h2>
</a>
</div>
</div>
</header>
<div class="container">
<div class="row">
<div class="col-md-9 nav-searchbox hidden-lg hidden-md visible-sm-* visible-xs-*">
<form role="search" method="get" class="search-form" action="https://coolshell.cn/">
<label>
<span class="screen-reader-text">Search for:</span>
<input type="search" class="search-field" placeholder="Search …" value name="s" title="Search for:">
</label>
<button type="submit" class="search-submit"><span class="screen-reader-text">Search</span></button>
</form>
</div>
</div>
</div>
<div id="content" class="site-content">
<div class="container">
<div class="row">
<div id="primary" class="col-md-9 content-area">
<main id="main" class="site-main" role="main">
<article id="post-22422" class="post-content post-22422 post type-post status-publish format-standard hentry category-itnews category-misc category-602 tag-aws tag-lambda tag-microservice tag-serverless tag-step-function">
<header class="entry-header">
<span class="screen-reader-text">是微服务架构不香还是云不香?</span>
<h2 class="entry-title">
<a href="/articles/22422.html" rel="bookmark">是微服务架构不香还是云不香?</a>
</h2>
<div class="entry-meta">
<h5 class="entry-date"><i class="fa fa-calendar-o"></i> <a href="/articles/22422.html" title="17:52" rel="bookmark"><time class="entry-date" datetime="2023-05-08T17:52:06+08:00" pubdate>2023年05月08日 </time></a><span class="byline"><span class="sep"></span><i class="fa fa-user"></i>
<span class="author vcard"><a class="url fn n" href="/articles/author/haoel" title="View all posts by 陈皓" rel="author">陈皓</a></span></span> <i class="fa fa-comments-o"></i><span class="screen-reader-text">评论 </span> <a href="/articles/22422.html#comments" class="comments-link">180 条评论</a> <i class="fa fa-users" style="margin-left:10px;"></i> 26,676 人阅读</h5>
</div>
</header>
<div class="entry-content">
<p><img decoding="async" class="alignright size-medium wp-image-22424" src="/wp-content/uploads/2023/05/monolith.microservices-300x200.png" alt width="300" height="200" srcset="/wp-content/uploads/2023/05/monolith.microservices-300x200.png 300w, /wp-content/uploads/2023/05/monolith.microservices-768x512.png 768w, /wp-content/uploads/2023/05/monolith.microservices-405x270.png 405w, /wp-content/uploads/2023/05/monolith.microservices.png 800w" sizes="(max-width: 300px) 100vw, 300px" />这两天技术圈里热议的一件事就是Amazon的流媒体平台Prime Video在2023年3月22日发布了一篇技术博客《<a title="Scaling up the Prime Video audio/video monitoring service and reducing costs by 90%" href="https://www.primevideotech.com/video-streaming/scaling-up-the-prime-video-audio-video-monitoring-service-and-reducing-costs-by-90" target="_blank" rel="noopener">规模化Prime Video的音视频监控服务,成本降低90%</a>》,副标题:“<strong>从分布式微服务架构到单体应用程序的转变有助于实现更高的规模、弹性和降低成本</strong>”,有人把这篇文章在五一期间转到了<a href="https://www.reddit.com/r/programming/comments/137alxn/prime_video_switched_from_serverless_to_ec2_and/" target="_blank" rel="noopener">reddit</a> 和 <a href="https://news.ycombinator.com/item?id=35811741" target="_blank" rel="noopener">hacker news</a> 上,在Reddit上热议。这种话题与业内推崇的微服务架构形成了鲜明的对比。从“微服务架构”转“单体架构”,还是Amazon干的,这个话题足够劲爆。然后DHH在刚<a href="https://twitter.com/dhh/status/1655076668787097607" target="_blank" rel="noopener">喷完Typescript</a>后继续发文《<a href="https://world.hey.com/dhh/even-amazon-can-t-make-sense-of-serverless-or-microservices-59625580" target="_blank" rel="noopener">即便是亚马逊也无法理解Servless或微服务</a>》,继续抨击微服务架构,于是,瞬间引爆技术圈,登上技术圈热搜。</p>
<p>今天上午有好几个朋友在微信里转了三篇文章给我,如下所示:</p>
<ul>
<li>《<a href="https://mp.weixin.qq.com/s/mEmz8pviahEAWy1-SA8vcg" target="_blank" rel="noopener">微服务是不是个蠢主意?</a>》</li>
<li>《<a href="https://mp.weixin.qq.com/s/7zm5YyeZhQ2mu2TJvOK5tQ" target="_blank" rel="noopener">单体回归?亚马逊放弃用于视频监控的微服务</a> 》</li>
<li>《<a href="https://mp.weixin.qq.com/s/fQtAMf4BfJxdBPWDE5ygwg" target="_blank" rel="noopener">从微服务转为单体架构、成本降低 90%,亚马逊内部案例引发轰动</a>》</li>
</ul>
<p>看看这些标题就知道这些文章要的是流量而不是好好写篇文章。看到第二篇,你还真当 Prime Video 就是 Amazon 的全部么?然后,再看看这些文章后面的跟风评论,我觉得有 80%的人只看标题,而且是连原文都不看的。所以,我想我得写篇文章了……</p>
<p> <a href="/articles/22422.html#more-22422" class="more-link">…</p>
<p class="read-more"><a class="btn btn-default" href="/articles/22422.html"> 阅读全文<span class="screen-reader-text"> Read More</span></a></p>
<p></a></p>
<div id="post-ratings-22422" class="post-ratings" data-nonce="daa81a88ec"><img id="rating_22422_1" src="/wp-content/plugins/wp-postratings/images/stars_crystal/rating_on.gif" alt="好烂啊" title="好烂啊" onmouseover="if (!window.__cfRLUnblockHandlers) return false; current_rating(22422, 1, '好烂啊');" onmouseout="if (!window.__cfRLUnblockHandlers) return false; ratings_off(4.4, 5, 0);" onclick="if (!window.__cfRLUnblockHandlers) return false; rate_post();" onkeypress="if (!window.__cfRLUnblockHandlers) return false; rate_post();" style="cursor: pointer; border: 0px;" data-cf-modified-3f139aa76ddd12292059324c- /><img id="rating_22422_2" src="/wp-content/plugins/wp-postratings/images/stars_crystal/rating_on.gif" alt="有点差" title="有点差" onmouseover="if (!window.__cfRLUnblockHandlers) return false; current_rating(22422, 2, '有点差');" onmouseout="if (!window.__cfRLUnblockHandlers) return false; ratings_off(4.4, 5, 0);" onclick="if (!window.__cfRLUnblockHandlers) return false; rate_post();" onkeypress="if (!window.__cfRLUnblockHandlers) return false; rate_post();" style="cursor: pointer; border: 0px;" data-cf-modified-3f139aa76ddd12292059324c- /><img id="rating_22422_3" src="/wp-content/plugins/wp-postratings/images/stars_crystal/rating_on.gif" alt="凑合看看" title="凑合看看" onmouseover="if (!window.__cfRLUnblockHandlers) return false; current_rating(22422, 3, '凑合看看');" onmouseout="if (!window.__cfRLUnblockHandlers) return false; ratings_off(4.4, 5, 0);" onclick="if (!window.__cfRLUnblockHandlers) return false; rate_post();" onkeypress="if (!window.__cfRLUnblockHandlers) return false; rate_post();" style="cursor: pointer; border: 0px;" data-cf-modified-3f139aa76ddd12292059324c- /><img id="rating_22422_4" src="/wp-content/plugins/wp-postratings/images/stars_crystal/rating_on.gif" alt="还不错" title="还不错" onmouseover="if (!window.__cfRLUnblockHandlers) return false; current_rating(22422, 4, '还不错');" onmouseout="if (!window.__cfRLUnblockHandlers) return false; ratings_off(4.4, 5, 0);" onclick="if (!window.__cfRLUnblockHandlers) return false; rate_post();" onkeypress="if (!window.__cfRLUnblockHandlers) return false; rate_post();" style="cursor: pointer; border: 0px;" data-cf-modified-3f139aa76ddd12292059324c- /><img id="rating_22422_5" src="/wp-content/plugins/wp-postratings/images/stars_crystal/rating_half.gif" alt="很精彩" title="很精彩" onmouseover="if (!window.__cfRLUnblockHandlers) return false; current_rating(22422, 5, '很精彩');" onmouseout="if (!window.__cfRLUnblockHandlers) return false; ratings_off(4.4, 5, 0);" onclick="if (!window.__cfRLUnblockHandlers) return false; rate_post();" onkeypress="if (!window.__cfRLUnblockHandlers) return false; rate_post();" style="cursor: pointer; border: 0px;" data-cf-modified-3f139aa76ddd12292059324c- /> (<strong>78</strong> 人打了分,平均分: <strong>4.44</strong> )<br/><span class="post-ratings-text" id="ratings_22422_text"></span></div><div id="post-ratings-22422-loading" class="post-ratings-loading"><img src="/wp-content/plugins/wp-postratings/images/loading.gif" width="16" height="16" class="post-ratings-image" />Loading...</div>
</div>
<footer class="entry-footer">
</footer>
</article>
<article id="post-22398" class="post-content post-22398 post type-post status-publish format-standard hentry category-itnews category-technews tag-chatgpt tag-google">
<header class="entry-header">
<span class="screen-reader-text">我看ChatGPT: 为啥谷歌掉了千亿美金</span>
<h2 class="entry-title">
<a href="/articles/22398.html" rel="bookmark">我看ChatGPT: 为啥谷歌掉了千亿美金</a>
</h2>
<div class="entry-meta">
<h5 class="entry-date"><i class="fa fa-calendar-o"></i> <a href="/articles/22398.html" title="00:31" rel="bookmark"><time class="entry-date" datetime="2023-02-12T00:31:16+08:00" pubdate>2023年02月12日 </time></a><span class="byline"><span class="sep"></span><i class="fa fa-user"></i>
<span class="author vcard"><a class="url fn n" href="/articles/author/haoel" title="View all posts by 陈皓" rel="author">陈皓</a></span></span> <i class="fa fa-comments-o"></i><span class="screen-reader-text">评论 </span> <a href="/articles/22398.html#comments" class="comments-link">21 条评论</a> <i class="fa fa-users" style="margin-left:10px;"></i> 30,529 人阅读</h5>
</div>
</header>
<div class="entry-content">
<p><img decoding="async" loading="lazy" class="alignright size-medium wp-image-22405" src="/wp-content/uploads/2023/02/chatgpt-300x200.jpg" alt width="300" height="200" srcset="/wp-content/uploads/2023/02/chatgpt-300x200.jpg 300w, /wp-content/uploads/2023/02/chatgpt-768x511.jpg 768w, /wp-content/uploads/2023/02/chatgpt-406x270.jpg 406w, /wp-content/uploads/2023/02/chatgpt.jpg 900w" sizes="(max-width: 300px) 100vw, 300px" />两个月前,我试着想用 ChatGPT 帮我写篇文章《<a title="eBPF 介绍" href="/articles/22320.html">eBPF 介绍</a>》,结果错误百出,导致我又要从头改一遍,从那天我觉得 ChatGPT 生成的内容完全不靠谱,所以,从那天开始我说我不会再用 ChatGPT 来写文章(这篇文章不是由 ChatGPT 生成),因为,在试过一段时间后,我对 ChatGTP 有基于如下的认识:</p>
<ol>
<li><strong>ChatGPT 不是基于事实,是基于语言模型的</strong>,事实对他来说不重要,对他重要的是他能读懂你的问题,并按照一定的套路回答你的问题。</li>
<li><strong>因为是基于套路的回答,所以,他并不能保证内容是对的,他的目标是找到漂亮的精彩的套路</strong>,于是,你会发现,他的内容组织能力和表述还不错,但是只要你认真玩上一段时间,你会发现,ChatGPT 那些表述的套路其实也比较平常一般。它的很多回答其实都不深,只能在表面上。就像 Github 的 Copilot 一样,写不了什么高级的代码,只能帮你写一些常规格式化的代码(当然,这也够了)</li>
</ol>
<figure id="attachment_22417" aria-describedby="caption-attachment-22417" style="width: 640px" class="wp-caption aligncenter"><img decoding="async" loading="lazy" class="wp-image-22417 size-large" src="/wp-content/uploads/2023/02/chatgpt.example-1024x853.jpg" alt width="640" height="533" srcset="/wp-content/uploads/2023/02/chatgpt.example-1024x853.jpg 1024w, /wp-content/uploads/2023/02/chatgpt.example-300x250.jpg 300w, /wp-content/uploads/2023/02/chatgpt.example-768x640.jpg 768w, /wp-content/uploads/2023/02/chatgpt.example-324x270.jpg 324w, /wp-content/uploads/2023/02/chatgpt.example.jpg 1220w" sizes="(max-width: 640px) 100vw, 640px" /><figcaption id="caption-attachment-22417" class="wp-caption-text">ChatGPT 就是一个语言模型,如果不给他足够的数据和信息,它基本就是在胡编乱造</figcaption></figure>
<p>所以,基于上面这两个点认识,以发展的眼光来看问题,我觉得 ChatGPT 这类的 AI 可以成为一个小助理,他的确可以干掉那些初级的脑力工作者,但是,还干不掉专业的人士,这个我估计未来也很难,不过,这也很帅了,因为大量普通的工作的确也很让人费时间和精力,<strong>但是有个前提条件——就是ChatGPT所产生的内容必需是真实可靠的,没有这个前提条件的话,那就什么用也没有了</strong>。</p>
<p>今天,我想从另外一个角度来谈谈 ChatGPT,尤其是我在Youtube上看完了微软的发布会《<a href="https://youtu.be/rOeRWRJ16yY" target="_blank" rel="noopener">Introducing your copilot for the web: AI-powered Bing and Microsoft Edge</a> 》,才真正意识到Google 的市值为什么会掉了1000亿美元,是的,<strong>谷歌的搜索引擎的霸主位置受到了前所未有的挑战</strong>……</p>
<p> <a href="/articles/22398.html#more-22398" class="more-link">…</p>
<p class="read-more"><a class="btn btn-default" href="/articles/22398.html"> 阅读全文<span class="screen-reader-text"> Read More</span></a></p>
<p></a></p>
<div id="post-ratings-22398" class="post-ratings" data-nonce="9d39fa5180"><img id="rating_22398_1" src="/wp-content/plugins/wp-postratings/images/stars_crystal/rating_on.gif" alt="好烂啊" title="好烂啊" onmouseover="if (!window.__cfRLUnblockHandlers) return false; current_rating(22398, 1, '好烂啊');" onmouseout="if (!window.__cfRLUnblockHandlers) return false; ratings_off(4.6, 5, 0);" onclick="if (!window.__cfRLUnblockHandlers) return false; rate_post();" onkeypress="if (!window.__cfRLUnblockHandlers) return false; rate_post();" style="cursor: pointer; border: 0px;" data-cf-modified-3f139aa76ddd12292059324c- /><img id="rating_22398_2" src="/wp-content/plugins/wp-postratings/images/stars_crystal/rating_on.gif" alt="有点差" title="有点差" onmouseover="if (!window.__cfRLUnblockHandlers) return false; current_rating(22398, 2, '有点差');" onmouseout="if (!window.__cfRLUnblockHandlers) return false; ratings_off(4.6, 5, 0);" onclick="if (!window.__cfRLUnblockHandlers) return false; rate_post();" onkeypress="if (!window.__cfRLUnblockHandlers) return false; rate_post();" style="cursor: pointer; border: 0px;" data-cf-modified-3f139aa76ddd12292059324c- /><img id="rating_22398_3" src="/wp-content/plugins/wp-postratings/images/stars_crystal/rating_on.gif" alt="凑合看看" title="凑合看看" onmouseover="if (!window.__cfRLUnblockHandlers) return false; current_rating(22398, 3, '凑合看看');" onmouseout="if (!window.__cfRLUnblockHandlers) return false; ratings_off(4.6, 5, 0);" onclick="if (!window.__cfRLUnblockHandlers) return false; rate_post();" onkeypress="if (!window.__cfRLUnblockHandlers) return false; rate_post();" style="cursor: pointer; border: 0px;" data-cf-modified-3f139aa76ddd12292059324c- /><img id="rating_22398_4" src="/wp-content/plugins/wp-postratings/images/stars_crystal/rating_on.gif" alt="还不错" title="还不错" onmouseover="if (!window.__cfRLUnblockHandlers) return false; current_rating(22398, 4, '还不错');" onmouseout="if (!window.__cfRLUnblockHandlers) return false; ratings_off(4.6, 5, 0);" onclick="if (!window.__cfRLUnblockHandlers) return false; rate_post();" onkeypress="if (!window.__cfRLUnblockHandlers) return false; rate_post();" style="cursor: pointer; border: 0px;" data-cf-modified-3f139aa76ddd12292059324c- /><img id="rating_22398_5" src="/wp-content/plugins/wp-postratings/images/stars_crystal/rating_half.gif" alt="很精彩" title="很精彩" onmouseover="if (!window.__cfRLUnblockHandlers) return false; current_rating(22398, 5, '很精彩');" onmouseout="if (!window.__cfRLUnblockHandlers) return false; ratings_off(4.6, 5, 0);" onclick="if (!window.__cfRLUnblockHandlers) return false; rate_post();" onkeypress="if (!window.__cfRLUnblockHandlers) return false; rate_post();" style="cursor: pointer; border: 0px;" data-cf-modified-3f139aa76ddd12292059324c- /> (<strong>101</strong> 人打了分,平均分: <strong>4.60</strong> )<br/><span class="post-ratings-text" id="ratings_22398_text"></span></div><div id="post-ratings-22398-loading" class="post-ratings-loading"><img src="/wp-content/plugins/wp-postratings/images/loading.gif" width="16" height="16" class="post-ratings-image" />Loading...</div>
</div>
<footer class="entry-footer">
</footer>
</article>
<article id="post-22367" class="post-content post-22367 post type-post status-publish format-standard hentry category-itnews category-602 category-netsecurity tag-censorship tag-network tag-nostr tag-social-media tag-twitter">
<header class="entry-header">
<span class="screen-reader-text">聊聊 nostr 和 审查</span>
<h2 class="entry-title">
<a href="/articles/22367.html" rel="bookmark">聊聊 nostr 和 审查</a>
</h2>
<div class="entry-meta">
<h5 class="entry-date"><i class="fa fa-calendar-o"></i> <a href="/articles/22367.html" title="15:46" rel="bookmark"><time class="entry-date" datetime="2023-02-03T15:46:13+08:00" pubdate>2023年02月03日 </time></a><span class="byline"><span class="sep"></span><i class="fa fa-user"></i>
<span class="author vcard"><a class="url fn n" href="/articles/author/haoel" title="View all posts by 陈皓" rel="author">陈皓</a></span></span> <i class="fa fa-comments-o"></i><span class="screen-reader-text">评论 </span> <a href="/articles/22367.html#comments" class="comments-link">12 条评论</a> <i class="fa fa-users" style="margin-left:10px;"></i> 22,166 人阅读</h5>
</div>
</header>
<div class="entry-content">
<p><img decoding="async" loading="lazy" class="alignright size-medium wp-image-22368" src="/wp-content/uploads/2023/02/nostr-aplicacion-descentralizada-1140x570-1-300x150.png" alt width="300" height="150" srcset="/wp-content/uploads/2023/02/nostr-aplicacion-descentralizada-1140x570-1-300x150.png 300w, /wp-content/uploads/2023/02/nostr-aplicacion-descentralizada-1140x570-1-1024x512.png 1024w, /wp-content/uploads/2023/02/nostr-aplicacion-descentralizada-1140x570-1-768x384.png 768w, /wp-content/uploads/2023/02/nostr-aplicacion-descentralizada-1140x570-1-540x270.png 540w, /wp-content/uploads/2023/02/nostr-aplicacion-descentralizada-1140x570-1.png 1140w" sizes="(max-width: 300px) 100vw, 300px" />这两天在网络上又有一个东西火了,Twitter 的创始人 <a href="https://twitter.com/jack">@jack</a> 新的社交 iOS App <a href="https://apps.apple.com/ca/app/damus/id1628663131" target="_blank" rel="noopener">Damus</a> 上苹果商店(第二天就因为违反中国法律在中国区下架了),这个软件是一个去中心化的 Twitter,使用到的是 nostr – Notes and Other Stuff Transmitted by Relays 的协议(<a href="https://github.com/nostr-protocol/nostr" target="_blank" rel="noopener">协议简介</a>,<a href="https://github.com/nostr-protocol/nips" target="_blank" rel="noopener">协议细节</a>),协议简介中有很大的篇幅是在批评Twitter和其相类似的中心化的产品,如:<a href="https://mastodon.social/" target="_blank" rel="noopener">Mastodon</a> 和 <a href="https://scuttlebutt.nz/" target="_blank" rel="noopener">Secure Scuttlebutt</a> 。我顺着去看了一下这个协议,发现这个协议真是非常的简单,简单到几句话就可以讲清楚了。</p>
<h4>通讯过程</h4>
<ul>
<li>这个协议中有两个东西,一个是 client,一个是 relay,client 就是用户社交的客户端,relay 就是转发服务器。</li>
<li>用户不需要注册,用户只需要有一个密钥对(公钥+私钥)就好了,然后把要发的信息做签名,发给一组 relays</li>
<li>然后你的 Follower 就可以从这些 relays 上订阅到你的信息。</li>
</ul>
<p> <a href="/articles/22367.html#more-22367" class="more-link">…</p>
<p class="read-more"><a class="btn btn-default" href="/articles/22367.html"> 阅读全文<span class="screen-reader-text"> Read More</span></a></p>
<p></a></p>
<div id="post-ratings-22367" class="post-ratings" data-nonce="12bb1c4d74"><img id="rating_22367_1" src="/wp-content/plugins/wp-postratings/images/stars_crystal/rating_on.gif" alt="好烂啊" title="好烂啊" onmouseover="if (!window.__cfRLUnblockHandlers) return false; current_rating(22367, 1, '好烂啊');" onmouseout="if (!window.__cfRLUnblockHandlers) return false; ratings_off(4.3, 5, 0);" onclick="if (!window.__cfRLUnblockHandlers) return false; rate_post();" onkeypress="if (!window.__cfRLUnblockHandlers) return false; rate_post();" style="cursor: pointer; border: 0px;" data-cf-modified-3f139aa76ddd12292059324c- /><img id="rating_22367_2" src="/wp-content/plugins/wp-postratings/images/stars_crystal/rating_on.gif" alt="有点差" title="有点差" onmouseover="if (!window.__cfRLUnblockHandlers) return false; current_rating(22367, 2, '有点差');" onmouseout="if (!window.__cfRLUnblockHandlers) return false; ratings_off(4.3, 5, 0);" onclick="if (!window.__cfRLUnblockHandlers) return false; rate_post();" onkeypress="if (!window.__cfRLUnblockHandlers) return false; rate_post();" style="cursor: pointer; border: 0px;" data-cf-modified-3f139aa76ddd12292059324c- /><img id="rating_22367_3" src="/wp-content/plugins/wp-postratings/images/stars_crystal/rating_on.gif" alt="凑合看看" title="凑合看看" onmouseover="if (!window.__cfRLUnblockHandlers) return false; current_rating(22367, 3, '凑合看看');" onmouseout="if (!window.__cfRLUnblockHandlers) return false; ratings_off(4.3, 5, 0);" onclick="if (!window.__cfRLUnblockHandlers) return false; rate_post();" onkeypress="if (!window.__cfRLUnblockHandlers) return false; rate_post();" style="cursor: pointer; border: 0px;" data-cf-modified-3f139aa76ddd12292059324c- /><img id="rating_22367_4" src="/wp-content/plugins/wp-postratings/images/stars_crystal/rating_on.gif" alt="还不错" title="还不错" onmouseover="if (!window.__cfRLUnblockHandlers) return false; current_rating(22367, 4, '还不错');" onmouseout="if (!window.__cfRLUnblockHandlers) return false; ratings_off(4.3, 5, 0);" onclick="if (!window.__cfRLUnblockHandlers) return false; rate_post();" onkeypress="if (!window.__cfRLUnblockHandlers) return false; rate_post();" style="cursor: pointer; border: 0px;" data-cf-modified-3f139aa76ddd12292059324c- /><img id="rating_22367_5" src="/wp-content/plugins/wp-postratings/images/stars_crystal/rating_half.gif" alt="很精彩" title="很精彩" onmouseover="if (!window.__cfRLUnblockHandlers) return false; current_rating(22367, 5, '很精彩');" onmouseout="if (!window.__cfRLUnblockHandlers) return false; ratings_off(4.3, 5, 0);" onclick="if (!window.__cfRLUnblockHandlers) return false; rate_post();" onkeypress="if (!window.__cfRLUnblockHandlers) return false; rate_post();" style="cursor: pointer; border: 0px;" data-cf-modified-3f139aa76ddd12292059324c- /> (<strong>43</strong> 人打了分,平均分: <strong>4.30</strong> )<br/><span class="post-ratings-text" id="ratings_22367_text"></span></div><div id="post-ratings-22367-loading" class="post-ratings-loading"><img src="/wp-content/plugins/wp-postratings/images/loading.gif" width="16" height="16" class="post-ratings-image" />Loading...</div>
</div>
<footer class="entry-footer">
</footer>
</article>
<article id="post-22341" class="post-content post-22341 post type-post status-publish format-standard hentry category-misc tag-covid19">
<header class="entry-header">
<span class="screen-reader-text">感染新冠的经历</span>
<h2 class="entry-title">
<a href="/articles/22341.html" rel="bookmark">感染新冠的经历</a>
</h2>
<div class="entry-meta">
<h5 class="entry-date"><i class="fa fa-calendar-o"></i> <a href="/articles/22341.html" title="15:39" rel="bookmark"><time class="entry-date" datetime="2022-12-13T15:39:39+08:00" pubdate>2022年12月13日 </time></a><span class="byline"><span class="sep"></span><i class="fa fa-user"></i>
<span class="author vcard"><a class="url fn n" href="/articles/author/haoel" title="View all posts by 陈皓" rel="author">陈皓</a></span></span> <i class="fa fa-comments-o"></i><span class="screen-reader-text">评论 </span> <a href="/articles/22341.html#comments" class="comments-link">23 条评论</a> <i class="fa fa-users" style="margin-left:10px;"></i> 75,812 人阅读</h5>
</div>
</header>
<div class="entry-content">
<p><img decoding="async" loading="lazy" class="alignright size-medium wp-image-22346" src="/wp-content/uploads/2022/12/covid19-300x225.jpg" alt width="300" height="225" srcset="/wp-content/uploads/2022/12/covid19-300x225.jpg 300w, /wp-content/uploads/2022/12/covid19-768x576.jpg 768w, /wp-content/uploads/2022/12/covid19-360x270.jpg 360w, /wp-content/uploads/2022/12/covid19.jpg 800w" sizes="(max-width: 300px) 100vw, 300px" />写一篇与技术无关的文章,供大家参考。我住北京朝阳,从上周三开始我家一家三口陆续发烧生病,自测抗原后,都是阳性。好消息是,这个奥密克戎跟一般的病毒性感冒差不多,没什么可怕的,不过,整个过程除了发病之外还有一些别的因为感染带出来的事,大家也需要知晓,以准备好,以免造成生活的不便,更好的照顾好自己和家人。</p>
<h4>整个过程</h4>
<p>我先说一下整个过程(我会不断更新这个过程,直到转阴)。说明一下,<strong>我孩子老婆都打过三针国产疫苗,孩子是科兴,老婆是北京生物,我完全没有打</strong>。</p>
<p>先是我家孩子(12 岁)。上周三(12 月 7 日),孩子早上起来就说头疼,一测体温,38 度 5,就停止上网课,老实休息了,我们并没给孩子吃什么药,到了晚上,孩子的体温到了 39.4,嗓子疼,我老婆用酒精给孩子物理降温(注:事实上最好别用酒精,因为会被皮肤吸收导致副作用),成功降到了 38.2 左右。周四(12 月 8 日),孩子的体温在 38.2 一天,我老婆给孩子吃了莲花清瘟,被我制止了,本来想上退烧药的,但是我想体温也不算高,能不吃就不吃,于是就让孩子冲了个复方感冒冲剂(其实里面含对乙酰氨基酚,后面会说)。周五(12 月 9 日),孩子不停地出汗,到下午体温正常了,然后咳嗽,鼻涕就来了,感冒症状来了,但精神不好,体虚无力。周末休息两天就基本没事了,也转阴了。</p>
<p>接下来就到我了。</p>
<p> <a href="/articles/22341.html#more-22341" class="more-link">…</p>
<p class="read-more"><a class="btn btn-default" href="/articles/22341.html"> 阅读全文<span class="screen-reader-text"> Read More</span></a></p>
<p></a></p>
<div id="post-ratings-22341" class="post-ratings" data-nonce="2d89f370a6"><img id="rating_22341_1" src="/wp-content/plugins/wp-postratings/images/stars_crystal/rating_on.gif" alt="好烂啊" title="好烂啊" onmouseover="if (!window.__cfRLUnblockHandlers) return false; current_rating(22341, 1, '好烂啊');" onmouseout="if (!window.__cfRLUnblockHandlers) return false; ratings_off(4.2, 0, 0);" onclick="if (!window.__cfRLUnblockHandlers) return false; rate_post();" onkeypress="if (!window.__cfRLUnblockHandlers) return false; rate_post();" style="cursor: pointer; border: 0px;" data-cf-modified-3f139aa76ddd12292059324c- /><img id="rating_22341_2" src="/wp-content/plugins/wp-postratings/images/stars_crystal/rating_on.gif" alt="有点差" title="有点差" onmouseover="if (!window.__cfRLUnblockHandlers) return false; current_rating(22341, 2, '有点差');" onmouseout="if (!window.__cfRLUnblockHandlers) return false; ratings_off(4.2, 0, 0);" onclick="if (!window.__cfRLUnblockHandlers) return false; rate_post();" onkeypress="if (!window.__cfRLUnblockHandlers) return false; rate_post();" style="cursor: pointer; border: 0px;" data-cf-modified-3f139aa76ddd12292059324c- /><img id="rating_22341_3" src="/wp-content/plugins/wp-postratings/images/stars_crystal/rating_on.gif" alt="凑合看看" title="凑合看看" onmouseover="if (!window.__cfRLUnblockHandlers) return false; current_rating(22341, 3, '凑合看看');" onmouseout="if (!window.__cfRLUnblockHandlers) return false; ratings_off(4.2, 0, 0);" onclick="if (!window.__cfRLUnblockHandlers) return false; rate_post();" onkeypress="if (!window.__cfRLUnblockHandlers) return false; rate_post();" style="cursor: pointer; border: 0px;" data-cf-modified-3f139aa76ddd12292059324c- /><img id="rating_22341_4" src="/wp-content/plugins/wp-postratings/images/stars_crystal/rating_on.gif" alt="还不错" title="还不错" onmouseover="if (!window.__cfRLUnblockHandlers) return false; current_rating(22341, 4, '还不错');" onmouseout="if (!window.__cfRLUnblockHandlers) return false; ratings_off(4.2, 0, 0);" onclick="if (!window.__cfRLUnblockHandlers) return false; rate_post();" onkeypress="if (!window.__cfRLUnblockHandlers) return false; rate_post();" style="cursor: pointer; border: 0px;" data-cf-modified-3f139aa76ddd12292059324c- /><img id="rating_22341_5" src="/wp-content/plugins/wp-postratings/images/stars_crystal/rating_off.gif" alt="很精彩" title="很精彩" onmouseover="if (!window.__cfRLUnblockHandlers) return false; current_rating(22341, 5, '很精彩');" onmouseout="if (!window.__cfRLUnblockHandlers) return false; ratings_off(4.2, 0, 0);" onclick="if (!window.__cfRLUnblockHandlers) return false; rate_post();" onkeypress="if (!window.__cfRLUnblockHandlers) return false; rate_post();" style="cursor: pointer; border: 0px;" data-cf-modified-3f139aa76ddd12292059324c- /> (<strong>57</strong> 人打了分,平均分: <strong>4.21</strong> )<br/><span class="post-ratings-text" id="ratings_22341_text"></span></div><div id="post-ratings-22341-loading" class="post-ratings-loading"><img src="/wp-content/plugins/wp-postratings/images/loading.gif" width="16" height="16" class="post-ratings-image" />Loading...</div>
</div>
<footer class="entry-footer">
</footer>
</article>
<article id="post-22320" class="post-content post-22320 post type-post status-publish format-standard hentry category-cplusplus category-unixlinux category-operatingsystem category-netsecurity tag-debug tag-ebpf tag-linux">
<header class="entry-header">
<span class="screen-reader-text">eBPF 介绍</span>
<h2 class="entry-title">
<a href="/articles/22320.html" rel="bookmark">eBPF 介绍</a>
</h2>
<div class="entry-meta">
<h5 class="entry-date"><i class="fa fa-calendar-o"></i> <a href="/articles/22320.html" title="10:38" rel="bookmark"><time class="entry-date" datetime="2022-12-10T10:38:51+08:00" pubdate>2022年12月10日 </time></a><span class="byline"><span class="sep"></span><i class="fa fa-user"></i>
<span class="author vcard"><a class="url fn n" href="/articles/author/haoel" title="View all posts by 陈皓" rel="author">陈皓</a></span></span> <i class="fa fa-comments-o"></i><span class="screen-reader-text">评论 </span> <a href="/articles/22320.html#comments" class="comments-link">18 条评论</a> <i class="fa fa-users" style="margin-left:10px;"></i> 39,108 人阅读</h5>
</div>
</header>
<div class="entry-content">
<p><img decoding="async" loading="lazy" class="alignright wp-image-22329 size-full" src="/wp-content/uploads/2022/12/eBPF.jpeg" alt width="301" height="167" />很早前就想写一篇关于eBPF的文章,但是迟迟没有动手,这两天有点时间,所以就来写一篇,这文章主要还是简单的介绍eBPF 是用来干什么的,并通过几个示例来介绍是怎么玩的,这个技术非常非常之强,Linux 操作系统的观测性实在是太强大了,并在 BCC 加持下变得一览无余。这个技术不是一般的运维人员或是系统管理员可以驾驭的,这个还是要有底层系统知识并有一定开发能力的技术人员才能驾驭的了的。<strong>我在这篇文章的最后给了个彩蛋。</strong></p>
<h4>介绍</h4>
<p>eBPF(extened Berkeley Packet Filter)是一种内核技术,它允许开发人员在不修改内核代码的情况下运行特定的功能。eBPF 的概念源自于 Berkeley Packet Filter(BPF),后者是由贝尔实验室开发的一种网络过滤器,可以捕获和过滤网络数据包。</p>
<p>出于对更好的 Linux 跟踪工具的需求,eBPF 从 <a href="https://illumos.org/books/dtrace/chp-intro.html">dtrace</a>中汲取灵感,dtrace 是一种主要用于 Solaris 和 BSD 操作系统的动态跟踪工具。与 dtrace 不同,Linux 无法全面了解正在运行的系统,因为它仅限于系统调用、库调用和函数的特定框架。<a href="https://www.kernel.org/doc/html/latest/bpf/index.html">在Berkeley Packet Filter</a> (BPF)(一种使用内核 VM 编写打包过滤代码的工具)的基础上,一小群工程师开始扩展 BPF 后端以提供与 dtrace 类似的功能集。 eBPF 诞生了。<strong>2014 年随 Linux 3.18 首次限量发布,充分利用 eBPF 至少需要 Linux 4.4 以上版本</strong>。</p>
<p> <a href="/articles/22320.html#more-22320" class="more-link">…</p>
<p class="read-more"><a class="btn btn-default" href="/articles/22320.html"> 阅读全文<span class="screen-reader-text"> Read More</span></a></p>
<p></a></p>
<div id="post-ratings-22320" class="post-ratings" data-nonce="2eeb823633"><img id="rating_22320_1" src="/wp-content/plugins/wp-postratings/images/stars_crystal/rating_on.gif" alt="好烂啊" title="好烂啊" onmouseover="if (!window.__cfRLUnblockHandlers) return false; current_rating(22320, 1, '好烂啊');" onmouseout="if (!window.__cfRLUnblockHandlers) return false; ratings_off(4.1, 0, 0);" onclick="if (!window.__cfRLUnblockHandlers) return false; rate_post();" onkeypress="if (!window.__cfRLUnblockHandlers) return false; rate_post();" style="cursor: pointer; border: 0px;" data-cf-modified-3f139aa76ddd12292059324c- /><img id="rating_22320_2" src="/wp-content/plugins/wp-postratings/images/stars_crystal/rating_on.gif" alt="有点差" title="有点差" onmouseover="if (!window.__cfRLUnblockHandlers) return false; current_rating(22320, 2, '有点差');" onmouseout="if (!window.__cfRLUnblockHandlers) return false; ratings_off(4.1, 0, 0);" onclick="if (!window.__cfRLUnblockHandlers) return false; rate_post();" onkeypress="if (!window.__cfRLUnblockHandlers) return false; rate_post();" style="cursor: pointer; border: 0px;" data-cf-modified-3f139aa76ddd12292059324c- /><img id="rating_22320_3" src="/wp-content/plugins/wp-postratings/images/stars_crystal/rating_on.gif" alt="凑合看看" title="凑合看看" onmouseover="if (!window.__cfRLUnblockHandlers) return false; current_rating(22320, 3, '凑合看看');" onmouseout="if (!window.__cfRLUnblockHandlers) return false; ratings_off(4.1, 0, 0);" onclick="if (!window.__cfRLUnblockHandlers) return false; rate_post();" onkeypress="if (!window.__cfRLUnblockHandlers) return false; rate_post();" style="cursor: pointer; border: 0px;" data-cf-modified-3f139aa76ddd12292059324c- /><img id="rating_22320_4" src="/wp-content/plugins/wp-postratings/images/stars_crystal/rating_on.gif" alt="还不错" title="还不错" onmouseover="if (!window.__cfRLUnblockHandlers) return false; current_rating(22320, 4, '还不错');" onmouseout="if (!window.__cfRLUnblockHandlers) return false; ratings_off(4.1, 0, 0);" onclick="if (!window.__cfRLUnblockHandlers) return false; rate_post();" onkeypress="if (!window.__cfRLUnblockHandlers) return false; rate_post();" style="cursor: pointer; border: 0px;" data-cf-modified-3f139aa76ddd12292059324c- /><img id="rating_22320_5" src="/wp-content/plugins/wp-postratings/images/stars_crystal/rating_off.gif" alt="很精彩" title="很精彩" onmouseover="if (!window.__cfRLUnblockHandlers) return false; current_rating(22320, 5, '很精彩');" onmouseout="if (!window.__cfRLUnblockHandlers) return false; ratings_off(4.1, 0, 0);" onclick="if (!window.__cfRLUnblockHandlers) return false; rate_post();" onkeypress="if (!window.__cfRLUnblockHandlers) return false; rate_post();" style="cursor: pointer; border: 0px;" data-cf-modified-3f139aa76ddd12292059324c- /> (<strong>18</strong> 人打了分,平均分: <strong>4.11</strong> )<br/><span class="post-ratings-text" id="ratings_22320_text"></span></div><div id="post-ratings-22320-loading" class="post-ratings-loading"><img src="/wp-content/plugins/wp-postratings/images/loading.gif" width="16" height="16" class="post-ratings-image" />Loading...</div>
</div>
<footer class="entry-footer">
</footer>
</article>
<article id="post-22298" class="post-content post-22298 post type-post status-publish format-standard hentry category-misc tag-discord tag-programmer tag-slack tag-880 tag-58">
<header class="entry-header">
<span class="screen-reader-text">聊聊团队协同和协同工具</span>
<h2 class="entry-title">
<a href="/articles/22298.html" rel="bookmark">聊聊团队协同和协同工具</a>
</h2>
<div class="entry-meta">
<h5 class="entry-date"><i class="fa fa-calendar-o"></i> <a href="/articles/22298.html" title="12:20" rel="bookmark"><time class="entry-date" datetime="2022-10-14T12:20:38+08:00" pubdate>2022年10月14日 </time></a><span class="byline"><span class="sep"></span><i class="fa fa-user"></i>
<span class="author vcard"><a class="url fn n" href="/articles/author/haoel" title="View all posts by 陈皓" rel="author">陈皓</a></span></span> <i class="fa fa-comments-o"></i><span class="screen-reader-text">评论 </span> <a href="/articles/22298.html#comments" class="comments-link">52 条评论</a> <i class="fa fa-users" style="margin-left:10px;"></i> 29,260 人阅读</h5>
</div>
</header>
<div class="entry-content">
<p><img decoding="async" loading="lazy" class="alignright size-medium wp-image-22308" src="/wp-content/uploads/2022/10/communication-300x168.png" alt width="300" height="168" srcset="/wp-content/uploads/2022/10/communication-300x168.png 300w, /wp-content/uploads/2022/10/communication-1024x574.png 1024w, /wp-content/uploads/2022/10/communication-768x431.png 768w, /wp-content/uploads/2022/10/communication-1536x861.png 1536w, /wp-content/uploads/2022/10/communication-482x270.png 482w, /wp-content/uploads/2022/10/communication.png 1680w" sizes="(max-width: 300px) 100vw, 300px" />这两天跟 <a href="https://twitter.com/CaliCastleMusic" target="_blank" rel="noopener">Cali</a> 和 <a href="https://twitter.com/RatherJie" target="_blank" rel="noopener">Rather</a> 做了一个线上的 <a href="https://kjsyp.fm/podcasts/43961/episodes/ep5-ft-megaease" target="_blank" rel="noopener">Podcast – Ep.5 一起聊聊团队协同</a>。主要是从 IM 工具扩展开来聊了一下团队的协同和相应的工具,但是聊天不是深度思考,有一些东西我没有讲透讲好,所以,我需要把我更多更完整更结构化的想法形成文字。(注:聊天聊地比较详细,本文只是想表达我的主要想法)</p>
<h4>国内外的企业 IM 的本质差别</h4>
<p>国内企业级在线交流工具主要有:企业微信、钉钉、飞书,国外的则是:Slack、Discord这两大IM工具,你会发现,他们有很多不一样的东西,<strong>其中有两个最大的不同,一个是企业管理,一个是企业文化。</strong></p>
<h5>企业管理</h5>
<p><strong>Slack/Discrod 主要是通过建 Channel ,而国内的IM则主要是拉群</strong>。你可能会说,这不是一样的吗?其实是不一样的,很明显,Channel 的属性是相对持久的,而群的属性则是临时的,前者是可以是部门,可以是团队,可以是项目,可以是产品,可以是某种长期存在的职能(如:技术分享),而拉群则是相对来说临时起意的,有时候,同样的人群能被重复地拉出好几次,因为之前临时起意的事做完了,所以群就被人所遗忘了,后面再有事就再来。<strong>很明显,Channel 这种方式明显是有管理的属性的,而拉群则是没有管理的</strong>。</p>
<p> <a href="/articles/22298.html#more-22298" class="more-link">…</p>
<p class="read-more"><a class="btn btn-default" href="/articles/22298.html"> 阅读全文<span class="screen-reader-text"> Read More</span></a></p>
<p></a></p>
<div id="post-ratings-22298" class="post-ratings" data-nonce="4c9cea2023"><img id="rating_22298_1" src="/wp-content/plugins/wp-postratings/images/stars_crystal/rating_on.gif" alt="好烂啊" title="好烂啊" onmouseover="if (!window.__cfRLUnblockHandlers) return false; current_rating(22298, 1, '好烂啊');" onmouseout="if (!window.__cfRLUnblockHandlers) return false; ratings_off(4.3, 5, 0);" onclick="if (!window.__cfRLUnblockHandlers) return false; rate_post();" onkeypress="if (!window.__cfRLUnblockHandlers) return false; rate_post();" style="cursor: pointer; border: 0px;" data-cf-modified-3f139aa76ddd12292059324c- /><img id="rating_22298_2" src="/wp-content/plugins/wp-postratings/images/stars_crystal/rating_on.gif" alt="有点差" title="有点差" onmouseover="if (!window.__cfRLUnblockHandlers) return false; current_rating(22298, 2, '有点差');" onmouseout="if (!window.__cfRLUnblockHandlers) return false; ratings_off(4.3, 5, 0);" onclick="if (!window.__cfRLUnblockHandlers) return false; rate_post();" onkeypress="if (!window.__cfRLUnblockHandlers) return false; rate_post();" style="cursor: pointer; border: 0px;" data-cf-modified-3f139aa76ddd12292059324c- /><img id="rating_22298_3" src="/wp-content/plugins/wp-postratings/images/stars_crystal/rating_on.gif" alt="凑合看看" title="凑合看看" onmouseover="if (!window.__cfRLUnblockHandlers) return false; current_rating(22298, 3, '凑合看看');" onmouseout="if (!window.__cfRLUnblockHandlers) return false; ratings_off(4.3, 5, 0);" onclick="if (!window.__cfRLUnblockHandlers) return false; rate_post();" onkeypress="if (!window.__cfRLUnblockHandlers) return false; rate_post();" style="cursor: pointer; border: 0px;" data-cf-modified-3f139aa76ddd12292059324c- /><img id="rating_22298_4" src="/wp-content/plugins/wp-postratings/images/stars_crystal/rating_on.gif" alt="还不错" title="还不错" onmouseover="if (!window.__cfRLUnblockHandlers) return false; current_rating(22298, 4, '还不错');" onmouseout="if (!window.__cfRLUnblockHandlers) return false; ratings_off(4.3, 5, 0);" onclick="if (!window.__cfRLUnblockHandlers) return false; rate_post();" onkeypress="if (!window.__cfRLUnblockHandlers) return false; rate_post();" style="cursor: pointer; border: 0px;" data-cf-modified-3f139aa76ddd12292059324c- /><img id="rating_22298_5" src="/wp-content/plugins/wp-postratings/images/stars_crystal/rating_half.gif" alt="很精彩" title="很精彩" onmouseover="if (!window.__cfRLUnblockHandlers) return false; current_rating(22298, 5, '很精彩');" onmouseout="if (!window.__cfRLUnblockHandlers) return false; ratings_off(4.3, 5, 0);" onclick="if (!window.__cfRLUnblockHandlers) return false; rate_post();" onkeypress="if (!window.__cfRLUnblockHandlers) return false; rate_post();" style="cursor: pointer; border: 0px;" data-cf-modified-3f139aa76ddd12292059324c- /> (<strong>69</strong> 人打了分,平均分: <strong>4.32</strong> )<br/><span class="post-ratings-text" id="ratings_22298_text"></span></div><div id="post-ratings-22298-loading" class="post-ratings-loading"><img src="/wp-content/plugins/wp-postratings/images/loading.gif" width="16" height="16" class="post-ratings-image" />Loading...</div>
</div>
<footer class="entry-footer">
</footer>
</article>
<article id="post-22263" class="post-content post-22263 post type-post status-publish format-standard hentry category-go- category-unixlinux category-operatingsystem category-proglanguage tag-so_linger tag-tcp tag-time_wait">
<header class="entry-header">
<span class="screen-reader-text">从一次经历谈 TIME_WAIT 的那些事</span>
<h2 class="entry-title">
<a href="/articles/22263.html" rel="bookmark">从一次经历谈 TIME_WAIT 的那些事</a>
</h2>
<div class="entry-meta">
<h5 class="entry-date"><i class="fa fa-calendar-o"></i> <a href="/articles/22263.html" title="14:43" rel="bookmark"><time class="entry-date" datetime="2022-07-19T14:43:39+08:00" pubdate>2022年07月19日 </time></a><span class="byline"><span class="sep"></span><i class="fa fa-user"></i>
<span class="author vcard"><a class="url fn n" href="/articles/author/haoel" title="View all posts by 陈皓" rel="author">陈皓</a></span></span> <i class="fa fa-comments-o"></i><span class="screen-reader-text">评论 </span> <a href="/articles/22263.html#comments" class="comments-link">31 条评论</a> <i class="fa fa-users" style="margin-left:10px;"></i> 37,180 人阅读</h5>
</div>
</header>
<div class="entry-content">
<p><img decoding="async" loading="lazy" class="alignright" src="/wp-content/uploads/2022/07/wall_clock-300x167.jpeg" alt width="400" height="222" />今天来讲一讲TCP 的 <code>TIME_WAIT</code> 的问题。这个问题尽人皆知,不过,这次遇到的是不太一样的场景,前两天也解决了,正好写篇文章,顺便把 <code>TIME_WAIT</code> 的那些事都说一说。对了,这个场景,跟我开源的探活小工具 <a href="https://github.com/megaease/easeprobe">EaseProbe</a> 有关,我先说说这个场景里的问题,然后,顺着这个场景跟大家好好说一下这个事。</p>
<h4>问题背景</h4>
<p>先说一下背景,<a href="https://github.com/megaease/easeprobe">EaseProbe</a> 是一个轻量独立的用来探活服务健康状况的小工具,支持http/tcp/shell/ssh/tls/host以及各种中间件的探活,然后,直接发送通知到主流的IM上,如:Slack/Telegram/Discrod/Email/Team,包括国内的企业微信/钉钉/飞书, 非常好用,用过的人都说好 😏。</p>
<p>这个探活工具在每次探活的时候,必须要从头开始建立整个网络链接,也就是说,需要从头开始进行DNS查询,建立TCP链接,然后进行通信,再关闭链接。这里,我们不会设置 TCP 的 KeepAlive 重用链接,因为探活工具除了要探活所远端的服务,还要探活整个网络的情况,所以,每次探活都需要从新来过,这样才能捕捉得到整个链路的情况。</p>
<p> <a href="/articles/22263.html#more-22263" class="more-link">…</p>
<p class="read-more"><a class="btn btn-default" href="/articles/22263.html"> 阅读全文<span class="screen-reader-text"> Read More</span></a></p>
<p></a></p>
<div id="post-ratings-22263" class="post-ratings" data-nonce="56ad904df4"><img id="rating_22263_1" src="/wp-content/plugins/wp-postratings/images/stars_crystal/rating_on.gif" alt="好烂啊" title="好烂啊" onmouseover="if (!window.__cfRLUnblockHandlers) return false; current_rating(22263, 1, '好烂啊');" onmouseout="if (!window.__cfRLUnblockHandlers) return false; ratings_off(4.6, 5, 0);" onclick="if (!window.__cfRLUnblockHandlers) return false; rate_post();" onkeypress="if (!window.__cfRLUnblockHandlers) return false; rate_post();" style="cursor: pointer; border: 0px;" data-cf-modified-3f139aa76ddd12292059324c- /><img id="rating_22263_2" src="/wp-content/plugins/wp-postratings/images/stars_crystal/rating_on.gif" alt="有点差" title="有点差" onmouseover="if (!window.__cfRLUnblockHandlers) return false; current_rating(22263, 2, '有点差');" onmouseout="if (!window.__cfRLUnblockHandlers) return false; ratings_off(4.6, 5, 0);" onclick="if (!window.__cfRLUnblockHandlers) return false; rate_post();" onkeypress="if (!window.__cfRLUnblockHandlers) return false; rate_post();" style="cursor: pointer; border: 0px;" data-cf-modified-3f139aa76ddd12292059324c- /><img id="rating_22263_3" src="/wp-content/plugins/wp-postratings/images/stars_crystal/rating_on.gif" alt="凑合看看" title="凑合看看" onmouseover="if (!window.__cfRLUnblockHandlers) return false; current_rating(22263, 3, '凑合看看');" onmouseout="if (!window.__cfRLUnblockHandlers) return false; ratings_off(4.6, 5, 0);" onclick="if (!window.__cfRLUnblockHandlers) return false; rate_post();" onkeypress="if (!window.__cfRLUnblockHandlers) return false; rate_post();" style="cursor: pointer; border: 0px;" data-cf-modified-3f139aa76ddd12292059324c- /><img id="rating_22263_4" src="/wp-content/plugins/wp-postratings/images/stars_crystal/rating_on.gif" alt="还不错" title="还不错" onmouseover="if (!window.__cfRLUnblockHandlers) return false; current_rating(22263, 4, '还不错');" onmouseout="if (!window.__cfRLUnblockHandlers) return false; ratings_off(4.6, 5, 0);" onclick="if (!window.__cfRLUnblockHandlers) return false; rate_post();" onkeypress="if (!window.__cfRLUnblockHandlers) return false; rate_post();" style="cursor: pointer; border: 0px;" data-cf-modified-3f139aa76ddd12292059324c- /><img id="rating_22263_5" src="/wp-content/plugins/wp-postratings/images/stars_crystal/rating_half.gif" alt="很精彩" title="很精彩" onmouseover="if (!window.__cfRLUnblockHandlers) return false; current_rating(22263, 5, '很精彩');" onmouseout="if (!window.__cfRLUnblockHandlers) return false; ratings_off(4.6, 5, 0);" onclick="if (!window.__cfRLUnblockHandlers) return false; rate_post();" onkeypress="if (!window.__cfRLUnblockHandlers) return false; rate_post();" style="cursor: pointer; border: 0px;" data-cf-modified-3f139aa76ddd12292059324c- /> (<strong>52</strong> 人打了分,平均分: <strong>4.56</strong> )<br/><span class="post-ratings-text" id="ratings_22263_text"></span></div><div id="post-ratings-22263-loading" class="post-ratings-loading"><img src="/wp-content/plugins/wp-postratings/images/loading.gif" width="16" height="16" class="post-ratings-image" />Loading...</div>
</div>
<footer class="entry-footer">
</footer>
</article>
<article id="post-22242" class="post-content post-22242 post type-post status-publish format-standard hentry category-go- category-progdesign tag-easegress tag-etcd tag-go tag-performance">
<header class="entry-header">
<span class="screen-reader-text">ETCD的内存问题</span>
<h2 class="entry-title">
<a href="/articles/22242.html" rel="bookmark">ETCD的内存问题</a>
</h2>
<div class="entry-meta">
<h5 class="entry-date"><i class="fa fa-calendar-o"></i> <a href="/articles/22242.html" title="16:13" rel="bookmark"><time class="entry-date" datetime="2022-05-05T16:13:37+08:00" pubdate>2022年05月05日 </time></a><span class="byline"><span class="sep"></span><i class="fa fa-user"></i>
<span class="author vcard"><a class="url fn n" href="/articles/author/haoel" title="View all posts by 陈皓" rel="author">陈皓</a></span></span> <i class="fa fa-comments-o"></i><span class="screen-reader-text">评论 </span> <a href="/articles/22242.html#comments" class="comments-link">39 条评论</a> <i class="fa fa-users" style="margin-left:10px;"></i> 33,241 人阅读</h5>
</div>
</header>
<div class="entry-content">
<p><img decoding="async" loading="lazy" class="alignright size-full wp-image-22247" src="/wp-content/uploads/2022/05/etcd.png" alt width="275" height="183" />今天跟大家分享一个etcd的内存大量占用的问题,这是前段时间在我们开源软件Easegress中遇到的问题,问题是比较简单的,但是我还想把前因后果说一下,包括,为什么要用etcd,使用etcd的用户场景,包括etcd的一些导致内存占用比较大的设计,以及最后一些建议。希望这篇文章不仅仅只是让你看到了一个简单的内存问题,还能让你有更多的收获。当然,也欢迎您关注我们的开源软件,给我们一些鼓励。</p>
<h4>为什么要用ETCD</h4>
<p>先说一下为什么要用etcd。先从一个我们自己做的一个API网关 – Easegress(<a href="https://github.com/megaease/easegress">源码</a>)说起。</p>
<p><a href="https://github.com/megaease/easegress" target="_blank" rel="noopener">Easegress</a> 是我们开发并开源的一个API应用网关产品,这个API应用网关不仅仅只是像nginx那样用来做一个反向代理,这个网关可以做的事很多,比如:API编排、服务发现、弹力设计(熔断、限流、重试等)、认证鉴权(JWT,OAuth2,HMAC等)、同样支持各种Cloud Native的架构如:微服务架构,Service Mesh,Serverless/FaaS的集成,并可以用于扛高并发、灰度发布、全链路压力测试、物联网……等更为高级的企业级的解决方案。所以,为了达到这些目标,在2017年的时候,我们觉得在现有的网关如Nginx上是无法演进出来这样的软件的,必需重新写一个(后来其他人也应该跟我们的想法一样,所以,Lyft写了一个Envoy。只不过,Envoy是用C++写的,而我用了技术门槛更低的Go语言)</p>
<p>另外,Easegress最核心的设计主要有三个:</p>
<p> <a href="/articles/22242.html#more-22242" class="more-link">…</p>
<p class="read-more"><a class="btn btn-default" href="/articles/22242.html"> 阅读全文<span class="screen-reader-text"> Read More</span></a></p>
<p></a></p>
<div id="post-ratings-22242" class="post-ratings" data-nonce="48bc4850c2"><img id="rating_22242_1" src="/wp-content/plugins/wp-postratings/images/stars_crystal/rating_on.gif" alt="好烂啊" title="好烂啊" onmouseover="if (!window.__cfRLUnblockHandlers) return false; current_rating(22242, 1, '好烂啊');" onmouseout="if (!window.__cfRLUnblockHandlers) return false; ratings_off(4.5, 5, 0);" onclick="if (!window.__cfRLUnblockHandlers) return false; rate_post();" onkeypress="if (!window.__cfRLUnblockHandlers) return false; rate_post();" style="cursor: pointer; border: 0px;" data-cf-modified-3f139aa76ddd12292059324c- /><img id="rating_22242_2" src="/wp-content/plugins/wp-postratings/images/stars_crystal/rating_on.gif" alt="有点差" title="有点差" onmouseover="if (!window.__cfRLUnblockHandlers) return false; current_rating(22242, 2, '有点差');" onmouseout="if (!window.__cfRLUnblockHandlers) return false; ratings_off(4.5, 5, 0);" onclick="if (!window.__cfRLUnblockHandlers) return false; rate_post();" onkeypress="if (!window.__cfRLUnblockHandlers) return false; rate_post();" style="cursor: pointer; border: 0px;" data-cf-modified-3f139aa76ddd12292059324c- /><img id="rating_22242_3" src="/wp-content/plugins/wp-postratings/images/stars_crystal/rating_on.gif" alt="凑合看看" title="凑合看看" onmouseover="if (!window.__cfRLUnblockHandlers) return false; current_rating(22242, 3, '凑合看看');" onmouseout="if (!window.__cfRLUnblockHandlers) return false; ratings_off(4.5, 5, 0);" onclick="if (!window.__cfRLUnblockHandlers) return false; rate_post();" onkeypress="if (!window.__cfRLUnblockHandlers) return false; rate_post();" style="cursor: pointer; border: 0px;" data-cf-modified-3f139aa76ddd12292059324c- /><img id="rating_22242_4" src="/wp-content/plugins/wp-postratings/images/stars_crystal/rating_on.gif" alt="还不错" title="还不错" onmouseover="if (!window.__cfRLUnblockHandlers) return false; current_rating(22242, 4, '还不错');" onmouseout="if (!window.__cfRLUnblockHandlers) return false; ratings_off(4.5, 5, 0);" onclick="if (!window.__cfRLUnblockHandlers) return false; rate_post();" onkeypress="if (!window.__cfRLUnblockHandlers) return false; rate_post();" style="cursor: pointer; border: 0px;" data-cf-modified-3f139aa76ddd12292059324c- /><img id="rating_22242_5" src="/wp-content/plugins/wp-postratings/images/stars_crystal/rating_half.gif" alt="很精彩" title="很精彩" onmouseover="if (!window.__cfRLUnblockHandlers) return false; current_rating(22242, 5, '很精彩');" onmouseout="if (!window.__cfRLUnblockHandlers) return false; ratings_off(4.5, 5, 0);" onclick="if (!window.__cfRLUnblockHandlers) return false; rate_post();" onkeypress="if (!window.__cfRLUnblockHandlers) return false; rate_post();" style="cursor: pointer; border: 0px;" data-cf-modified-3f139aa76ddd12292059324c- /> (<strong>37</strong> 人打了分,平均分: <strong>4.54</strong> )<br/><span class="post-ratings-text" id="ratings_22242_text"></span></div><div id="post-ratings-22242-loading" class="post-ratings-loading"><img src="/wp-content/plugins/wp-postratings/images/loading.gif" width="16" height="16" class="post-ratings-image" />Loading...</div>
</div>
<footer class="entry-footer">
</footer>
</article>
<article id="post-22173" class="post-content post-22173 post type-post status-publish format-standard hentry category-technews category-progdesign tag-http tag-programmer tag-restful tag-58">
<header class="entry-header">
<span class="screen-reader-text">“一把梭:REST API 全用 POST”</span>
<h2 class="entry-title">
<a href="/articles/22173.html" rel="bookmark">“一把梭:REST API 全用 POST”</a>
</h2>
<div class="entry-meta">
<h5 class="entry-date"><i class="fa fa-calendar-o"></i> <a href="/articles/22173.html" title="12:28" rel="bookmark"><time class="entry-date" datetime="2022-02-13T12:28:47+08:00" pubdate>2022年02月13日 </time></a><span class="byline"><span class="sep"></span><i class="fa fa-user"></i>
<span class="author vcard"><a class="url fn n" href="/articles/author/haoel" title="View all posts by 陈皓" rel="author">陈皓</a></span></span> <i class="fa fa-comments-o"></i><span class="screen-reader-text">评论 </span> <a href="/articles/22173.html#comments" class="comments-link">119 条评论</a> <i class="fa fa-users" style="margin-left:10px;"></i> 96,638 人阅读</h5>
</div>
</header>
<div class="entry-content">
<p><img decoding="async" loading="lazy" class="alignright wp-image-22176" src="/wp-content/uploads/2022/02/http_method-300x169.png" alt width="325" height="183" srcset="/wp-content/uploads/2022/02/http_method-300x169.png 300w, /wp-content/uploads/2022/02/http_method-1024x576.png 1024w, /wp-content/uploads/2022/02/http_method-768x432.png 768w, /wp-content/uploads/2022/02/http_method-480x270.png 480w, /wp-content/uploads/2022/02/http_method.png 1200w" sizes="(max-width: 325px) 100vw, 325px" /></p>
<p>写这篇文章的原因主要还是因为V2EX上的这个<a href="https://www.v2ex.com/t/830030?p=1" target="_blank" rel="noopener">贴子</a>,这个贴子中说——</p>
<blockquote><p>“对接同事的接口,他定义的所有接口都是 post 请求,理由是 https 用 post 更安全,之前习惯使用 restful api ,如果说 https 只有 post 请求是安全的话?那为啥还需要 get 、put 、delete ?我该如何反驳他。”</p></blockquote>
<p>然后该贴中大量的回复大概有这么几种论调,1)POST挺好的,就应该这么干,沟通少,2)一把梭,早点干完早点回家,3)吵赢了又怎么样?工作而已,优雅不能当饭吃。虽然评论没有一边倒,但是也有大量的人支持。然后,我在Twitter上嘲讽了一下,用POST干一切就像看到了来你家装修工人说,“老子干活就是用钉子钉一切,什么螺丝、螺栓、卡扣、插销……通通不用,钉枪一把梭,方便,快捷,安全,干完早回家……不过,还是有一些网友觉得用POST挺好的,而且可以节约时间。所以,正好,我在《<a title="我做系统架构的一些原则" href="/articles/21672.html" target="_blank" rel="noopener">我做系统架构的原则</a>》中的“<a href="/articles/21672.html#%E5%8E%9F%E5%88%99%E4%BA%94%EF%BC%9A%E5%88%B6%E5%AE%9A%E5%B9%B6%E9%81%B5%E5%BE%AA%E6%9C%8D%E4%BB%8E%E6%A0%87%E5%87%86%E3%80%81%E8%A7%84%E8%8C%83%E5%92%8C%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5" target="_blank" rel="noopener">原则五</a>”中反对API返回码无论对错全是200的返回那,我专门写下这一篇文章,以正视听。</p>
<p>这篇文章主要分成下面这几个部分:</p>
<ol>
<li>为什么要用不同的HTTP动词?</li>
<li>Restful 进行复杂查询</li>
<li>几个主要问题的回应
<ul>
<li>POST 更安全吗?</li>
<li>全用 POST 可以节省时间沟通少吗?</li>
<li>早点回家的正确姿势</li>
<li>工作而已,优雅不能当饭吃</li>
</ul>
</li>
</ol>
<p> <a href="/articles/22173.html#more-22173" class="more-link">…</p>
<p class="read-more"><a class="btn btn-default" href="/articles/22173.html"> 阅读全文<span class="screen-reader-text"> Read More</span></a></p>
<p></a></p>
<div id="post-ratings-22173" class="post-ratings" data-nonce="647b11013a"><img id="rating_22173_1" src="/wp-content/plugins/wp-postratings/images/stars_crystal/rating_on.gif" alt="好烂啊" title="好烂啊" onmouseover="if (!window.__cfRLUnblockHandlers) return false; current_rating(22173, 1, '好烂啊');" onmouseout="if (!window.__cfRLUnblockHandlers) return false; ratings_off(4.6, 5, 0);" onclick="if (!window.__cfRLUnblockHandlers) return false; rate_post();" onkeypress="if (!window.__cfRLUnblockHandlers) return false; rate_post();" style="cursor: pointer; border: 0px;" data-cf-modified-3f139aa76ddd12292059324c- /><img id="rating_22173_2" src="/wp-content/plugins/wp-postratings/images/stars_crystal/rating_on.gif" alt="有点差" title="有点差" onmouseover="if (!window.__cfRLUnblockHandlers) return false; current_rating(22173, 2, '有点差');" onmouseout="if (!window.__cfRLUnblockHandlers) return false; ratings_off(4.6, 5, 0);" onclick="if (!window.__cfRLUnblockHandlers) return false; rate_post();" onkeypress="if (!window.__cfRLUnblockHandlers) return false; rate_post();" style="cursor: pointer; border: 0px;" data-cf-modified-3f139aa76ddd12292059324c- /><img id="rating_22173_3" src="/wp-content/plugins/wp-postratings/images/stars_crystal/rating_on.gif" alt="凑合看看" title="凑合看看" onmouseover="if (!window.__cfRLUnblockHandlers) return false; current_rating(22173, 3, '凑合看看');" onmouseout="if (!window.__cfRLUnblockHandlers) return false; ratings_off(4.6, 5, 0);" onclick="if (!window.__cfRLUnblockHandlers) return false; rate_post();" onkeypress="if (!window.__cfRLUnblockHandlers) return false; rate_post();" style="cursor: pointer; border: 0px;" data-cf-modified-3f139aa76ddd12292059324c- /><img id="rating_22173_4" src="/wp-content/plugins/wp-postratings/images/stars_crystal/rating_on.gif" alt="还不错" title="还不错" onmouseover="if (!window.__cfRLUnblockHandlers) return false; current_rating(22173, 4, '还不错');" onmouseout="if (!window.__cfRLUnblockHandlers) return false; ratings_off(4.6, 5, 0);" onclick="if (!window.__cfRLUnblockHandlers) return false; rate_post();" onkeypress="if (!window.__cfRLUnblockHandlers) return false; rate_post();" style="cursor: pointer; border: 0px;" data-cf-modified-3f139aa76ddd12292059324c- /><img id="rating_22173_5" src="/wp-content/plugins/wp-postratings/images/stars_crystal/rating_half.gif" alt="很精彩" title="很精彩" onmouseover="if (!window.__cfRLUnblockHandlers) return false; current_rating(22173, 5, '很精彩');" onmouseout="if (!window.__cfRLUnblockHandlers) return false; ratings_off(4.6, 5, 0);" onclick="if (!window.__cfRLUnblockHandlers) return false; rate_post();" onkeypress="if (!window.__cfRLUnblockHandlers) return false; rate_post();" style="cursor: pointer; border: 0px;" data-cf-modified-3f139aa76ddd12292059324c- /> (<strong>217</strong> 人打了分,平均分: <strong>4.61</strong> )<br/><span class="post-ratings-text" id="ratings_22173_text"></span></div><div id="post-ratings-22173-loading" class="post-ratings-loading"><img src="/wp-content/plugins/wp-postratings/images/loading.gif" width="16" height="16" class="post-ratings-image" />Loading...</div>
</div>
<footer class="entry-footer">
</footer>
</article>
<article id="post-22157" class="post-content post-22157 post type-post status-publish format-standard hentry category-technews category-550 category-career tag-programmer tag-58">
<header class="entry-header">
<span class="screen-reader-text">谈谈公司对员工的监控</span>
<h2 class="entry-title">
<a href="/articles/22157.html" rel="bookmark">谈谈公司对员工的监控</a>
</h2>
<div class="entry-meta">
<h5 class="entry-date"><i class="fa fa-calendar-o"></i> <a href="/articles/22157.html" title="15:50" rel="bookmark"><time class="entry-date" datetime="2022-02-12T15:50:06+08:00" pubdate>2022年02月12日 </time></a><span class="byline"><span class="sep"></span><i class="fa fa-user"></i>
<span class="author vcard"><a class="url fn n" href="/articles/author/haoel" title="View all posts by 陈皓" rel="author">陈皓</a></span></span> <i class="fa fa-comments-o"></i><span class="screen-reader-text">评论 </span> <a href="/articles/22157.html#comments" class="comments-link">26 条评论</a> <i class="fa fa-users" style="margin-left:10px;"></i> 58,662 人阅读</h5>
</div>
</header>
<div class="entry-content">
<p>今天看到微博上有一个热点事件, 是一个关于某公司做的一个监控员工离职倾向的软件,从截图中可以看到员工访问招聘网站的次数,还有投递的简历以及搜索的关建词等等信息,通过这些信息分析员工的离职倾向。然后我发一个微博,说了一下,我以前工作过的公司无论外国公司还是中国公司都有这样的情况,收到一些人来问我相关的情况,所以,我想还是写篇文章详细地说一下,我对这种事情的看法。</p>
<p><a href="/wp-content/uploads/2022/02/monitoring.jpeg"><img decoding="async" loading="lazy" class="aligncenter wp-image-22159 size-large" src="/wp-content/uploads/2022/02/monitoring-1024x534.jpeg" alt width="640" height="334" srcset="/wp-content/uploads/2022/02/monitoring-1024x534.jpeg 1024w, /wp-content/uploads/2022/02/monitoring-300x156.jpeg 300w, /wp-content/uploads/2022/02/monitoring-768x400.jpeg 768w, /wp-content/uploads/2022/02/monitoring-1536x801.jpeg 1536w, /wp-content/uploads/2022/02/monitoring-518x270.jpeg 518w, /wp-content/uploads/2022/02/monitoring.jpeg 1920w" sizes="(max-width: 640px) 100vw, 640px" /></a></p>
<p>本文分成下面个部分:</p>
<ul>
<li>公司监控员工的技术手段有哪些?</li>
<li>为什么要监控员工?</li>
<li>外企和国企有什么不一样?</li>
<li>我对此事的看法</li>
</ul>
<p> <a href="/articles/22157.html#more-22157" class="more-link">…</p>
<p class="read-more"><a class="btn btn-default" href="/articles/22157.html"> 阅读全文<span class="screen-reader-text"> Read More</span></a></p>
<p></a></p>
<div id="post-ratings-22157" class="post-ratings" data-nonce="ce00e15a65"><img id="rating_22157_1" src="/wp-content/plugins/wp-postratings/images/stars_crystal/rating_on.gif" alt="好烂啊" title="好烂啊" onmouseover="if (!window.__cfRLUnblockHandlers) return false; current_rating(22157, 1, '好烂啊');" onmouseout="if (!window.__cfRLUnblockHandlers) return false; ratings_off(4.5, 5, 0);" onclick="if (!window.__cfRLUnblockHandlers) return false; rate_post();" onkeypress="if (!window.__cfRLUnblockHandlers) return false; rate_post();" style="cursor: pointer; border: 0px;" data-cf-modified-3f139aa76ddd12292059324c- /><img id="rating_22157_2" src="/wp-content/plugins/wp-postratings/images/stars_crystal/rating_on.gif" alt="有点差" title="有点差" onmouseover="if (!window.__cfRLUnblockHandlers) return false; current_rating(22157, 2, '有点差');" onmouseout="if (!window.__cfRLUnblockHandlers) return false; ratings_off(4.5, 5, 0);" onclick="if (!window.__cfRLUnblockHandlers) return false; rate_post();" onkeypress="if (!window.__cfRLUnblockHandlers) return false; rate_post();" style="cursor: pointer; border: 0px;" data-cf-modified-3f139aa76ddd12292059324c- /><img id="rating_22157_3" src="/wp-content/plugins/wp-postratings/images/stars_crystal/rating_on.gif" alt="凑合看看" title="凑合看看" onmouseover="if (!window.__cfRLUnblockHandlers) return false; current_rating(22157, 3, '凑合看看');" onmouseout="if (!window.__cfRLUnblockHandlers) return false; ratings_off(4.5, 5, 0);" onclick="if (!window.__cfRLUnblockHandlers) return false; rate_post();" onkeypress="if (!window.__cfRLUnblockHandlers) return false; rate_post();" style="cursor: pointer; border: 0px;" data-cf-modified-3f139aa76ddd12292059324c- /><img id="rating_22157_4" src="/wp-content/plugins/wp-postratings/images/stars_crystal/rating_on.gif" alt="还不错" title="还不错" onmouseover="if (!window.__cfRLUnblockHandlers) return false; current_rating(22157, 4, '还不错');" onmouseout="if (!window.__cfRLUnblockHandlers) return false; ratings_off(4.5, 5, 0);" onclick="if (!window.__cfRLUnblockHandlers) return false; rate_post();" onkeypress="if (!window.__cfRLUnblockHandlers) return false; rate_post();" style="cursor: pointer; border: 0px;" data-cf-modified-3f139aa76ddd12292059324c- /><img id="rating_22157_5" src="/wp-content/plugins/wp-postratings/images/stars_crystal/rating_half.gif" alt="很精彩" title="很精彩" onmouseover="if (!window.__cfRLUnblockHandlers) return false; current_rating(22157, 5, '很精彩');" onmouseout="if (!window.__cfRLUnblockHandlers) return false; ratings_off(4.5, 5, 0);" onclick="if (!window.__cfRLUnblockHandlers) return false; rate_post();" onkeypress="if (!window.__cfRLUnblockHandlers) return false; rate_post();" style="cursor: pointer; border: 0px;" data-cf-modified-3f139aa76ddd12292059324c- /> (<strong>76</strong> 人打了分,平均分: <strong>4.53</strong> )<br/><span class="post-ratings-text" id="ratings_22157_text"></span></div><div id="post-ratings-22157-loading" class="post-ratings-loading"><img src="/wp-content/plugins/wp-postratings/images/loading.gif" width="16" height="16" class="post-ratings-image" />Loading...</div>
</div>
<footer class="entry-footer">
</footer>
</article>
<nav class="navigation posts-navigation" role="navigation">
<h2 class="screen-reader-text">Posts navigation</h2>
<div class="nav-links">
<div class="row">
<div class="wp-pagenavi" role="navigation">
<span class="pages">第 1 / 74 页</span><span aria-current="page" class="current">1</span><a class="page larger" title="第 2 页" href="/page/2">2</a><a class="page larger" title="第 3 页" href="/page/3">3</a><a class="page larger" title="第 4 页" href="/page/4">4</a><a class="page larger" title="第 5 页" href="/page/5">5</a><a class="page larger" title="第 6 页" href="/page/6">6</a><a class="page larger" title="第 7 页" href="/page/7">7</a><a class="page larger" title="第 8 页" href="/page/8">8</a><a class="page larger" title="第 9 页" href="/page/9">9</a><a class="page larger" title="第 10 页" href="/page/10">10</a><span class="extend">...</span><a class="larger page" title="第 20 页" href="/page/20">20</a><a class="larger page" title="第 30 页" href="/page/30">30</a><a class="larger page" title="第 40 页" href="/page/40">40</a><a class="larger page" title="第 50 页" href="/page/50">50</a><a class="larger page" title="第 60 页" href="/page/60">60</a><span class="extend">...</span><a class="nextpostslink" rel="next" aria-label="下一页" href="/page/2">»</a><a class="last" aria-label="Last Page" href="/page/74">末页 »</a>
</div>
</div>
</div>
</nav>
</main>
</div>
<div id="secondary" class="col-md-3 hidden-sm hidden-xs sidebar widget-area" role="complementary">
<aside id="search-9" class="widget widget_search">
<form role="search" method="get" class="search-form" action="https://coolshell.cn/">
<label>
<span class="screen-reader-text">Search for:</span>
<input type="search" class="search-field" placeholder="Search …" value name="s" title="Search for:" />
</label>
<button type="submit" class="search-submit"><span class="screen-reader-text">Search</span></button>
</form>
</aside><aside id="custom_html-3" class="widget_text widget widget_custom_html"><h4 class="widget-title">本站公告</h4><div class="textwidget custom-html-widget"><p align="center"><a class="twitter" href="https://twitter.com/haoel" target="_blank" rel="noopener"> Twitter @haoel </a></p>
<p align="center">极客时间专栏<br><a href="http://gk.link/a/10sBp" target="_blank" rel="noopener"><img src="/wp-content/uploads/2021/06/8311623409583_.pic_hd-1024x1024.jpg" height="200" weight="200" alt="极客时间专栏" title="极客时间专栏"></a></p>
</div></aside>
<aside id="recent-posts-4" class="widget widget_recent_entries">
<h4 class="widget-title">最新文章</h4>
<ul>
<li>
<a href="/articles/22422.html">是微服务架构不香还是云不香?</a>
</li>
<li>
<a href="/articles/22398.html">我看ChatGPT: 为啥谷歌掉了千亿美金</a>
</li>
<li>
<a href="/articles/22367.html">聊聊 nostr 和 审查</a>
</li>
<li>
<a href="/articles/22341.html">感染新冠的经历</a>
</li>
<li>
<a href="/articles/22320.html">eBPF 介绍</a>
</li>
<li>
<a href="/articles/22298.html">聊聊团队协同和协同工具</a>
</li>
<li>
<a href="/articles/22263.html">从一次经历谈 TIME_WAIT 的那些事</a>
</li>
<li>
<a href="/articles/22242.html">ETCD的内存问题</a>
</li>
<li>
<a href="/articles/22173.html">“一把梭:REST API 全用 POST”</a>
</li>
<li>
<a href="/articles/22157.html">谈谈公司对员工的监控</a>
</li>
<li>
<a href="/articles/21708.html">网络数字身份认证术</a>
</li>
<li>
<a href="/articles/21672.html">我做系统架构的一些原则</a>
</li>
<li>
<a href="/articles/21649.html">源代码特洛伊木马攻击</a>
</li>
<li>
<a href="/articles/21615.html">Go编程模式 : 泛型编程</a>
</li>
<li>
<a href="/articles/21589.html">如何做一个有质量的技术分享</a>
</li>
<li>
<a href="/articles/21263.html">Go 编程模式:k8s Visitor 模式</a>
</li>
<li>
<a href="/articles/21228.html">Go编程模式:Pipeline</a>
</li>
<li>
<a href="/articles/21214.html">Go编程模式:委托和反转控制</a>
</li>
<li>
<a href="/articles/21179.html">Go 编程模式:Go Generation</a>
</li>
<li>
<a href="/articles/21164.html">Go编程模式:Map-Reduce</a>
</li>
<li>
<a href="/articles/21146.html">Go 编程模式:Functional Options</a>
</li>
<li>
<a href="/articles/21140.html">Go 编程模式:错误处理</a>
</li>
<li>
<a href="/articles/21128.html">Go编程模式:切片,接口,时间和性能</a>
</li>
<li>
<a href="/articles/21113.html">百度为什么掉队了</a>
</li>
<li>
<a href="/articles/20977.html">程序员如何把控自己的职业</a>
</li>
<li>
<a href="/articles/21003.html">计时攻击 Timing Attacks</a>
</li>
<li>
<a href="/articles/20845.html">Rust语言的编程范式</a>
</li>
<li>
<a href="/articles/20793.html">与程序员相关的CPU缓存知识</a>
</li>
<li>
<a href="/articles/20765.html">MegaEase的远程工作文化</a>
</li>
<li>
<a href="/articles/20533.html">使用简单的逻辑方法进行独立思考</a>
</li>
</ul>
</aside><aside id="views-6" class="widget widget_views"><h4 class="widget-title">全站热门</h4><ul>
<li><a href="/articles/4990.html" title="程序员技术练级攻略 - 10,239,298 人阅读">程序员技术练级攻略</a></li><li><a href="/articles/3961.html" title="“火柴棍式”程序员面试题 - 2,356,381 人阅读">“火柴棍式”程序员面试题</a></li><li><a href="/articles/5426.html" title="简明 Vim 练级攻略 - 1,325,304 人阅读">简明 Vim 练级攻略</a></li><li><a href="/articles/9308.html" title="“作环保的程序员,从不用百度开始” - 589,316 人阅读">“作环保的程序员,从不用百度开始”</a></li><li><a href="/articles/11564.html" title="TCP 的那些事儿(上) - 488,699 人阅读">TCP 的那些事儿(上)</a></li><li><a href="/articles/9070.html" title="AWK 简明教程 - 453,305 人阅读">AWK 简明教程</a></li><li><a href="/articles/7186.html" title="做个环保主义的程序员 - 447,300 人阅读">做个环保主义的程序员</a></li><li><a href="/articles/10688.html" title="编程能力与编程年龄 - 416,703 人阅读">编程能力与编程年龄</a></li><li><a href="/articles/10590.html" title="二维码的生成细节和原理 - 393,826 人阅读">二维码的生成细节和原理</a></li><li><a href="/articles/9104.html" title="sed 简明教程 - 380,260 人阅读">sed 简明教程</a></li><li><a href="/articles/4102.html" title="如何学好C语言 - 368,390 人阅读">如何学好C语言</a></li><li><a href="/articles/19464.html" title="如何超过大多数人 - 314,098 人阅读">如何超过大多数人</a></li><li><a href="/articles/17583.html" title="技术人员的发展之路 - 308,342 人阅读">技术人员的发展之路</a></li><li><a href="/articles/9606.html" title="疫苗:Java HashMap的死循环 - 305,402 人阅读">疫苗:Java HashMap的死循环</a></li><li><a href="/articles/6470.html" title="由12306.cn谈谈网站性能技术 - 298,934 人阅读">由12306.cn谈谈网站性能技术</a></li><li><a href="/articles/8883.html" title="应该知道的Linux技巧 - 296,745 人阅读">应该知道的Linux技巧</a></li><li><a href="/articles/17416.html" title="缓存更新的套路 - 293,607 人阅读">缓存更新的套路</a></li><li><a href="/articles/10910.html" title="分布式系统的事务处理 - 284,609 人阅读">分布式系统的事务处理</a></li><li><a href="/articles/11609.html" title="TCP 的那些事儿(下) - 284,355 人阅读">TCP 的那些事儿(下)</a></li><li><a href="/articles/2250.html" title="“21天教你学会C++” - 278,589 人阅读">“21天教你学会C++”</a></li><li><a href="/articles/8239.html" title="无锁队列的实现 - 274,276 人阅读">无锁队列的实现</a></li><li><a href="/articles/20276.html" title="别让自己“墙”了自己 - 271,172 人阅读">别让自己“墙”了自己</a></li><li><a href="/articles/10739.html" title="Lua简明教程 - 269,332 人阅读">Lua简明教程</a></li><li><a href="/articles/7490.html" title="性能调优攻略 - 257,249 人阅读">性能调优攻略</a></li><li><a href="/articles/1846.html" title="MySQL性能优化的最佳20+条经验 - 255,742 人阅读">MySQL性能优化的最佳20+条经验</a></li><li><a href="/articles/4758.html" title="如何写出无法维护的代码 - 254,087 人阅读">如何写出无法维护的代码</a></li><li><a href="/articles/914.html" title="6个变态的C语言Hello World程序 - 251,857 人阅读">6个变态的C语言Hello World程序</a></li><li><a href="/articles/17010.html" title="Docker基础技术:Linux Namespace(上) - 241,769 人阅读">Docker基础技术:Linux Namespace(上)</a></li><li><a href="/articles/7829.html" title="28个Unix/Linux的命令行神器 - 241,193 人阅读">28个Unix/Linux的命令行神器</a></li><li><a href="/articles/11312.html" title="无插件Vim编程技巧 - 222,784 人阅读">无插件Vim编程技巧</a></li></ul>
</aside><aside id="categories-367921425" class="widget widget_categories"><h4 class="widget-title">分类</h4>
<ul>
<li class="cat-item cat-item-195"><a href="/category/itnews">业界新闻</a> (33)
</li>
<li class="cat-item cat-item-509"><a href="/category/%e4%bc%81%e4%b8%9a%e5%ba%94%e7%94%a8">企业应用</a> (2)
</li>
<li class="cat-item cat-item-9"><a href="/category/technews">技术新闻</a> (38)
</li>
<li class="cat-item cat-item-550"><a href="/category/%e6%8a%80%e6%9c%af%e7%ae%a1%e7%90%86">技术管理</a> (19)
</li>
<li class="cat-item cat-item-12"><a href="/category/techarticle">技术读物</a> (125)
</li>
<li class="cat-item cat-item-18"><a href="/category/operatingsystem">操作系统</a> (97)
<ul class="children">
<li class="cat-item cat-item-20"><a href="/category/operatingsystem/unixlinux">Unix/Linux</a> (81)
</li>
<li class="cat-item cat-item-19"><a href="/category/operatingsystem/mswindows">Windows</a> (12)
</li>
</ul>
</li>
<li class="cat-item cat-item-105"><a href="/category/datebase">数据库</a> (11)
</li>
<li class="cat-item cat-item-10"><a href="/category/misc">杂项资源</a> (295)
</li>
<li class="cat-item cat-item-15"><a href="/category/process">流程方法</a> (48)
</li>
<li class="cat-item cat-item-23"><a href="/category/progdesign">程序设计</a> (110)
</li>
<li class="cat-item cat-item-602"><a href="/category/%e7%b3%bb%e7%bb%9f%e6%9e%b6%e6%9e%84">系统架构</a> (15)
</li>
<li class="cat-item cat-item-1"><a href="/category/tools">编程工具</a> (67)
</li>
<li class="cat-item cat-item-3"><a href="/category/proglanguage">编程语言</a> (326)
<ul class="children">
<li class="cat-item cat-item-189"><a href="/category/proglanguage/dotnet">.NET编程</a> (3)
</li>
<li class="cat-item cat-item-8"><a href="/category/proglanguage/ajaxdev">Ajax开发</a> (9)
</li>
<li class="cat-item cat-item-5"><a href="/category/proglanguage/cplusplus">C/C++语言</a> (74)
</li>
<li class="cat-item cat-item-186"><a href="/category/proglanguage/erlang">Erlang</a> (1)
</li>
<li class="cat-item cat-item-819"><a href="/category/proglanguage/go-%e8%af%ad%e8%a8%80">Go 语言</a> (15)
</li>
<li class="cat-item cat-item-4"><a href="/category/proglanguage/javadev">Java语言</a> (32)
</li>
<li class="cat-item cat-item-11"><a href="/category/proglanguage/phpdev">PHP脚本</a> (11)
</li>
<li class="cat-item cat-item-33"><a href="/category/proglanguage/pythondev">Python</a> (23)
</li>
<li class="cat-item cat-item-100"><a href="/category/proglanguage/rubydev">Ruby</a> (5)
</li>
<li class="cat-item cat-item-860"><a href="/category/proglanguage/rust-%e8%af%ad%e8%a8%80">Rust 语言</a> (1)
</li>
<li class="cat-item cat-item-7"><a href="/category/proglanguage/webdev">Web开发</a> (106)
</li>
</ul>
</li>
<li class="cat-item cat-item-6"><a href="/category/netsecurity">网络安全</a> (36)
</li>
<li class="cat-item cat-item-39"><a href="/category/career">职场生涯</a> (40)
</li>
<li class="cat-item cat-item-271"><a href="/category/funny">趣味问题</a> (19)
</li>
<li class="cat-item cat-item-52"><a href="/category/story">轶事趣闻</a> (147)
</li>
</ul>
</aside><aside id="tag_cloud-4" class="widget widget_tag_cloud"><h4 class="widget-title">标签</h4><div class="tagcloud"><a href="/tag/agile" class="tag-cloud-link tag-link-17 tag-link-position-1" style="font-size: 11.559322033898pt;" aria-label="agile (15个项目)">agile</a>
<a href="/tag/ajax" class="tag-cloud-link tag-link-34 tag-link-position-2" style="font-size: 10.135593220339pt;" aria-label="AJAX (11个项目)">AJAX</a>
<a href="/tag/algorithm" class="tag-cloud-link tag-link-76 tag-link-position-3" style="font-size: 14.28813559322pt;" aria-label="Algorithm (26个项目)">Algorithm</a>
<a href="/tag/android" class="tag-cloud-link tag-link-145 tag-link-position-4" style="font-size: 10.135593220339pt;" aria-label="Android (11个项目)">Android</a>
<a href="/tag/bash" class="tag-cloud-link tag-link-190 tag-link-position-5" style="font-size: 9.1864406779661pt;" aria-label="Bash (9个项目)">Bash</a>
<a href="/tag/c" class="tag-cloud-link tag-link-59 tag-link-position-6" style="font-size: 20.694915254237pt;" aria-label="C++ (93个项目)">C++</a>
<a href="/tag/coding" class="tag-cloud-link tag-link-135 tag-link-position-7" style="font-size: 14.28813559322pt;" aria-label="Coding (26个项目)">Coding</a>
<a href="/tag/css" class="tag-cloud-link tag-link-96 tag-link-position-8" style="font-size: 13.457627118644pt;" aria-label="CSS (22个项目)">CSS</a>
<a href="/tag/design" class="tag-cloud-link tag-link-71 tag-link-position-9" style="font-size: 13.932203389831pt;" aria-label="Design (24个项目)">Design</a>
<a href="/tag/design-pattern" class="tag-cloud-link tag-link-25 tag-link-position-10" style="font-size: 9.6610169491525pt;" aria-label="design pattern (10个项目)">design pattern</a>
<a href="/tag/ebook" class="tag-cloud-link tag-link-101 tag-link-position-11" style="font-size: 11.559322033898pt;" aria-label="ebook (15个项目)">ebook</a>
<a href="/tag/flash" class="tag-cloud-link tag-link-98 tag-link-position-12" style="font-size: 8pt;" aria-label="Flash (7个项目)">Flash</a>
<a href="/tag/game" class="tag-cloud-link tag-link-125 tag-link-position-13" style="font-size: 9.1864406779661pt;" aria-label="Game (9个项目)">Game</a>
<a href="/tag/go" class="tag-cloud-link tag-link-238 tag-link-position-14" style="font-size: 13.220338983051pt;" aria-label="Go (21个项目)">Go</a>
<a href="/tag/golang" class="tag-cloud-link tag-link-237 tag-link-position-15" style="font-size: 10.966101694915pt;" aria-label="golang (13个项目)">golang</a>
<a href="/tag/google" class="tag-cloud-link tag-link-32 tag-link-position-16" style="font-size: 15.474576271186pt;" aria-label="Google (33个项目)">Google</a>
<a href="/tag/html" class="tag-cloud-link tag-link-38 tag-link-position-17" style="font-size: 15.593220338983pt;" aria-label="HTML (34个项目)">HTML</a>
<a href="/tag/ie" class="tag-cloud-link tag-link-175 tag-link-position-18" style="font-size: 9.6610169491525pt;" aria-label="IE (10个项目)">IE</a>
<a href="/tag/java" class="tag-cloud-link tag-link-13 tag-link-position-19" style="font-size: 17.610169491525pt;" aria-label="Java (50个项目)">Java</a>
<a href="/tag/javascript" class="tag-cloud-link tag-link-114 tag-link-position-20" style="font-size: 17.966101694915pt;" aria-label="Javascript (54个项目)">Javascript</a>
<a href="/tag/jquery" class="tag-cloud-link tag-link-191 tag-link-position-21" style="font-size: 10.135593220339pt;" aria-label="jQuery (11个项目)">jQuery</a>
<a href="/tag/linux" class="tag-cloud-link tag-link-37 tag-link-position-22" style="font-size: 19.389830508475pt;" aria-label="Linux (71个项目)">Linux</a>
<a href="/tag/mysql" class="tag-cloud-link tag-link-106 tag-link-position-23" style="font-size: 8pt;" aria-label="MySQL (7个项目)">MySQL</a>
<a href="/tag/oop" class="tag-cloud-link tag-link-245 tag-link-position-24" style="font-size: 8.5932203389831pt;" aria-label="OOP (8个项目)">OOP</a>
<a href="/tag/password" class="tag-cloud-link tag-link-319 tag-link-position-25" style="font-size: 8.5932203389831pt;" aria-label="password (8个项目)">password</a>
<a href="/tag/performance" class="tag-cloud-link tag-link-120 tag-link-position-26" style="font-size: 12.271186440678pt;" aria-label="Performance (17个项目)">Performance</a>
<a href="/tag/php" class="tag-cloud-link tag-link-35 tag-link-position-27" style="font-size: 14.050847457627pt;" aria-label="PHP (25个项目)">PHP</a>
<a href="/tag/programmer" class="tag-cloud-link tag-link-70 tag-link-position-28" style="font-size: 21.881355932203pt;" aria-label="Programmer (116个项目)">Programmer</a>
<a href="/tag/programming" class="tag-cloud-link tag-link-499 tag-link-position-29" style="font-size: 10.135593220339pt;" aria-label="Programming (11个项目)">Programming</a>
<a href="/tag/programming-language" class="tag-cloud-link tag-link-115 tag-link-position-30" style="font-size: 10.491525423729pt;" aria-label="programming language (12个项目)">programming language</a>
<a href="/tag/puzzle" class="tag-cloud-link tag-link-514 tag-link-position-31" style="font-size: 10.135593220339pt;" aria-label="Puzzle (11个项目)">Puzzle</a>
<a href="/tag/pythondev" class="tag-cloud-link tag-link-791 tag-link-position-32" style="font-size: 15pt;" aria-label="Python (30个项目)">Python</a>
<a href="/tag/ruby" class="tag-cloud-link tag-link-69 tag-link-position-33" style="font-size: 9.6610169491525pt;" aria-label="Ruby (10个项目)">Ruby</a>
<a href="/tag/sql" class="tag-cloud-link tag-link-131 tag-link-position-34" style="font-size: 9.6610169491525pt;" aria-label="SQL (10个项目)">SQL</a>
<a href="/tag/tdd" class="tag-cloud-link tag-link-485 tag-link-position-35" style="font-size: 8.5932203389831pt;" aria-label="TDD (8个项目)">TDD</a>
<a href="/tag/ui" class="tag-cloud-link tag-link-47 tag-link-position-36" style="font-size: 10.491525423729pt;" aria-label="UI (12个项目)">UI</a>
<a href="/tag/unix" class="tag-cloud-link tag-link-21 tag-link-position-37" style="font-size: 15.949152542373pt;" aria-label="Unix (36个项目)">Unix</a>
<a href="/tag/vim" class="tag-cloud-link tag-link-50 tag-link-position-38" style="font-size: 12.745762711864pt;" aria-label="vim (19个项目)">vim</a>
<a href="/tag/web" class="tag-cloud-link tag-link-30 tag-link-position-39" style="font-size: 16.661016949153pt;" aria-label="Web (42个项目)">Web</a>
<a href="/tag/windows" class="tag-cloud-link tag-link-49 tag-link-position-40" style="font-size: 12.271186440678pt;" aria-label="Windows (17个项目)">Windows</a>
<a href="/tag/xml" class="tag-cloud-link tag-link-104 tag-link-position-41" style="font-size: 8.5932203389831pt;" aria-label="XML (8个项目)">XML</a>
<a href="/tag/%e5%ae%89%e5%85%a8" class="tag-cloud-link tag-link-318 tag-link-position-42" style="font-size: 13.694915254237pt;" aria-label="安全 (23个项目)">安全</a>
<a href="/tag/%e7%a8%8b%e5%ba%8f%e5%91%98" class="tag-cloud-link tag-link-58 tag-link-position-43" style="font-size: 22pt;" aria-label="程序员 (119个项目)">程序员</a>
<a href="/tag/%e7%ae%97%e6%b3%95" class="tag-cloud-link tag-link-77 tag-link-position-44" style="font-size: 9.6610169491525pt;" aria-label="算法 (10个项目)">算法</a>
<a href="/tag/interview" class="tag-cloud-link tag-link-164 tag-link-position-45" style="font-size: 11.915254237288pt;" aria-label="面试 (16个项目)">面试</a></div>
</aside><aside id="archives-5" class="widget widget_archive"><h4 class="widget-title">归档</h4>
<ul>
<li><a href="/articles/date/2023/05">2023年5月</a> (1)</li>
<li><a href="/articles/date/2023/02">2023年2月</a> (2)</li>
<li><a href="/articles/date/2022/12">2022年12月</a> (2)</li>
<li><a href="/articles/date/2022/10">2022年10月</a> (1)</li>
<li><a href="/articles/date/2022/07">2022年7月</a> (1)</li>
<li><a href="/articles/date/2022/05">2022年5月</a> (1)</li>
<li><a href="/articles/date/2022/02">2022年2月</a> (2)</li>
<li><a href="/articles/date/2022/01">2022年1月</a> (1)</li>
<li><a href="/articles/date/2021/12">2021年12月</a> (1)</li>
<li><a href="/articles/date/2021/11">2021年11月</a> (1)</li>
<li><a href="/articles/date/2021/09">2021年9月</a> (1)</li>
<li><a href="/articles/date/2021/07">2021年7月</a> (1)</li>
<li><a href="/articles/date/2020/12">2020年12月</a> (9)</li>
<li><a href="/articles/date/2020/08">2020年8月</a> (1)</li>
<li><a href="/articles/date/2020/07">2020年7月</a> (1)</li>
<li><a href="/articles/date/2020/04">2020年4月</a> (1)</li>
<li><a href="/articles/date/2020/03">2020年3月</a> (1)</li>
<li><a href="/articles/date/2020/01">2020年1月</a> (1)</li>
<li><a href="/articles/date/2019/12">2019年12月</a> (2)</li>
<li><a href="/articles/date/2019/11">2019年11月</a> (1)</li>
<li><a href="/articles/date/2019/10">2019年10月</a> (1)</li>
<li><a href="/articles/date/2019/07">2019年7月</a> (1)</li>
<li><a href="/articles/date/2019/06">2019年6月</a> (1)</li>
<li><a href="/articles/date/2019/05">2019年5月</a> (1)</li>
<li><a href="/articles/date/2019/04">2019年4月</a> (2)</li>
<li><a href="/articles/date/2019/03">2019年3月</a> (1)</li>
<li><a href="/articles/date/2019/02">2019年2月</a> (1)</li>
<li><a href="/articles/date/2018/12">2018年12月</a> (1)</li>
<li><a href="/articles/date/2018/05">2018年5月</a> (1)</li>
<li><a href="/articles/date/2018/01">2018年1月</a> (1)</li>
<li><a href="/articles/date/2017/10">2017年10月</a> (1)</li>
<li><a href="/articles/date/2017/09">2017年9月</a> (1)</li>
<li><a href="/articles/date/2017/08">2017年8月</a> (1)</li>
<li><a href="/articles/date/2017/07">2017年7月</a> (3)</li>
<li><a href="/articles/date/2017/06">2017年6月</a> (1)</li>
<li><a href="/articles/date/2017/04">2017年4月</a> (1)</li>
<li><a href="/articles/date/2017/03">2017年3月</a> (1)</li>
<li><a href="/articles/date/2017/02">2017年2月</a> (1)</li>
<li><a href="/articles/date/2017/01">2017年1月</a> (2)</li>
<li><a href="/articles/date/2016/12">2016年12月</a> (1)</li>
<li><a href="/articles/date/2016/10">2016年10月</a> (1)</li>
<li><a href="/articles/date/2016/09">2016年9月</a> (1)</li>
<li><a href="/articles/date/2016/08">2016年8月</a> (2)</li>
<li><a href="/articles/date/2016/07">2016年7月</a> (3)</li>
<li><a href="/articles/date/2015/12">2015年12月</a> (1)</li>
<li><a href="/articles/date/2015/09">2015年9月</a> (1)</li>
<li><a href="/articles/date/2015/08">2015年8月</a> (2)</li>
<li><a href="/articles/date/2015/04">2015年4月</a> (4)</li>
<li><a href="/articles/date/2014/12">2014年12月</a> (3)</li>
<li><a href="/articles/date/2014/11">2014年11月</a> (2)</li>
<li><a href="/articles/date/2014/10">2014年10月</a> (2)</li>
<li><a href="/articles/date/2014/09">2014年9月</a> (2)</li>
<li><a href="/articles/date/2014/08">2014年8月</a> (2)</li>
<li><a href="/articles/date/2014/06">2014年6月</a> (1)</li>
<li><a href="/articles/date/2014/05">2014年5月</a> (4)</li>
<li><a href="/articles/date/2014/04">2014年4月</a> (4)</li>
<li><a href="/articles/date/2014/03">2014年3月</a> (5)</li>
<li><a href="/articles/date/2014/02">2014年2月</a> (3)</li>
<li><a href="/articles/date/2014/01">2014年1月</a> (2)</li>
<li><a href="/articles/date/2013/12">2013年12月</a> (3)</li>
<li><a href="/articles/date/2013/11">2013年11月</a> (1)</li>
<li><a href="/articles/date/2013/10">2013年10月</a> (6)</li>
<li><a href="/articles/date/2013/08">2013年8月</a> (1)</li>
<li><a href="/articles/date/2013/07">2013年7月</a> (8)</li>
<li><a href="/articles/date/2013/06">2013年6月</a> (2)</li>
<li><a href="/articles/date/2013/05">2013年5月</a> (3)</li>
<li><a href="/articles/date/2013/04">2013年4月</a> (3)</li>
<li><a href="/articles/date/2013/03">2013年3月</a> (3)</li>
<li><a href="/articles/date/2013/02">2013年2月</a> (5)</li>
<li><a href="/articles/date/2013/01">2013年1月</a> (1)</li>
<li><a href="/articles/date/2012/12">2012年12月</a> (4)</li>
<li><a href="/articles/date/2012/11">2012年11月</a> (4)</li>
<li><a href="/articles/date/2012/10">2012年10月</a> (3)</li>
<li><a href="/articles/date/2012/09">2012年9月</a> (4)</li>
<li><a href="/articles/date/2012/08">2012年8月</a> (8)</li>
<li><a href="/articles/date/2012/07">2012年7月</a> (4)</li>
<li><a href="/articles/date/2012/06">2012年6月</a> (7)</li>
<li><a href="/articles/date/2012/05">2012年5月</a> (6)</li>
<li><a href="/articles/date/2012/04">2012年4月</a> (6)</li>
<li><a href="/articles/date/2012/03">2012年3月</a> (6)</li>
<li><a href="/articles/date/2012/02">2012年2月</a> (3)</li>
<li><a href="/articles/date/2012/01">2012年1月</a> (6)</li>
<li><a href="/articles/date/2011/12">2011年12月</a> (5)</li>
<li><a href="/articles/date/2011/11">2011年11月</a> (9)</li>
<li><a href="/articles/date/2011/10">2011年10月</a> (6)</li>
<li><a href="/articles/date/2011/09">2011年9月</a> (5)</li>
<li><a href="/articles/date/2011/08">2011年8月</a> (14)</li>
<li><a href="/articles/date/2011/07">2011年7月</a> (6)</li>
<li><a href="/articles/date/2011/06">2011年6月</a> (12)</li>
<li><a href="/articles/date/2011/05">2011年5月</a> (5)</li>
<li><a href="/articles/date/2011/04">2011年4月</a> (18)</li>
<li><a href="/articles/date/2011/03">2011年3月</a> (16)</li>
<li><a href="/articles/date/2011/02">2011年2月</a> (16)</li>
<li><a href="/articles/date/2011/01">2011年1月</a> (18)</li>
<li><a href="/articles/date/2010/12">2010年12月</a> (11)</li>
<li><a href="/articles/date/2010/11">2010年11月</a> (11)</li>
<li><a href="/articles/date/2010/10">2010年10月</a> (19)</li>
<li><a href="/articles/date/2010/09">2010年9月</a> (15)</li>
<li><a href="/articles/date/2010/08">2010年8月</a> (10)</li>
<li><a href="/articles/date/2010/07">2010年7月</a> (20)</li>
<li><a href="/articles/date/2010/06">2010年6月</a> (9)</li>
<li><a href="/articles/date/2010/05">2010年5月</a> (13)</li>
<li><a href="/articles/date/2010/04">2010年4月</a> (12)</li>
<li><a href="/articles/date/2010/03">2010年3月</a> (11)</li>
<li><a href="/articles/date/2010/02">2010年2月</a> (7)</li>
<li><a href="/articles/date/2010/01">2010年1月</a> (9)</li>
<li><a href="/articles/date/2009/12">2009年12月</a> (22)</li>
<li><a href="/articles/date/2009/11">2009年11月</a> (27)</li>
<li><a href="/articles/date/2009/10">2009年10月</a> (17)</li>
<li><a href="/articles/date/2009/09">2009年9月</a> (14)</li>
<li><a href="/articles/date/2009/08">2009年8月</a> (21)</li>
<li><a href="/articles/date/2009/07">2009年7月</a> (18)</li>
<li><a href="/articles/date/2009/06">2009年6月</a> (19)</li>
<li><a href="/articles/date/2009/05">2009年5月</a> (27)</li>
<li><a href="/articles/date/2009/04">2009年4月</a> (53)</li>
<li><a href="/articles/date/2009/03">2009年3月</a> (43)</li>
<li><a href="/articles/date/2008/10">2008年10月</a> (1)</li>
<li><a href="/articles/date/2007/12">2007年12月</a> (1)</li>
<li><a href="/articles/date/2006/11">2006年11月</a> (1)</li>
<li><a href="/articles/date/2004/06">2004年6月</a> (1)</li>
</ul>
</aside><aside id="custom_html-8" class="widget_text widget widget_custom_html"><h4 class="widget-title">友情链接</h4><div class="textwidget custom-html-widget"><ul class="blogroll">
<li><a href="http://blog.csdn.net/haoel" target="_blank" onclick="if (!window.__cfRLUnblockHandlers) return false; pageTracker._trackPageview('/outgoing/blog.csdn.net/haoel?referer=http://coolshell.cn');" rel="noopener" data-cf-modified-3f139aa76ddd12292059324c->陈皓的博客</a></li>
<li><a href="http://ifeve.com/" target="_blank" title="促进并发编程的研究和推广" onclick="if (!window.__cfRLUnblockHandlers) return false; pageTracker._trackPageview('/outgoing/ifeve.com/?referer=http://coolshell.cn');" rel="noopener" data-cf-modified-3f139aa76ddd12292059324c->并发编程</a></li>
<li><a href="http://www.raychase.net/" target="_blank" title="一个啰嗦的程序员" onclick="if (!window.__cfRLUnblockHandlers) return false; pageTracker._trackPageview('/outgoing/www.raychase.net/?referer=http://coolshell.cn');" rel="noopener" data-cf-modified-3f139aa76ddd12292059324c->四火的唠叨</a></li>
<li><a href="http://www.cnblogs.com/weidagang2046/" target="_blank" title="Just for Fun" onclick="if (!window.__cfRLUnblockHandlers) return false; pageTracker._trackPageview('/outgoing/http://www.cnblogs.com/weidagang2046/?referer=http://coolshell.cn/');" rel="noopener" data-cf-modified-3f139aa76ddd12292059324c->Todd Wei的Blog</a></li>
<li><a href="http://www.hellogcc.org/" target="_blank" title="致力于讨论和学习GNU Toolchain方面的工作组" onclick="if (!window.__cfRLUnblockHandlers) return false; pageTracker._trackPageview('/outgoing/www.hellogcc.org//?referer=http://coolshell.cn/');" rel="noopener" data-cf-modified-3f139aa76ddd12292059324c->开源开发工具技术博客</a></li>
<li><a href="http://www.cppfans.org/" target="_blank" title="记录我们点滴学习工作生活" onclick="if (!window.__cfRLUnblockHandlers) return false; pageTracker._trackPageview('/outgoing/http://www.cppfans.org/?referer=http://coolshell.cn/');" rel="noopener" data-cf-modified-3f139aa76ddd12292059324c->C++爱好者博客</a></li>
<li><a href="https://HelloACM.com/" target="_blank" title="Smart Ideas, Smart Algorithms" onclick="if (!window.__cfRLUnblockHandlers) return false; pageTracker._trackPageview('/outgoing/http://HelloACM.com/?referer=http://coolshell.cn/');" rel="noopener" data-cf-modified-3f139aa76ddd12292059324c->ACMer</a></li>
</ul>
</div></aside><aside id="meta-5" class="widget widget_meta"><h4 class="widget-title">其他操作</h4>
<ul>
<li><a href="https://coolshell.cn/wp-login.php?action=register">注册</a></li> <li><a href="https://coolshell.cn/wp-login.php">登录</a></li>
<li><a href="https://coolshell.cn/feed">条目feed</a></li>
<li><a href="https://coolshell.cn/comments/feed">评论feed</a></li>
<li><a href="https://cn.wordpress.org/">WordPress.org</a></li>
</ul>
</aside></div>
</div>
</div>
<script type="3f139aa76ddd12292059324c-text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-7486123-1']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
</div>
<footer id="colophon" class="site-footer" role="contentinfo">
<div class="row site-info">
CoolShell.cn © 2023
<span class="sep"> | </span>
Powered by <a href="https://wordpress.org/">WordPress</a>
<span class="sep"> | </span>
Based on Theme: Nisarg by <a href="http://www.falgunidesai.com/" rel="designer">Falguni Desai</a>.
<p><a href="http://www.beian.miit.gov.cn" target="_target">京ICP备18054967号-1</a></p>
</div>
</footer>
</div>
<script type="3f139aa76ddd12292059324c-text/javascript" id="wp-postratings-js-extra">
/* <![CDATA[ */
var ratingsL10n = {"plugin_url":"https:\/\/coolshell.cn\/wp-content\/plugins\/wp-postratings","ajax_url":"https:\/\/coolshell.cn\/wp-admin\/admin-ajax.php","text_wait":"Please rate only 1 item at a time.","image":"stars_crystal","image_ext":"gif","max":"5","show_loading":"1","show_fading":"1","custom":"0"};
var ratings_mouseover_image=new Image();ratings_mouseover_image.src="/wp-content/plugins/wp-postratings/images/stars_crystal/rating_over.gif";;
/* ]]> */
</script>
<script type="3f139aa76ddd12292059324c-text/javascript" src="/wp-content/plugins/wp-postratings/js/postratings-js.js?ver=1.90.1" id="wp-postratings-js"></script>
<script type="3f139aa76ddd12292059324c-text/javascript" src="/wp-content/themes/MyNisarg/js/bootstrap.js?ver=6.2" id="bootstrap-js"></script>
<script type="3f139aa76ddd12292059324c-text/javascript" src="/wp-content/themes/MyNisarg/js/skip-link-focus-fix.js?ver=20130115" id="nisarg-skip-link-focus-fix-js"></script>
<script type="3f139aa76ddd12292059324c-text/javascript" src="/wp-content/themes/MyNisarg/js/nisarg.js?ver=6.2" id="nisarg-js-js"></script>
<script type="3f139aa76ddd12292059324c-text/javascript" id="q2w3_fixed_widget-js-extra">
/* <![CDATA[ */
var q2w3_sidebar_options = [{"use_sticky_position":false,"margin_top":50,"margin_bottom":0,"stop_elements_selectors":"","screen_max_width":0,"screen_max_height":0,"widgets":[]}];
/* ]]> */
</script>
<script type="3f139aa76ddd12292059324c-text/javascript" src="/wp-content/plugins/q2w3-fixed-widget/js/frontend.min.js?ver=6.2.3" id="q2w3_fixed_widget-js"></script>
<script type="3f139aa76ddd12292059324c-text/javascript" src="/wp-content/plugins/enlighter/cache/enlighterjs.min.js?ver=0cuVQBPCj0viGB0" id="enlighterjs-js"></script>
<script type="3f139aa76ddd12292059324c-text/javascript" id="enlighterjs-js-after">
!function(e,n){if("undefined"!=typeof EnlighterJS){var o={"selectors":{"block":"pre.EnlighterJSRAW","inline":"code.EnlighterJSRAW"},"options":{"indent":2,"ampersandCleanup":true,"linehover":true,"rawcodeDbclick":true,"textOverflow":"scroll","linenumbers":true,"theme":"wpcustom","language":"generic","retainCssClasses":false,"collapse":false,"toolbarOuter":"","toolbarTop":"{BTN_RAW}{BTN_COPY}{BTN_WINDOW}{BTN_WEBSITE}","toolbarBottom":""}};(e.EnlighterJSINIT=function(){EnlighterJS.init(o.selectors.block,o.selectors.inline,o.options)})()}else{(n&&(n.error||n.log)||function(){})("Error: EnlighterJS resources not loaded yet!")}}(window,console);
</script>
<script src="/cdn-cgi/scripts/7d0fa10a/cloudflare-static/rocket-loader.min.js" data-cf-settings="3f139aa76ddd12292059324c-|49" defer></script></body>
</html>
<script type="3f139aa76ddd12292059324c-text/javascript" src="/wp-includes/js/anti-baidu-latest.min.js" charset="UTF-8"></script>