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

BDD - SpecFlow ExternalData Plugin 导入外部测试数据

BDD - SpecFlow ExternalData Plugin 导入外部测试数据

  • 引言
  • SpecFlow ExternalData 插件
    • 支持的数据源
    • Tags
  • 实践
    • 创建一个 Class Libary Project
    • 添加 NuGet Packages
    • 添加测试数据源文件
      • CSV 文件
      • Excel 文件
    • 添加 Feature 文件
    • 实现 Step Definition
    • 执行
      • Scenario 导入测试数据源
      • Scenario Outline 导入测试数据源
      • 重命名数据源中的列名
      • Excel 指定 worksheet

引言

在设计 BDD Scenarios 时,有时会用到大量的测试数据,或是多个 Scenarios 共享这些大量数据,如果将这些数据都列在 Sceanrios 中,会使得 Scenario 非常庞大,大量重复的数据快也使得 Feature 文件非常庞大,数据行非常长等,导致可读性差,不够简洁。

这时我们就会思考能不能将数据放在某个文件中,Scenarios 中的参数可以跟这些外部数据关联起来。非常棒的是 SpecFlow 可以做到,支持加载外部数据源,并且非常方便地将这加载的数据导入到 Scenarios 中。

SpecFlow ExternalData 插件

利用 SpecFlow ExternalData 插件,可以实现将测试数据和测试 Scenarios 分开,并且 Scenarios 之间可以重用这些测试数据。这个插件支持最低版本 SpecFlow 3.5.5 起。

支持的数据源

  1. CSV 文件(格式 ‘CSV’, 扩展名 .csv)

Note: 标准的 RFC 4180 CSV 格式是带一行 header line,也就是表头 (ExternalData 插件利用 CsvHelper 来解析这类文件).

  1. Excel 文件(格式 Excel, 扩展名 .xlsx, .xls, .xlsb)

Note: XLSX 和 XLS 都是支持的 (ExternalData 插件利用 ExcelDataReader 来解析这类文件).

注意:SpecFlow ExternalData 某些版本可能支持 JSON 格式的文件,可参考官网实例 ExternalDataSample,但是这个插件后面被重写了,最新版本不再支持 JSON 文件加载导入到 Scenarios 中,具体参考 Issue #2559

Tags

@DataSource:path-to-file
这个 tag 主要是指明数据来源,可以加到 Scenario 或 Scenario Outline 上。

注意: 这个路径是基于 Feature 文件所在 folder 的相对路径。也就是说数据源文件应该放在 Feature 文件夹范围内,不能 Feature 文件夹范围外其它地方,不然编译会出错。

@DisableDataSource
@DataSource tag 可以加在 Feature 节点上,将所有 scenarios 转化成 scenario outlines。当整个 Feature 文件都用到相同的外部数据源时,这种方式非常有用。@DisableDataSource 用于少数 Scenarios 不使用这个 tag 在 Feature 节点的外部数据源。

@DataFormat:format
这个 tag 仅用在文件的扩展名不能被识别。

@DataSet:data-set-name
这个 tag 只应用于 Excel 文件。 默认是指定第一个 worksheet,当有多个 worksheet,就可以用这个 tag 指明特定的 worksheet。

@DataField:name-in-feature-file=name-in-source-file
这个 tag 用于 “重命名” 外部数据源的列名

tags 汇总:

  • Tags 可加在 Feature,scenario, scenario outline 或 scenario outline examples 上
  • Tags 可从 Feature 节点上继承,但是可覆盖父类 tag 或者用 @DisableDataSource 弃用数据源。
  • Tags 不能包含空格,通常用下划线 (_) 代表一个空格。目前不支持访问访问一个文件名或路径含有空格的文件

实践

创建一个 Class Libary Project

在这里插入图片描述

添加 NuGet Packages

都是最新版本:
SpecFlow 3.9.74
SpecRun.SpecFlow 3.9.31

SpecFlow.ExternalData 3.9.74

