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

[豪の学习笔记] 软考中级备考 基础复习#8

跟学视频:学以致知Learning - 软件设计师 基础阶段|考点理论精讲

Chapter 8 - 软件工程基础知识

1 - 软件工程概述

软件生存周期

​ 同任何事物一样,软件也有一个孕育、诞生、成长、成熟、衰亡的生存过程,我们称其为计算机软件的生存周期。通常,软件生存周期包括可行性分析、项目开发计划、需求分析、设计(概要设计和详细设计)、编码、测试、维护等活动

  • 可行性分析:由软件开发方与需求方共同讨论,主要确定软件的开发目标及其可行性
  • 需求分析:在确定软件开发可行的情况下,对软件需要实现的各个功能进行详细分析,主要解决“做什么”的问题
  • 概要设计:主要根据需求分析的结果,对整个软件系统进行设计,如系统框架设计、数据库设计
  • 详细设计:是对每个模块完成的功能进行具体描述,要把功能转变为精确的、结构化的过程
  • 程序编码:将软件设计的结果转换成计算机可运行的程序代码,在程序编码时,必须要制定统一、符合标准的编写规范,以保证程序的可读性、易维护性,提高程序的运行效率
  • 软件测试:在软件设计完成后要经过严密的测试,以发现软件在整个设计过程中存在的问题并加以纠正
  • 维护:在软件开发完成并投入使用后,由于各种原因,软件会不能继续适应用户的要求,延续软件的使用寿命就要对软件进行维护,包括纠错性维护和改进型维护两个方面
能力成熟度模型CMM

软件能力成熟度模型(CMM)将软件组织的过程能力分成5个成熟度级别:初始级、可重复级、已定义级、已管理级和优化级。按照成熟度级别由低到高,软件开发生产精度越来越高,每单位工程的生产周期越来越短

  • 初始级:软件过程是无序的,有时甚至是混乱的,对过程几乎没有定义,成功取决于个人努力
  • 可重复级:建立了基本的项目管理过程来跟踪费用、进度和功能特性,制定了必要的过程纪律,能重复早先类似应用项目取得的成功
  • 已定义级:已将软件管理和工程两方面的过程文档化、标准化,并综合成该组织的标准软件过程。所有项目均使用经批准、剪裁的标准软件过程来开发和维护软件
  • 已管理级:收集对软件过程和产品质量的详细度量,对软件过程和产品都有定量的理解和控制
  • 优化级:过程的量化反馈和先进的新思想、新技术促使过程不断改进
能力成熟度模型CMMI

1、阶段式模型:结构类似于CMM,它关注组织的成熟度,有5个成熟度等级

  • 初始的:过程不可预测且缺乏控制
  • 已管理的:过程为项目服务
  • 已定义的:过程为组织服务
  • 定量管理的:过程已度量和控制
  • 优化的:集中于过程改进

2、连续式模型:关注每个过程域的能力,一个组织对不同的过程域可以达到不同的过程域能力等级。CMMI中包括6个过程域能力等级,等级号为0~5

  • CL0(未完成的):过程域未执行或未得到CL1中定义的所有目标
  • CL1(已执行的):其共性目标是过程将可标识的输入工作产品转换可标识的输出工作产品,以实现支持过程域的特定目标
  • CL2(已管理的):其共性目标集中于已管理的过程的制度化。根据组织级政策规定过程的运作将使用哪个过程,项目遵循已文档化的计划和过程描述,所有正在工作的人都有权使用足够的资源,所有工作任务和工作产品都被监控、控制和评审
  • CL3(已定义级的):其共性目标集中于已定义的过程的制度化。过程是按照组织的剪裁指南从组织的标准过程集中剪裁得到的,还必须收集过程资产和过程的度量,并用于将来对过程的改进
  • CL4(定量管理的):其共性目标集中于可定量管理的过程的制度化。使用测量和质量保证来控制和改进过程域,建立和使用关于质量和过程执行的定量目标作为管理准则
  • CL5(优化的):使用量化(统计学)手段改变和优化过程域,以满足客户要求的改变和持续改进计划中的过程域的功效
统一过程模型

​ 统一过程(UP)模型:是一种“用例和风险驱动,以架构为中心,迭代并且增量”的开发过程,由UML方法和工具支持。迭代的意思是将整个软件开发项目划分为许多个小的“袖珍项目”,每个“袖珍项目”都包含正常软件项目的所有元素:计划、分析和设计、构造、集成和测试,以及内部和外部发布

​ 统一过程包括四个阶段:初始阶段、精化阶段、构建阶段、移交阶段

  • 初始阶段——生命周期目标
  • 精化阶段——生命周期架构
  • 构建阶段——初始运作功能
  • 移交阶段——产品发布

