抽奖的诱惑系统注册与登录功能测试报告

目录

一:项目背景

二:项目功能

(1) 注册功能

(2) 登录功能

     电话 + 密码登录

 电话 + 短信登录

三:设计测试用例

四:功能测试

五:自动化测试代码

七:遗留风险

八:测试结果评估


一:项目背景

在市场竞争白热化的当下,企业与商家亟需不断推陈出新,打造新颖的营销手段,以此抓住消费者的目光。传统营销模式渐显疲态,消费者对千篇一律的促销活动已然产生审美疲劳。抽奖作为一种极具吸引力的营销手段,能够迅速激发消费者的参与热情。通过设置丰富多样的奖品,如现金红包、优惠券、实物礼品等,不仅能提升消费者在购物过程中的乐趣,增强其对品牌的好感度,还能显著促进销售额的增长。以电商平台的促销活动为例,抽奖系统作为关键的互动环节,能吸引用户浏览商品页面,延长用户在平台的停留时长,有效提高商品的曝光率与销售量

二:项目功能

(1) 注册功能

输入信息

       姓名:必填项,支持中文、英文及常见符号,长度限制在 1-50 个字符。

       邮箱:必填项,需符合邮箱地址格式规范,系统将对输入邮箱进行格式校验,确保其有效性。

       手机号:必填项,仅支持中国大陆手机号码,格式为 11 位数字,系统需对输入的手机号码进行格式验证。