FluentAssertions 6.8.0

在这里插入图片描述

添加测试数据源文件

为了区分数据源 path,我们将准备两个数据源,一个直接放在 Feature 文件夹下,一个放在 Feature 文件夹下的子文件夹下。

CSV 文件

Feature/TestData 目录下添加一个 CSV 文件 products.csv

在这里插入图片描述

在这里插入图片描述

Excel 文件

Feature 目录下添加一个 Excel 文件 products.xlsx

在这里插入图片描述

在这里插入图片描述

添加 Feature 文件

Products.feature

Feature: Products@DataSource:TestData/products.csv
Scenario: The basket price is calculated correctly (csv)Given the price of <product> is<price>And the customer has put 1 piece of <product> in the basketWhen the basket price is calculatedThen the basket price should be €<price>@DataSource:TestData/products.csv
Scenario Outline: Valid product prices are calculated (csv Outline)	Given the price of <product> is<price>And the customer has put 1 piece of <product> in the basketWhen the basket price is calculatedThen the basket price should be €<price>Examples: | product    | price || Cheesecake | 2.0   |@DataSource:TestData/products.csv @DataField:product-name=product @DataField:price-in-EUR=price
Scenario: The basket price is calculated correctly (csv renamed fields)	Given the price of <product-name> is<price-in-EUR>And the customer has put 1 piece of <product-name> in the basketWhen the basket price is calculatedThen the basket price should be €<price-in-EUR>@DataSource:products.xlsx @DataSet:other_products
Scenario: The basket price is calculated correctly for other productsGiven the price of <product> is<price>And the customer has put 1 piece of <product> in the basketWhen the basket price is calculatedThen the basket price should be €<price>

在这里插入图片描述

实现 Step Definition

ProductBindings.cs
这里我们只是想知道 Scenarios 中的参数和测试文件的联系,所以只实现了部分 step,保证 Scenarios 能跑起来就 OK。

using System;
using TechTalk.SpecFlow;namespace ExternalData.Steps
{[Binding]public class ProductBindings{[Given(@"the price of (.*) is €(.*)")]public void GivenThePriceOfProductIsPrice(string product, float price){Console.WriteLine($"product:{product}");Console.WriteLine($"price:{price}");}[Given(@"the customer has put (.*) piece of (.*) in the basket")]public void GivenTheCustomerHasPutPieceOfProductInTheBasket(int number, string product){}[When(@"the basket price is calculated")]public void WhenTheBasketPriceIsCalculated(){}[Then(@"the basket price should be €(.*)")]public void ThenTheBasketPriceShouldBePrice(string price){}}
}

在这里插入图片描述

执行

Scenario 导入测试数据源

这个 Scenario 导入了 TestData/products.csv 文件的数据,注意文件路径
@DataSource:TestData/products.csv

@DataSource:TestData/products.csv
Scenario: The basket price is calculated correctly (csv)Given the price of <product> is<price>And the customer has put 1 piece of <product> in the basketWhen the basket price is calculatedThen the basket price should be €<price>

products.csv 中有三行数据,所以 Scenario 会自动转换成 Scenario outline

在这里插入图片描述

在这里插入图片描述
执行其中一个 Scenario,Step 中的 参数和 CSV 列名对应上了,自动关联起来了。

Given the price of <product> is<price>
 [Given(@"the price of (.*) is €(.*)")]public void GivenThePriceOfProductIsPrice(string product, float price){Console.WriteLine($"product:{product}");Console.WriteLine($"price:{price}");}

在这里插入图片描述

Scenario Outline 导入测试数据源

@DataSource:TestData/products.csv
Scenario Outline: Valid product prices are calculated (csv Outline)	Given the price of <product> is<price>And the customer has put 1 piece of <product> in the basketWhen the basket price is calculatedThen the basket price should be €<price>Examples: | product    | price || Cheesecake | 2.0   |

