当前位置: 首页 > news >正文

软件项目进度安排与跟踪:关键路径的计算

在一个软件项目中,管理人员需要按时了解项目进度,制定项目计划,同时需要及时发现所遇到的问题,然后和团队成员制定解决方案,确保整个计划可以顺利的进行,因此项目进度安排与跟踪是项目管理中的一个重要环节。

一、项目进度安排的定义及原则

1、进度安排的定义


项目进度安排,即通过将工作量分配给特定的软件工程任务,和将所估算的工作量分布于已经计划好的项目持续时间中。

2、进度安排的基本原则


(1)划分 —— 项目被划分为若干个可管理的活动和任务

(2)相互依赖 —— 活动和任务之间的关系必须被确定为:顺序、并发、后续、独立进行;

(3)时间分配 —— 为每个任务分配工作单位(即开始和结束时间);

(4)工作量确认 —— 确保在任意时段分配到任务的人员数量不会超过项目组的人员数量;(比如:一个项目组此次预估需要有12人分配到任务才能完成此项工作,但原定人员数量为10人,那么12>10,这项任务的工作量必然超标了,所以要确保不能超过);

(5)定义责任 —— 每个被调度的任务都应该指定负责人

(6)定义结果 —— 每个被调度的任务都要有一个定义好的输出结果

(7)定义里程碑 —— 每个任务或任务组都与一个项目里程碑相关联;

二、通信开销

1、通信开销的定义


当几个人共同承担软件开发任务时,人与人之间必须通过交流来解决各自承担任务之间的接口问题,即所谓通信问题。通信需花费时间和代价,会引起软件错误增加,降低软件生产率。

2、通信路径计算


如果一个软件开发小组有 n 个人,每两人之间都需要通信,则总的通信路径有 条。

如想对通信路径有进一步了解,可到项目管理中的4P文章中的项目小组结构进行查看

3、案例分析


Q1:设一个人单独开发软件,生产率是5000行/人年。若 4 个人组成一个小组共同开发这个软件,则需要 6条通信路径。若在每条通信路径上耗费的工作量是 250 行/人年。则小组中每个人的软件生产率降低为多少?

A1:小组中每个人的软件生产率降低为 5000 - ×250 = 5000 - 375 = 4625 行/人年,所以项目组的生产率为18500。

Q2:如在上例中,到了开发后期再加入两名工程师,生产率为840行/人年,问此时项目组的生产率为?

A2:6个人所产生的的通信路径为 = 15条;所以项目组的生产率为5000 × 4 + 840 × 2 - 15 × 250 = 17930。

从上述分析可知:
一个软件任务由一个人单独开发,生产率最高;而对于一个稍大型的软件项目,一个人单独开发,时间又太长;因此软件开发小组是必要的。
但是,开发小组不宜太大,成员之间要避免过多的通信路径。
在开发进程中,切忌中途加人,避免不必要的的生产率损失。

三、工作量分配

1、40-20-40规则


1)在整个软件开发过程中,编码工作量仅占 20%,编码前工作量占40%,编码后工作量占 40%

2)40-20-40 规则只应用来作为一个指南,实际的工作量分配比例必须按照各项目的特点来决定。

2、工作量分配图例


用一张图来了解关于软件各阶段的工作量分配比例。

3、工作量分布推荐


在实际的软件开发中,一种比较推荐的工作量分布为:

  • 计划阶段planning -> 2-3% ;

  • 需求分析阶段requirements analysis -> 10-25 % ;

  • 设计阶段design -> 20-25 %;

  • 编码阶段coding -> 15-20 % ;

  • 测试和调试阶段testing and debugging -> 30-40 % 。

四、项目进度安排方法

1、关键路径方法(CPM,Critical Path Method)


(1)定义

在关键路径上的活动才是按时完成任务的关键。

(2)关键路径的相关表达

  • LS:Latest start time 最晚开始时间;

  • ES:Earliest start time 最早开始时间;

  • FT:Float Time 浮动时间;

  • 关键路径的判断:计算哪条路径最长,即为关键路径;

  • 关键路径上的节点对应的浮动时间为FT = 0,且在每个项目中,关键路径不止一条;

  • 如果关键路径上的活动开始时间推迟,将会直接影响工期;

  • 最晚开始时间 - 最早开始时间 = 浮动时间。

