- 博客(44)
- 收藏
- 关注
原创 Git 笔记
版本控制版本控制是一种在开发的过程中用于管理开发人员对文件,目录或者工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术。版本控制的功能有:实现跨区域多人协同开发 追踪和记载一个或者多个文件的历史记录 组织和保护你的源代码和文档 统计工作量 并行开发,提高开发效率 追踪记录整个软件的开发过程 减轻开发人员的负担,节省时间,同时降低人为错误常用的版本控制软件有:Git SVN此外还有:CVS VSS TFS visual studio o
2021-10-18 11:24:58
271
原创 第一周:欢迎来到机器学习
什么是机器学习机器学习的定义:机器学习研究和构建的是一种特殊算法(而非某一个特定的算法),能够让计算机自己在数据中学习从而进行预测。机器学习的基本思路:把现实生活中的问题抽象成数学模型,并且很清楚模型中不同参数的作用 利用数学方法对这个数学模型进行求解,从而解决现实生活中的问题 评估这个数学模型,是否真正的解决了现实生活中的问题,解决的如何?机器学习算法的类型:supervised learning 监督学习 unsupervised learning 无监督学习 othe
2021-08-31 09:54:05
125
原创 User Story 如何写
传统需求分析:时间:需求分析两个月,开发三个月 出现的问题:有些功能没有人使用,有些功能做错了/不要用,频繁变更,走向更大批量 原因:没有抓住用户/客户核心需求,优先级不正确,大批量互联网发展的现状:不确定性增大 市场变化快什么是用户故事:用户故事是简要的意向性描述,它描述系统需要为用户做的事情以及对用户的价值 迭代式开发的工具 代表了可开发的一个工作单元 帮助跟踪一个功能的生命周期 引起对话的载体/占位符为什么要写用户故事:更早的提交产品来满足需求 消除软件开发过程中
2021-08-27 05:25:13
1848
原创 什么是敏捷开发Scrum
瀑布式开发的流程如下图所示:这种开发流程存在着一个问题,就是在开发的过程中,如果市场的需求出现了变动亦或者在计划阶段没有很好的理解需求,就意味着产品可能会需要从头开始进行开发,亦或者为了增加新的功能而进行延期。而scrum的开发流程如下所示:先围绕着最小化可行产品的特性进行产品规划,然后将最小可行化产品开发出来,接着评测这个产品。这个过程将会耗费1~3周的时间,并且这个过程将会被不断的重复,直到开发出这样的一款产品。这样的每一个过程被称之为叫做 sprint,..
2021-08-26 05:10:35
591
原创 机器学习:分类
分类问题分类问题是机器学习当中的一个基本问题,通常被分为以下三类:二元分类问题:二元输出 多类分类问题:输出许多离散类标签之一。 类标签是互斥的 多标签分类问题:一个样本可以分配给多个标签二分类问题便是分类任务当中有两个类别。一个典型的例子是判断是不是垃圾邮件,判断的结果只有是垃圾邮件和不是垃圾邮件两个结果;另一个典型的例子是判断一张图片是不是猫,训练一个分类器,输入一张图片,输出结果为是猫或者不是猫。多类分类问题则表示分类任务中有多个类别。一个典型的例子是对一张水果的图片进行分类,图中的
2021-08-26 04:49:14
3002
原创 机器学习初识
什么是机器学习机器学习模型很多人会望文生义的产生误解,认为 机器学习 是机器能够像人一样学习甚至于学生的比人更好。机器学习算法与非机器学习算法(如控制交通灯的程序)的不同之处在于,它能够使自身的行为适应新的输入。这种似乎没有人为干预的适应,偶尔会给人一种机器真的是在学习的错觉。然而,在机器学习模型的背后,这种行为上的适应和人类编写的每一条机器指令一样严格。机器学习模型:机器学习算法是揭示数据中潜在关系的过程。机器学习模型(machine learning model)是机器学习算法产.
2021-08-26 04:41:45
488
原创 贪婪算法/贪心算法
什么是贪心算法贪心算法的思想在于,将一个大的问题拆解成多步的小问题,然后通过在解决每个小问题的时候选择对自身最为有利的结果,从而保证自身利益的最大化。贪心算法是五大算法中的一员,五大算法分别为:分治 动态规划 贪心 回溯 分支界定贪心算法在数据结构中的应用非常的广泛。贪心算法可以简单的描述为:大事化了,小事化了。对于一个较大的问题,通过找到与子问题的重叠,将复杂的大问题划分为简单的多个小问题,在对每个小问题进行求解的时候找出最优值来进行处理。也就是说贪心算法是一种在每一步选择中都采取在
2021-08-21 05:58:20
668
原创 数据结构与算法:链表
链表是物理存储单元上非连续的,非顺序的存储结构,链表是由一个个结点,通过指针来联系起来的,其中每个结点包含数据和指针:或者我们采用另一张更加明显的图:因为在C++语言中,当我们生成一个数组的时候,就要声明数组的长度,如此计算机便会在内存上开辟一个连续的不间断的内存空间来存储数据,因为存在着这样的一种可能,也就是数组所使用的内存空间之后的内存空间已经被使用,所以C++中一旦数组的大小明确了,就不能够再改变了。而且因为数组是存储一系列的同一类型的变量的集合,所以构成数组的每一个元素占用的内存空间
2021-08-21 05:57:36
368
原创 C++:冒泡排序
冒泡排序是计算机领域中一个非常简单的排序算法,通过比较一个数组中相邻的两个元素的大小,来完成对数组从大到小或者从小到大的排序。冒泡排序的基本原理如下所示:比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 针对所有的元素重复以上的步骤,除了最后一个。 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。假设我们有一个数组:int a[10] = {4,1,3,8,7
2021-08-20 18:31:46
1298
原创 图解算法笔记:广度优先搜索
图论假设要从双子峰前往金门大桥:第一步可以走:第二步可以走:第三步可以走:于是乎我们发现只需要三步就可以从双子峰走到了金门大桥:虽然除了这一条路线,还有其他的路线能够从双子峰达到金门大桥,但是其他的路径来的更远(至少需要四步),而这一条路线只需要三步。类似的问题被称之为叫做最短路径问题(shorterest-path problem),而解决最短路径的方法被称之为叫做广度优先搜索。广度优先搜索可以用于解决两类问题:从节点A出发,有前往节点B的路径吗? .
2021-08-20 09:55:02
1440
原创 图解算法笔记:散列表
散列函数准确地指出了数据的存储位置,原因有:散列函数总是将不同的输入映射到相同的索引 散列函数将不同的输入映射到不同的索引 散列函数知道数组有多大,之返回有效的索引通过结合使用散列函数和数组可以创建一种被称之为叫做散列表的数据结构,散列表也被称之为叫做:散列映射,映射,字典和关联数组。在Python语言中,散列表的实现为字典,可以使用dict来创建散列表。我们可以用散列表来创建一个菜单和进行查询:menu = dict()menu["Apple"] = 1menu["Waeme
2021-08-20 09:53:56
117
原创 图解算法笔记:快速排序
分而治之快速排序需要使用 分而治之(Divide and conquer, D&C)策略来将一个序列风儿较小和较大的两个子序列,然后递归的排序两个子序列。分而治之需要三个步骤:找出基线条件,这个条件需要尽可能的简单 不断的将问题分解,直到符合基线条件一个简单的例子,假设我们有一个数组:[1,2,3,4,5],而我们需要求得这个数组中的元素的和。一个简单的方法是使用循环来进行求解:def sum(arr): total = 0 for x in arr:
2021-08-19 21:32:39
110
原创 图解算法笔记:冒泡排序
冒泡排序(Bubble Sort)也是一种简单直观的排序算法,该算法需要重复地走访要排序的数列,一次比较两个元素,可以见下图:通过不断的进行比较和重复,知道不再需要进行交换,列表的排序便完成了。代码如下所示:def bubbleSort(arr): #求取列表的长度 n = len(arr) for i in range(n): for j in range(0, n-i-1): if (arr[j] > arr
2021-08-19 21:32:00
93
原创 图解算法笔记:选择排序
数组与链表当我们需要将数据存储到内存中时,我们需要请求计算机提供内存空间,而如果我们需要存储多项数据时,我们通常会采用两种方式:数组 列表使用数组则意味计算机会为我们开辟一连串的内存空间用于存储数据,假设我们知道需要存储的数据的总量是多少,我们则可以在生成数组变量的时候进行声明来让计算机开辟制定大小的内存空间,但是倘若我们并不知道需要存储的数据的总量是多少,则意味着会出现需要存储的数据多于了我们开辟的内存空间的情况,而紧邻着我们的开辟的数组的内存空间的内存空间可能出现已经被占用的情况,在这样的情
2021-08-19 21:26:47
93
原创 图解算法笔记:二分查找
二分查找是一种在有序数组中查找某一个特定元素的搜索方法,需要注意,一定得是有序数组。二分查找算法会先从数组的中间元素开始查找,如果中间元素恰好是要查找的元素,则搜索过程结束;如果不是,则比较该中间元素与要查找的元素,如果中间元素大于了要被查找的元素,则在数组中小于中间元素的部分进行查找;反之则在数组中大于中间元素的部分进行查找。首先我们可以给出数组的初始位置,结束位置和中间位置:begin = 0end = len(list) - 1mid = (begin + end) / 2Py
2021-08-19 21:25:33
192
原创 C++基础语法:STL、位运算、常用库函数
STL指的是C++的标准模板库,是一个C++软件库,大量影响了C++标准程序库,但是不是C++标准程序库的一部恩。STL包括了4个组件:算法,容器,函数,迭代。第一个常用容器是vector。向量是一个封装了动态大小数组的顺序容器。跟任意其它类型容易一样,可以放置任何类型的对象。因此,可以简单的认为向量是一个能够存放任意类型的动态数组。Vector支持随机访问,但是不支持任意位置的O(1)插入,通常在末尾进行插入。#include <iostream>#include <vect
2021-08-19 20:54:02
900
原创 C++基础语法:链表
链表是物理存储单元上非连续的,非顺序的存储结构,链表是由一个个结点,通过指针来联系起来的,其中每个结点包含数据和指针:或者我们采用另一张更加明显的图:因为在C++语言中,当我们生成一个数组的时候,就要声明数组的长度,如此计算机便会在内存上开辟一个连续的不间断的内存空间来存储数据,因为存在着这样的一种可能,也就是数组所使用的内存空间之后的内存空间已经被使用,所以C++中一旦数组的大小明确了,就不能够再改变了。而且因为数组是存储一系列的同一类型的变量的集合,所以构成数组的每一个元素占用的内.
2021-08-19 20:53:17
8318
原创 C++基础语法:类,结构体,指针和引用
C++在C语言的基础上,增加了面向对象编程,C++支持面向对象程序设计。类是C++的核心特性,定义一个类,本质上是定义一个数据类型的蓝图:可以看见一段代码如下所示:#include <iostream>using namespace std;class Person{ private: int age, height; double money; string books[100];
2021-08-19 20:52:35
685
原创 C++基础语法:函数
函数是一组一起执行一个任务的语句。一个能够正确运行的C++程序,必然含有一个函数,也就是主函数main(),此外C++也能够定义其他额外的函数:return_type function_name( parameter list ){ body of the function}在C++中,函数由一个函数头和一个函数主体组成。函数头需要包含三者:返回类型。函数的类型需要和返回值的类型一致,如果没有返回值,则为空函数,类型用void字符占位。 函数名称。函数的实际名称,由函数名和参数
2021-08-19 20:51:11
1947
原创 C++基础语法:字符串
字符与整数的关联在于ASCII码:每一个常用字符都对应一个-128 ~ 127 的数字,二者之间是可以进行相互转换的:#include <iostream>using namespace std;int main(){ char wordOne = 'a'; cout << int(wordOne) << endl; int number = 66; cout << char(number) &l
2021-08-19 20:49:10
559
原创 C++基础语法:数组
在C++语言中,数组可以存储一个固定大小的相同类型元素的顺序集合。所有的数组都是由连续的内存位置组成。最低的地址对应第一个元素,最高的地址对应最后一个元素。数组的声明形式如下所示:type arrayName [ arraySize ];type是任意类型的有效C++数据类型,而arraySize则是一个大于零的整数常量。如果要访问指定位置的某一个元素的值,可以采用:arrayName[index]数组的索引数值从0开始,而不是从1开始。对数组的初始化可以逐个进行:#i
2021-08-18 04:57:37
1113
原创 C++基础语法:循环语句
在C++语言中,循环有两大类:while循环和for循环。while循环下面有一个do-while循环。循环的逻辑如下图所示:我们可以先来写一个while循环:要求对小于10的正整数进行求和。我们可以用while循环来写出一段如下所示的代码:#include <iostream>#include <cstdio>using namespace std;int main(){ int count, num; count = 0;
2021-08-18 04:56:44
8713
原创 C++基础语法:判断语句
在现实中,我们通常会预见类似于“如果X,则Y”的情况,可以被表示为如下图所示:这个在C++语言中,可以采用if-else语句来进行实现。以考试成绩为例。如果考试成绩大于60,则及格,反之则不及格:#include <iostream>using namespace std;int main(){ int score; cin >> score; if (score >= 60){ co
2021-08-18 04:53:56
4134
2
原创 C++基础语法:变量、输入输出、表达式和顺序语句
通常来讲,学习一门语言写的第一个程序是HelloWorld://该区域为头文件区域#include <iostream> //有cin和cout两个重要的函数//我们使用了std命名空间using namespace std; //每一段代码的结果需要用;来结束int main(){ cout << "Hello World" << endl; return 0;}运行的结果为:Hello World如果不加上命名空间
2021-08-18 04:52:35
2307
原创 Python语言编程笔记:循环与迭代
While语句在上述代码中,n=5,接着使用while来进行循环,while的判断结果只有两种:真或者假,如果结果为真,则执行while循环中的语句,如果结果为假,则跳过while循环中的语句。while语句和if英语非常的近似,但是区别在于在运行while语句中的代码的时候,不会直接跳到接下来的语句,而是返回到while语句初始再次进行条件判断,来判断是否再执行while循环中的代码。所以,在while循环中,迭代变量是一个非常重要的部分,迭代变量会随着while循环中的语句的执行而不断的
2021-08-18 04:44:37
186
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人