生成了 4 个 Scenarios,其中绿色部分是 Scenario 中 Example 中的数据,黄色高亮是 CSV 中三行数据生成的。

在这里插入图片描述

重命名数据源中的列名

@DataField:product-name=product @DataField:price-in-EUR=price 通过这种方式将 Scenario 中的参数名和数据源中的列名映射起来。

@DataSource:TestData/products.csv @DataField:product-name=product @DataField:price-in-EUR=price
Scenario: The basket price is calculated correctly (csv renamed fields)	Given the price of <product-name> is<price-in-EUR>And the customer has put 1 piece of <product-name> in the basketWhen the basket price is calculatedThen the basket price should be €<price-in-EUR>

在这里插入图片描述

Excel 指定 worksheet

Excel 有三个 worksheet,其中 other_products 有两行测试数据。

在这里插入图片描述

@DataSet:other_products 通过 @DataSet 来指定特定的 worksheet

@DataSource:products.xlsx @DataSet:other_products
Scenario: The basket price is calculated correctly for other productsGiven the price of <product> is<price>And the customer has put 1 piece of <product> in the basketWhen the basket price is calculatedThen the basket price should be €<price>

生成了 2 条 Scenarios,并且参数能够自动关联起来。

在这里插入图片描述

相关文章:

BDD - SpecFlow ExternalData Plugin 导入外部测试数据

BDD - SpecFlow ExternalData Plugin 导入外部测试数据引言SpecFlow ExternalData 插件支持的数据源Tags实践创建一个 Class Libary Project添加 NuGet Packages添加测试数据源文件CSV 文件Excel 文件添加 Feature 文件实现 Step Definition执行Scenario 导入测试数据源Scenari…...

[Power Query] 日期和时间处理

Power Query查询编辑器为日期和时间数据提供了强大而快捷的处理方式 例1: 从日期中提取年、月份、日、季度、周、天等信息 数据源 步骤1:将数据源导入到Power BI Desktop&#xff0c;单击【转换数据】选项&#xff0c;进入Power Query查询编辑器界面 步骤2:选中"日期&qu…...

设计模式之抽象工厂模式

利用反射技术简单梳理抽象工厂模式 工厂模式实现 通常我们在实际工作中&#xff0c;经常遇到需要访问数据库的场景。 而常见的数据库又多种多样&#xff0c;怎么样针对不同的数据库来建立不同的数据库连接呢&#xff1f; 我们可以看下用抽象工厂模式加上反射技术来如何实现。…...

JavaWeb_第5章_会话技术_Cookie+Session

JavaWeb_第5章_会话技术_CookieSession 文章目录JavaWeb_第5章_会话技术_CookieSession1&#xff0c;会话跟踪技术的概述2&#xff0c;Cookie2.1 Cookie的基本使用2.2 Cookie的原理分析2.3 Cookie的使用细节2.3.1 Cookie的存活时间2.3.2 Cookie存储中文3&#xff0c;Session3.1…...

跟着实例学Go语言(一)

本教程全面涵盖了Go语言基础的各个方面。一共80个例子&#xff0c;每个例子对应一个语言特性点&#xff0c;非常适合新人快速上手。 教程代码示例来自go by example&#xff0c;文字部分来自本人自己的理解。 本文是教程系列的第一部分&#xff0c;共计20个例子、约1万字。 目…...

数据库基础 - 数据类型、关键字、cmd中操作数据库的命令

cmd中操作数据库的命令 mysql -hlocalhost -用户名 -密码 show database&#xff1b;查询数据库中的小数据库 show 数据库名&#xff1b;查询某一个小数据库 show 表名&#xff1b;查询表的结构 exit 退出数据类型 数值类型 int &#xff1a;整形 double&#xff1a;双精度&…...

2022SDNU-ACM结训赛题解

