软降工程学系统实现
一、程序编码
程序编码是设计的继续,将软件设计的结果翻译成用某种程序设计语言描述的源代码。
程序编码涉及到方法、工具和过程。
程序设计风格和程序设计语言的特性会深刻地影响软件的质量和可维护性。
要求源程序具有良好的结构性和设计风格。
程序设计风格
(1)源程序文档化
程序内部的文档包括恰当的标识符、适当的注释和程序的视觉组织等。
标识符应选取含义鲜明的名字,有一定实际意义,名字不是越长越好,必要时采用缩写。
注释作为程序员与读者之间通信的重要手段决不是可有可无的,分为序言性注释和功能性注释。
利用空格、空行和移行,提高程序的可视化程度。
(2)数据说明
设计阶段已经确定了数据结构的组织及其复杂性;在编写程序时,则需要注意数据说明的风格。
为了使程序中数据说明更易于理解和维护,必须注意以下几点:
数据说明的次序应当规范化
说明语句中变量安排有序化
使用注释说明复杂数据结构
(3)语句构造
设计阶段确定软件的逻辑结构,编码阶段的任务是构造语句。语句构造力求简单、直接,不能为片面追求效率而使语句复杂化。
在一行内只写一条语句 , 采取适当的移行格式,使程序的逻辑和功能变得更加明确。
程序编写首先应当考虑清晰性 不要刻意追求技巧性。
程序要直截了当地说明程序员的用意
尽量采用三种基本控制结构来编写程序,避免不必要的转移,尽量少用GOTO语句。
利用括号使表达式的运算次序清晰直观。
避免大量使用循环嵌套和条件嵌套。
避免采用过于复杂的条件测试,尽量少用“否定”条件的条件语句。
尽可能使用库函数。
尽可能用通俗易懂的伪码描述程序流程,然后再翻译成必须使用的语言。
确保模块独立,模块内信息隐蔽,耦合清晰可见。
(4)输入和输出
输入和输出信息是与用户的使用直接相关的。输入和输出的方式和格式应当尽可能方便用户的使用。一定要避免因设计不当给用户带来的麻烦。
因此,在软件需求分析阶段和设计阶段,就应基本确定输入和输出的风格。系统能否被用户接受,有时就取决于输入和输出的风格。
设计和实现考虑原则:
对所有的输入数据都要进行检验,识别错误的输入,以保证每个数据的有效性;
检查输入项各种组合的合理性,必要时报告输入状态;
输入的步骤和操作尽可能简单,保持简单的输入格式;
输入数据时,应允许使用自由格式;
应允许缺省值;
交互式输入时,使用提示符明确提示交互输入的请求;
最好使用输入结束标志,不要由用户指定输入数据数目;
给所有的输出加注解,并设计输出报表格式。
(5)程序效率
程序的效率是指程序的执行速度及程序所需占用的内存存储空间。
程序编码是最后提高运行速度和节省存储的机会,在此阶段不能不考虑程序的效率。
讨论程序效率的三条原则:
①效率是性能要求,应在需求分析阶段确定这方面要求;
②效率是靠好的设计来提高的;
③程序的效率和程序的简单程度是一致的。
程序设计语言
程序编码阶段的任务是将软件的详细设计转换成用程序设计语言实现的程序代码,即把用PDL等工具描写的算法,翻译成计算机能接受的诸如C++、Java等程序设计语言的程序。 因此,程序设计风格和设计语言的性能对于程序设计的效率和质量有着直接的关系。
(1)程序设计语言的基本成分
①数据部分:程序中构造的数据类型,描述程序中使用的各种类型的数据,如变量、数组、指针等。
②运算部分:程序中允许执行的运算,用以描述程序中所需执行的运算。
是哪控制部分:程序中允许使用的控制结构,用它们构造程序的控制逻辑。
④传输部分:传输数据的方式,如输入/输出语句。
(2)分类
①按抽象级别
低级语言,包括机器语言和汇编语言,与特定计算机硬件相关。
高级语言,不反映特定计算机体系结构,表示方法更接近待解决的问题,包括FORTRAN、C/C++、Java等。
②按应用范围
通用语言,适用多种应用,包括FORTRAN、C、C++、Java等。
专用语言,为特殊应用而设计,具有特定的语法形式、结构及词汇,与问题的相应范围密切相关。例如PROLOG、Lisp等。
③按对用户的要求
过程性语言,描述计算过程,如 C、FORTRAN等。
非过程性语言,不显式指定处理细节,如查询语言、原型语言等。
(3)语言选择原则
为特定开发项目选择程序设计语言时,应从技术角度、工程角度、心理学角度评价和比较各种语言的适用程度,考虑现实可能性,作出合理的折衷。
①编译程序应具有较高的效率② 尽可能应用代码生成的工具 ③源程序应具有可移植性④工程的规模⑤ 软件的应用领域⑥用户的要求 ⑦程序员的知识
二、软件测试
尽管在分析、设计和实现过程中,使用了许多保证软件质量的方法,但难免还会犯错误。 软件开发过程必须伴有质量保证活动。 软件测试是在软件投入运行前,对分析、设计和编码的最终复审。
(1)目的
测试是为了发现程序中的错误而执行程序的过程;一个成功的测试是发现了至今为止尚未发现的错误的测试;一个好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案。
以最少的时间和人力,系统地找出软件中潜在的各种错误和缺陷。如果成功地实施了测试,就能发现软件中的错误。
测试不能表明软件不存在错误,只能说明软件中存在错误。测试的附带收获是,它能够证明软件的功能和性能与需求说明相符。
收集的测试结果数据为软件可靠性分析提供依据。
(2)准则
①所有的测试都应追溯到用户要求,并将“尽早地、不断地进行软件测试”作为软件开发者的座右铭。
②应从“小规模”测试开始,逐步进行“大规模”测试。
③远在测试开始之前就制定出测试计划并严格地执行,排除测试的随意性。
④穷尽测试是不可能的,应精心地设计测试方案。
⑤为达到最佳测试效果,应由独立的第三方从事测试工作,限制开发人员检查自己的程序。
⑥全面检查每个测试结果,妥善保存测试计划、测试用例、出错统计和分析报告,为维护提供方便。
(3)信息流
三类输入:软件配置、测试配置、测试工具
输出测试结果,发生错误对软件进行调试,并修改程序,修改好再次返回测试。
输入预测结果,根据结果对出错数据进行可靠性分析
(4)测试与各阶段的关系
软件测试不等于程序测试
所有的测试都应追溯到用户需求
问题的根源可能在开发前期的各阶段 解决、纠正错误也必须追溯到前期工作
软件测试贯穿软件定义与开发的整个期间 各阶段所得的文档都应成为测试的对象
(5)软件测试方法
静态测试方法:人工测试方法,计算机辅助静态分析
动态测试方法:黑盒测试和白盒测试
黑盒测试
将测试对象看做一个黑盒,测试人员不考虑程序内部的逻辑结构和内部特性,只依据需求规格说明,检查程序的功能是否符合其规格说明。
黑盒测试又称功能测试或数据驱动测试。
测试人员充当客户来使用它。
黑盒测试——等价类划分
典型的黑盒测试方法,不考虑程序的内部结构,只依据程序的规格说明来设计测试用例。
把所有可能的输入数据,即程序的输入域划分成若干部分,然后从每一部分中选取少数代表性数据做为测试用例。
设计测试用例要经历划分等价类(列出等价类表)和选取测试用例两步。
等价类指某个输入域的子集,该集合中,各个输入数据对于揭露程序中的错误都是等效的。 测试某等价类的代表值等价于测试该类的其他值。 等价类的划分有两种情况:①有效等价类:对于程序规格说明来说,是合理、有意义的输入数据构成的集合。 ② 无效等价类:对于程序的规格说明来说,是不合理、无意义的输入数据构成的集合。
确立了等价类之后,建立等价类表,列出所有划分出的等价类。
按有效等价类的一个测试用例尽可能多地覆盖尚未被覆盖的有效等价类和无效等价类的一个测试用例仅覆盖一个尚未被覆盖的无效等价类的原则从划分的等价类中选择测试用例。
黑盒测试——边界值分析
另一种黑盒测试方法,是等价类划分的补充。人们从长期测试的经验得知,大量的错误发生在输入或输出范围的边界上,而不是在输入范围的内部。
首先应确定边界情况,针对各种边界情况设计测试用例,可以查出更多的错误。
应选取正好等于,刚刚小于或刚刚大于边界的值做为测试数据,而不是选取等价类中的典型值或任意值做为测试数据。
与悬崖很类似
黑盒测试——因果图
等价类划分方法和边界值分析方法,都着重考虑输入条件,但未考虑输入条件间的联系。
若测试时必须考虑输入条件的各种组合,可使用一种适合于描述对于多种条件的组合,相应产生多个动作的形式来设计测试用例,这就需要因果图。
因果图方法最终生成的是判定表,它适合于检查程序输入条件的各种组合情况。
黑盒测试——错误推测法
人们可以靠经验和直觉推测程序中可能存在的各种错误,从而有针对性地编写检查这些错误的例子,这就是错误推测法。
错误推测法基本想法:列举程序中所有可能的错误和容易发生错误的特殊情况,根据它们选择测试用例。例如,数据测试中的缺省值、空值、零值等。
白盒测试
将测试对象看做一个玻璃盒,测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试,提高测试覆盖率。
白盒测试又称结构测试或逻辑驱动测试。
在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。
利用程序内部的逻辑结构及有关信息,设计或选择测试用例,测试所有逻辑路径,对软件的过程性细节做细致的检查。
白盒测试——逻辑覆盖
逻辑覆盖以程序内部逻辑结构为基础,是一系列测试过程的总称,逐渐进行越来越完整的通路测试。
①语句覆盖:语句覆盖就是设计若干测试用例,运行被测程序,使每一个可执行语句至少执行一次。
②判定覆盖:又称分支覆盖,设计若干测试用例,运行被测程序,使程序中每个判断的取真分支和取假分支至少经历一次。
③条件覆盖:设计若干测试用例,运行被测程序,使程序中每个判断的每个条件的可能取值至少执行一次。
④判定-条件覆盖:为兼顾判定覆盖和条件覆盖,提出了判定-条件覆盖,即设计足够多的测试用例,使得: 每个条件的所有可能取值至少执行一次; 同时每个判断的每个分支至少执行一次。
⑤条件组合覆盖:设计足够的测试用例,运行被测程序,使每个判断的所有可能的条件取值组合至少执行一次。
⑥路径覆盖:设计足够的测试用例,覆盖程序中所有可能的路径。
白盒测试——基本路径测试
基本路径测试方法把覆盖的路径数压缩到一定限度内,程序中的循环最多只执行一次。
使用基本路径测试技术设计测试用例的步骤:1、根据详细设计结果画出相应的流图; 2、计算流图的环路复杂度; 3、确定基本路径集合; 4、设计执行基本路径集中每条路径的测试用例。
控制流图的基础上分析控制构造的环路复杂度,用来度量程序的逻辑复杂性,计算如下:控制流图G中的区域数; 环路复杂度V(G)=E-N+2,其中E是流图中边数,N是节点数; 环形复杂度V(G)=P+1,其中P是流图中判定节点的数目。
环路复杂度给出了基本路径集中的独立路径的数量,这是确保程序中所有语句至少被执行一次所需的测试数量的上界。 独立路径是指至少引入一个以前未处理的新语句或新条件的一条路径。用流图术语描述,独立路径至少包含一条在定义该路径前不曾用过的边。 注意,基本路径集不是唯一的。
三、软件测试过程
(1)单元测试
单元测试又称模块测试,针对软件设计的最小单位——程序模块,进行检验的测试工作。
目的在于发现各模块内部可能存在的错误。
单元测试从程序内部结构出发设计测试用例。
多个模块可以平行、独立进行单元测试。
单元测试内容
测试者依据详细设计说明书和源程序清单,了解该模块的逻辑结构和模块的I/O条件。包括模块接口、局部数据结构、重要执行通路、出错处理、边界条件
单元测试环境
模块并不是一个独立的程序,在考虑测试模块时,同时要考虑它和外界的联系。 用一些辅助模块去模拟与被测模块有联系的其他模块。包括驱动模块和桩模块
(2)集成测试
又称组装测试或联合测试,在单元测试基础上,将模块按要求组装为系统,发现与接口有关的问题:连接时,穿越模块接口的数据是否会丢失; 一个模块的功能是否对另一模块产生不利影响; 全局数据结构是否有问题; 各子功能组合起来,能否达到预期的父功能; 单个模块的误差累积起来是否会放大。
一次性集成
也叫整体拼装,首先对每个模块分别进行单元测试,然后把所有模块一次全部集成进行测试,最终得到要求的软件系统。
增量式集成
又称渐增式组装,首先对每个模块测试,然后将这些模块逐步组装成较大的系统。 在组装的过程中边连接边测试,以发现连接过程中产生的问题。通过增量逐步加入,组装成为要求的软件系统。
①自顶向下增量:按系统程序结构,将模块沿控制层次自顶向下进行组装。 自顶向下的增量方式在测试过程中较早地验证了主要的控制和判断点。 两种组装策略:广度优先和深度优先。
②自底向上增量:从程序模块结构的最底层的模块开始集成和测试。 模块自底向上进行组装,对于一个给定层次的模块,因为其子模块(包括子模块的所有下属模块)已经集成并测试完成,需要从子模块得到的信息可以直接得到,所以不再需要桩模块。 低层的多个模块可以并行测试,提高测试效率。
③混合式增量:对软件结构中的中、上层模块采用自顶向下的集成测试方法; 对下层模块和关键算法模块采用自底向上的集成测试方法; 形成从上下向中间逼近的混合式测试方法。
集成测试完成标志:集成测试应由专门的测试小组进行,测试小组由有经验的系统设计人员和程序员组成,测试活动要在评审人员出席的情况下进行。完成后提交 集成测试计划 、 集成测试规格说明 、 集成测试分析报告。
(3)确认测试
目标是验证软件的有效性,验证软件的功能和性能等特性是否与用户的要求一致,复查软件配置。
有效性测试
任务是验证被测软件是否满足需求规格说明书列出的需求,是确认测试的基础,通常运用黑盒测试方法。经过确认测试,有下述两种可能的结果:测试结果与预期结果相符和 测试结果与预期结果不符
复查软件配置
软件配置复查的目的是保证:软件配置的所有成分都齐全; 各方面的质量都符合要求; 具有维护阶段所必需的细节; 已编排好分类的目录。
除了按合同规定的内容和要求人工审查软件配置外,确认测试过程还应该严格遵循用户指南及其他操作程序。
确认测试必须有用户积极参与(当软件为特定用户开发时,通过验收测试,让用户验证所有的需求是否已经满足/当软件是为了多个用户开发的商品软件时,让每个用户逐个执行验收测试是不切实际的)或者以用户为主进行,由用户设计测试用例,使用生产中的实际数据进行测试。
α测试
由用户在开发环境下进行的,也可以是开发机构内部的用户在模拟实际操作环境下进行的测试。
α测试是在受控环境下进行的测试,开发者坐在用户旁边参与测试,随时记下错误情况和问题。
目的是评价软件的功能、可使用性、可靠性、性能和支持,尤其注重产品的界面和特色。
α测试可以从编码结束或单元测试完成后开始,也可以在确认测试过程中产品达到一定的稳定和可靠程度之后再开始。
β测试
由用户在实际使用环境下进行,开发者通常不在测试现场。
β测试是在开发者无法控制的环境下进行的软件现场应用,由用户记下遇到的问题(真实的以及主观认定的),定期向开发者报告。
β测试衡量产品的功能、可使用性、可靠性、性能和支持,着重于产品的支持性。
β测试处在整个测试的最后阶段,当α测试达到一定的可靠程度时才开始β测试,所有手册文本在此阶段完全定稿。
确认测试后需要提交的文档:确认测试计划、 确认测试规格说明、 确认测试分析报告、 最终的用户手册和操作手册、 项目开发总结报告。
四、软件调试
调试在成功测试阶段后开始,任务是进一步诊断和改正程序中潜在的错误。
调试活动由两部分组成:① 确定程序中错误的位置和性质; ②对程序(设计,编码)进行修改,排除错误。
调试是通过现象找出原因的一个思维分析的过程,是一个具有很强技巧性的工作。
调试过程:①确定出错位置;②找出错误原因;③修改排除错误;④重复进行暴露该错误的测试。
调试方法
①强行排错(蛮干法) ②回溯法 ③原因排除法(对分查找、归纳法、演绎法)
强行排错法
这种方法目前使用较多,不需要过多的思考,比较省脑筋,效率较低。
内存全部打印调试:在大量数据中寻找出错位置;
程序特定部位设置打印语句:把打印语句插在出错的源程序的各关键变量改变部位、重要分支部位、子程序调用部位,跟踪程序执行,监视重要变量的变化;
自动调试工具:利用某些语言的调试功能或专门的调试工具,分析程序的动态过程。
回溯法
在小程序中常用的一种有效的调试方法。 一旦发现了错误,首先分析错误征兆,确定最先发现“症状”的位置。然后,人工沿程序的控制流程,向回追踪源程序代码,直到找到错误根源或确定错误产生的范围。
对分查找法
如果已知每个变量在程序中若干个关键点的正确值,可以在程序中点附近“注入”这些变量的正确值,然后运行程序并检查输出。若输出结果正确,则错误原因在程序的前半部分;反之,错误原因在程序的后半部分。 对错误原因所在部分重复使用上述方法,直至把出错范围缩小到容易诊断的程度为止。
调试原则
1、确定错误性质和位置的原则:①分析与错误征兆相关信息,避免用试探法(最后手段);② 避开死胡同;③ 将调试工具作为辅助手段(帮助思考但不能代替思考)。
2、修改错误的原则:①注意错误的群集现象,出错多的地方很可能还有错误;② 不能只修改错误的表象,而没有修改错误的本身; ③修正一个错误的同时,避免引入新的错误;④ 改错过程暂时回到程序设计阶段,注意程序设计风格。
相关文章:
软降工程学系统实现
一、程序编码 程序编码是设计的继续,将软件设计的结果翻译成用某种程序设计语言描述的源代码。 程序编码涉及到方法、工具和过程。 程序设计风格和程序设计语言的特性会深刻地影响软件的质量和可维护性。 要求源程序具有良好的结构性和设计风格。 程序设计风格…...
001 SpringMVC介绍
文章目录 基础概念介绍BS和CS开发架构应用系统三层架构MVC设计模式 SpringMVC介绍SpringMVC是什么SpringMVC与Spring的联系为什么要学习SpringMVC 六大组件介绍六大组件(MVC组件其他三大组件)说明 基础概念介绍 BS和CS开发架构 一种是C/S架构,也就是客户端/服务器…...
深入解析scikit-learn中的交叉验证方法
交叉验证是机器学习中用于评估模型性能的重要技术,它可以帮助我们理解模型在未知数据上的泛化能力。scikit-learn(简称sklearn)是一个广泛使用的Python机器学习库,提供了多种交叉验证方法。本文将详细介绍scikit-learn中提供的交叉…...
分布式kettle调度管理平台简介
介绍 Kettle(也称为Pentaho Data Integration)是一款开源的ETL(Extract, Transform, Load)工具,由Pentaho(现为Hitachi Vantara)开发和维护。它提供了一套强大的数据集成和转换功能,…...
002-基于Sklearn的机器学习入门:基本概念
本节将继续介绍与机器学习有关的一些基本概念,包括机器学习的分类,性能指标等。同样,如果你对本节内容很熟悉,可直接跳过。 2.1 机器学习概述 2.1.1 什么是机器学习 常见的监督学习方法 2.1.2 机器学习的分类 机器学习一般包括监…...
ubuntu 默认的PATH配置
ubuntu 默认的PATH配置 在Ubuntu系统中,PATH环境变量是非常关键的,因为它定义了操作系统在接收到用户输入命令时,搜索可执行文件的目录顺序。这个变量的配置决定了哪些命令可以被系统全局识别和执行。 默认的PATH配置 Ubuntu的默认PATH环境…...
JAVA妇产科专科电子病历系统源码,前端框架:Vue,ElementUI
JAVA妇产科专科电子病历系统源码,前端框架:Vue,ElementUI孕产妇健康管理信息管理系统是一种将孕产妇健康管理信息进行集中管理和存储的系统。通过建立该系统,有助于提高孕产妇健康管理的效率和质量,减少医疗事故发生的…...
代码随想录算法训练营Day56|所有可达路径、797.所有可能的路径
所有可达路径 98. 所有可达路径 (kamacoder.com) 深度优先搜索,和之前的回溯题类似。 #include <iostream> #include <vector> using namespace std;// 定义一个二维向量来存储所有可能的路径 vector<vector<int>> paths; // 定义一个向…...
DNF手游鬼剑士攻略:全面解析流光星陨刀的获取与升级!云手机强力辅助!
《地下城与勇士》(DNF)手游是一款广受欢迎的多人在线角色扮演游戏,其中鬼剑士作为一个经典职业,因其强大的输出能力和炫酷的技能特效,吸引了众多玩家的青睐。在这篇攻略中,我们将详细介绍鬼剑士的一把重要武…...
npm创建一个空的vue3项目的方法或者pnpm创建vue3项目
1、前提我们已经安装了npm,或者pnpm 2、我们用npm来创建vue3项目 快速上手 | Vue.js 官网地址 这里我安装是的 node v18.20.3 以下是安装过程 : npm create vuelatest 根据自己的需要进行创建即可。 3、我们用pnpm来创建vite vue3项目 pnpm create …...
LSH算法:高效相似性搜索的原理与Python实现I
局部敏感哈希(LSH)技术是快速近似最近邻(ANN)搜索中的一个关键方法,广泛应用于实现高效且准确的相似性搜索。这项技术对于许多全球知名的大型科技公司来说是不可或缺的,包括谷歌、Netflix、亚马逊、Spotify…...
cesium 添加 Echarts图层(人口迁徒图)
cesium 添加 Echarts 人口迁徒图(下面附有源码) 1、实现思路 1、在scene上面新增一个canvas画布 2、通坐标转换,将经纬度坐标转为屏幕坐标来实现 3、将ecarts 中每个series数组中元素都加 coordinateSystem: ‘cesiumEcharts’ 2、示例代码 <!DOCTYPE html> <ht…...
Windows下快速安装Open3D-0.18.0(python版本)详细教程
目录 一、Open3D简介 1.1主要用途 1.2应用领域 二、安装Open3D 2.1 激活环境 2.2 安装open3d 2.3测试安装是否成功 三、测试代码 3.1 代码 3.2 显示效果 一、Open3D简介 Open3D 是一个强大的开源库,专门用于处理和可视化3D数据,如点云、网格和…...
无法下载 https://mirrors./ubuntu/dists/bionic/main/binary-arm64/Packages
ubuntu系统执行sudo apt update命令的时候,遇到如下问题: 忽略:82 https://mirrors.tuna.tsinghua.edu.cn/ubuntu bionic-backports/universe arm64 Packages 错误:81 https://mirrors.tuna.tsinghua.edu.cn/ubuntu bionic-backports/main arm64 Packa…...
最新CRMEB商城多商户java版源码v1.6版本+前端uniapp
CRMEB 开源商城系统Java版,基于JavaVueUni-app开发,在微信公众号、小程序、H5移动端都能使用,代码全开源无加密,独立部署,二开很方便,还支持免费商用,能满足企业新零售、分销推广、拼团、砍价、…...
【开发环境】MacBook M2安装git并拉取gitlab项目,解决gitlab出现Access Token使用无效的方法
文章目录 安装Homebrew安装git打开IDEA配置git打开IDEA拉取项目 安装Homebrew /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"在iTerm等命令行工具打开后,输入上面的命令 之后根据中文提示完成Homebrew的下载…...
Flask-Session使用Redis
Flask-Session使用Redis 一、介绍 在Flask中,session数据默认是以加密的cookie形式存储在用户的浏览器中的。但是,真正的session数据应该存储在服务器端。Django框架会将session数据存储在数据库的djangosession表中,而Flask则可以通过第三…...
Redis缓存管理机制
在当今快节奏的数字世界中,性能优化对于提供无缝的用户体验至关重要。缓存在提高应用程序性能方面发挥着至关重要的作用,它通过将经常使用或处理的数据存储在临时高速存储中来减少数据库负载并缩短响应时间,从而减少系统的延迟。Redis 是一种…...
初学嵌入式是弄linux还是单片机?
在开始前刚好我有一些资料,是我根据网友给的问题精心整理了一份「单片机的资料从专业入门到高级教程」, 点个关注在评论区回复“666”之后私信回复“666”,全部无偿共享给大家!!!1、先入门了51先学了89c52…...
【基础算法总结】分治—快排
分治—快排 1.分治2.颜色分类3.排序数组4.数组中的第K个最大元素5.库存管理 III 点赞👍👍收藏🌟🌟关注💖💖 你的支持是对我最大的鼓励,我们一起努力吧!😃😃 1.分治 分治…...
[C++]——同步异步日志系统(1)
同步异步日志系统 一、项⽬介绍二、开发环境三、核心技术四、环境搭建五、日志系统介绍5.1 为什么需要日志系统5.2 日志系统技术实现5.2.1 同步写日志5.2.2 异步写日志 日志系统: 日志:程序在运行过程中,用来记录程序运行状态信息。 作用&…...
python 第6册 辅助excel 002 批量创建非空白的 Excel 文件
---用教授的方式学习 此案例主要通过使用 while 循环以及 openpyxl. load_workbook()方法和 Workbook 的 save()方法,从而实现在当前目录中根据已经存在的Excel 文件批量创建多个非空白的Excel 文件。当运行此案例的Python 代码(A002.py 文件࿰…...
力扣61. 旋转链表(java)
思路:用快慢指针找到最后链表k个需要移动的节点,然后中间断开节点,原尾节点连接原头节点,返回新的节点即可; 但因为k可能比节点数大,所以需要先统计节点个数,再取模,看看k到底需要移…...
智慧园区综合平台解决方案PPT(75页)
## 智慧园区的理解 ### 从园区1.0到园区4.0的演进 1. 园区1.0:以土地经营为主,成本驱动,提供基本服务。 2. 园区2.0:服务驱动,关注企业成长,提供增值服务。 3. 园区3.0:智慧型园区ÿ…...
Python只读取Excel文件的一部分数据,比如特定范围的行和列?
如何只读取Excel文件的一部分数据,比如特定范围的行和列? 在Python中,如果你只想读取Excel文件的特定范围,可以使用以下方法: pandas: Pandas是一个强大的数据处理库,它有一个内置函数read_excel()用于读…...
快速入门FreeRTOS心得(正点原子学习版)
对于FreeROTS,我第一反应想到的就是通信里的TDM(时分多址)。不同任务给予分配不同的时间间隔,也就是任务之间在每个timeslot都在来回切换。 这里有重要的一点,就是中断要短小,优先级是自高到底进行打断。 …...
【博主推荐】HTML5实现简洁好看的个人简历网页模板源码
文章目录 1.设计来源1.1 主界面1.2 关于我界面1.3 工作经验界面1.4 学习教育界面1.5 个人技能界面1.6 专业特长界面1.7 朋友评价界面1.8 获奖情况界面1.9 联系我界面 2.效果和源码2.1 动态效果2.2 源代码 源码下载万套模板,程序开发,在线开发,…...
Android应用安装过程
Android 系统源码源码-应用安装过程 Android 中应用安装的过程就是解析 AndroidManifest.xml 的过程,系统可以从 Manifest 中得到应用程序的相关信息,比如 Activity、Service、Broadcast Receiver 和 ContentProvider 等。这些工作都是由 PackageManage…...
Word中输入文字时,后面的文字消失
当在Word中输入文字时,如果发现后面的文字消失,通常是由以下3个原因造成的: 检查Insert键状态:首先确认是否误按了Insert键。如果是,请再次按下Insert键以切换回插入模式。在插入模式下,新输入的文字会插入…...
【LeetCode】合并两个有序链表
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 解题思路 水题,主要用于后面的链表的归并排序做了该题 AC代码 # Definition for singly-linked list. # class ListNode: # def __init__(self, val0, nex…...
分子AI预测赛Task1笔记
分子AI预测赛Task1笔记 实践步骤:跑通baseline → 尝试个人idea→尝试进阶baseline 一、跑通baseline 1、应当先下载数据库 下载相应的数据库 !pip install lightgbm openpyxl2、训练模型并预测结果 首先要导入相应的库和方法类,如pandas等 # 1. …...
ubuntu 安装并启用 samba
环境:ubuntu server 24.04 步骤如下: sudo apt update sudo apt install samba修改配置文件: sudo vi /etc/samba/smb.conf新增内容: [username]path /home/[username]available yesvalid users [username]read only nobrow…...
atcoder ABC 357-D题详解
atcoder ABC 357-D题详解 Problem Statement For a positive integer N, let VN be the integer formed by concatenating N exactly N times. More precisely, consider N as a string, concatenate N copies of it, and treat the result as an integer to get VN. For…...
从单一到多元:EasyCVR流媒体视频汇聚技术推动安防监控智能升级
随着科技的飞速发展,视频已成为我们日常生活和工作中的重要组成部分。尤其在远程办公、在线教育、虚拟会议等领域,视频的应用愈发广泛。为了满足日益增长的视频需求,流媒体视频汇聚融合技术应运而生,它不仅改变了传统视频的观看和…...
Spring MVC数据绑定和响应——数据回写(二)JSON数据的回写
项目中已经导入了Jackson依赖,可以先调用Jackson的JSON转换的相关方法,将对象或集合转换成JSON数据,然后通过HttpServletResponse将JSON数据写入到输出流中完成回写,具体步骤如下。 1、修改文件DataController.java,在…...
怎么快速给他人分享图片?扫描二维码看图的简单做法
现在通过二维码来查看图片是一种很常见的方法,通过二维码来查看图片不仅能够减少对手机存储空间的占用,而且获取图片变得更加方便快捷,只需要扫码就能够查看图片,有利于图片的展现。很多的场景中都有图片二维码的应用,…...
【UML用户指南】-26-对高级行为建模-状态图
目录 1、概念 2、组成结构 3、一般用法 4、常用建模技术 4.1、对反应型对象建模 一个状态图显示了一个状态机。在为对象的生命期建模中 活动图展示的是跨过不同的对象从活动到活动的控制流 状态图展示的是单个对象内从状态到状态的控制流。 在UML中,用状态图…...
解决VSCode无法用ssh连接远程服务器的问题
原因: 因为windows自带的ssh无法连接远程服务器,需要用git底下的ssh.exe。 搜了很久,试过很多方法,包括替换掉环境变量中的ssh,但是都无效,最后发现是要在VSCode中配置需要使用哪个ssh.exe。 步骤&#…...
【区块链+基础设施】银联云区块链服务 | FISCO BCOS应用案例
为了顺应区块链基础设施化的发展趋势,中国银联推出了银联云区块链服务——UPBaaS,为金融行业采用区块链 技术提出了解决方案,微众银行为平台提供 FISCO BCOS 区块链开源技术支持。通过银联云区块链服务,用户可 以用可视化的方式创…...
Java SE入门及基础(61) 死锁 死锁发生条件
目录 死锁 1. 死锁的概念 2. 死锁发生条件 互斥条件 不可剥夺条件 请求与保持条件 循环等待 3. 案例分析 示例 分析 死锁 1. 死锁的概念 Deadlock describes a situation where two or more threads are blocked forever, waiting for each other 死锁描述了一种情…...
简单爬虫案例——爬取快手视频
网址:aHR0cHM6Ly93d3cua3VhaXNob3UuY29tL3NlYXJjaC92aWRlbz9zZWFyY2hLZXk9JUU2JThCJTg5JUU5JTlEJUEy 找到视频接口: 视频链接在photourl中 完整代码: import requestsimport re url https://www.kuaishou.com/graphql cookies {did: web_…...
42、nginx之nginx.conf
nginx----web服务器 一、nginx http就是apache,在国内很少。 nginx是开源的,是一款高性能,轻量级的web服务软件。 稳定性高,而且版本迭代比较快(修复bug速度比较快,安全性快) 消耗系统资源…...
高薪程序员必修课-java为什么要用并发编程
目录 前言 1. 提高性能和效率 2. 更好地响应用户 3. 优化I/O操作 具体示例 示例1:提高性能和效率 示例2:更好地响应用户 示例3:优化I/O操作 总结 前言 并发编程允许多个线程在同一时间执行任务。下面我们从多个原理角度来解释为什么J…...
postgreSQL学习
postgreSql学习 学习参考:1、命令1.1 登录1.2 关闭连接 2、常用数据类型2.1 数值类型2.2 字符串类型2.3 时间2.4 其他 3、自增主键4、sql4.1 库操作(1)创建新库(2)切换数据库(3)删库【谨慎&…...
【3】系统标定
文章目录 雷达标定相机主雷达标定底盘动力学标定车辆循迹验证建图 雷达标定 主要是为了获得到lidar到imu的tf关系。imu为父坐标lidar为子坐标。其他雷达标定到主lidar坐标系下。 标定的结果都是生成一个是四元数。 #mermaid-svg-crOWRnT4UE0jtJVy {font-family:"trebuch…...
网安小贴士(3)网安协议
一、前言 网络安全协议是构建安全网络环境的基础,它们帮助保护网络通信免受各种威胁和攻击。 二、定义 网络安全协议是指在计算机网络中用于确保网络通信和数据传输安全的协议。它们定义了在网络通信过程中的安全机制、加密算法、认证和授权流程等,以保…...
大数据面试题之HBase(1)
目录 介绍下HBase HBase优缺点 说下HBase原理 介绍下HBase架构 HBase读写数据流程 HBase的读写缓存 在删除HBase中的一个数据的时候,它什么时候真正的进行删除呢?当你进行删除操作,它是立马就把数据删除掉了吗? HBase中的二级索引 HBa…...
git回退commit的方式
在Git中,回退commit(即撤销之前的提交)可以通过多种方式来实现。以下是一些常见的方法,以及它们的详细步骤和注意事项: ### 1. 使用git revert命令 git revert命令用于撤销某次commit,但它并不会删除该comm…...
[Information Sciences 2023]用于假新闻检测的相似性感知多模态提示学习
推荐的一个视频:p-tuning P-tunning直接使用连续空间搜索 做法就是直接将在自然语言中存在的词直接替换成可以直接训练的输入向量。本身的Pretrained LLMs 可以Fine-Tuning也可以不做。 这篇论文也解释了为什么很少在其他领域结合知识图谱的原因:就是因…...
自定义vue3 hooks
文章目录 hooks目录结构demo hooks 当页面内有很多的功能,js代码太多,不好维护,可以每个功能都有写一个js或者ts,这样的话,代码易读,并且容易维护,组合式setup写法与此结合👍&#…...