需求和开发模型
文章目录
- 什么是需求?
- 用户需求
- 软件需求
- 用户需求和软件需求的不同
- 开发模型
- 什么是“模型”?
- 软件的生命周期
- 常见的开发模型
- 瀑布模型(Waterfall Model)
- 螺旋模型
- 增量模型、迭代模型
- 敏捷模型
- 测试模型
- V 模型
- W 模型(双 V 模型)
什么是需求?
满足用户期望或正式规定文档(合同、标准、规范)所具有的条件和权能,包含用户需求和软件需求。
用户需求
用户需求:可以简单理解为甲方提出的需求,如果没有甲方,那么就是终端用户使用产品时必须要完成的任务。该需求一般比较简略,通常是一句话。
⽤⼾的需求是五花⼋⻔,往往只是⼀句话⽐如:实现⼀个声控灯,实现⼀个软件的登录功能。
软件需求
软件需求:或者叫功能需求,该需求会详细描述开发人员必须实现的软件功能。 软件需求是测试人员进行测试工作的基本依据。
用户需求和软件需求的不同
案例一:⼥朋友饿了的例⼦
- ⽤⼾需求:⼥朋友说:我饿了。这是⼀个⽤⼾需求,很简略。
- 软件需求:需要你和她反复沟通,了解更加详细具体的需求来制定解决⽅案。
- ⽐如你问她:“想吃啥?”,她说:“随便”
- “吃⽶饭炒菜?”,“不想吃”;“那你想吃啥?”,“随便”
- “吃油泼⾯?”,“不想吃”;“那你想吃啥?”,“随便”
- …
- 最终理解清楚⽤⼾需求之后,知道⼥朋友想吃的是你做的红烧⾁,那么再去研究⾁怎么买,怎么做等等的具体步骤,这是软件需求。
在⼯作中我们实际⻅到的软件需求⽂档类似于下⾯的表述:
软件需求规格说明书
⼀、⽤⼾需求:
平台⽀持邮箱注册
⼆、软件需求:
注意:⽤⼾的需求不能直接作为开发和测试的依据。针对⽤⼾的需求,产品经理需要对用户需求进⾏需求分析(技术可⾏性、市场可⾏性、成本投⼊和收益占⽐等)后才可转变为软件需求。即把用户需求转化为软件需求,开发人员和测试人员工作的直接依据就是软件需求。
开发模型
开发模型实际上指的是开放一款软件或功能所需要具备的开发流程。
什么是“模型”?
随着软件工程学科的发展,人们对计算机软件的认识逐渐深入。软件工作的范围不仅仅局限在程序编写,而是扩展到了整个软件生命周期,如软件基本概念的形成、需求分析、设计、实现、测试、安装部署、运行维护,直到软件被更新和替换新的版本。软件工程还包括很多技术性的管理工作,例如过程管理、产品管理、资源管理和质量管理,在这些方面也逐步地建立起了标准或规范。
软件的生命周期
⽣命周期指的是从⽣命的开始到⽣命结束的⼀段时间。
以⼈为例,⼈类的⽣命周期是从⽣命孕育的开始,中间会经历幼年,童年,少年,⻘年,⽼年,最终直⾄死亡。
软件/产品的⽣命周期也是如此,需求的开始是软件⽣命的起点,中间会经历需求的计划、设计、程序开发、程序测试等阶段,直⾄软件不再进⾏维护便到了⽣命的重点。
软件生命周期是指从软件产品的设想开始到软件不再使用而结束的时间。
如果把软件看成是有生命的事物,那么软件的生命周期可以分成6个阶段,即需求分析、计划、设计、编码、测试、运行维护。
案例:
假如想要建造⼀套房⼦(别问,问就是⼀个⼈造房⼦),房⼦的⽣命周期(流程)是什么样的?
步骤 | 总结 | 映射软件流程 |
---|---|---|
为什么要建房⼦?商品房还是普通住宅?建造100层技术上是否可⾏? | 明确合理的建房⽬标 | 需求分析 |
什么时候开发建房⼦?计划竣⼯时间?多久可以交房? | 计划好时间 | 计划 |
建房前明确流程:先打地基,做基础框架,砌墙、粉刷、⽔电⼯程… | 设计好具体的建房流程 | 设计 |
按照前⾯的流程和时间实施建房中… | 施⼯中 | 编码 |
房屋建造完成,开发商验收成果、买家验收房⼦品质(房⼦是否牢固,是否漏⽔及其他偷⼯减料的地⽅,是否按照规定来建造的) | 检查房屋建造结果 | 测试 |
检查结束开始逐步⼊住,使⽤中出现了各种情况如房屋漏⽔、墙⾯掉⽪、下⽔道堵塞等问题,⼀边使⽤⼀边找物业修理 | 使⽤并及时维护 | 运⾏维护 |
因此,我们就得到了软件(开发)的⽣命周期:
需求分析⸺计划⸺设计⸺编码⸺测试⸺运⾏维护
对于软件的⽣命周期中,每个阶段都在做什么呢?
阶段 | 具体内容 | 产出 |
---|---|---|
需求分析 | 分析⽤⼾需求是否合理,分别从市场需求、技术等⽅⾯进⾏分析。 | 该阶段会输出需求等⽂档。 |
计划 | 对成⽴的需求执⾏需求执⾏计划,多⻓时间内完成该需求,每段时间具体完成哪些功能。 | 该阶段会输出计划等⽂档。 |
设计 | 将需求细化成⼀个个任务,团队成员各司其职领取任务并进⾏技术设计(如何进⾏架构设计,设计哪些接⼝、采⽤什么技术) | 该阶段会输出技术等⽂档。 |
编码 | 开发⼈员参考需求⽂档、设计⽂档、交互图等等⽂件进⾏代码的编写。 | 代码⽂件等⽂档。 |
测试 | 测试⼈员需要介⼊到软件的测试中来,参考测试⽤例对软件进⾏测试。 | 测试⽤例、测试设计与计划、测试报告等⽂档 |
运行维护 | 项⽬测试结束之后,项⽬需要进⾏上线,并对产品进⾏线上的维护。线上的维护主要分为三个⽅⾯。分别为修复性维护、完善性维护和预防性维护。 + **修复性维护:**对项⽬中未发现的问题进⾏修复。 + 完善性维护:对功能进⾏完善。 + **预防性维护:**居安思危,为了避免产品在线上出现⼀些其他不可预料的问题,进⾏⼀些防护的⼿段。 |
常见的开发模型
瀑布模型(Waterfall Model)
瀑布模型在软件⼯程中占有重要地位,是所有其他模型的基础框架。瀑布模型的每⼀个阶段都只执⾏⼀次,因此是线性顺序进⾏的软件开发模式。
瀑布模型的⼀个最⼤缺陷在于:可以运⾏的产品很迟才能被看到。这会给项⽬带来很⼤的⻛险,尤其是集成的⻛险。因为如果在需求引⼊的⼀个缺陷要到测试阶段甚⾄更后的阶段才发现,通常会导致前⾯阶段的⼯作⼤⾯积返⼯,业界流⾏的说法是:“集成之⽇就是爆炸之⽇”。
尽管瀑布模型存在很⼤的缺陷,例如,在前期阶段未发现的错误会传递并扩散到后⾯的阶段,⽽在后⾯阶段发现这些错误时,可能已经很难回头再修正,从⽽导致项⽬的失败。但是⽬前很多软件企业还是沿⽤了瀑布模型的线性思想,在这个基础上做出⾃⼰的修改。例如细化了各个阶段,在某些重点关注的阶段之间掺⼊迭代的思想。在瀑布模型中,测试阶段处于软件实现后,这意味着必须在代码完成后有⾜够的时间预留给测试活动,否则将导致测试不充分,从⽽把缺陷直接遗留给⽤⼾。
瀑布模型优缺点总结:
优点/特点 | 缺点 |
---|---|
+ 强调开发的阶段性 + 线性结构,每个阶段只执⾏⼀次 + 是其他模型的基础框架 | + 测试后置 - 前⾯各阶段遗留的⻛险推迟到测试阶段才被发现,导致项⽬⼤⾯积返⼯,失去了及早修复的机会 - 必须留有⾜够的时间给测试活动,否则导致测试不充分,将缺陷直接暴露给⽤⼾(产品质量差) + 周期太⻓,产品很迟才能被看到和使⽤,可能会导致需求/功能过时 |
瀑布模型存在很严重的项⽬⻛险,那瀑布模型就不能够被采⽤了吗?当然不是。
瀑布模型的适⽤场景:需求固定的⼩项⽬。
然⽽企业中存在许多些规模庞⼤、复杂度⾼、⻛险⼤的项⽬,这种情况下可以哪种模型呢?
螺旋模型
⼀般在软件开发初期阶段需求不是很明确时,采⽤渐进式的开发模式。螺旋模型是渐进式开发模型的代表之⼀,结合了瀑布模型的系统性和迭代模型的灵活性,同时融入了风险分析和评估机制。这对于那些规模庞⼤、复杂度⾼、⻛险⼤的项⽬尤其适合。
这种迭代开发的模式给软件测试带来了新的要求,它不允许有⼀段独⽴的测试时间和阶段,测试必须跟随开发的迭代⽽迭代。因此,回归测试的重要性就不⾔⽽喻了。
以下是上图的展开,也是瀑布模型的变形:
优点 | 缺点 |
---|---|
+ 强调严格的全过程⻛险管理 + 强调各开发阶段的质量 + 增加⻛险分析和原型 | + 项⽬中可能存在的⻛险性与⻛险管理⼈员的技能⽔平有直接关系 + 需求⼈员、资⾦、时间的增加和投⼊,可能会导致项⽬的成本太⾼ |
适⽤场景:规模庞⼤、复杂度⾼、⻛险⼤的项⽬。
增量模型、迭代模型
增量模型是一种软件开发过程模型,它将软件产品(大需求)分解为多个增量部分(小需求),每个部分(小需求)可以独立开发、测试和交付。
增量开发能显著降低项⽬⻛险,结合软件持续构建机制,构成了当今流⾏的软件⼯程最佳实践之⼀。增量开发模型,⿎励⽤⼾反馈,在每个迭代过程中,促使开发⼩组以⼀种循环的、可预测的⽅式驱动产品的开发。因此,在这种开发模式下,每⼀次的迭代都意味着可能有需求的更改、构建出新的可执⾏软件版本,意味着测试需要频繁进⾏,测试⼈员需要与开发⼈员更加紧密地协作。
与此类似的有⼀个迭代开发,增量开发和迭代开发往往容易被⼈认为是一样的,但是其实两者是有区别的。增量是逐块建造的概念,迭代是反复求精的概念。 迭代模型通过反复循环的方式逐步细化和完善软件产品。
- 增量模型是先画⼈的头部,再画⾝体,再画⼿脚……
- 迭代模型是先画整体轮廓,再勾勒出基本雏形,再细化、着⾊……
适⽤场景:⼤型项⽬,需求不明确。
敏捷模型
在早期,迭代瀑布模型⾮常流⾏来完成⼀个项⽬。但是现在开发⼈员在使⽤它开发软件时⾯临着各种各样的问题。主要困难包括**在项⽬开发期间处理来⾃客⼾的变更请求以及合并这些变更所需的⾼成本和时间。**为了克服瀑布模型的这些缺点,在1990年代中期提出了敏捷软件开发模型。
敏捷模型主要旨在帮助项⽬快速适应变更请求。因此,敏捷模型的主要⽬的是促进项⽬的快速完成。要完成这项任务,需要敏捷。敏捷性是通过使过程适应项⽬,删除对特定项⽬可能不是必需的活动来实现的。此外,避免任何浪费时间和精⼒的事情。
在敏捷模型中,需求被分解成许多可以增量开发的⼩部分。敏捷模型采⽤迭代开发。每个增量部分都是在迭代中开发的。每次迭代都旨在⼩⽽易于管理,并且只能在⼏周内完成。⼀次为客⼾计划、开发和部署⼀个迭代。没有制定⻓期计划。
敏捷模型中有⼀个⾮常重要的《敏捷宣⾔》,宣⾔内容:
- 个体与交互重于过程和⼯具:强调高效的沟通
- 可⽤的软件重于完备的⽂档:强调轻文档,文档不应作为验收的标准
- 客⼾协作重于合同谈判:主动及时了解当下的需求
- 响应变化重于遵循计划:能够主动的迎接变化
宣⾔中主要运⽤了对⽐的⼿法,然⽽,在每对⽐对中,后者并⾮全⽆价值,但我们更看重前者。
通过敏捷宣⾔可以总结出敏捷模型的四个特点:轻⽂档,轻流程,重⽬标,重产出。
敏捷开发有很多种⽅式,其中scrum是⽐较流⾏的⼀种。
Scrum 是敏捷模型中的⼀种,⼜称为迭代式增量软件开发模型。在scrum模型中,主要有三个⻆⾊和五个重要会议。
三个⻆⾊:
scrum 由 product owner (产品经理)、scrum master (项⽬经理)和 team (研发团队)组成。
- product owner 负责整理 user story (⽤⼾故事),定义其商业价值,对其进⾏排序,制定发布计划,对产品负责。
- scrum master 负责召开各种会议,协调项⽬,为研发团队服务。
- 研发团队则由不同技能的成员组成,通过紧密协同,完成每⼀次迭代的⽬标,交付产品。
迭代开发:
与瀑布不同,scrum 将产品的开发分解为若⼲个⼩ sprint (迭代),其周期从1周到4周不等,但不会超过4周。参与的团队成员⼀般是5到9⼈。每期迭代要完成的 user story 是固定的。每次迭代会产⽣⼀定的交付。
scrum 的基本流程如上图所⽰:
- 产品负责⼈(product owner)负责整理 user story(收集和整理用户需求),形成左侧的产品代办列表 product backlog。
- 发布计划会议:product owner 负责讲解 user story,对其进⾏估算和排序,发布计划会议的产出就是制定出这⼀期迭代要完成的 user story 列表,即 sprint backlog。
- 迭代计划会议:项⽬团队对每⼀个 user story 进⾏任务分解,分解的标准是完成该 user story 的所有任务,每个任务都有明确的负责⼈,并完成⼯时的初估计。
- 每⽇例会:每天 scrum master 召集站⽴会议,团队成员回答昨天做了什么、今天计划做什么、有什么问题。
- 演⽰会议:迭代结束之后,召开演⽰会议(sprint review),相关⼈员都受邀参加。团队负责向⼤家展⽰本次迭代取得的成果。期间⼤家的反馈记录下来,由 product owner 整理,形成新的 user story。
- 回顾会议:项⽬团队对本期迭代进⾏总结,发现不⾜,制定改进计划。下⼀次迭代继续改进,以达到持续改进的效果。
敏捷中的测试
- 轻⽂档
- 敏捷模型中强调轻⽂档,减少冗长的文档编写,所以测试⼈员不应使⽤传统的 Excel 编写测试⽤例的⽅法,更多的是使⽤思维导图、探索性测试(强调⾃由度,设计和执⾏同时进⾏,根据测试结果不断调整测试计划)、⾃动化测试等。
- 快速迭代
- 敏捷开发中的短周期迭代要求测试人员能够快速响应需求变化,并在有限的时间内完成测试工作。
- 敏捷讲求合作,在敏捷项⽬组中,测试⼈员应多主动跟开发⼈员了解需求、讨论设计、⼀起研究bug出现的原因。
测试模型
测试模型中有两个⾮常重要且具有标志性的测试模型: V 模型和 W 模型。
V 模型
- 单元测试:对代码的最小单元(人为规定)执行测试。一般由开发人员进行。
- 集成测试:将各个模块集成在一起进行测试,确保模块之间的接口和交互正确。
- 系统测试:对整个系统进行测试,确保系统功能符合需求分析阶段定义的需求。
- 验收测试:最终由用户或客户进行验收测试,确保系统满足最终用户的使用需求。
V 模型最早是由 Paul Rook 在 20 世纪 80 年代后期提出的,⽬的是改进软件开发的效率和效果,是瀑布模型的变种。 它将传统的瀑布模型的线性流程与测试活动进行了明确的对应。V 模型强调在每个开发阶段都有相应的测试阶段,确保在开发过程中尽早发现和修复缺陷。
优点:
- 明确的标注了测试过程中存在的不同类型的测试,并且清楚的描述了这些测试阶段和开发过程期间各阶段的对应关系,有效提升测试的质量和效率。
- V模型指出:
- 单元和集成测试应检测程序的执⾏是否满⾜软件设计的要求;
- 系统测试应检测系统功能、性能的质量特性是否达到系统要求的指标;
- 验收测试确定软件的实现是否满⾜⽤⼾需要或合同的要求
**缺点:**仅仅把测试作为在编码之后的⼀个阶段,未在需求阶段就介⼊测试。缺点同瀑布模型。
W 模型(双 V 模型)
V模型中未将测试前置的问题在W模型中得以解决。
W模型通过在需求分析和设计阶段就开始制定测试计划和设计测试用例,实现了测试活动的前置化,能够更早发现和修复问题,特别适合需求明确且对质量要求较高的项目。
特点:
- 测试前置:与 V 模型相比,W 模型将测试活动提前到需求分析和设计阶段,使得测试人员可以更早参与项目。
- 双重验证:每个开发阶段都有对应的测试阶段,形成两个“V”形状,因此称为“双V模型”。
- 强调同步性:开发和测试活动高度同步,确保在开发过程中及时发现问题。
优点:
- 早期发现问题:通过在需求分析和设计阶段就开始制定测试计划和设计测试用例,能够在开发早期发现潜在问题,降低修复成本。
- 提高测试覆盖率:测试活动覆盖了从需求到编码的各个阶段,确保全面验证系统的功能和性能。
- 增强协作:测试人员在项目早期就参与进来,与开发团队紧密协作,共同为产品质量负责。
缺点:
- 需求、设计、编码等活动被视为串⾏的;
- 测试和开发活动也保持着⼀种线性的前后关系,上⼀阶段完全结束,才可正式开始下⼀个阶段⼯作。
- 重流程,⽆法⽀持敏捷开发模式。对于当前软件开发复杂多变的情况,W模型并不能解除测试管理⾯临着困惑。
相关文章:
需求和开发模型
文章目录 什么是需求?用户需求软件需求用户需求和软件需求的不同 开发模型什么是“模型”?软件的生命周期常见的开发模型瀑布模型(Waterfall Model)螺旋模型增量模型、迭代模型敏捷模型 测试模型V 模型W 模型(双 V 模型…...
unity学习61:UI布局layout
目录 1 布局 layout 1.1 先准备测试UI,新增这样一组 panel 和 image 1.2 新增 vertical layout 1.3 现在移动任意一个image 都会影响其他 1.3.1 对比 如果没有这个,就会是覆盖效果了 1.3.2 对比 如果没有这个,就会是覆盖效果了 1.4 总结…...
腾讯混元文生图大模型(Hunyuan-DiT)与Stable Diffusion(SD)对比分析
腾讯混元文生图大模型(Hunyuan-DiT)与Stable Diffusion(SD)对比分析 腾讯混元文生图大模型(Hunyuan-DiT)与Stable Diffusion(SD)作为当前文生图领域的两大代表模型,各自…...
Flume
Flume安装配置 使用的三台主机名称分别为bigdata1,bigdata2,bigdata3。所使用的安装包名称按自己的修改,安装包可去各大官网上下载 1.解压 将Master节点Flume安装包解压到/opt/module目录下 tar -zxvf /opt/software/apache-flume-1.9.0-bi…...
【Python LeetCode】面试经典 150 题
数组 / 字符串快慢指针(双指针)总结88. 合并两个有序数组27. 移除元素26. 删除有序数组中的重复项80. 删除有序数组中的重复项 II Boyer-Moore 投票算法169. 多数元素扩展:寻找 n/3 多数元素 翻转法189. 轮转数组 贪心121. 买卖股票的最佳时机…...
营养助力:进行性核上性麻痹患者的饮食管理
进行性核上性麻痹是一种复杂的神经系统退行性疾病,科学的饮食管理不仅能够改善患者的营养状况,还能为神经系统提供必要的支持,延缓病情进展。 这种疾病会导致吞咽困难、营养吸收障碍等问题,增加营养不良的风险。针对性的饮食调理能…...
spineNET模型详解及代码复现
模型背景 在SpineNet模型诞生之前,多尺度特征融合已成为计算机视觉领域的研究热点。研究者们提出了各种方法来处理不同尺度的特征,如 特征金字塔网络(FPN) 和 深度可分离卷积 。然而,这些方法在跨尺度特征融合方面仍存在局限性。 FPN通过自上而下的路径融合不同尺度的特…...
【Mybatis】如何简单使用mybatis-plus,以及MybatisGenerator自动生成或者实现SQL语句
前言 🌟🌟本期讲解关于mybatis中SQL自动生成的相关知识介绍~~~ 🌈感兴趣的小伙伴看一看小编主页:GGBondlctrl-CSDN博客 🔥 你的点赞就是小编不断更新的最大动力 🎆…...
ds-国内主要显卡
国产显卡 寒武纪思元系列 思元 370:采用 7nm 制程工艺及 chiplet 技术,集成 390 亿个晶体管,最大算力高达 256TOPS(INT8)。是国内第一款公开发布支持 LPDDR5 内存的云端 AI 芯片,内存带宽是上一代产品的 3 …...
类和对象——const修饰的类的对象和函数
const修饰的类的对象和函数 const成员函数和const对象1 const成员函数2 调用关系3 const在成员函数中的位置4 取地址&及const取地址操作符重载 const成员函数和const对象 1 const成员函数 将const修饰的“成员函数”称之为const成员函数,const修饰类成员函数&…...
防火墙的智能选路与NAT实验
实验拓扑 配置IP 防火墙的安全区域划分 销售部和运维部不能互相访问,采取vlan的方式来进行隔离。 在配置vlan之后 ,两个部门将不会通信。 以上是基础配置,只是演示在各个部门不通的情况下,使用什么技术来进行隔离网络,…...
ARM学习(43)armcc HardFault函数链接不到的问题理解
armcc HardFault函数链接不到的问题理解 1、问题背景: 笔者汇编语言编写了一个HardFault异常处理函数,HardFault函数属于芯片架构异常处理函数,没有显著的调用(中断向量表中有该函数地址),且启动函数里面也…...
php序列化与反序列化
文章目录 基础知识魔术方法:在序列化和反序列化过程中自动调用的方法什么是 __destruct() 方法?何时触发 __destruct() 方法?用途:语法示例: 反序列化漏洞利用前提条件一些绕过策略绕过__wakeup函数绕过正则匹配绕过相…...
【STL】7.STL常用算法(2)
STL常用算法(2) 前言简介四.常用拷贝和替换算法1.copy2.replace3.replace_if4.swap 五.算术生成算法1.accumulate2.fill 六.常用集合算法1.set_intersection2.set_union3.set_difference 总结 前言 stl系列主要讲述有关stl的文章,使用STL可以…...
怎么获取免费的 GPU 资源完成大语言模型(LLM)实验
怎么获取免费的 GPU 资源完成大语言模型(LLM)实验 目录 怎么获取免费的 GPU 资源完成大语言模型(LLM)实验在线平台类Google ColabKaggle NotebooksHugging Face Spaces百度飞桨 AI Studio在线平台类 Google Colab 特点:由 Google 提供的基于云端的 Jupyter 笔记本环境,提…...
xr-frame 3D Marker识别,扬州古牌坊 3D识别技术稳定调研
目录 识别物体规范 3D Marker 识别目标文件 map 生成 生成任务状态解析 服务耗时: 对传入的视频有如下要求: 对传入的视频建议: 识别物体规范 为提高Marker质量,保证算法识别效果,可参考Marker规范文档 Marker规…...
盛京开源社区加入 GitCode,书写东北开源生态新篇章
在数字化转型与开源技术蓬勃发展的浪潮下,开源社区已成为推动技术创新的核心力量。盛京开源社区(SJOSC)作为沈阳地区的开源交流平台,始终致力于连接开发者、企业及高校,构建区域技术生态圈。 现在,盛京开源…...
【六祎 - Note】SQL备忘录;DDL,DML,DQL,DCL
SQL备忘录 from to : 点击访问源地址...
几个api
几个api 原型链 可以阅读此文 Function instanceof Object // true Object instanceof Function // true Object.prototype.isPrototypeOf(Function) // true Function.prototype.isPrototypeOf(Object) // true Object.__proto__ Function.prototype // true Function.pro…...
(转)Java单例模式(1)
l单例模式的好多:节约了内存,提高了代码的执行效率。...
return和print
目录 1.print的用法 2.return的用法 3. print 和 return 的区别 4.总结 1.print的用法 print 是一个函数,用于将信息输出到控制台(终端)。它主要用于显示程序运行的结果,方便用户查看。print 的作用是输出内容,而不…...
设计模式——过滤器模式在 Spring 中的实践
设计模式——过滤器模式在 Spring 中的实践 基础介绍模块介绍简单实现业务落地额外问题 基础介绍 过滤器模式(Filter Pattern),也称为标准模式(Criteria Pattern),是结构型设计模式之一,旨在通…...
15.7 LangChain 版智能销售顾问实战:构建企业级知识驱动型对话系统
LangChain 版智能销售顾问实战:构建企业级知识驱动型对话系统 关键词:LangChain 销售系统、知识图谱集成、对话状态管理、生产级部署、多链协同优化 1. LangChain 销售系统架构设计 1.1 模块化架构全景图 #mermaid-svg-42MLuD3aMcpX0y8c {font-family:"trebuchet ms&q…...
QT异步编程之线程池QThreadPool
一、概述 在一个应用程序中,我们需要多次使用线程,也就意味着,我们需要多次创建并销毁线程。而创建线程并销毁线程的过程势必会消耗内存。QThreadPool是Qt框架中用于管理线程池的类。它提供了一种高效的方式来管理和重用线程,从而…...
HTMLS基本结构及标签
HTML5是目前制作网页的核心技术,有叫超文本标记语言。 基本结构 声明部分位于文档的最前面,用于向浏览器说明当前文档使用HTML标准规范。 根部标签位于声明部分后,用于告知浏览器这是一个HTML文档。< html>表示文档开始,&l…...
linux(2)用户管理
文章目录 1. 切换用户2. 添加删除用户3.写改密码 1. 切换用户 # 切换用户名,不切换工作目录 su 用户名 # 一起切换工作目录 su - 用户名 # 退出用户 exit2. 添加删除用户 # 添加用户 sudo adduser username # 推荐sudo useradd -m -s /bin/bash 用户名-m 如果创建…...
蓝桥杯好题推荐----高精度乘法
🌈个人主页:羽晨同学 💫个人格言:“成为自己未来的主人~” 题目链接 P1303 A*B Problem - 洛谷https://www.luogu.com.cn/problem/P1303 解题思路 这道题的思路,其实和前面差不多,我们主要说一下最为关键的部分&…...
辛格迪客户案例 | 甫康(上海)健康科技有限责任公司药物警戒管理系统(PVS)项目
01 案例企业 甫康(上海)健康科技有限责任公司(简称“甫康”)该公司成立于2015年11月3日。公司的核心团队由来自中国和国外顶级制药公司的专业人士组成,与中国科学院上海药物研究所等知名研究机构保持紧密合作。此外,甫康药业还与…...
【Java】System 类
目录 静态字段标准输入输出流相关 常用静态方法数组操作时间操作系统操作属性操作安全管理 其他方法 System 类位于 java.lang 包下,是一个 final 类,意味着它不能被继承。并且其所有构造方法都是私有的,这使得我们无法创建 System 类的实例&…...
认识苹果APP开发框架
苹果APP开发框架是苹果公司为开发者提供的一套工具和API,旨在帮助开发者高效、安全地构建高质量的iOS、macOS、watchOS和tvOS应用程序。以下是对苹果APP开发框架的详细认识: 1. 框架的定义与作用 框架(Framework)是包含方法资源…...
SQL分组问题
下列为电商公司用户访问时间数据 统计某个用户连续的访问记录,如果时间间隔小于60s,就分为一组 id ts 1001 17523641234 1001 17523641256 1002 17523641278 1001 17523641334 1002 17523641434 1001 17523641534 1001 17523641544 1002 17523…...
笔记20250225
关于上拉电阻和下拉电阻的作用 原理 上拉电阻:在上拉电阻所连接的导线上,如果外部组件未启用,上拉电阻则“微弱地”将输入电压信号“拉高”。当外部组件未连接时,对输入端来说,外部“看上去”就是高阻抗的,…...
千峰React:案例一
做这个案例捏 因为需要用到样式,所以创建一个样式文件: //29_实战.module.css .active{text-decoration:line-through } 然后创建jsx文件,修改main文件:导入Todos,写入Todos组件 import { StrictMode } from react …...
说说JVM的底层原理(JAVA是如何运行的)?
JVM 底层原理深度解析 Java 虚拟机(JVM)是 Java 程序运行的核心环境,其设计融合了内存管理、类加载、垃圾回收和高效执行等复杂机制。以下从底层视角详细解析其核心模块,并结合实际场景说明其工作原理。 一、类加载机制 1. 类加…...
IO 和 NIO 有什么区别?
文章目录 阻塞模式与非阻塞模式数据处理方式通信模型应用场景 阻塞模式与非阻塞模式 IO:是阻塞式的 IO 操作。在传统的 IO 中,当一个线程执行读操作或者写操作时,该线程会被阻塞,直到操作完成。例如,在从文件读取数据…...
JVM 面试
JVM 运行时内存区域划分是怎样的? 程序计数器:记录当前线程执行的字节码指令的地址,是线程私有的。 Java 虚拟机栈:每个方法在执行时都会创建一个栈帧,用于存储局部变量表、操作数栈、动态链接、方法出口等信息&#…...
七、Redis集群高可用
一、节点与插槽管理 添加主节点 准备节点 首先准备一个新的节点,添加配置文件。 vi /usr/local/redis/cluster/conf/redis-6377.conf # 放行访问IP限制 bind 0.0.0.0 # 端口 port 6377 # 后台启动 daemonize yes # 日志存储目录及日志文件名 logfile "/us…...
WPF12-MVVM
目录 1. 什么是MVVM2. 实现简单MVVM2.1. Part 12.2. Part 21. 什么是MVVM MVVM 是 Model-View-ViewModel 的缩写,是一种用于构建用户界面的设计模式,是一种简化用户界面的事件驱动编程方式。 MVVM 的目标是实现用户界面和业务逻辑之间的彻底分离,以便更好地管理和维护应用…...
多智能体博弈代码案例
多智能体博弈代码案例 直接可用,我不吝啬 from openai import OpenAI import random# 定义不同人物角色的提示 CHARACTER_PROMPTS = {"专家": "你是该领域的权威专家,知识渊博,回答严谨专业。"...
【AHK】资源管理器自动化办公实例/自动连点设置
此处为一个自动连续点击打开检查的自动化操作案例,没有quicker的鼠键录制,不常用了,做个备份 #MaxThreadsPerHotkey 2 ; 这个是核心!!!!确保可以同时运行多个热键或标签global isRunning : tru…...
Python安装环境变量
1、确保已经安装python到电脑上 2、到系统上环境变量位置 3、新建 系统变量,变量名为PYTHON_HOME,变量值为python安装目录 4、 点击系统变量的path,并新建环境变量 5、测试 ,windowsR,并输入cmd,尝试命令python --ver…...
Flink同步数据mysql到doris问题合集
Flink同步数据mysql到doris 官方同步流程Doris安装下载地址导入镜像启动配置 Flink-cdc安装(自制)下载地址导入镜像启动命令 启动问题修复Flink报错Could not acquire the minimum required resources.作业报错 Mysql8.0 Public Key Retrieval is not al…...
Pytest测试用例执行跳过的3种方式
文章目录 1.前言2.使用 pytest.mark.skip 标记无条件跳过3.使用 pytest.mark.skipif 标记根据条件跳过4. 执行pytest.skip()方法跳过测试用例 1.前言 在实际场景中,我们可能某条测试用例没写完,代码执行时会报错,或者是在一些条件下不让某些…...
spring boot 连接FTP实现文件上传
spring boot 连接FTP实现文件上传 maven: <!--ftp--><dependency><groupId>commons-net</groupId><artifactId>commons-net</artifactId><version>3.8.0</version></dependency>接口示例: ApiO…...
深入解析/etc/hosts.allow与 /etc/hosts.deny:灵活控制 Linux 网络访问权限
文章目录 深入解析/etc/hosts.allow与 /etc/hosts.deny:灵活控制 Linux 网络访问权限引言什么是 TCP Wrappers?工作原理 什么是 /etc/hosts.allow 和 /etc/hosts.deny?匹配规则配置语法详解配置示例允许特定 IP 访问 SSH 服务拒绝整个子网访问…...
短跑怎么训练提高最快·棒球1号位
棒球运动员的短跑能力直接影响跑垒、防守和进攻效率,提升短跑速度需结合专项需求(如爆发力、加速度、变向能力)进行系统训练。以下为针对性训练方案: 一、专项爆发力训练(提升起跑速度) 抗阻冲刺 用弹力带…...
USRP7440-通用软件无线电平台
1、产品描述 USRP7440基于第三代XILINX Zynq UltraScale RFSoC架构,它将射频ADC、DAC、ARM、FPGA等集成一体,瞬时带宽可以达到2.5GHz,尤其适合于射频直采应用,比如通信与雷达。 第一代RFSOC高达4GHz • 8x 或 16x 6.554GSPS DAC…...
51c大模型~合集48
我自己的原文哦~ https://blog.51cto.com/whaosoft/11940475 #Mini-Omni 让大模型能听会说,国内机构开源全球首个端到端语音对话模型 本文出自启元世界多模态算法组,共同一作是来自清华大学的一年级硕士生谢之非与启元世界多模态负责人吴昌桥&…...
004-利用Docker安装Mysql
利用Docker安装Mysql 一、在镜像仓库找到 Mysql1.镜像仓库地址2.复制命令3.下载Mysql镜像4.查看镜像 二、创建实例并启动三、用本地工具连接数据库四、设置 Mysql 配置 一、在镜像仓库找到 Mysql 1.镜像仓库地址 https://hub.docker.com 2.复制命令 docker pull mysql:8.0…...
Web自动化之Selenium添加网站Cookies实现免登录
在使用Selenium进行Web自动化时,添加网站Cookies是实现免登录的一种高效方法。通过模拟浏览器行为,我们可以将已登录状态的Cookies存储起来,并在下次自动化测试或爬虫任务中直接加载这些Cookies,从而跳过登录步骤。 Cookies简介 …...