首先感谢一下各位出题人的精心准备、验题人的辛勤付出、以及选手的积极参加 题解 Problem A 柳予欣的归来【数学】 出题人&#xff1a; bhq 没想到一血是被打完山大的牛客比赛后来结训赛玩的wyx拿走的&#xff01; 题目描述&#xff1a; 计算(∑0<d<pd−1)m(\sum_{0…...

《人类简史》笔记三—— 历史从无正义

目录 一、尽管把人人生而平等喊得震天响&#xff0c;其实还是把人分成了上下等级 二、恶性循环 三、当男人究竟有什么好的&#xff1f; 一、尽管把人人生而平等喊得震天响&#xff0c;其实还是把人分成了上下等级 古时候&#xff1a; 上等人 平民和奴隶 现在&#xff1a;…...

Python实现基于用户的协同过滤推荐算法构建电影推荐系统

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 基于用户的协同过滤推荐&#xff08;User-based CF&#xff09;的原理假设&#xff1a;跟你喜好相似的人…...

阿里巴巴专场——第322场周赛题解

目录 模拟法&#xff1a;6253.回环句 排序后模拟&#xff1a;6254. 划分技能点相等的团队 BFS&#xff1a;6255. 两个城市间路径的最小分数 BFS&#xff1a;6256. 将节点分成尽可能多的组 模拟法&#xff1a;6253.回环句 这道题直接按照题目的意思暴力模拟即可&#xff1a;…...

【机器学习】支持向量回归

有任何的书写错误、排版错误、概念错误等&#xff0c;希望大家包含指正。 在阅读本篇之前建议先学习&#xff1a; 【机器学习】支持向量机【上】硬间隔 【机器学习】支持向量机【下】软间隔与核函数 支持向量回归 支持向量回归&#xff08;support vector regression&#xf…...

Linux安装mysql

1、 查看是否已经安装 Mysql rpm -qa | grep mysql 如果你查看出来有东西&#xff0c;可以使用下面命令将其删除 rpm -e 文件名 2 、下载官方 Mysql 包 wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm 如果安装有提示&#xff1a;Cannot…...

JeecgBoot搭建(低代码)

环境安装 后端&#xff1a;JDK: 1.8 (小于11)、Maven: 3.5、MySql: 5.7、Redis: 3.2 前端&#xff1a;Node Js: 14.18 / 16、Npm: 5.6.0、Yarn: 1.21.1 、Pnpm 工具&#xff1a; IDEA、Navicat、Git、TortoiseGit拉取代码 后端&#xff1a;git clone https://gitee.com/jeecg/…...

【java】3-获取线程引用与线程的属性

1.获取线程的引用 在创建一个线程之后&#xff0c;我们很有必要去获取当前线程实例的引用&#xff0c;以便能够观察到线程的一些属性&#xff0c;或是对于当前线程进行一系列的操作 调用Thread类的静态方法currentThread&#xff0c;我们便能拿到当前线程的引用 Thread.curr…...

2022-12-04一周学习

这周基本上还是在对前端学习的更多一点&#xff0c;主要是之前没有重视vue3的学习,现在在补上来&#xff0c;学习了vue3的一些知识&#xff0c;前端的权限管理&#xff0c;设置路由守卫&#xff0c;pinia&#xff0c;还学习了redis的一些基本操作&#xff0c;之前只是照搬了别人…...

CG-34 浊度传感器 简单说明

产品概述 浊度传感器是一种智能监测水中悬浮物对光线透过时所发生的阻碍程度的仪器。允许在水中的测量点进行无人值守的操作。采用自清洗设计&#xff0c;可清除水中附着物以及气泡聚集而影响测量结果。具有优异的抗污染能力&#xff0c;即使恶劣的环境长期在线监测&#xff0c…...

跟着实例学Go语言(二)

本教程全面涵盖了Go语言基础的各个方面。一共80个例子&#xff0c;每个例子对应一个语言特性点&#xff0c;非常适合新人快速上手。 教程代码示例来自go by example&#xff0c;文字部分来自本人自己的理解。 本文是教程系列的第二部分&#xff0c;共计20个例子、约1.2万字。 …...