image-20250911165134170

2 - 软件开发模型

瀑布模型:迭代模型/迭代开发方法

image-20250911184237174

演化模型:快速应用开发

​ 演化模型:在获取一组基本的需求后,通过快速分析构造出该软件的一个初始可运行版本,这个初始的软件通常称为原型,然后根据用户在使用原型的过程中提出的意见和建议对原型进行改进,获得原型的新版本。重复这一过程,最终可得到令用户满意的软件产品

主要用于对软件需求缺乏准确认识的情况

image-20250911190811442

增量模型:构建组装模型/基于构件的开发方法

​ 增量模型融合了瀑布模型的基本成分和原型实现的迭代特征,该模型采用随着日程时间的进展而交错的线性序列,每一个线性序列产生软件的一个可发布的“增量”

特点是引进了增量包的概念

image-20250911190811442

螺旋模型:统一过程/统一开发方法

​ 螺旋模型:将瀑布模型和演化模型相结合就成了螺旋模型, 这种模型综合了瀑布模型和演化模型的优点

​ 螺旋模型包括四个方面的活动:制定计划、风险分析、实施工程、客户评估

增加了风险分析

image-20250911190811442

image-20250911191155880

快速原型模型:敏捷开发方法
V模型:基于架构的开发方法

image-20250911191239373

喷泉模型:模型驱动的开发方法

​ 喷泉模型是一种以用户需求为动力,以对象为驱动的模型,主要用于采用对象技术的软件开发过程,具有迭代和无间隙特性。迭代意味着模型中的开发活动常常需要重复多次,在迭代中不断完善软件系统。无间隙是指在开发活动之间不存在明显的边界,允许开发活动交叉、迭代地进行

image-20250911191353220

基于构件的开发模型:本质上是演化模型,以迭代方式构件软件

​ 基于构件的开发模型:是指利用预先包装的构件来构造应用系统。构件可以是组织内部开发的构件,也可以是商品化成品软件构件。基于构件的开发模型本质上是演化模型,需要以迭代方式构件软件,不同之处在于采用预先打包的软件构件开发应用系统

image-20250911191646906

3 - 软件开发方法

结构化方法

​ 结构化方法由结构化分析、结构化设计、结构化程序设计构成,它是一种面向数据流开发方法。结构化分析是根据分解与抽象的原则,按照系统中数据处理的流程,用数据流图来建立系统的功能模型,从而完成需求分析工作

​ 结构化方法总的指导思想是自顶向下、逐层分解,其基本原则是功能的分解与抽象。它是软件工程中最早出现的开发方法,特别适合于数据处理领域的问题,但是不适合解决大规模、特别复杂的项目,且难以适应需求的变化

Jackson方法

​ Jackson方法是一种面向数据结构的开发方法。因为一个问题的数据结构与处理该数据结构的控制结构有着惊人的相似之处。这种方法首先描述问题的输入、输出数据结构,分析其对应性,然后推出相应的程序结构,从而给出问题的软件过程描述

​ JSP方法是以数据结构为驱动的,适合于小规模的项目。当输入数据结构与输出数据结构之间没有对应关系时,难以应用此方法。基于JSP方法的局限性,又发展了JSD方法,它是JSP方法的扩充

原型化方法

​ 原型化方法:并非所有的需求都能够预先定义,而且反复修改是不可避免的。开发原型化系统首先要确定用户需求,开发原始模型,然后征求用户对初始原型的改进意见,并根据意见修改原型

​ 原型化方法比较适合于用户需求不清、业务理论不确定、需求经常变化的情况,当系统规模不是很大也不太复杂时,采用该方法是比较好的

面向对象方法

​ 面向对象开发方法包括面向对象分析、面向对象设计和面向对象实现。面向对象开发方法有Booch方法、Coad方法和OMT方法等

​ 为了统一各种面向对象方法的术语、概念和模型,OMG 1997年推出了统一建模语言(Unified ModelingLanguage,UML)。它是面向对象的标准建模语言,通过统一的语义和符号表示,使各种方法的建模过程和表示统一起来,已成为面向对象建模的工业标准

敏捷开发方法 极限编程XP

​ 敏捷开发的总体目标是通过“尽可能早地、持续地对有价值的软件的交付”使客户满意

​ 敏捷过程的典型方法很多,主要有极限编程、水晶法、并列争球法、自适应软件开发几种

​ 极限编程(XP)是一种轻量级(敏捷)、高效、低风险、柔性、可预测、科学的软件开发方式。它由价值观、原则、实践和行为4个部分组成,它们彼此相互依赖、关联,并通过行为贯穿于整个生存周期