(3)案例分析:盖房子

表1 盖一所房子的重要阶段

阶段

完成事项

1.1

完成调查

1.2

签发许可证

1.3

完成挖掘

1.4

库存材料

2.1

施工地基

2.2

外墙完成

2.3

外部管道完成

2.4

外部电力工作完成

2.5

外部壁板完成

2.6

外部涂装完成

2.7

安装门和一些固定设施

2.8

屋顶完成

3.1

内部管道完成

3.2

内部电力工作完成

3.3

墙板就位

3.4

内部涂装完成

3.5

铺设地板

3.6

安装门和一些固定设施

表2 盖房子相关活动的时间估计

具体活动

估计时间(天)

Step1: 准备工作

完成调查

3

签发许可证

15

完成挖掘

10

库存材料

10

Step2: 构建外部

施工地基

15

外墙完成

20

外部管道完成

10

外部电力工作完成

10

外部壁板完成

8

外部涂装完成

5

安装门和一些固定设施

6

屋顶完成

9

Step3: 构建内部

内部管道完成

12

内部电力工作完成

15

墙板就位

9

内部涂装完成

18

铺设地板

11

安装门和一些固定设施

7

表3 任务网络图

:某项目的活动网络图如表3所示,每项活动所需的天数如路径上数字所示。(1)请给出计算过程确定项目的关键路径和工期。(2)设定活动1.1和1.2的最早开始时间均为第1天,给出所有活动的最早开始时间ES、最迟开始时间LS和浮动时间FT。

答案解析:
(1)从图中可以看出,该项目有8条路径可以走到终点,分别为:
①start → 1.1(3) → 1.3(10) →1.4(10) → 2.1(15) → 2.2(20) → 2.3(10) → 2.4(10) → 2.5(8) → 2.6(5) → 2.7(6) → finish;
②start → 1.1(3) → 1.3(10) →1.4(10) → 2.1(15) → 2.2(20) → 2.3(10) → 2.4(10) → 2.5(8) → 2.6(5) → 2.8(9) → finish;
③start → 1.1(3) → 1.3(10) →1.4(10) → 2.1(15) → 2.2(20) → 3.1(12) → 3.2(15) → 3.3(9) → 3.4(18) → finish;
④start → 1.1(3) → 1.3(10) →1.4(10) → 2.1(15) → 2.2(20) → 3.1(12) → 3.2(15) → 3.3(9) → 3.5(11) → 3.6(7) → finish;
⑤start → 1.2(15) → 1.3(10) →1.4(10) → 2.1(15) → 2.2(20) → 2.3(10) → 2.4(10) → 2.5(8) → 2.6(5) → 2.7(6) → finish;
⑥start → 1.2(15) → 1.3(10) →1.4(10) → 2.1(15) → 2.2(20) → 2.3(10) → 2.4(10) → 2.5(8) → 2.6(5) → 2.8(9) → finish;
⑦start → 1.2(15) → 1.3(10) →1.4(10) → 2.1(15) → 2.2(20) → 3.1(12) → 3.2(15) → 3.3(9) → 3.4(18) → finish;
⑧start → 1.2(15) → 1.3(10) →1.4(10) → 2.1(15) → 2.2(20) → 3.1(12) → 3.2(15) → 3.3(9) → 3.5(11) → 3.6(7) → finish。
8条路径如下图所示:

