-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path579f.html
1143 lines (1094 loc) · 139 KB
/
579f.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-CN" data-theme="dark"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no"><title>软件设计师考点总结 | 伴随的小站</title><meta name="keywords" content="软件设计师"><meta name="author" content="伴随"><meta name="copyright" content="伴随"><meta name="format-detection" content="telephone=no"><meta name="theme-color" content="#18171d"><meta name="mobile-web-app-capable" content="yes"><meta name="apple-touch-fullscreen" content="yes"><meta name="apple-mobile-web-app-title" content="软件设计师考点总结"><meta name="application-name" content="软件设计师考点总结"><meta name="apple-mobile-web-app-capable" content="yes"><meta name="apple-mobile-web-app-status-bar-style" content="#18171d"><meta property="og:type" content="article"><meta property="og:title" content="软件设计师考点总结"><meta property="og:url" content="https://ctext.top/579f.html"><meta property="og:site_name" content="伴随的小站"><meta property="og:description" content="《软件设计师》考点总结 为了方便背诵,某些概念做了隐藏,点击即可显示 查看 CPU主要组成 运算单元: 包括 ALU、FPU。 控制单元: 包括 指令控制器,时序控制器,总线控制器,中断控制器。 存储单元: 包括 通用寄存器,状态寄存器,cache。 多态"><meta property="og:locale" content="zh-CN"><meta property="og:image" content="https://up.ctext.top/article/2024/02/software.png"><meta property="article:author" content="伴随"><meta property="article:tag"><meta name="twitter:card" content="summary"><meta name="twitter:image" content="https://up.ctext.top/article/2024/02/software.png"><meta name="description" content="《软件设计师》考点总结 为了方便背诵,某些概念做了隐藏,点击即可显示 查看 CPU主要组成 运算单元: 包括 ALU、FPU。 控制单元: 包括 指令控制器,时序控制器,总线控制器,中断控制器。 存储单元: 包括 通用寄存器,状态寄存器,cache。 多态"><link rel="shortcut icon" href="https://up.ctext.top/favicon.svg"><link rel="canonical" href="https://ctext.top/579f.html"><link rel="preconnect" href="//cdn.cbd.int"/><link rel="preconnect" href="//hm.baidu.com"/><link rel="preconnect" href="//busuanzi.ibruce.info"/><meta name="google-site-verification" content="xxx"/><meta name="baidu-site-verification" content="codeva-ulCeD8b6u5"/><meta name="msvalidate.01" content="xxx"/><meta name="sogou_site_verification" content="YdTw3LB3JQ"/><meta name="360-site-verification" content="5f481d0e3172c0894747aba683bb1191"/><link rel="stylesheet" href="/css/index.css"><link rel="stylesheet" href="https://cdn.cbd.int/@fortawesome/fontawesome-free@6.4.0/css/all.min.css" media="print" onload="this.media='all'"><link rel="stylesheet" href="https://cdn.cbd.int/node-snackbar@0.1.16/dist/snackbar.min.css" media="print" onload="this.media='all'"><link rel="stylesheet" href="https://cdn.cbd.int/@fancyapps/ui@5.0.28/dist/fancybox/fancybox.css" media="print" onload="this.media='all'"><link rel="stylesheet" href="https://npm.elemecdn.com/anzhiyu-theme-static@1.0.0/swiper/swiper.min.css" media="print" onload="this.media='all'"><script>var _hmt = _hmt || [];
(function() {
var hm = document.createElement("script");
hm.src = "https://hm.baidu.com/hm.js?643616874a8f4f5ed38e6146dfd84820";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s);
})();
</script><script>const GLOBAL_CONFIG = {
linkPageTop: undefined,
peoplecanvas: undefined,
postHeadAiDescription: {"enable":true,"gptName":null,"mode":"tianli","switchBtn":false,"btnLink":null,"randomNum":3,"basicWordCount":1000,"key":"XlJ1hsZTEze","Referer":"/"},
diytitle: {"enable":true,"leaveTitle":"分享使快乐加倍!(´▽`)","backTitle":"慢慢看~ヾ(•ω•`)o"},
LA51: undefined,
greetingBox: {"enable":true,"default":"晚上好👋","list":[{"greeting":"晚安啦🌙,做个好梦,期待明天的美好!😴💤","startTime":0,"endTime":6},{"greeting":"早上好🌞,新的一天,愿你充满活力和正能量!💪🌈","startTime":6,"endTime":10},{"greeting":"上午好👋,工作/学习加油,期待你的出色表现!🌟📚","startTime":10,"endTime":12},{"greeting":"午餐时间到🍽️,好好吃饭,下午继续加油!🍛💼","startTime":12,"endTime":14},{"greeting":"下午好👋,午后时光,放松心情,享受片刻宁静。☕️💆♀️","startTime":14,"endTime":17},{"greeting":"傍晚好,一天即将结束,为自己点个赞吧!👍🎉","startTime":17,"endTime":19},{"greeting":"晚餐时间啦🍲,享受美食,犒劳一下自己吧!🍽️🥳","startTime":19,"endTime":21},{"greeting":"晚上好🌃,夜晚的时光,放松身心,好好休息吧!🛌💤","startTime":21,"endTime":24}]},
twikooEnvId: '',
commentBarrageConfig:undefined,
music_page_default: "nav_music",
root: '/',
preloader: {"source":3},
friends_vue_info: undefined,
navMusic: true,
mainTone: {"mode":"api","api":"https://color.ctext.top/api?img=","cover_change":true},
authorStatus: {"skills":["🤖️ 数码科技爱好者","🔍 分享与热心帮助","🏠 智能家居小能手","🔨 设计开发一条龙"]},
algolia: undefined,
localSearch: undefined,
translate: {"defaultEncoding":2,"translateDelay":0,"msgToTraditionalChinese":"繁","msgToSimplifiedChinese":"简","rightMenuMsgToTraditionalChinese":"转为繁体","rightMenuMsgToSimplifiedChinese":"转为简体"},
noticeOutdate: undefined,
highlight: {"plugin":"highlight.js","highlightCopy":true,"highlightLang":true,"highlightHeightLimit":330},
copy: {
success: '复制成功',
error: '复制错误',
noSupport: '浏览器不支持'
},
relativeDate: {
homepage: false,
simplehomepage: true,
post: false
},
runtime: '天',
date_suffix: {
just: '刚刚',
min: '分钟前',
hour: '小时前',
day: '天前',
month: '个月前'
},
copyright: {"copy":true,"copyrightEbable":false,"limitCount":50,"languages":{"author":"作者: 伴随","link":"链接: ","source":"来源: 伴随的小站","info":"著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。","copySuccess":"复制成功,复制和转载请标注本文地址"}},
lightbox: 'fancybox',
Snackbar: {"chs_to_cht":"你已切换为繁体","cht_to_chs":"你已切换为简体","day_to_night":"你已切换为深色模式","night_to_day":"你已切换为浅色模式","bgLight":"#425AEF","bgDark":"#1f1f1f","position":"top-center"},
source: {
justifiedGallery: {
js: 'https://cdn.cbd.int/flickr-justified-gallery@2.1.2/dist/fjGallery.min.js',
css: 'https://cdn.cbd.int/flickr-justified-gallery@2.1.2/dist/fjGallery.css'
}
},
isPhotoFigcaption: false,
islazyload: true,
isAnchor: false,
shortcutKey: undefined,
autoDarkmode: true
}</script><script id="config-diff">var GLOBAL_CONFIG_SITE = {
configTitle: '伴随的小站',
title: '软件设计师考点总结',
postAI: 'true',
pageFillDescription: '《软件设计师》考点总结, CPU主要组成, 多态, 软件测试三个阶段, 软件四种维护, 数据库范式理论简单记忆, 数据库模式, 函数依赖, 符号介绍, Armstrong公理系统, 依赖, 树相关的计算公式, 软件成熟度模型(CMM)的五个等级, 七层网络模型, 软件设计模型, 设计模式, 算法策略, UML常用图, 类图, 用例图, 内聚, 耦合, 常用协议, 邮件相关, 对称加密算法:, 非对称加密算法:, 哈希函数:软件设计师考点总结为了方便背诵某些概念做了隐藏点击即可显示查看主要组成运算单元包括控制单元包括指令控制器时序控制器总线控制器中断控制器存储单元包括通用寄存器状态寄存器多态参数多态应用广泛最纯的多态包含多态同样的操作可用于一个类型及其子类型包含多态一般需要进行运行时的类型检查包含多态在许多语言中都存在最常见的例子就是子类型化即一个类型是另外一个类型的子类型查看类的继承和接口的实现强制多态编译程序通过语义操作把操作对象的类型强行加以变换以符合函数或操作符的要求查看将一个对象强制转换为另一个对象过载多态同一个名操作符函数名在不同的上下文中有不同的类型目前软设考查比较多的是过载多态查看相同名称在不同上下文中有不同含义软件测试三个阶段单元测试白盒测试测试来源来源于详细设计集成测试模块间的接口测试黑盒测试和白盒测试测试来源于概要设计系统测试功能测试黑盒测试测试来源于需求分析软件四种维护改正性维护为了识别和纠正软件错误改正软件性能上的缺陷排除实施中的误使用应当进行的诊断和改正错误的过程就称为改正性维护适应性维护在使用过程中外部环境新的硬软件配置数据环境数据库数据格式数据输入输出方式数据存储介质可能发生变化为使软件适应这种变化而去修改软件的过程就称为适应性维护完善性维护在软件的使用过程中用户往往会对软件提出新的功能与性能要求为了满足这些要求需要修改或再开发软件以扩充软件功能增强软件性能改进加工效率提高软件的可维护性这种情况下进行的维护活动称为完善性维护预防性维护这是指预先提高软件的可维护性可靠性等为以后进一步改进软件打下良好基础数据库范式理论简单记忆第一范式关系中的每个属性都是不可分割的原子项简单来说就是确保每一列中的数据都是原子性的没有重复的属性或集合第二范式每一个非主属性完全函数依赖于码换句话说表中的数据行必须能通过主键唯一标识并且表中的非主键列不能仅依赖于主键的一部分第三范式非主属性不传递依赖于码这意味着非主键列不能依赖于其他非主键列每个非主键列都必须直接依赖于主键所有决定因素即决定其他属性的属性组合都必须是候选键设关系模式如果对于的每个函数依赖若不属于则必含有超码属性集可以唯一地标识关系中的一个元组则称属性集为关系的一个超码那么这进一步减少了数据冗余和更新异常的可能性确保数据的完整性和一致性数据库模式外模式定义外模式也称为用户模式它是数据库的最外层直接面向最终用户或应用程序外模式可以是数据库中的一个子集包含虚拟视图或表模式定义模式或概念模式是数据库的中间层定义了整个数据库的逻辑结构是所有外模式的公共基础概念模式包括所有的数据表字段及其关系但不包含物理存储的细节内模式定义内模式是数据库的最底层直接面向数据库管理系统定义了数据库的物理存储结构和访问方式内模式包含物理存储的细节如数据文件的分布存取路径索引设计等函数依赖符号介绍包含真子集的所有元素都属于但中至少有一个元素不属于表示函数决定或函数依赖于元素属于集合公理系统自反律若则为所蕴涵增广律若为所蕴涵且则为所蕴涵传递律若及为所蕴涵则为所蕴涵依赖平凡函数依赖平凡函数依赖是指一个属性或一组属性完全地决定了自身换句话说如果一个属性完全地决定了属性那么这种函数依赖被称为平凡函数依赖例如如果有这样的函数依赖那么它就是一个平凡函数依赖因为决定了自身的值非平凡函数依赖非平凡函数依赖是指一个属性或一组属性不完全地决定自身而是由其他属性决定如果一个属性决定了另一个属性且和不是同一个属性那么这种函数依赖就是非平凡函数依赖例如如果有这样的函数依赖其中和是不同的属性那么它就是一个非平凡函数依赖完全函数依赖完全函数依赖是指一个属性组合完全地决定了其他属性而不能通过去掉其中的任何一个属性来维持该函数依赖如果一个属性组合完全地决定了属性但是去掉其中任何一个属性都不能维持该函数依赖那么这种函数依赖就是完全函数依赖部分函数依赖某些属性决定了另一个属性但并非所有属性都对其决定换句话说如果一个属性组合中的一部分属性能够确定另一个属性的值而不是整个属性组合个人理解如果一个属性不依赖任何一个属性那么就可以认为这个属性是一个平凡函数依赖如果两个集合只有中全部属性才能推导出那么就是完全函数依赖树相关的计算公式节点总数一个高度根节点高度为为的二叉树节点最多有个最少有个叶子节点数量一个高度为的二叉树叶子节点最少为二叉树节点和形态的关系节点书为的二叉树共有种形态假如节点数为那么软件成熟度模型的五个等级初始级特点在这一级别软件过程基本上是无序和混乱的项目的成功往往依赖于个人的技能和努力而非系统性的过程项目管理缺乏标准化和可重复性工作常常处于救火状态无法有效预防和解决问题问题由于没有明确的软件开发流程项目的进度质量和成本往往难以控制这导致项目的成功率低下客户满意度不高可重复级特点在这一级别组织开始建立基本的项目管理过程如需求管理项目计划跟踪和监控等这些过程为项目的执行提供了必要的指导和规范使得类似的项目可以重复之前的成功经验进步通过实施这些基本过程组织能够更好地控制项目的进度和成本提高软件的质量同时由于过程的可重复性项目的成功率也得到了提升已定义级特点在这一级别软件管理和工程两方面的过程都已经文档化标准化并整合到组织的标准软件过程中所有项目都使用经过批准剪裁的标准软件过程来开发和维护软件优势通过文档化和标准化过程组织能够确保项目的一致性和可预测性同时这也为团队成员提供了清晰的指导使得他们能够更好地理解和执行任务已管理级特点在这一级别组织能够收集并分析软件过程和产品质量的详细度量数据这使得组织能够在定量的范围内预测性能并作出基于客观依据的决策意义通过收集和分析度量数据组织可以深入了解其软件开发过程的优点和不足从而制定针对性的改进措施同时这也为组织提供了持续监控和优化过程的能力优化级特点在这一级别组织通过反馈和持续改进不断优化其软件开发过程组织能够利用新技术和先进思想来改进过程从而提高软件质量和客户满意度成果通过持续优化过程组织能够不断提高其软件开发能力降低项目的风险和成本同时这也使得组织能够更好地满足客户的需求提高市场竞争力七层网络模型物理层查看功能这一层处理物理介质和数据传输的基本物理特性例如电压电流光信号等常用协议和设备光纤双绞线集线器数据链路层查看功能负责数据的帧化物理地址的解析流量控制和错误检测和纠正常用协议和设备地址交换机网桥网络层查看功能路由选择数据包的寻址跨不同网络的数据传输常用协议和设备路由器传输层查看功能提供端到端的数据传输和可靠性负责数据的分段和重新组装错误检测和纠正常用协议会话层查看功能管理通信会话建立维护和终止连接常用软件表示层查看功能数据格式转换数据加密数据压缩字符编码等以确保不同系统之间的数据互通常用协议应用层查看功能为用户提供网络服务和应用包括文件传输电子邮件网页浏览等常用协议软件设计模型原型模型查看基于这样一种客观事实并非所有的需求在系统开发之前都能准确地说明和定义采用了动态定义需求的方法它适用于需求不明确的开发环境瀑布模型查看严格遵循软件生命周期各阶段的固定顺序一个阶段完成再进入另一个阶段其优点是可以使过程比较规范化有利于评审缺点在于过于理想缺乏灵活性容易产生需求偏差所以瀑布模型的应用场合为需求明确的项目二次开发项目以及与原型法配合使用演化模型查看它将软件系统的开发过程比作生物进化通过多次迭代和演化来构建软件系统演化模型的一个主要特点是它允许在项目的不同阶段进行变更和扩展以适应新的需求和发现的问题这个模型的主要思想是软件系统不断演化就像生物进化一样增量模型查看增量模型将项目划分为多个增量每个增量都包含一个独立的部分功能每个增量都经历完整的开发周期然后逐渐组合到一个完整的系统中适用于大型项目可以更早地交付部分功能螺旋模型查看结合了瀑布模型和演化模型的优点最主要的特点在于加入了风险分析它是由制定计划风险分析实施工程客户评估这一循环组成的它最初从概念项目开始第一个螺旋喷泉模型查看主要用于描述面向对象的开发过程最核心的特点是迭代所有的开发活动没有明显的边界允许各种开发活动交叉进行模型查看强调开发过程中测试贯穿始终查看既是一个统一的软件开发过程是一个通用过程框架可以应付种类广泛的软件系统不同的应用领域不同的组织类型不同的性能水平和不同的项目规模是基于构件的这意味着利用它开发的软件系统是由构件构成的构件之间通过定义良好的接口相互联系在准备软件系统所有蓝图的时候使用的是统一建模语言与其他软件过程相比具有三个显著的特点用例驱动以基本架构为中心迭代和增量设计模式创建型模式这些模式关注对象的创建机制以确保在系统中适当地创建和配置对象单例模式确保一个类只有一个实例并提供全局访问点工厂方法模式定义一个创建对象的接口但让子类决定具体实例化哪个类抽象工厂模式提供一个接口用于创建一系列相关或依赖对象的家族而不需要指定具体类建造者模式查看将一个复杂对象的构建与其表示分离使相同的构建过程可以创建不同的表示原型模式查看通过复制现有对象创建新对象而不是创建新的实例结构型模式这些模式关注对象之间的组合以形成更大的结构适配器模式查看将一个接口转换成客户端希望的另一个接口以便客户端可以调用不同接口的对象装饰器模式查看动态地为对象添加额外的职责而不改变其接口桥接模式查看将抽象部分与其实现部分分离以便它们可以独立变化组合模式将对象组合成树结构以表示部分整体层次结构外观模式为子系统提供一个一致的接口以简化与子系统的交互享元模式查看共享细粒度对象以减少内存和提高性能代理模式为其他对象提供一个代理以控制对这个对象的访问行为型模式这些模式关注对象之间的职责分配以及如何在对象之间进行通信责任链模式查看通过链式传递请求解决发送者和接收者之间的耦合命令模式将请求封装为对象以使调用操作的对象参数化排队记录和撤销操作解释器模式为语言创建解释器用于解释特定的语法迭代器模式查看提供一种方法依次访问聚合对象的元素而不暴露其内部表示中介者模式查看定义一个封装一组对象交互的对象促进松散耦合备忘录模式在不破坏封装的前提下捕获和恢复对象的内部状态观察者模式查看定义对象之间的一对多依赖关系使一个对象状态改变时所有依赖对象都得到通知状态模式允许对象在其内部状态改变时改变其行为策略模式查看定义一系列算法将其封装成独立的策略对象并在运行时选择策略模板方法模式定义算法的骨架但将一些步骤的实现延迟到子类访问者模式查看在不改变对象结构的前提下定义作用于对象结构中的元素的新操作算法策略分治法分治法是一种将问题划分为更小的子问题然后递归地解决这些子问题最后将子问题的解合并以得到原问题的解的算法归并排序快速排序整数乘法棋盘覆盖循环赛日程安排斐波那契数列动态规划法动态规划法是一种通过将问题分解为更小的子问题并存储子问题的解来解决复杂问题的方法背包问题最长公共子序列矩阵链乘法最短路径问题贪心法贪心法是一种每次选择局部最优解的策略以期望最终获得全局最优解活动选择问题哈夫曼编码最小生成树和算法单源最短路径算法回溯法回溯法是一种通过尝试不同的选择并在不满足条件时回溯到先前的状态来解决问题的方法皇后问题背包问题图着色问题旅行商问题分支限界法分支限界法是一种通过分支问题并定义上下界来限制搜索空间的方法以找到最优解背包问题旅行商问题作业调度问题资源分配问题常用图类图一组对象接口写作和他们之间的关系对象图一组对象以及他们之间的关系用例图用力参与者以及他们之间的关系序列图场景的图像化表示以时间顺序组织的对象间的交互活动通讯图强调手法消息的对象之间的组织结构状态图展现了一个状态机由状态转换事件和活动组成活动图专注于系统的动态视图一个活动到另一个活动的流程类图泛化继承是一种继承关系表示一般与特殊的关系它指定了子类如何特化父类的所有特征和行为例如老虎是动物的一种即有老虎的特性也有动物的共性实现在这里插入图片描述是一种类与接口的关系表示类是接口所有特征和行为的实现依赖一个类依赖于另一个类的定义一般而言依赖关系在语言中体现为成员变量局域变量方法的形参方法返回值或者对静态方法的调用关联是一种拥有的关系它使一个类知道另一个类的属性和方法如老师与学生聚合聚合是一种较弱的关联关系表示一个对象包含另一个对象但包含的对象的生命周期不一定依赖于包含对象例如一个大学整体包含多个学生部分学生可以毕业或转学但他们的生命周期不仅仅取决于大学的存在组合组合是一种较强的关联关系表示一个对象包含另一个对象且包含的对象的生命周期依赖于包含对象如果包含对象被销毁那么它所包含的对象也会被销毁例如一辆汽车整体包括引擎轮胎座位等部分如果汽车被销毁那么引擎轮胎座位等部分也将被销毁用例图包含关系用例图中的包含关系表示一个用例包含了另一个用例即包含用例需要在执行过程中引入被包含用例的行为通常用带有虚线箭头的箭头表示箭头从包含用例指向被包含用例箭头的标签描述了包含用例的条件这种关系表示被包含用例的执行是可选的它会在包含用例的执行中根据条件来引入扩展关系扩展关系表示一个用例可以在一定条件下扩展另一个用例的行为即扩展用例提供了在基础用例执行时可能发生的额外行为通常用带有虚线箭头的箭头表示箭头从扩展用例指向被扩展用例箭头的标签描述了扩展用例的条件这种关系表示扩展用例的执行是可选的它只有在满足条件时才会被触发泛化关系泛化关系表示用例之间的继承关系其中一个用例子用例继承了另一个用例父用例的行为用实线箭头表示箭头从子用例指向父用例子用例继承了父用例的特征和行为通常用于表示用例的层次结构内聚时间聚合查看模块内部的各个组成部分所包含的处理动作必须在同一时间内执行过程聚合查看模块内部各个组成部分所要完成的动作虽然没有关系但必须按特定的次序执行通信聚合查看模块的各个组成部分所完成的动作都使用了同一个数据或产生同一输出数据顺序聚合查看模块内部的各个部分前一部分处理动作的最后输出是后一部分处理动作的输入功能聚合查看模块内部各个部分全部属于一个整体并执行同一功能且各部分对实现该功能都必不可少非直接耦合查看两个模块之间没有直接关系它们的联系完全是通过主模块的控制和调用来实现的耦合数据耦合查看两个模块彼此间通过数据参数交换信息标记耦合查看一组模块通过参数表传递记录信息这个记录是某一个数据结构的子结构而不是简单变量控制耦合查看两个模块彼此间传递的信息中有控制信息外部耦合查看一组模块都访问同一全局简单变量而不是同一全局数据结构而且不是通过参数表传递该全局变量的信息公共耦合查看两个模块之间通过一个公共的数据区域传递信息内容耦合查看一个模块需要涉及到另一个模块的内部信息常用协议带的除了均为不带的除了均为数据端口控制端口文件传输协议端口超文本传输协议网页传输端口地址自动分配端口简单网络管理协议端口域名解析协议记录域名与的映射关系可靠的传输层协议不可靠的传输层协议因特网控制协议命令来自该协议组播协议地址解析协议地址转换为地址是一种数据链路层协议通常用于在两个点之间建立直接连接例如个人计算机通过调制解调器拨号连接到互联网服务提供商的服务器以太网上的点对点协议是将点对点协议封装在以太网框架中的一种网络隧道协议即点对点隧道协议该协议是在协议的基础上开发的一种新的增强型安全协议支持多协议虚拟专用网可以通过密码验证协议可扩展认证协议等方法增强安全性邮件相关是用于发送电子邮件的标准协议它定义了如何将电子邮件从发件人的邮件服务器传输到接收人的邮件服务器通常使用端口进行通信是用于接收电子邮件的协议它允许电子邮件客户端从邮件服务器上下载电子邮件并通常使用端口将电子邮件下载到本地设备并通常将电子邮件从服务器上删除也是用于接收电子邮件的协议但与不同它允许电子邮件客户端在邮件服务器上管理电子邮件而不是直接下载到本地设备通常使用端口是的安全版本使用来加密通信以保护电子邮件的隐私和安全通常使用端口或和这是安全的和协议它们使用来加密电子邮件客户端与邮件服务器之间的通信以确保数据的机密性是一种标准用于在电子邮件中传输多媒体内容附件和非文本数据它允许电子邮件包含图像音频视频和其他多媒体元素对称加密算法这是目前广泛使用的对称加密算法之一具有高度的安全性和性能虽然已经被认为不安全但仍然在一些旧系统中使用对的改进版本使用多轮加密操作来提高安全性虽然在过去广泛使用但由于安全漏洞而不再建议使用非对称加密算法一种常用的非对称加密算法广泛用于数字签名和安全通信证书常用加密算法主要用于数字签名常与其他加密算法一起使用一种使用椭圆曲线密码学的非对称加密方法具有高度的安全性和效率哈希函数和是一种安全散列算法用于生成固定长度的哈希值通常用于数据完整性检查和密码存储尽管已经不再安全但在某些应用中仍在使用',
isPost: true,
isHome: false,
isHighlightShrink: false,
isToc: true,
postUpdate: '2025-01-03 15:32:43',
postMainColor: '#be63c0',
}</script><noscript><style type="text/css">
#nav {
opacity: 1
}
.justified-gallery img {
opacity: 1
}
#recent-posts time,
#post-meta time {
display: inline !important
}
</style></noscript><script>(win=>{
win.saveToLocal = {
set: (key, value, ttl) => {
if (ttl === 0) return
const now = Date.now()
const expiry = now + ttl * 86400000
const item = {
value,
expiry
}
localStorage.setItem(key, JSON.stringify(item))
},
get: key => {
const itemStr = localStorage.getItem(key)
if (!itemStr) {
return undefined
}
const item = JSON.parse(itemStr)
const now = Date.now()
if (now > item.expiry) {
localStorage.removeItem(key)
return undefined
}
return item.value
}
}
win.getScript = (url, attr = {}) => new Promise((resolve, reject) => {
const script = document.createElement('script')
script.src = url
script.async = true
script.onerror = reject
script.onload = script.onreadystatechange = function() {
const loadState = this.readyState
if (loadState && loadState !== 'loaded' && loadState !== 'complete') return
script.onload = script.onreadystatechange = null
resolve()
}
Object.keys(attr).forEach(key => {
script.setAttribute(key, attr[key])
})
document.head.appendChild(script)
})
win.getCSS = (url, id = false) => new Promise((resolve, reject) => {
const link = document.createElement('link')
link.rel = 'stylesheet'
link.href = url
if (id) link.id = id
link.onerror = reject
link.onload = link.onreadystatechange = function() {
const loadState = this.readyState
if (loadState && loadState !== 'loaded' && loadState !== 'complete') return
link.onload = link.onreadystatechange = null
resolve()
}
document.head.appendChild(link)
})
win.activateDarkMode = () => {
document.documentElement.setAttribute('data-theme', 'dark')
if (document.querySelector('meta[name="theme-color"]') !== null) {
document.querySelector('meta[name="theme-color"]').setAttribute('content', '#18171d')
}
}
win.activateLightMode = () => {
document.documentElement.setAttribute('data-theme', 'light')
if (document.querySelector('meta[name="theme-color"]') !== null) {
document.querySelector('meta[name="theme-color"]').setAttribute('content', '#f7f9fe')
}
}
const t = saveToLocal.get('theme')
const isDarkMode = window.matchMedia('(prefers-color-scheme: dark)').matches
const isLightMode = window.matchMedia('(prefers-color-scheme: light)').matches
const isNotSpecified = window.matchMedia('(prefers-color-scheme: no-preference)').matches
const hasNoSupport = !isDarkMode && !isLightMode && !isNotSpecified
if (t === undefined) {
if (isLightMode) activateLightMode()
else if (isDarkMode) activateDarkMode()
else if (isNotSpecified || hasNoSupport) {
const now = new Date()
const hour = now.getHours()
const isNight = hour <= 6 || hour >= 18
isNight ? activateDarkMode() : activateLightMode()
}
window.matchMedia('(prefers-color-scheme: dark)').addListener(e => {
if (saveToLocal.get('theme') === undefined) {
e.matches ? activateDarkMode() : activateLightMode()
}
})
} else if (t === 'light') activateLightMode()
else activateDarkMode()
const asideStatus = saveToLocal.get('aside-status')
if (asideStatus !== undefined) {
if (asideStatus === 'hide') {
document.documentElement.classList.add('hide-aside')
} else {
document.documentElement.classList.remove('hide-aside')
}
}
const detectApple = () => {
if(/iPad|iPhone|iPod|Macintosh/.test(navigator.userAgent)){
document.documentElement.classList.add('apple')
}
}
detectApple()
})(window)</script><link rel="stylesheet" href="/css/font.css"><link rel="stylesheet" href="/css/welcome.css"><link rel="stylesheet" href="/css/imgloaded.css"><link rel="stylesheet" href="/css/hideRolling.css"><link rel="stylesheet" href="/css/countdown.css"><link rel="stylesheet" href="/css/essay-animation.css"><!-- hexo injector head_end start --><link rel="stylesheet" href="https://npm.elemecdn.com/hexo-butterfly-tag-plugins-plus@latest/lib/assets/font-awesome-animation.min.css" media="defer" onload="this.media='all'"><link rel="stylesheet" href="https://npm.elemecdn.com/hexo-butterfly-tag-plugins-plus@latest/lib/tag_plugins.css" media="defer" onload="this.media='all'"><script src="https://npm.elemecdn.com/hexo-butterfly-tag-plugins-plus@latest/lib/assets/carousel-touch.js"></script><!-- hexo injector head_end end --><meta name="generator" content="Hexo 7.3.0"></head><body data-type="anzhiyu"><div id="web_bg"></div><div id="an_music_bg"></div><div id="loading-box" onclick="document.getElementById("loading-box").classList.add("loaded")"><div class="loading-bg"><img class="loading-img nolazyload" alt="加载头像" src="https://up.ctext.top/avatar.png"/><div class="loading-image-dot"></div></div></div><script>const preloader = {
endLoading: () => {
document.getElementById('loading-box').classList.add("loaded");
},
initLoading: () => {
document.getElementById('loading-box').classList.remove("loaded")
}
}
window.addEventListener('load',()=> { preloader.endLoading() })
setTimeout(function(){preloader.endLoading();},10000)
if (true) {
document.addEventListener('pjax:send', () => { preloader.initLoading() })
document.addEventListener('pjax:complete', () => { preloader.endLoading() })
}</script><link rel="stylesheet" href="https://cdn.cbd.int/anzhiyu-theme-static@1.1.10/progress_bar/progress_bar.css"/><script async="async" src="https://cdn.cbd.int/pace-js@1.2.4/pace.min.js" data-pace-options="{ "restartOnRequestAfter":false,"eventLag":false}"></script><div class="post" id="body-wrap"><header class="post-bg" id="page-header"><nav id="nav"><div id="nav-group"><span id="blog_name"><div class="back-home-button"><i class="anzhiyufont anzhiyu-icon-grip-vertical"></i><div class="back-menu-list-groups"><div class="back-menu-list-group"><div class="back-menu-list-title">关于</div><div class="back-menu-list"><a class="back-menu-item" href="/about/" title="我"><img class="back-menu-item-icon" src= "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" onerror="this.onerror=null,this.src="https://up.ctext.top/default_bg.png"" data-lazy-src="https://up.ctext.top/ico/orange.svg" alt="我"/><span class="back-menu-item-text">我</span></a></div></div><div class="back-menu-list-group"><div class="back-menu-list-title">博客</div><div class="back-menu-list"><a class="back-menu-item" href="/album/" title="我的相册"><img class="back-menu-item-icon" src= "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" onerror="this.onerror=null,this.src="https://up.ctext.top/default_bg.png"" data-lazy-src="https://up.ctext.top/ico/strawberry.svg" alt="我的相册"/><span class="back-menu-item-text">我的相册</span></a><a class="back-menu-item" href="/essay/" title="记录生活"><img class="back-menu-item-icon" src= "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" onerror="this.onerror=null,this.src="https://up.ctext.top/default_bg.png"" data-lazy-src="https://up.ctext.top/ico/apple.svg" alt="记录生活"/><span class="back-menu-item-text">记录生活</span></a></div></div></div></div><a id="site-name" href="/" accesskey="h"><div class="title">伴随的小站</div><i class="anzhiyufont anzhiyu-icon-house-chimney"></i></a></span><div class="mask-name-container"><div id="name-container"><a id="page-name" href="javascript:anzhiyu.scrollToDest(0, 500)">PAGE_NAME</a></div></div><div id="menus"><div class="menus_items"><div class="menus_item"><a class="site-page" href="javascript:void(0);"><span> 文章</span></a><ul class="menus_item_child"><li><a class="site-page child faa-parent animated-hover" href="/"><i class="anzhiyufont anzhiyu-icon-grip-vertical faa-tada" style="font-size: 0.9em;"></i><span> 主页</span></a></li><li><a class="site-page child faa-parent animated-hover" href="/archives/"><i class="anzhiyufont anzhiyu-icon-box-archive faa-tada" style="font-size: 0.9em;"></i><span> 总览</span></a></li><li><a class="site-page child faa-parent animated-hover" href="/categories/"><i class="anzhiyufont anzhiyu-icon-shapes faa-tada" style="font-size: 0.9em;"></i><span> 分类</span></a></li><li><a class="site-page child faa-parent animated-hover" href="/tags/"><i class="anzhiyufont anzhiyu-icon-tags faa-tada" style="font-size: 0.9em;"></i><span> 标签</span></a></li></ul></div><div class="menus_item"><a class="site-page" href="javascript:void(0);"><span> 我的</span></a><ul class="menus_item_child"><li><a class="site-page child faa-parent animated-hover" href="/growth.html"><i class="anzhiyufont anzhiyu-icon-heartbeat faa-tada" style="font-size: 0.9em;"></i><span> 博客岁月</span></a></li><li><a class="site-page child faa-parent animated-hover" href="/music/"><i class="anzhiyufont anzhiyu-icon-music faa-tada" style="font-size: 0.9em;"></i><span> 音乐馆</span></a></li><li><a class="site-page child faa-parent animated-hover" href="/album/"><i class="anzhiyufont anzhiyu-icon-images faa-tada" style="font-size: 0.9em;"></i><span> 相册集</span></a></li><li><a class="site-page child faa-parent animated-hover" href="/essay/"><i class="anzhiyufont anzhiyu-icon-lightbulb faa-tada" style="font-size: 0.9em;"></i><span> 记录生活</span></a></li></ul></div><div class="menus_item"><a class="site-page" href="javascript:void(0);"><span> 小工具</span></a><ul class="menus_item_child"><li><a class="site-page child faa-parent animated-hover" href="/air-conditioner/"><i class="anzhiyufont anzhiyu-icon-fan faa-tada" style="font-size: 0.9em;"></i><span> 小空调</span></a></li><li><a class="site-page child faa-parent animated-hover" href="/gradation/"><i class="anzhiyufont anzhiyu-icon-envelope faa-tada" style="font-size: 0.9em;"></i><span> 渐变背景生成</span></a></li><li><a class="site-page child faa-parent animated-hover" href="/9abe.html"><i class="anzhiyufont anzhiyu-icon-artstation faa-tada" style="font-size: 0.9em;"></i><span> tag-plugins文档</span></a></li><li><a class="site-page child faa-parent animated-hover" href="/nav"><i class="anzhiyufont anzhiyu-icon-link faa-tada" style="font-size: 0.9em;"></i><span> 网址导航</span></a></li><li><a class="site-page child faa-parent animated-hover" target="_blank" rel="noopener" href="https://map.ctext.top"><i class="anzhiyufont anzhiyu-icon-keyboard faa-tada" style="font-size: 0.9em;"></i><span> 飞车随机选图工具</span></a></li></ul></div><div class="menus_item"><a class="site-page" href="javascript:void(0);"><span> 关于</span></a><ul class="menus_item_child"><li><a class="site-page child faa-parent animated-hover" href="/about/"><i class="anzhiyufont anzhiyu-icon-paper-plane faa-tada" style="font-size: 0.9em;"></i><span> 关于自己</span></a></li><li><a class="site-page child faa-parent animated-hover" href="javascript:toRandomPost()"><i class="anzhiyufont anzhiyu-icon-shoe-prints1 faa-tada" style="font-size: 0.9em;"></i><span> 随便逛逛</span></a></li></ul></div></div></div><div id="nav-right"><div class="nav-button" id="randomPost_button"><a class="site-page" onclick="toRandomPost()" title="随机前往一个文章" href="javascript:void(0);"><i class="anzhiyufont anzhiyu-icon-dice"></i></a></div><input id="center-console" type="checkbox"/><label class="widget" for="center-console" title="中控台" onclick="anzhiyu.switchConsole();"><i class="left"></i><i class="widget center"></i><i class="widget right"></i></label><div id="console"><div class="console-card-group-reward"><ul class="reward-all console-card"><li class="reward-item"><a href="https://up.ctext.top/pay/wx.png" target="_blank"><img class="post-qr-code-img" alt="微信" src= "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" onerror="this.onerror=null,this.src="https://up.ctext.top/default_bg.png"" data-lazy-src="https://up.ctext.top/pay/wx.png"/></a><div class="post-qr-code-desc">微信</div></li><li class="reward-item"><a href="https://up.ctext.top/pay/zfb.png" target="_blank"><img class="post-qr-code-img" alt="支付宝" src= "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" onerror="this.onerror=null,this.src="https://up.ctext.top/default_bg.png"" data-lazy-src="https://up.ctext.top/pay/zfb.png"/></a><div class="post-qr-code-desc">支付宝</div></li></ul></div><div class="console-card-group"><div class="console-card-group-left"><div class="console-card" id="card-newest-comments"><div class="card-content"><div class="author-content-item-tips">互动</div><span class="author-content-item-title"> 最新评论</span></div><div class="aside-list"><span>正在加载中...</span></div></div></div><div class="console-card-group-right"><div class="console-card tags"><div class="card-content"><div class="author-content-item-tips">音乐</div><span class="author-content-item-title">灵魂的碰撞💥</span></div></div><div class="console-card history"><div class="item-headline"><i class="anzhiyufont anzhiyu-icon-box-archiv"></i><span>文章</span></div><div class="card-archives"><div class="item-headline"><i class="anzhiyufont anzhiyu-icon-archive"></i><span>归档</span><a class="card-more-btn" href="/archives/" title="查看更多">
<i class="anzhiyufont anzhiyu-icon-angle-right"></i></a></div><ul class="card-archive-list"><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2024/11/"><span class="card-archive-list-date">十一月 2024</span><div class="card-archive-list-count-group"><span class="card-archive-list-count">1</span><span>篇</span></div></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2024/10/"><span class="card-archive-list-date">十月 2024</span><div class="card-archive-list-count-group"><span class="card-archive-list-count">2</span><span>篇</span></div></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2024/08/"><span class="card-archive-list-date">八月 2024</span><div class="card-archive-list-count-group"><span class="card-archive-list-count">3</span><span>篇</span></div></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2024/07/"><span class="card-archive-list-date">七月 2024</span><div class="card-archive-list-count-group"><span class="card-archive-list-count">2</span><span>篇</span></div></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2024/06/"><span class="card-archive-list-date">六月 2024</span><div class="card-archive-list-count-group"><span class="card-archive-list-count">5</span><span>篇</span></div></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2024/05/"><span class="card-archive-list-date">五月 2024</span><div class="card-archive-list-count-group"><span class="card-archive-list-count">2</span><span>篇</span></div></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2024/04/"><span class="card-archive-list-date">四月 2024</span><div class="card-archive-list-count-group"><span class="card-archive-list-count">3</span><span>篇</span></div></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2024/03/"><span class="card-archive-list-date">三月 2024</span><div class="card-archive-list-count-group"><span class="card-archive-list-count">4</span><span>篇</span></div></a></li></ul></div><hr/></div></div></div><div class="button-group"><div class="console-btn-item"><a class="darkmode_switchbutton" title="显示模式切换" href="javascript:void(0);"><i class="anzhiyufont anzhiyu-icon-moon"></i></a></div><div class="console-btn-item" id="consoleHideAside" onclick="anzhiyu.hideAsideBtn()" title="边栏显示控制"><a class="asideSwitch"><i class="anzhiyufont anzhiyu-icon-arrows-left-right"></i></a></div><div class="console-btn-item" id="consoleMusic" onclick="anzhiyu.musicToggle()" title="音乐开关"><a class="music-switch"><i class="anzhiyufont anzhiyu-icon-music"></i></a></div></div><div class="console-mask" onclick="anzhiyu.hideConsole()" href="javascript:void(0);"></div></div><div class="nav-button" id="nav-totop"><a class="totopbtn" href="javascript:void(0);"><i class="anzhiyufont anzhiyu-icon-arrow-up"></i><span id="percent" onclick="anzhiyu.scrollToDest(0,500)">0</span></a></div><div id="toggle-menu"><a class="site-page" href="javascript:void(0);" title="切换"><i class="anzhiyufont anzhiyu-icon-bars"></i></a></div></div></div></nav><div id="post-info"><div id="post-firstinfo"><div class="meta-firstline"><a class="post-meta-original">原创</a><span class="post-meta-categories"><span class="post-meta-separator"></span><i class="anzhiyufont anzhiyu-icon-inbox post-meta-icon"></i><a class="post-meta-categories" href="/categories/%E8%BD%AF%E8%80%83%E7%AC%94%E8%AE%B0/" itemprop="url">软考笔记</a></span><span class="article-meta tags"><a class="article-meta__tags" href="/tags/%E8%BD%AF%E4%BB%B6%E8%AE%BE%E8%AE%A1%E5%B8%88/" tabindex="-1" itemprop="url"> <span> <i class="anzhiyufont anzhiyu-icon-hashtag"></i>软件设计师</span></a></span></div></div><h1 class="post-title" itemprop="name headline">软件设计师考点总结</h1><div id="post-meta"><div class="meta-firstline"><span class="post-meta-date"><i class="anzhiyufont anzhiyu-icon-calendar-days post-meta-icon"></i><span class="post-meta-label">发表于</span><time class="post-meta-date-created" itemprop="dateCreated datePublished" datetime="2024-02-26T06:38:43.000Z" title="发表于 2024-02-26 14:38:43">2024-02-26</time><span class="post-meta-separator"></span><i class="anzhiyufont anzhiyu-icon-history post-meta-icon"></i><span class="post-meta-label">更新于</span><time class="post-meta-date-updated" itemprop="dateCreated datePublished" datetime="2025-01-03T07:32:43.478Z" title="更新于 2025-01-03 15:32:43">2025-01-03</time></span></div><div class="meta-secondline"><span class="post-meta-separator"></span><span class="post-meta-wordcount"><i class="anzhiyufont anzhiyu-icon-file-word post-meta-icon" title="文章字数"></i><span class="post-meta-label" title="文章字数">字数总计:</span><span class="word-count" title="文章字数">7.2k</span><span class="post-meta-separator"></span><i class="anzhiyufont anzhiyu-icon-clock post-meta-icon" title="阅读时长"></i><span class="post-meta-label" title="阅读时长">阅读时长:</span><span>21分钟</span></span><span class="post-meta-separator"></span><span class="post-meta-pv-cv" id="" data-flag-title="软件设计师考点总结"><i class="anzhiyufont anzhiyu-icon-fw-eye post-meta-icon"></i><span class="post-meta-label" title="阅读量">阅读量:</span><span id="busuanzi_value_page_pv"><i class="anzhiyufont anzhiyu-icon-spinner anzhiyu-spin"></i></span></span><span class="post-meta-separator"> </span><span class="post-meta-position" title="作者IP属地为北京"><i class="anzhiyufont anzhiyu-icon-location-dot"></i>北京</span></div></div></div><section class="main-hero-waves-area waves-area"><svg class="waves-svg" xmlns="http://www.w3.org/2000/svg" xlink="http://www.w3.org/1999/xlink" viewBox="0 24 150 28" preserveAspectRatio="none" shape-rendering="auto"><defs><path id="gentle-wave" d="M -160 44 c 30 0 58 -18 88 -18 s 58 18 88 18 s 58 -18 88 -18 s 58 18 88 18 v 44 h -352 Z"></path></defs><g class="parallax"><use href="#gentle-wave" x="48" y="0"></use><use href="#gentle-wave" x="48" y="3"></use><use href="#gentle-wave" x="48" y="5"></use><use href="#gentle-wave" x="48" y="7"></use></g></svg></section><div id="post-top-cover"><img class="nolazyload" id="post-top-bg" src="https://up.ctext.top/article/2024/02/software.png"></div></header><main id="blog-container"><div class="layout" id="content-inner"><div id="post"><div class="post-ai-description"><div class="ai-title"><i class="anzhiyufont anzhiyu-icon-bilibili"></i><div class="ai-title-text">AI-摘要(由百度千帆大模型提供生成摘要能力)</div><i class="anzhiyufont anzhiyu-icon-arrow-rotate-right"></i><i class="anzhiyufont anzhiyu-icon-circle-dot" title="朗读摘要"></i><div id="ai-tag">Tianli GPT</div></div><div class="ai-explanation">AI初始化中...</div><div class="ai-btn-box"><div class="ai-btn-item" id="ccnone">介绍自己 🙈</div><div class="ai-btn-item">生成本文简介 👋</div><div class="ai-btn-item">推荐相关文章 📖</div><div class="ai-btn-item">前往主页 🏠</div><div class="ai-btn-item" id="go-tianli-blog">前往爱发电购买</div></div><script data-pjax src="/js/anzhiyu/ai_abstract.js"></script></div><article class="post-content" id="article-container" itemscope itemtype="https://ctext.top/579f.html"><header><a class="post-meta-categories" href="/categories/%E8%BD%AF%E8%80%83%E7%AC%94%E8%AE%B0/" itemprop="url">软考笔记</a><a href="/tags/%E8%BD%AF%E4%BB%B6%E8%AE%BE%E8%AE%A1%E5%B8%88/" tabindex="-1" itemprop="url">软件设计师</a><h1 id="CrawlerTitle" itemprop="name headline">软件设计师考点总结</h1><span itemprop="author" itemscope itemtype="http://schema.org/Person">伴随</span><time itemprop="dateCreated datePublished" datetime="2024-02-26T06:38:43.000Z" title="发表于 2024-02-26 14:38:43">2024-02-26</time><time itemprop="dateCreated datePublished" datetime="2025-01-03T07:32:43.478Z" title="更新于 2025-01-03 15:32:43">2025-01-03</time></header><h1>《软件设计师》考点总结</h1>
<mark class="hl-label red">为了方便背诵,某些概念做了隐藏,点击即可显示</mark>
<div class="hide-block"><button type="button" class="hide-button" style="">查看
</button><div class="hide-content"></div></div>
<h2 id="CPU主要组成">CPU主要组成</h2>
<ol>
<li>
<p>运算单元:</p>
<ul>
<li>包括 ALU、FPU。</li>
</ul>
</li>
<li>
<p>控制单元:</p>
<ul>
<li>包括 指令控制器,时序控制器,总线控制器,中断控制器。</li>
</ul>
</li>
<li>
<p>存储单元:</p>
<ul>
<li>包括 通用寄存器,状态寄存器,cache。</li>
</ul>
</li>
</ol>
<h2 id="多态">多态</h2>
<ol>
<li>参数多态
<ul>
<li>应用广泛、最纯的多态。</li>
</ul>
</li>
<li>包含多态
<ul>
<li>同样的操作可用于一个类型及其子类型。包含多态一般需要进行运行时的类型检查。包含多态在许多语言中都存在,最常见的例子就是子类型化,即一个类型是另外一个类型的子类型。</li>
<li>
<div class="hide-block"><button type="button" class="hide-button" style="">查看
</button><div class="hide-content"><p>(<strong>类的继承和接口的实现</strong>)</p>
</div></div>
</li>
</ul>
</li>
<li>强制多态:
<ul>
<li>编译程序通过语义操作,把操作对象的类型强行加以变换,以符合函数或操作符的要求。</li>
<li>
<div class="hide-block"><button type="button" class="hide-button" style="">查看
</button><div class="hide-content"><p>(<strong>将一个对象强制转换为另一个对象</strong>)</p>
</div></div>
</li>
</ul>
</li>
<li>过载多态:
<ul>
<li>同一个名(操作符﹑函数名)在不同的上下文中有不同的类型。 目前软设考查比较多的是过载多态。</li>
<li>
<div class="hide-block"><button type="button" class="hide-button" style="">查看
</button><div class="hide-content"><p>(<strong>相同名称在不同上下文中有不同含义</strong>)</p>
</div></div>
</li>
</ul>
</li>
</ol>
<h2 id="软件测试三个阶段">软件测试三个阶段</h2>
<ol>
<li>单元测试
<ul>
<li>白盒测试</li>
<li>测试来源来源于<strong>详细设计</strong></li>
</ul>
</li>
<li>集成测试 (模块间的接口测试)
<ul>
<li>黑盒测试和白盒测试</li>
<li>测试来源于<strong>概要设计</strong></li>
</ul>
</li>
<li>系统测试 (功能测试)
<ul>
<li>黑盒测试bang</li>
<li>测试来源于<strong>需求分析</strong></li>
</ul>
</li>
</ol>
<h2 id="软件四种维护">软件四种维护</h2>
<ol>
<li>改正性维护。
<ul>
<li>为了识别和纠正软件错误、改正软件性能上的缺陷、排除实施中的误使用,应当进行的诊断和改正错误的过程就称为改正性维护。</li>
</ul>
</li>
<li>适应性维护。
<ul>
<li>在使用过程中,外部环境(新的硬、软件配置)、数据环境(数据库、数据格式、数据输入/输出方式、数据存储介质)可能发生变化。为使软件适应这种变化,而去修改软件的过程就称为适应性维护。</li>
</ul>
</li>
<li>完善性维护。
<ul>
<li>在软件的使用过程中,用户往往会对软件提出新的功能与性能要求。为了满足这些要求,需要修改或再开发软件,以扩充软件功能、增强软件性能、改进加工效率、提高软件的可维护性。这种情况下进行的维护活动称为完善性维护。</li>
</ul>
</li>
<li>预防性维护。
<ul>
<li>这是指预先提高软件的可维护性、可靠性等,为以后进一步改进软件打下良好基础。</li>
</ul>
</li>
</ol>
<h2 id="数据库范式理论简单记忆">数据库范式理论简单记忆</h2>
<ol>
<li>
<p><strong>第一范式(1NF)</strong>:</p>
<ul>
<li>
<mark class="hl-label blue">关系中的每个属性都是不可分割的原子项</mark>
</li>
<li>简单来说,就是确保每一列中的数据都是原子性的,没有重复的属性或集合。</li>
</ul>
</li>
<li>
<p><strong>第二范式(2NF)</strong>:</p>
<ul>
<li>
<mark class="hl-label pink">每一个非主属性完全函数依赖于码</mark>
</li>
<li>换句话说,表中的数据行必须能通过主键唯一标识,并且表中的非主键列不能仅依赖于主键的一部分。</li>
</ul>
</li>
<li>
<p><strong>第三范式(3NF)</strong>:</p>
<ul>
<li>
<mark class="hl-label orange">非主属性不传递依赖于码</mark>
</li>
<li>这意味着非主键列不能依赖于其他非主键列,每个非主键列都必须直接依赖于主键。</li>
</ul>
</li>
<li>
<p><strong>BCNF(Boyce-Codd Normal Form)</strong>:</p>
<ul>
<li>
<mark class="hl-label green">所有决定因素(即决定其他属性的属性组合)都必须是候选键</mark>
</li>
<li>设关系模式R<U,F>∈1NF,如果对于R的每个函数依赖X→Y,若Y不属于X,则X必含有超码(属性集A可以唯一地标识关系r中的一个元组,则称属性集A为关系r的一个超码),那么R∈BCNF。</li>
<li>这进一步减少了数据冗余和更新异常的可能性,确保数据的完整性和一致性。</li>
</ul>
</li>
</ol>
<h2 id="数据库模式">数据库模式</h2>
<ol>
<li>外模式(External Schema)<br>
定义:外模式也称为用户模式,它是数据库的最外层,直接面向最终用户或应用程序
<ul>
<li>外模式可以是数据库中的一个子集,包含虚拟<strong>视图</strong>或<strong>表</strong></li>
</ul>
</li>
<li>模式(Conceptual Schema)<br>
定义:模式(或概念模式)是数据库的中间层,定义了整个数据库的逻辑结构,是所有外模式的公共基础。
<ul>
<li>概念模式包括所有的<strong>数据表、字段及其关系</strong>,但不包含物理存储的细节</li>
</ul>
</li>
<li>内模式(Internal Schema)<br>
定义:内模式是数据库的最底层,直接面向数据库管理系统(DBMS),定义了数据库的物理存储结构和访问方式。
<ul>
<li>内模式包含物理存储的细节,如<strong>数据文件的分布、存取路径、索引设计</strong>等。</li>
</ul>
</li>
</ol>
<hr>
<h2 id="函数依赖">函数依赖</h2>
<h3 id="符号介绍">符号介绍</h3>
<ul>
<li>A ⊂ B:A包含B</li>
<li>A ⊆ B:真子集,A的所有元素都属于B,但B中至少有一个元素不属于A</li>
<li>X → Y:表示X函数决定Y或Y函数依赖于X</li>
<li>a ∊ A:元素a属于集合A</li>
</ul>
<h3 id="Armstrong公理系统">Armstrong公理系统</h3>
<ol>
<li>自反律(Reflexivity Rule<br>
若 Y ⊆ X ⊆ U ,则 X → Y 为 F 所蕴涵。</li>
<li>增广律(augmentation rule)<br>
若X→Y为F所蕴涵,且Z⊆U,则XZ→YZ为F所蕴涵。</li>
<li>传递律(transitivity rule)<br>
若X→Y及Y→Z为F所蕴涵,则X→Z为F所蕴涵。</li>
</ol>
<h3 id="依赖">依赖</h3>
<ol>
<li>平凡函数依赖:<br>
平凡函数依赖是指一个属性或一组属性完全地决定了自身。换句话说,如果一个属性 X 完全地决定了属性 Y,那么这种函数依赖被称为平凡函数依赖。例如,如果有 X→X 这样的函数依赖,那么它就是一个平凡函数依赖,因为 X 决定了自身的值。</li>
<li>非平凡函数依赖:<br>
非平凡函数依赖是指一个属性或一组属性不完全地决定自身,而是由其他属性决定。如果一个属性 X 决定了另一个属性 Y,且 X 和 Y 不是同一个属性,那么这种函数依赖就是非平凡函数依赖。例如,如果有 X→Y 这样的函数依赖,其中 X 和 Y 是不同的属性,那么它就是一个非平凡函数依赖。</li>
<li>完全函数依赖:<br>
完全函数依赖是指一个属性组合完全地决定了其他属性,而不能通过去掉其中的任何一个属性来维持该函数依赖。如果一个属性组合 X 完全地决定了属性 Y,但是去掉其中任何一个属性都不能维持该函数依赖,那么这种函数依赖就是完全函数依赖。</li>
<li>部分函数依赖<br>
某些属性决定了另一个属性,但并非所有属性都对其决定。换句话说,如果一个属性组合中的一部分属性能够确定另一个属性的值,而不是整个属性组合。</li>
</ol>
<p><strong>个人理解</strong>:如果一个属性不依赖任何一个属性,那么就可以认为这个属性是一个平凡函数依赖;如果两个集合XY,只有X中全部属性才能推导出Y,那么就是完全函数依赖</p>
<hr>
<h2 id="树相关的计算公式">树相关的计算公式</h2>
<ol>
<li>节点总数</li>
</ol>
<ul>
<li>一个高度(<mark class="hl-label blue">根节点高度为0</mark> )为 h 的二叉树,节点,最多有 2^(h+1) −1 个,最少有 h+1 个</li>
</ul>
<ol start="2">
<li>叶子节点数量</li>
</ol>
<ul>
<li>一个高度为 n 的二叉树叶子节点,2^h,最少为 1</li>
</ul>
<ol start="3">
<li>二叉树节点和形态的关系</li>
</ol>
<ul>
<li>节点书为n的二叉树共有 (2n)! / n!(n+1)! 种形态</li>
<li>假如节点数为4,那么8<em>7</em>6<em>5</em>4<em>3</em>2<em>1/4</em>3<em>2</em>5<em>4</em>3*2 = 14</li>
</ul>
<hr>
<h2 id="软件成熟度模型-CMM-的五个等级">软件成熟度模型(CMM)的五个等级</h2>
<ol>
<li>初始级(Initial)
<ul>
<li><strong>特点</strong>:在这一级别,软件过程基本上是无序和混乱的。项目的成功往往依赖于个人的技能和努力,而非系统性的过程。项目管理缺乏标准化和可重复性,工作常常处于救火状态,无法有效预防和解决问题。</li>
<li><strong>问题</strong>:由于没有明确的软件开发流程,项目的进度、质量和成本往往难以控制。这导致项目的成功率低下,客户满意度不高。</li>
</ul>
</li>
<li>可重复级(Repeatable)
<ul>
<li><strong>特点</strong>:在这一级别,组织开始建立基本的项目管理过程,如需求管理、项目计划、跟踪和监控等。这些过程为项目的执行提供了必要的指导和规范,使得类似的项目可以重复之前的成功经验。</li>
<li><strong>进步</strong>:通过实施这些基本过程,组织能够更好地控制项目的进度和成本,提高软件的质量。同时,由于过程的可重复性,项目的成功率也得到了提升。</li>
</ul>
</li>
<li>已定义级(Defined)
<ul>
<li><strong>特点</strong>:在这一级别,软件管理和工程两方面的过程都已经文档化、标准化,并整合到组织的标准软件过程中。所有项目都使用经过批准、剪裁的标准软件过程来开发和维护软件。</li>
<li><strong>优势</strong>:通过文档化和标准化过程,组织能够确保项目的一致性和可预测性。同时,这也为团队成员提供了清晰的指导,使得他们能够更好地理解和执行任务。</li>
</ul>
</li>
<li>已管理级(Managed)
<ul>
<li><strong>特点</strong>:在这一级别,组织能够收集并分析软件过程和产品质量的详细度量数据。这使得组织能够在定量的范围内预测性能,并作出基于客观依据的决策。</li>
<li><strong>意义</strong>:通过收集和分析度量数据,组织可以深入了解其软件开发过程的优点和不足,从而制定针对性的改进措施。同时,这也为组织提供了持续监控和优化过程的能力。</li>
</ul>
</li>
<li>优化级(Optimizing)
<ul>
<li><strong>特点</strong>:在这一级别,组织通过反馈和持续改进,不断优化其软件开发过程。组织能够利用新技术和先进思想来改进过程,从而提高软件质量和客户满意度。</li>
<li><strong>成果</strong>:通过持续优化过程,组织能够不断提高其软件开发能力,降低项目的风险和成本。同时,这也使得组织能够更好地满足客户的需求,提高市场竞争力。</li>
</ul>
</li>
</ol>
<hr>
<h2 id="七层网络模型">七层网络模型</h2>
<ol>
<li><code>物理层(Physical Layer)</code>:<div class="hide-block"><button type="button" class="hide-button" style="">查看
</button><div class="hide-content"><ul>
<li>功能:这一层处理物理介质和数据传输的基本物理特性,例如电压、电流、光信号等。</li>
<li>常用协议和设备:Ethernet、USB、光纤、双绞线、集线器(Hub)。</li>
</ul>
</div></div>
</li>
<li><code>数据链路层(Data Link Layer)</code>: <div class="hide-block"><button type="button" class="hide-button" style="">查看
</button><div class="hide-content"><ul>
<li>功能:负责数据的帧化、物理地址的解析、流量控制和错误检测和纠正。</li>
<li>常用协议和设备:Ethernet、Wi-Fi、MAC地址、交换机(Switch)、网桥(Bridge)。</li>
</ul>
</div></div>
</li>
<li><code>网络层(Network Layer)</code>:<div class="hide-block"><button type="button" class="hide-button" style="">查看
</button><div class="hide-content"><ul>
<li>功能:路由选择、数据包的寻址、跨不同网络的数据传输。</li>
<li>常用协议和设备:IP(IPv4、IPv6)、路由器(Router)、OSPF、BGP。</li>
</ul>
</div></div>
</li>
<li><code>传输层(Transport Layer)</code>:<div class="hide-block"><button type="button" class="hide-button" style="">查看
</button><div class="hide-content"><ul>
<li>功能:提供端到端的数据传输和可靠性,负责数据的分段和重新组装,错误检测和纠正。</li>
<li>常用协议:TCP、UDP。</li>
</ul>
</div></div>
</li>
<li><code>会话层(Session Layer)</code>:<div class="hide-block"><button type="button" class="hide-button" style="">查看
</button><div class="hide-content"><ul>
<li>功能:管理通信会话,建立、维护和终止连接。</li>
<li>常用软件:NetBIOS、RPC(Remote Procedure Call)。</li>
</ul>
</div></div>
</li>
<li><code>表示层(Presentation Layer)</code>:<div class="hide-block"><button type="button" class="hide-button" style="">查看
</button><div class="hide-content"><ul>
<li>功能:数据格式转换、数据加密、数据压缩、字符编码等,以确保不同系统之间的数据互通。</li>
<li>常用协议:SSL/TLS、ASCII、EBCDIC。</li>
</ul>
</div></div>
</li>
<li><code>应用层(Application Layer)</code>:<div class="hide-block"><button type="button" class="hide-button" style="">查看
</button><div class="hide-content"><ul>
<li>功能:为用户提供网络服务和应用,包括文件传输、电子邮件、网页浏览等。</li>
<li>常用协议:HTTP、FTP、SMTP、POP3、IMAP、DNS。</li>
</ul>
</div></div>
</li>
</ol>
<hr>
<h2 id="软件设计模型">软件设计模型</h2>
<ol>
<li>
<p>原型模型:</p>
<div class="hide-block"><button type="button" class="hide-button" style="">查看
</button><div class="hide-content"><p>基于这样一种客观事实:并非所有的需求在系统开发之前都能准确地说明和定义。采用了<code>动态定义需求的方法</code>。它适用于需求不明确的开发环境。</p>
</div></div>
</li>
<li>
<p>瀑布模型:</p>
<div class="hide-block"><button type="button" class="hide-button" style="">查看
</button><div class="hide-content"><p><code>严格遵循软件生命周期各阶段的固定顺序</code>,一个阶段完成再进入另一个阶段。其优点是:可以使过程比较规范化,有利于评审;缺点在于:过于理想,缺乏灵活性,容易产生需求偏差。所以瀑布模型的应用场合为:<code>需求明确的项目</code>、二次开发项目以及与原型法配合使用。</p>
</div></div>
</li>
<li>
<p>演化模型:</p>
<div class="hide-block"><button type="button" class="hide-button" style="">查看
</button><div class="hide-content"><p>它将软件系统的开发过程比作生物进化,通过多次迭代和演化来构建软件系统。演化模型的一个主要特点是它<code>允许在项目的不同阶段进行变更和扩展</code>,以适应新的需求和发现的问题。这个模型的主要思想是,软件系统不断演化,就像生物进化一样。</p>
</div></div>
</li>
<li>
<p>增量模型:</p>
<div class="hide-block"><button type="button" class="hide-button" style="">查看
</button><div class="hide-content"><ul>
<li>增量模型将项目划分为多个增量,每个增量都包含一个独立的部分功能。</li>
<li>每个增量都经历完整的开发周期,然后逐渐组合到一个完整的系统中。</li>
<li><code>适用于大型项目,可以更早地交付部分功能</code>。</li>
</ul>
</div></div>
</li>
<li>
<p>螺旋模型:</p>
<div class="hide-block"><button type="button" class="hide-button" style="">查看
</button><div class="hide-content"><p><code>结合了瀑布模型和演化模型的优点</code>,最主要的特点在于<code>加入了风险分析</code>。它是由制定计划、风险分析、实施工程、客户评估这一循环组成的,它最初从概念项目开始第一个螺旋。</p>
</div></div>
</li>
<li>
<p>喷泉模型:</p>
<div class="hide-block"><button type="button" class="hide-button" style="">查看
</button><div class="hide-content"><p>主要用于描述面向对象的开发过程,最核心的特点是迭代。所有的<code>开发活动没有明显的边界</code>,允许各种开发活动交叉进行。</p>
</div></div>
</li>
<li>
<p>V模型:</p>
<div class="hide-block"><button type="button" class="hide-button" style="">查看
</button><div class="hide-content"><p><code>强调开发过程中测试贯穿始终</code>;</p>
</div></div>
</li>
<li>
<p>UP:</p>
<div class="hide-block"><button type="button" class="hide-button" style="">查看
</button><div class="hide-content"><p>既是一个统一的软件开发过程,是一个通用过程框架,可以应付种类广泛的软件系统、不同的应用领域、不同的组织类型、不同的性能水平和不同的项目规模。UP是基于构件的,这意味着利用它开发的软件系统是由构件构成的,构件之间通过定义良好的接口相互联系。在准备软件系统所有蓝图的时候,UP使用的是统一建模语言UML。与其他软件过程相比,UP具有三个显著的特点:用例驱动、以基本架构为中心、迭代和增量。</p>
</div></div>
</li>
</ol>
<hr>
<h2 id="设计模式">设计模式</h2>
<ol>
<li>创建型模式(Creational Patterns):<br>
这些模式关注对象的创建机制,以确保在系统中适当地创建和配置对象。
<ul>
<li>单例模式(Singleton Pattern):确保一个类只有一个实例,并提供全局访问点。</li>
<li>工厂方法模式(Factory Method Pattern):定义一个创建对象的接口,但让子类决定具体实例化哪个类。</li>
<li>抽象工厂模式(Abstract Factory Pattern):提供一个接口,用于创建一系列相关或依赖对象的家族,而不需要指定具体类。</li>
<li>建造者模式(Builder Pattern):<span class="hide-inline"><button type="button" class="hide-button" style="background-color: ;">查看
</button><span class="hide-content">将一个复杂对象的构建与其表示分离,使相同的构建过程可以创建不同的表示</span></span></li>
<li>原型模式(Prototype Pattern):<span class="hide-inline"><button type="button" class="hide-button" style="background-color: ;">查看
</button><span class="hide-content">通过复制现有对象创建新对象,而不是创建新的实例</span></span></li>
</ul>
</li>
<li>结构型模式(Structural Patterns):<br>
这些模式关注对象之间的组合,以形成更大的结构。
<ul>
<li><code>适配器模式</code>(Adapter Pattern):<span class="hide-inline"><button type="button" class="hide-button" style="background-color: ;">查看
</button><span class="hide-content">将一个接口转换成客户端希望的另一个接口,以便客户端可以调用不同接口的对象</span></span></li>
<li><code>装饰器模式</code>(Decorator Pattern):<span class="hide-inline"><button type="button" class="hide-button" style="background-color: ;">查看
</button><span class="hide-content">动态地为对象添加额外的职责,而不改变其接口</span></span></li>
<li>桥接模式(Bridge Pattern):<span class="hide-inline"><button type="button" class="hide-button" style="background-color: ;">查看
</button><span class="hide-content">将抽象部分与其实现部分分离,以便它们可以独立变化</span></span></li>
<li>组合模式(Composite Pattern):将对象组合成树结构以表示部分-整体层次结构。</li>
<li>外观模式(Facade Pattern):为子系统提供一个一致的接口,以简化与子系统的交互。</li>
<li>享元模式(Flyweight Pattern):<span class="hide-inline"><button type="button" class="hide-button" style="background-color: ;">查看
</button><span class="hide-content">共享细粒度对象,以减少内存和提高性能</span></span></li>
<li>代理模式(Proxy Pattern):为其他对象提供一个代理以控制对这个对象的访问。</li>
</ul>
</li>
<li>行为型模式(Behavioral Patterns):<br>
这些模式关注对象之间的职责分配,以及如何在对象之间进行通信。
<ul>
<li><code>责任链模式</code>(Chain of Responsibility Pattern):<span class="hide-inline"><button type="button" class="hide-button" style="background-color: ;">查看
</button><span class="hide-content">通过链式传递请求,解决发送者和接收者之间的耦合</span></span></li>
<li>命令模式(Command Pattern):将请求封装为对象,以使调用操作的对象参数化、排队、记录和撤销操作。</li>
<li>解释器模式(Interpreter Pattern):为语言创建解释器,用于解释特定的语法。</li>
<li><code>迭代器模式</code>(Iterator Pattern):<span class="hide-inline"><button type="button" class="hide-button" style="background-color: ;">查看
</button><span class="hide-content">提供一种方法依次访问聚合对象的元素,而不暴露其内部表示</span></span></li>
<li><code>中介者模式</code>(Mediator Pattern):<span class="hide-inline"><button type="button" class="hide-button" style="background-color: ;">查看
</button><span class="hide-content">定义一个封装一组对象交互的对象,促进松散耦合</span></span></li>
<li>备忘录模式(Memento Pattern):在不破坏封装的前提下,捕获和恢复对象的内部状态。</li>
<li><code>观察者模式</code>(Observer Pattern):<span class="hide-inline"><button type="button" class="hide-button" style="background-color: ;">查看
</button><span class="hide-content">定义对象之间的一对多依赖关系,使一个对象状态改变时,所有依赖对象都得到通知</span></span></li>
<li>状态模式(State Pattern):允许对象在其内部状态改变时改变其行为。</li>
<li>策略模式(Strategy Pattern):<span class="hide-inline"><button type="button" class="hide-button" style="background-color: ;">查看
</button><span class="hide-content">定义一系列算法,将其封装成独立的策略对象,并在运行时选择策略</span></span></li>
<li>模板方法模式(Template Method Pattern):定义算法的骨架,但将一些步骤的实现延迟到子类。</li>
<li><code>访问者模式</code>(Visitor Pattern):<span class="hide-inline"><button type="button" class="hide-button" style="background-color: ;">查看
</button><span class="hide-content">在不改变对象结构的前提下,定义作用于对象结构中的元素的新操作</span></span></li>
</ul>
</li>
</ol>
<hr>
<h2 id="算法策略">算法策略</h2>
<ol>
<li><code>分治法(Divide and Conquer)</code>:
<ul>
<li>分治法是一种将问题划分为更小的子问题,然后递归地解决这些子问题,最后将子问题的解合并以得到原问题的解的算法。</li>
<li>归并排序、快速排序、整数乘法、棋盘覆盖、循环赛日程安排、斐波那契数列</li>
</ul>
</li>
<li><code>动态规划法(Dynamic Programming)</code>:
<ul>
<li>动态规划法是一种通过将问题分解为更小的子问题并存储子问题的解来解决复杂问题的方法。</li>
<li>背包问题、最长公共子序列、矩阵链乘法、最短路径问题</li>
</ul>
</li>
<li><code>贪心法(Greedy Algorithm)</code>:
<ul>
<li>贪心法是一种每次选择局部最优解的策略,以期望最终获得全局最优解。</li>
<li>活动选择问题、哈夫曼编码、最小生成树(Kruskal和Prim算法)、单源最短路径(Dijkstra算法)</li>
</ul>
</li>
<li><code>回溯法(Backtracking)</code>:
<ul>
<li>回溯法是一种通过尝试不同的选择并在不满足条件时回溯到先前的状态来解决问题的方法。</li>
<li>N皇后问题、0-1背包问题、图着色问题、旅行商问题</li>
</ul>
</li>
<li><code>分支限界法(Branch and Bound)</code>:
<ul>
<li>分支限界法是一种通过分支问题并定义上下界来限制搜索空间的方法,以找到最优解。</li>
<li>0-1背包问题、旅行商问题、作业调度问题、资源分配问题</li>
</ul>
</li>
</ol>
<hr>
<h2 id="UML常用图">UML常用图</h2>
<ul>
<li>类图:一组对象、接口、写作和他们之间的关系</li>
<li>对象图:一组对象以及他们之间的关系</li>
<li>用例图:用力、参与者以及他们之间的关系</li>
<li>序列图:场景的图像化表示,以时间顺序组织的对象间的交互活动</li>
<li>通讯图:强调手法消息的对象之间的组织结构</li>
<li>状态图:展现了一个状态机,由状态、转换、事件和活动组成</li>
<li>活动图:专注于系统的动态视图,一个活动到另一个活动的流程</li>
</ul>
<hr>
<h2 id="类图">类图</h2>
<p><strong>泛化(继承):</strong></p>
<ul>
<li>是一种继承关系,表示一般与特殊的关系,它指定了子类如何特化父类的所有特征和行为。例如:老虎是动物的一种,即有老虎的特性也有动物的共性。<img src= "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" onerror="this.onerror=null,this.src="https://up.ctext.top/default_bg.png"" data-lazy-src="https://i.miji.bid/2024/02/28/08fd9dce698985dc4e2716aadef84983.png" style="zoom: 33%;float:right" /></li>
</ul>
<p><strong>实现:</strong></p>
<ul>
<li>在这里插入图片描述是一种类与接口的关系,表示类是接口所有特征和行为的实现.<img src= "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" onerror="this.onerror=null,this.src="https://up.ctext.top/default_bg.png"" data-lazy-src="https://i.miji.bid/2024/02/28/517298e5d8d5a30e1d35515afa56ff8b.png" style="zoom: 33%;float:right" /></li>
</ul>
<p><strong>依赖:</strong></p>
<ul>
<li>一个类依赖于另一个类的定义。一般而言,依赖关系在Java语言中体现为成员变量、局域变量、方法的形参、方法返回值,或者对静态方法的调用<img src= "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" onerror="this.onerror=null,this.src="https://up.ctext.top/default_bg.png"" data-lazy-src="https://i.miji.bid/2024/02/28/d8b19c84106dd7ce79fa9e0a9e26153e.png" style="zoom: 33%;float:right" /></li>
</ul>
<p><strong>关联:</strong></p>
<ul>
<li>是一种拥有的关系,它使一个类知道另一个类的属性和方法;如:老师与学生<img src= "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" onerror="this.onerror=null,this.src="https://up.ctext.top/default_bg.png"" data-lazy-src="https://i.miji.bid/2024/02/28/9baa02dd098632812b033011b9fadf2f.png" style="zoom: 33%;float:right" /></li>
</ul>
<p><strong>聚合:</strong></p>
<ul>
<li>聚合是一种较弱的关联关系,表示一个对象包含另一个对象,<code>但包含的对象的生命周期不一定依赖于包含对象。</code></li>
<li>例如:<code>一个大学(整体)包含多个学生(部分)</code>。学生可以毕业或转学,但他们的生命周期不仅仅取决于大学的存在。<img src= "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" onerror="this.onerror=null,this.src="https://up.ctext.top/default_bg.png"" data-lazy-src="https://i.miji.bid/2024/02/28/25c04555be15e82377ce04e838e805f9.png" style="zoom: 33%;float:right" /></li>
</ul>
<p><strong>组合:</strong></p>
<ul>
<li>组合是一种较强的关联关系,表示一个对象包含另一个对象,<code>且包含的对象的生命周期依赖于包含对象</code>。如果包含对象被销毁,那么它所包含的对象也会被销毁。</li>
<li>例如:<code>一辆汽车(整体)包括引擎、轮胎、座位等部分</code>。如果汽车被销毁,那么引擎、轮胎、座位等部分也将被销毁<img src= "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" onerror="this.onerror=null,this.src="https://up.ctext.top/default_bg.png"" data-lazy-src="https://i.miji.bid/2024/02/28/3195e525595504319cb224444c18bb78.png" style="zoom: 33%;float:right" /></li>
</ul>
<hr>
<h2 id="用例图">用例图</h2>
<p>1.包含关系(include):</p>
<ul>
<li>
<p>用例图中的包含关系表示一个用例包含了另一个用例,即包含用例需要在执行过程中引入被包含用例的行为。</p>
</li>
<li>
<p>通常用带有虚线箭头的箭头表示,箭头从包含用例指向被包含用例。箭头的标签描述了包含用例的条件。</p>
</li>
<li>
<p>这种关系表示被包含用例的执行是可选的,它会在包含用例的执行中根据条件来引入。</p>
</li>
</ul>
<p>2.扩展关系(extend):</p>
<ul>
<li>扩展关系表示一个用例可以在一定条件下扩展另一个用例的行为,即扩展用例提供了在基础用例执行时可能发生的额外行为。</li>
<li>通常用带有虚线箭头的箭头表示,箭头从扩展用例指向被扩展用例。箭头的标签描述了扩展用例的条件。</li>
<li>这种关系表示扩展用例的执行是可选的,它只有在满足条件时才会被触发。</li>
</ul>
<p>3.泛化关系(generalize):</p>
<ul>
<li>泛化关系表示用例之间的继承关系,其中一个用例(子用例)继承了另一个用例(父用例)的行为。</li>
<li>用实线箭头表示,箭头从子用例指向父用例。</li>
<li>子用例继承了父用例的特征和行为,通常用于表示用例的层次结构。</li>
</ul>
<hr>
<h2 id="内聚">内聚</h2>
<p><code>时间聚合</code>:<span class="hide-inline"><button type="button" class="hide-button" style="background-color: ;">查看
</button><span class="hide-content">模块内部的各个组成部分所包含的处理动作必须在同一时间内执行</span></span></p>
<p><code>过程聚合</code>:<span class="hide-inline"><button type="button" class="hide-button" style="background-color: ;">查看
</button><span class="hide-content">模块内部各个组成部分所要完成的动作虽然没有关系,但必须按特定的次序执行</span></span></p>
<p><code>通信聚合</code>:<span class="hide-inline"><button type="button" class="hide-button" style="background-color: ;">查看
</button><span class="hide-content">模块的各个组成部分所完成的动作都使用了同一个数据或产生同一输出数据</span></span></p>
<p><code>顺序聚合</code>:<span class="hide-inline"><button type="button" class="hide-button" style="background-color: ;">查看
</button><span class="hide-content">模块内部的各个部分,前一部分处理动作的最后输出是后一部分处理动作的输入</span></span></p>
<p><code>功能聚合</code>:<span class="hide-inline"><button type="button" class="hide-button" style="background-color: ;">查看
</button><span class="hide-content">模块内部各个部分全部属于一个整体,并执行同一功能,且各部分对实现该功能都必不可少</span></span></p>
<p><code>非直接耦合</code>:<span class="hide-inline"><button type="button" class="hide-button" style="background-color: ;">查看
</button><span class="hide-content">两个模块之间没有直接关系,它们的联系完全是通过主模块的控制和调用来实现的</span></span></p>
<hr>
<h2 id="耦合">耦合</h2>
<p><code>数据耦合</code>:<span class="hide-inline"><button type="button" class="hide-button" style="background-color: ;">查看
</button><span class="hide-content">两个模块彼此间通过数据参数交换信息</span></span></p>
<p><code>标记耦合</code>:<span class="hide-inline"><button type="button" class="hide-button" style="background-color: ;">查看
</button><span class="hide-content">一组模块通过参数表传递记录信息,这个记录是某一个数据结构的子结构,而不是简单变量</span></span></p>
<p><code>控制耦合</code>:<span class="hide-inline"><button type="button" class="hide-button" style="background-color: ;">查看
</button><span class="hide-content">两个模块彼此间传递的信息中有控制信息</span></span></p>
<p><code>外部耦合</code>:<span class="hide-inline"><button type="button" class="hide-button" style="background-color: ;">查看
</button><span class="hide-content">一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息</span></span></p>
<p><code>公共耦合</code>:<span class="hide-inline"><button type="button" class="hide-button" style="background-color: ;">查看
</button><span class="hide-content">两个模块之间通过一个公共的数据区域传递信息</span></span></p>
<p><code>内容耦合</code>:<span class="hide-inline"><button type="button" class="hide-button" style="background-color: ;">查看
</button><span class="hide-content">一个模块需要涉及到另一个模块的内部信息</span></span></p>
<hr>
<h2 id="常用协议">常用协议</h2>
<p><strong>带T的除了TFTP,均为TCP 不带T的除了POP3,均为UDP</strong></p>
<ol>
<li>FTP:20数据端口/21控制端口,文件传输协议</li>
<li>HTTP:80端口,超文本传输协议,网页传输</li>
<li>DHCP:67端口,IP地址自动分配</li>
<li>SNMP:161端口,简单网络管理协议</li>
<li>DNS:53端口,域名解析协议,记录域名与IP的映射关系</li>
<li>TCP:可靠的传输层协议</li>
<li>UDP:不可靠的传输层协议</li>
<li>ICMP:因特网控制协议,PING命令来自该协议</li>
<li>IGMP:组播协议</li>
<li>ARP:地址解析协议,IP地址转换为MAC地址</li>
<li>PPP:PPP是一种数据链路层协议,通常用于在两个点之间建立直接连接,例如,个人计算机通过调制解调器拨号连接到互联网服务提供商(ISP)的服务器</li>
<li>PPPOE:以太网上的点对点协议,是将点对点协议(PPP)封装在以太网(Ethernet)框架中的一种网络隧道协议。</li>
<li>PPTP:即点对点隧道协议。该协议是在PPP协议的基础上开发的一种新的增强型安全协议,支持多协议虚拟专用网(VPN),可以通过密码验证协议(PAP)、可扩展认证协议(EAP)等方法增强安全性。</li>
</ol>
<hr>
<h2 id="邮件相关">邮件相关</h2>
<ol>
<li>SMTP(Simple Mail Transfer Protocol):SMTP是用于发送电子邮件的标准协议。它定义了如何将电子邮件从发件人的邮件服务器传输到接收人的邮件服务器。SMTP通常使用TCP端口25进行通信。</li>
<li>POP3(Post Office Protocol, Version 3):POP3是用于接收电子邮件的协议。它允许电子邮件客户端从邮件服务器上下载电子邮件,并通常使用TCP端口110。POP3将电子邮件下载到本地设备,并通常将电子邮件从服务器上删除。</li>
<li>IMAP(Internet Message Access Protocol):IMAP也是用于接收电子邮件的协议,<code>但与POP3不同</code>,它允许电子邮件客户端在邮件服务器上管理电子邮件,而不是直接下载到本地设备。IMAP通常使用TCP端口143。</li>
<li>SMTPS(SMTP Secure):SMTPS是SMTP的安全版本,使用TLS/SSL来加密SMTP通信,以保护电子邮件的隐私和安全。通常使用TCP端口465或587。</li>
<li>POP3S和IMAPS:这是安全的POP3和IMAP协议,它们使用TLS/SSL来加密电子邮件客户端与邮件服务器之间的通信,以确保数据的机密性。</li>
<li>MIME(Multipurpose Internet Mail Extensions):MIME是一种标准,用于在电子邮件中传输多媒体内容、附件和非文本数据。它允许电子邮件包含图像、音频、视频和其他多媒体元素</li>
</ol>
<hr>
<h2 id="对称加密算法:"><strong>对称加密算法</strong>:</h2>
<ol>
<li><code>AES (Advanced Encryption Standard)</code>:这是目前广泛使用的对称加密算法之一,具有高度的安全性和性能。</li>
<li><code>DES (Data Encryption Standard)</code>:虽然已经被认为不安全,但仍然在一些旧系统中使用。</li>
<li><code>3DES (Triple Data Encryption Standard)</code>:对DES的改进版本,使用多轮加密操作来提高安全性。</li>
<li><code>RC4 (Rivest Cipher 4)</code>:虽然在过去广泛使用,但由于安全漏洞而不再建议使用。</li>
</ol>
<h2 id="非对称加密算法:"><strong>非对称加密算法</strong>:</h2>
<ol>
<li><code>RSA (Rivest-Shamir-Adleman)</code>:一种常用的非对称加密算法,广泛用于数字签名和安全通信,<code>https证书常用加密算法</code>。</li>
<li><code>DSA (Digital Signature Algorithm)</code>:主要用于数字签名,常与其他加密算法一起使用。</li>
<li><code>ECC (Elliptic Curve Cryptography)</code>:一种使用椭圆曲线密码学的非对称加密方法,具有高度的安全性和效率。</li>
</ol>
<h2 id="哈希函数:"><strong>哈希函数</strong>:</h2>
<ul>
<li><code>SHA-256和SHA-3</code>:SHA-256是一种安全散列算法,用于生成固定长度的哈希值,通常用于数据完整性检查和密码存储。</li>
<li><code>MD5</code>:尽管已经不再安全,但在某些应用中仍在使用。</li>
</ul>
</article><div class="post-copyright"><div class="copyright-cc-box"><i class="anzhiyufont anzhiyu-icon-copyright"></i></div><div class="post-copyright__author_box"><a class="post-copyright__author_img" href="/" title="头像"><img class="post-copyright__author_img_back" src= "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" onerror="this.onerror=null,this.src="https://up.ctext.top/default_bg.png"" data-lazy-src="https://up.ctext.top/avatar.png" title="头像" alt="头像"><img class="post-copyright__author_img_front" src= "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" onerror="this.onerror=null,this.src="https://up.ctext.top/default_bg.png"" data-lazy-src="https://up.ctext.top/avatar.png" title="头像" alt="头像"></a><div class="post-copyright__author_name">伴随</div><div class="post-copyright__author_desc">请保持那份热爱 奔赴下一场山海</div></div><div class="post-copyright__post__info"><a class="post-copyright__original" title="该文章为原创文章,注意版权协议" href="https://ctext.top/579f.html">原创</a><a class="post-copyright-title"><span onclick="rm.copyPageUrl('https://ctext.top/579f.html')">软件设计师考点总结</span></a></div><div class="post-tools" id="post-tools"><div class="post-tools-left"><div class="rewardLeftButton"><div class="post-reward" onclick="anzhiyu.addRewardMask()"><div class="reward-button button--animated" title="赞赏作者"><i class="anzhiyufont anzhiyu-icon-hand-heart-fill"></i>打赏作者</div><div class="reward-main"><div class="reward-all"><span class="reward-title">感谢你赐予我前进的力量</span><ul class="reward-group"><li class="reward-item"><a href="https://up.ctext.top/pay/wx.png" target="_blank"><img class="post-qr-code-img" src= "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" onerror="this.onerror=null,this.src="https://up.ctext.top/default_bg.png"" data-lazy-src="https://up.ctext.top/pay/wx.png" alt="微信"/></a><div class="post-qr-code-desc">微信</div></li><li class="reward-item"><a href="https://up.ctext.top/pay/zfb.png" target="_blank"><img class="post-qr-code-img" src= "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" onerror="this.onerror=null,this.src="https://up.ctext.top/default_bg.png"" data-lazy-src="https://up.ctext.top/pay/zfb.png" alt="支付宝"/></a><div class="post-qr-code-desc">支付宝</div></li></ul><a class="reward-main-btn" href="/about/#about-reward" target="_blank"><div class="reward-text">赞赏者名单</div><div class="reward-dec">因为你们的支持让我意识到写文章的价值🙏</div></a></div></div></div><div id="quit-box" onclick="anzhiyu.removeRewardMask()" style="display: none"></div></div><div class="shareRight"><div class="share-link mobile"><div class="share-qrcode"><div class="share-button" title="使用手机访问这篇文章"><i class="anzhiyufont anzhiyu-icon-qrcode"></i></div><div class="share-main"><div class="share-main-all"><div id="qrcode" title="https://ctext.top/579f.html"></div><div class="reward-dec">使用手机访问这篇文章</div></div></div></div></div><div class="share-link weibo"><a class="share-button" target="_blank" href="https://service.weibo.com/share/share.php?title=软件设计师考点总结&url=https://ctext.top/579f.html&pic=https://up.ctext.top/article/2024/02/software.png" rel="external nofollow noreferrer noopener"><i class="anzhiyufont anzhiyu-icon-weibo"></i></a></div><script>function copyCurrentPageUrl() {
var currentPageUrl = window.location.href;
var input = document.createElement("input");
input.setAttribute("value", currentPageUrl);
document.body.appendChild(input);
input.select();
input.setSelectionRange(0, 99999);
document.execCommand("copy");
document.body.removeChild(input);
}</script><div class="share-link copyurl"><div class="share-button" id="post-share-url" title="复制链接" onclick="copyCurrentPageUrl()"><i class="anzhiyufont anzhiyu-icon-link"></i></div></div></div></div></div><div class="post-copyright__notice"><span class="post-copyright-info">本博客所有文章除特别声明外,均采用 <a href="https://creativecommons.org/licenses/by-nc-sa/4.0/" target="_blank">CC BY-NC-SA 4.0</a> 许可协议。转载请注明来自 <a href="https://ctext.top" target="_blank">伴随的小站</a>!</span></div></div><div class="post-tools-right"><div class="tag_share"><div class="post-meta__box"><div class="post-meta__box__category-list"><a class="post-meta__box__categoryes" href="/categories/%E8%BD%AF%E8%80%83%E7%AC%94%E8%AE%B0/"><span class="categoryes-punctuation"> <i class="anzhiyufont anzhiyu-icon-inbox"></i></span>软考笔记<span class="categoryesPageCount">5</span></a></div><div class="post-meta__box__tag-list"><a class="post-meta__box__tags" href="/tags/%E8%BD%AF%E4%BB%B6%E8%AE%BE%E8%AE%A1%E5%B8%88/"><span class="tags-punctuation"> <i class="anzhiyufont anzhiyu-icon-tag"></i></span>软件设计师<span class="tagsPageCount">5</span></a></div></div><div class="post_share"><div class="social-share" data-image="https://up.ctext.top/article/2024/11/tools3.png" data-sites="facebook,twitter,wechat,weibo,qq"></div><link rel="stylesheet" href="https://cdn.cbd.int/butterfly-extsrc@1.1.3/sharejs/dist/css/share.min.css" media="print" onload="this.media='all'"/><script src="https://cdn.cbd.int/butterfly-extsrc@1.1.3/sharejs/dist/js/social-share.min.js" defer="defer"></script></div></div></div><nav class="pagination-post" id="pagination"><div class="next-post pull-full"><a href="/e7aa.html"><img class="next-cover" src= "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" onerror="this.onerror=null,this.src="https://up.ctext.top/default_bg.png"" data-lazy-src="https://up.ctext.top/article/2024/03/wechat.png" onerror="onerror=null;src='https://up.ctext.top/default_bg.png'" alt="cover of next post"><div class="pagination-info"><div class="label">下一篇</div><div class="next_info">改造你的微信传输助手</div></div></a></div></nav><div class="relatedPosts"><div class="headline"><i class="anzhiyufont anzhiyu-icon-thumbs-up fa-fw" style="font-size: 1.5rem; margin-right: 4px"></i><span>喜欢这篇文章的人也看了</span></div><div class="relatedPosts-list"><div><a href="/b78b.html" title="排序算法详解"><img class="cover" src= "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" onerror="this.onerror=null,this.src="https://up.ctext.top/default_bg.png"" data-lazy-src="https://up.ctext.top/article/2024/04/sort.png" alt="cover"><div class="content is-center"><div class="date"><i class="anzhiyufont anzhiyu-icon-calendar-days fa-fw"></i> 2024-04-06</div><div class="title">排序算法详解</div></div></a></div><div><a href="/ebff.html" title="一文搞懂波兰表达式"><img class="cover" src= "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" onerror="this.onerror=null,this.src="https://up.ctext.top/default_bg.png"" data-lazy-src="https://up.ctext.top/article/2024/04/bolan.png" alt="cover"><div class="content is-center"><div class="date"><i class="anzhiyufont anzhiyu-icon-calendar-days fa-fw"></i> 2024-04-05</div><div class="title">一文搞懂波兰表达式</div></div></a></div><div><a href="/eaa2.html" title="一文搞懂奇偶校验、海明码和CRC"><img class="cover" src= "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" onerror="this.onerror=null,this.src="https://up.ctext.top/default_bg.png"" data-lazy-src="https://up.ctext.top/article/2024/03/verify.png" alt="cover"><div class="content is-center"><div class="date"><i class="anzhiyufont anzhiyu-icon-calendar-days fa-fw"></i> 2024-03-27</div><div class="title">一文搞懂奇偶校验、海明码和CRC</div></div></a></div><div><a href="/782d.html" title="一文搞懂原码、反码、补码、移码"><img class="cover" src= "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" onerror="this.onerror=null,this.src="https://up.ctext.top/default_bg.png"" data-lazy-src="https://up.ctext.top/article/2024/03/number.png" alt="cover"><div class="content is-center"><div class="date"><i class="anzhiyufont anzhiyu-icon-calendar-days fa-fw"></i> 2024-03-23</div><div class="title">一文搞懂原码、反码、补码、移码</div></div></a></div></div></div><hr/><div id="post-comment"><div class="comment-head"><div class="comment-headline"><i class="anzhiyufont anzhiyu-icon-comments"></i><span> 评论</span></div><div class="comment-randomInfo"><a onclick="anzhiyu.addRandomCommentInfo()" href="javascript:void(0)" style="display: none">匿名评论</a><a href="/privacy" style="margin-left: 4px">隐私政策</a></div></div><div class="comment-wrap"><div><div id="waline-wrap"></div></div></div></div><div class="comment-barrage"></div></div><div class="aside-content" id="aside-content"><div class="card-widget card-info"><div class="card-content"><div class="author-info__sayhi" id="author-info__sayhi" onclick="anzhiyu.changeSayHelloText()"></div><div class="author-info-avatar"><img class="avatar-img" src= "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" onerror="this.onerror=null,this.src="https://up.ctext.top/default_bg.png"" data-lazy-src="https://up.ctext.top/avatar.png" onerror="this.onerror=null;this.src='/img/friend_404.gif'" alt="avatar"/><div class="author-status"><img class="g-status" src= "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" onerror="this.onerror=null,this.src="https://up.ctext.top/default_bg.png"" data-lazy-src="https://bu.dusays.com/2023/08/24/64e6ce9c507bb.png" alt="status"/></div></div><div class="author-info__description"><div style="line-height:1.38;margin:0.6rem 0;text-align:center;color:rgba(255, 255, 255, 0.8);"> <b style="color:#fff">我想,左肩有你,右肩微笑</b> </div> <div style="line-height:1.38;margin:0.6rem 0;text-align:center;color:rgba(255, 255, 255, 0.8);"> <b style="color:#fff">我想,在你眼里,撒野奔跑</b> </div> <div style="line-height:1.38;margin:0.6rem 0;text-align:center;color:rgba(255, 255, 255, 0.8);"> <b style="color:#fff">我想,一个眼神,就到老 </b> </div> <div style="line-height:1.38;margin:0.6rem 0;text-align:center;color:rgba(255, 255, 255, 0.8);"> <b style="color:#fff">我想………        </b> </div></div><div class="author-info__bottom-group"><a class="author-info__bottom-group-left" href="/"><h1 class="author-info__name">伴随</h1><div class="author-info__desc">请保持那份热爱 奔赴下一场山海</div></a><div class="card-info-social-icons is-center"><a class="social-icon faa-parent animated-hover" href="https://qm.qq.com/q/1sv8urqpRS" target="_blank" title="QQ"><i class="anzhiyufont anzhiyu-icon-qq"></i></a></div></div></div></div><div class="card-widget card-announcement"><div class="item-headline"><i class="anzhiyufont anzhiyu-icon-bullhorn anzhiyu-shake"></i><span>公告</span></div><div class="announcement_content"><div id="welcome-info"></div></div></div><div class="sticky_layout"><div class="card-widget" id="card-toc"><div class="item-headline"><i class="anzhiyufont anzhiyu-icon-bars"></i><span>文章目录</span><span class="toc-percentage"></span></div><div class="toc-content"><ol class="toc"><li class="toc-item toc-level-1"><a class="toc-link"><span class="toc-number">1.</span> <span class="toc-text">《软件设计师》考点总结</span></a><ol class="toc-child"><li class="toc-item toc-level-2"><a class="toc-link" href="#CPU%E4%B8%BB%E8%A6%81%E7%BB%84%E6%88%90"><span class="toc-number">1.1.</span> <span class="toc-text">CPU主要组成</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E5%A4%9A%E6%80%81"><span class="toc-number">1.2.</span> <span class="toc-text">多态</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E8%BD%AF%E4%BB%B6%E6%B5%8B%E8%AF%95%E4%B8%89%E4%B8%AA%E9%98%B6%E6%AE%B5"><span class="toc-number">1.3.</span> <span class="toc-text">软件测试三个阶段</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E8%BD%AF%E4%BB%B6%E5%9B%9B%E7%A7%8D%E7%BB%B4%E6%8A%A4"><span class="toc-number">1.4.</span> <span class="toc-text">软件四种维护</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E6%95%B0%E6%8D%AE%E5%BA%93%E8%8C%83%E5%BC%8F%E7%90%86%E8%AE%BA%E7%AE%80%E5%8D%95%E8%AE%B0%E5%BF%86"><span class="toc-number">1.5.</span> <span class="toc-text">数据库范式理论简单记忆</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E6%95%B0%E6%8D%AE%E5%BA%93%E6%A8%A1%E5%BC%8F"><span class="toc-number">1.6.</span> <span class="toc-text">数据库模式</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E5%87%BD%E6%95%B0%E4%BE%9D%E8%B5%96"><span class="toc-number">1.7.</span> <span class="toc-text">函数依赖</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#%E7%AC%A6%E5%8F%B7%E4%BB%8B%E7%BB%8D"><span class="toc-number">1.7.1.</span> <span class="toc-text">符号介绍</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#Armstrong%E5%85%AC%E7%90%86%E7%B3%BB%E7%BB%9F"><span class="toc-number">1.7.2.</span> <span class="toc-text">Armstrong公理系统</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#%E4%BE%9D%E8%B5%96"><span class="toc-number">1.7.3.</span> <span class="toc-text">依赖</span></a></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E6%A0%91%E7%9B%B8%E5%85%B3%E7%9A%84%E8%AE%A1%E7%AE%97%E5%85%AC%E5%BC%8F"><span class="toc-number">1.8.</span> <span class="toc-text">树相关的计算公式</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E8%BD%AF%E4%BB%B6%E6%88%90%E7%86%9F%E5%BA%A6%E6%A8%A1%E5%9E%8B-CMM-%E7%9A%84%E4%BA%94%E4%B8%AA%E7%AD%89%E7%BA%A7"><span class="toc-number">1.9.</span> <span class="toc-text">软件成熟度模型(CMM)的五个等级</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E4%B8%83%E5%B1%82%E7%BD%91%E7%BB%9C%E6%A8%A1%E5%9E%8B"><span class="toc-number">1.10.</span> <span class="toc-text">七层网络模型</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E8%BD%AF%E4%BB%B6%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%9E%8B"><span class="toc-number">1.11.</span> <span class="toc-text">软件设计模型</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F"><span class="toc-number">1.12.</span> <span class="toc-text">设计模式</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E7%AE%97%E6%B3%95%E7%AD%96%E7%95%A5"><span class="toc-number">1.13.</span> <span class="toc-text">算法策略</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#UML%E5%B8%B8%E7%94%A8%E5%9B%BE"><span class="toc-number">1.14.</span> <span class="toc-text">UML常用图</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E7%B1%BB%E5%9B%BE"><span class="toc-number">1.15.</span> <span class="toc-text">类图</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E7%94%A8%E4%BE%8B%E5%9B%BE"><span class="toc-number">1.16.</span> <span class="toc-text">用例图</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E5%86%85%E8%81%9A"><span class="toc-number">1.17.</span> <span class="toc-text">内聚</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E8%80%A6%E5%90%88"><span class="toc-number">1.18.</span> <span class="toc-text">耦合</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E5%B8%B8%E7%94%A8%E5%8D%8F%E8%AE%AE"><span class="toc-number">1.19.</span> <span class="toc-text">常用协议</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E9%82%AE%E4%BB%B6%E7%9B%B8%E5%85%B3"><span class="toc-number">1.20.</span> <span class="toc-text">邮件相关</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E5%AF%B9%E7%A7%B0%E5%8A%A0%E5%AF%86%E7%AE%97%E6%B3%95%EF%BC%9A"><span class="toc-number">1.21.</span> <span class="toc-text">对称加密算法:</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E9%9D%9E%E5%AF%B9%E7%A7%B0%E5%8A%A0%E5%AF%86%E7%AE%97%E6%B3%95%EF%BC%9A"><span class="toc-number">1.22.</span> <span class="toc-text">非对称加密算法:</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E5%93%88%E5%B8%8C%E5%87%BD%E6%95%B0%EF%BC%9A"><span class="toc-number">1.23.</span> <span class="toc-text">哈希函数:</span></a></li></ol></li></ol></div></div><div class="card-widget card-recent-post"><div class="item-headline"><i class="anzhiyufont anzhiyu-icon-history"></i><span>最近发布</span></div><div class="aside-list"><div class="aside-list-item"><a class="thumbnail" href="/8a0c.html" title="JAVA表达式解析器———EvalEx"><img src= "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" onerror="this.onerror=null,this.src="https://up.ctext.top/default_bg.png"" data-lazy-src="https://up.ctext.top/article/2024/11/tools3.png" onerror="this.onerror=null;this.src='https://up.ctext.top/default_bg.png'" alt="JAVA表达式解析器———EvalEx"/></a><div class="content"><a class="title" href="/8a0c.html" title="JAVA表达式解析器———EvalEx">JAVA表达式解析器———EvalEx</a><time datetime="2024-11-17T06:10:54.000Z" title="发表于 2024-11-17 14:10:54">2024-11-17</time></div></div><div class="aside-list-item"><a class="thumbnail" href="/dfd4.html" title="IDEA快捷键大全"><img src= "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" onerror="this.onerror=null,this.src="https://up.ctext.top/default_bg.png"" data-lazy-src="https://up.ctext.top/article/2024/10/idea.png" onerror="this.onerror=null;this.src='https://up.ctext.top/default_bg.png'" alt="IDEA快捷键大全"/></a><div class="content"><a class="title" href="/dfd4.html" title="IDEA快捷键大全">IDEA快捷键大全</a><time datetime="2024-10-15T12:08:03.000Z" title="发表于 2024-10-15 20:08:03">2024-10-15</time></div></div><div class="aside-list-item"><a class="thumbnail" href="/51a7.html" title="java随机数介绍以及生成随机日期"><img src= "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" onerror="this.onerror=null,this.src="https://up.ctext.top/default_bg.png"" data-lazy-src="https://up.ctext.top/article/2024/10/tools2.png" onerror="this.onerror=null;this.src='https://up.ctext.top/default_bg.png'" alt="java随机数介绍以及生成随机日期"/></a><div class="content"><a class="title" href="/51a7.html" title="java随机数介绍以及生成随机日期">java随机数介绍以及生成随机日期</a><time datetime="2024-10-14T12:16:33.000Z" title="发表于 2024-10-14 20:16:33">2024-10-14</time></div></div><div class="aside-list-item"><a class="thumbnail" href="/3329.html" title="JAVA工具类(一)——生成班次排班记录"><img src= "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" onerror="this.onerror=null,this.src="https://up.ctext.top/default_bg.png"" data-lazy-src="https://up.ctext.top/article/2024/08/tools1.png" onerror="this.onerror=null;this.src='https://up.ctext.top/default_bg.png'" alt="JAVA工具类(一)——生成班次排班记录"/></a><div class="content"><a class="title" href="/3329.html" title="JAVA工具类(一)——生成班次排班记录">JAVA工具类(一)——生成班次排班记录</a><time datetime="2024-08-15T12:34:41.000Z" title="发表于 2024-08-15 20:34:41">2024-08-15</time></div></div><div class="aside-list-item"><a class="thumbnail" href="/43a1.html" title="Feign调用者如何配置全局Header参数?"><img src= "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" onerror="this.onerror=null,this.src="https://up.ctext.top/default_bg.png"" data-lazy-src="https://up.ctext.top/article/2024/08/feign.png" onerror="this.onerror=null;this.src='https://up.ctext.top/default_bg.png'" alt="Feign调用者如何配置全局Header参数?"/></a><div class="content"><a class="title" href="/43a1.html" title="Feign调用者如何配置全局Header参数?">Feign调用者如何配置全局Header参数?</a><time datetime="2024-08-12T11:39:34.000Z" title="发表于 2024-08-12 19:39:34">2024-08-12</time></div></div></div></div></div></div></div></main><footer id="footer"><div id="footer-wrap"><div id="workboard"><img class="workSituationImg boardsign" src= "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" onerror="this.onerror=null,this.src="https://up.ctext.top/default_bg.png"" data-lazy-src="https://up.ctext.top/happy.svg" alt="下班了就该开开心心的玩耍,嘿嘿~" title="下班了就该开开心心的玩耍,嘿嘿~"/><div id="runtimeTextTip"></div></div><p id="ghbdages"><a class="github-badge" target="_blank" href="https://hexo.io/" style="margin-inline:5px" data-title="博客框架为Hexo_v7.2.0" title="博客框架为Hexo_v7.2.0"><img src= "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" onerror="this.onerror=null,this.src="https://up.ctext.top/default_bg.png"" data-lazy-src="https://up.ctext.top/svg/hexo.svg" alt="博客框架为Hexo_v7.2.0"/></a><a class="github-badge" target="_blank" href="https://docs.anheyu.com/" style="margin-inline:5px" data-title="本站使用AnZhiYu主题" title="本站使用AnZhiYu主题"><img src= "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" onerror="this.onerror=null,this.src="https://up.ctext.top/default_bg.png"" data-lazy-src="https://up.ctext.top/svg/anzhiyu.svg" alt="本站使用AnZhiYu主题"/></a><a class="github-badge" target="_blank" href="https://vercel.com/" style="margin-inline:5px" data-title="本站使用Vercel部署" title="本站使用Vercel部署"><img src= "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" onerror="this.onerror=null,this.src="https://up.ctext.top/default_bg.png"" data-lazy-src="https://up.ctext.top/svg/vercel.svg" alt="本站使用Vercel部署"/></a><a class="github-badge" target="_blank" href="https://github.com/" style="margin-inline:5px" data-title="本站项目源码由Github托管" title="本站项目源码由Github托管"><img src= "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" onerror="this.onerror=null,this.src="https://up.ctext.top/default_bg.png"" data-lazy-src="https://up.ctext.top/svg/github.svg" alt="本站项目源码由Github托管"/></a><a class="github-badge" target="_blank" href="https://www.upyun.com/?utm_source=lianmeng&utm_medium=referral" style="margin-inline:5px" data-title="本站项目由又拍云提供CDN加速/云存储服务" title="本站项目由又拍云提供CDN加速/云存储服务"><img src= "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" onerror="this.onerror=null,this.src="https://up.ctext.top/default_bg.png"" data-lazy-src="https://up.ctext.top/svg/up.svg" alt="本站项目由又拍云提供CDN加速/云存储服务"/></a><a class="github-badge" target="_blank" href="https://github.com/walinejs/waline" style="margin-inline:5px" data-title="本站评论系统使用Waline搭建" title="本站评论系统使用Waline搭建"><img src= "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" onerror="this.onerror=null,this.src="https://up.ctext.top/default_bg.png"" data-lazy-src="https://up.ctext.top/svg/waline.svg" alt="本站评论系统使用Waline搭建"/></a></p></div><div id="footer-bar"><div class="footer-bar-links"><div class="footer-bar-left"><div id="footer-bar-tips"><div class="copyright">©2024 - 2025 By <a class="footer-bar-link" href="/" title="伴随" target="_blank">伴随</a></div></div><div id="footer-type-tips"></div><div class="js-pjax"><script>function subtitleType () {
getScript('https://yijuzhan.com/api/word.php?m=js').then(() => {
const con = str[0]
if (true) {
const from = '出自 ' + str[1]
const sub = []
sub.unshift(con, from)
window.typed = new Typed('#footer-type-tips', {
strings: sub,
startDelay: 300,
typeSpeed: 150,
loop: true,
backSpeed: 50,
})
} else {
document.getElementById('footer-type-tips').innerHTML = con
}
})
}
if (true) {
if (typeof Typed === 'function') {
subtitleType()
} else {
getScript('https://cdn.cbd.int/typed.js@2.1.0/dist/typed.umd.js').then(subtitleType)
}
} else {
subtitleType()
}
</script></div></div><div class="footer-bar-right"><a class="footer-bar-link" target="_blank" rel="noopener" href="https://beian.miit.gov.cn/" title="京ICP备2022017849号-2">京ICP备2022017849号-2</a></div></div></div></footer></div><div id="sidebar"><div id="menu-mask"></div><div id="sidebar-menus"><div class="sidebar-site-data site-data is-center"><a href="/archives/" title="archive"><div class="headline">文章</div><div class="length-num">23</div></a><a href="/tags/" title="tag"><div class="headline">标签</div><div class="length-num">21</div></a><a href="/categories/" title="category"><div class="headline">分类</div><div class="length-num">6</div></a></div><span class="sidebar-menu-item-title">功能</span><div class="sidebar-menu-item"><a class="darkmode_switchbutton menu-child" href="javascript:void(0);" title="显示模式"><i class="anzhiyufont anzhiyu-icon-circle-half-stroke"></i><span>显示模式</span></a></div><div class="back-menu-list-groups"><div class="back-menu-list-group"><div class="back-menu-list-title">关于</div><div class="back-menu-list"><a class="back-menu-item" href="/about/" title="我"><img class="back-menu-item-icon" src= "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" onerror="this.onerror=null,this.src="https://up.ctext.top/default_bg.png"" data-lazy-src="https://up.ctext.top/ico/orange.svg" alt="我"/><span class="back-menu-item-text">我</span></a></div></div><div class="back-menu-list-group"><div class="back-menu-list-title">博客</div><div class="back-menu-list"><a class="back-menu-item" href="/album/" title="我的相册"><img class="back-menu-item-icon" src= "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" onerror="this.onerror=null,this.src="https://up.ctext.top/default_bg.png"" data-lazy-src="https://up.ctext.top/ico/strawberry.svg" alt="我的相册"/><span class="back-menu-item-text">我的相册</span></a><a class="back-menu-item" href="/essay/" title="记录生活"><img class="back-menu-item-icon" src= "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" onerror="this.onerror=null,this.src="https://up.ctext.top/default_bg.png"" data-lazy-src="https://up.ctext.top/ico/apple.svg" alt="记录生活"/><span class="back-menu-item-text">记录生活</span></a></div></div></div><div class="menus_items"><div class="menus_item"><a class="site-page" href="javascript:void(0);"><span> 文章</span></a><ul class="menus_item_child"><li><a class="site-page child faa-parent animated-hover" href="/"><i class="anzhiyufont anzhiyu-icon-grip-vertical faa-tada" style="font-size: 0.9em;"></i><span> 主页</span></a></li><li><a class="site-page child faa-parent animated-hover" href="/archives/"><i class="anzhiyufont anzhiyu-icon-box-archive faa-tada" style="font-size: 0.9em;"></i><span> 总览</span></a></li><li><a class="site-page child faa-parent animated-hover" href="/categories/"><i class="anzhiyufont anzhiyu-icon-shapes faa-tada" style="font-size: 0.9em;"></i><span> 分类</span></a></li><li><a class="site-page child faa-parent animated-hover" href="/tags/"><i class="anzhiyufont anzhiyu-icon-tags faa-tada" style="font-size: 0.9em;"></i><span> 标签</span></a></li></ul></div><div class="menus_item"><a class="site-page" href="javascript:void(0);"><span> 我的</span></a><ul class="menus_item_child"><li><a class="site-page child faa-parent animated-hover" href="/growth.html"><i class="anzhiyufont anzhiyu-icon-heartbeat faa-tada" style="font-size: 0.9em;"></i><span> 博客岁月</span></a></li><li><a class="site-page child faa-parent animated-hover" href="/music/"><i class="anzhiyufont anzhiyu-icon-music faa-tada" style="font-size: 0.9em;"></i><span> 音乐馆</span></a></li><li><a class="site-page child faa-parent animated-hover" href="/album/"><i class="anzhiyufont anzhiyu-icon-images faa-tada" style="font-size: 0.9em;"></i><span> 相册集</span></a></li><li><a class="site-page child faa-parent animated-hover" href="/essay/"><i class="anzhiyufont anzhiyu-icon-lightbulb faa-tada" style="font-size: 0.9em;"></i><span> 记录生活</span></a></li></ul></div><div class="menus_item"><a class="site-page" href="javascript:void(0);"><span> 小工具</span></a><ul class="menus_item_child"><li><a class="site-page child faa-parent animated-hover" href="/air-conditioner/"><i class="anzhiyufont anzhiyu-icon-fan faa-tada" style="font-size: 0.9em;"></i><span> 小空调</span></a></li><li><a class="site-page child faa-parent animated-hover" href="/gradation/"><i class="anzhiyufont anzhiyu-icon-envelope faa-tada" style="font-size: 0.9em;"></i><span> 渐变背景生成</span></a></li><li><a class="site-page child faa-parent animated-hover" href="/9abe.html"><i class="anzhiyufont anzhiyu-icon-artstation faa-tada" style="font-size: 0.9em;"></i><span> tag-plugins文档</span></a></li><li><a class="site-page child faa-parent animated-hover" href="/nav"><i class="anzhiyufont anzhiyu-icon-link faa-tada" style="font-size: 0.9em;"></i><span> 网址导航</span></a></li><li><a class="site-page child faa-parent animated-hover" target="_blank" rel="noopener" href="https://map.ctext.top"><i class="anzhiyufont anzhiyu-icon-keyboard faa-tada" style="font-size: 0.9em;"></i><span> 飞车随机选图工具</span></a></li></ul></div><div class="menus_item"><a class="site-page" href="javascript:void(0);"><span> 关于</span></a><ul class="menus_item_child"><li><a class="site-page child faa-parent animated-hover" href="/about/"><i class="anzhiyufont anzhiyu-icon-paper-plane faa-tada" style="font-size: 0.9em;"></i><span> 关于自己</span></a></li><li><a class="site-page child faa-parent animated-hover" href="javascript:toRandomPost()"><i class="anzhiyufont anzhiyu-icon-shoe-prints1 faa-tada" style="font-size: 0.9em;"></i><span> 随便逛逛</span></a></li></ul></div></div><span class="sidebar-menu-item-title">标签</span><div class="card-tags"><div class="item-headline"></div><div class="card-tag-cloud"><a href="/tags/Feign/" style="font-size: 0.88rem;">Feign<sup>1</sup></a><a href="/tags/IDEA/" style="font-size: 0.88rem;">IDEA<sup>1</sup></a><a href="/tags/JAVA/" style="font-size: 0.88rem;">JAVA<sup>5</sup></a><a href="/tags/Waline/" style="font-size: 0.88rem;">Waline<sup>1</sup></a><a href="/tags/docker/" style="font-size: 0.88rem;">docker<sup>1</sup></a><a href="/tags/hexo/" style="font-size: 0.88rem;">hexo<sup>4</sup></a><a href="/tags/java/" style="font-size: 0.88rem;">java<sup>1</sup></a><a href="/tags/linux/" style="font-size: 0.88rem;">linux<sup>2</sup></a><a href="/tags/logback/" style="font-size: 0.88rem;">logback<sup>1</sup></a><a href="/tags/nacos/" style="font-size: 0.88rem;">nacos<sup>1</sup></a><a href="/tags/window/" style="font-size: 0.88rem;">window<sup>1</sup></a><a href="/tags/%E4%BA%8C%E8%BF%9B%E5%88%B6/" style="font-size: 0.88rem;">二进制<sup>1</sup></a><a href="/tags/%E5%B7%A5%E5%85%B7%E7%B1%BB/" style="font-size: 0.88rem;">工具类<sup>3</sup></a><a href="/tags/%E5%BE%AE%E4%BF%A1/" style="font-size: 0.88rem;">微信<sup>1</sup></a><a href="/tags/%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95/" style="font-size: 0.88rem;">排序算法<sup>1</sup></a><a href="/tags/%E6%90%9C%E7%B4%A2%E5%BC%95%E6%93%8E/" style="font-size: 0.88rem;">搜索引擎<sup>1</sup></a><a href="/tags/%E7%AC%A6%E5%8F%B7%E7%9A%84%E8%89%BA%E6%9C%AF/" style="font-size: 0.88rem;">符号的艺术<sup>1</sup></a><a href="/tags/%E8%84%9A%E6%9C%AC/" style="font-size: 0.88rem;">脚本<sup>2</sup></a><a href="/tags/%E8%BD%AF%E4%BB%B6%E8%AE%BE%E8%AE%A1%E5%B8%88/" style="font-size: 0.88rem;">软件设计师<sup>5</sup></a><a href="/tags/%E8%BD%AF%E8%80%83/" style="font-size: 0.88rem;">软考<sup>3</sup></a><a href="/tags/%E8%BE%BE%E6%A2%A6%E6%95%B0%E6%8D%AE%E5%BA%93/" style="font-size: 0.88rem;">达梦数据库<sup>1</sup></a></div></div><hr/></div></div><div id="rightside"><div id="rightside-config-hide"><button id="readmode" type="button" title="阅读模式"><i class="anzhiyufont anzhiyu-icon-book-open"></i></button><button id="translateLink" type="button" title="简繁转换">繁</button><button id="darkmode" type="button" title="浅色和深色模式转换"><i class="anzhiyufont anzhiyu-icon-circle-half-stroke"></i></button><button id="hide-aside-btn" type="button" title="单栏和双栏切换"><i class="anzhiyufont anzhiyu-icon-arrows-left-right"></i></button></div><div id="rightside-config-show"><button id="rightside-config" type="button" title="设置"><i class="anzhiyufont anzhiyu-icon-gear"></i></button><button class="close" id="mobile-toc-button" type="button" title="目录"><i class="anzhiyufont anzhiyu-icon-list-ul"></i></button><a id="to_comment" href="#post-comment" title="直达评论"><i class="anzhiyufont anzhiyu-icon-comments"></i></a><button id="go-up" type="button" title="回到顶部"><i class="anzhiyufont anzhiyu-icon-arrow-up"></i></button></div></div><div id="nav-music"><a id="nav-music-hoverTips" onclick="anzhiyu.musicToggle()" accesskey="m">播放音乐</a><div id="console-music-bg"></div><meting-js id="2788494248" server="netease" type="playlist" mutex="true" preload="none" theme="var(--anzhiyu-main)" data-lrctype="0" order="random" volume="0.7"></meting-js></div><div id="rightMenu"><div class="rightMenu-group rightMenu-small"><div class="rightMenu-item" id="menu-backward"><i class="anzhiyufont anzhiyu-icon-arrow-left"></i></div><div class="rightMenu-item" id="menu-forward"><i class="anzhiyufont anzhiyu-icon-arrow-right"></i></div><div class="rightMenu-item" id="menu-refresh"><i class="anzhiyufont anzhiyu-icon-arrow-rotate-right" style="font-size: 1rem;"></i></div><div class="rightMenu-item" id="menu-top"><i class="anzhiyufont anzhiyu-icon-arrow-up"></i></div></div><div class="rightMenu-group rightMenu-line rightMenuPlugin"><div class="rightMenu-item" id="menu-copytext"><i class="anzhiyufont anzhiyu-icon-copy"></i><span>复制选中文本</span></div><div class="rightMenu-item" id="menu-pastetext"><i class="anzhiyufont anzhiyu-icon-paste"></i><span>粘贴文本</span></div><a class="rightMenu-item" id="menu-commenttext"><i class="anzhiyufont anzhiyu-icon-comment-medical"></i><span>引用到评论</span></a><div class="rightMenu-item" id="menu-newwindow"><i class="anzhiyufont anzhiyu-icon-window-restore"></i><span>新窗口打开</span></div><div class="rightMenu-item" id="menu-copylink"><i class="anzhiyufont anzhiyu-icon-link"></i><span>复制链接地址</span></div><div class="rightMenu-item" id="menu-copyimg"><i class="anzhiyufont anzhiyu-icon-images"></i><span>复制此图片</span></div><div class="rightMenu-item" id="menu-downloadimg"><i class="anzhiyufont anzhiyu-icon-download"></i><span>下载此图片</span></div><div class="rightMenu-item" id="menu-newwindowimg"><i class="anzhiyufont anzhiyu-icon-window-restore"></i><span>新窗口打开图片</span></div><div class="rightMenu-item" id="menu-search"><i class="anzhiyufont anzhiyu-icon-magnifying-glass"></i><span>站内搜索</span></div><div class="rightMenu-item" id="menu-searchBaidu"><i class="anzhiyufont anzhiyu-icon-magnifying-glass"></i><span>百度搜索</span></div><div class="rightMenu-item" id="menu-music-toggle"><i class="anzhiyufont anzhiyu-icon-play"></i><span>播放音乐</span></div><div class="rightMenu-item" id="menu-music-back"><i class="anzhiyufont anzhiyu-icon-backward"></i><span>切换到上一首</span></div><div class="rightMenu-item" id="menu-music-forward"><i class="anzhiyufont anzhiyu-icon-forward"></i><span>切换到下一首</span></div><div class="rightMenu-item" id="menu-music-playlist" onclick="window.open("https://music.163.com/#/playlist?id=2788494248", "_blank");" style="display: none;"><i class="anzhiyufont anzhiyu-icon-radio"></i><span>查看所有歌曲</span></div><div class="rightMenu-item" id="menu-music-copyMusicName"><i class="anzhiyufont anzhiyu-icon-copy"></i><span>复制歌名</span></div></div><div class="rightMenu-group rightMenu-line rightMenuOther"><a class="rightMenu-item menu-link" id="menu-randomPost"><i class="anzhiyufont anzhiyu-icon-shuffle"></i><span>随便逛逛</span></a><a class="rightMenu-item menu-link" href="/categories/"><i class="anzhiyufont anzhiyu-icon-cube"></i><span>博客分类</span></a><a class="rightMenu-item menu-link" href="/tags/"><i class="anzhiyufont anzhiyu-icon-tags"></i><span>文章标签</span></a></div><div class="rightMenu-group rightMenu-line rightMenuOther"><a class="rightMenu-item" id="menu-copy" href="javascript:void(0);"><i class="anzhiyufont anzhiyu-icon-copy"></i><span>复制地址</span></a><a class="rightMenu-item" id="menu-commentBarrage" href="javascript:void(0);"><i class="anzhiyufont anzhiyu-icon-message"></i><span class="menu-commentBarrage-text">关闭热评</span></a><a class="rightMenu-item" id="menu-darkmode" href="javascript:void(0);"><i class="anzhiyufont anzhiyu-icon-circle-half-stroke"></i><span class="menu-darkmode-text">深色模式</span></a><a class="rightMenu-item" id="menu-translate" href="javascript:void(0);"><i class="anzhiyufont anzhiyu-icon-language"></i><span>轉為繁體</span></a></div></div><div id="rightmenu-mask"></div><div><script src="/js/utils.js"></script><script src="/js/main.js"></script><script src="/js/tw_cn.js"></script><script src="https://cdn.cbd.int/@fancyapps/ui@5.0.28/dist/fancybox/fancybox.umd.js"></script><script src="https://cdn.cbd.int/instant.page@5.2.0/instantpage.js" type="module"></script><script src="https://cdn.cbd.int/vanilla-lazyload@17.8.5/dist/lazyload.iife.min.js"></script><script src="https://cdn.cbd.int/node-snackbar@0.1.16/dist/snackbar.min.js"></script><script>function panguFn () {
if (typeof pangu === 'object') pangu.autoSpacingPage()
else {
getScript('https://cdn.cbd.int/pangu@4.0.7/dist/browser/pangu.min.js')
.then(() => {
pangu.autoSpacingPage()
})
}
}
function panguInit () {
if (false){
GLOBAL_CONFIG_SITE.isPost && panguFn()
} else {
panguFn()
}
}
document.addEventListener('DOMContentLoaded', panguInit)</script><canvas id="universe"></canvas><script async src="https://npm.elemecdn.com/anzhiyu-theme-static@1.0.0/dark/dark.js"></script><script async src="/anzhiyu/random.js"></script><script async="async">(function () {
var grt = new Date("01/02/2024 00:00:00"); //设置网站上线时间
var now = new Date();
var dnum;
var hnum;
var mnum;
var snum;
var nowHour;
// 计算并更新天数、小时数、分钟数和秒数
function updateTime() {
now = new Date(); // 更新 now 的值
nowHour = now.getHours(); // 更新 nowHour 的值
var days = (now - grt) / 1000 / 60 / 60 / 24;
dnum = Math.floor(days);
var hours = (now - grt) / 1000 / 60 / 60 - 24 * dnum;
hnum = Math.floor(hours);
if (String(hnum).length == 1) {
hnum = "0" + hnum;
}
var minutes = (now - grt) / 1000 / 60 - 24 * 60 * dnum - 60 * hnum;
mnum = Math.floor(minutes);
if (String(mnum).length == 1) {
mnum = "0" + mnum;
}
var seconds = (now - grt) / 1000 - 24 * 60 * 60 * dnum - 60 * 60 * hnum - 60 * mnum;
snum = Math.round(seconds);
if (String(snum).length == 1) {
snum = "0" + snum;
}
}
// 更新网页中显示的网站运行时间
function updateHtml() {
const footer = document.getElementById("footer");
if (!footer) return
let currentTimeHtml = "";
if (nowHour < 18 && nowHour >= 9) {
// 如果是上班时间,默认就是"安知鱼-上班摸鱼中.svg"图片,不需要更改
currentTimeHtml = `本站居然运行了 ${dnum} 天<span id='runtime'> ${hnum} 小时 ${mnum} 分 ${snum} 秒 </span><i class='anzhiyufont anzhiyu-icon-heartbeat' style='color:red'></i>`;
} else {
// 如果是下班时间,插入"安知鱼-下班啦.svg"图片
let img = document.querySelector("#workboard .workSituationImg");
if (img != null) {
img.src = "https://up.ctext.top/happy.svg";
img.title = "下班了就该开开心心的玩耍,嘿嘿~";
img.alt = "下班了就该开开心心的玩耍,嘿嘿~";
}
currentTimeHtml = `本站居然运行了 ${dnum} 天<span id='runtime'> ${hnum} 小时 ${mnum} 分 ${snum} 秒 </span><i class='anzhiyufont anzhiyu-icon-heartbeat' style='color:red'></i>`;
}
if (document.getElementById("runtimeTextTip")) {
document.getElementById("runtimeTextTip").innerHTML = currentTimeHtml;
}
}
setInterval(() => {
updateTime();
updateHtml();
}, 1000);
})();</script><div class="js-pjax"><script>(() => {
const locale = {
nick: '你的专属昵称',
nickError: '昵称太短啦!至少得有3个字符才能算数哦!',
mail: '你的电子小信箱',
mailError: '哎呀,这不是一个合格的邮箱地址哦,请再检查一遍!',
link: '你有个酷酷的网址吗?',
optional: '这个嘛,想填就填,不填也行!',
placeholder: '吐槽一下?',
sofa: '来,坐沙发上,发表你的评论吧!',
submit: '一键发送,让世界听到你的声音!',
like: '点个赞,让TA知道你的心意!',
cancelLike: '哎呀,不小心点错了,取消赞!',
reply: '回复TA,开启一场对话吧!',
cancelReply: '等等,我话还没说完,取消回复!',
comment: '来,说说你的看法,让评论区热闹起来!',
refresh: '刷新一下,看看有啥新动态!',
more: '哇塞,还有更多精彩内容等你来加载!',
preview: '先睹为快,预览一下你的大作吧!',
emoji: '来,加点表情,让你的评论更生动!',
uploadImage: '上传你的美照,让大家一起欣赏!',
seconds: '刚刚才发的,新鲜出炉!',
minutes: '几分钟前,还热乎着呢!',
hours: '几小时前,热度还在哦!',
days: '几天前,但依旧值得一看!',
now: '哇塞,刚刚发的,快抢沙发!',
uploading: '稍等片刻,你的图片正在飞奔而来!',
login: '登录一下,解锁更多功能!',
logout: '拜拜了您嘞,下次再见!',
admin: '博主大人在此,谁敢造次!',
sticky: '置顶一下,让更多人看到你的精彩内容!',
word: '字',
wordHint: '评论字数要在0到1字之间哦!\n现在你已经写了$2个字了,加油!',
anonymous: '神秘人出没,猜猜是谁?',
level0: '潜水员,深藏不露!',
level1: '冒泡小能手,偶尔露个头!',
level2: '吐槽大师,一针见血!',
level3: '活跃分子,无处不在!',
level4: '话痨达人,说个不停!',
level5: '传说级大神,膜拜一下!',
gif: '动态表情包,让你的评论更有趣!',
gifSearchPlaceholder: '快来搜索你喜欢的表情包,让评论更生动!',
profile: '看看我的个人资料,了解一下我吧!',
approved: '审核通过,可以展示啦!',
waiting: '正在等待审核,别急哦!',
spam: '垃圾内容,走开走开!',
unsticky: '换个位置看看!',
oldest: '看看最早的评论!',
latest: '看看最新的动态!',
hottest: '看看哪条评论最火!',
reactionTitle: '快来对这篇文章发表你的看法吧,让博主知道你的想法!😜'
};
const initWaline = () => {
const waline = Waline.init(Object.assign({
el: '#waline-wrap',
serverURL: 'https://bc.ctext.top/',
pageview: false,
dark: 'html[data-theme="dark"]',
path: window.location.pathname,
turnstileKey: '0x4AAAAAAAexA2vW2PBFT3wv',
comment: false,
copyright: false,
reaction: true,
locale
}, null))
}
const loadWaline = async () => {
if (typeof Waline === 'object') initWaline()
else {
await getCSS('https://cdn.cbd.int/@waline/client@3.1.3/dist/waline.css')
await getScript('https://cdn.cbd.int/@waline/client@3.1.3/dist/waline.js')
initWaline()
}
}
if ('Waline' === 'Waline' || !true) {
if (true) anzhiyu.loadComment(document.getElementById('waline-wrap'),loadWaline)
else setTimeout(loadWaline, 0)