linux+window+macos下的JDK安装

1. Linux中安装JDK &#xff08;1&#xff09;下载Linux版本的jdk压缩包 &#xff08;2&#xff09;解压 tar -zxvf 压缩包名 例如&#xff1a; tar -zxvf jdk-8u251-linux-x64.tar.gz&#xff08;3&#xff09;在系统配置文件配置java 编辑profile配置文件 vim /etc/prof…...

DiffuSEEG:一种基于stable diffusion 的SEEG数据补全方法

目录一. 立体脑电图&#xff08;SEEG&#xff09;1.1 SEEG概念1.2 SEEG作用1.3 SEEG的适用场景1.4 操作方法一. 立体脑电图&#xff08;SEEG&#xff09; 1.1 SEEG概念 立体脑电图&#xff08;SEEG&#xff09;&#xff1a;是一种借助外科微创的方法将电极植入到大脑不同的部…...

kubernetes—Service介绍

Service介绍 在kubernetes中&#xff0c;pod是应用程序的载体&#xff0c;我们可以通过pod的ip来访问应用程序&#xff0c;但是pod的ip地址不是固定的&#xff0c;这也就意味着不方便直接采用pod的ip对服务进行访问。 为了解决这个问题&#xff0c;kubernetes提供了Service资…...

AlphaFold2源码解析(7)--模型之Evoformer

AlphaFold2源码解析(7)–模型之Evoformer 这篇文章我们主要药讲解AlphaFold2的Evoformer的代码细节。 Evoformer Stack 该网络有一个双塔结构&#xff0c;在MSA堆栈中具有轴向的自我注意&#xff1b;在Pair堆栈中具有三角形的乘法更新和三角形的自我注意&#xff1b;以及外积…...

docker 安装 redis 6.0.8 cluster 实战 (3主3从) 动态扩容

这里将上篇博客搭建的3主3从 扩容为 4主4从 1. 新建两个node节点 docker run -d \ --net host \ --privileged \ --name redis-node-7 \ --log-opt max-size100m \ --log-opt max-file3 \ -v /root/docker/redis-node-7/data:/data \ redis:6.0.8 \ --cluster-enabled yes \ -…...

20221204

You are so much more than how you look. 你比你的外表更有魅力 Never give up until the fight is over. 永远不要放弃&#xff0c;要一直战斗到最后一秒。 whats done cannot be undone 覆水难收 If I was going somewhere, I was running。 如果我要去哪儿&#xff…...

CN_数据链路层流量控制@可靠的传输机制@ARP协议

文章目录流量控制技术(协议)停止-等待流量控制滑动窗口流量控制发送窗口接收窗口基本原理可靠的传输机制确认机制ACK超时重传机制RTOARQ处理差错自动重传请求ARQ协议&#x1f388;ARQ具体协议单帧ARQ协议停止-等待协议SW-ARQ例连续ARQ协议后退N帧协议(GBN)GBN多帧滑动窗口累计确…...

程序人生 | 与足球共舞的火柴人(致敬格拉利什,赋予足球更深的意义)

个人简介 &#x1f440;个人主页&#xff1a; 前端杂货铺 &#x1f64b;‍♂️学习方向&#xff1a; 主攻前端方向&#xff0c;也会涉及到服务端 &#x1f4c3;个人状态&#xff1a; 在校大学生一枚&#xff0c;已拿多个前端 offer&#xff08;秋招&#xff09; &#x1f680;未…...

安装ubuntu20.04, CUDA11.4, cnDNN, tensorflow, pytorch

ubuntu22.04默认python为3.11 ubuntu20.04默认python为3.8 第一步&#xff0c;分区安装系统 efi引导区, 逻辑分区&#xff0c;512M root: 主分区&#xff0c;512M swap: 逻辑分区&#xff0c;64G home:逻辑分区&#xff0c;320G /:逻辑分区, 130G&#xff0c; CUDA是安装…...

