敏捷开发之Scrum框架
敏捷开发Scrum开发模式
Scrum与传统瀑布模式开发的区别
Plan
瀑布模式开发通常要花几个月时间来规划产品
Build
再花几个月时间研发产品
Test & Review
接着进行产品的测试与评审
Deploy
最后发布产品
瀑布模式的重点在于要求每个活动的结果都必须经过验证,并且只有经过验证之后才能作为后续开发的基础,这使得瀑布模型特别重视模型与文档,因为这是在可执行代码产生之前唯一能够用来验证的东西,所以瀑布模型被看做是“文档驱动”的,即按照文档的划分、产生和验证来规划、组织和控制开发活动。
如果市场需求或技术环境发生了变化,那么此时研发出的产品很可能无法满足市场需求,瀑布模式的开发在遇到这种变化时会出现很多问题。
首先,产品规划必须早于后续工作之前完成,在绝大多数案例中,规划环节结束时,并没有完全理解项目,但研发工作已经完成了。通常情况下,整个项目必须送回规划阶段,然后从头再来,否则研发人员就会因为不明白产品规划而受到批评。这种情况会反复出现,比如研发完成后,进行产品测试,发现问题就要重新开发,有时甚至需要重新规划产品。
同理, ...
First/Follow/Firstvt/Lastvt集合
First/Follow/Firstvt/Lastvt 集合
设文法 G
G=(VT,VN,S,P)VN为非空有限的终结符号集VT为非空有限的终结符号集S为文法的开始符号或识别符号,代表语言最终要得到的语法范畴P为产生式规则G = (V_T,V_N,S,P) \\
V_N为非空有限的终结符号集 \\
V_T为非空有限的终结符号集 \\
S为文法的开始符号或识别符号,代表语言最终要得到的语法范畴 \\
P为产生式规则 \\
G=(VT,VN,S,P)VN为非空有限的终结符号集VT为非空有限的终结符号集S为文法的开始符号或识别符号,代表语言最终要得到的语法范畴P为产生式规则
2 型文法(上下文无关文法)
设文法 G,对 P 中的每个产生式限制形如
A→αA \to \alpha
A→α
其中,A∈VN,α∈(VT∪VN)∗A \in V_N, \alpha \in (V_T \cup V_N)^*A∈VN,α∈(VT∪VN)∗则称文法 G 为 2 型文法。
First 集合
设 G 为上下文无关文法,则
FIRST(A)={α∣A⇒α...,α∈VT}FIRST(A) = ...
MyBatis的基本使用
MyBatis的基本使用情况的一次记录
添加依赖
Maven 中添加如下依赖
123456789101112131415<dependencies> <!-- MyBatis --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.7</version> </dependency> <!-- PostgreSQL数据库驱动 --> <dependency> <groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId> <version>42.2.24</ve ...
第十二届蓝桥杯C-C++-B组省赛-第一场-试题C-直线求解
第十二届蓝桥杯C-C+±B组省赛-第一场-试题C-直线求解
首先定义表示一个顶点的结构体
1234567891011struct Point { int x, y; Point(int x, int y) : x(x), y(y) { } //向量减法 Point operator-(Point &point) const { return {x - point.x, y - point.y}; }};
根据两点确定一条直线,我们可以写一个表示直线的类,使用直线的一般式Ax+By+C=0,表示任意的一条直线,其中数据成员有A,B,C三个系数,为了数据精度以及便于判断相等,尽量避免使用浮点数运算。
那么,已知两个整数坐标表示的点P1(x1,y1),P2(x2,y2)P_1(x_1,y_1),P_2(x_2,y_2)P1(x1,y1),P2(x2,y2)我们可通过两点式按如下数学推导,计算出直线方程。
根据两点式
\begin{equati ...