image-20250912173938732

4 - 需求分析

  • 功能需求:考虑软件要做什么
  • 性能需求:考虑软件开发的技术性指标
  • 用户或人的因素:考虑用户的类型
  • 环境需求:考虑未来软件应用的环境,包括软件和硬件
  • 界面需求:考虑对数据格式、数据存储介质的规定
  • 文档需求:考虑需要哪些文档,针对哪些读者
  • 数据需求:考虑数据的格式、接收、发送数据的频率等
  • 资源使用需求:考虑软件运行时所需数据、内存空间等资源
  • 安全保密要求
  • 可靠性要求:考虑系统的可靠性
  • 软件成本消耗与开发进度需求
  • 其他非功能性要求

5 - 系统设计

采用了结构化方法的结构化设计

image-20250912174530111

内聚和耦合
内聚类型 描述
功能内聚 完成一个单一功能,各个部分协同工作,缺一不可
顺序内聚 处理元素相关,而且必须顺序执行
通信内聚 所有处理元素集中在一个数据结构的区域上
过程内聚 处理元素相关,而且必须按特定的次序执行
瞬时内聚(时间内聚) 所包含的任务必须在同一时间间隔内执行
逻辑内聚 完成逻辑上相关的一组任务
偶然内聚(巧合内聚) 完成一组没有关系或松散关系的任务
耦合类型 描述
非直接耦合 两个模块之间没有直接关系
它们之间的联系完全是通过主模块的控制和调用来实现的
数据耦合 一组模块借助参数表传递简单数据
标记耦合 一组模块借助参数表来传递记录信息
控制耦合 模块之间传递的信息中包含用于控制模块内部逻辑的信息
外部耦合 一组模块都访问同一全局简单变量
而且不是通过参数表传递该全局变量的信息
公共耦合 多个模块都访问同一个公共数据环境
内容耦合 一个模块直接访问另一个模块的内部数据
一个模块不通过正常入口转到另一个模块的内部
两个模块有一部分程序代码重叠
一个模块有多个入口

6 - 系统测试

原则和目的

​ 尽早、不断的进行测试

​ 程序员避免测试自己设计的程序

​ 既要选择有效、合理的数据,也要选择无效、不合理的数据

​ 修改后应进行回归测试

​ 尚未发现的错误数量与该程序已发现错误数成正比

测试方法

​ 静态测试:人工检测、计算机辅助静态检查

​ 动态测试:黑盒测试、白盒测试

  • 黑盒测试:等价类划分、边界值分析、错误推测、因果图
  • 白盒测试:基本路径测试、循环覆盖测试、逻辑覆盖测试(语句覆盖、判定覆盖、条件覆盖、条件判定覆盖、修正的条件判断覆盖、条件组合覆盖、点覆盖、边覆盖、路径覆盖)
测试阶段

1、单元测试:也称为模块测试,在模块编写完成且无编译错误后就可以进行。单元测试侧重于模块中的内部处理逻辑和数据结构。一般用白盒测试法

2、集成测试:就是把模块按系统设计说明书的要求组合起来进行测试。即使所有的模块都通过了测试,在集成之后,仍然可能出现问题

3、确认测试:始于集成测试的结束,那时已测试完单个构件,软件已组装成完整的软件包,且接口错误已被发现和改正

4、系统测试:是将已经确认的软件、计算机硬件、外设和网络等其他因素结合在一起,进行信息系统的各种集成测试和确认测试,其目的是通过与系统的需求相较,发现所开发的系统与用户需求不符或矛盾的地方

7 - 软件开发项目管理

Gantt图

​ Gantt图是一种简单的水平条形图,它以日历为基准描述项目任务。水平轴表示日历时间线(如时、天、周、月和年等),每个条形表示一个任务,任务名称垂直地列在左边的列中,图中水平条的起点和终点对应水平轴上的时间,分别表示该任务的开始时间和结束时间水平条的长度表示完成该任务所持续的时间。当日历中同一时段存在多个水平条时,表示任务之间的并发

不能清晰地反映出各任务之间的依赖关系

​ 下图所示的Gantt图描述了3个任务的进度安排。任务1首先开始,完成它需要6个月时间。任务2在1个月后开始,完成它需要9个月时间。任务3在6个月后开始,完成它需要5个月时间

image-20250912194655928

PERT图

​ PERT图是一个有向图用箭头表示任务,它可以表示完成该任务所需的时间,箭头指向节点表示流入节点的任务的结束,并开始流出节点的任务,这里把节点当成事件