shell脚本受限执行

shell 中运行的脚本或脚本的个代码断会禁用一些正常 shell 中可以执行的命令.这是限制脚本用户的权限和最小化运行脚本导致的破坏的安全措施.受限的内容包括&#xff1a;使用 cd 命令更改工作目录. 更改环境变量$PATH, $SHELL, $BASH_ENV,或$ENV 的值. 读或更改 shell 环境选项…...

HTTP 速查手册

一、通用身份验证 # 服务端返回401&#xff0c;并告知验证类型为Basic GET 401 Unauthorized WWW-Authenticate: Basic realm"description"# 浏览器输入验证信息后&#xff0c;请求头中携带验证信息 Authorization: Basic xxxxxxxxxx二、Cookie # 服务端返回set-co…...

【计算机视觉】 摄像机标定

摄像机标定 齐次坐标 齐次坐标&#xff0c;将欧氏空间的无穷远点&#xff0c;与投影空间中有实际意义的消失点&#xff0c;建立起映射关系。 把齐次坐标转化为笛卡尔坐标的方法&#xff1a;是前面n-1个坐标分量分别除以最后一个分量即可 一些解释和性质&#xff1a; 比较好的…...

【Redis】Redis安装步骤和特性以及支持的10种数据类型(Redis专栏启动)

&#x1f4eb;作者简介&#xff1a;小明java问道之路&#xff0c;专注于研究 Java/ Liunx内核/ C及汇编/计算机底层原理/源码&#xff0c;就职于大型金融公司后端高级工程师&#xff0c;擅长交易领域的高安全/可用/并发/性能的架构设计与演进、系统优化与稳定性建设。 &#x1…...

DHTMLX Diagram JavaScript/HTML5 Pro Library:5.0

Diagram — JavaScript/HTML5 Diagram Library Ω578867473 破解版DHTMLX Diagram comprises a set of interactive HTML5 UI components such as organization charts, flowcharts, decision trees, block diagrams, mind maps, etc. Consisting of nodes and connectors, di…...

GPS卫星位置解算

本文介绍了基于C语言的GPS卫星位置解算原理与程序设计。针对每个原理、公式、代码设计进行了详细讲解&#xff0c;希望能够给测绘学子们带来帮助。 参考书籍&#xff1a; 李征航 黄劲松&#xff1a;GPS测量与数据处理&#xff08;第三版&#xff09; 目录 基础原理 1&#xf…...

大数据:Sqoop 简介与安装

一、Sqoop 简介 Sqoop 是一个常用的数据迁移工具&#xff0c;主要用于在不同存储系统之间实现数据的导入与导出&#xff1a; 导入数据&#xff1a;从 MySQL&#xff0c;Oracle 等关系型数据库中导入数据到 HDFS、Hive、HBase 等分布式文件存储系统中&#xff1b; 导出数据&am…...

[附源码]计算机毕业设计文曦家教预约系统Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…...

HK1 BOX刷入 Armbian系统作为服务器

HK1 BOX刷入 Armbian系统作为服务器 1 安装Armbian到EMMC 硬件 HK1 BOX s905 x3 固件版本选择 Armbian_23.02.0_Aml_s905x3_bullseye_5.15.80_server_2022.12.01用usb启动&#xff0c;tf/sd有的设备不行&#xff0c;有干扰&#xff0c;有可能从TF卡无法启动系统。 用usb启…...

CEC2015:动态多目标野狗优化算法求解CEC2015(提供完整MATLAB代码,含GD、IGD、HV和SP评价指标)

一、动态多目标优化问题简介 现实世界中&#xff0c;许多优化问题不仅具有多属性&#xff0c;而且与时间相关&#xff0c;即随着时间的变化&#xff0c;优化问题本身也发生改变&#xff0c;这类问题称为动态多目标优化问题&#xff08;dynamic multi-objective optimization p…...