可以计算出,每条路径的工期分别为:
①3+10+10+15+20+10+10+8+5+6=97天;
②3+10+10+15+20+10+10+8+5+9=100天;
③3+10+10+15+20+12+15+9+18=112天;
④3+10+10+15+20+12+15+9+11+7=112天;
⑤15+10+10+15+20+10+10+8+5+6=109天;
⑥15+10+10+15+20+10+10+8+5+9=112天;
⑦15+10+10+15+20+12+15+9+18=124天;
⑧15+10+10+15+20+12+15+9+11+7=124天。
综上所述,项目的关键路径有两条,分别为⑦和⑧,即1.2 → 1.3 →1.4 → 2.1 → 2.2 → 3.1 → 3.2 → 3.3 → 3.4 和 1.2 → 1.3 →1.4 → 2.1 → 2.2 → 3.1 → 3.2 → 3.3 → 3.5 → 3.6,工期为124天。
(2)计算步骤如下:
填充关键路径的浮动时间。已知关键路径的浮动时间都为0,所以路径⑦和⑧上的所有节点的浮动时间都为0;
计算剩余节点的浮动时间。
由图可得,1.1 → 1.3需要时间为13天,而关键路径1.2 → 1.3需要25天,所以1.2的浮动时间为12天;
关键路径的前半部分为1.2 → 1.3 →1.4 → 2.1 → 2.2,后半部分有4个分路,⑦和⑧为关键路径,且后半部分的工期为54天;(12+15+9+18=54天,12+15+9+11+7=54天)
⑤和⑥的后半部分与关键路径的差额分别为54-39=15天,54-42=12天,那么此时可以确定2.7的浮动时间为15天,2.8的浮动时间为12天;(10+8+5+6=39天,10+8+5+9=42天)
由图可知,2.7和2.8都需要经过2.3 → 2.4 → 2.5 → 2.6,在这种情况下,选择与关键路径差额小的值为浮动时间,即2.3 → 2.4 → 2.5 → 2.6与2.8的浮动时间相等。
计算最早开始时间。将每一项活动前面经过的路径(不包含当前活动)进行相加,如遇到分叉口则选择有经过关键路径上的节点
计算最迟开始时间。逆推,通过公式最晚开始时间 - 最早开始时间 = 浮动时间推出最迟开始时间。
项目活动的最早开始时间ES、最迟开始时间LS和浮动时间FT如下:

由上述案例可以得出,通过关键路径可以判断出:
开发时哪些活动必须等待;
开发时哪些活动必须按进度进行防止拖延问题发生。

2、项目(进度计划)评估和评审技术(PERT,Program Evaluation and Preview Technique)


(1)定义

项目评估和评审技术是一种关键路径分析技术,使用正态分布来判断一个活动的最早开始时间接近该活动进度时间的概率。PERT技术可以计算关键路径、找出最可能成为瓶颈的活动。

五、获得值分析

获得值分析,主要分析两个内容进度是否拖延;成本是否超出预算。基于这两个内容,对获得值分析进行以下阐述。

1、基本量


(1)计划工作的预计成本(BCWS):截止到某一时刻,计划工作的预计工作量之和。

(2)完成预算(BAC):BCWS的总量,是项目的总工作量的估计。

(3)预定完成百分比:计划工作的预计成本占预计总工作量的百分比,计算公式为: 。

(4)完成工作的预计成本(BCWP):截止到某一时刻,完成工作的预计工作量之和。

(5)完成百分比:完成工作的预计成本占预计总工作量的百分比,计算公式为: 。

(6)所完成工作的实际成本(ACWP):截止到某一时刻,已完成的工作任务的实际工作量之和。

2、进度指示计算公式


(1)进度性能指标(SPI) = ;

(2)进度偏差(SV) = BCWP - BCWS;

(3)成本性能指标(CPI) = ;

(4)成本偏差(CV) = BCWP - ACWP。

总结:
当SPI > 1,SV > 0,进度超前;
当SPI = 1,SV = 0,进度正好;
当SPI < 1,SV < 0,进度落后;
当CPI > 1,CV > 0,成本节省;
当CPI = 1,CV = 0,成本正好;
当CPI < 1,CV < 0,成本超出预算。

3、案例分析


(1)案例一

下图是某工程的实际完成表。

工作任务

估计工作量

实际工作量

估计完成日期

实际完成日期(月日年)

1

5

10

1/25/21

2/1/21

2

25

20

2/15/21

2/15/21

3

120

80

5/15/21

4

40

50

4/15/21

4/1/21

5

60

50

7/1/21

6

80

70

9/1/21

Question:在该工程实施过程中,截止到21年4月1号,进度是否拖延?工期是否超出预算?

Answer:

