- 博客(0)
- 资源 (9)
- 收藏
- 关注
设计数据密集型应用(2017)
转载自:http://www.java1234.com/a/javabook/database/2018/1024/12223.html
内容简介 · · · · · ·
书中包含以下内容:
深入分析你已经在使用的系统,并学习如何更高效地使用和运维这些系统
通过识别不同工具的优缺点,作出更明智的决策
了解一致性、可伸缩性、容错性和复杂度之间的权衡
理解分布式系统研究,这些研究是现代数据库构建的基石
走到一些主流在线服务的幕后,学习它们的架构
作者简介 · · · · · ·
Martin Kleppmann,是英国剑桥大学的一名分布式系统研究员。在此之前他曾是软件工程师和企业家,在 Linkedin 和 Rapportive 工作过,从事大规模数据基础设施相关的工作。Martin 经常在大会做演讲,写博客,也是开源贡献者。
2019-04-22
系统架构设计师教程(第4版)
转载自 http://www.java1234.com/a/javabook/javaweb/2018/1019/12176.html
《系统架构设计师教程(第4版)》由希赛教育软考学院组织编写,用以作为计算机技术与软件专业技术资格(水平)考试中的系统架构设计师级别的考试辅导指定教材。内容涵盖了最新的系统架构设计师考试大纲的所有知识点,对系统架构设计师所必须掌握的基础理论知识做了详细的介绍,重在培养系统架构设计师所必须具备的专业技能和方法。
《系统架构设计师教程(第4版)》内容既是对系统架构设计师考试的总体纲领性的要求,也是系统架构设计师职业生涯的知识与技能体系。准备参加考试的人员可通过阅读《系统架构设计师教程(第4版)》掌握考试大纲规定的知识,把握考试重点和难点。
《系统架构设计师教程(第4版)》可作为系统架构设计师和系统分析师的工作手册,也可作为软件设计师、数据库系统工程师和网络工程师进一步发展的学习用书,还可作为计算机专业教师的教学参考书。 [1]
目录编辑
第1章 计算机组成与体系结构 1
1.1 计算机系统组成 1
1.1.1 计算机硬件的组成 1
1.1.2 计算机系统结构的分类 2
1.1.3 复杂指令集系统与精简指令集系统 3
1.1.4 总线 5
1.2 存储器系统 5
1.2.1 主存储器 6
1.2.2 辅助存储器 7
1.2.3 Cache存储器 8
1.3 流水线 13
1.3.1 流水线周期 13
1.3.2 计算流水线执行时间 13
1.3.3 流水线的吞吐率 14
1.3.4 流水线的加速比 14
第2章 操作系统 15
2.1 操作系统的类型与结构 15
2.1.1 操作系统的定义 15
2.1.2 操作系统分类 16
2.2 操作系统基本原理 16
2.2.1 进程管理 16
2.2.2 存储管理 23
2.2.3 设备管理 27
2.2.4 文件管理 28
2.2.5 作业管理 32
第3章 数据库系统 34
3.1 数据库管理系统的类型 34
3.2 数据库模式与范式 34
3.2.1 数据库的结构与模式 34
3.2.2 数据模型 37
3.2.3 关系代数 37
3.2.4 数据的规范化 40
3.2.5 反规范化 42
3.3 数据库设计 43
3.3.1 数据库设计的方法 43
3.3.2 数据库设计的基本步骤 45
3.3.3 需求分析 46
3.3.4 概念结构设计 47
3.3.5 逻辑结构设计 51
3.3.6 物理结构设计 56
3.4 事务管理 56
3.4.1 并发控制 57
3.4.2 故障与恢复 58
3.5 备份与恢复 60
3.6 分布式数据库系统 61
3.6.1 分布式数据库的概念 61
3.6.2 分布式数据库的架构 64
3.7 数据仓库 68
3.7.1 数据仓库的概念 69
3.7.2 数据仓库的结构 70
3.7.3 数据仓库的实现方法 72
3.8 数据挖掘 74
3.8.1 数据挖掘的概念 74
3.8.2 数据挖掘的功能 76
3.8.3 数据挖掘常用技术 76
3.8.4 数据挖掘的流程 78
3.9 NOSQL 79
3.10 大数据 81
第4章 计算机网络 83
4.1 网络架构与协议 83
4.1.1 网络互联模型 84
4.1.2 常见的网络协议 85
4.1.3 IPv6 87
4.2 局域网与广域网 89
4.2.1 局域网基础知识 89
4.2.2 无线局域网 91
4.2.3 广域网技术 93
4.2.4 网络接入技术 93
4.3 网络互连与常用设备 95
4.4 网络工程 97
4.4.1 网络规划 97
4.4.2 网络设计 99
4.4.3 网络实施 101
4.5 网络存储技术 102
4.6 综合布线 104
第5章 系统性能评价 106
5.1 性能指标 106
5.1.1 计算机 107
5.1.2 网络 109
5.1.3 操作系统 110
5.1.4 数据库管理系统 110
5.1.5 Web服务器 111
5.2 性能计算 111
5.3 性能设计 112
5.3.1 阿姆达尔解决方案 112
5.3.2 负载均衡 113
5.4 性能评估 116
5.4.1 基准测试程序 116
5.4.2 Web服务器的性能评估 117
5.4.3 系统监视 118
第6章 开发方法 120
6.1 软件生命周期 120
6.2 软件开发模型 121
6.2.1 瀑布模型 121
6.2.2 演化模型 124
6.2.3 螺旋模型 124
6.2.4 增量模型 125
6.2.5 构件组装模型 125
6.3 统一过程 126
6.4 敏捷方法 129
6.4.1 极限编程 129
6.4.2 特征驱动开发 133
6.4.3 Scrum 135
6.4.4 水晶方法 138
6.4.5 其他敏捷方法 139
6.5 软件重用 140
6.5.1 软件重用 140
6.5.2 构件技术 140
6.6 基于架构的软件设计 141
6.6.1 ABSD方法与生命周期 141
6.6.2 基于架构的软件开发模型 143
6.7 形式化方法 148
第7章 系统计划 150
7.1 项目的提出与选择 150
7.1.1 项目的立项目标和动机 150
7.1.2 项目的选择和确定 151
7.1.3 项目提出和选择的结果 154
7.2 可行性研究与效益分析 155
7.2.1 可行性研究的内容 156
7.2.2 成本效益分析 157
7.2.3 可行性分析报告 158
7.3 方案的制订和改进 159
7.4 新旧系统的分析和比较 161
7.4.1 遗留系统的评价方法 162
7.4.2 遗留系统的演化策略 165
第8章 系统分析与设计方法 167
8.1 定义问题与归结模型 167
8.1.1 问题分析 167
8.1.2 问题定义 170
8.2 需求分析与软件设计 172
8.2.1 需求分析的任务与过程 172
8.2.2 如何进行系统设计 174
8.2.3 软件设计的任务与活动 175
8.3 结构化分析与设计 176
8.3.1 结构化分析 176
8.3.2 结构化设计 180
8.3.3 模块设计 182
8.4 面向对象的分析与设计 184
8.4.1 面向对象的基本概念 184
8.4.2 面向对象分析 186
8.4.3 统一建模语言 188
8.5 用户界面设计 199
8.5.1 用户界面设计的原则 199
8.5.2 用户界面设计过程 200
8.6 工作流设计 200
8.6.1 工作流设计概述 201
8.6.2 工作流管理系统 202
8.7 简单分布式计算机应用系统的设计 203
8.8 系统运行环境的集成与设计 204
8.9 系统过渡计划 206
第9章 软件架构设计 208
9.1 软件架构概述 208
9.1.1 软件架构的定义 209
9.1.2 软件架构的重要性 210
9.1.3 架构的模型 211
9.2 架构需求与软件质量属性 213
9.2.1 软件质量属性 213
9.2.2 6个质量属性及实现 214
9.3 软件架构风格 221
9.3.1 软件架构风格分类 222
9.3.2 数据流风格 222
9.3.3 调用/返回风格 224
9.3.4 独立构件风格 226
9.3.5 虚拟机风格 227
9.3.6 仓库风格 228
9.4 层次系统架构风格 229
9.4.1 二层及三层C/S架构风格 229
9.4.2 B/S架构风格 230
9.4.3 MVC架构风格 231
9.4.4 MVP架构风格 233
9.5 面向服务的架构 234
9.5.1 SOA概述 234
9.5.2 SOA的关键技术 236
9.5.3 SOA的实现方法 238
9.5.4 微服务 241
9.6 架构设计 244
9.7 软件架构文档化 246
9.8 软件架构评估 250
9.8.1 软件架构评估的方法 250
9.8.2 架构的权衡分析法 250
9.8.3 成本效益分析法 252
9.9 构件及其复用 253
9.9.1 商用构件标准规范 253
9.9.2 应用系统簇与构件系统 255
9.9.3 基于复用开发的组织结构 255
9.10 产品线及系统演化 256
9.10.1 复用与产品线 256
9.10.2 基于产品线的架构 257
9.10.3 产品线的开发模型 258
9.10.4 特定领域软件架构 258
9.10.5 架构及系统演化 259
9.11 软件架构视图 260
9.11.1 软件视图的分类 260
9.11.2 模块视图类型及其风格 262
9.11.3 C&C视图类型及其风格 263
9.11.4 分配视图类型及其风格 265
9.11.5 各视图类型间的映射关系 267
第10章 设计模式 268
10.1 设计模式概述 268
10.1.1 设计模式的概念 268
10.1.2 设计模式的组成 269
10.1.3 GoF设计模式 269
10.1.4 其他设计模式 271
10.1.5 设计模式与软件架构 272
10.1.6 设计模式分类 272
10.2 设计模式及实现 273
10.2.1 Abstract Factory模式 273
10.2.2 Singleton模式 276
10.2.3 Decorator模式 277
10.2.4 Facade/Session Facade模式 279
10.2.5 Mediator模式 281
10.2.6 Observer模式 282
10.2.7 Intercepting Filter模式 284
10.3 设计模式总结 286
第11章 测试评审方法 288
11.1 测试方法 288
11.1.1 软件测试阶段 288
11.1.2 白盒测试和黑盒测试 290
11.1.3 缺陷的分类和级别 292
11.1.4 调试 293
11.2 评审方法 294
11.3 验证与确认 295
11.4 测试自动化 297
11.5 面向对象的测试 297
第12章 嵌入式系统设计 300
12.1 嵌入式系统概论 300
12.2 嵌入式系统的组成 301
12.2.1 硬件架构 301
12.2.2 软件架构 306
12.3 嵌入式开发平台与调试环境 307
12.3.1 嵌入式系统软件开发平台 307
12.3.2 嵌入式开发调试 309
12.4 嵌入式网络系统 312
12.4.1 现场总线网 312
12.4.2 家庭信息网 313
11.4.3 无线数据通信网 313
12.4.4 嵌入式Internet 314
12.5 嵌入式数据库管理系统 315
12.5.1 使用环境的特点 315
12.5.2 系统组成与关键技术 316
12.6 实时系统与嵌入式操作系统 319
12.6.1 嵌入式系统的实时概念 319
12.6.2 嵌入式操作系统概述 320
12.6.3 实时嵌入式操作系统 321
12.6.4 主流嵌入式操作系统介绍 324
12.7 嵌入式系统开发设计 325
12.7.1 嵌入式系统设计概述 325
12.7.2 开发模型与设计流程 327
12.7.3 嵌入式系统设计的核心技术 329
12.7.4 嵌入式开发设计环境 331
12.7.5 嵌入式软件设计模型 332
12.7.6 需求分析 335
12.7.7 系统设计 337
12.7.8 系统集成与测试 342
第13章 开发管理 344
13.1 项目的范围、时间与成本 344
13.1.1 项目范围管理 345
13.1.2 项目成本管理 345
13.1.3 项目时间管理 346
13.2 配置管理与文档管理 347
13.2.1 软件配置管理的概念 347
13.2.2 软件配置管理的解决方案 348
13.2.3 软件文档管理 351
13.3 软件需求管理 355
13.3.1 需求变更 355
13.3.2 需求跟踪 356
13.4 软件开发的质量与风险 356
13.4.1 软件质量管理 356
13.4.2 项目风险管理 359
13.5 人力资源管理 363
13.6 软件的运行与评价 368
13.7 软件过程改进 368
第14章 信息系统基础知识 371
14.1 信息系统概述 371
14.1.1 信息系统的组成 371
14.1.2 信息系统的生命周期 373
14.1.3 信息系统建设的原则 375
14.1.4 信息系统开发方法 376
14.2 信息系统工程 378
14.2.1 信息系统工程的概念 378
14.2.2 信息系统工程的内容 380
14.2.3 信息系统工程的总体规划 383
14.2.4 总体规划的方法论 389
14.3 政府信息化与电子政务 394
14.3.1 我国政府信息化的历程和策略 394
14.3.2 电子政务的内容 398
14.3.3 电子政务建设的过程模式和技术模式 399
14.4 企业信息化与电子商务 403
14.4.1 企业信息化概述 403
14.4.2 企业资源规划 406
14.4.3 客户关系管理 410
14.4.4 产品数据管理 413
14.4.5 企业门户 416
14.4.6 企业应用集成 418
14.4.7 供应链管理 421
14.4.8 电子商务概述 423
14.6 知识管理与商业智能 425
14.6.1 知识管理 425
14.6.2 商业智能 427
14.7 业务流程重组 427
第15章 基于中间件的开发 431
15.1 中间件技术 431
15.1.1 中间件的概念 432
15.1.2 中间件的分类 433
15.1.3 中间件产品介绍 434
15.2 应用服务器技术 435
15.2.1 应用服务器的概念 436
15.2.2 主要的应用服务器 438
15.3 J2EE 439
15.3.1 表示层 440
15.3.2 应用服务层 441
15.4 .NET 443
15.4.1 .NET平台 444
15.4.2 .NET框架 445
15.5 企业应用集成 450
15.6 轻量级架构和重量级架构 453
15.6.1 Struts框架 453
15.6.2 Spring框架 454
15.6.3 Hibernate框架 455
15.6.4 基于Struts、Spring和Hibernate的轻量级架构 456
15.6.5 轻量级架构和重量级架构的探讨 457
第16章 安全性和保密性设计 459
16.1 加密和解密 459
16.1.1 对称密钥加密算法 460
16.1.2 不对称密钥加密算法 461
16.2 数字签名与数字水印 463
16.2.1 数字签名 463
16.2.2 数字信封 465
16.3 数字证书与密钥管理 466
16.3.1 密钥分配中心 466
16.3.2 数字证书和公开密钥基础设施 467
16.4 安全协议 470
16.4.1 IPSec协议简述 471
16.4.2 SSL协议 474
16.4.3 PGP协议 477
16.5 计算机病毒与防治 480
16.5.1 计算机病毒概述 480
16.5.2 网络环境下的病毒发展新趋势 482
16.5.3 计算机病毒的检测与清除 483
16.5.4 计算机病毒的预防 485
16.6 身份认证与访问控制 486
16.6.1 身份认证技术 486
16.6.2 访问控制技术 492
16.7 网络安全体系 494
16.7.1 OSI安全架构 494
16.7.2 VPN在网络安全中的应用 496
16.8 系统的安全性设计 499
16.8.1 物理安全问题与设计 499
16.8.2 防火墙及其在系统安全中的应用 499
16.8.3 入侵检测系统 501
16.9 安全性规章 503
16.9.1 安全管理制度 503
16.9.2 计算机犯罪与相关法规 505
第17章 系统的可靠性分析与设计 508
17.1 可靠性概述 508
17.2 系统故障模型 509
17.2.1 故障的来源以及表现 509
17.2.2 几种常用的故障模型 510
17.3 系统配置方法 510
17.3.1 单机容错技术 511
17.3.2 双机热备份技术 511
17.3.3 服务器集群技术 512
17.4 系统可靠性模型 513
17.4.1 时间模型 513
17.4.2 故障植入模型 513
17.4.3 数据模型 514
17.5 系统的可靠性分析和可靠度计算 515
17.5.1 组合模型 515
17.5.2 马尔柯夫模型 517
17.6 提高系统可靠性的措施 519
17.6.1 硬件冗余 519
17.6.2 信息冗余 522
17.7 备份与恢复 523
第18章 软件的知识产权保护 525
18.1 著作权法及实施条例 525
18.1.1 著作权法客体 525
18.1.2 著作权法的主体 526
18.1.3 著作权 527
18.2 计算机软件保护条例 528
18.3 商标法及实施条例 529
18.4 专利法及实施细则 530
18.5 反不正当竞争法 532
第19章 标准化知识 534
19.1 标准化概论 534
19.2 标准分级与标准类型 534
19.2.1 标准分级 535
19.2.2 强制性标准与推荐性标准 536
第20章 应用数学 538
20.1 运筹方法 538
20.1.1 网络计划技术 538
20.1.2 线性规划 542
20.1.3 决策论 545
20.1.4 对策论 548
20.2 数学建模 549
第21章 虚拟化、云计算与物联网 551
21.1 虚拟化 551
21.1.1 虚拟化技术的分类 551
21.1.2 虚拟化的模式 553
21.2 云计算 554
21.2.1 云计算的特点 555
21.2.2 云计算的类型 556
21.2.3 云计算的应用 556
21.3 物联网 557
21.3.1 物联网的层次结构 558
21.3.2 物联网的相关领域与技术 559
21.3.3 物联网的应用 562 [1]
2019-04-21
Java性能权威指南
转载自:http://www.java1234.com/a/javabook/javabase/2017/0313/7732.html
电子版仅供预览,下载后24小时内务必删除,支持正版,喜欢的请购买正版书籍:
http://e.dangdang.com/products/1901077314.html
资料简介:
本书对Java 7和Java 8中影响性能的因素展了全面深的介绍,讲解传统上影响应用性能的JVM特征,包括即时编译器、垃圾收集、语言特征等。内容包括:用G1垃圾收集器应用的吞吐量;使用Java飞行记录器查看性能细节,而不必借助专业的分析工具;堆内存与原生内存实践;线程与同步的性能,以及数据库性能实践等。 本书对Java 7和Java 8中影响性能的因素展了全面深的介绍,讲解传统上影响应用性能的JVM特征,包括即时编译器、垃圾收集、语言特征等。内容包括:用G1垃圾收集器应用的吞吐量;使用Java飞行记录器查看性能细节,而不必借助专业的分析工具;堆内存与原生内存实践;线程与同步的性能,以及数据库性能实践等。
资料目录:
Media, Inc. 介绍
业界评论
推荐序
前言
第1章 导论
1.1 概述
1.2 平台版本约定
JVM调优标志
1.3 全面的性能调优
1.3.1 编写更好的算法
1.3.2 编写更少的代码
1.3.3 老调重弹的过早优化
1.3.4 其他:数据库很可能就是瓶颈
1.3.5 常见的优化
1.4 小结
第2章 性能测试方法
2.1 原则1:测试真实应用
2.1.1 微基准测试
2.1.2 宏基准测试
2.1.3 介基准测试
2.1.4 代码示例
2.2 原则2:理解批处理流逝时间、吞吐量和响应时间
2.2.1 批处理流逝时间
2.2.2 吞吐量测试
2.2.3 响应时间测试
2.3 原则3:用统计方法应对性能的变化
2.4 原则4:尽早频繁测试
2.5 小结
第3章 Java 性能调优工具箱
3.1 操作系统的工具和分析
3.1.1 CPU使用率
3.1.2 CPU运行队列
3.1.3 磁盘使用率
3.1.4 网络使用率
3.2 Java监控工具
3.2.1 基本的VM信息
3.2.2 线程信息
3.2.3 类信息
3.2.4 实时GC分析
3.2.5 事后堆转储
3.3 性能分析工具
3.3.1 采样分析器
3.3.2 探查分析器
3.3.3 阻塞方法和线程时间线
3.3.4 本地分析器
3.4 Java任务控制
3.4.1 Java飞行记录器
3.4.2 开启JFR
3.4.3 选择JFR事件
3.5 小结
第4章 JIT 编译器
4.1 JIT编译器:概览
热点编译
4.2 调优入门:选择编译器类型(Client、Server或二者同用)
4.2.1 优化启动
4.2.2 优化批处理
4.2.3 优化长时间运行的应用
4.3 Java和JIT编译器版本
4.4 编译器中级调优
4.4.1 调优代码缓存
4.4.2 编译阈值
4.4.3 检测编译过程
4.5 高级编译器调优
4.5.1 编译线程
4.5.2 内联
4.5.3 逃逸分析
4.6 逆优化
4.6.1 代码被丢弃
4.6.2 逆优化僵尸代码
4.7 分层编译级别
4.8 小结
第5章 垃圾收集入门
5.1 垃圾收集概述
5.1.1 分代垃圾收集器
5.1.2 GC算法
5.1.3 选择GC算法
5.2 GC调优基础
5.2.1 调整堆的大小
5.2.2 代空间的调整
5.2.3 永久代和元空间的调整
5.2.4 控制并发
5.2.5 自适应调整
5.3 垃圾回收工具
5.4 小结
第6章 垃圾收集算法
6.1 理解Throughput收集器
堆大小的自适应调整和静态调整
6.2 理解CMS收集器
6.2.1 针对并发模式失效的调优
6.2.2 CMS收集器的永久代调优
6.2.3 增量式CMS垃圾收集
6.3 理解G1垃圾收集器
G1垃圾收集器调优
6.4 高级调优
6.4.1 晋升及Survivor空间
6.4.2 分配大对象
6.4.3 AggressiveHeap标志
6.4.4 全盘掌控堆空间的大小
6.5 小结
第7章 堆内存最佳实践
7.1 堆分析
7.1.1 堆直方图
7.1.2 堆转储
7.1.3 内存溢出错误
7.2 减少内存使用
7.2.1 减少对象大小
7.2.2 延迟初始化
7.2.3 不可变对象和标准化对象
7.2.4 字符串的保留
7.3 对象生命周期管理
7.3.1 对象重用
7.3.2 弱引用、软引用与其他引用
7.4 小结
第8章 原生内存最佳实践
8.1 内存占用
8.1.1 测量内存占用
8.1.2 内存占用最小化
8.1.3 原生NIO缓冲区
8.1.4 原生内存跟踪
8.2 针对不同操作系统优化JVM
8.2.1 大页
8.2.2 压缩的oop
8.3 小结
第9章 线程与同步的性能
9.1 线程池与ThreadPoolExecutor
9.1.1 设置最大线程数
9.1.2 设置最小线程数
9.1.3 线程池任务大小
9.1.4 设置ThreadPoolExecutor的大小
9.2 ForkJoinPool
自动并行化
9.3 线程同步
9.3.1 同步的代价
9.3.2 避免同步
9.3.3 伪共享
9.4 JVM线程调优
9.4.1 调节线程栈大小
9.4.2 偏向锁
9.4.3 自旋锁
9.4.4 线程优先级
9.5 监控线程与锁
9.5.1 查看线程
9.5.2 查看阻塞线程
9.6 小结
第10章 Java EE 性能调优
10.1 Web容器的基本性能
HTTP会话状态
10.2 线程池
10.3 EJB会话Bean
10.3.1 调优EJB对象池
10.3.2 调优EJB缓存
10.3.3 本地和远程实例
10.4 XML和JSON处理
10.4.1 数据大小
10.4.2 解析和编组概述
10.4.3 选择解析器
10.4.4 XML验证
10.4.5 文档模型
10.4.6 Java对象模型
10.5 对象序列化
10.5.1 transient字段
10.5.2 覆盖默认的序列化
10.5.3 压缩序列化数据
10.5.4 追踪对象复制
10.6 Java EE网络API
调整传输数据的大小
10.7 小结
第11章 数据库性能的最佳实践
11.1 JDBC
11.1.1 JDBC驱动程序
11.1.2 预处理语句和语句池
11.1.3 JDBC连接池
11.1.4 事务
11.1.5 结果集的处理
11.2 JPA
11.2.1 事务处理
11.2.2 对JPA的写性能进行优化
11.2.3 对JPA的读性能进行优化
11.2.4 JPA缓存
11.2.5 JPA的只读实体
11.3 小结
第12章 Java SE API 技巧
12.1 缓冲式I/O
12.2 类加载
12.3 随机数
12.4 Java原生接口
12.5 异常
12.6 字符串的性能
12.7 日志
12.8 Java集合类API
12.8.1 同步还是非同步
12.8.2 设定集合的大小
12.8.3 集合与内存使用效率
12.9 AggressiveOpts标志
12.9.1 替代实现
12.9.2 其他标志
12.10 Lambda表达式和匿名类
Lambda表达式与匿名类加载
12.11 流和过滤器的性能
延迟遍历(Lazy Traversal)
12.12 小结
附录 A 性能调优标志摘要
2019-04-21
Java 8函数式编程
我们最常用的面向对象编程(Java)属于命令式编程(Imperative Programming)这种编程范式。常见的编程范式还有逻辑式编程(Logic Programming),函数式编程(Functional Programming)。
函数式编程作为一种编程范式,在科学领域,是一种编写计算机程序数据结构和元素的方式,它把计算过程当做是数学函数的求值,而避免更改状态和可变数据。
函数式编程并非近几年的新技术或新思维,距离它诞生已有大概50多年的时间了。它一直不是主流的编程思维,但在众多的所谓顶级编程高手的科学工作者间,函数式编程是十分盛行的。
什么是函数式编程?简单的回答:一切都是数学函数。函数式编程语言里也可以有对象,但通常这些对象都是恒定不变的 —— 要么是函数参数,要什么是函数返回值。函数式编程语言里没有 for/next 循环,因为这些逻辑意味着有状态的改变。相替代的是,这种循环逻辑在函数式编程语言里是通过递归、把函数当成参数传递的方式实现的。
2019-04-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人