【蓝桥杯选拔赛真题31】python三位数组合个数 青少年组蓝桥杯python 选拔赛STEMA比赛真题解析

目录 python三位数组合个数 一、题目要求 1、编程实现 2、输入输出...

SpringBoot项目--如何不停服更新应用?

原文网址&#xff1a;SpringBoot项目--如何不停服更新应用&#xff1f;_IT利刃出鞘的博客-CSDN博客 简介 说明 本文介绍Java后端项目如何不停机更新服务。 在生产环境中&#xff0c;一般都会每个服务部署多个实例。只要多于1个实例&#xff0c;就可以不停服更新应用。 不停服…...

MVVM与Vue响应式原理

Vue的响应式实现原理 MVVM M&#xff1a;模型 》data中的数据 V&#xff1a;视图 》模板 VM&#xff1a;视图模型 》Vue实例对象 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0EWNM16D-1670161519474)(C:\Users\lucas\Desktop\学习\图片\mode…...

vue和react的生命周期

vue和react的生命周期 一、Vue的生命周期二、React的生命周期2.1.类组件2.2.函数式组件一、Vue的生命周期 初始化阶段(组件创建、数据初始化)、挂载、更新、销毁 父子组件生命周期执行顺序 初次加载组件时:父beforeCreate – 父created – 父beforeMount – 子beforeCreate …...

浏览器高度兼容性

浏览器的卷去高度 1.标准模式 document.documentElement.scrollTop 2.非标准模式 document.body.scrollTop 浏览器高度兼容性 1.标准模式下 浏览器的实际高度&#xff1a; document.body.clientHeight 浏览器的可视高度&#xff1a;document.documentElement.clientHeight 2.非…...

关于天干地支及其计算

以天干地支计算日期是我国悠良的传统文化&#xff0c;最近在看如何计算人的生辰八字&#xff0c;写了个程序&#xff0c;但是只能算年的干支&#xff0c;月、日的干支计算方法太复杂了&#xff0c;望之只能却步&#xff0c;还是乖乖去查万年历比较好。这里记下关于干支的一些东…...

数据结构和算法之如何建立图

小白BG.1 邻接矩阵表示的图结点的结构 typedef struct GNode *PtrToGNode;//PtrToGNode是指向GNode的一个指针 struct GNode{ int Nv;//顶点数 int Ne;//边数 WeightType G[MaxVertexNum][MaxVertexNum]; DataType Data[MaxVertexNum];//存顶点的数据 }; typedef PtrToGNode MG…...

计算机毕业设计Java大众采编本微资讯发布平台(源码+系统+mysql数据库+lw文档)

计算机毕业设计Java大众采编本微资讯发布平台(源码系统mysql数据库lw文档) 计算机毕业设计Java大众采编本微资讯发布平台(源码系统mysql数据库lw文档)本源码技术栈&#xff1a; 项目架构&#xff1a;B/S架构 开发语言&#xff1a;Java语言 开发软件&#xff1a;idea eclipse…...

web前端-javascript-立即执行函数(说明、例子)

立即执行函数 /* (function(){alert("我是一个匿名函数~~~"); })(); */(function (a, b) {console.log("a " a);console.log("b " b); })(123, 456);1. 说明 函数定义完&#xff0c;立即被调用&#xff0c;这种函数叫做立即执行函数立即执…...

【计算机视觉】图像形成与颜色

图像形成与颜色 光照及阴影 辐射度学 颜色 颜色信息反映了入射光的能量分布与波长&#xff0c;可见光的波长在400nm到760nm之间。 RGB RGB分别代表三个基色&#xff08;R-红色、G-绿色、B-蓝色&#xff09;&#xff0c;如(0,0,0)表示黑色、(255, 255, 255)表示白色。其中2…...

Musical Christmas Lights——一个圣诞树灯光✨随音乐节奏改变的前端开源项目