截止到21年4月1号,计划完成任务1、2,实际完成了1、2、4,由此可计算出 BCWSBCWPACWPBAC 的值。

  • 计划工作的预计成本 BCWS 为:5 + 25 = 30

  • 完成工作的预计成本 BCWP 为:5 + 25 + 40 = 70

  • 所完成工作的实际成本 ACWP 为:10 + 20 + 50 = 80

  • 完成预算 BAC 为:5 + 25 + 120 + 40 + 60 + 80 = 330

  • 那么预定完成百分比为:

  • 实际完成百分比为:

  • 进度性能指标 SPI 为:

  • 进度偏差 SV 为:

  • 成本性能指标 CPI 为:

  • 成本偏差 CV 为:

综上所述,因为 SPI > 1,SV > 0 , CPI < 1,CV < 0 ,所以截止到21年4月1日,该工程进度超前,成本超出预算。

(2)案例二

工作任务

估计工作量

实际工作量

估计完成日期

实际完成日期(月日年)

1

50

70

1/25/21

2/1/21

2

35

20

2/15/21

2/15/21

3

20

40

2/25/21

3/1/21

4

40

40

4/15/21

4/1/21

5

60

10

6/1/21

6

80

20

7/1/21

Question:若考察点在21年5月1日,此时任务完成进度如上图所示,问进度是否拖延?工期是否超出预算?

Answer:

截止到21年5月1号,计划完成任务1、2、3、4,实际完成了1、2、3、4,由此可计算出 BCWSBCWPACWPBAC 的值。

  • 计划工作的预计成本 BCWS 为:50 + 35 + 20 + 40 = 145

  • 完成工作的预计成本 BCWP 为:50 + 35 + 20 + 40 = 145

  • 所完成工作的实际成本 ACWP 为:70 + 20 + 40 + 40 = 170

  • 完成预算 BAC 为:50 + 35 + 20 + 40 + 60 + 80 = 285

  • 那么预定完成百分比为:

  • 实际完成百分比为:

  • 进度性能指标 SPI 为:

  • 进度偏差 SV 为:

  • 成本性能指标 CPI 为:

  • 成本偏差 CV 为:

综上所述,因为 SPI = 1,SV = 0 , CPI < 1,CV < 0 ,所以截止到21年4月1日,该工程进度正好,即项目按计划进行,但成本超出预算。

(3)案例三

Question:

你被指定负责一个软件项目,这个项目由4个部分(A、B、C、D)组成,项目总预算为53000元,其中A任务预算为26000元,B任务预算为12000元,C任务预算为10000元,D任务预算为5000元。

截止到8月31日,A任务已经全部完成,B任务过半,C任务刚开始,D任务还没有开始,下表给出截止到8月31日的计划成本和实际成本,采用50/50规则计算截止到8月31日为止的 CV , SV , CPI , SPI 。

任务

计划费用 BCWS(元)

实际花费 ACWP(元)

已获取价值 BCWP(元)

A

26000

25500

26000

B

9000

5400

6000

C

4800

4100

5000

D

0

0

0

总计

39800

35000

37000

(备注:50/50规则指项目一开始就实现一半价值,直到结束才实现全部价值,即完成1%或99%,都认为只实现一半价值)

Answer:

截止到8月31日为止的 CV , SV , CPI , SPI 的计算结果如下:

  • CV=

  • SV=

  • AC=3500

  • SPI= 93%

  • CPI= 106%

综上所述,因为 SPI < 1,SV < 0CPI > 1,CV > 0 ,所以截止到8月31日,该工程进度落后一些,但是费用节省了。

通过一道关键路径法例题全面解析关键路径的算法,例题详见下图

第一步、画出进度网络图


根据例题可以看出,A、B、C没有紧前活动,那么A、B、C为开始活动,E、F、G的紧前活动为B和C,H的紧前活动为C,I的紧前活动为G、H,J的紧前活动为D、E,由此可得出,F、I、J为结束活动(没有紧后活动),由此画出下图

第二步、遍历路径


根据最乐观时间、最悲观时间、最可能时间,利用三点估算中的beta算法,期望值=(最乐观的时间+最可能的时间*4+最悲观的时间)/6,可以得出以下图示

