网页聊天——测试报告——Selenium自动化测试
一,项目概括
1.1 项目名称
网页聊天
1.2 测试时间
2024.9
1.3 编写目的
对编写的网页聊天项目进行软件测试活动,揭示潜在问题,总结测试经验
二,测试计划
2.1 测试环境与配置
服务器:云服务器 ubuntu_22
PC机:机械师T58-V
平台:Windows 10
浏览器:Chrome、FireFox、Edge
自动化测试工具:Selenium
2.2 提取测试点

2.3 设计测试用例
所有的测试用例绑定在这个帖子上了,需要自取
Selenium自动化执行测试用例
文件分类-- 功能进行分块

main函数
public static void main(String[] args) throws IOException, InterruptedException {noLoginTest noLogin=new noLoginTest();noLogin.NoLoginOpen();registerTest register_test=new registerTest();register_test.registerTest();LoginTest login_test=new LoginTest();login_test.loginTest();friendListTest friendList_test=new friendListTest();friendList_test.ListTest();addFriendTest addFriendTest =new addFriendTest();addFriendTest.addFriendTest();chatTest chat=new chatTest();chat.chatTest();driver.quit();}
Utils--所有公共模块
public class Utils {public static WebDriver driver;public static WebDriver createDriver(){//创建驱动if(driver!=null){return driver;}WebDriverManager.edgedriver().setup();//自动下载配置驱动程序EdgeOptions edgeOptions=new EdgeOptions();edgeOptions.addArguments("--allow-remote-origins=*");driver=new EdgeDriver(edgeOptions);//用option创建驱动driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(5));//隐式等待return driver;}public static void getScreenShot(String str) throws IOException {//截图SimpleDateFormat simple1=new SimpleDateFormat("yyyy-MM-dd");SimpleDateFormat simple2=new SimpleDateFormat("hhmmssSS");String format = simple1.format(System.currentTimeMillis());String format2 = simple2.format(System.currentTimeMillis());String fileName="./src/test/image/"+format+"/"+str+"-"+format2+".png";File screenshotAs = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);FileUtils.copyFile(screenshotAs,new File(fileName));//将截图放到新建的文件里}public static String getTime(){//用来做测试数据SimpleDateFormat simple1=new SimpleDateFormat("hh:mm:ss");return simple1.format(System.currentTimeMillis())+"test";}
}
registerTest--注册测试

public void registerFailAll() throws IOException {//注册失败String alertTest = register("zhangsan", "123");assertEquals("用户名被占用!",alertTest);//断言判断alertTest=register("","123");assertEquals("用户名和密码不能为空! ",alertTest);alertTest=register("zhangsan","");assertEquals("用户名和密码不能为空! ",alertTest);alertTest=register("","");assertEquals("用户名和密码不能为空! ",alertTest);}public void registerSucAll() throws IOException {//注册成功String alertTest = register(testUserName, "123");assertEquals("注册成功",alertTest);driver.get("http://localhost:8080/login.html");driver.findElement(By.cssSelector("#submit2")).click();alertTest=register(testUserName+1,"123");assertEquals("注册成功",alertTest);}public String register(String username,String password) throws IOException {//注册driver.findElement(By.cssSelector("#userName")).clear();driver.findElement(By.cssSelector("#password")).clear();driver.findElement(By.cssSelector("#userName")).sendKeys(username);driver.findElement(By.cssSelector("#password")).sendKeys(password);getScreenShot(getClass().getName());driver.findElement(By.cssSelector("#submit")).click();wait.until(ExpectedConditions.alertIsPresent());Alert alert = driver.switchTo().alert();String text = driver.switchTo().alert().getText();alert.accept();return text;}
loginTest--登录测试

public void LoginFailAll() throws IOException, InterruptedException {//登录失败String alertTest = loginUtil("zhang", "123");assertEquals("用户名或密码错误! ",alertTest);alertTest=loginUtil("zhangsan","1");assertEquals("用户名或密码错误! ",alertTest);alertTest=loginUtil("zhangsan","");assertEquals("当前输入用户名或密码为空! ",alertTest);alertTest=loginUtil("","123");assertEquals("当前输入用户名或密码为空! ",alertTest);alertTest=loginUtil("","");assertEquals("当前输入用户名或密码为空! ",alertTest);}public void LoginSucAll() throws IOException, InterruptedException {//成功loginSucUtil("zhangsan", "123");loginSucUtil("wangwu","123");loginSucUtil("lisi","123");}public void loginSucUtil(String username,String password) throws IOException, InterruptedException {driver.findElement(By.cssSelector("#userName")).clear();driver.findElement(By.cssSelector("#password")).clear();driver.findElement(By.cssSelector("#userName")).sendKeys("zhangsan");driver.findElement(By.cssSelector("#password")).sendKeys("123");driver.findElement(By.cssSelector("#submit")).click();wait.until(ExpectedConditions.urlToBe("http://localhost:8080/client.html"));getScreenShot(getClass().getName());//截图最好放在最后一步,不然容易卡driver.navigate().back();}public String loginUtil(String username,String password) throws IOException, InterruptedException {driver.findElement(By.cssSelector("#userName")).clear();driver.findElement(By.cssSelector("#password")).clear();driver.findElement(By.cssSelector("#userName")).sendKeys(username);driver.findElement(By.cssSelector("#password")).sendKeys(password);driver.findElement(By.cssSelector("#submit")).click();wait.until(ExpectedConditions.alertIsPresent());String text = driver.switchTo().alert().getText();driver.switchTo().alert().accept();getScreenShot(getClass().getName());return text;}
登录和注册的自动化效果展示

friendListTest--主页和好友列表测试
主要检查主页点击用户是否会跳转到聊天页
好友列表点击是否会跳到聊天页
@Slf4j
public class friendListTest extends Utils {public static WebDriver driver=Utils.createDriver();WebDriverWait wait=new WebDriverWait(driver,Duration.ofSeconds(5));public void ListTest() throws IOException {openWeb();ChatListUI();FriendListUI();}public void openWeb() throws IOException {driver.get("http://localhost:8080/login.html");driver.findElement(By.cssSelector("#userName")).clear();driver.findElement(By.cssSelector("#password")).clear();driver.findElement(By.cssSelector("#userName")).sendKeys("lisi");driver.findElement(By.cssSelector("#password")).sendKeys("123");driver.findElement(By.cssSelector("#submit")).click();wait.until(ExpectedConditions.urlToBe("http://localhost:8080/client.html"));driver.findElement(By.cssSelector("body > div.client-container > div > div.left > div.user"));driver.findElement(By.cssSelector("body > div.client-container > div > div.left > div.tab > div.tab-session"));driver.findElement(By.cssSelector("body > div.client-container > div > div.left > div.tab > div.tab-friend"));driver.findElement(By.cssSelector("body > div.client-container > div > div.right > div.message-show"));driver.findElement(By.cssSelector("body > div.client-container > div > div.right > textarea"));driver.findElement(By.cssSelector("body > div.client-container > div > div.right > div.ctrl > button"));getScreenShot(getClass().getName());log.info("打开主页");}public void ChatListUI() throws IOException {wait.until(ExpectedConditions.urlToBe("http://localhost:8080/client.html"));driver.findElement(By.cssSelector("#session-list"));//String friendName = driver.findElement(By.cssSelector("#session-list > li:nth-child(1) > h3")).getText();driver.findElement(By.cssSelector("#session-list > li:nth-child(1) > h3")).click();String friendChat = driver.findElement(By.cssSelector("body > div.client-container > div > div.right > div.title")).getText();assertEquals(friendName,friendChat);//断言一下getScreenShot(getClass().getName());friendName = driver.findElement(By.cssSelector("#session-list > li:nth-child(2) > h3")).getText();driver.findElement(By.cssSelector("#session-list > li:nth-child(2) > h3")).click();friendChat = driver.findElement(By.cssSelector("body > div.client-container > div > div.right > div.title")).getText();assertEquals(friendName,friendChat);//断言一下getScreenShot(getClass().getName());friendName = driver.findElement(By.cssSelector("#session-list > li:nth-child(3) > h3")).getText();driver.findElement(By.cssSelector("#session-list > li:nth-child(3) > h3")).click();friendChat = driver.findElement(By.cssSelector("body > div.client-container > div > div.right > div.title")).getText();assertEquals(friendName,friendChat);//断言一下getScreenShot(getClass().getName());log.info("主页用户点击切换到聊天测试");}public void FriendListUI() throws IOException {//查看是否点击可以跳转driver.findElement(By.cssSelector("body > div.client-container > div > div.left > div.tab > div.tab-friend")).click();driver.findElement(By.cssSelector("#friend-list"));String friendName = driver.findElement(By.cssSelector("#friend-list > li:nth-child(1)")).getText();driver.findElement(By.cssSelector("#friend-list > li:nth-child(1)")).click();String friendChat = driver.findElement(By.cssSelector("body > div.client-container > div > div.right > div.title")).getText();assertEquals(friendName,friendChat);//断言一下getScreenShot(getClass().getName());log.info("好友列表点击跳转测试");}
addFriendTest--搜索好友,发送申请,新好友聊天测试
主页加载完整
搜索好友功能测试
发送申请功能测试
收到申请测试
同意申请,拒绝申请测试
新好友聊天测试
public class addFriendTest extends Utils {public static WebDriver driver=Utils.createDriver();public String addRequest=getTime()+"addFriend";WebDriverWait wait=new WebDriverWait(driver, Duration.ofSeconds(5));public void addFriendTest() throws IOException {openWeb();addFriendSend(registerTest.testUserName);//搜索刚注册的账号addFriendAccept(registerTest.testUserName);addFriendChat();addFriendSend("test");//模糊搜索addFriendSend("0000");addFriendSend("");addFriendSend(" ");addFriendSend("lisi");//搜本人}public void openWeb() throws IOException {driver.get("http://localhost:8080/login.html");driver.findElement(By.cssSelector("#userName")).clear();driver.findElement(By.cssSelector("#password")).clear();driver.findElement(By.cssSelector("#userName")).sendKeys("lisi");driver.findElement(By.cssSelector("#password")).sendKeys("123");driver.findElement(By.cssSelector("#submit")).click();wait.until(ExpectedConditions.urlToBe("http://localhost:8080/client.html"));driver.findElement(By.cssSelector("body > div.client-container > div > div.left > div.user"));driver.findElement(By.cssSelector("body > div.client-container > div > div.left > div.tab > div.tab-session"));driver.findElement(By.cssSelector("body > div.client-container > div > div.left > div.tab > div.tab-friend"));driver.findElement(By.cssSelector("body > div.client-container > div > div.right > div.message-show"));driver.findElement(By.cssSelector("body > div.client-container > div > div.right > textarea"));driver.findElement(By.cssSelector("body > div.client-container > div > div.right > div.ctrl > button"));getScreenShot(getClass().getName());System.out.println("加好友UI");}public void addFriendSend(String user) throws IOException {//搜索刚刚注册的账号driver.findElement(By.cssSelector("#userNmae")).clear();driver.findElement(By.cssSelector("#userNmae")).sendKeys(user);driver.findElement(By.cssSelector("#sumbit")).click();
// driver.findElement(By.cssSelector("body > div.client-container > div > div.right > div.message-show > div"));try{//查看搜到的用户是否正确
// System.out.println(registerTest.testUserName+"查看搜到的用户是否正确");
// assertEquals(register_test.testStr,driver.findElement(By.xpath("/html/body/div[2]/div/div[2]/div[2]/div/span")).getText());driver.findElement(By.cssSelector("body > div.client-container > div > div.right > div.message-show > div>input")).sendKeys(addRequest);driver.findElement(By.cssSelector("body > div.client-container > div > div.right > div.message-show > div:nth-child(1) > button")).click();assertEquals(driver.switchTo().alert().getText(),"添加成功");driver.switchTo().alert().accept();getScreenShot(getClass().getName());System.out.println("添加好友请求发送成功");}catch (Exception e){System.out.println("没找到好友:"+user);}}public void addFriendAccept(String user) throws IOException {//切号//登录聊天对象账号查看短信发送情况driver.get("http://localhost:8080/login.html");driver.findElement(By.cssSelector("#userName")).clear();driver.findElement(By.cssSelector("#password")).clear();
// System.out.println(receiver+" login");driver.findElement(By.cssSelector("#userName")).sendKeys(user);driver.findElement(By.cssSelector("#password")).sendKeys("123");driver.findElement(By.cssSelector("#submit")).click();System.out.println("切号查看请求是否正确");//提示好友申请发来了driver.findElement(By.cssSelector("#session-list > li"));//发送申请的对象是对的assertEquals("lisi",driver.findElement(By.cssSelector("#session-list > li > h3")).getText());//发送申请的话是对的,因为展示的是部分内容所以不能断言
// assertEquals(addRequest,driver.findElement(By.cssSelector("#session-list > li > p")).getText());//接受申请driver.findElement(By.cssSelector("#session-list > li > button:nth-child(3)")).click();//添加成功提示正确assertEquals("添加成功",driver.switchTo().alert().getText());driver.switchTo().alert().accept();System.out.println("添加好友成功");getScreenShot(getClass().getName());}public void addFriendChat() throws IOException {System.out.println("发短信测试");//测试新好友发短信//找到列表里的那个driver.findElement(By.cssSelector("body > div.client-container > div > div.left > div.tab > div.tab-friend")).click();//可以Xpath选择好友列表页的指定对象driver.findElement(By.xpath("//ul[@id='friend-list']/li[h4[text()='"+"lisi"+"']]")).click();//点击发短信String testChat = getTime();//点击聊天输入框driver.findElement(By.cssSelector("body > div.client-container > div > div.right > textarea")).click();//发送方String sender = driver.findElement(By.cssSelector("body > div.client-container > div > div.left > div.user")).getText();//接收方String receiver = driver.findElement(By.cssSelector("body > div.client-container > div > div.right > div.title")).getText();driver.findElement(By.cssSelector("body > div.client-container > div > div.right > textarea")).sendKeys(testChat);driver.findElement(By.cssSelector("body > div.client-container > div > div.right > div.ctrl > button")).click();driver.navigate().refresh();driver.findElement(By.cssSelector("#session-list > li:first-child")).click();String checkTest = driver.findElement(By.cssSelector("div.message-show div.message:last-child div.box p")).getText();assertEquals(testChat,checkTest);getScreenShot(getClass().getName());}
chat---给好友发短信和接收短信的功能测试
测发送不同的内容
测试能否接收到

public class chatTest extends Utils {WebDriver driver=Utils.createDriver();WebDriverWait wait=new WebDriverWait(driver, Duration.ofSeconds(5));public void chatTest() throws IOException {driver.get("http://localhost:8080/login.html");driver.findElement(By.cssSelector("#userName")).clear();driver.findElement(By.cssSelector("#password")).clear();driver.findElement(By.cssSelector("#userName")).sendKeys(testUserName);//发送方driver.findElement(By.cssSelector("#password")).sendKeys("123");driver.findElement(By.cssSelector("#submit")).click();wait.until(ExpectedConditions.urlToBe("http://localhost:8080/client.html"));//发短信功能,选择最上面的聊天对象,编辑,发送,刷新(必须,加载新短信)重新选择最上面的聊天对象,// 选择最下面最新的短信,注意父类包含多个子类情况下,可以问ai
// String testChat = getTime();
// System.out.println(testChat);
// System.out.println(testChat);//点击好友列表第一位driver.findElement(By.cssSelector("body > div.client-container > div > div.left > div.tab > div.tab-friend")).click();driver.findElement(By.cssSelector("#friend-list > li:nth-child(1)")).click();chat("哈哈哈哈");chat("hhhhha");chat("111112");chat("!@#$%^&*蛤ha");String longStr ="在思想上,我具有较高的政治觉悟,积极向党组织靠拢,始终保持着进取之心,以坚定的信念追求进步。 在学习上,我态度严谨认真,勤奋刻苦。凭借不懈的努力,连续两年荣获国家励志奖学金,并且在英语赛事中多次获奖,扎实的专业功底让我能够自信地应对各种学业挑战。";String receiver=chat(longStr);driver.navigate().back();//退出登录checkMessage(longStr,receiver);//检查短信是否收到}public String chat(String message) throws IOException {//发送短信并返回接受方driver.findElement(By.cssSelector("#session-list > li")).click();//找到好友列表第一个,点击聊天并记录String receiver = driver.findElement(By.cssSelector("body > div.client-container > div > div.right > div.title")).getText();//编辑短信发送,并返回接受短信的用户driver.findElement(By.cssSelector("body > div.client-container > div > div.right > textarea")).sendKeys(message);driver.findElement(By.cssSelector("body > div.client-container > div > div.right > div.ctrl > button")).click();log.info("发送短信并刷新");return receiver;}public void checkMessage(String message,String receiver) throws IOException {//登录接收方账号,检查短信是否正确driver.findElement(By.cssSelector("#userName")).clear();driver.findElement(By.cssSelector("#password")).clear();driver.findElement(By.cssSelector("#userName")).sendKeys(receiver);driver.findElement(By.cssSelector("#password")).sendKeys("123");driver.findElement(By.cssSelector("#submit")).click();//点击好友列表driver.findElement(By.cssSelector("body > div.client-container > div > div.left > div.tab > div.tab-friend")).click();//可以Xpath选择好友列表页的指定对象driver.findElement(By.xpath("//ul[@id='friend-list']/li[h4[text()='"+testUserName+"']]")).click();//报错无效选择器,前端找到对应的元素后再次查找发现是元素不可交互导致的log.info("切换账号查看短信是否收到");String test2 = driver.findElement(By.cssSelector("div.message-show div.message:last-child div.box p")).getText();//查看短信assertEquals(message,test2);//断言一下getScreenShot(getClass().getName());log.info("短信成功收到");}
noLoginTest--没有登录测试
查看没有登录直接访问是否会强制返回
public class noLoginTest {public void NoLoginOpen() throws IOException {WebDriver driver= Utils.createDriver();driver.get("http://localhost:8080/client.html");WebDriverWait wait=new WebDriverWait(driver, Duration.ofSeconds(5));wait.until(ExpectedConditions.alertIsPresent());assertEquals("当前用户未登录!",driver.switchTo().alert().getText());driver.switchTo().alert().accept();getScreenShot(getClass().getName());}
}
整个自动化测试展示
网页自动化测试
相关文章:
网页聊天——测试报告——Selenium自动化测试
一,项目概括 1.1 项目名称 网页聊天 1.2 测试时间 2024.9 1.3 编写目的 对编写的网页聊天项目进行软件测试活动,揭示潜在问题,总结测试经验 二,测试计划 2.1 测试环境与配置 服务器:云服务器 ubuntu_22 PC机&am…...
mysql5.7常用操作命令手册
文章目录 前言一、关闭mysql服务1.mha节点,关闭MHA高可用2.主节点,摘掉vip,停掉mysql服务3.从节点,停掉mysql服务 二、启动mysql1.启动数据库顺序2.主节点,登陆数据库检查主库状态,将主库改成读写状态3.从节点启动配置数据库&…...
前端组件库Element UI 的使用
一、准备工作 1.确保安装了开发软件 VS Code(此处可查阅安装 VS Code教程),确保相关插件安装成功 2.安装Node.js 和创建Vue项目(此处可查阅安装创建教程) 3.成功在VS Code运行一个Vue项目(此处可查阅运行…...
【C++ 基础数学 】2121. 2615相同元素的间隔之和|1760
本文涉及的基础知识点 基础数学 LeetCode2121. 相同元素的间隔之和 难度分:1760 令2165,和此题几乎相等。 给你一个下标从 0 开始、由 n 个整数组成的数组 arr 。 arr 中两个元素的 间隔 定义为它们下标之间的 绝对差 。更正式地,arr[i] 和…...
从手动测试菜鸟,到自动化测试老司机,实现自动化落地
虽然许多伙伴是一个测试老人了,但是基本上所有的测试经验都停留在手工测试方面,对于自动化测试方面的实战经验少之又少。 其实,究其原因:一方面是,自动化方面不求上进,觉得会手工测试就可以了,自…...
docker zookeeper集群启动报错:Cannot open channel to * at election address /ip:3888
下面几点需要注意的: 1、确认在每个$zookeeper_home/data/myid中有对应数字 2、是否关闭防火墙:systemctl stop firewalld,systemctl disable firewalld 3、zoo.cfg中的server需要写成以下形式的: 假如有两台机器,1…...
【Linux探索学习】第一弹——Linux的基本指令(上)——开启Linux学习第一篇
前言: 在进入Linux学习之前,我们首先要先做好以下两点:1、已经基本掌握C语言或C,2、已经配置好了Linux的环境,做完以上两点后我们就开始Linux的学习,今天我们首先要学习的就是Linux中最基础的操作ÿ…...
3.Vue2结合element-ui实现国际化多语言i18n
1.安装vue-i18n npm install vue-i18n8.2.1说明:Vue2使用vue-i18n是8.x,Vue3使用的版本是9.x以上,使用错了会导致报错 2.创建多语言文件 在src/下创建src/lang/langs/zh.js和src/lang/langs/en.js两个文件,里面内容如下&#x…...
整数二分算法和浮点数二分算法
整数二分算法和浮点数二分算法 二分 现实中运用到二分的就是猜数字的游戏 假如有A同学说B同学所说数的大小,B同学要在1~100中间猜中数字65,当B同学每次说的数都是范围的一半时这就算是一个二分查找的过程 二分查找的前提是这个数字序列要有单调性 基…...
智能回收箱的功能和使用步骤介绍
智能回收箱是现代城市环保与资源循环利用领域的一项创新技术,它通过集成各种智能化功能,提高了垃圾回收的效率和准确性,促进了垃圾分类与减量。随着全球对环境保护意识的增强和智慧城市概念的推广,智能回收箱的发展前景非常广阔&a…...
Remix在SPA模式下,出现ErrorBoundary错误页加载Ant Design组件报错,不能加载样式的问题
Remix是一个既能做服务端渲染,又能做单页应用的框架,如果想做单页应用,又想学服务端渲染,使用Remix可以降低学习成本。最近,在学习Remix的过程中,遇到了在SPA模式下与Ant Design整合的问题。 我用Remix官网…...
ADB ROOT开启流程
开启adb root 选项后,执行如下代码: packages/apps/Settings/src/com/android/settings/development/AdbRootPreferenceController.java mADBRootService new ADBRootService(); Override public boolean onPreferenceChange(Preference preference…...
传输层协议 —— TCP协议(上篇)
目录 1.认识TCP 2.TCP协议段格式 3.可靠性保证的机制 确认应答机制 超时重传机制 连接管理机制 三次握手 四次挥手 1.认识TCP 在网络通信模型中,传输层有两个经典的协议,分别是UDP协议和TCP协议。其中TCP协议全称为传输控制协议(Tra…...
YOLOv8改进,YOLOv8的Neck替换成AFPN(CVPR 2023)
摘要 多尺度特征在物体检测任务中对编码具有尺度变化的物体非常重要。多尺度特征提取的常见策略是采用经典的自上而下和自下而上的特征金字塔网络。然而,这些方法存在特征信息丢失或退化的问题,影响了非相邻层次的融合效果。一种渐进式特征金字塔网络(AFPN),以支持非相邻…...
学习大数据DAY59 全量抽取和增量抽取实战
目录 需求流程: 需求分析与规范 作业 作业2 需求流程: 全量抽取 增量抽取 - DataX Kettle Sqoop ... 场景: 业务部门同事或者甲方的工作人员给我们的部门经理和你提出了新的需 求 流程: 联系 > 开会讨论 > 确认需求 > 落地 需求文档( 具体…...
YOLOv8——测量高速公路上汽车的速度
引言 在人工神经网络和计算机视觉领域,目标识别和跟踪是非常重要的技术,它们可以应用于无数的项目中,其中许多可能不是很明显,比如使用这些算法来测量距离或对象的速度。 测量汽车速度基本步骤如下: 视频采集&#x…...
在线相亲交友系统:寻找另一半的新方式
在这个快节奏的时代里,越来越多的单身男女发现,传统意义上的相亲方式已经难以满足他们的需求。与此同时,互联网技术的迅猛发展为人们提供了新的社交渠道——在线相亲交友系统作者h17711347205。本文将探讨在线相亲交友系统如何成为一种寻找另…...
MySQL 中存储过程参数的设置与使用
《MySQL 中存储过程参数的设置与使用》 在 MySQL 数据库中,存储过程是一组预先编译好的 SQL 语句集合,可以接受参数并返回结果。使用存储过程可以提高数据库的性能和可维护性,同时也可以减少网络流量和代码重复。那么,如何在 MyS…...
2k1000LA 调试HDMI
问题: 客户需要使用HDMI 接口,1080p 的分辨率。 ---------------------------------------------------------------------------------------------------------------- 这里需要看看 龙芯派的 demo 版 的 硬件上的连接。 硬件上: 官方的demo 板 , dvo1 应该是 HDMI的…...
24年蓝桥杯及攻防世界赛题-MISC-1
2 What-is-this AZADI TOWER 3 Avatar 题目 一个恐怖份子上传了这张照片到社交网络。里面藏了什么信息?隐藏内容即flag 解题 ┌──(holyeyes㉿kali2023)-[~/Misc/tool-misc/outguess] └─$ outguess -r 035bfaa85410429495786d8ea6ecd296.jpg flag1.txt Reading 035bf…...
conda相比python好处
Conda 作为 Python 的环境和包管理工具,相比原生 Python 生态(如 pip 虚拟环境)有许多独特优势,尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处: 一、一站式环境管理:…...
深入剖析AI大模型:大模型时代的 Prompt 工程全解析
今天聊的内容,我认为是AI开发里面非常重要的内容。它在AI开发里无处不在,当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗",或者让翻译模型 "将这段合同翻译成商务日语" 时,输入的这句话就是 Prompt。…...
PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建
制造业采购供应链管理是企业运营的核心环节,供应链协同管理在供应链上下游企业之间建立紧密的合作关系,通过信息共享、资源整合、业务协同等方式,实现供应链的全面管理和优化,提高供应链的效率和透明度,降低供应链的成…...
为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?
在建筑行业,项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升,传统的管理模式已经难以满足现代工程的需求。过去,许多企业依赖手工记录、口头沟通和分散的信息管理,导致效率低下、成本失控、风险频发。例如&#…...
Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器
第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...
Cinnamon修改面板小工具图标
Cinnamon开始菜单-CSDN博客 设置模块都是做好的,比GNOME简单得多! 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...
跨链模式:多链互操作架构与性能扩展方案
跨链模式:多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈:模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展(H2Cross架构): 适配层…...
Psychopy音频的使用
Psychopy音频的使用 本文主要解决以下问题: 指定音频引擎与设备;播放音频文件 本文所使用的环境: Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...
leetcodeSQL解题:3564. 季节性销售分析
leetcodeSQL解题:3564. 季节性销售分析 题目: 表:sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...
C++ 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