只有当流入该节点的所有任务都结束时,节点所表示的事件才出现,流出节点的任务才可以开始。事件本身不消耗时间和资源,它仅表示某个时间点。一个事件有一个事件号和出现该事件的最早时刻和最迟时刻。每个任务还有一个松弛时间,表示在不影响整个工期的前提下,完成该任务有多少机动余地

​ PERT图不仅给出了每个任务的开始时间、结束时间和完成该任务所需的时间,还给出了任务之间的关系,即哪些任务完成后才能开始另外一些任务,以及如期完成整个工程的关键路径。松弛时间则反映了完成某些任务时可以推迟其开始时间或延长其所需的完成时间。
但是PERT图不能反映任务之间的并行关系

image-20250912195753432

风险管理

​ 风险是指”损失或伤害的可能性

​ 风险管理包含:风险识别、风险预测、风险评估、风险控制

8 - 软件质量

软件质量特性

​ 软件质量模型由3个层次组成:第一层是质量特性,第二层是质量子特性,第三层是度量指标。该模型的质量特性和质量子特性的含义如下:

(1)功能性:与一组功能及其指定的性质有关的一组属性。这里的功能是指满足明确或隐含需求的那些功能

  • 适合性:与规定任务能否提供一组功能以及这组功能的适合程度有关的软件属性
  • 准确性:与能否得到正确的或相符的结果或效果有关的软件属性
  • 互用性:与同其他指定系统进行交互操作的能力有关的软件属性
  • 依从性:使软件服从有关的标准、约定、法规及类似规定的软件属性
  • 安全性:与避免对程序及数据的非授权的故意或意外访问的能力有关的软件属性

(2)可靠性:与在规定的一段时间内和规定的条件下,软件维持其性能水平的能力有关的一组属性

  • 成熟性:与由软件故障引起失效的频度有关的软件属性
  • 容错性:与在软件错误或违反指定接口情况下,维持指定的性能水平的能力有关的软件属性
  • 易恢复性:与在故障发生后重新建立其性能水平并恢复直接受影响数据的能力,以及为达此目的所需的时间有关的软件属性

(3)易使用性:与为使用所需的努力和由一组规定的或隐含的用户对这样的使用所做的个别评价有关的一组属性

  • 易理解性:与用户为理解逻辑概念及其应用范围所需努力有关的软件属性
  • 易学性:与用户为学习软件应用所需努力有关的软件属性
  • 易操作性:与用户为进行操作或控制所需努力有关的软件属性

(4)效率:与在规定条件下,软件的性能水平与所用资源量之间的关系有关的一组属性

  • 时间特性:与软件执行其功能时的响应和处理时间以及吞吐量有关的软件属性
  • 资源特性:与软件执行其功能时所使用的资源量以及使用资源的持续时间有关的软件属性

(5)可维护性:与进行规定的修改所需努力有关的一组属性

  • 易分析性:与为诊断缺陷或失效原因,或为判定待修改的部分所需努力有关的软件属性
  • 易改变性:与进行修改、调试或适应环境变化所需努力有关的软件属性
  • 稳定性:与修改造成的未预料后果的风险有关的软件属性
  • 易测试性:与为确认经修改软件所需努力有关的软件属性

(6)可移植性:与软件从一种环境转移到另一种环境的能力有关的一组属性

  • 适应性:与软件无须采用有别于为该软件准备的处理和手段就能适应规定的环境有关的软件属性
  • 易安装性:与在指定环境下安装软件所需努力有关的软件属性
  • 一致性:使软件服从与可移植性有关的标准或约定的软件属性
  • 易替换性:与软件在该软件环境中用来替代指定的其他软件的可能和努力有关的软件属性

9 - 软件度量

McCabe度量法

McCabe复杂性度量又称为环路度量,它认为程序的复杂性很大程度上取决于控制的复杂性。单一的顺序程序结构最为简单,循环和选择所构成的环路越多,程序就越复杂。根据图论,在一个强连通的有向图G中,环的个数V(G) = m - n + 2

​ 式中,V(G)为有向图G中的环路数,m为图G中弧的个数,n为图G中的节点数

image-20250912201802791

相关文章:

[豪の学习笔记] 软考中级备考 基础复习#8

软件工程概述、软件开发模型、软件开发方法、需求分析、系统设计、系统测试、软件开发项目管理、软件质量、软件度量McCabe度量法跟学视频:学以致知Learning - 软件设计师 基础阶段|考点理论精讲 Chapter 8 - 软件工程基础知识 1 - 软件工程概述 软件生存周期 ​ 同任何事物一…...

lc1025-除数博弈