第三步、计算关键路径上的时间


根据关键路径一般都没有浮动时间的特性可以计算出该路径上的所有时间;

解释:最早开始时间为1,最早完成时间=最早开始时间+持续时间-1,因为关键路径没有浮动,所以最晚开始时间、和最晚完成时间与最早一致;得出下图

第四步、算出B和C路径上的最早开始时间和最早完成时间


因为B和C也都为开始活动(没有紧前活动),所以可以直接画出B和C路径上的最早开始时间和最早完成时间,此处要注意E、F、G是即跟着B也跟着C的,那么算开始时间的时候要用B和C中完成时间最晚的一个去算,不然就会出现时间冲突,同理I的紧前活动有两个,也要取最晚完成的那个

第五步、计算最晚开始时间和最晚完成时间


至此,所有的最早开始时间和最早完成时间都已经计算完成,接下来需要倒推出最晚开始时间和最晚完成时间,因所有路径上的最晚完成时间不能晚于关键路径的最晚完成时间,F、J、I都为结束活动(J为关键已经得出),那么F和I的最晚完成时间不能晚于J,也就可以得出F和I的最晚完成时间为43,那么浮动天数=最晚完成时间-最早完成时间,得出I的浮动时间1,那么最晚开始时间=最早开始时间+浮动天数,得出I的最晚开始时间为26,同理可计算出F的最晚开始时间和最晚完成时间,同时G和H为I的紧前活动,那么计算出G和H的最晚完成时间,根据上诉工时推导出G和H的浮动时间和最晚开始时间,得出下图

第六步、计算出B和C最晚开始时间和最晚完成时间


B为E、F、G三个活动的紧前活动,C为E、F、G、H四个活动的紧前活动,那么计算B的最晚完成时间要取E、F、G中最晚开始时间最小的那个(否则时间冲突),同理C的计算方式也一样,由此可以计算出B和C的最晚完成时间,根据浮动天数=最晚完成时间-最早完成时间、最晚开始时间=最早开始时间+浮动天数的公式推导出B和C的浮动时间和最晚开始时间。至此,全部计算完成,得出完整图示

【真题】

1.在下面的活动图中,从A到J的关键路径是(1),I和J之间的活动开始的最早时间是(2)

(24)A、 ABEGJ B、ADFHJ C、ACFGJ D、ADFIJ

(25)A、13 B、23 C. 29 D、40

【答案】BD

【解析】第一小题直接把答案里四个选项套进去计算路径长度,最长的就是关键路径。计算结果ADFHJ=49,所以它是关键路径。

第二小题最早开始时间,是顺推出来。以!之前最长的那边路径的最早完成时间计算出来。列出!之前的所有路径及长度:

A-C-F-H-I:5+4+20+1=30

A-C-F-I:5+4+4=13

A-D-F-1: 10+9+4=23

A-D-F-H-I:10+9+20+1=40

所以}的最早时间是40,即通过最大路径A-D-F-H-I计算出来的。当然这个图看起来似乎是无向图,路径可以不只上面那几个。但从我们做题的角度来讲,D答案40已是最大的数了,找到了这个路径,答案就是它是不会错了。

2.某项目最初的网络图如下,为了压缩进度,项目经理根据实际情况使用了快速跟进的方法:在任务A已经开始一天后开始实施任务C,从而使任务C与任务A并行3天。这种做法将使项目

A、完工日期不变 B、提前4天完成 C、提前3天完成 D、提前2天完成

【答案】D

【解析】这题有陷阱。本来关键路径为A-C-F,项目的工期为20天。AC并行3天后,应该是要提前3天完成的,但提前3天后,A-C-F只有17天了,变成不是关键路径了,关键路径变成B-D-G, 18天了,所以相比原20天提前了2天完成。

3.图中,工作E总时差是( )

A、 1 B、2 C、 3 D、4

【答案】D

【解析】直接用关键路径时长减去非关键路径时长。关键路径:ABDF=12E所在的最大路径时长=ACEF=8总时差=12-8=4

4.某项目各项工作的先后顺序及工作时间如下表所示,该项目的总工期为( )天。