文章目录前言视频介绍项目截图项目地址项目源码以上就是本篇文章的全部内容&#xff0c;将你编写好的项目分享给你的朋友们或者那个TA吧&#xff01;制作不易&#xff0c;求个三连&#xff01;❤️ &#x1f4ac; ⭐️前言 今天博主在刷短视频时&#x1f610;&#xff0c;朋友推…...

[附源码]Python计算机毕业设计SSM进出口食品安全信息管理系统(程序+LW)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…...

电平触发的触发器

普通的SR锁存器没有任何抗干扰能力 我们要加控制信号&#xff0c;来抵抗干扰 比如说我们不把信号直接加在门上&#xff0c;我们可以再加一级门电路&#xff0c;让这个输出和输入不在同一个门上&#xff0c;我们希望加入一个控制信号&#xff0c;来控制电路工作的时刻 对电路结…...

php后端+JQuery+Ajax简单表单提交

通过ajax,如果从后端直接想前端返回数组,那前端收到的是一个‘Array’的字符串。所以,我比较习惯的是用json对象的格式。由后端通过json_encode()函数,把数组封装成对象,传递到前端;前端也以json的格式接收。这里用提交表单来举例说明。 页面显示如下: JQueryAjax.…...

比亚迪越南再发力,对东南亚市场影响几何?

比亚迪在东南亚市场又有新行动——计划在越南扩大经销商网络。7月19日,盖世汽车获悉,本周,中国电动汽车制造商比亚迪在越南开设了首批门店,并概述了其在越南积极扩大经销商网络的计划。据悉,比亚迪的13家经销店将于7月20日正式面向越南公众开放。比亚迪希望到2026年其经销…...

LEVC翼真汽车:商务型的车载显示与感知系统

AR眼镜聚焦于车内空间,强调深度融合现实与虚拟环境,以无硬件束缚的创新方式,让乘客佩戴后能够即刻拥有沉浸式虚拟屏幕,无论是信息展示还是互动体验,均展现出卓越的整体效果,为驾乘带来了前所未有的便捷与享受。2024年7月12日,在第二届智能座舱车载显示与感知大会上,LEV…...

沈阳音乐学院举办辽宁省与俄罗斯滨海边疆区友好交响音乐会

辽宁省与俄罗斯滨海边疆区友好交响音乐会日前在沈阳音乐学院音乐厅隆重上演。适逢中俄建交75周年和中俄文化年,来自俄罗斯滨海边疆区爱乐乐团太平洋交响乐团的艺术家与沈音师生携手为中俄两国观众奉上了一场音乐与友谊的交响合奏。在乐团指挥拉苏洛夫奥塔别克执棒指挥下,滨海…...

2024年沪台研讨会举行两岸专家共话低碳循环与智慧健康

东方网记者王泳婷6月20日报道:由上海市人民政府参事室和旺旺集团《旺报》共同主办的“低碳循环与智慧健康”2024年沪台研讨会于6月20日在上海举行。沪台两地150余位嘉宾出席研讨会。研讨会上,旺旺集团副董事长周锡玮从绿碳、蓝碳、土壤固碳等不同角度作“农业减碳”主旨演讲。…...

问界新M7Max焕新版将于5月31日发布,底盘升级,预售价29.8万

近日,余承东通过微博分享,问界新M7 Max焕新版将在底盘性能上进行升级,其引入了CDC连续可变阻尼减振器技术,能够根据不同驾驶场景自动调节悬挂软硬程度。同时,在华为智能化控制的助力下,新车将在操控性能、行驶感受和舒适感上带来更好的体验。目前,问界新M7 Max焕新版已经…...

装机必备——截图软件PixPin安装教程

装机必备——截图软件PixPin安装教程 软件下载 软件名称&#xff1a;PixPin 1.5 软件语言&#xff1a;简体中文 软件大小&#xff1a;30.1M 系统要求&#xff1a;Windows7或更高&#xff0c; 64位操作系统 硬件要求&#xff1a;CPU2GHz &#xff0c;RAM2G或更高 下载通道①迅…...