From 2b5dea29a69d273df2840720adae2fc930c46b83 Mon Sep 17 00:00:00 2001 From: lion187 Date: Sun, 25 Nov 2018 16:20:56 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=20=E5=8D=8F=E4=BD=9C?= =?UTF-8?q?=E5=B7=A5=E5=85=B7,=E5=92=8C=20=E5=B7=A5=E5=85=B7=E4=B8=8E?= =?UTF-8?q?=E6=80=9D=E6=83=B3=20=E4=B8=80=E8=8A=82.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: lion187 --- Chapter3_项目管理与团队协作/3.8 协作工具.md | 5 +++++ .../4.1 工具与思想.md | 22 +++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/Chapter3_项目管理与团队协作/3.8 协作工具.md b/Chapter3_项目管理与团队协作/3.8 协作工具.md index e015819..d4655dd 100644 --- a/Chapter3_项目管理与团队协作/3.8 协作工具.md +++ b/Chapter3_项目管理与团队协作/3.8 协作工具.md @@ -6,6 +6,11 @@ Git 版本管理工具提供本地和远程版本管理功能。支持分支管理和 Tag 创建等。通常来讲,一个 Tag 对应一个稳定的软件版本。 +使用 Git 前需要进行简单配置,在命令行中输入以下命令及参数设置 Git 用户名和 Email。 + + git config --global user.name "Your Name" + git config --global user.email "YourEmail@example.com" + ### 3.8.1.1 创建仓库 软件版本管理依赖于软件仓库的概念,一个软件仓库包容了要进行版本管理的源码和 Release 发布等内容。 diff --git a/Chapter4_数据结构、算法与设计模式/4.1 工具与思想.md b/Chapter4_数据结构、算法与设计模式/4.1 工具与思想.md index b0848ae..316a51f 100644 --- a/Chapter4_数据结构、算法与设计模式/4.1 工具与思想.md +++ b/Chapter4_数据结构、算法与设计模式/4.1 工具与思想.md @@ -1 +1,23 @@ +# 4.1 工具与思想 + +## 4.1.1 工具与思想 + +在之前的课程中,我们学习了计算机编程语言以及用于团队协作的软件。这些都是进行软件开发所必备的,或有助于进行软件开发的工具。有了工具,就可以制造不同的软件产品出来,就好比有了榔头、螺丝刀、加工车床等就可以制造汽车一样。 + +虽然工具是相同的,但是想法可以是不同的,因此可以设计和制造出不同的产品。同样的汽车生产线,可以生产出不同型号的汽车,这是因为设计图纸不同。在软件上,即便是需求相同,也仍然可以采用不同的思想去设计,最终体现在了软件设计方案上。软件的总体结构、各部分的实现算法、数据结构以及设计模式是软件思想的主要内容,也是软件设计方案的中的重要组成部分。 + +随着计算机和软件开发技术的发展,软件开发思想也在不断的演变,形成了一整套的设计模式、算法模式和分析模式。可以将其理解为软件开发的套路。更重要的是,这些方法,有助于分析和解决软件问题,优化计算机系统,提高代码质量和可靠性。 + +## 4.1.2 数据结构、算法与设计模式 + +计算机算法有很多内容,比如针对数据进行的排序、查找、添加、删除。当然,还可以有积分、微分、插值和拟合等算法。不同的算法有不同的应用领域,但通常,算法都与数据结构紧密结合。例如以数组为基础实现二分查找算法,但数组容量有限,如果需要动态增减数据内容并且达到类似二分查找的效果,则可以使用二叉树。 + +## 4.1.3 算法的好坏 + +我们评估一种算法的优劣,可以使用它的时间复杂度和空间复杂度来衡量。时间复杂度是指执行算法所需要的计算工作量;而空间复杂度是指执行这个算法所需要的内存空间。如果不作特殊说明,我们一般讨论的是在最坏情况下,该算法的时间复杂度和空间复杂度。 + +在电影《模仿游戏》中,图灵机必须在极其有限的时间内破解德军使用的密码,否则德军就会更换新的密码。可见人们往往是非常关注时间复杂度的。可以使用 大O 表示法来度量算法的时间成本。例如从头到尾顺序访问一个数组中全部元素算法的时间复杂度是 O(N)。如果为了求解某问题,A 算法的时间复杂度是 O(N),而 B 算法的时间复杂度是 O(1),则在求解该问题时,算法 B 要快过算法 A。 + +## 4.1.4 设计模式的好坏 + 时间复杂的与空间复杂度 \ No newline at end of file