A. 31 B、32 C. 33 D、34

【答案】B

【解析】画图,然后得出关键路径为:A->D一>>F->G->I历时:5+6+13+6+2=32

5.某项目由并行的3个模块A, B和C组成,其中活动A需要3人5天时间完成,活动B需要6人7天时间完成,活动C需要4人2天时间完成,为了保证项目在最短时间内完成,则最少应该为项目配置(1)人。假设活动A, B和C按时完成的概率分别为80%, 70%和100%,则该项目按时完成的概率为(2)

(1)A、 6 B、9 C、 10 、 D、13

(2)A、 50% B、56% C、 64% D、90%

【答案】C, B

【解析】此为较简单的网络图,在7天内完成,人数配置为10人。项目按时完成的概率=80%* 70%* 100%=56%

相关文章:

软件项目进度安排与跟踪:关键路径的计算

在一个软件项目中&#xff0c;管理人员需要按时了解项目进度&#xff0c;制定项目计划&#xff0c;同时需要及时发现所遇到的问题&#xff0c;然后和团队成员制定解决方案&#xff0c;确保整个计划可以顺利的进行&#xff0c;因此项目进度安排与跟踪是项目管理中的一个重要环节…...

mac m2 处理器 iterm2 sz rz 出错/无限重试

mac m2 处理器 iterm2 sz rz 出错/无限重试 1、背景 apple m 系列处理器安装的 homebrew 跟 intel 处理器略有不同&#xff0c;其中安装目录的区别&#xff1a; m 系列处理器安装目录为 /usr/local/bin/homebrewintel 处理器安装目录为 /opt/homebrew 其中 m 系列处理器安装…...

Mysql 与 磁盘交互的过程

从之前的Mysql架构可以了解到&#xff0c;Mysql 客户端不是直接和磁盘打交道&#xff0c;我们在客户端输入的sql语句会被发送给服务端&#xff0c;服务端对sql语句进行解析、缓存等操作&#xff0c;然后再交由存储引擎去读写磁盘。这其实是从 C/S 的角度去了解Mysql。 站在OS的…...

Spring Cloud Gateway集成Nacos实现负载均衡

&#x1f4a1;Nacas可以用于实现Spring Cloud Gateway中网关动态路由功能&#xff0c;也可以基于Nacos来实现对后端服务的负载均衡&#xff0c;前者利用Nacos配置中心功能&#xff0c;后者利用Nacos服务注册功能。接下来我们来看下Gateway集成Nacos实现负载均衡的架构图一. 环境…...

Excel图表教程_编程入门自学教程_菜鸟教程-免费教程分享

教程简介 Excel图表初学者教程 - 从简单和简单的步骤学习Excel图表从基本概念到高级概念&#xff0c;包括简介&#xff0c;创建图表&#xff0c;类型&#xff0c;柱形图&#xff0c;折线图&#xff0c;饼图&#xff0c;圆环图&#xff0c;条形图&#xff0c;面积图&#xff0c…...

2023最新的接口自动化测试面试题

1、请结合你熟悉的项目&#xff0c;介绍一下你是怎么做测试的&#xff1f; -首先要自己熟悉项目&#xff0c;熟悉项目的需求、项目组织架构、项目研发接口等 -功能 接口 自动化 性能 是怎么处理的&#xff1f; -第一步&#xff1a; 进行需求分析&#xff0c;需求评审&#…...

AcWing语法基础课笔记 第一章 C++入门及简单的顺序结构

第一章 C入门及简单的顺序结构 编程是一种控制计算机的方式&#xff0c;和我们平时双击打开文件、关机、重启没有任何区别。 ———闫学灿 C中常用的变量类型 和所占字节大小 输出变量地址符&#xff1a; 软件环境 作业的评测与提交 在线练习地址&#xff1a;www.acwing.com …...

【并发编程】【2】进程与线程

并发编程 2.进程与线程 2.1 进程与线程 进程 程序由指令和数据组成&#xff0c;但这些指令要运行&#xff0c;数据要读写&#xff0c;就必须将指令加载至 CPU&#xff0c;数据加载至内存。在 指令运行过程中还需要用到磁盘、网络等设备。进程就是用来加载指令、管理内存、管…...

