『软件工程8』软件项目进度安排与跟踪,一招学会计算关键路径

项目进度安排与跟踪

  • 一、项目进度安排的定义及原则
    • 1、进度安排的定义
    • 2、进度安排的基本原则
  • 二、通信开销
    • 1、通信开销的定义
    • 2、通信路径计算
    • 3、案例分析
  • 三、工作量分配
    • 1、40-20-40规则
    • 2、工作量分配图例
    • 3、工作量分布推荐
  • 四、项目进度安排方法
    • 1、关键路径方法(CPM,Critical Path Method)
      • (1)定义
      • (2)关键路径的相关表达
      • (3)案例分析:盖房子
    • 2、项目(进度计划)评估和评审技术(PERT,Program Evaluation and Preview Technique)
      • (1)定义
  • 五、获得值分析
    • 1、基本量
    • 2、进度指示计算公式
    • 3、案例分析
      • (1)案例一
      • (2)案例二
      • (3)案例三
  • 六、写在最后

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

1、进度安排的定义

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

2、进度安排的基本原则

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

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

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

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

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

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

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

二、通信开销

1、通信开销的定义

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

2、通信路径计算

如果一个软件开发小组有 n 个人,每两人之间都需要通信,则总的通信路径有 n(n−1)2\frac{n(n-1)}{2}2n(n1) 条。

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

3、案例分析

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

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

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

A2:6个人所产生的的通信路径为 6∗(6−1)2\frac{6*(6-1)}{2}26(61) = 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.1的浮动时间为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如下:

活动最早开始时间最晚开始时间浮动时间
1.111312
1.2110
1.316160
1.426260
2.136360
2.251510
2.3718312
2.4819312
2.59110312
2.69911112
2.710411915
2.810411612
3.171710
3.283830
3.398980
3.41071070
3.51071070
3.61181180
Finish1241240

由上述案例可以得出,通过关键路径可以判断出:

  • 开发时哪些活动必须等待;
  • 开发时哪些活动必须按进度进行防止拖延问题发生。

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

(1)定义

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

注:项目评估和评审技术 (PERT) 的内容比关键路径还更为复杂一点,大家可以先理解关键路径,待我后面深学了再补充这一块知识。或者有小伙伴想补充的也欢迎私聊我哦~

五、获得值分析

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

1、基本量

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

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

(3)预定完成百分比:计划工作的预计成本占预计总工作量的百分比,计算公式为: BCWSBAC\frac{BCWS}{BAC}BACBCWS

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

(5)完成百分比:完成工作的预计成本占预计总工作量的百分比,计算公式为: BCWPBAC\frac{BCWP}{BAC}BACBCWP

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

2、进度指示计算公式

(1)进度性能指标(SPI) = BCWPBCWS\frac{BCWP}{BCWS}BCWSBCWP

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

(3)成本性能指标(CPI) = BCWPACWP\frac{BCWP}{ACWP}ACWPBCWP

(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)案例一

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

工作任务估计工作量实际工作量估计完成日期实际完成日期(月日年)
15101/25/212/1/21
225202/15/212/15/21
3120802/25/21
440504/15/214/1/21
560507/1/21
680709/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

  • 那么预定完成百分比为: BCWSBAC=30330\frac{BCWS}{BAC} = \frac{30}{330}BACBCWS=33030

  • 实际完成百分比为:BCWPBAC=70330\frac{BCWP}{BAC} = \frac{70}{330}BACBCWP=33070

  • 进度性能指标 SPI 为: SPI=BCWPBCWS=7030>1SPI = \frac{BCWP}{BCWS} = \frac{70}{30} > 1SPI=BCWSBCWP=3070>1

  • 进度偏差 SV 为:SV=BCWP−BCWS=70−30=40>0SV = BCWP - BCWS = 70 - 30 = 40 > 0SV=BCWPBCWS=7030=40>0

  • 成本性能指标 CPI 为: CPI=BCWPACWP=7080<1CPI = \frac{BCWP}{ACWP} = \frac{70}{80} < 1CPI=ACWPBCWP=8070<1

  • 成本偏差 CV 为:CV=BCWP−ACWP=70−80=−10<0CV = BCWP - ACWP = 70 - 80 = -10 < 0CV=BCWPACWP=7080=10<0

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

