软考 高级 架构师 第十 章软件工程3
1.系统测试
系统测试是为了发现错误而执行程序的过程,成功的测试是发现了至今尚未被发现的错误的测试。
测试原则:
1)应尽早并不断的进行测试
2)测试工作应避免由原开发软件的人或小组承担
3)在 设计测试方案时,不仅要确定输入数据,而且要根据系统功能确定预期的输出结果
输出结果:
1)既包含有效、合理的测试用例,也包含不合理、失效的用例
2)检验程序是否做了不该做的事,且是否做了不该做的事
3)严格按照测试计划进行
4)妥善保存测试计划和测试用例
5)测试用例可以重复使用或追加测试
1.1.静态测试和动态测试
静态测试:被测试的程序不在机器上运行,而采用人工检测和计算机辅助静态分析的手段对程序进行检测,包括对文档的静态测试和对代码的静态测试。对文档的静态测试主要以检查单的形式进行,而对的代码的静态测试,包括桌前检查、代码审查、代码走查的方式。
动态测试:被测程序在机器上运行
动态测试方法:
1)黑盒测试,功能性测试,不了解软件代码结构,根据功能设计用例,测试软件功能。
2)白盒测试,结构性测试,明确代码流程,根据代码逻辑设计用例,进行用例覆盖。
3)灰盒测试,黑盒+白盒
1.2.测试阶段
1)单元测试:模块测试,测试对象是可独立编辑或汇编的程序模块、软件构建、OO软件种的类,测试依据是软件详细设计说明书。
2)集成测试:目的是检查模块之间,以及模块和以集成的软件之间的接口关系,并验证已集成的软件是否符合设计要求。测试依据是软件概要设计文档。
3)确认测试:主要用于验证软件的功能、性能和其他特性是否与用户需求一致。根据用户的参与程度,通常包括以下类型:
a.内部确认测试:主要由软件开发组织内部按照SRS进行测试。
b.Alpha测试:用户在开发环境下进行测试。
c.Beta测试:用户实际环境下进行测试,通过该测试后,产品才能交付用户。
d.验收测试:针对SRS(软件需求规格说明书),在交付之前以用户为主进行的测试。其测试对象为完整的、集成的计算机系统。验收测试的目的是,在真实的用户工作环境下,检验软件系统是否满足开发技术合同或SRS。验收测试的结论是用户确定是否接收该软件的主要依据。除应满足一般测试的准入条件外,在进行验收测试之前,应确认被测软件已通过系统测试。
4)系统测试:测试对象是完整的、集成的计算机系统;测试的目的是在真实系统工作环境下,验证完成的软件配置项和系统正确连接,并满足系统/子系统设计文档和软件开发合规格要求。测试依据是用户需求或开发合同。主要内容包括功能测试、健壮性测试、性能测试、用户界面测试、安全性测试、安装与反安装测试等,其中最重要的工作是进行功能测试与性能测试。功能测试主要采用黑盒测试,性能测试主要指标有响应时间、吞吐量、并发用户数和资料员利用率等。
5)配置项测试:测试对象是软件配置项,测试目的是检验软件配置项SRS的一致性。测试依据是SRS,在此之前,应确认被测软件配置项已通过单元测试和集成测试。
6)回归测试:测试的目的是测试软件变更之后,变更的部分的正确性和对变更需求的符合性,以及软件原有的、正确的功能、性能和其他规定的要求的不损害性。
1.3.测试策略
1)自底向上:从最底层模块开始测试,需要编写测试驱动程序,而后开始逐一合并模块,最终完成整个系统的测试。优点是较早的验证了底层模块。
2)自顶向下:先测试整个系统,需要编写桩程序,而后逐步向下直到最后测试最底层模块。优点是较早的验证了系统的主要控制和判断点。
3)三明治:既有自底向上也有自顶向下的测试方法,二者都包括。兼有二者的优点,缺点是测试工作量大。
1.4.测试用例
1.4.1.黑盒测试用例
1)等价类划分:把所有数据按某种特性进行归类,而后在每类数据里选一个即可。等价类测试的用例设计原则:设计一个新的测试用例,使其尽可能多地覆盖尚未被覆盖的有效等价类,重复这一步,直到所有有效等价类都被覆盖位置。设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复这一步,直到所有的无效等价类都被覆盖为止。
2)边界值划分:将每类的边界值作为测试用例,边界值的范围一般为范围两端值以及在此范围之外的与此范围间隔最小的两个值。如年龄范围 在0-150时,边界值由0,150,-1,151
3)错误推测:没有固定方法,凭经验而言,推测可能有问题的地方。
4)因果图:由一个结果来反推原因的方法,具体结果具体分析。
1.4.2.白盒测试用例
1)语句覆盖SC:逻辑代码中所有语句都要执行一遍覆盖级别最低,因为执行了所有的语句,不代表执行了所有的判断条件。
2)判定覆盖DC:逻辑代码中所有判断语句的条件的真假分支都要覆盖一次。
3)条件覆盖CC:针对每个判断条件内的每一个独立条件都要执行一遍真和假。
4)条件判定组合覆盖CDC:同时满足判定覆盖和条件覆盖。
5)路径覆盖:逻辑代码中的所有可行路径都覆盖了,,覆盖级别最高。
1.5.调试
找出错误的代码和原因
方法:蛮力法、回溯发、原因排除法(演绎法、归纳法、二分法)
1.6.软件度量
软件有两种属性:外部属性和内部属性。
外部属性:面向管理者和用户的属性,可直接测量,一般为性能指标。
内部属性:软件产品本身的属性,如可靠性等,只能间接测量。
McCabe度量法:又称环路复杂度,假设有向图中有向边数为m,节点数为n,则此有向图的环路复杂度为m-n+2
2.系统运行维护
2.1.系统转换
遗留系统是指任何基本上不能进行修改和演化以满足新的变化了的业务需求的信息系统,它通常具有一下特点:
1)系统虽然完成企业中许多重要的业务管理工作,但仍不能完全满足需求。
2)系统性能上已经落后,采用的技术已经过时。
3)通常是大型软件系统,已经融入企业的的业务运作和决策管理机制中,维护工作十分困难。
4)没有使用现代化系统建设方法进行管理和开发,现在基本上已经没有文档,很难理解。
系统转换是指新系统开发完毕,投入运行,取代现有系统的过程。三种转换计划:
1)直接转换:现有系统被新系统直接取代了。节省成本,风险大。
2)并行转换:新系统和老系统并行工作了一段时间。风险小,耗费人力资源、时间资源,难以控制两个系统之间的数据转换。
3)分段转换:分期分批逐步转换。将大型系统分为多个子系统。耗时,需要协调好接口问题。
数据迁移与转换:将数据从就数据库迁移到新数据库。三种方式:
1)系统切换前通过工具迁移
2)系统切换前采用手工录入
3)系统切换后通过新系统生成
2.2.系统维护
可维护性:维护人员理解、改正、改动和改进这个软件的难易程度。评价指标:
1)易分析性:软件产品诊断软件中的缺陷或失效原因或识别待修改部分的能力。
2)易改变性:软件产品使指定修改可以被实现的能力,实现包括编码、设计和文档的更改。
3)稳定性:软件产品避免由于软件修改而改造成意外结果的能力。
4)易测试性:软件产品使已修改软件能被确认的能力。
5)维护性的依从性:软件产品遵循与维护性相关的指标或约定的能力。
系统维护包括:硬件维护、软件维护和数据维护,其中软件维护类型有:
1)正确性维护:发现了bug而进行的修改。
2)适应性维护:由于外部环境发生了改变,别动进行的对软件的修改和适应。
3)完善性维护:基于用户主动对软件提出更多的需求,修改软件,增加更多功能,使其比之前的软件功能更多、性能更高、更加完善。
4)预防性维护:对未来可能发生的bug进行预防性的修改。
2.3.净室软件工程CSE
定义:是一种应用数学与统计学理论以经济的方式生产高质量软件的工程技术。力图通过严格的工程化软件的过程达到开发中的零缺陷或接近零缺陷。净室方法不是先制作一个产品,再去消除缺陷,而是要求在规约和设计中消除错误,然后以净的方式制作,可以降低软件开发中的风险,以合理的成本开发出高质量的软件。
哲理:通过在第一次正确地书写代码增量,并在测试前验证它们的正确性,来避免对成本很高对的错误消除过程的依赖。它的过程模型是在代码增量积聚到系统的过程的同时,进行代码增量的统计质量验证。它甚至提倡开发者不需要进行单元测试,而是进行正确性验证和统计质量控制。它甚至提倡开发者不需要进行单元测试,而是进行正确行验证和统计质量控制。
理论基础:函数理论和抽样理论。
应用技术手段:
1)统计过程控制下的增量式开发
2)基于函数的规范和设计
3)正确性验证-CSE的核心
4)统计测试和软件认证
缺点:
1)太理论化,需要更多的数学知识。其正确性验证的步骤比较困难且比较耗时
2)CSE开发小组不进行传统的模块测试,不现实
3)本身也会带有传统软件工程的弊端。
2.4.基于构建的软件工程CBSE
2.4.1.CBSE
基于分布对象技术,强调通过可复用构件设计与构造软件系统的软件复用途径。CBSE体现了“购买而不是重新构造”的哲学,将软件开发的重点从程序编写转移到了基于已有构建的组装。用于CBSE的构件应具备一下特征:
1)可组装性,对于可组装的构件,所有外部交互必须通过公开定义的接口进行。同时它还必须对自身信息的外部访问。
2)可部署性,软件必须是自包含的,必须能作为一个独立实体在提供其构建模型实现的构建平台上运行。构件是二进制形式,无须在部署前编译。
3)文档化,构件必须是完全文档化的,用户根据文档来判断构件是否满足需求。
4)独立化,构件应该是独立的,应该可以在无其他特殊构件的情况下进行组装和部署,如确实需要其他构件提供的服务,则应显示声明。
5)标准化,构件标准化意味着在CBSE过程中使用的构件必须符合某种标准化的模型。
构件模型定义了构件实现、文档化以及开发的标准,其包含的模型要素为:
1)接口,构件通过构件接口来定义,构件模型规定应如何定义构件接口以及在接口定义中应该包含的要素,如操作名、参数以及异常等。
2)使用信息,为使构件的远程分布和访问,必须给构件一个特定的、全局唯一的名字或句柄。构件元数据是构件本身相关的数据,比如构件的接口和属性信息。
3)部署,构件模型包括一个规格说明,指出应该如何打包构件使其部署成一个独立的可执行实体。部署信息中包含有关包中内容的信息和它的二进制构成的信息。
构件模型提供了一组被构件使用的通用服务,包括以下两种:
1)平台服务,允许构件在分布式环境下通信和互操作
2)支持服务,这是很多构件需要的共性服务。例如,构件都需要的身份认证服务。中间件实现共性的构建服务,并提供这些服务的接口。
CBSE的六个主要活动:
系统需求概览、识别候选构件、根据发现的构件修改需求、体系结构设计、构件定制与适配、组装构件创建系统。
CBSE过程与传统软件开发过程的不同点:
1)CBSE早期需要完整的要求,以便尽可能多地识别出可复用的构件。
2)在过程早期阶段可利用的构件来细化和修改需求。如果可利用的构件不能满足用户需求,就应该考虑由复用构件支持的相关需求。
3)在系统体系结构设计完成后,会有一个进一步的对构件搜索及设计精化的活动。可能需要为某些构件寻找备用构件,或者修改构件以适应功能和架构的要求。
4)开发就是将已经找到的构件集成在一起的组装过程。
2.4.2.构件组装
是指构件相互直接集成或是用专门编写的胶水代码将它们整合在一起来创造一个系统或另一个构件的过程。常见的组装构件有以下三种方式:
1)顺序组装,通过按顺序调用已存在的构件,可以用两个已经存在的构件来创造一个新的构件。上一个构件的输出为下一个构件的输入。
2)层次组装,一个构件直接调用自另一个构件所提供的服务。被调用的构件为调用的构件提供所需的服务。两者之间接口匹配兼容。
3)叠加组装,这种情况发生在两个或两个以上构件放在一起来创建一个新构件的时候。这个新构建合并了元构建的功能,从而对外提供了新的接口。外部应用可以通过新接口来调用原有构件的接口,而原有构件不互相依赖,也不互相调用。这种组装类型适合于构件是程序单元或构件是服务的情况。
构件组装的三种不兼容问题(通过编写适配器解决):
1)参数不兼容,接口每一侧的操作有相同的名字,但是参数的类型和参数的个数不一样
2)操作不兼容,提供接口和请求接口的操作名不同
3)操作不完备,一个构件的提供接口是另一个构件请求接口的一个子集,或相反。
相关文章:
软考 高级 架构师 第十 章软件工程3
1.系统测试 系统测试是为了发现错误而执行程序的过程,成功的测试是发现了至今尚未被发现的错误的测试。 测试原则: 1)应尽早并不断的进行测试 2)测试工作应避免由原开发软件的人或小组承担 3)在 设计测试方案时&#…...
GoF23种设计模式 简介
文章目录 面向对象(OO)设计原则(7)单一职责原则开闭原则里氏代换原则依赖倒转原则接口隔离原则合成复用原则迪米特法则 创建型模式 (5)工厂方法模式 (类模式,其余都是对象模式)抽象工厂模式建造…...
【FlutterDart】页面切换 PageView PageController(9 /100)
上效果: 有些不能理解官方例子里的动画为什么没有效果,有可能是我写法不对 后续如果有动画效果修复了,再更新这篇,没有动画效果,总觉得感受的丝滑效果差了很多 上代码: import package:flutter/material.…...
旧服务改造及微服务架构演进
旧服务改造及微服务架构演进 微服务架构演进1.微服务架构2.微服务架构的特点3.单体架构与微服务架构之间的对比4.微服务架构演进历程 旧服务改造1. 微服务拆分的一些通用原则2.微服务拆分策略(1)功能维度拆分策略(2)非功能维度拆分…...
数据结构复习 (顺序查找,对半查找,斐波那契查找,插值查找,分块查找)
查找(检索): 定义:从给定的数据中找到对应的K 1,顺序查找: O(n)的从前向后的遍历 2,对半查找,要求有序 从中间开始查找,每次检查中间的是否正确,不正确就…...
根据docker file 编译镜像
比如给到一个Dockerfile 第一步编译镜像 cd /path/to/Dockerfiledocker build -t <DOCKER_IMAGE_NAME> . build 命令编译镜像 -t 镜像名字 . 指dockerfile 所在目录 如果遇到报错 [] Building 0.3s (3/3) FINISHED …...
C语言:调试的概念和调试器的选择
所谓调试(Dubug),就是跟踪程序的运行过程,从而发现程序的逻辑错误(思路错误),或者隐藏的缺陷(Bug)。 在调试的过程中,我们可以监控程序的每一个细节ÿ…...
Vulnhub靶场(Earth)
项目地址 https://download.vulnhub.com/theplanets/Earth.ova.torrent 搭建靶机 官网下载.ova文件双击vm打开导入 获取靶机IP kail终端输入 arp-scan -l 获取靶机 IP 192.168.131.184 信息收集 端口扫描 sudo nmap -sC -sV -p- 192.168.131.184 可以看到开启22端口&…...
rsync命令常用同步方案
rsync是一个高效的文件同步工具,广泛应用于本地和远程备份、镜像及同步任务。它通过增量同步、压缩传输以及远程协议(如SSH)等技术,显著提高了文件传输的效率。本文将介绍rsync命令的常用参数、工作原理、常见同步方案,…...
【Ubuntu】 Ubuntu22.04搭建NFS服务
安装NFS服务端 sudo apt install nfs-kernel-server 安装NFS客户端 sudo apt install nfs-common 配置/etc/exports sudo vim /etc/exports 第一个字段:/home/lm/code/nfswork共享的目录 第二个字段:指定哪些用户可以访问 * 表示所有用户都可以访…...
Python自学 - 递归函数
1 Python自学 - 递归函数 递归函数是一种在函数体内调用自己的函数,就像“左脚踩着右脚,再右脚踩着左脚… 嗯,你就可以上天了!”。递归函数虽然不能上天,但在处理某些场景时非常好用, 一种典型的场景就是遍…...
后端开发入门超完整速成路线(算法篇)
引言 后端开发是软件开发中不可或缺的一部分,它涉及到服务器、数据库、API等核心组件的构建和维护。对于初学者来说,掌握算法和数据结构是进入后端开发领域的基础。本文将为你提供一个超完整的算法学习路线,帮助你快速入门,并在文…...
51单片机——共阴数码管实验
数码管中有8位数字,从右往左分别为LED1、LED2、...、LED8,如下图所示 如何实现点亮单个数字,用下图中的ABC来实现 P2.2管脚控制A,P2.3管脚控制B,P2.4管脚控制C //定义数码管位选管脚 sbit LSAP2^2; sbit LSBP2^3; s…...
使用Clion在ubuntu上进行交叉编译,并在Linux上远程编译五子棋
目录 1.工具以及概念介绍 (1)Clion软件简介 (2)交叉编译 (3)远程编译 2.操作原理 3.详细操作步骤 (1)配置Clion与虚拟机ubuntu的ssh连接 CLion远程开发Ubuntu,并显…...
高并发写利器-组提交,我的Spring组件实战
高并发写优化理论 对于高并发的读QPS优化手段较多,最经济简单的方式是上缓存。但是对于高并发写TPS该如何提升?业界常用的有分库分表、异步写入等技术手段。但是分库分表对于业务的改造十分巨大,涉及迁移数据的麻烦工作,不会作为…...
Stable Diffusion的简单介绍
Stable Diffusion 是一款免费、开源的 AI 图像生成器,由 Stability AI 公司于 2022 年 8 月推出1。以下是关于它的详细介绍: 目录 工作原理 特点 应用场景 主要版本 工作原理 Stable Diffusion 属于潜在扩散模型,主要由三部分组成&…...
R语言的数据结构
R语言的数据结构 R语言是专门为统计计算和数据分析而设计的一种编程语言,因其强大的数据处理能力而受到广泛欢迎。在R中,数据结构是理解和有效使用R语言的基础。本文将详细介绍R语言中的主要数据结构,包括向量、矩阵、数据框、列表、因子等&…...
go项目zero框架中用gentool解决指定MYSQL表生成结构体被覆盖的解决方案
在使用 GoZero 框架进行项目开发时,gentool 是一个非常方便的工具,它可以根据数据库表结构自动生成 Go 语言结构体和其他相关文件。然而,在使用 gentool 生成结构体时,可能会遇到一个问题:如果多次运行 gentool&#x…...
限时特惠,香港服务器,低至53元/年
家人们谁懂啊!香港服务器这价格简直逆天了,居然比内地的还便宜!就拿阿里云来说,人家最低配置的服务器,价格都很难做到这么亲民。 最低配的就不说了,2 核 4G 的配置,应对日常业务稳稳当当&#x…...
【GUI-pyqt5】QObject类
1. QObject模块详解 1.1 描述 所有Qt对象的父类 1.2 功能和作用 1.2.1 对象名称和属性 1.2.1.1 API API功能备注 setObjectName("唯一名称") 给一个Qt对象设置一个名称 一般这个名称是唯一的,当做对象ID来使用 objectName() 获取一个对象名称 - set…...
第2章:SQL基础
第2章:SQL基础 2.1 SQL语言介绍 2.1.1 SQL发展历史 SQL的起源SQL标准的演变不同数据库的SQL实现 2.1.2 SQL语言分类 数据定义语言 (DDL):用于定义和修改数据库的结构,包括数据库、表、索引、视图等对象的创建、修改和删除。数据操作语言 (DML):用于…...
Azkaban其一,介绍、体系架构和安装
目录 一、简介 二、Azkaban的体系结构 三、Azkaban的安装步骤 1、上传,解压 2、生成mysql的元数据 3、配置web-server 4、配置exec-server 5、修改所有的.sh 的执行权限 一、简介 遇到了什么问题才会使用Azkaban ?比如: 想启动hadoop集群先启动…...
Seata 使用教程:全面解锁分布式事务管理
Seata 使用教程:全面解锁分布式事务管理 在当今分布式系统蓬勃发展的时代,微服务架构被广泛应用,随之而来的是分布式事务管理的难题。Seata 作为一款开源的分布式事务解决方案,为保障分布式系统的数据一致性提供了强有力的支持。本文将详细讲解 Seata 的使用方法,深入剖析…...
《learn_the_architecture_-_aarch64_exception_model》学习笔记
1.当发生异常时,异常级别可以增加或保持不变,永远无法通过异常来转移到较低的权限级别。从异常返回时,异常级别可能会降低或保持不变,永远无法通过从异常返回来移动到更高的权限级别。EL0级不进行异常处理,异常必须在比…...
密码学原理技术-第十一章-Hash Functions
文章目录 总结Why we need hash functionsDigital Signature with a Hash FunctionBasic Protocol for Digital Signatures with a Hash FunctionPrincipal input–output behavior of hash functions Security propertiesThe three security requirements of hash functionsWh…...
Golang 入门基础知识
快速入门 go 语言笔记,参考了各种大佬的 blog 。 一、下载安装 国内站点 :https://golang.google.cn IDE : Goland (2020.12月以后破解有些困难 见 zhile.io, 无法试用的话可以搜一个注册码,失效的也可以&…...
SQL把字符串按逗号分割成记录
在 SQL 中,可以通过以下方法将字符串按逗号分割,并将每个分割的值作为单独的记录插入到结果集中。以下是针对不同数据库系统的实现方法: 1. 使用 STRING_SPLIT(SQL Server 2016) STRING_SPLIT 是 SQL Server 提供的内置…...
HTML——26.像素单位
<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>像素</title></head><body><!--像素:1.指设备屏幕上的一个点,单位px,如led屏上的小灯朱2.当屏幕分辨率固定时&…...
TIM的输出比较(PWM)
OC(Output Compare)输出比较 输出比较可以通过比较CNT与CCR寄存器值的关系,来对输出电平进行置1、置0或翻转的操作,用于输出一定频率和占空比的PWM波形 每个高级定时器和通用定时器都拥有4个输出比较通道 初始化 1.开启RCC RCC_…...
李宏毅机器学习笔记-Transformer
目录 1. Seq2seq 2. encoder Transformer 中的 Block 结构 3. Decoder 4.Encoder和Decoder间的信息传递 5.Training 6.Tips 1. Seq2seq Transformer 是一个seq2seq的model。Seq2seq指的是input是一个序列,输出也是一个序列,输出的长度是由机器自己…...
【机器学习:三、常见的代价函数】
代价函数的选择与任务类型(回归、分类等)以及模型的具体目标密切相关。 回归任务中的代价函数 均方误差(Mean Squared Error, MSE) 公式: J ( θ ) 1 m ∑ i 1 m ( y i − y ^ i ) 2 J(\theta)\frac{1}{m}\sum_{i1}^m(y_i-\…...
React 数据是怎样传递的
写在前面 在 React 应用程序中,数据传递是非常重要的。它允许我们在组件之间共享信息和状态,从而构建出复杂的用户界面。本文将深入探讨 React 中的数据传递机制,包括 props、state 和 context API。我们还将通过实际例子来演示如何在项目中…...
Python入门教程 —— 高阶函数和装饰器
1.递归函数 什么是递归函数 如果一个函数在内部不调用其它的函数,而是自己本身的话,这个函数就是递归函数。 递归函数的作用 举个例子,我们来计算阶乘 n! = 1 * 2 * 3 * ... * n 解决办法1:使用循环来完成 def cal(num):result,i = 1,1while i <= num:result *= ii…...
RSA密码的安全性分析(简化版本)
RSA的安全性是基于分解大整数的困难性假定,之所以认为是假定是因为至今还未能证明大整数就是NP问题,也许有尚未发现的多项式时间分解算法。随着人类计算能力的不断提高,原来被认为是不可能分解的大数已经被成功分解。对于大整数的威胁除了人类…...
解决Vue中设置el-select的高度不生效问题
el-select是Element UI框架中的一个选择器组件,它允许用户从多个选项中选择一个或多个项目。但这里确存在一个小坑,我们可以看到直接修改el-select的高度是无法生效的 <template><div id"login"><el-select v-model"role…...
解决openpyxl操纵带公式的excel或者csv之后,pandas无法读取数值的问题
1 功能特点 openpyxl: 这是一个专门用于操作Excel文件(.xlsx/.xlsm)的库。它提供了丰富的功能来读取、写入和修改Excel文件的各个元素,如单元格、行、列、工作表等。例如,可以通过openpyxl轻松地创建一个新的Excel工作…...
高等数学学习笔记 ☞ 无穷小比较与等价无穷小替换
1. 无穷小比较 1. 本质:就是函数的极限趋于0时的速度,谁快谁慢的问题。 2. 定义:若是在同一自变量的变化过程中的无穷小,且,则: ①:若,则称是比的高阶无穷小,记作&…...
计算队列中的‘捣乱分子’对数:一种量化无序程度的方法
计算队列中的‘捣乱分子’对数:一种量化无序程度的方法 前言解题思路关键点实现代码时间复杂度分析前言 在日常生活中,我们经常会遇到需要排队的场景,比如买票、候车、就餐等。在理想的排队情况下,人们会按照某种顺序(如先到先服务)整齐地排成一列。然而,总有一些人不遵…...
如何在不丢失数据的情况下从 IOS 14 回滚到 IOS 13
您是否后悔在 iPhone、iPad 或 iPod touch 上安装 iOS 14?如果你这样做,你并不孤单。许多升级到 iOS 14 beta 的 iPhone、iPad 和 iPod touch 用户不再适应它。 如果您在正式发布日期之前升级到 iOS 14 以享受其功能,但您不再适应 iOS 14&am…...
提升汽车金融租赁系统的效率与风险管理策略探讨
内容概要 在汽车金融租赁系统这个复杂的生态中,提升整体效率是每个企业都渴望达成的目标。首先,优化业务流程是实现高效运行的基础。通过分析目前的流程,找出冗余环节并进行简化,能够帮助企业缩短审批时间,提高客户满…...
Git 入门(一)
git 工作流如下: 命令如下: clone(克隆): 从远程仓库中克隆代码到本地仓库checkout (检出):从本地仓库中检出一个仓库分支然后进行修订add(添加): 在提交前先将代码提交到暂存区com…...
pyinstaller冻结打包多进程程序的bug:无限创建进程直至系统崩溃
前面写过两篇相关的文章: PyQt应用程序打包Python自动按键 这两篇文章都没有提到下面的这个重要问题: 采用Pyinstaller冻结打包多进程程序时,必须非常小心。这个技术线在Windows上会有一个非常严重的Bug。直接运行打包后的程序会造成无限创…...
OSI模型的网络层中产生拥塞的主要原因?
( 1 )缓冲区容量有限;( 1.5 分) ( 2 )传输线路的带宽有限;( 1.5 分) ( 3 )网络结点的处理能力有限;( 1 分…...
服务器开发 的设计模式(Design Patterns)核心知识
服务器开发的设计模式(Design Patterns)核心知识 在现代软件开发中,设计模式是一组为解决特定问题而重用的解决方案。它们是经过时间考验的最佳实践,为开发人员提供了一种有效的解决方案来应对常见的软件设计问题。特别是在服务器…...
智能工厂的设计软件 应用场景的一个例子: 为AI聊天工具添加一个知识系统 之20 再次重建 之5 项目文件三大部 整“拼”项目文档总述
本文要点 ]本项目的项目文件中的三个Part终于“拼”出来的(个别用词可能还需斟酌,但样子、格式和意思 差不多): Part1【凡间-AI众生】 人性化&去中心化-个体人生观 语言有关(语言交流-经验常识实践 信条 行为主义 随机数-本质偶然的 想…...
Lucas-Kanade光流法详解
简介:个人学习分享,如有错误,欢迎批评指正。 光流(Optical Flow)描述的是图像序列中各像素点随时间的运动情况,是计算机视觉中的基本问题之一。光流问题涉及尝试找出一幅图像中的许多点在第二幅图像中移动的…...
基于YOLO5的机械臂视觉抓取实现
前言: 机器人视觉系统标定是保证机器人精确运动和控制的关键环节之一。通过对机器人的运动学进行分析,可以精确计算出机器人末端执行器的位姿信息,从而实现对目标的精准定位和控制。相机标定是计算机视觉和图像处理中的重要步骤,标…...
Git 仓库与文件管理笔记
Git 的三种仓库概念 本地仓库 (Local Repository) 位于本地 .git 文件夹中通过 git init 或 git clone 创建存储完整的项目历史和分支信息 远程仓库 (Remote Repository) 位于 GitHub、GitLab 等平台服务器使用 git remote -v 查看所有远程仓库默认远程仓库名通常为 origin 工…...
Qt 5.14.2 学习记录 —— 오 信号与槽机制(2)
文章目录 1、信号与槽的参数2、为什么要有信号槽机制?3、断开并重新连接4、槽函数lambda写法 1、信号与槽的参数 信号和槽可以带参数,当信号带有参数时,槽的参数必须和信号的一致,此时发送信号就可以给信号函数传递实参ÿ…...
043_小驰私房菜_MTK Camera,Hal层将camera型号写到property属性中
【问题背景】 app层需要知道当前设备的摄像头型号,然后做一些差异化处理。底下如何上报这个摄像头型号? 【分析】 在kernel和hal层,都是有地方能获取到当前摄像头的型号,就看在哪里添加方便。获取到摄像头硬件型号后,将其写入到property属性, 然后app就可以通过读取该…...