-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathindex.html
1973 lines (1419 loc) · 77.5 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
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="utf-8" />
<meta name="generator" content="Hexo 4.1.0" />
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" />
<title>罗辑思维技术博客</title>
<meta property="og:type" content="website">
<meta property="og:title" content="罗辑思维技术博客">
<meta property="og:url" content="http://yoursite.com/index.html">
<meta property="og:site_name" content="罗辑思维技术博客">
<meta property="og:locale" content="zh_CN">
<meta property="og:image" content="http://yoursite.com/images/og_image.png">
<meta name="twitter:card" content="summary">
<meta name="twitter:image" content="http://yoursite.com/images/og_image.png">
<link rel="icon" href="/images/favicon.svg">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/css/bulma.css">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.4.1/css/all.css">
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Ubuntu:400,600|Source+Code+Pro">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/styles/atom-one-light.css">
<style>body>.footer,body>.navbar,body>.section{opacity:0}</style>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/lightgallery.min.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/justifiedGallery.min.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/outdatedbrowser/outdatedbrowser.min.css">
<link rel="stylesheet" href="/css/back-to-top.css">
<link rel="stylesheet" href="/css/progressbar.css">
<script src="https://cdn.jsdelivr.net/npm/[email protected]/pace.min.js"></script>
<link rel="stylesheet" href="/css/style.css">
</head>
<body class="is-3-column">
<nav class="navbar navbar-main">
<div class="container">
<div class="navbar-brand is-flex-center">
<a class="navbar-item navbar-logo" href="/">
<img src="https://piccdn.luojilab.com/fe-oss/default/MTU3NTUzMTgxMjYw.png" alt="罗辑思维技术博客" height="28">
</a>
</div>
<div class="navbar-menu">
<div class="navbar-start">
<a class="navbar-item is-active"
href="/">首页</a>
<a class="navbar-item"
href="/archives">归档</a>
<a class="navbar-item"
href="/categories">分类</a>
<a class="navbar-item"
href="/tags">标签</a>
</div>
<div class="navbar-end">
<a class="navbar-item" target="_blank" title="Download on GitHub" href="https://github.com/luojilab">
<i class="fab fa-github"></i>
</a>
<a class="navbar-item search" title="搜索" href="javascript:;">
<i class="fas fa-search"></i>
</a>
</div>
</div>
</div>
</nav>
<section class="section">
<div class="container">
<div class="columns">
<div class="column is-8-tablet is-8-desktop is-6-widescreen has-order-2 column-main">
<div class="card">
<div class="card-image">
<a href="/2020/03/08/backend/sort-with-law-of-cooling/" class="image is-7by1">
<img class="thumbnail" src="http://piccdn.igetget.com/img/202004/06/202004061906309293853336.jpg" alt="牛顿冷却定律在得到APP的实践">
</a>
</div>
<div class="card-content article ">
<div class="level article-meta is-size-7 is-mobile is-overflow-x-auto">
<div class="level-left">
<div class="level-item">韩宇斌</div>
<time class="level-item has-text-grey" datetime="2020-03-07T16:00:00.000Z">2020-03-08</time>
<div class="level-item">
<a class="has-link-grey -link" href="/categories/%E6%9C%8D%E5%8A%A1%E7%AB%AF/">服务端</a>
</div>
<span class="level-item has-text-grey">
38 分钟 读完 (大约 5773 个字)
</span>
</div>
</div>
<h1 class="title is-size-3 is-size-4-mobile has-text-weight-normal">
<a class="has-link-black-ter" href="/2020/03/08/backend/sort-with-law-of-cooling/">牛顿冷却定律在得到APP的实践</a>
</h1>
<div class="content">
<h2 id="背景介绍"><a href="#背景介绍" class="headerlink" title="背景介绍"></a>背景介绍</h2><p>「得到锦囊」产品刚上线时,该版块首页的最热排序暴露了两个问题:<strong>分页时数据重复和最热榜单被霸屏</strong>,本文将围绕解决这两个问题来展开,介绍下如何参考牛顿冷却定律来优化最热内容的排序。</p>
<p>“<strong>牛顿冷却定律</strong>”本质上它描述了高于周围温度的物体会向外散热,并逐渐降温的过程,同时单位时间内散热与周围温差会成正比关系。通过建立”温度”与”时间”之间的函数关系,构建一个”指数式衰减”(Exponential decay)的过程。</p>
<p> 如果我们把”热文排名”想象成一个”自然冷却”的过程,那么如下的场景是成立的:</p>
<ul>
<li>任一时刻,网站中所有的文章,都有一个”当前温度”,温度最高的文章就排在第一位。</li>
<li>随着时间流逝,所有文章的温度都逐渐”冷却”。</li>
</ul>
</div>
<div class="level is-mobile">
<div class="level-start">
<div class="level-item">
<a class="button is-size-7 is-light" href="/2020/03/08/backend/sort-with-law-of-cooling/#more">阅读更多</a>
</div>
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-image">
<a href="/2020/01/16/dd-technical/the-evolution-of-iget-hybrid-architecture/" class="image is-7by1">
<img class="thumbnail" src="https://piccdn.luojilab.com/fe-oss/default/20200116191137.aadcd92b4133e63af053776be169d9a3.png" alt="【八里庄技术沙龙 - 18期】得到 hybrid 架构的演进之路">
</a>
</div>
<div class="card-content article ">
<div class="level article-meta is-size-7 is-mobile is-overflow-x-auto">
<div class="level-left">
<div class="level-item">jiangqiang</div>
<time class="level-item has-text-grey" datetime="2020-01-15T16:00:00.000Z">2020-01-16</time>
<div class="level-item">
<a class="has-link-grey -link" href="/categories/%E5%85%AB%E9%87%8C%E5%BA%84%E6%8A%80%E6%9C%AF%E6%B2%99%E9%BE%99/">八里庄技术沙龙</a> / <a class="has-link-grey -link" href="/categories/%E5%85%AB%E9%87%8C%E5%BA%84%E6%8A%80%E6%9C%AF%E6%B2%99%E9%BE%99/%E5%89%8D%E7%AB%AF/">前端</a>
</div>
<span class="level-item has-text-grey">
33 分钟 读完 (大约 4942 个字)
</span>
</div>
</div>
<h1 class="title is-size-3 is-size-4-mobile has-text-weight-normal">
<a class="has-link-black-ter" href="/2020/01/16/dd-technical/the-evolution-of-iget-hybrid-architecture/">【八里庄技术沙龙 - 18期】得到 hybrid 架构的演进之路</a>
</h1>
<div class="content">
<p>得到 APP 是一个三年多的产品,最初采用纯 Native 的方式开发,在 18 年初,我们开始了 Hybyid 开发技术方案的探索和实践, 目前得到 APP 共包含了 ReactNative 和 Webview 两套 Hybrid 方案。本文从时间维度上,重点回顾一下 Webview Hybrid 方案在得到 APP 从 0 到 1 的过程,也希望我们的经历可以给一些想落地 Hybrid 方案的团队一点启发。</p>
</div>
<div class="level is-mobile">
<div class="level-start">
<div class="level-item">
<a class="button is-size-7 is-light" href="/2020/01/16/dd-technical/the-evolution-of-iget-hybrid-architecture/#more">阅读更多</a>
</div>
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-image">
<a href="/2019/12/30/zeroteam/k8s-autoscale-guide/" class="image is-7by1">
<img class="thumbnail" src="https://piccdn.luojilab.com/fe-oss/default/autoscale-thumbnail2.png" alt="kubernetes 指南 -- 弹性伸缩">
</a>
</div>
<div class="card-content article ">
<div class="level article-meta is-size-7 is-mobile is-overflow-x-auto">
<div class="level-left">
<div class="level-item">刘鹏</div>
<time class="level-item has-text-grey" datetime="2019-12-29T16:00:00.000Z">2019-12-30</time>
<div class="level-item">
<a class="has-link-grey -link" href="/categories/%E5%9F%BA%E7%A1%80%E6%9E%B6%E6%9E%84/">基础架构</a>
</div>
<span class="level-item has-text-grey">
1 小时 读完 (大约 7432 个字)
</span>
</div>
</div>
<h1 class="title is-size-3 is-size-4-mobile has-text-weight-normal">
<a class="has-link-black-ter" href="/2019/12/30/zeroteam/k8s-autoscale-guide/">kubernetes 指南 -- 弹性伸缩</a>
</h1>
<div class="content">
<h2 id="0x0-pre"><a href="#0x0-pre" class="headerlink" title="0x0 pre"></a>0x0 pre</h2><p><a href="https://zh.wikipedia.org/wiki/%E5%BC%B9%E6%80%A7%E4%BC%B8%E7%BC%A9" target="_blank" rel="noopener">弹性伸缩</a>, 是云计算中的一种常用方法,通过该方法,服务器池中的计算资源量(通常根据有效的服务器数量来衡量)会根据服务器池中的负载进行动态伸缩。 </p>
<p>本文旨在为想在 kubernetes 中使用弹性伸缩功能<br>的读者解释相关概念,并制定一条较为清晰的路线图。 </p>
</div>
<div class="level is-mobile">
<div class="level-start">
<div class="level-item">
<a class="button is-size-7 is-light" href="/2019/12/30/zeroteam/k8s-autoscale-guide/#more">阅读更多</a>
</div>
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-image">
<a href="/2019/12/16/zeroteam/You_have_to_know_the_rate_limit_of_the_series/" class="image is-7by1">
<img class="thumbnail" src="https://piccdn.luojilab.com/fe-oss/default/MTU3NjQ3NzIxNDM2.png" alt="不得不了解系列之限流">
</a>
</div>
<div class="card-content article ">
<div class="level article-meta is-size-7 is-mobile is-overflow-x-auto">
<div class="level-left">
<div class="level-item">欧二强</div>
<time class="level-item has-text-grey" datetime="2019-12-15T16:00:00.000Z">2019-12-16</time>
<div class="level-item">
<a class="has-link-grey -link" href="/categories/%E5%9F%BA%E7%A1%80%E6%9E%B6%E6%9E%84/">基础架构</a>
</div>
<span class="level-item has-text-grey">
1 小时 读完 (大约 6807 个字)
</span>
</div>
</div>
<h1 class="title is-size-3 is-size-4-mobile has-text-weight-normal">
<a class="has-link-black-ter" href="/2019/12/16/zeroteam/You_have_to_know_the_rate_limit_of_the_series/">不得不了解系列之限流</a>
</h1>
<div class="content">
<h2 id="限流简介"><a href="#限流简介" class="headerlink" title="限流简介"></a>限流简介</h2><p>现在说到高可用系统,都会说到高可用的保护手段:缓存、降级和限流,本博文就主要说说限流。限流是流量限速(Rate Limit)的简称,是指只允许指定的事件进入系统,超过的部分将被拒绝服务、排队或等待、降级等处理。对于server服务而言,限流为了保证一部分的请求流量可以得到正常的响应,总好过全部的请求都不能得到响应,甚至导致系统雪崩。限流与熔断经常被人弄混,博主认为它们最大的区别在于限流主要在server实现,而熔断主要在client实现,当然了,一个服务既可以充当server也可以充当client,这也是让限流与熔断同时存在一个服务中,这两个概念才容易被混淆。</p>
<p>那为什么需要限流呢?很多人第一反应就是服务扛不住了所以需要限流。这是不全面的说法,博主认为限流是因为资源的稀缺或出于安全防范的目的,采取的自我保护的措施。限流可以保证使用有限的资源提供最大化的服务能力,按照预期流量提供服务,超过的部分将会拒绝服务、排队或等待、降级等处理。</p>
</div>
<div class="level is-mobile">
<div class="level-start">
<div class="level-item">
<a class="button is-size-7 is-light" href="/2019/12/16/zeroteam/You_have_to_know_the_rate_limit_of_the_series/#more">阅读更多</a>
</div>
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-image">
<a href="/2019/11/08/fontend/grid/" class="image is-7by1">
<img class="thumbnail" src="https://piccdn.luojilab.com/fe-oss/default/MTU3NTYyODQwMTc5.png" alt="Grid 布局初探">
</a>
</div>
<div class="card-content article ">
<div class="level article-meta is-size-7 is-mobile is-overflow-x-auto">
<div class="level-left">
<div class="level-item">xiemeili</div>
<time class="level-item has-text-grey" datetime="2019-11-07T16:00:00.000Z">2019-11-08</time>
<div class="level-item">
<a class="has-link-grey -link" href="/categories/%E5%89%8D%E7%AB%AF/">前端</a>
</div>
<span class="level-item has-text-grey">
24 分钟 读完 (大约 3624 个字)
</span>
</div>
</div>
<h1 class="title is-size-3 is-size-4-mobile has-text-weight-normal">
<a class="has-link-black-ter" href="/2019/11/08/fontend/grid/">Grid 布局初探</a>
</h1>
<div class="content">
<p><code>Grid</code>布局是微软在2010年提出来的一种新的布局方式,到2016年的时候提交了该布局的草案,经过这三四年的发展,<code>grid</code>布局慢慢变的成熟,兼容性也越来越好,可以适当学起来用起来了</p>
<p>本次学习的几个点:</p>
<blockquote>
<ul>
<li>CSS布局发展过程</li>
<li>Grid布局的优点以及相关术语介绍</li>
<li>Grid布局的使用</li>
<li>注意事项、备注</li>
<li>参考资料</li>
</ul>
</blockquote>
</div>
<div class="level is-mobile">
<div class="level-start">
<div class="level-item">
<a class="button is-size-7 is-light" href="/2019/11/08/fontend/grid/#more">阅读更多</a>
</div>
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-image">
<a href="/2019/11/07/dd-technical/ddmvvm-android/" class="image is-7by1">
<img class="thumbnail" src="https://piccdn.luojilab.com/fe-oss/default/MTU3MzQ0NjI1NDI4.png" alt="【八里庄技术沙龙-15 期】得到安卓客户端的工程架构实践">
</a>
</div>
<div class="card-content article ">
<div class="level article-meta is-size-7 is-mobile is-overflow-x-auto">
<div class="level-left">
<div class="level-item">liushuo</div>
<time class="level-item has-text-grey" datetime="2019-11-06T16:00:00.000Z">2019-11-07</time>
<div class="level-item">
<a class="has-link-grey -link" href="/categories/%E5%85%AB%E9%87%8C%E5%BA%84%E6%8A%80%E6%9C%AF%E6%B2%99%E9%BE%99/">八里庄技术沙龙</a>
</div>
<span class="level-item has-text-grey">
27 分钟 读完 (大约 4101 个字)
</span>
</div>
</div>
<h1 class="title is-size-3 is-size-4-mobile has-text-weight-normal">
<a class="has-link-black-ter" href="/2019/11/07/dd-technical/ddmvvm-android/">【八里庄技术沙龙-15 期】得到安卓客户端的工程架构实践</a>
</h1>
<div class="content">
<p>大家好,我是刘硕,来自得到安卓客户端。主要负责业务架构方向的工程效能提升相关工作。我们希望,通过对工程架构的改造升级,践行工程化方面的一些通用实践。使安卓团队在研发效率和研发体验上得到整体提升,提高app稳定性。</p>
<p>最近两年,我们在工程架构方面有了一些成果,主要围绕着工程架构,开发架构相关方面做了很多工作,大概分为两部分内容:组件化和mvvm开发架构。</p>
</div>
<div class="level is-mobile">
<div class="level-start">
<div class="level-item">
<a class="button is-size-7 is-light" href="/2019/11/07/dd-technical/ddmvvm-android/#more">阅读更多</a>
</div>
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-image">
<a href="/2019/10/21/dd-technical/k8s/" class="image is-7by1">
<img class="thumbnail" src="https://piccdn.luojilab.com/fe-oss/default/MTU3MTc1MjEzMzgy.png" alt="【八里庄技术沙龙-14 期】Kubernetes在得到App的落地实践">
</a>
</div>
<div class="card-content article ">
<div class="level article-meta is-size-7 is-mobile is-overflow-x-auto">
<div class="level-left">
<div class="level-item">sunqingyun</div>
<time class="level-item has-text-grey" datetime="2019-10-20T16:00:00.000Z">2019-10-21</time>
<div class="level-item">
<a class="has-link-grey -link" href="/categories/%E5%85%AB%E9%87%8C%E5%BA%84%E6%8A%80%E6%9C%AF%E6%B2%99%E9%BE%99/">八里庄技术沙龙</a>
</div>
<span class="level-item has-text-grey">
33 分钟 读完 (大约 4987 个字)
</span>
</div>
</div>
<h1 class="title is-size-3 is-size-4-mobile has-text-weight-normal">
<a class="has-link-black-ter" href="/2019/10/21/dd-technical/k8s/">【八里庄技术沙龙-14 期】Kubernetes在得到App的落地实践</a>
</h1>
<div class="content">
<h2 id="引言"><a href="#引言" class="headerlink" title="引言"></a>引言</h2><p>罗辑思维是一家创业公司,主要产品有:得到App。主要有两类业务,线上: 订阅课程、商城、听书、讲座、电子书,线下:跨年演讲,得到大学,线下大课等。目前有高质量用户3300万,后端服务以容器方式运行,正在基于Kubernetes进行混合云建设,目前线上主要的主机资源是使用的阿里云。</p>
<p>由于技术选型比较“激进”,并且践行微服务架构设计,目前的语言栈有:按照占比排名,Golang、Node.js、Python、Java、PHP、C++,之前使用云主机(ECS)带来的运行环境管理复杂、发布过程不统一等问题。所以,将应用容器化以及微服务治理,一直是较为迫切的需求。</p>
</div>
<div class="level is-mobile">
<div class="level-start">
<div class="level-item">
<a class="button is-size-7 is-light" href="/2019/10/21/dd-technical/k8s/#more">阅读更多</a>
</div>
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-image">
<a href="/2019/10/16/big-data/java-concurrent/" class="image is-7by1">
<img class="thumbnail" src="https://piccdn.luojilab.com/fe-oss/default/MTU3MTIxOTYxNzc5.jpeg" alt="Java并发编程通识">
</a>
</div>
<div class="card-content article ">
<div class="level article-meta is-size-7 is-mobile is-overflow-x-auto">
<div class="level-left">
<div class="level-item">gaoyuansheng</div>
<time class="level-item has-text-grey" datetime="2019-10-15T16:00:00.000Z">2019-10-16</time>
<div class="level-item">
<a class="has-link-grey -link" href="/categories/%E5%A4%A7%E6%95%B0%E6%8D%AE/">大数据</a>
</div>
<span class="level-item has-text-grey">
28 分钟 读完 (大约 4209 个字)
</span>
</div>
</div>
<h1 class="title is-size-3 is-size-4-mobile has-text-weight-normal">
<a class="has-link-black-ter" href="/2019/10/16/big-data/java-concurrent/">Java并发编程通识</a>
</h1>
<div class="content">
<h2 id="引言"><a href="#引言" class="headerlink" title="引言"></a>引言</h2><p>并发编程是一个经典的话题,由于摩尔定律已经改变,芯片性能虽然仍在不断提高,但相比加快CPU的速度,计算机正在向多核化方向发展。虚拟化的赋能,让多核服务器的弹性创建和扩容都更加便捷。为了尽可能的提高程序的性能,硬件,操作系统,程序编译器进行一系列的设计和优化,但是同时,带来了影响并发安全的3类问题:</p>
<ol>
<li>cpu增加了缓存,以均衡与内存的速度差异,但是带来了可见性问题</li>
<li>操作系统增加了线程,行程,分时复用cpu以增加cpu利用率,但是带来的线程切换的原子性问题</li>
<li>编译程序优化指令次序,但是带来了有序性问题</li>
</ol>
</div>
<div class="level is-mobile">
<div class="level-start">
<div class="level-item">
<a class="button is-size-7 is-light" href="/2019/10/16/big-data/java-concurrent/#more">阅读更多</a>
</div>
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-image">
<a href="/2019/09/20/dd-technical/process/" class="image is-7by1">
<img class="thumbnail" src="https://piccdn.luojilab.com/fe-oss/default/MTU2OTI1MjA0NDAx.png" alt="【八里庄技术沙龙-13 期】进度服务重构之路">
</a>
</div>
<div class="card-content article ">
<div class="level article-meta is-size-7 is-mobile is-overflow-x-auto">
<div class="level-left">
<div class="level-item">zuowenkang</div>
<time class="level-item has-text-grey" datetime="2019-09-19T16:00:00.000Z">2019-09-20</time>
<div class="level-item">
<a class="has-link-grey -link" href="/categories/%E5%85%AB%E9%87%8C%E5%BA%84%E6%8A%80%E6%9C%AF%E6%B2%99%E9%BE%99/">八里庄技术沙龙</a>
</div>
<span class="level-item has-text-grey">
29 分钟 读完 (大约 4369 个字)
</span>
</div>
</div>
<h1 class="title is-size-3 is-size-4-mobile has-text-weight-normal">
<a class="has-link-black-ter" href="/2019/09/20/dd-technical/process/">【八里庄技术沙龙-13 期】进度服务重构之路</a>
</h1>
<div class="content">
<h2 id="进度服务是什么"><a href="#进度服务是什么" class="headerlink" title="进度服务是什么"></a>进度服务是什么</h2><p>要说明进度服务是什么,首先要说明进度是什么。得到app主要提供内容服务,用户在使用内容服务的时候,就会产生进度。如图,进度的元素无处不在,收听百分比,已听完等。</p>
</div>
<div class="level is-mobile">
<div class="level-start">
<div class="level-item">
<a class="button is-size-7 is-light" href="/2019/09/20/dd-technical/process/#more">阅读更多</a>
</div>
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-image">
<a href="/2019/09/10/fontend/vue-stack-router/" class="image is-7by1">
<img class="thumbnail" src="https://piccdn.luojilab.com/fe-oss/default/MTU2ODcxMDkwOTY2.png" alt="Vue社区的路由解决方案:vue-stack-router">
</a>
</div>
<div class="card-content article ">
<div class="level article-meta is-size-7 is-mobile is-overflow-x-auto">
<div class="level-left">
<div class="level-item">jiangqiang</div>
<time class="level-item has-text-grey" datetime="2019-09-09T16:00:00.000Z">2019-09-10</time>
<div class="level-item">
<a class="has-link-grey -link" href="/categories/%E5%89%8D%E7%AB%AF/">前端</a>
</div>
<span class="level-item has-text-grey">
6 分钟 读完 (大约 858 个字)
</span>
</div>
</div>
<h1 class="title is-size-3 is-size-4-mobile has-text-weight-normal">
<a class="has-link-black-ter" href="/2019/09/10/fontend/vue-stack-router/">Vue社区的路由解决方案:vue-stack-router</a>
</h1>
<div class="content">
<p><a href="https://router.vuejs.org/zh/" target="_blank" rel="noopener">vue-router</a> 是 Vue 官方的路由管理器,用法简单、功能强大。但在移动端场景中,特别是 hybrid 项目,我们在使用中遇到了一些问题。</p>
</div>
<div class="level is-mobile">
<div class="level-start">
<div class="level-item">
<a class="button is-size-7 is-light" href="/2019/09/10/fontend/vue-stack-router/#more">阅读更多</a>
</div>
</div>
</div>
</div>
</div>
<div class="card card-transparent">
<nav class="pagination is-centered" role="navigation" aria-label="pagination">
<div class="pagination-previous is-invisible is-hidden-mobile">
<a class="is-flex-grow has-text-black-ter" href="/page/0/">上一页</a>
</div>
<div class="pagination-next">
<a class="is-flex-grow has-text-black-ter" href="/page/2/">下一页</a>
</div>
<ul class="pagination-list is-hidden-mobile">
<li><a class="pagination-link is-current" href="/">1</a></li>
<li><a class="pagination-link has-text-black-ter" href="/page/2/">2</a></li>
</ul>
</nav>
</div>
</div>
<!-- post 页面右侧官宽度 66.7% -->
<div class="column is-4-tablet is-4-desktop is-3-widescreen has-order-1 column-left is-sticky">
<div class="card widget">
<div class="card-content">
<div class="menu">
<h3 class="menu-label">
标签
</h3>
<div class="field is-grouped is-grouped-multiline">
<div class="control">
<a class="tags has-addons" href="/tags/Android/">
<span class="tag">Android</span>
<span class="tag is-grey">1</span>
</a>
</div>
<div class="control">
<a class="tags has-addons" href="/tags/Docker/">
<span class="tag">Docker</span>
<span class="tag is-grey">2</span>
</a>
</div>
<div class="control">
<a class="tags has-addons" href="/tags/Elasticsearch/">
<span class="tag">Elasticsearch</span>
<span class="tag is-grey">1</span>
</a>
</div>
<div class="control">
<a class="tags has-addons" href="/tags/Hybrid/">
<span class="tag">Hybrid</span>
<span class="tag is-grey">1</span>
</a>
</div>
<div class="control">
<a class="tags has-addons" href="/tags/Java/">
<span class="tag">Java</span>
<span class="tag is-grey">1</span>
</a>
</div>
<div class="control">
<a class="tags has-addons" href="/tags/Kubernetes/">
<span class="tag">Kubernetes</span>
<span class="tag is-grey">2</span>
</a>
</div>
<div class="control">
<a class="tags has-addons" href="/tags/NodeJs/">
<span class="tag">NodeJs</span>
<span class="tag is-grey">1</span>
</a>
</div>
<div class="control">
<a class="tags has-addons" href="/tags/Nodejs/">
<span class="tag">Nodejs</span>
<span class="tag is-grey">1</span>
</a>
</div>
<div class="control">
<a class="tags has-addons" href="/tags/Yarn/">
<span class="tag">Yarn</span>
<span class="tag is-grey">1</span>
</a>
</div>
<div class="control">
<a class="tags has-addons" href="/tags/%E4%BA%91%E5%8E%9F%E7%94%9F/">
<span class="tag">云原生</span>
<span class="tag is-grey">1</span>
</a>
</div>
<div class="control">
<a class="tags has-addons" href="/tags/%E5%85%AB%E9%87%8C%E5%BA%84%E6%8A%80%E6%9C%AF%E6%B2%99%E9%BE%99/">
<span class="tag">八里庄技术沙龙</span>
<span class="tag is-grey">5</span>
</a>
</div>
<div class="control">
<a class="tags has-addons" href="/tags/%E5%89%8D%E7%AB%AF/">
<span class="tag">前端</span>
<span class="tag is-grey">6</span>
</a>
</div>
<div class="control">
<a class="tags has-addons" href="/tags/%E5%90%8E%E7%AB%AF%E6%95%B0%E6%8D%AE%E6%8E%92%E5%BA%8F/">
<span class="tag">后端数据排序</span>
<span class="tag is-grey">1</span>
</a>
</div>
<div class="control">
<a class="tags has-addons" href="/tags/%E5%A4%A7%E6%95%B0%E6%8D%AE/">
<span class="tag">大数据</span>
<span class="tag is-grey">1</span>
</a>
</div>
<div class="control">
<a class="tags has-addons" href="/tags/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/">
<span class="tag">并发编程</span>
<span class="tag is-grey">1</span>
</a>
</div>
<div class="control">
<a class="tags has-addons" href="/tags/%E5%BC%80%E6%BA%90%E9%A1%B9%E7%9B%AE/">
<span class="tag">开源项目</span>
<span class="tag is-grey">1</span>
</a>
</div>
<div class="control">
<a class="tags has-addons" href="/tags/%E5%BE%AE%E6%9C%8D%E5%8A%A1/">
<span class="tag">微服务</span>
<span class="tag is-grey">1</span>
</a>
</div>
<div class="control">
<a class="tags has-addons" href="/tags/%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96/">
<span class="tag">性能优化</span>
<span class="tag is-grey">1</span>
</a>
</div>
<div class="control">
<a class="tags has-addons" href="/tags/%E6%9C%80%E7%83%AD%E5%86%85%E5%AE%B9%E6%8E%92%E5%BA%8F/">
<span class="tag">最热内容排序</span>
<span class="tag is-grey">1</span>
</a>
</div>
<div class="control">
<a class="tags has-addons" href="/tags/%E6%9C%8D%E5%8A%A1%E6%B2%BB%E7%90%86/">
<span class="tag">服务治理</span>
<span class="tag is-grey">2</span>
</a>
</div>
<div class="control">
<a class="tags has-addons" href="/tags/%E7%89%9B%E9%A1%BF%E5%86%B7%E5%8D%B4%E5%AE%9A%E5%BE%8B%E7%9A%84%E8%BF%90%E7%94%A8/">
<span class="tag">牛顿冷却定律的运用</span>
<span class="tag is-grey">1</span>
</a>
</div>
<div class="control">
<a class="tags has-addons" href="/tags/%E7%BB%84%E4%BB%B6%E5%8C%96/">
<span class="tag">组件化</span>
<span class="tag is-grey">1</span>
</a>
</div>
<div class="control">
<a class="tags has-addons" href="/tags/%E8%87%AA%E7%84%B6%E5%86%B7%E5%8D%B4%E7%AE%97%E6%B3%95/">
<span class="tag">自然冷却算法</span>
<span class="tag is-grey">1</span>
</a>
</div>
<div class="control">
<a class="tags has-addons" href="/tags/%E8%AE%A1%E7%AE%97%E6%9C%BA%E8%B5%84%E6%BA%90%E7%AE%A1%E7%90%86/">
<span class="tag">计算机资源管理</span>
<span class="tag is-grey">1</span>
</a>
</div>
<div class="control">
<a class="tags has-addons" href="/tags/%E8%B5%84%E6%BA%90%E8%B0%83%E5%BA%A6/">
<span class="tag">资源调度</span>
<span class="tag is-grey">2</span>
</a>
</div>
</div>
</div>
</div>
</div>
<div class="column-right-shadow is-hidden-widescreen ">
<div class="card widget">