『 测试 』软件测试全流程与Bug管理核心要点解析
文章目录
- 1 软件测试生命周期
- 2 Bug
- 2.1 Bug 的概念
- 2.2 提出清晰的 Bug
- 2.3 Bug 级别
- 2.4 Bug 的生命周期
- 2.5 作为测试人员与开发人员发生冲突怎么办
1 软件测试生命周期
软件测试贯穿于软件的整个生命周期;
-
需求分析
测试前需要对需求进行分析, 分析通常站在三个角度去考虑, 即用户角度, 技术角度以及测试角度;
-
用户角度
产品需求是否合理;
-
技术角度
技术上是否可行, 是否还有优化空间;
-
测试角度
是否存在业务逻辑错误, 冗余, 冲突等问题;
-
-
测试计划
当需求分析结束后需要对测试进行测试计划, 即什么时候开始测试什么时候结束测试;
-
测试设计, 测试开发
当测试计划结束后需要进行测试设计与开发;
在开发过程中将会有一些文档供测试时参考, 如需求文档, 技术文档等文档;
通过这些文档对产品设计测试用例;
同样的在测试过程中需要撰写测试文档, 测试文档中需要明确标注一些内容, 如使用到的测试方法, 测试工具, 测试形式等;
-
测试执行
测试执行为真正的测试动作, 通过侧测试设计时设计的一些测试用例对产品进行尽可能全方面的测试;
-
测试评估
通常一次测试结束后不表示产品中不存在任何问题, 因此测试结束后需要对所执行的测试进行一次测试评估, 主要评估本次测试是否存在遗留Bug, 产品是否具备可上线的能力;
因此在测试评估中, 产品测试人员需要产出一份测试报告;
-
上线
在上线过程中, 测试人员同样要保持测试;
通常上线分为几个阶段, 通常为沙盒, 小流量, 全流量以及全线上;
-
沙盒
沙盒阶段通常为产品部署在企业内部的线上环境中, 通常该阶段为供内部人员进行测试;
沙盒环境完全模拟生产环境的配置(如服务器, 数据库, 网络等), 但不予真实用户或数据进行交互, 通常是发布前的最后一道安全防线;
其目的是验证代码在"类生产环境"中的运行情况(如性能, 兼容性)以避免测试过程中对真实用户产生影响;
-
小流量
小流量为将新功能或版本逐步开放给一小部分用户, 如内部员工, 特定地区或随机抽样用户, 通过真实流量验证稳定性;
主要目的是找出在真实场景中暴露的潜在问题, 通过用户反馈快速调整功能;
-
全流量
全流量为在验证小流量阶段无重大缺陷后, 将新版本逐步覆盖全部用户, 但仍保留快速回滚能力;
主要目的是全面验证系统在真实流量下的承载能力, 同时确保新版本在不同用户群体中的兼容性;
-
全线上
新版本完全代替旧版本, 所有用户均能使用新功能或产品, 旧版本代码下线;
主要目的是完成版本的迭代, 确保所有用户获得一致的体验, 并释放资源(如旧版服务器);
阶段 用户范围 核心目标 风险控制手段 沙盒 0 真实用户 技术验证(功能, 性能) 隔离环境, 不影响生产 小流量 1~10% 真实用户 用户体验验证与问题暴露 快速回滚, 定向用户修复 全流量 50~100% 真实用户 系统稳定性与兼容性验证 分批发布, 实时监控 全线上 100% 真实用户 完成版本迭代, 统一用户体验 旧版本备份, 紧急回滚预案 当产品上线后, 测试人员需要跟踪上线并测试线上环境下的产品是否有其他遗留问题;
本质原因是线上环境与线下环境不一定是完全一致的, 因此需要持续测试保证产品没有重大问题;
-
-
运行维护
在运行维护过程中, 测试人员同样还需要保持测试, 测试人员需要定期回归测试;
通常情况下, 测试人员对项目的业务与操作需要非常了解, 因此测试人员可以参加与用户使用软件的培训, 在运行项目时收集问题并及时反馈给相关负责人;
同样的, 通常情况下演示会议都是由测试人员来进行演示;
因此, 实际测试人员需要具备一定的开发能力, 并且具备测试能力, 最好还需要具备一定的产品分析能力;
2 Bug
2.1 Bug 的概念
Bug的概念本质上分为两点:
- 当且仅当规格说明是存在的且正确, 程序与规格说明之间的不匹配的才是错误(Bug);
- 当需求规格说明书没有提到的功能, 判断标准以用户为准, 当程序没有实现其最终用户合理预期的功能要求时, 就是软件错误;
而上述两点锁提到的规格说明即软件需求/需求文档;
假设需求是设计一个杯子, 需求文档为:
-
杯子的形状是兔子的形状, 需要有兔耳朵, 且杯子是马克杯, 不能有盖子, 杯子需要有握把, 而设计师所设计出来的产品为下图的样子;
在产品的需求文档中, 设计师确实有按照设计文档进行设计, 如兔子形状, 水杯握把, 有兔耳, 属于符合产品的需求文档需求, 但不代表完全没有错误, 当规格说明书没有提到的问题时, 则需要站在用户的角度进行考虑;
如: 该水杯的兔耳朵是不是太长了, 无法很好的让用户通过这个水杯喝水, 在使用过程中杯子的兔子耳朵形状将会阻碍用户喝水, 因此这样就能判定为该设计构成Bug;
条件 | 是否符合 | 结论 |
---|---|---|
需求文档明确要求 | 是 | 设计满足兔子形状, 马克杯, 无杯盖, 有握把等显性需求 |
用户合理预期 | 否 | 用户无法正常使用(兔耳过长导致喝水困难), 违背"杯子需具备可用性"的隐性需求 |
2.2 提出清晰的 Bug
作为测试人员, 再向开发人员提出Bug时必须严谨且清晰, 需要提出Bug所在的基本环境等信息;
若是没有合理的向开发人员提出Bug, 那么将会提高开发/测试过程中沟通的成本, 导致工作质量下降;
一般所提出的Bug需要包含这些要素(一般情况下必须存在下列要素):
-
问题出现的版本
发现Bug的产品/软件对应的版本;
-
问题出现的环境
产生Bug时产品/软件的运行环境;
-
问题出现的步骤
如何复现Bug;
-
预期结果
产品/软件在该操作下的预期结果;
-
实际结果
实际上出现的产品/软件与预期不符的现象;
一个简单的例子
假设存在一个页面, 其在浏览器1中所显示的画面为如下:
在右上角存在一个可以用来扫码下载的二维码;
而在浏览器2中所显示的画面为如下:
可以发现, 由于不同浏览器的不同或是其他环境因素导致不仅二维码被遮挡, 同时UI错乱;
而若是单纯的提出Bug时只提到"浏览器显示有问题"这种片面的Bug描述, 开发者无法很好的定位问题所在原因;
Ps: 此处为示例, 单纯的调整缩放比例以展示出类似Bug的效果;
在该例子中, 基本的Bug描述如下:
-
Bug描述
-
问题出现的版本
Microsoft Edge版本 136.0.3240.64 (正式版本) (64 位)
-
问题出现的环境
Windows 11 家庭中文版 22H2
-
问题出现的步骤
- 打开Microsoft Edge浏览器
- 输入网址
https://cn.bing.com/
-
预期结果
UI显示正常, 右上角有二维码可进行扫码下载;
-
实际结果
UI布局错乱, 右上角二维码被遮挡;
Ps: 通常网页没有版本, 因此补充的是浏览器的版本, 若是提出一个软件的Bug则是需要给出对应软件的版本;
-
通常可根据产品/软件的情况添加其他的要素;
2.3 Bug 级别
通常情况下, Bug都是分为等级的, 这与开发过程中的错误日志相似, 如开发过程中的错误日志等级通常为DEBUG
, INFO
, WARNING
与 ERROR
, 分别表示为调试日志, 正常日志, 警告日志与错误日志, 其中最严重的日志等级为ERROR
, 其次是WARNING
;
而对于Bug级别而言, 通常从高到低分为几种, 分别为崩溃, 严重, 一般以及次要(或P0, P1, P2, P3), 不同的公司对于Bug级别的定义可能有细微差异, 但总体框架不会脱离该定义;
通过Bug的级别可以明确的看出问题的严重程度, 通常情况下在工作中开发人员必须根据Bug的等级来区分Bug的优先级从而计划解决问题的先后顺序;
同时Bug级别也能够体现出开发人员的开发质量以及开发能力;
Bug级别 | 影响范围 | 典型表现 | 修复优先级 | 示例 |
---|---|---|---|---|
崩溃 | 导致系统完全无法运行或核心功能瘫痪, 阻碍开发或测试工作的问题 | - 程序崩溃, 闪退, 死机 - 数据丢失或损坏(如用户订单无法保存) - 核心功能完全失效(如登录功能不可用) | 最高, 需立即修复 | 用户点击支付按钮后APP闪退导致交易中断 |
严重 | 核心功能部分失效或存在重大缺陷, 但系统仍可运行 | - 核心业务流程受阻(如购物车无法提交订单) - 数据计算错误(如金额显示错误) - 安全漏洞(如用户密码明文存储) | 高, 需在下一个版本修复 | 搜索功能仅返回部分结果, 导致用户无法找到商品 |
一般 | 次要功能异常或用户体验明显受损, 但不阻碍核心流程 | - 非核心功能失效(如个人主页头像无法上传) - 界面错位,文字重叠等UI问题 - 操作提示不明确(如错误提示语模糊) | 中, 可排期修复 | 移动端页面在iOS系统下底部导航栏图标显示错位 |
次要 | 轻微体验问题, 不影响功能使用 | - 拼写错误, 标点符号错误 - 颜色/字体与设计稿轻微偏差 - 控制台非阻塞性警告(不影响用户端) | 低, 可累积后批量处理 | 页面底部版权信息中的年份未更新为当前年份 |
通过明确Bug级别, 团队可高效分配资源以能优先解决对用户影响最大的问题;
2.4 Bug 的生命周期
在实际工作中, 当测试人员在测试执行期间发现Bug, 需要在对应的Bug管理平台中创建Bug;
所谓的创建Bug也是Bug生命的起源, 而最终创建的Bug将会通过一系列的流程被开发人员修复;
-
主要流程为:
-
创建Bug
当测试人员发现一个Bug后将会在对应的Bug管理平台中创建一个Bug, 即
New
; -
打开或拒绝Bug
测试人员所创建的Bug不一定是真实有效的Bug, 也可能是因为误操作导致的错误;
-
真实Bug
若为真实Bug, 开发人员将会打开Bug, Bug状态将会流转为
Open
; -
无效Bug
若测试人员所创建的Bug为无效Bug或是因为误操作导致的Bug, 开发人员将可以拒绝该Bug, 将该Bug状态流转为
Rejected
;根据不同企业的代码管理要求不同, 被拒绝的Bug可能直接成为拒绝状态或是再次流转回给测试人员重新确认;
-
-
判断是否修改
开发人员打开Bug后将会有两种情况:
-
Bug优先级高/时间充足
若是Bug的优先级高或者是修复Bug的时间充裕, 开发人员将对Bug进行修复;
修复好的Bug状态将被流转为
Fixed
状态; -
Bug优先级低/时间不足
若是Bug的优先级不足或是修复Bug的时间不足, 开发人员将延迟修复该Bug;
延迟修复的Bug状态将被流转为
Delay
状态;但最终
Delay
状态的Bug也将被修复(延迟修复不代表完全不修复);
-
-
重新测试判断是否被修复
状态为
Fixed
的Bug将被测试人员再次审核测试, 通常有两种状态:-
未被修复
若Bug未被修复或是产生了新的Bug, 开发人员需要重新打开修复Bug, 对应的Bug状态将会流转为
Reopen
;修复完成后状态将再次流转为
Fixed
;这个步骤是一个循环;
-
已修复
若是Bug已被修复, 对应的Bug状态将被流转为
Closed
;
-
-
结束
至此一个Bug的生命周期结束;
-
2.5 作为测试人员与开发人员发生冲突怎么办
-
检查自身Bug是否描述不清楚
当与开发人员发生冲突时首先需要检查自己所创建的Bug是否存在误操作或描述不清的问题;
Bug按复现概率分为两种, 分别为必现性Bug和偶发性Bug;
类型 特点 示例 偶发性 难以稳定复现, 随机出现, 需要通过调试或日志排查 - 多线程并发时偶尔出现的数据竞争导致界面卡顿
- 特定网络延迟下用户支付请求失败
必现性 测试步骤固定时100%复现, 容易定位 - 点击"提交"按钮后页面崩溃
- 输入纯数字用户名时系统提示"密码不能为空"错误测试人员可能也需要反省自己所创建的Bug是一个偶发性Bug且复现步骤是否未描述清晰;
-
站在用户角度考虑并抛出问题
功能是否正常一般只是测试的一部分, 测试人员不仅需要测试功能是否正常, 还需要站在用户的角度去思考用户的使用感受;
并且以较好的态度与开发人员进行沟通, 使其进行换位思考, 抛出类似于"如果你是开发人员, 出现这样的问题是否会有不好的使用感受";
-
Bug定级需要有理有据
每个企业在开发过程中有属于当前企业的用于参考的Bug定级手册, 在Bug定级过程中不能无视用于参考的手册随意为Bug定级;
在测试过程中, Bug的定级不仅需要参考需求文档, 还要站在用户的角度去定级, 这意味着在进行Bug定级时公司内部的Bug定级参考与用户的角度是双方面都要进行考虑的;
可能作为开发组, 开发人员更加看重功能是否可用以及是否出现重大问题, 但实际上用户的使用体验一样也是作为Bug定级的标准;
-
测试人员提高自身业务水平
一位合格的测试人员不仅需要提出问题, 同样需要对Bug进行分析, 并尽量提供开发人员Bug思路进行定位, 同时给出解决方案;
同样的在此过程中, 实际上开发人员与测试人员需要站在同一个角度相互讨论(提出建议)而不是拼的你死我活(不能以命令式的口吻命令开发人员按照自己的逻辑来修改Bug);
-
Bug 评审
在创建Bug之后, 如果确认当前创建Bug无误且未出现上述问题时, 测试人员与开发人员无法统一思想时, 必要时可召开Bug评审;
Bug评审主要解决两个问题:
-
决定如何解决处理 Bug
-
分析缺陷产生的原因, 找出预防的对策(预防下次开发过程中出现相同或者类似的错误)
通常情况下, Bug评审会议时需要三类人员在场, 分别为:
-
测试代表
测试代表主要从Bug的具体表现, 严重程度等方面提供信息, 并提出自己的看法与对Bug的处理意见;
-
开发代表
开发代表主要从修改缺陷的难度和风险出发, 考虑缺陷修改需要付出的代价, 以及可能影响的范围, 可能引发的风险;
若确定Bug需要修改后, 还要讨论出修改的初步方案;
-
产品代表
产品代表主要从产品的整体计划, 用户的要求等方面对缺陷的修改必要性, 修改缺陷的事件和版本提出自己的意见;
本质上产品代表参加评审会议的主要原因是, 测试团队与开发团队服务于产品, 因此产品代表的意见同样很重要;
-
相关文章:
『 测试 』软件测试全流程与Bug管理核心要点解析
文章目录 1 软件测试生命周期2 Bug2.1 Bug 的概念2.2 提出清晰的 Bug2.3 Bug 级别2.4 Bug 的生命周期2.5 作为测试人员与开发人员发生冲突怎么办 1 软件测试生命周期 软件测试贯穿于软件的整个生命周期; 需求分析 测试前需要对需求进行分析, 分析通常站在三个角度去考虑, 即用…...
【springcloud学习(dalston.sr1)】使用Feign实现接口调用(八)
该系列项目整体介绍及源代码请参照前面写的一篇文章【springcloud学习(dalston.sr1)】项目整体介绍(含源代码)(一) (一)Feign的理解 前面文章【springcloud学习(dalston.sr1)】服务消费者通过restTemplat…...
嵌入式Linux Qt开发:2、Qt creator简单配置、Qt Designer使用以及信号槽机制使用
一、前言 Qt creator比较轻量,而且是Qt自带的IDE,基本可以开箱即用,个人使用起来感觉还是比较舒服的,并且其自带的FakeVim也可以做一些Vim的配置,其主界面可以简单配置显示很多的窗口,让开发更加顺畅。 Q…...
【Vue 3 + Vue Router 4】如何正确重置路由实例(resetRouter)——避免“VueRouter is not defined”错误
在使用 Vue 3 和 Vue Router 4 开发中大型 SPA 应用时,我们经常会遇到需要动态添加或删除路由的场景。尤其是在权限控制和用户登出后重置路由的需求中,正确地实现 resetRouter 非常关键。 然而,许多开发者在迁移或初始化项目时,会…...
企业内部通讯,企业级即时通讯软件选择
企业内部的沟通往往涉及大量敏感信息,如商业机密、财务数据、客户信息等。BeeWorks IM即时通讯平台采用全私有化部署,企业可以将服务器部署在自己的数据中心或私有云环境中,确保所有数据的存储和传输都在企业可控的网络内完成。这种部署方式从…...
300. 最长递增子序列
理解最长递增子序列(LIS)是解决该问题的关键。子序列是从给定数组中按顺序选取的元素序列,例如数组 [1, 2, 3, 4, 5] 的子序列可以是 [2, 3, 4]。需要注意的是,子序列的元素在原数组中不一定是连续的。因此,最长递增子…...
MongoDB入门
1.MongoDB 基本概念详解 2.MongoDB 快速实战 3.MongoDB 核心操作与原理详解 Mongo 是 humongous 的中间部分,在英文里是“巨大无比”的意思。所以 MongoDB 可以翻译 成“巨大无比的数据库”,更优雅的叫法是“海量数据库”。Mongodb是一款非关系型数据库…...
MySQL基础原理
目录 一、MySQL架构 1、四层架构 2、MySQL运行机制 二、MySQL存储引擎 1、不同存储引擎对比 2、InnoDB存储结构 2.1 内存结构 2.2 磁盘结构 3、日志先行策略 3.1 核心思想 3.2 关键组件与流程 3.3 数据安全保证 3.3.1 崩溃恢复 3.3.2 持久性保障 一、MySQL架构 …...
Python刷题练习
文章目录 1.寻找相同字串2.密钥格式化3.五键键盘的输出4.单词重量5.输出指定字母在字符串的中的索引6.污染水域7.九宫格按键输入8.任务最优调度9.高效的任务规划 1.寻找相同字串 题目描述: 给你两个字符串t和p,要求从t中找到一个和p相同的连续子串,并输…...
基于GPUGEEK 平台进行深度学习
一、平台简介 GPUGEEK 是一个专注于提供 GPU 算力租赁服务的平台,在人工智能与深度学习领域为用户搭建起便捷的算力桥梁。它整合了丰富多样的 GPU 资源,涵盖 RTX - 4090、RTX - 3090、A100 - PCIE 等多种型号,满足不同用户在模型训练、数据处…...
基于Matlab的非线性Newmark法用于计算结构动力响应
基于Matlab的非线性Newmark法用于计算结构动力响应,主要针对材料非线性或几何非线性问题。 1. Newmark法基本原理 Newmark法是一种隐式时间积分方法,通过预估-校正步骤更新位移、速度和加速度: 预测步: un1unΔtvn…...
Oracle — PL-SQL
介绍 Oracle PL/SQL是专为Oracle数据库设计的过程化编程语言,深度融合SQL语句与结构化编程逻辑,旨在高效处理复杂数据操作与业务规则。其核心特征为“块结构”,程序由声明、执行、异常处理三部分组成,支持模块化开发,显…...
第七节第二部分:接口的综合案例
案例分析 代码: Student类 package com.Interface_Demo;public class Student {private String name;private char sex;private double score;public Student() {}public Student(String name, char sex, double score) {this.name name;this.sex sex;this.scor…...
【AI古风美学渲染】:淡雅光影中的细腻呈现
“顶作AI”作为国内首个深度融合中文语义的生成式AI平台,以近百亿级参数的Lens跨模态模型为核心,开创了“自然语言即生产力”的创作模式。该平台突破传统工具对专业术语的依赖,用户仅需输入如“水墨风格的山间庭院,晨雾中若隐若现…...
JVM学习专题(二)内存模型深度剖析
目录 1.JVM结构体系 编辑 2.跨平台特性 3.JVM整体结构及内存模型 1.栈内存 1、栈帧: 1.局部变量表 2.操作数栈 3.动态链接 4.方法出口 2、创建对象 2.程序计数器: 3.方法区 4.堆 5.本地方法区 6.总结 1.JVM结构体系 JDK、JRE 和 JVM…...
Prometheus 的介绍与部署(入门)
一、什么是Prometheus; 1.介绍 Prometheus 是一个功能强大的监控工具,适用于各种环境。通过简单的安装和配置,可以快速实现对系统和服务的监控。无论是单机环境、容器化环境还是 Kubernetes 集群,Prometheus 都能提供灵活…...
JavaSwing之-JDialog
JavaSwing之-JDialog JDialog 是 Java Swing 中用于创建对话框窗口的容器类,继承自 Dialog 类(AWT),常用于显示临时信息、获取用户输入或执行模态操作。它是 javax.swing.JDialog 包中的类。 与 JFrame 不同的是,JDia…...
配置Nginx解决http host头攻击漏洞【详细步骤】
前言 大概内容: 安全系统渗透测试出host头攻击漏洞,下面是解决步骤,本人已测过无问题。 server_name aaabbb.com; if ($http_Host !~* ^127.0.0.1|aaabbb.com|localhost$){return 403;}...
如何用Redis实现分布式锁?RedLock算法的核心思想?Redisson的看门狗机制原理?
一、Redis分布式锁基础实现 public class RedisDistributedLock {private JedisPool jedisPool;private String lockKey;private String clientId;private int expireTime 30; // 默认30秒public boolean tryLock() {try (Jedis jedis jedisPool.getResource()) {// NX表示不…...
LeetCode 热题 100 35.搜索插入位置
目录 题目: 题目描述: 题目链接: 思路: 核心思路: 思路详解: 代码: Java代码: 题目: 题目描述: 题目链接: 35. 搜索插入位置 - 力扣&…...
电流检测放大器的优质选择XBLW-INA180/INA181
前言: 在当前复杂的国际贸易环境下,关税的增加使得电子元器件的采购成本不断攀升,电子制造企业面临着巨大的成本压力。为了有效应对这一挑战,实现国产化替代已成为众多企业降低生产成本、保障供应链稳定的关键战略。对此芯伯乐推出…...
序列化和反序列化:从理论到实践的全方位指南
你好,我是 shengjk1,多年大厂经验,努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注!你会有如下收益: 了解大厂经验拥有和大厂相匹配的技术等 希望看什么,评论或者私信告诉我! 文章目录 一…...
Leetcode (力扣)做题记录 hot100(62,64,287,108)
力扣第62题:不同路径 62. 不同路径 - 力扣(LeetCode) class Solution {public int uniquePaths(int m, int n) {int[][] array new int[m][n];for(int i 0;i<n;i){array[0][i] 1;}for(int i 0;i<m;i){array[i][0] 1;}for(int i …...
【Linux】shell内置命令fg,bg和jobs
Shell 内置命令 fg(foreground 的缩写)。它用于将后台挂起的任务恢复到前台运行。 例如: 假设你运行了一个耗时的 SVN 操作(如 svn update 或 svn checkout)。按下 CtrlZ 将该进程挂起到后台。输入 fg…...
鸿蒙OSUniApp 制作动态加载的瀑布流布局#三方框架 #Uniapp
使用 UniApp 制作动态加载的瀑布流布局 前言 最近在开发一个小程序项目时,遇到了需要实现瀑布流布局的需求。众所周知,瀑布流布局在展示不规则尺寸内容(如图片、商品卡片等)时非常美观和实用。但在实际开发过程中,我…...
通用软件项目技术报告 - 导读II
现在,我们正式进入报告的第三个主要领域:3. 领域三:核心业务逻辑与算法实现。 连接: 我们已经讨论了如何存储数据(领域一)和如何设计 API 让外部或内部服务可以访问这些数据或触发操作(领域二)。现在,我们将深入应用程序的“心脏”——实际执行业务规则、进行计算和(…...
新能源汽车三电质量护盾:蓝光三维扫描技术显身手
在绿色低碳的潮流下,新能源汽车行业快速发展,车企们纷纷加速电气化转型。由于电动汽车动力系统构造与内燃机车辆的构造有很大不同,制造商及其供应商必须加快工程研发设计及生产,而这对质量保证过程提出了新的挑战。 对于新能源汽…...
针对已训练好的YOLOv8模型的优化策略
以下是针对已训练好的YOLOv8模型的优化策略,结合模型微调、结构改进、训练策略调整等方法,可进一步提升检测性能或适应特定场景需求: 一、超参数调优 学习率动态调整 初始学习率(lr0):若模型收敛后仍有优化…...
AI 产业化浪潮:从生成智能到星载计算,中国如何重塑全球竞争格局
2025 年的科技版图上,人工智能正经历着从技术奇点到产业爆点的历史性跨越。当生成式 AI 突破实验室围墙走进千行百业,当智能体开始在数字世界自主决策,当卫星搭载的大模型在太空展开计算,一场由技术创新驱动的产业革命正在重塑全球…...
Python如何解决中文乱码
Python文件头部声明 # -*- coding: utf-8 -*- # 必须放在文件第一行或第二行中文字符串定义方式 # Python 3 chinese_str "中文" # 默认就是Unicode# Python 2 chinese_str u"中文" # 必须加u前缀字符串编码转换黄金法则 # 解码:字节串 …...
android studio导入项目
如果 gradle-8.0-bin.zip 没有下载成功 可以点击进入这个网站:https://services.gradle.org/distributions/ 找到和自己本版相同的gradle-8.0-bin.zip文件找到自己版本进行下载; 如果下载依赖失败, 可以手动下载依赖编译过程中的jar https://repo.maven.apache.org/…...
Android Studio Meerkat与Gradle构建工具升级实战指南
简介 Android Studio Meerkat和Gradle构建工具的升级将带来显著的性能提升和开发体验优化。在Android生态快速演进的2025年,开发者亟需掌握这些新特性以提升工作效率。本指南将从零开始,详细讲解如何升级Android Studio和Gradle构建工具,配置新特性,并提供实际应用场景的代…...
TCP/IP参考模型详解:从理论架构到实战应用
一、参考模型基础概念与分类 计算机网络参考模型是为解决网络通信标准化问题而设计的逻辑框架。在众多模型中,TCP/IP参考模型以其高实用性和广泛应用,成为现代网络架构的基石。该模型采用分层设计思想,将复杂的网络通信功能划分为多个层次&am…...
【Linux网络】网络层
网络层 在复杂的网络环境中确定一个合适的路径 IP 协议 IPV4 点分十进制[0,255].[0,255].[0,255].[0,255]IPV6 IP地址目标网格目标主机 基本概念 主机:配有IP地址,但是不进行路由控制的设备;路由器:即配有IP地址,又能进行路由控制;节点:主机和路由器的统称。 两个问题 路…...
FastAPI + OpenAI 模型 的 GitHub 项目结构模板
FastAPI OpenAI 模型 的 GitHub 项目结构模板,适合用作大模型(如 GPT-4) API 服务的基础框架。该模板包括了基本的项目结构、配置、文档以及与 OpenAI API 的交互方式。 项目结构 fastapi-openai-api/ ├── app/ │ ├── __init__.p…...
基于EFISH-SCB-RK3576/SAIL-RK3576的无人快递柜控制器技术方案
国产化替代J1900的智能化升级方案 一、硬件架构设计 多模态感知模块 智能识别单元: 双MIPI-CSI接口接入4K摄像头,NPU加速包裹条码识别(速度>5件/秒,准确率>99.99%),支持破损检测&…...
Centos 上安装Klish(clish)的编译和测试总结
1,介绍 clish是一个类思科命令行补全与执行程序,它可以帮助程序员在nix操作系统上实现功能导引、命令补全、命令执行的程序。支持?,help, Tab按键。本文基于klish-2.2.0介绍编译和测试。 2,klish的编译 需要安装的库&…...
Android学习总结之Glide自定义三级缓存(面试篇)
一、三级缓存核心原理与设计 问题 1:为什么需要三级缓存?各层缓存的核心作用是什么? 回答核心 内存缓存:毫秒级快速响应,存储近期浏览的图片(如滑动列表来回切换的图片),通过 LRU…...
管理Oracle Data Guard的最佳实践
Oracle Data Guard的中文名字叫数据卫士,顾名思义,它是生产库的一道保障。所以管理Data Guard是DBA的一项重要工作之一,管理Data Guard时主要有以下几个注意点需要引起重视。 备份库的归档日志积压 一般情况下,生产库的归档日志是…...
iOS WebView和WKWebView怎么调试?
iOS WebView调试 本教程将指导您如何使用WebDebugX调试iOS应用中的WebView内容,包括WKWebView和UIWebView。通过本教程,您将学习如何检查WebView中的HTML、CSS和JavaScript,以及如何解决常见的WebView调试问题。 准备工作 在开始调试iOS W…...
笔记本电脑打开网页很慢,一查ip地址网段不对怎么处理
我有一个笔记本,在家里连WIFI后获取到的ip地址网段不对,那么常规做法是手动去配置个静态IP和DNS,要知道笔记本IP地址默认采用的是DHCP,也就是动态获取ip地址。如果手动设置静态IP,也就是固定IP的话,你换个场…...
【更新】全国省市县-公开手机基站数据集(2006-2025.3)
手机基站是现代通信网络中的重要组成部分,它们为广泛的通信服务提供基础设施。随着数字化进程的不断推进,手机基站的建设与布局对优化网络质量和提升通信服务水平起着至关重要的作用,本分享数据可帮助分析移动通信网络的发展和优化。本次数据…...
iOS视频编码详细步骤(视频编码器,基于 VideoToolbox,支持硬件编码 H264/H265)
iOS视频编码详细步骤流程 1. 视频采集阶段 视频采集所使用的代码和之前的相同,所以不再过多进行赘述 初始化配置: 通过VideoCaptureConfig设置分辨率1920x1080、帧率30fps、像素格式kCVPixelFormatType_420YpCbCr8BiPlanarFullRange设置摄像头位置&am…...
行项目违反范围截止值
把允许负值打钩就可以,如果没有此字段,按照下面截图把屏幕格式放字段出来;字段放出来以后如果是灰色的话,就用SE16N调试模式修改字段值;...
Linux wlan 单频段 dual wifi创建
环境基础 TP LINK WN722N V1网卡linux 主机 查看设备是否支持双ap managed:客户端模式(连接路由器/AP)AP:接入点模式(创建热点)AP/VLAN:支持带VLAN标签的虚拟AP{ AP, mesh point, P2P-GO } &l…...
STC32G12K12实战:串口通信
STC32G12K128芯片写一个按键通过串口1发送字符串的程序。首先,确认芯片的串口1配置。STC32G系列通常使用UART1,相关的寄存器是P_SW1来选择引脚。默认情况下,UART1的TX是P3.1。 接下来是设置定时器作为波特率发生器。通常用定时器2,…...
unity 鼠标更换指定图标
1.准备两张图 要求图片导入设置如下 将 Texture Type 改为 Cursor 确保 Read/Write Enabled 已勾选 取消勾选 Generate Mip Maps 将 Filter Mode 设为 Point (保持清晰边缘) 将 Compression 设为 None (无压缩) 2.创建脚本,把脚本挂到场景中 ,该…...
会话管理中的cookie,以及浏览器操作cookie,在express中设置,删除,和获取cookie
会话管理中的 Cookie以及在浏览器和 Express 中操作 Cookie: 🍪 一、Cookie 在会话管理中的作用 ✅ Cookie 的定义: Cookie 是服务器发送到浏览器并保存在本地的小段文本数据,浏览器会在之后的请求中将这些数据回传给服务器。 …...
Mac的web服务器
最近用了个人觉得比较好用的集成环境。Flyenv - FlyEnv | 一体化全栈环境管理工具. 支持macOS / Windows / Linux 链接放在这了。 mac上安装: brew install flyenv 等着安装成功就好了 给个图。ollama也有...
数据可视化大屏——南方草牧商品交易所
代码综述 整体结构与用途 这是一段用于构建网页的 HTML 代码,结合引入的 JavaScript 和 CSS 文件,初步推测该网页是南方草牧商品交易所的相关页面,主要展示了与草牧商品交易相关的各类数据,包括产品挂牌数、成交量、会员信息等&…...