MySQL获取当前时间的各种方式

1 获取当前完整时间1.1 now()函数select now();输出:2023-02-15 10:46:171.2 sysdate()函数select sysdate();输出:2023-02-15 10:47:131.3 current_timestamp或current_timestamp()current_timestamp和current_timestamp()函数的效果是一样的&#xff0c;只不过一个是关键字&a…...

redis持久化之AOF(Append Only File)及其总结

1.是什么&#xff1f; 以日志的形式来记录每个写操作&#xff0c;将redis执行过的所有写指令记录下来(读操作不记录)&#xff0c;只许追加文件但不可以改写文件&#xff0c;redis启动之初会读取该文件重新构建数据&#xff0c;换言之&#xff0c;redis重启的话就根据日志文件的…...

LeetCode 刷题之队列

5. 队列 队列&#xff08;queue&#xff09;是只允许在一端进行插入操作&#xff0c;而在另一端进行删除操作的线性表。 队列是一种先进先出的&#xff08;First In First Out&#xff09;的线性表&#xff0c;简称 FIFO。允许插入的一端为队尾&#xff0c;允许删除的一端为队…...

互联网摸鱼日报(2023-02-15)

互联网摸鱼日报&#xff08;2023-02-15&#xff09; InfoQ 热门话题 ChatGPT火爆全球后&#xff0c;OpenAI CEO称“它很酷&#xff0c;但却是个糟糕的产品” 微软发言人证实旗下LinkedIn平台开始裁员 Akamai 推出 Akamai Connected Cloud 和全新云计算服务 AI赋能元宇宙游戏…...

聊聊外包和远程项目的敏捷管理(合辑共7篇)

这是鼎叔的第五十一篇原创文章。行业大牛和刚毕业的小白&#xff0c;都可以进来聊聊。欢迎关注本专栏和微信公众号《敏捷测试转型》&#xff0c;大量原创思考文章陆续推出。第四个合辑完工了&#xff0c;咱们介绍了外包管理或远程项目如何敏捷交付&#xff0c;满足管理层预期。…...

2023-2-15 刷题情况

检查「好数组」 题目描述 给你一个正整数数组 nums&#xff0c;你需要从中任选一些子集&#xff0c;然后将子集中每一个数乘以一个 任意整数&#xff0c;并求出他们的和。 假如该和结果为 1&#xff0c;那么原数组就是一个「好数组」&#xff0c;则返回 True&#xff1b;否则…...

汉诺塔递归算法精讲

文章目录前言一、汉诺塔是个啥&#xff1f;二、手动解法三、解法抽象四、递归解法五、总结前言 递归算法是计算机算法中的基础算法&#xff0c;也是非常重要的算法&#xff0c;从某种程度上讲&#xff0c;它有一点儿AI的影子。人脑是可以完成递归思路的&#xff0c;但是对不起…...

vue的$nextTick的原理

参考&#xff1a;https://cloud.tencent.com/developer/article/1633546 总结一下&#xff1a;就是$nextTick将回调函数放到微任务或者宏任务当中以延迟它地执行顺序&#xff1b;&#xff08;总结的也比较懒&#x1f476;&#xff09; 重要的是理解源码中它的三个参数的意思&a…...

前端学习第一阶段——第五章CSS(下)

5-9 浮动 08-浮动导读 09-传统网页布局三种方式 10-为什么需要浮动 11-什么是浮动 12-浮动特性-脱标 13-浮动特性-浮动元素一行显示 14-浮动特性-浮动元素具有行内块特性 15-浮动元素经常搭配标准流的父元素 16-浮动布局练习1 <!DOCTYPE html> <html lang"en&quo…...

基于django搭建简单的个人博客

文章目录第一步、在Ubuntu中安装虚拟环境并进入第二步、安装blog所需要的包&#xff0c;在requirements.txt中安装mysqlclient可能会报错&#xff0c;输入下列命令后在安装即可成功第三步、创建好数据库&#xff0c;把测试数据导入第四步、修改DjangoBlog包中 settings中数据库…...