(2)案例二

工作任务估计工作量实际工作量估计完成日期实际完成日期(月日年)
150701/25/212/1/21
235202/15/212/15/21
320405/15/213/1/21
440404/15/214/1/21
560106/1/21
680207/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

  • 那么预定完成百分比为: BCWSBAC=145285\frac{BCWS}{BAC} = \frac{145}{285}BACBCWS=285145

  • 实际完成百分比为:BCWPBAC=145285\frac{BCWP}{BAC} = \frac{145}{285}BACBCWP=285145

  • 进度性能指标 SPI 为: SPI=BCWPBCWS=145145=1SPI = \frac{BCWP}{BCWS} = \frac{145}{145} = 1SPI=BCWSBCWP=145145=1

  • 进度偏差 SV 为:SV=BCWP−BCWS=145−145=0SV = BCWP - BCWS = 145 - 145 = 0SV=BCWPBCWS=145145=0

  • 成本性能指标 CPI 为: CPI=BCWPACWP=145170<1CPI = \frac{BCWP}{ACWP} = \frac{145}{170} < 1CPI=ACWPBCWP=170145<1

  • 成本偏差 CV 为:CV=BCWP−ACWP=145−170=−25<0CV = BCWP - ACWP = 145 - 170 = -25 < 0CV=BCWPACWP=145170=25<0

综上所述,因为 SPI = 1,SV = 0CPI < 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日为止的 CVSVCPISPI

任务计划费用 BCWS(元)实际花费 ACWP(元)已获取价值 BCWP(元)
A260002550026000
B900054006000
C480041005000
D000
总计398003500037000

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

Answer:

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

  • BCWS=39800元BCWS = 39800元BCWS=39800
  • ACWP=35000元ACWP = 35000元ACWP=35000
  • BCWP=37000元BCWP = 37000元BCWP=37000
  • SPI=BCWPBCWSSPI = \frac{BCWP}{BCWS}SPI=BCWSBCWP = 93%
  • SV=BCWP−BCWS=−2800元SV = BCWP-BCWS = -2800元SV=BCWPBCWS=2800
  • CPI=BCWPACWPCPI = \frac{BCWP }{ACWP}CPI=ACWPBCWP = 106%
  • CV=BCWP−ACWP=2000元CV = BCWP - ACWP = 2000元CV=BCWPACWP=2000

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

六、写在最后

软件项目进度安排与跟踪的文章就讲解到这里啦!在这一块内容中,计算关键路径部分尤为重要,也是软考当中的常考题。在学会之后还要自己脱稿再演算多遍,且可以将题目举一反三进行多次计算。如果有不理解的欢迎私聊~

同时,如有需要了解软件工程相关的其他内容,可到『软件工程』栏目进行查看学习~

  • 公众号:星期一研究室
  • 微信:MondayLaboratory

创作不易,如果这篇文章对你有用,记得留下Star哦~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/308052.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

await,async 我要把它翻个底朝天,这回你总该明白了吧

一&#xff1a;背景1. 讲故事await&#xff0c;async 这玩意的知识点已经被人说的烂的不能再烂了&#xff0c;看似没什么好说的&#xff0c;但我发现有不少文章还是从理论上讲述了这两个语法糖的用法&#xff0c;懂得还是懂&#xff0c;不懂的看似懂了过几天又不懂了&#xff0…

栈在前端中的应用,顺便再了解下深拷贝和浅拷贝!

