短链接系统测试报告

目录

项目背景

项目功能

自动化测试

总结


项目背景

随着互联网的发展,链接(URL)变得越来越长且复杂,这不仅影响用户体验,还可能由于字符限制导致在某些平台或应用中无法完整显示。为了解决这一问题,我们推出了“简洁链接”项目,旨在为用户提供一种快速、简便的方式来缩短和美化他们的URL。

项目目标:

  1. 提供简洁的URL服务: 为用户提供简短的、易于分享和记忆的URL,优化在线体验。
  2. 确保链接安全: 通过多种技术手段确保短链接的跳转安全,防止恶意跳转和钓鱼网站。
  3. 优化性能: 确保短链接的生成和跳转过程快速、稳定。
  4. 提供数据分析: 为用户提供短链接的点击量、来源等数据分析,帮助他们更好地了解用户行为和市场趋势。

项目功能:

  1. 短链接生成: 用户可以将长URL转换为简短的自定义链接。
  2. 链接跳转: 用户点击短链接后,将被安全、快速地重定向到原始链接。
  3. 链接管理: 用户可以管理他们的短链接,包括查看统计、编辑和删除链接。
  4. API接口: 提供API接口,方便第三方开发者集成短链接功能。

技术栈: 

SpringCloudAlibaba + MySQL + Redis + RocketMQ + ShardingJDBC

项目演示

项目测试用例

自动化测试

自动化工具类

package com.sfx.shortLink;import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;import java.time.Duration;public class DriverUtils {private static ChromeDriver driver;public static ChromeDriver createDriver() {if(driver == null) {driver = new ChromeDriver();driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));}return driver;}
}

登陆测试