JVM解释器与JIT编译器如何并存?

[1] JVM解释器 JVM设计的初衷仅仅只是为了满足Java程序实现跨平台特性&#xff0c;因此避免采用静态编译的方式直接生成本地机器指令&#xff0c;从而诞生了实现解释器在运行时采用逐行解释字节码的执行程序。 解释器真正意义上所承担的角色就是一个运行时“翻译者”&#xff0…...

生产者消费者模型

目录 一、生产者消费者模型的概念 二、生产者消费者模型的特点 三、生产者消费者模型优点 四、基于BlockingQueue的生产者消费者模型 4.1 基本认识 4.2 模拟实现 一、生产者消费者模型的概念 生产者消费者模式就是通过一个容器来解决生产者和消费者的强耦合问题 生产者和…...

C++初阶-list的底层

目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...

解锁数据库简洁之道:FastAPI与SQLModel实战指南

在构建现代Web应用程序时&#xff0c;与数据库的交互无疑是核心环节。虽然传统的数据库操作方式&#xff08;如直接编写SQL语句与psycopg2交互&#xff09;赋予了我们精细的控制权&#xff0c;但在面对日益复杂的业务逻辑和快速迭代的需求时&#xff0c;这种方式的开发效率和可…...

Mac软件卸载指南,简单易懂!

刚和Adobe分手&#xff0c;它却总在Library里给你写"回忆录"&#xff1f;卸载的Final Cut Pro像电子幽灵般阴魂不散&#xff1f;总是会有残留文件&#xff0c;别慌&#xff01;这份Mac软件卸载指南&#xff0c;将用最硬核的方式教你"数字分手术"&#xff0…...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)

本文把滑坡位移序列拆开、筛优质因子&#xff0c;再用 CNN-BiLSTM-Attention 来动态预测每个子序列&#xff0c;最后重构出总位移&#xff0c;预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵&#xff08;S…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。 本文全面剖析RNN核心原理&#xff0c;深入讲解梯度消失/爆炸问题&#xff0c;并通过LSTM/GRU结构实现解决方案&#xff0c;提供时间序列预测和文本生成…...

项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)

Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败&#xff0c;具体原因是客户端发送了密码认证请求&#xff0c;但Redis服务器未设置密码 1.为Redis设置密码&#xff08;匹配客户端配置&#xff09; 步骤&#xff1a; 1&#xff09;.修…...

ZYNQ学习记录FPGA(一)ZYNQ简介

一、知识准备 1.一些术语,缩写和概念&#xff1a; 1&#xff09;ZYNQ全称&#xff1a;ZYNQ7000 All Pgrammable SoC 2&#xff09;SoC:system on chips(片上系统)&#xff0c;对比集成电路的SoB&#xff08;system on board&#xff09; 3&#xff09;ARM&#xff1a;处理器…...

轻量级Docker管理工具Docker Switchboard

简介 什么是 Docker Switchboard &#xff1f; Docker Switchboard 是一个轻量级的 Web 应用程序&#xff0c;用于管理 Docker 容器。它提供了一个干净、用户友好的界面来启动、停止和监控主机上运行的容器&#xff0c;使其成为本地开发、家庭实验室或小型服务器设置的理想选择…...

【大模型】RankRAG:基于大模型的上下文排序与检索增强生成的统一框架

文章目录 A 论文出处B 背景B.1 背景介绍B.2 问题提出B.3 创新点 C 模型结构C.1 指令微调阶段C.2 排名与生成的总和指令微调阶段C.3 RankRAG推理&#xff1a;检索-重排-生成 D 实验设计E 个人总结 A 论文出处 论文题目&#xff1a;RankRAG&#xff1a;Unifying Context Ranking…...

2.2.2 ASPICE的需求分析

ASPICE的需求分析是汽车软件开发过程中至关重要的一环&#xff0c;它涉及到对需求进行详细分析、验证和确认&#xff0c;以确保软件产品能够满足客户和用户的需求。在ASPICE中&#xff0c;需求分析的关键步骤包括&#xff1a; 需求细化&#xff1a;将从需求收集阶段获得的高层需…...