详解栈在前端中的应用一、栈是什么二、栈的应用场景三、前端与栈&#xff1a;深拷贝与浅拷贝1、JS数据类型&#xff08;1&#xff09;js数据类型的分类&#xff08;2&#xff09;js数据类型的定义和存储方式&#xff08;3&#xff09;js数据类型的判断方式2、深究浅拷贝和深拷贝…

计网课设 模拟实验拓扑

一:前言 幸福的是考完两科了&#xff0c;抽出时间赶紧赶赶课设&#xff0c;两周遇到了好多事&#xff0c;开心的&#xff0c;烦心的&#xff0c;一堆堆的压过来&#xff0c;但庆幸自己迷失不太久&#xff0c;又能继续学习了 二&#xff1a;实验概览 1:实验拓扑图 2:实验要求…

快醒醒,C# 9 中又来了一堆关键词 init,record,with

一&#xff1a;背景1. 讲故事.NET5 终于在 2020-08-25 也就是前天发布了第八个预览版&#xff0c;这么多的预览版搞得我都麻木了&#xff0c;接踵而来的就是更多的新特性加入到了 C# 9 中&#xff0c;既然还想呆在这条船上&#xff0c;得继续硬着头皮学习哈&#xff0c;这一篇跟…

7-1 字母统计图 (10 分)(思路+详解)

一&#xff1a;题目 摆放在面前的是一小段英文文章。 afeng希望你能帮他统计一下每个小写字母出现的次数。 最后再以柱状图的形式(参照输出样例)输出出来。 输入格式: 输入第一行为一个正整数N(N<100)&#xff0c;表示文章的行数。 随后为N行文本。 输出格式: 由若干行组…

了解js基础知识中的作用域和闭包以及闭包的一些应用场景,浅析函数柯里化

js基础知识中的作用域和闭包一、作用域1、作用域、自由变量简介&#xff08;1&#xff09;作用域定义&#xff08;2&#xff09;作用域实例演示&#xff08;3&#xff09;自由变量定义&#xff08;4&#xff09;自由变量实例演示2、作用域链简介&#xff08;1&#xff09;作用域…

张朝阳一天只睡4小时?不知道,反正我每天都睡足7小时

这是头哥侃码的第213篇原创周末&#xff0c;一个很久没联系过的朋友突然在微信上发给我一个链接。我打开一看&#xff0c;原来是搜狐老板张朝阳近日发表的一个有关睡眠的神论&#xff0c;大致是说他每天只睡四小时&#xff0c;白天状态还特别好&#xff0c;每天员工到公司的时候…

Istio 1.7——进击的追风少年

2020 年 8 月 21 日&#xff0c;Istio 发布了 1.7 版本。除了介绍新版本的主要更新内容外&#xff0c;本文会重点分析 Istio 团队在产品更新策略上的激进态度和举措。是稳扎稳打做好向后兼容&#xff0c;带给用户所承诺的易用性&#xff1b;还是快刀斩乱麻&#xff0c;做进击的…

7-2 港口审查 (15 分)

一:题目 afeng是一个港口的海关工作人员&#xff0c;每天都有许多船只到达港口&#xff0c;船上通常有很多来自不同国家的乘客。 afeng对这些到达港口的船只非常感兴趣&#xff0c;他按照时间记录下了到达港口的每一艘船只情况&#xff1b;对于第i艘到达的船&#xff0c;他记…

【BCVP更新】StackExchange.Redis 的异步开发方式

有哪些习惯坚持LESS IS MORE,SIMPLER IS BETTER THAN MORE你一定会有很大的收获各种小问题&#xff1f;如果你之前用过Redis的话&#xff0c;肯定会使用过StackExchange.Redis&#xff0c;我之前很久就用过&#xff0c;在.netfw的时候&#xff0c;当时并发还比较小&#xff0c;…

map容器实现一对多