​​​​​​​       密码:必填项,密码强度要求为 8-20 位,至少包含一个大写字母、一个小写字母、一个数字和一个特殊字符(如!@#$%^&* 等)。系统需对密码复杂度进行实时校验,并提示用户密码强度是否符合要求。

 注册流程

管理员在注册页面依次输入姓名、邮箱、手机号和密码。

      系统验证输入信息的格式和完整性。若存在格式错误或必填项未填写,系统在相应输入框旁提示错误信息,引导管理员更正。

     当所有信息输入正确且格式无误后,管理员点击 “注册” 按钮。

      系统检查输入的手机号和邮箱是否已在系统中注册。若已注册,提示管理员该手机号或邮箱已被使用,需更换后重新注册。

       若手机号和邮箱未被注册,系统将管理员信息存储至数据库,并向管理员注册邮箱发送注册成功通知邮件,邮件内容包含账号信息及系统登录指引。

(2) 登录功能

     电话 + 密码登录

     输入信息

​​​​​​​手机号:必填项,格式同注册时要求,为 11 位中国大陆手机号码。

​​​​​​​密码:必填项,输入注册时设置的密码。

      登录流程

        管理员在登录页面选择 “电话 + 密码登录” 方式。

        依次输入手机号和密码。

          系统对输入的手机号和密码进行格式校验。若格式错误,提示管理员重新输入。

      系统在数据库中查询匹配的管理员账号信息。若手机号和密码匹配成功,且该账号为管理员身份,则登录成功,进入抽奖系统管理后台;若匹配失败,提示管理员 “手机号或密码错误,请重新输入”。

 电话 + 短信登录

  输入信息

​​​​​​​手机号:必填项,格式同注册要求。

登录流程

管理员在登录页面选择 “电话 + 短信登录” 方式。

输入手机号后,点击 “获取验证码” 按钮。

系统校验手机号格式是否正确。若格式错误,提示管理员更正。

若手机号格式正确,系统向该手机号发送一条包含 6 位数字验证码的短信。短信内容应明确告知该验证码用于抽奖系统登录,有效期为 5 分钟。

管理员在收到短信后,在登录页面输入收到的验证码。

系统验证验证码的有效性及准确性。若验证码正确且在有效期内,系统在数据库中查询该手机号对应的账号信息,若为管理员身份,则登录成功,进入抽奖系统管理后台;若验证码错误或已过期,提示管理员 “验证码错误或已过期,请重新获取”。同一手机号在 1 小时内获取验证码次数限制为 5 次,超过次数则提示 “获取验证码次数过多,请稍后再试”。

三:设计测试用例

四:功能测试

部分测试界面截图

正常登录

密码格式不正确能进行提示 

a'd 

五:自动化测试代码

项目目录结构

 ChromeBrowser代码

package browserManager;import io.github.bonigarcia.wdm.WebDriverManager;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;import java.time.Duration;public class ChromeBrowser {//创建浏览器驱动public static ChromeDriver getChromeDriver(){//设置谷歌浏览器驱动WebDriverManager.chromedriver().setup();//添加浏览器配置ChromeOptions chromeOptions = new ChromeOptions();chromeOptions.addArguments("--remote-allow-origins=*");//允许任何来源的远程连接ChromeDriver chromeDriver = new ChromeDriver(chromeOptions);//添加隐式等待chromeDriver.manage().timeouts().implicitlyWait(Duration.ofSeconds(5));return chromeDriver;}
}

CutScreen代码

package browserManager.screenManager;import io.github.bonigarcia.wdm.WebDriverManager;
import org.apache.commons.io.FileUtils;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.remote.RemoteWebDriver;import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.List;public class CutScreen {//屏幕截图public static void saveScreen(String methodName , RemoteWebDriver driver) throws IOException {//设置时间格式SimpleDateFormat sim1 = new SimpleDateFormat("yyy-MM-dd");SimpleDateFormat sim2 = new SimpleDateFormat("HH-mm-ss");String dirTime = sim1.format(System.currentTimeMillis());String fileTime = sim2.format(System.currentTimeMillis());String fileName = "./src/test/image/"+dirTime+"/"+methodName+"-"+fileTime+".png";//截屏System.out.println("截图路径:"+fileName);File srcFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);FileUtils.copyFile(srcFile,new File(fileName));}
}

RegistSuccess代码

package lotteryRegisty;import browserManager.ChromeBrowser;
import browserManager.screenManager.CutScreen;
import org.openqa.selenium.Alert;
import org.openqa.selenium.By;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.remote.RemoteWebDriver;import java.io.IOException;
import java.time.Duration;public class RegistSuccess {//打开浏览器public static void regist(RemoteWebDriver chromeDriver,String userName,String mail,String phoneNumber,String password) throws InterruptedException, IOException {try{//输入登录网址chromeDriver.get("http://47.93.243.4:9090/blogin.html");//找到注册按钮点击chromeDriver.findElement(By.cssSelector("body > div > div.login-container.col-sm-6.col-md-6.col-lg-5.col-xl-5 > div.register-link > a")).click();//在新页面找到姓名输入信息chromeDriver.findElement(By.cssSelector("#name")).sendKeys(userName);// ,邮箱,输入信息,chromeDriver.findElement(By.cssSelector("#mail")).sendKeys(mail);// 手机号,输入信息,chromeDriver.findElement(By.cssSelector("#phoneNumber")).sendKeys(phoneNumber);// 密码,输入信息,chromeDriver.findElement(By.cssSelector("#password")).sendKeys(password);//点击注册按钮chromeDriver.findElement(By.cssSelector("#registerForm > button")).click();//注册成功点击弹窗确认按钮Thread.sleep(2000);Alert alert = chromeDriver.switchTo().alert();String alertText = alert.getText();alert.accept();if(alertText.contains("注册失败")){throw new Exception("正常情况下注册失败");}}catch (Exception e){//截图CutScreen.saveScreen("RegistSuccess/regist", chromeDriver);//传入方法名与驱动e.printStackTrace();
}}}

RegistFail代码