难度:简单(中期巅峰)题目描述爱丽丝先手 初始数 n (1 <= n <= 1000) 若能选出 x (0 < x < n) 使 x 能整除 n,则 n 变为 n-x 若不能,则输掉示例 输入:n = 2 输出:true 解释:爱丽丝选择 1,鲍勃无法进行操作输入:n = 3 输出:false 解释:爱丽丝选择 1(n 变…...

漏洞解析--文件包含漏洞究竟怎么用?

一、漏洞原理 1.1 核心 文件包含漏洞是指程序中需要包含其他文件(代码,信息等等),然而包含文件的路径受用户输入控制,攻击者可以使其包含恶意文件,从而造成敏感信息泄露甚至任意代码执行。分为两类:本地文件包含(LFI, Local File Inclusion):攻击者能够让程序包含服务…...

办公室装修 暂存

办公室装修 暂存本文来自博客园,作者:del88,转载请注明原文链接:https://www.cnblogs.com/del88/p/19088481...

博客更新公告

来看看博客更新公告吧rt. 公示最新更新或发布的博客, 供大家查阅. 更新日志 Upd 2025.9.12 新随笔 Words to be remembered 2025.9.12 我好想你. 网址: https://www.cnblogs.com/hsy8116/p/19088430.Upd 2025.8.24 博客 初中这三年 已经更新, 在最后添加了对初中三年整体的评价…...

爆:GitHub Copilot支持包括Anthropic、Azure、Google Gemini、Groq、OpenAI 和 OpenRouter等供应商API

爆:GitHub Copilot支持包括Anthropic、Azure、Google Gemini、Groq、OpenAI 和 OpenRouter等供应商APIJetBrains和Xcode现已支持自带API密钥(BYOK)使用GitHub Copilot Chat,支持Anthropic、Azure等主流AI提供商。用户可灵活选择模型,享受更好的控制和实验体验。安装最新插件…...

JavaWeb05 - 详解

JavaWeb05 - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !important; font-size: 14px !…...

CF182C

根据贪心策略,应当选择 \(k\) 个最小的负数改为正数,或选择 \(k\) 个最大的正数改为负数,才可能使答案最大。那么可以先把数按正负分开,并确定每个数在同符号数中的排名。建立权值线段树,记录每个数出现的次数、单个数大小、总贡献和,查询时类似线段树二分,如果数值较大…...

CF185D

大胆猜测,所有数的最大公约数一定很小:偶数时为 \(1\),奇数时为 \(2\)。设两个正整数 \(n,m\) 且 \(n<m\),最大公约数 \(\gcd(k^{2^n}+1,k^{2^m}+1)=d\),则有 \(k^{2^n}\equiv k^{2^m} \equiv -1\pmod d,k^{2^{n+1}} \equiv (k^{2^{n+1}})^{\frac{2^m}{2^{n+1}}} \equi…...

Python计算文件md5

Python计算文件md5 基础版本1 import hashlib2 3 def calculate_md5(file_path, chunk_size=8192):4 """5 计算大文件的MD5值6 7 Args:8 file_path (str): 文件路径9 chunk_size (int): 每次读取的字节数,默认8KB 10 11 …...

CF201C

最优的方案应该是先往一个方向走,然后走回来,再往另一个方向走不回来。考虑用 dp 模拟这个过程。设 \(f_{i,0/1}\) 表示从第 \(i\) 个点出发往左走,不一定/一定回到 \(i\) 号点的最大次数,则有转移: \[\begin{array}{l} f_{i,1}=f_{i-1,1}+a_{i-1}-[2 \nmid a_{i-1}]\\f_{…...

CF1774D

首先 \(1\) 的总个数不能被 \(n\) 整除时无解。 否则一定有解(因为每一列上的 \(1\) 的位置都可以随意变动,故实际上相当于可以随便放)。为了步数最少,一定是用缺少 \(1\) 行的 \(0\) 与过多 \(1\) 行的 \(1\) 交换,这样能同时使两行更接近答案。实现时先枚举列,再根据每…...

CF23C

挺神奇的思维题。 首先将所有元素按 \(a\) 从大到小排序,考虑交叉选,即要么 \(a_1,a_3,a_5,\cdots,a_{2n-1}\),要么 \(a_1,a_2,a_4,\cdots,a_{2n-2}\)。无论选哪种,\(a\) 一定满足要求(前者 \(a_1>a_2,a_3>a_4,\cdots,a_{2n-3}>a_{2n-2}\),各式相加即可,后者 \…...

CF37C

将每个 01 串看作一个二进制数,将长度从小到大排序,对于当前第 \(i\) 个串,首先在第 \(i-1\) 个串的基础上加 \(1\)(如果不能加 \(1\) 即爆位数则无解),如果长度相同则无需任何操作,否则按照缺少的长度从后面补 \(0\)。这样做能保证长度短的不为长度长的前缀,且尽可能的…...

CF33D

由于任意两个圆没有交点,故不存在翻一次栅栏能穿过两个圆。那么对于每个栅栏,如果两个点一个在内一个在外,则必须翻,否则不用翻。时间复杂度 \(O(mk)\),可以通过。 #include<iostream> #include<cstdio> #include<algorithm> #include<map> #defi…...

支持类 Unix 语法 ``:Windows 下用 PowerShell 7 优化 npm 和 VS Code

不支持 && ? 在类 Unix 系统中,&& 是常用的命令组合符,表示 前一个命令成功后再执行下一个命令。例如: echo "第一步成功" && echo "第二步执行"在 Windows 的默认环境中,cmd 或旧版 PowerShell 对 && 支持有限,可能…...

初赛程序阅读做题要点

草稿纸打清楚 同一时间的变量尽量打在一行 遇到循环要标好循环节 递归树,加入记忆化搜索想法,打表存储...

模拟堆(手写堆 的五大操作)

先看手写堆的相关问题:堆排序(手写堆) 五大操作: 例题: 输入样例:8 I -10 PM I -10 D 1 C 2 8 I 6 PM DM期望输出:-10 6代码实现:#include<bits/stdc++.h> using namespace std;const int N =1e5+10; int h[N]; int n,size; int ph[N],hp[N];void hswap(int a,in…...

【A】杂题悬桨

[ARC199A] Flip Row or Col 2...

使用Osquery进行远程取证:NTFS取证扩展实战指南

本文详细介绍了如何利用osquery的NTFS取证扩展进行远程数字取证分析,包括时间戳攻击检测、删除文件痕迹追踪等实战场景,为安全分析师提供高效端点调查方案。使用Osquery进行远程取证 - Trail of Bits博客 系统管理员使用osquery进行端点遥测和日常监控,安全威胁猎人用它发现…...

完整教程:简单介绍一下Clickhouse及其引擎

完整教程:简单介绍一下Clickhouse及其引擎pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !impo…...

矩阵分解

LU 分解 考虑将 \(A\) 分解成 \(LU\),\(L\) 为上三角矩阵,\(U\) 为下三角矩阵。 利用矩阵经典性质 \(|A|=|L||U|\),可以轻易算出 \(det(A)\)。 考虑 \(A_{i,j}=\gcd(i,j)\),一个经典性质是 \(\sum_{d|n} \phi(d)=n\),那么设 \(L_{i,j}=[j|i]\),\(U_{i,j}=[i|j]\phi(i)\)。…...

第一周个人作业

我叫张司靓,第一次在博客园写随笔,就跟大家聊聊我自己,还有对接下来学习的想法,想到哪儿说到哪儿,主打一个真实~ 一、先跟大家唠唠我自己我的日常小爱好 我平时没事就爱追剧,玩游戏,举个具体的例子:之前出的莲花楼,我已经n刷了,但每次看到大结局的时候都给我哭的死去…...

基于 Gitlab 实现 Go 的 CI/CD

# 定义流水线的几个阶段 stages:- lint- test- build- docker- deploy# 定义所有 job 的默认环境变量 variables:GO111MODULE: "on"CGO_ENABLED: "0"GOPROXY: "https://goproxy.cn,direct"# 代码静态检查 lint: # 这是 job 的…...

2025.9.11

2025.9.11讲的网络流 1.早读 P13925 [POKATT 2024] 联合猫国 / The Paw-litical Game 感觉好像在哪见过这道题,但是我不会 其实是个 \(dp\) (复杂度对吗?) 就是设 \(f[i]\) 表示考虑前 \(i\) 个最少变成几个 转移就是枚举最后一个合法状态 复杂度是 \(\sum i\) 结尾合法状态…...

容斥原理

1. 定义 有N个集合,称为 S[1],s[2]...s[n] ,则这N个集合的并集为假如有N个毫不相干的约束条件,那么可以将所有满足某个约束条件的状态看作一个集合,这样用容斥原理就可以很轻松地求出所有满足至少一个约束条件的状态总数 2. 题目 洛谷P1287 盒子与球 https://www.luogu.com…...

【B】世良真纯

...

如何使用jobleap.cn避免简历中的严重错误

如何使用jobleap.cn避免简历中的严重错误在求职竞争激烈的今天,一份优质且无误的简历至关重要。许多优秀人才因简历中的细节错误被招聘人员淘汰,但这完全可以避免。jobleap.cn作为专业的人才服务平台,致力于帮助您精准优化简历,提升面试通过率,让您在第一轮筛选中脱颖而出…...

在 Zustand 中创建通用 Action 的优雅实践

为何需要通用 Action? 在 Zustand 状态管理库中,开发者常常需要为状态对象的每个字段单独编写更新函数。然而,随着状态结构的复杂化,这种方式会导致代码冗余,维护成本增加。例如: updateName: (name) => set(() => ({ name })), updateAge: (age) => set(() =&g…...

如何用产品思维优化简历的“用户体验”?

如何用产品思维优化简历的“用户体验”?用产品思维优化简历的用户体验,关键在于让你的简历更符合招聘需求,更易被HR快速理解和认可。简历就像产品,目标用户是HR和用人主管,需求来自职位描述,设计要简单、清晰、兼容多场景,信息需要精准量化。jobleap.cn 是专注于职业发展…...

简历如何优化,简历如何投递,面试如何准备?

简历如何优化,简历如何投递,面试如何准备?简历模板建议简洁,突出关键信息,避免花哨。格式请统一用PDF,防止样式错乱。技术岗位一般不建议贴照片。简历文件名规范为“姓名_学历_岗位_手机号”,这样更专业且便于识别。学历是优势,尤其是名校毕业,可以自信标注;工作经验…...

网络流做题笔记

P3227 [HNOI2013] 切糕 考虑最小割。 对于一个坐标上的点只能选择一个 \(z\) 坐标,将 \(z\) 坐标的费用作为流量顺次连接。 第二个限制条件,先去绝对值,枚举较大值。 再限制较小值,不能小于 \(z-D\),从 \((x,y,z)\) 向 \((x,y,z-D)\) 连 \(inf\) 即可。 方格取数问题 相邻…...

简历优化全攻略:如何写出吸引HR的简历?

简历优化全攻略:如何写出吸引HR的简历?在求职过程中,简历是敲开面试大门的关键。本攻略从准备、写作到完善,教你系统优化简历内容,提高求职成功率。在求职过程中,简历是敲开面试大门的关键。本攻略从准备、写作到完善,教你系统优化简历内容,提高求职成功率。 1. 写简历…...

重塑云上 AI 应用“运行时”,函数计算进化之路

答案是,远未准备好。无论是被誉为“云原生操作系统”的 Kubernetes,还是被看作“终极形态”的无服务器(Serverless),在面对 AI 应用时都暴露出了深刻的架构失配。作者:世如 引言:AI 应用的“电器时代”与运行时的“隐形枷锁” 阿里云王坚博士曾不止一次的强调云计算的核…...

25.9.12 C语言基本数据类型

预备知识 A、1 字节(byte)=8 比特(bit) 1个比特即为1个二进制位数 B、%d 按有符号十进制整型数打印 %6d 按十进制整型数打印,至少6个字符宽(指输出的最后一个字符距行首为六字符)如:xxx123 %f 按浮点数打印(默认为小数点后6位) %6f按浮点数打印,至少6个字符宽 %06f 按…...

Avalonia:基础导航

Avalonia本身就可以实现导航功能,在主页面放置 TransitioningContentControl 控件,把它绑定到ViewModel 中的一个属性上 ViewModelBase? _currentPage;,通过更新这个属性实现导航。 我们先建二个ViewModel,一个是ColorsViewModel,一个是AboutViewModel。 using Avalonia.D…...

bashrc的一些配置记录

linux-Ubuntu22.04的bashrc在配置cuda的时候还需要配置以下内容:export PATH=/usr/local/cuda/bin:$PATH export CUDA_HOME=/usr/local/cuda export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/cuda/lib64 export…...

H5游戏性能优化系列-----协议相关优化

H5通讯协议这一块儿最长将的搭配应该是WebSocket+Protobuf这种模式吧,本篇就聊一下protobuf相关的优化。 Protobuf基本流程导入protobuf库 一般是后端定义协议文件,xxx.proto 现在的引擎都是要求写Ts文件的,所以要生成协议类的.d.ts,这样写协议处理时才有代码提示 直接加载…...

实现我的第一个langchain应用

这里我使用了科大讯飞的免费大模型来尝试 最简的应用 from langchain_community.chat_models import ChatOpenAI from langchain.schema import HumanMessagellm = ChatOpenAI(model_name="xop3qwen1b7", # 模型名称openai_api_base="https://maas-api.cn-huab…...

小说可视化系统设计(程序员副业项目)

https://blog.csdn.net/qq_33002279/article/details/151620553本文来自博客园踩坑狭,作者:韩若明瞳,转载请注明原文链接:https://www.cnblogs.com/han-guang-xue/p/19088351...

MyEMS与开源浪潮:如何重塑全球能源管理的未来格局

在气候变化与数字化转型的双重时代背景下,能源管理已从一项辅助性工作跃升为企业战略的核心。传统的、封闭的、昂贵的商业软件解决方案曾主导这一领域,但如今,一股由开源引领的变革浪潮正以前所未有的力量冲击着旧有格局。在这股浪潮之巅,MyEMS 作为一个全功能的开源能源管…...

React Antd or Antd Pro:findDOMNode is deprecated and will be removed in the next major release.

(旧项目)我一开始用的react:18.3.0, antd:5.21.1, ant-design/pro-components:2.7.19 (1)antd更新日志关于修复这个问题的最新一版是在2024/05/19的5.17.3版本(查询于2025/09/12)而且也是部分修复antd更新日志:https://ant-design.antgroup.com/changelog-cn(2)在 Pro…...

单板挑战4路YOLOv8!米尔瑞芯微RK3576开发板性能实测

在科技飞速发展的当下,人工智能与边缘计算的融合正以前所未有的速度重塑着我们的生活。RK3576芯片拥有4核Cortex-A72以及4核Cortex-A53提供基础算力,6TOPS算力NPU来模型推导运算。使用YOLOv8模型时也是手到擒来,接下来随着步伐看看它表现如何。 YOLO简介 YOLO(You Only Loo…...

doms.ul.querySelectorvs document.querySelector:DOM查询的层级关系

在JavaScript DOM操作中,doms.ul.querySelector和 document.querySelector都是用于查找元素的方法,但它们有重要的区别。让我详细解释它们的关系和差异。 核心区别特性document.querySelectorelement.querySelector​​搜索范围​​整个文档仅限于调用元素的子元素​​执行效…...

穿越钱塘江:一条高铁隧道背后的技术挑战

​2025年9月10日,中铁四局二公司杭州机场高铁站前5标柯桥制梁场首榀箱梁顺利浇筑,标志着铁路箱梁预制施工正式拉开序幕,工程建设全面进入实体施工新阶段。 ▲现场图片(图源:越牛新闻)这一节点不仅意味着杭州机场高铁在土建施工上实现关键突破,也为后续线路铺轨、站房建设…...

Pwn2Own Automotive 2025 决赛日:49个零日漏洞与88万美元奖金揭晓

本文详细记录了Pwn2Own Automotive 2025第三日决赛战况,涵盖ChargePoint/Sony/Autel等品牌设备漏洞利用细节,包括整数溢出、缓冲区溢出、命令注入等技术细节,最终累计颁发88.6万美元奖金。第三天最终战果 欢迎来到Pwn2Own Automotive 2025的第三个也是最后一个比赛日。过去两…...

9.HPA与VPA

HPA 与 VPA ​ 在前面的学习中我们使用了一个 kubectl scale 命令可以来实现 Pod 的扩缩容功能,但是这个是完全手动操作的,要应对线上的各种复杂情况,我们需要能够做到自动化去感知业务,来自动进行扩缩容。为此,Kubernetes 也为我们提供了这样的一个资源对象:Horizontal …...

MyEMS在行动:揭秘开源能源管理系统如何重塑工业与楼宇的能效未来

当“节能降耗”从一个口号变为一项关乎企业生存与发展的关键指标时,背后的管理工具便成为了决胜因素。Across the globe, 从德国的智能工厂到中国的绿色数据中心,一款名为MyEMS的开源系统正在悄然推动一场静悄悄的能源效率革命。 本文将通过场景化的视角,深入剖析MyEMS在不同…...

题解:P14015 [ICPC 2024 Nanjing R] 生日礼物

更差的阅读体验经典套路,我个人认为是橙题。 相邻相等不好刻画,我们直接把偶数位置反转,这样一组相邻相等中恰好有一个被反转,变成删除相邻不同。 那么假设没有 \(2\),最终序列中一定只有 \(0\) 或 \(1\)。所以假设 \(0,1\) 个数分别是 \(c_0, c_1\),那么由于一次消除一个…...

吻得太逼真

无论怎么讲我都觉得虚伪 陪伴你那么久你说是受罪 从前到现在当我是谁 你这花心蝴蝶 昨夜陪你醉伤到我心碎 你竟说我和你不配 完全忘记往日为何 能与我彻夜缠绵 和你吻吻吻吻吻 你吻得太逼真 让我把虚情假意 当作最真心的亲吻 怪自己来不及区分 你对我是酷爱是敷衍 我想问问问问…...