package com.sfx.shortLink;import org.junit.jupiter.api.*;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvSource;
import org.openqa.selenium.By;
import org.openqa.selenium.chrome.ChromeDriver;import java.time.Duration;@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class ShortLinkLoginTest {private static ChromeDriver driver;/*** 在所有的测试用例执行之前,先要创建驱动*/@BeforeAllstatic void createAndGetDriver() {driver = DriverUtils.createDriver();driver.get("http://localhost:5173/");}public void userNameAndPasClear() {driver.findElement(By.xpath("/html/body/div/div[1]/div[1]/div[1]/form/div[1]/div[1]/div/div/div[2]/input")).clear();driver.findElement(By.xpath("/html/body/div/div[1]/div[1]/div[1]/form/div[1]/div[2]/div/div/div[2]/input")).clear();}@Order(2)@ParameterizedTest@CsvSource({"sfx3214,123456789","dyrrrwww,123456789"})public void testLoginSuccess(String username , String password) {// /html/body/div/div[1]/div[1]/div[1]/form/div[1]/div[1]/div/div/div[2]/input// /html/body/div/div[1]/div[1]/div[1]/form/div[1]/div[2]/div/div/div[2]/input// /html/body/div/div[1]/div[1]/div[1]/form/div[1]/div[2]/div/div/div[2]/input// 输入正确的用户名和密码userNameAndPasClear();driver.findElement(By.xpath("/html/body/div/div[1]/div[1]/div[1]/form/div[1]/div[1]/div/div/div[2]/input")).sendKeys(username);driver.findElement(By.xpath("/html/body/div/div[1]/div[1]/div[1]/form/div[1]/div[2]/div/div/div[2]/input")).sendKeys(password);driver.findElement(By.xpath("//*[@id=\"app\"]/div[1]/div[1]/div[1]/form/div[2]/div[2]/button/span")).click();String exceptedTest = driver.findElement(By.xpath("/html/body/div[1]/div/section/main/div/div/div[2]/div/div[1]/div/button[1]/span")).getText();Assertions.assertEquals(exceptedTest,"创建短链");// /html/body/div[1]/div/section/main/div/div/div[2]/div/div[1]/div/button[2]/spanexceptedTest = driver.findElement(By.xpath("/html/body/div[1]/div/section/main/div/div/div[2]/div/div[1]/div/button[2]/span")).getText();Assertions.assertEquals(exceptedTest,"批量创建");driver.navigate().back();}@Test@Order(1)public void testLoginFail(String username,String password) {// 账户名和密码都为空userNameAndPasClear();driver.findElement(By.xpath("//*[@id=\"app\"]/div[1]/div[1]/div[1]/form/div[2]/div[2]/button/span")).click();String text = driver.findElement(By.xpath("/html/body/div[1]/div[1]/div[1]/div[1]/h2")).getText();Assertions.assertEquals(text,"用户登录");// 账户为空,密码不为空userNameAndPasClear();driver.findElement(By.xpath("/html/body/div/div[1]/div[1]/div[1]/form/div[1]/div[2]/div/div/div[2]/input")).sendKeys("123456789");Assertions.assertEquals(text,"用户登录");// 账户不为空,密码为空userNameAndPasClear();driver.findElement(By.xpath("/html/body/div/div[1]/div[1]/div[1]/form/div[1]/div[1]/div/div/div[2]/input")).sendKeys("sfx3214");Assertions.assertEquals(text,"用户登录");// 账户都不为空,密码不为空userNameAndPasClear();driver.findElement(By.xpath("/html/body/div/div[1]/div[1]/div[1]/form/div[1]/div[1]/div/div/div[2]/input")).sendKeys("svrfdffed");driver.findElement(By.xpath("/html/body/div/div[1]/div[1]/div[1]/form/div[1]/div[2]/div/div/div[2]/input")).sendKeys("1234eadfvefdwf56789");Assertions.assertEquals(text,"用户登录");// 密码小于8位userNameAndPasClear();driver.findElement(By.xpath("/html/body/div/div[1]/div[1]/div[1]/form/div[1]/div[1]/div/div/div[2]/input")).sendKeys("svrfdffed");driver.findElement(By.xpath("/html/body/div/div[1]/div[1]/div[1]/form/div[1]/div[2]/div/div/div[2]/input")).sendKeys("1");Assertions.assertEquals(text,"用户登录");}@AfterAllstatic void after() {driver.quit();}
}

注册测试

package com.sfx.shortLink;import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.chrome.ChromeDriver;public class ShortLinkRegisterTest {private static ChromeDriver driver;/*** 在所有的测试用例执行之前,先要创建驱动*/@BeforeAllstatic void createDriver() {driver = DriverUtils.createDriver();driver.get("http://localhost:5173/");}public void clear() {// 输入用户名driver.findElement(By.xpath("/html/body/div[1]/div[1]/div[1]/div[2]/form/div[1]/div/div/div[2]/input")).clear();// 输入邮箱driver.findElement(By.xpath("/html/body/div[1]/div[1]/div[1]/div[2]/form/div[2]/div/div/div[2]/input")).clear();// 输入手机号driver.findElement(By.xpath("/html/body/div[1]/div[1]/div[1]/div[2]/form/div[3]/div/div/div[2]/input")).clear();// 输入姓名driver.findElement(By.xpath("/html/body/div[1]/div[1]/div[1]/div[2]/form/div[4]/div/div/div[2]/input")).clear();// 输入密码driver.findElement(By.xpath("/html/body/div[1]/div[1]/div[1]/div[2]/form/div[5]/div/div/div[2]/input")).clear();}@Testpublic void testRegisterSuccess() {clear();// 点击去注册driver.findElement(By.xpath("/html/body/div[1]/div[1]/div[1]/div[3]/button/span")).click();// 输入用户名driver.findElement(By.xpath("/html/body/div[1]/div[1]/div[1]/div[2]/form/div[1]/div/div/div[2]/input")).sendKeys("dyrrrwww");// 输入邮箱driver.findElement(By.xpath("/html/body/div[1]/div[1]/div[1]/div[2]/form/div[2]/div/div/div[2]/input")).sendKeys("89@qq.com");// 输入手机号driver.findElement(By.xpath("/html/body/div[1]/div[1]/div[1]/div[2]/form/div[3]/div/div/div[2]/input")).sendKeys("13965896936");// 输入姓名driver.findElement(By.xpath("/html/body/div[1]/div[1]/div[1]/div[2]/form/div[4]/div/div/div[2]/input")).sendKeys("dyrrrwww");// 输入密码driver.findElement(By.xpath("/html/body/div[1]/div[1]/div[1]/div[2]/form/div[5]/div/div/div[2]/input")).sendKeys("123456789");// 点击注册driver.findElement(By.xpath("/html/body/div[1]/div[1]/div[1]/div[2]/form/div[6]/div[2]/button/span")).click();String exceptedTest = driver.findElement(By.xpath("/html/body/div[1]/div/section/main/div/div/div[2]/div/div[1]/div/button[1]/span")).getText();Assertions.assertEquals(exceptedTest,"创建短链");// /html/body/div[1]/div/section/main/div/div/div[2]/div/div[1]/div/button[2]/spanexceptedTest = driver.findElement(By.xpath("/html/body/div[1]/div/section/main/div/div/div[2]/div/div[1]/div/button[2]/span")).getText();Assertions.assertEquals(exceptedTest,"批量创建");}@Testpublic void testRegisterFail() {//未输入任何一个// 点击去注册driver.findElement(By.xpath("/html/body/div[1]/div[1]/div[1]/div[3]/button/span")).click();clear();// 点击注册driver.findElement(By.xpath("/html/body/div[1]/div[1]/div[1]/div[2]/form/div[6]/div[2]/button/span")).click();String text = driver.findElement(By.xpath("/html/body/div[1]/div[1]/div[1]/div[2]/h2")).getText();Assertions.assertEquals(text,"用户注册");clear();//不符合手机号格式// 输入用户名driver.findElement(By.xpath("/html/body/div[1]/div[1]/div[1]/div[2]/form/div[1]/div/div/div[2]/input")).sendKeys("dyrrrwww");// 输入邮箱driver.findElement(By.xpath("/html/body/div[1]/div[1]/div[1]/div[2]/form/div[2]/div/div/div[2]/input")).sendKeys("89@qq.com");// 输入手机号driver.findElement(By.xpath("/html/body/div[1]/div[1]/div[1]/div[2]/form/div[3]/div/div/div[2]/input")).sendKeys("1568989");// 输入姓名driver.findElement(By.xpath("/html/body/div[1]/div[1]/div[1]/div[2]/form/div[4]/div/div/div[2]/input")).sendKeys("dyrrrwww");// 输入密码driver.findElement(By.xpath("/html/body/div[1]/div[1]/div[1]/div[2]/form/div[5]/div/div/div[2]/input")).sendKeys("123456789");// 点击注册driver.findElement(By.xpath("/html/body/div[1]/div[1]/div[1]/div[2]/form/div[6]/div[2]/button/span")).click();text = driver.findElement(By.xpath("/html/body/div[1]/div[1]/div[1]/div[2]/h2")).getText();Assertions.assertEquals(text,"用户注册");//不符合邮箱格式clear();// 输入用户名driver.findElement(By.xpath("/html/body/div[1]/div[1]/div[1]/div[2]/form/div[1]/div/div/div[2]/input")).sendKeys("dyrrrwww");// 输入邮箱driver.findElement(By.xpath("/html/body/div[1]/div[1]/div[1]/div[2]/form/div[2]/div/div/div[2]/input")).sendKeys("89.com");// 输入手机号driver.findElement(By.xpath("/html/body/div[1]/div[1]/div[1]/div[2]/form/div[3]/div/div/div[2]/input")).sendKeys("13846789696");// 输入姓名driver.findElement(By.xpath("/html/body/div[1]/div[1]/div[1]/div[2]/form/div[4]/div/div/div[2]/input")).sendKeys("dyrrrwww");// 输入密码driver.findElement(By.xpath("/html/body/div[1]/div[1]/div[1]/div[2]/form/div[5]/div/div/div[2]/input")).sendKeys("123456789");// 点击注册driver.findElement(By.xpath("/html/body/div[1]/div[1]/div[1]/div[2]/form/div[6]/div[2]/button/span")).click();text = driver.findElement(By.xpath("/html/body/div[1]/div[1]/div[1]/div[2]/h2")).getText();Assertions.assertEquals(text,"用户注册");//密码长度小于8位// 输入用户名driver.findElement(By.xpath("/html/body/div[1]/div[1]/div[1]/div[2]/form/div[1]/div/div/div[2]/input")).sendKeys("dyrrrwww");// 输入邮箱driver.findElement(By.xpath("/html/body/div[1]/div[1]/div[1]/div[2]/form/div[2]/div/div/div[2]/input")).sendKeys("89@qq.com");// 输入手机号driver.findElement(By.xpath("/html/body/div[1]/div[1]/div[1]/div[2]/form/div[3]/div/div/div[2]/input")).sendKeys("13965896936");// 输入姓名driver.findElement(By.xpath("/html/body/div[1]/div[1]/div[1]/div[2]/form/div[4]/div/div/div[2]/input")).sendKeys("dyrrrwww");// 输入密码driver.findElement(By.xpath("/html/body/div[1]/div[1]/div[1]/div[2]/form/div[5]/div/div/div[2]/input")).sendKeys("111");// 点击注册driver.findElement(By.xpath("/html/body/div[1]/div[1]/div[1]/div[2]/form/div[6]/div[2]/button/span")).click();text = driver.findElement(By.xpath("/html/body/div[1]/div[1]/div[1]/div[2]/h2")).getText();Assertions.assertEquals(text,"用户注册");}@AfterAllstatic void after() {driver.quit();}
}

短链接测试

package com.sfx.shortLink;import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;public class ShortLinkProjectTest {private static ChromeDriver driver;@BeforeAllstatic void createDriver() {driver = DriverUtils.createDriver();driver.get("http://localhost:5173/");loginSuccess();}public static void userNameAndPasClear() {driver.findElement(By.xpath("/html/body/div/div[1]/div[1]/div[1]/form/div[1]/div[1]/div/div/div[2]/input")).clear();driver.findElement(By.xpath("/html/body/div/div[1]/div[1]/div[1]/form/div[1]/div[2]/div/div/div[2]/input")).clear();}public static void loginSuccess() {// 登陆userNameAndPasClear();driver.findElement(By.xpath("/html/body/div/div[1]/div[1]/div[1]/form/div[1]/div[1]/div/div/div[2]/input")).sendKeys("sfx3214");driver.findElement(By.xpath("/html/body/div/div[1]/div[1]/div[1]/form/div[1]/div[2]/div/div/div[2]/input")).sendKeys("123456789");driver.findElement(By.xpath("//*[@id=\"app\"]/div[1]/div[1]/div[1]/form/div[2]/div[2]/button/span")).click();String exceptedTest = driver.findElement(By.xpath("/html/body/div[1]/div/section/main/div/div/div[2]/div/div[1]/div/button[1]/span")).getText();Assertions.assertEquals(exceptedTest, "创建短链");// /html/body/div[1]/div/section/main/div/div/div[2]/div/div[1]/div/button[2]/spanexceptedTest = driver.findElement(By.xpath("/html/body/div[1]/div/section/main/div/div/div[2]/div/div[1]/div/button[2]/span")).getText();Assertions.assertEquals(exceptedTest, "批量创建");}@Testpublic void createShortLink() {// 点击创建短链driver.findElement(By.xpath("/html/body/div[1]/div/section/main/div/div/div[2]/div/div[1]/div/button[1]/span")).click();// 输入正确的短链,创建成功driver.findElement(By.xpath("/html/body/div[1]/div/section/main/div/div/div[6]/div/div/div/div/div[2]/div[1]/div/form/div[1]/div/div/div/input")).sendKeys("https://xiaolincoding.com/");// 点击描述信息,自动输入描述信息driver.findElement(By.xpath("/html/body/div[1]/div/section/main/div/div/div[6]/div/div/div/div/div[2]/div[1]/div/form/div[2]/div/div/textarea")).click();// 点击确认创建短连接诶driver.findElement(By.xpath("/html/body/div[1]/div/section/main/div/div/div[6]/div/div/div/div/div[2]/div[1]/div/form/div[5]/div/div/button[1]/span")).click();}@Testpublic void creatFail() {// 没有输入短链,点击确认,创建失败// 点击创建短链driver.findElement(By.xpath("/html/body/div[1]/div/section/main/div/div/div[2]/div/div[1]/div/button[1]/span")).click();// 输入正确的短链,创建成功driver.findElement(By.xpath("/html/body/div[1]/div/section/main/div/div/div[6]/div/div/div/div/div[2]/div[1]/div/form/div[1]/div/div/div/input")).sendKeys("");// 点击描述信息,自动输入描述信息driver.findElement(By.xpath("/html/body/div[1]/div/section/main/div/div/div[6]/div/div/div/div/div[2]/div[1]/div/form/div[2]/div/div/textarea")).click();// 点击确认创建短连接诶driver.findElement(By.xpath("/html/body/div[1]/div/section/main/div/div/div[6]/div/div/div/div/div[2]/div[1]/div/form/div[5]/div/div/button[1]/span")).click();}@Testpublic void restoreShortLink() {// /html/body/div[1]/div/section/main/div/div/div[2]/div/div[2]/div[1]/div[3]/div/div[1]/div/table/tbody/tr[1]/td[3]/div/div/a/spandriver.findElement(By.xpath("/html/body/div[1]/div/section/main/div/div/div[2]/div/div[2]/div[1]/div[3]/div/div[1]/div/table/tbody/tr[1]/td[3]/div/div/a/span")).click();String exceptedTest = driver.getCurrentUrl();Assertions.assertNotEquals(exceptedTest, "https://xiaolincoding.com/");}@Testpublic void updateShortLink() {// /*[name()='svg']/*[name()='use']//  /html/body/div[1]/div/section/main/div/div/div[2]/div/div[2]/div[1]/div[3]/div/div[1]/div/table/tbody/tr[1]/td[8]/div/div/i[2]/svg// //*[@id="app"]/div/section/main/div/div/div[2]/div/div[2]/div[1]/div[3]/div/div[1]/div/table/tbody/tr[1]/td[8]/div/div/i[2]//*[name()='svg']/*[name()='path']// //*[@id="app"]/*[name()='svg']/*[name()='path']driver.findElement(By.xpath("//*[@id=\"app\"]/div/section/main/div/div/div[2]/div/div[2]/div[1]/div[3]/div/div[1]/div/table/tbody/tr[1]/td[8]/div/div/i[2]//*[name()='svg']")).click();WebElement element = driver.findElement(By.xpath("/html/body/div[1]/div/section/main/div/div/div[7]/div/div/div/div/form/div[2]/div/div/textarea"));element.clear();element.sendKeys("i love you");// 点击确认driver.findElement(By.xpath("/html/body/div[1]/div/section/main/div/div/div[7]/div/div/div/div/form/div[5]/div/div/button[1]/span")).click();}@Testpublic void recycle() {driver.findElement(By.xpath("//*[@id=\"app\"]/div/section/main/div/div/div[2]/div/div[2]/div[1]/div[3]/div/div[1]/div/table/tbody/tr[1]/td[8]/div/div/i[3]//*[name()='svg']")).click();driver.findElement(By.xpath("/html/body/div[2]/div[9]/div/div[2]/button[2]")).click();// 点击回收站driver.findElement(By.xpath("//*[@id=\"app\"]/div/section/main/div/div/div[1]/div[2]/div")).click();String text = driver.findElement(By.xpath("/html/body/div[1]/div/section/main/div/div/div[2]/div/div[2]/div[1]/div[3]/div/div[1]/div/table/tbody/tr[2]/td[3]/div/div/a/span")).getText();Assertions.assertEquals(text, "http://nurl.ink:8001/2CQufK");// 回收站移除driver.findElement(By.xpath("//*[@id=\"app\"]/div/section/main/div/div/div[2]/div/div[2]/div[1]/div[3]/div/div[1]/div/table/tbody/tr[2]/td[8]/div/div/i[2]//*[name()='svg']")).click();// 回到默认分组driver.findElement(By.xpath("/html/body/div[1]/div/section/main/div/div/div[1]/ul/li/div")).click();// 验证String text1 = driver.findElement(By.xpath("/html/body/div[1]/div/section/main/div/div/div[2]/div/div[2]/div[1]/div[3]/div/div[1]/div/table/tbody/tr[1]/td[3]/div/div/a/span")).getText();System.out.println(text1);}@Testpublic void shortLinkGroup() {driver.findElement(By.xpath("/html/body/div[1]/div/section/main/div/div/div[1]/div[1]/div[2]/img")).click();driver.findElement(By.xpath("/html/body/div[1]/div/section/main/div/div/div[4]/div/div/div/form/div/div/div/div/input")).sendKeys("新的分组");driver.findElement(By.xpath("/html/body/div[1]/div/section/main/div/div/div[4]/div/div/footer/span/button[2]")).click();WebElement element = driver.findElement(By.xpath("/html/body/div[1]/div/section/main/div/div/div[1]/ul/li[2]/div"));System.out.println(element.getText());Assertions.assertEquals(element.getText(), "新的分组\n" +"0");}@Testpublic void shortLinkStats() {// 点击短链接统计按钮能够正常查看统计内容driver.findElement(By.xpath("/html/body/div[1]/div/section/main/div/div/div[2]/div/div[2]/div[1]/div[3]/div/div[1]/div/table/tbody/tr[1]/td[8]/div/div/i[1]//*[name()='svg']")).click();WebElement element = driver.findElement(By.xpath("/html/body/div[1]/div/section/main/div/div/div[3]/div/div/div/div[2]/div[1]/div/div/div/div[2]"));Assertions.assertTrue(element.getText() != null);//跳转短链接后,统计的值与原先的有变化//能否正常的从曲线切换到直方图driver.findElement(By.xpath("/html/body/div[1]/div/section/main/div/div/div[3]/div/div/div/div[2]/div[2]/div[1]/div/div[1]/div[1]/div/button")).click();//能否查看访问记录driver.findElement(By.xpath("/html/body/div[1]/div/section/main/div/div/div[3]/div/div/div/div[2]/div[1]/div/div/div/div[3]")).click();}@AfterAllstatic void after() {driver.quit();}
}

测试套件

package com.sfx.shortLink;import org.junit.platform.suite.api.SelectClasses;
import org.junit.platform.suite.api.Suite;/*** 套件类*/
@Suite
@SelectClasses({ShortLinkLoginTest.class,ShortLinkProjectTest.class,ShortLinkRegisterTest.class})
public class TestSuite {}

总结

以上便是本次短链接系统的测试报告~ 

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

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

相关文章

Ubuntu22.04LTS编译Frida历史版本,环境配制及细节调整

经常使用Frida的朋友们可能会遇到Frida的各种问题需要自定义的,而这时候Frida的本地编译就显得很重要了。 最近一位朋友发现使用Frida14/15/16版的server只能连拉一定数量的设备,超过了frida-device-manager便不能连接设备。 实现没有办法,…

综合练习

目录 查询每个员工的编号、姓名、职位、基本工资、部门名称、部门位置 确定要使用的数据表 确定已知的关联字段 查询每个员工的编号、姓名、职位、基本工资、工资等级 确定要使用的数据表 确定已知的关联字段 查询每个员工的编号、姓名、职位、基本工资、部门名称、工资…

⭐北邮复试刷题589. N 叉树的前序遍历__DFS (力扣每日一题)

589. N 叉树的前序遍历 给定一个 n 叉树的根节点 root ,返回 其节点值的 前序遍历 。 n 叉树 在输入中按层序遍历进行序列化表示,每组子节点由空值 null 分隔(请参见示例)。 示例 1: 输入:root [1,null,…

数据安全之认识数据资产管理平台

文章目录 一、什么是数据资产二、什么是数据资产管理平台1、什么是数据资产管理平台2、为什么需要数据资产管理平台 三、数据资产管理平台的主要功能四、数据资产管理平台的工作原理五、数据资产管理平台的应用场景六、安全资产管理平台与数据资产管理平台的区别与关系1、安全资…

华为配置旁挂二层组网直接转发示例

配置旁挂二层组网直接转发示例 组网图形 图1 配置旁挂二层组网直接转发示例组网图 业务需求组网需求数据规划配置思路配置注意事项操作步骤配置文件扩展阅读 业务需求 企业用户通过WLAN接入网络,以满足移动办公的最基本需求。且在覆盖区域内移动发生漫游时&#xff…

图像处理之《隐写网络的隐写术》论文阅读

一、文章摘要 隐写术是一种在双方之间进行秘密通信的技术。随着深度神经网络(DNN)的快速发展,近年来越来越多的隐写网络被提出,并显示出良好的性能。与传统的手工隐写工具不同,隐写网络的规模相对较大。如何在公共信道上秘密传输隐写网络引起…

anomalib1.0学习纪实-续2:三个文件夹

为了读懂程序,有三个最重要的文件夹,如下图: 正好对应四个类,如下图: 三个类的来源如下图所示: 注意,MVTec是个大类,里面用到了这里的第四个类MVTecDataset,代码如下。…

洛谷: P1553 数字反转(升级版)

思路: 没想到什么好办法,一步一步来。整体就是反转,删除前导/后导0,反转,删除前导/后导0。 第一次AC没过去,原因是没考虑到分数的分母前导0的情况,比如1234567890/1234567890这个样例,结果输出…

蓝桥杯官网填空题(寻找整数)

问题描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。 有一个不超过 10^17 的正整数 n,知道这个数除以 2 至 49 后的余数如下表所示,求这个正整数最小是多少。 运行限制 最大运行时间:…

【软考问题】-- 10 - 知识精讲 - 项目风险管理

一、基本问题 1:按照可预测性,风险分哪三类? (1)已知风险:如项目目标不明确, 过分乐观的进度计划, 设计或施工变更和材料价格波动等。(2)可预测风险&#xff…

智慧城市与数字孪生:实现城市可持续发展的关键

一、引言 随着全球城市化进程的加速,城市面临着诸多挑战,如资源紧张、环境恶化、交通拥堵等。为了解决这些问题,智慧城市的概念应运而生。智慧城市利用先进的信息通信技术,提升城市治理水平,改善市民的生活质量。而数…

一、直方图相关学习

1、灰度直方图 1.1 基本概念和作用 表示图像中每个灰度级别的像素数量。用于分析图像的亮度分布情况。 1.2 代码示例 参数介绍 hist cv2.calcHist(images, channels, mask, histSize, ranges, hist, accumulate)-images:输入图像的列表。对于灰度图像&#xff0…

Prometheus安装

一、Prometheus的简介 Prometheus是一种开源的监控和警报工具,用于收集、存储和查询各种系统和服务的指标数据。它具有灵活的查询语言和强大的可视化功能,可用于实时监控应用程序性能和状态。 二、Prometheus下载 1、官网下载地址 下载Prometheus 2、P…

【regex】正则表达式

集合 [0-9.] [0-9.\-] 例子 正则表达式,按照规则写,写的时候应该不算困难,但是可读性差 不同语言中regex会有微小的差异 vim 需要转义, perl/python中不需要转义 锚位 \b am\b i am 命名 / 命名捕获组 ( 捕获组(…

167基于matlab的根据《液体动静压轴承》编写的有回油槽径向静压轴承的程序

基于matlab的根据《液体动静压轴承》编写的有回油槽径向静压轴承的程序,可显示承载能力、压强、刚度及温升等图谱.程序已调通,可直接运行。 167 显示承载能力、压强、刚度及温升 (xiaohongshu.com)https://www.xiaohongshu.com/explore/65d212b200000000…

numpy模块:从基础到高级的完整指南【第88篇—NumPy数组操作】

numpy模块:从基础到高级的完整指南 在Python的科学计算领域,NumPy模块是一个不可或缺的利器。它提供了丰富的数学函数和矩阵操作,使得数据处理、分析和科学计算变得更加高效。本文将带你初步了解NumPy模块,并通过实例代码深入解析…

2.17日学习打卡----初学Dubbo(二)

2.17日学习打卡 目录: 2.17日学习打卡一. Dubbo入门案例需求介绍配置开发环境dubbo-producerdubbo-consumer运行测试IDEA开启DashBoard面板 二. Dubbo高级特性序列化协议安全地址缓存超时时间与配置覆盖关系重试机制多版本负载均衡集群容错服务降级服务限流原理服务限流实现结果…

[深度学习] 深入理解什么是卷积神经网络

​ 🌈 博客个人主页:Chris在Coding 🎥 本文所属专栏:[深度学习] ❤️ 热门学习专栏:[Linux学习] ⏰ 我们仍在旅途 目录 1.卷积的定义 2.卷积的"卷"在哪里 3.什么又是卷积神…

Kerberos认证详解

对于Kerberos认证,可以大概如下图: 但是如果是详细的话,Kerberos认证过程可以分为三个部分,六个过程 1.AS-REQ&&AS-REP 1.AS-REQ 当域内某个用户输入了账号或者密码的时候,客户端就会发送一个authenticator…

企业大宽带服务器用哪里最合适

如今,数字经济的发展速度不断加快,进入数字化跑道的企业,每天都在大量输出、共享、存储数字内容,想要更高效、安全地让用户看到内容,企业的服务器需要满足大带宽、低延时、高并发等要求。 中小企业受限于资金、资源等…