一&#xff1a;需求描述 我们希望一个数字或则其他字符串可以对应 一串数&#xff0c; #include<iostream> #include<map> #include<vector> using namespace std; int main(){map<int,vector<int> > m;map<int,vector<int> >:: i…

解决异步问题,教你如何写出优雅的promise和async/await,告别callback回调地狱!

解决异步问题——promise、async/await一、单线程和异步1、单线程是什么2、为什么需要异步3、使用异步的场景二、promise1、promise的三种状态2、三种状态的表现和变化&#xff08;1&#xff09;状态的变化&#xff08;2&#xff09;状态的表现3、then和catch对状态的影响&…

使用 Visual Studio 2019 批量添加代码文件头

应用场景介绍在我们使用一些开源项目时&#xff0c;基本上都会在每个源代码文件的头部看到一段版权声明。一个项目或解决方案中源代码文件的个数少则几十&#xff0c;多则几千甚至更多&#xff0c;那么怎么才能给这么多文件方便地批量添加或者修改一致的文件头呢&#xff1f;在…

7-3 模板题 (10 分)(思路+详解)

一:题目 二&#xff1a;思路 1.读题读不懂&#xff0c;那就分析给出的示例&#xff0c;本题意思就是给出一串数&#xff0c;然后找出找出该元素之后&#xff0c;第一个大于 该元素的下标&#xff08;这一串数的下标是从一开始的&#xff09;如果找不到比起大的&#xff0c;那就…

提升对前端的认知,不得不了解Web API的DOM和BOM

了解Web API的DOM和BOM引言正文一、DOM操作1、DOM的本质2、DOM节点操作&#xff08;1&#xff09;property形式&#xff08;2&#xff09;attribute形式3、DOM结构操作&#xff08;1&#xff09;新增/插入节点&#xff08;2&#xff09;获取子元素列表&#xff0c;获取父元素&a…

Dapr微服务应用开发系列1:环境配置

题记&#xff1a;上篇Dapr系列文章简要介绍了Dapr&#xff0c;这篇来谈一下开发和运行环境配置本机开发环境配置安装Docker为了方便进行Dapr开发&#xff0c;最好&#xff08;其实不一定必须&#xff09;首先在本机&#xff08;开发机器&#xff09;上安装Docker。安装方式可以…

leetcode704二分法:(左闭右闭+左闭右开)

前言 又重温了一遍<肖生客的救赎> 其中安迪的一句话一直回荡我的脑中&#xff1a;“人生可以归结为一种简单的选择&#xff1a;不是忙着活&#xff0c;就是忙着死。” 多深刻&#xff0c;多简单&#xff0c;又多令人深省&#xff0c; 哪有那么多选择 哪有那么多时间去花…

你真的理解事件绑定、事件冒泡和事件委托吗?

一文了解Web API中的事件绑定、事件冒泡、事件委托引言正文一、事件绑定1、事件和事件绑定时什么&#xff1f;2、事件是如何实现的&#xff1f;二、事件冒泡1、事件模型2、事件模型解析&#xff08;1&#xff09;捕获阶段&#xff08;2&#xff09;目标阶段&#xff08;3&#…

欢迎来到 C# 9.0(Welcome to C# 9.0)

翻译自 Mads Torgersen 2020年5月20日的博文《Welcome to C# 9.0》&#xff0c;Mads Torgersen 是微软 C# 语言的首席设计师&#xff0c;也是微软 .NET 团队的项目群经理。C# 9.0 正在成形&#xff0c;我想和大家分享一下我们对下一版本语言中添加的一些主要特性的想法。对于 C…

367. 有效的完全平方数(二分法)

一&#xff1a;题目 二:思路 完全平方数:若一个数能表示成某个整数的平方的形式&#xff0c;则称这个数为完全平方数 思路:1.我们将num先折半,因为它是某个整数的平方&#xff0c;而这个数的范围肯定不会超过num的一半 2.那么这就相当于在[left,num/2]中查找某个数&#xff0c…