package lotteryRegisty;import browserManager.screenManager.CutScreen;
import org.openqa.selenium.Alert;
import org.openqa.selenium.By;
import org.openqa.selenium.remote.RemoteWebDriver;import java.io.IOException;
import java.time.Duration;public class RegistFail {private static void commonInput(RemoteWebDriver driver,String userName,String mail,String phoneNumber,String password){//在新页面找到姓名输入信息driver.findElement(By.cssSelector("#name")).sendKeys(userName);// ,邮箱,输入信息,driver.findElement(By.cssSelector("#mail")).sendKeys(mail);// 手机号,输入信息,driver.findElement(By.cssSelector("#phoneNumber")).sendKeys(phoneNumber);// 密码,输入信息,driver.findElement(By.cssSelector("#password")).sendKeys(password);}//姓名异常public static void registNameError(RemoteWebDriver driver,String userName,String mail,String phoneNumber,String password) throws InterruptedException, IOException {try{//输入登录网址driver.get("http://47.93.243.4:9090/blogin.html");//点击注册跳转按钮driver.findElement(By.cssSelector("body > div > div.login-container.col-sm-6.col-md-6.col-lg-5.col-xl-5 > div.register-link > a")).click();//输入信息commonInput(driver,userName,mail,phoneNumber,password);//点击注册按钮driver.findElement(By.cssSelector("#registerForm > button")).click();Thread.sleep(2000);//注册成功点击弹窗确认按钮Alert alert = driver.switchTo().alert();String alertText = alert.getText();alert.accept();if(alertText.contains("注册成功")){throw new Exception("用户名格式错误时注册成功");}}catch (Exception e){//截图CutScreen.saveScreen("RegistFail/registNameError", driver);//传入方法名与驱动e.printStackTrace();}}//邮箱异常public static void registMailError(RemoteWebDriver driver,String userName,String mail,String phoneNumber,String password) throws InterruptedException, IOException {try{//输入登录网址driver.get("http://47.93.243.4:9090/blogin.html");//点击注册跳转按钮driver.findElement(By.cssSelector("body > div > div.login-container.col-sm-6.col-md-6.col-lg-5.col-xl-5 > div.register-link > a")).click();//输入信息commonInput(driver,userName,mail,phoneNumber,password);//点击注册按钮driver.findElement(By.cssSelector("#registerForm > button")).click();Thread.sleep(2000);//注册成功点击弹窗确认按钮Alert alert = driver.switchTo().alert();String alertText = alert.getText();alert.accept();if(alertText.contains("注册成功")){throw new Exception("邮箱格式错误时注册成功");}}catch (Exception e){//截图CutScreen.saveScreen("RegistFail/registMailError", driver);//传入方法名与驱动e.printStackTrace();}}//手机号异常public static void registPhoneNumberError(RemoteWebDriver driver,String userName,String mail,String phoneNumber,String password) throws InterruptedException, IOException {try{//输入登录网址driver.get("http://47.93.243.4:9090/blogin.html");//点击注册跳转按钮driver.findElement(By.cssSelector("body > div > div.login-container.col-sm-6.col-md-6.col-lg-5.col-xl-5 > div.register-link > a")).click();//输入信息commonInput(driver,userName,mail,phoneNumber,password);//点击注册按钮driver.findElement(By.cssSelector("#registerForm > button")).click();Thread.sleep(2000);//注册成功点击弹窗确认按钮Alert alert = driver.switchTo().alert();String alertText = alert.getText();alert.accept();if(alertText.contains("注册成功")){throw new Exception("电话格式错误时注册成功");}}catch (Exception e){//截图CutScreen.saveScreen("RegistFail/registPhoneNumberError", driver);//传入方法名与驱动e.printStackTrace();}}//密码异常public static void registPassWordError(RemoteWebDriver driver,String userName,String mail,String phoneNumber,String password) throws InterruptedException, IOException {try{//输入登录网址driver.get("http://47.93.243.4:9090/blogin.html");//点击注册跳转按钮driver.findElement(By.cssSelector("body > div > div.login-container.col-sm-6.col-md-6.col-lg-5.col-xl-5 > div.register-link > a")).click();//输入信息commonInput(driver,userName,mail,phoneNumber,password);//点击注册按钮driver.findElement(By.cssSelector("#registerForm > button")).click();Thread.sleep(2000);//注册成功点击弹窗确认按钮Alert alert = driver.switchTo().alert();String alertText = alert.getText();alert.accept();if(alertText.contains("注册成功")){throw new Exception("密码格式错误时注册成功");}}catch (Exception e){//截图CutScreen.saveScreen("RegistFail/registPassWordError", driver);//传入方法名与驱动e.printStackTrace();}}
}

LoginSuccess代码

package lotteryLogin;import browserManager.screenManager.CutScreen;
import org.openqa.selenium.By;
import org.openqa.selenium.remote.RemoteWebDriver;import java.io.IOException;public class LoginSuccess {public static void phonePasswordLogin(RemoteWebDriver driver, String phoneNumber,String password) throws IOException {
try{driver.get("http://127.0.0.1:9090/blogin.html");//打开浏览器//找到对应的输入框driver.findElement(By.cssSelector("#phoneNumber")).sendKeys(phoneNumber);driver.findElement(By.cssSelector("#password")).sendKeys(password);driver.findElement(By.cssSelector("#loginForm > button")).click();Thread.sleep(2000);//如果此时的页面url不包含admin.html,则登录失败String currentUrl = driver.getCurrentUrl();System.out.println(currentUrl);if(!currentUrl.contains("admin.html")){throw new Exception("登录失败,页面没跳转");}
}catch (Exception e){//截图CutScreen.saveScreen("LoginSuccess/phonePasswordLogin",driver);//传入方法名与驱动e.printStackTrace();
}}}

LoginFail代码

package lotteryLogin;import browserManager.screenManager.CutScreen;
import org.apache.commons.lang3.StringUtils;
import org.openqa.selenium.Alert;
import org.openqa.selenium.By;
import org.openqa.selenium.remote.RemoteWebDriver;import java.io.IOException;public class LoginFail {//登录失败场景public static void pPphoneNumberIsEmpty(RemoteWebDriver driver,String password) throws IOException {try{driver.get("http://127.0.0.1:9090/blogin.html");//打开浏览器//只输入密码driver.findElement(By.cssSelector("#password")).sendKeys(password);//点击登录按钮driver.findElement(By.cssSelector("#loginForm > button")).click();//看看有没有框边提示String text = driver.findElement(By.cssSelector("#phoneNumber-error")).getText();if(StringUtils.isEmpty(text)){throw new RuntimeException("提示错误");}}catch (Exception e){//截图CutScreen.saveScreen("LoginFail/phoneNumberIsEmpty", driver);//传入方法名与驱动e.printStackTrace();}}public static void pPpasswordIsEmpty(RemoteWebDriver driver,String phoneNumber) throws IOException {try{driver.get("http://127.0.0.1:9090/blogin.html");//打开浏览器//只输入手机号driver.findElement(By.cssSelector("#phoneNumber")).sendKeys(phoneNumber);//点击登录按钮driver.findElement(By.cssSelector("#loginForm > button")).click();//看看有没有框边提示String text = driver.findElement(By.cssSelector("#password-error")).getText();if(StringUtils.isEmpty(text)){throw new RuntimeException("页面提示错误");}}catch (Exception e){//截图CutScreen.saveScreen("LoginFail/passwordIsEmpty", driver);//传入方法名与驱动e.printStackTrace();}}public static  void pPpassWordIsError(RemoteWebDriver driver,String phoneNumber,String password) throws IOException {try{driver.get("http://127.0.0.1:9090/blogin.html");//打开浏览器//找到对应的输入框driver.findElement(By.cssSelector("#phoneNumber")).sendKeys(phoneNumber);driver.findElement(By.cssSelector("#password")).sendKeys(password);driver.findElement(By.cssSelector("#loginForm > button")).click();Thread.sleep(2000);//登录失败弹窗Alert alert = driver.switchTo().alert();String alertText = alert.getText();alert.accept();if(!alertText.contains("登录失败")){throw new Exception("密码错误时登录成功");}}catch (Exception e){//截图CutScreen.saveScreen("LoginSuccess/phonePasswordLogin",driver);//传入方法名与驱动e.printStackTrace();}}}

Main代码入口

import browserManager.ChromeBrowser;
import lotteryLogin.LoginFail;
import lotteryLogin.LoginSuccess;
import lotteryRegisty.RegistFail;
import lotteryRegisty.RegistSuccess;
import org.openqa.selenium.chrome.ChromeDriver;import java.io.IOException;public class Main {public static void main(String[] args) throws InterruptedException, IOException {ChromeDriver chromeDriver = ChromeBrowser.getChromeDriver();RegistSuccess.regist(chromeDriver,"张三","1324566595@qq.com","17564432774","123456");//姓名为空RegistFail.registNameError(chromeDriver," ","1324567895@qq.com","17564832774","123456");//姓名过长RegistFail.registNameError(chromeDriver,"张fiasdfhdidjosdvmsadovmsdvopsdmvsdpaovmsdpovmsdpvmavasmdvpasmdvsadvms","1324467895@qq.com","17564832774","123456");//邮箱为空RegistFail.registMailError(chromeDriver,"张三"," ","17564832774","123456");//邮箱不符合格式规范RegistFail.registMailError(chromeDriver,"张三","1324567895qq.com","17564832774","123456");//注册邮箱已存在RegistFail.registMailError(chromeDriver,"张三","1324567895@qq.com","17564832774","123456");//手机号为空RegistFail.registPhoneNumberError(chromeDriver,"张三","1324567895@qq.com"," ","123456");//手机号不符合格式规范RegistFail.registPhoneNumberError(chromeDriver,"张三","1324567895@qq.com","1756483277","123456");//手机号已存在RegistFail.registPhoneNumberError(chromeDriver,"张三","1324567895@qq.com","17564832774","123456");//密码为空RegistFail.registPassWordError(chromeDriver,"张三","1324567895@qq.com","17564832774","");//密码小于8位RegistFail.registPassWordError(chromeDriver,"张三","1324567895@qq.com","17564832774","123");//密码大于20位RegistFail.registPassWordError(chromeDriver,"张三","1324567895@qq.com","17564832774","12345678912dfsdfsdfdsfdsfdfdfsfsafdsfsfdfdsfdsfdfdfdfdffdsdfsd3456789");//登录成功LoginSuccess.phonePasswordLogin(chromeDriver,"15660880523","kangjia456");//登录失败密码为空LoginFail.pPpasswordIsEmpty(chromeDriver,"15660880523");//登录失败手机号为空LoginFail.pPphoneNumberIsEmpty(chromeDriver,"123456");//登录失败密码错误LoginFail.pPpassWordIsError(chromeDriver,"15660880523","123456");chromeDriver.quit();}
}

七:遗留风险

高并发场景下性能风险:在本次测试中,模拟的并发用户数有限,未能充分覆盖实际业务中可能出现的高并发场景。当大量用户同时登录时,可能导致接口响应时间延长甚至出现系统崩溃的情况。目前无法确切评估系统在高并发下的性能表现,存在性能瓶颈风险

移动端适配风险:考虑到用户可能通过多种移动设备访问抽奖系统,不同移动设备的屏幕尺寸、操作系统版本及浏览器类型存在较大差异。在本次测试中,仅对部分主流移动设备进行了兼容性测试,对于一些小众或老旧设备,可能存在登录页面显示异常或接口无法正常调用的情况,影响移动端用户的登录体验

八:测试结果评估

功能测试结果

正常登录功能:在输入正确的用户名和密码后,能够成功登录系统,且登录后的页面跳转及用户权限验证均正常,测试通过。

错误用户名或密码登录:当输入错误的用户名或密码时,系统能够准确提示错误信息,如 “用户名或密码错误”,测试通过。

验证码验证功能:在登录过程中,输入正确的验证码能够正常登录,输入错误的验证码则提示 “验证码错误”,,测试通过。

共执行功能测试用例 [17] 个,其中通过 [17] 个,未通过 [0] 个,功能测试通过率为 [100]%。

总结

本次抽奖系统登录接口测试在功能、性能和安全性方面均取得了一定的成果。功能测试验证了接口的基本功能能够正常运行,性能测试发现了系统在高并发场景下的性能瓶颈,安全性测试未检测到常见的安全漏洞。总体而言,系统已具备一定的可用性,但仍存在一些需要改进和优化的地方。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/899010.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【多媒体交互】Unity Kinect实现UI控件的点击

在Unity中,通过Kinect实现UI控件的点击功能,主要涉及手部追踪、坐标映射和手势检测三个核心环节。 实现步骤 初始化Kinect与关节追踪 使用KinectManager获取用户ID和手部关节点(如JointType.HandLeft)的坐标。 long userId _…

【蓝桥杯】每日练习 Day12 贡献法

前言 今天给大家带来两道贡献法的问题,先来讲一下什么是贡献法。 贡献法,与其说是一种算法,不如说是一种数学方法,是一种思维方式。 先来给大家举个例子,假设现在有个问题,需要你在一个只有小写字母的字…

go test相关命令

在 Go 项目中,go test 可以用于运行整个工程中的测试文件。以下是几种方式: 1. 运行当前模块或整个工程的测试 go test ./..../... 表示递归测试所有子目录中的测试文件(*_test.go)。适用于 Go Modules 或 GOPATH 结构的项目。 …

RocketMQ 详细知识点总结

RocketMQ 详细知识点总结 1. 核心概念 1.1 基础组件 Producer(生产者) 消息的发送者支持同步、异步和单向发送方式提供事务消息功能Consumer(消费者) 消息的接收者支持Push和Pull两种消费模式支持集群消费和广播消费NameServer(命名服务) 路由注册中心无状态节点,可集…

文字也能生成视频?【蓝耘实践】:通义万相2.1文生视频

文字也能生成视频?【蓝耘实践】:通义万相2.1文生视频 上次我们已经介绍了关于在蓝耘云平台实践通义万相的基本玩法,这次将介绍进阶玩法,也就是使用文字来生成视频。 首先我们还是先注册或者登录蓝耘云平台。 通过蓝耘平台进入流…

蓝桥杯 跑步计划

问题描述 小蓝计划在某天的日期中出现 1 时跑 5 千米,否则只跑 1 千米。注意:日期中出现 1 不仅指年月日,也指星期。 请问按照小蓝的计划,2023 年小蓝总共会跑步锻炼多少千米? 例如: 5 月 1 日1 月 13 …

K8S集群新增和删除Node节点(K8s Cluster Adds and Removes Node Nodes)

实战:在已有K8S集群如何新增和删除Node节点 在Kubernetes (K8S) 集群中,Node节点是集群中的工作节点,它们运行着容器的实际实例。管理K8S集群中的Node节点,包括新增和删除节点,是一个常见且重要的操作,可以…

ASP.NET Web的 Razor Pages应用,配置热重载,解决.NET Core MVC 页面在更改后不刷新

Razor Pages应用,修改页面查看修改效果,如果没有热重载,改一句话跑一次,这个活就没法干了。 1、VS2022中的NuGet中安装RuntimeCompilation Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation 需要配套你的.net sdk版本&#x…

死亡并不是走出生命 而是走出时间

目录 第一章 倒春寒 第二章 悖论与共生 第三章 坍缩与永恒 第四章 在时差里相爱 终章 你从未离开 第一章 倒春寒 2022年春天的扬州东关街,青衣在文昌阁古槐下调试着「时间胶囊」算法。这个能将人类记忆转化为数据流的程序,是他用三年时间对抗渐冻…

网络安全基础:五类安全服务、八种安全机制与OSI七层模型的全面解析

目录 引言 五类安全服务 2.1 认证服务 2.2 访问控制 2.3 数据保密性 2.4 数据完整性 2.5 不可否认性 八种安全机制 3.1 加密机制 3.2 数字签名 3.3 访问控制机制 3.4 数据完整性机制 3.5 认证交换机制 3.6 流量填充机制 3.7 路由控制机制 3.8 公证机制 OSI七层…

PhotoShop学习02

1.添加文本 这个工具栏是文字工具栏,快捷键是T。选择之后鼠标会变成一个竖杠外貌,我们可以借此在图片中写入文字。 选择后,上方的工具栏会变为专门调整文字工具 这个框点击旁边的小箭头可以选择我们我们电脑系统自带的字体,同时可…

黄土高原风蚀区解析多源数据融合与机器学习增强路径-RWEQ+集成技术在风蚀模数估算中的全流程增强策略—从数据融合到模型耦合的精细化操作指南

土壤风蚀模数估算长期面临‌模型参数不确定性高‌、‌空间异质性表达不足‌两大技术瓶颈。RWEQ集成技术框架‌,通过耦合地理时空分析、机器学习算法与物理过程模型,实现风蚀模数估算精度的系统性提升。以黄土高原典型风蚀区(38N-40N&#xff…

BFS解决FloodFill算法

1.图像渲染 733. 图像渲染 - 力扣(LeetCode) 1.题目解析 有一幅以 m x n 的二维整数数组表示的图画 image ,其中 image[i][j] 表示该图画的像素值大小。你也被给予三个整数 sr , sc 和 color 。你应该从像素 image[sr][sc] 开始对图像进行…

LeetCode(977):有序数组的平方

有序数组的平方 题目链接 题目&#xff1a;给你一个按非递减顺序排序的整数数组 nums&#xff0c;返回每个数字的平方组成的新数组&#xff0c;要求也按非递减顺序排序。 //暴力 #include<stdio.h> void sort(int *nums,int n){for(int i0;i<n;i)for(int ji1;j<…

OpenAI的“噩梦”,DeepSeek V3-0324效率革命展现中国AI雄心

3月24日晚&#xff0c;DeepSeek低调发布其V3模型的小版本更新——DeepSeek V3-0324&#xff0c;这一操作立即在社区引发热议。据悉&#xff0c;该版本已集成至DeepSeek官网、应用程序和小程序&#xff0c;用户只需关闭“Deep Thinking”功能即可体验。另该模型已在Hugging Face…

mysql创建库表插入数据演示

show databases; use zzj; create table stu (sid int primary key,name varchar(10) not null,sex varchar(2) );desc stu;insert into stu (sid, name, sex) values (1, zzj, 男);select * from stu; desc stu: select * from stu:

C语言 - 整数与浮点数运算的类型转换规则

C 语言整数与浮点数运算的类型转换规则 在 C 语言中&#xff0c;不同数据类型在运算时会进行 隐式类型转换。当 有符号整数&#xff08;int&#xff09;、无符号整数&#xff08;unsigned int&#xff09; 和 浮点型&#xff08;float、double&#xff09; 进行运算时&#xf…

用SVG绕过浏览器XSS审计

[Translated From]&#xff1a;http://insert-script.blogspot.com/2014/02/svg-fun-time-firefox-svg-vector.html SVG - <use> element SVG中的<use>元素用于重用其他元素&#xff0c;主要用于联接<defs>和alike&#xff0c;而我们却用它来引用外部SVG文件…

【构建CV图像识别系统】从传统方法到深度学习

目录 1. 图像的基本概念1.1 像素与色彩1.2 过滤与卷积 2. 图像分类与检测3. 图像特征的提取3.1 全局特征3.2 局部特征3.2.1 边缘&#xff08;Edge&#xff09;3.2.2 角点&#xff08;Corner&#xff09;3.2.3 SIFT 特征 4. 传统方法与深度学习在图像识别中的应用4.1 基于传统方…

Kubernetes高级应用之-重启策略

一、介绍&#xff0b;扩展应用&#xff08;涉及的高级资源在后续会写出来&#xff09; # Kubernetes Pod重启策略&#xff08;RestartPolicy&#xff09;全面解析 ## 一、重启策略的核心价值与重要性 在Kubernetes集群中&#xff0c;Pod重启策略&#xff08;RestartPolicy&a…