论坛测试报告
作者前言
🎂 ✨✨✨✨✨✨🍧🍧🍧🍧🍧🍧🍧🎂
🎂 作者介绍: 🎂🎂
🎂 🎉🎉🎉🎉🎉🎉🎉 🎂
🎂作者id:老秦包你会, 🎂
简单介绍:🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂
喜欢学习C语言、C++和python等编程语言,是一位爱分享的博主,有兴趣的小可爱可以来互讨 🎂🎂🎂🎂🎂🎂🎂🎂
🎂个人主页::小小页面🎂
🎂gitee页面:秦大大🎂
🎂🎂🎂🎂🎂🎂🎂🎂
🎂 一个爱分享的小博主 欢迎小可爱们前来借鉴🎂
论坛测试报告
- **作者前言**
- 1.项目背景
- 2.项目功能
- 3. 测试内容
- 3.1 设计测试用例
- 3.2 功能测试
- 3.2.1 注册测试
- 3.2.2登入测试
- 3.2.3 论坛首页
- 3.2.4 发帖中心
- 3.2.5 帖子详情页
- 3.2.6 个人中心
- 3.2.7 私信回复
- 4.自动化测试
- 4.1测试工具
- 4.2 自动化脚本
- 4.2.1 注册测试
- 4.2.2登入测试
- 4.2.3 论坛首页
- 4.2.4 发帖中心
- 4.2.5 帖子详情页
- 4.2.6 我的帖子
- 3.2.7 私信回复
- Bug简述
- 测试总结
- Gitee
1.项目背景
本项目是一个论坛系统,采用前后端分离的方式实现,该系统旨在为用户提供一个基于 Web 的文章发布和讨论平台。
用户可以进行注册登录、查看和修改个人信息,进行帖子的增删改查等基础操作。
用户可以点赞、评论帖子,私信其他用户,并在帖子详情页上查看点赞数和阅读量等信息。
2.项目功能
注册模块:在本页面中,用户可以透过注册获取账号和密码,用于登入,注册过程中需要用户输入用户名、昵称、密码、等操作完成注册。
登入模块用户可以通过注册来的账号进行登入,输入正确的账号和密码进行登入,登入成功将会跳转到论坛首页
论坛首页:论坛首页包含有用户相关显示信息、论坛分类、帖子、帖子搜索、发布帖子等功能。当点击相关的按钮会进行跳转到对应的页面进行操作。
个人中心:主要包含有用户的信息,可以更换用户的头像,进行用户密码的更改等功能。
帖子详情页:主要包含了用户发送帖子的内容、标题、回复评价、私信用户等功能,
发帖子中心:具备了发帖子的基本要是,发送模块、发送内容、发送标题等相关功能
私信中心:可以回复私信等功能
3. 测试内容
3.1 设计测试用例
设计测试用例可以从功能测试、性能测试、兼容性测试、易用性测试、界面测试、安全性测试进行入手、本次测试用例主要针对的是该页面各个模块的功能测试,

3.2 功能测试
3.2.1 注册测试
界面:

测试用例1: 用户名(TestUser)、昵称(TestUser)、密码(123456)、确认密码全部填写,点击条款
预期结果:注册正常,可以进行登入
实际结果:注册成功,跳转登入界面

**测试用例2:**输入已经注册过的用户名(TestUser)、昵称(TestUser)、密码(123456)、确认密码全部填写,点击条款
预期结果:注册失败
实际结果:注册失败,右下角弹窗出用户已存在

测试用例3:用户名(TestUse)、昵称(TestUser)、密码(123456)、确认密码全部填写,不点击条款
预期结果: 注册失败
实际结果: 无法注册

测试用例4: 用户名(TestUse)、昵称(TestUser)、密码(123456)、确认密码全部不填写,点击条款
预期结果: 注册失败
实际结果: 无法注册

3.2.2登入测试
界面:

测试用例1: 输入正确的用户名(TestUser)、密码(123456)
预期结果:登入正常,页面跳转
实际结果:登入正常,页面跳转

测试用例2: 输入未注册的用户名(TestUser1)、密码(123456)
预期结果:不能登入正常,
实际结果:不能正常登陆, 右下角提示错误

测试用例3: 不输入的用户名(TestUser)和密码(123456)
预期结果:不能登入正常,
实际结果:不能正常登陆, 输入框提示错误。

3.2.3 论坛首页
界面:

测试用例1:点击不同模块
预期结果:可以切换不同的帖子列表
实际结果:可以切换不同的帖子列表

测试用例2:点击java模块,点击右上角的搜索框,输入1。进行查找
预期结果:查找出所有的1为标题的帖子
实际结果:不能查找,然后框内容情况

测试用例3:点击右上角的白夜模式切换
预期结果:白天、夜天模式切换正常
实际结果:白天、夜天模式切换正常,页面颜色改变

测试用例4:点击右上角的私信通知
预期结果:打开成功,获取所以私信的内容
实际结果:打开成功,获取所以私信的内容

测试用例5:点击右上角的头像,点击下拉框中的个人中心
预期结果:点击成功,跳转到个人中心
实际结果:点击成功,跳转到个人中心

测试用例6:点击右上角的头像,点击下拉框中的我的帖子
预期结果:点击成功,跳转到帖子中心
实际结果:点击成功,跳转到帖子中心

测试用例7:点击帖子列表中的帖子
预期结果:点击成功,跳转到帖子详情页
实际结果:点击成功,跳转到帖子帖子详情页

测试用例8:点击帖子列表的右上角的发帖按钮
预期结果:点击成功,跳转到发帖中心
实际结果:点击成功,跳转到发帖中心

3.2.4 发帖中心
界面:

测试用例1: 不输入标题,输入内容,点击发布帖子
预期结果:发送失败,帖子无标题
实际结果:发帖失败,右下角出现提示

测试用例2: 输入标题,不输入内容,点击发布帖子
预期结果:发送失败,帖子无标题
实际结果:发帖失败,右下角出现提示

测试用例3: 输入标题,输入内容,点击发布帖子
预期结果:发送成功
实际结果:发帖成功,页面跳转到首页

3.2.5 帖子详情页
界面:

测试用例1: 点击点赞
预期结果:点赞成功
实际结果:点赞成功、可以多次点赞,点赞数量增加

测试用例2: 点击用户名
预期结果:跳转到发帖中心
实际结果:跳转成功

测试用例3: 不输入回复内容,点击发送回复
预期结果:回复失败
实际结果:回复失败

测试用例4: 输入回复内容,点击发送回复
预期结果:回复成功
实际结果:回复成功,回复数量增加

测试用例5: 点击私信按钮, 输入回复内容,点击发送发送
预期结果:发送成功
实际结果:回复发送

3.2.6 个人中心
测试用例1:输入新的昵称进行修改
预期结果:修改成功
实际结果:修改成功

测试用例2:输入新的邮箱进行修改
预期结果:修改成功
实际结果:修改成功

测试用例3:输入新的手机号码进行修改
预期结果:修改成功
实际结果:修改成功

测试用例5:不输入的昵称、邮箱、手机号码,直接进行修改
预期结果:修改失败
实际效果:修改失败

测试用例6:输入个人简介内容,点击修改
预期结果:修改成功
实际效果:修改成功

3.2.7 私信回复
测试用例1: 输入回复内容,点击发送
预期结果:回复成功
实际结果:回复成功

测试用例: 不输入回复内容,点击发送
预期结果:回复失败
实际结果:回复失败

4.自动化测试
4.1测试工具
系统: windows10
浏览器 Chrome 135.0.7049.95(正式版本) (64 位)
语言:python
模块:selenium4.0
软件: pyCharm2024.3.5
4.2 自动化脚本
4.2.1 注册测试
import datetime
import timefrom selenium.webdriver.common.by import Byfrom Common.Utials import Forumclass ForumRegisiter():driver = ""url = ""user = datetime.datetime.now().strftime('%Y-%m-%d-%H%M%S')user1="TestUser"def __init__(self):self.driver = Forum.driverself.url = Forum.urldef go_Register(self):time.sleep(1)Forum.find_element(By.CSS_SELECTOR,"body > div > div > div > div:nth-child(1) > div > div.text-center.text-muted.mt-3 > a").click()def informetionRegister(self,user , nane, password, password2, click_1):Forum.find_element(By.CSS_SELECTOR,"#username").send_keys(user)Forum.find_element(By.CSS_SELECTOR,"#nickname").send_keys(nane)Forum.find_element(By.CSS_SELECTOR,"#password").send_keys(password)Forum.find_element(By.CSS_SELECTOR,"#passwordRepeat").send_keys(password2)if click_1:ele = Forum.find_element(By.CSS_SELECTOR,"#policy")if(ele.get_attribute("class") !="form-check-input is-valid"):ele.click()else:ele = Forum.find_element(By.CSS_SELECTOR, "#policy")if (ele.get_attribute("class") != "form-check-input is-invalid"):ele.click()Forum.imagetSave()#注册按钮Forum.find_element(By.CSS_SELECTOR, "#submit").click()self.user1 = user
forumRegiter = ForumRegisiter()
4.2.2登入测试
import timefrom selenium.webdriver.common.by import Byfrom Common.Utials import Forum
from Test.ForumRegisiter import forumRegiterclass ForumLogin:def __init__(self,):self.driver = Forum.driverself.url = Forum.urldef login(self, user =forumRegiter.user1, password ="123456"):Forum.find_element(By.CSS_SELECTOR,"#username").send_keys(user)Forum.find_element(By.CSS_SELECTOR,"#password").send_keys(password)Forum.find_element(By.CSS_SELECTOR,"#submit").click()print("登入执行完成")
foumLogin = ForumLogin()
4.2.3 论坛首页
import timeimport pyautogui
from selenium.webdriver.common.by import Byfrom Common.Utials import Forum
from Test.ForumRegisiter import forumRegiter
from Test.PostDetailsPase import postDetailsPaseclass ForumFristPase():driver = ""url = ""read = ""likes = ""comment = ""title = ""date = ""def __init__(self):self.driver = Forum.driverself.url = Forum.urldef forumList(self,name="Java"):time.sleep(2)list_1 = Forum.find_elements(By.XPATH,'//span[@class="nav-link-title"]')#//*[@id="topBoardList"]for i in list_1:print(i.text)if(i.text == name):i.click()print(name, "点击成功")time.sleep(5)return Noneprint("点击失败")def clickPost(self, mode = "首页"):index = 0# 获取帖子标题链接self.title = Forum.find_element(By.XPATH,'//*[@id="artical-items-body"]/div[2]/div/div[2]/div[1]/a').text#获取帖子的昵称和发布时间 //*[@id="artical-items-body"]/div[1]/div# 发布的时间self.date = Forum.find_element(By.CSS_SELECTOR, "#artical-items-body > div:nth-child(1) > div > div.col > div.text-muted.mt-2 > div > div.col > ul > li:nth-child(2)").text# 阅读量self.read = Forum.find_element(By.CSS_SELECTOR, "#artical-items-body > div:nth-child(1) > div > div.col > div.text-muted.mt-2 > div > div.col-auto.d-none.d-md-inline > ul > li:nth-child(1)").text# 点赞量self.likes = Forum.find_element(By.CSS_SELECTOR, "#artical-items-body > div:nth-child(1) > div > div.col > div.text-muted.mt-2 > div > div.col-auto.d-none.d-md-inline > ul > li:nth-child(2)").text# 评论量self.comment = Forum.find_element(By.CSS_SELECTOR, "#artical-items-body > div:nth-child(1) > div > div.col > div.text-muted.mt-2 > div > div.col-auto.d-none.d-md-inline > ul > li:nth-child(3)").textname = Forum.find_element(By.XPATH,'//*[@id="artical-items-body"]/div[1]/div/div[2]/div[2]/div/div[1]/ul/li[1]').textprint("昵称:", name)print("发布时间:", self.date)print("阅读量:", self.read)print("点赞量:", self.likes)print("点赞量:", self.comment)# # 进入详情页Forum.find_element(By.XPATH,'//*[@id="artical-items-body"]/div[2]/div/div[2]/div[1]/a').click()# #检查是否符合postDetailsPase.start()postDetailsPase.informationPost(int(self.read),self.likes,self.comment,self.title,self.date)# #私信发送# postDetailsPase.clickPrivate(forumRegiter.user1,"11111")# # 点赞# postDetailsPase.clikeLike()# # 回复postDetailsPase.clikeComment()# #换到对应模块# self.forumList(mode)## time.sleep(2)return Nonedef inputBox(self, content):Forum.find_element(By.CSS_SELECTOR,"body > div.page > header.navbar.navbar-expand-md.navbar-light.d-print-none > div > div > div.nav-item.d-none.d-md-flex.me-3 > div > form > div > input").send_keys(content)pyautogui.press('enter')Forum.imagetSave()return None# 帖子发送def postSend(self):Forum.find_element(By.CSS_SELECTOR,"#bit-forum-content > div.page-header.d-print-none > div > div > div.col-auto.ms-auto.d-print-none > div > a.btn.btn-primary.d-none.d-sm-inline-block.article_post").click()self.forumList("首页")print("点击帖子发送")time.sleep(10)Forum.imagetSave()return None# 模式切换def modeSwitch(self):try:Forum.find_element(By.CSS_SELECTOR,"body > div.page > header.navbar.navbar-expand-md.navbar-light.d-print-none > div > div > div:nth-child(2) > a.nav-link.px-0.hide-theme-dark").click()except:Forum.find_element(By.CSS_SELECTOR,"body > div.page > header.navbar.navbar-expand-md.navbar-light.d-print-none > div > div > div:nth-child(2) > a.nav-link.px-0.hide-theme-light").click()Forum.imagetSave()return None#私信箱def privateMailbox(self):Forum.find_element(By.CSS_SELECTOR,"body > div.page > header.navbar.navbar-expand-md.navbar-light.d-print-none > div > div > div:nth-child(2) > div > a").click()time.sleep(1)Forum.imagetSave()Forum.find_element(By.CSS_SELECTOR, "#index_message_offcanvasEnd > div.offcanvas-header > button").click()return None#我的帖子def mePost(self):time.sleep(2)Forum.find_element(By.CSS_SELECTOR,"body > div.page > header.navbar.navbar-expand-md.navbar-light.d-print-none > div > div > div.nav-item.dropdown > a").click()Forum.find_element(By.CSS_SELECTOR,"#index_user_profile").click()self.forumList("首页")Forum.imagetSave()return None#个人中心def personalCent(self):Forum.find_element(By.CSS_SELECTOR,"body > div.page > header.navbar.navbar-expand-md.navbar-light.d-print-none > div > div > div.nav-item.dropdown > a").click()Forum.find_element(By.CSS_SELECTOR, "#index_user_settings").click()Forum.imagetSave()self.forumList("首页")return None
forumfristPase = ForumFristPase()
4.2.4 发帖中心
import timefrom selenium.webdriver.common.by import By
from selenium.webdriver.support.select import Selectfrom Common.Utials import Forumclass PostSend:driver = ""url = ""def __init__(self):self.driver = Forum.driverself.url = Forum.urlForum.find_element(By.CSS_SELECTOR, "#bit-forum-content > div.page-header.d-print-none > div > div > div.col-auto.ms-auto.d-print-none > div > a.btn.btn-primary.d-none.d-sm-inline-block.article_post").click()print("点击帖子发送")def contentInput(self, model = 1,title = "111",content = "1111"):select = Select(Forum.find_element(By.CSS_SELECTOR,"#article_post_borad"))select.select_by_index(model)Forum.find_element(By.CSS_SELECTOR,"#article_post_title").send_keys(title)Forum.find_element(By.CSS_SELECTOR,"#edit-article > div.editormd-toolbar > div > ul > li:nth-child(4) > a").click()self.driver.execute_script("arguments[0].click();", Forum.find_element(By.XPATH,'//*[@id="article_post_submit"]'))print("发送帖子")
4.2.5 帖子详情页
import timefrom selenium.webdriver.common.by import By
from selenium.webdriver.support.select import Selectfrom Common.Utials import Forum
# from Test.ForumFristPase import forumfristPase
from Test.ForumRegisiter import forumRegiter# 前台需要进入帖子详情页
class PostDetailsPase:driver = ""url = ""def __init__(self):self.driver = Forum.driverself.url = Forum.urldef start(self):time.sleep(2)# 标题self.title = Forum.find_element(By.CSS_SELECTOR, "#details_article_title").text# 发布的时间self.date = Forum.find_element(By.CSS_SELECTOR, "#details_article_createTime").text# 阅读量self.read = Forum.find_element(By.CSS_SELECTOR, "#details_article_visitCount").text# 点赞量self.likes = Forum.find_element(By.CSS_SELECTOR, "#details_article_likeCount").text# 评论量self.comment = Forum.find_element(By.CSS_SELECTOR, "#details_article_replyCount").text# 进入了帖子详情页# 判断def informationPost(self,read , likes, comment,title,date):#标题if(self.title != title):print("标题有误")return False# 发布的时间if (self.date != date):print("发布时间有误")return False#阅读量if ( int(self.read)-1 != int(read)):print("阅读量有误")return False# 点赞量if ( self.likes != likes):print("点赞量有误")return False# 点赞量if ( self.self.comment != likes):print("点赞量有误")return Falsereturn True# 点击私信发送def clickPrivate(self, name, content):#非本人if(Forum.find_element(By.CSS_SELECTOR,"#article_details_author_name").text != name):# 点击私信Forum.find_element(By.CSS_SELECTOR,"#btn_details_send_message").click()#发送私信Forum.find_element(By.CSS_SELECTOR,"#index_message_receive_content").send_keys(content)Forum.find_element(By.CSS_SELECTOR, "#btn_index_send_message").click()Forum.imagetSave()Forum.find_element(By.CSS_SELECTOR,"#index_message_modal > div > div > div.modal-header > button").click()print("私信发送完毕")#点赞def clikeLike(self):time.sleep(2)Forum.find_element(By.CSS_SELECTOR,"#details_btn_like_count").click()time.sleep(2)if(int(Forum.find_element(By.CSS_SELECTOR, "#details_article_likeCount").text) ==int(self.likes)+1):self.likes = Forum.find_element(By.CSS_SELECTOR, "#details_article_likeCount").textprint("点赞成功")else:print("点赞失败")#回复加发私信def clikeComment(self):#输入内容self.driver.execute_script("arguments[0].click();",Forum.find_element(By.CSS_SELECTOR,"#article_details_reply > div.editormd-toolbar > div > ul > li:nth-child(14) > a"))# 发送self.driver.execute_script("arguments[0].click();",Forum.find_element(By.XPATH, '//*[@id="details_btn_article_reply"]'))print("发送运行成功")time.sleep(6)# 私信发送try:name = Forum.find_element(By.XPATH,'//*[@id="details_reply_area"]/div[1]/div[1]/div/h3/a').textprint(name)if(name != forumRegiter.user1):#发私信Forum.find_element(By.CSS_SELECTOR,"#details_reply_area > div > div.col-3.card > div > div > a").click()Forum.find_element(By.CSS_SELECTOR, "#index_message_receive_content").send_keys("11111")Forum.find_element(By.CSS_SELECTOR, "#btn_index_send_message").click()Forum.imagetSave()Forum.find_element(By.CSS_SELECTOR, "#index_message_modal > div > div > div.modal-header > button").click()except:pass# 获取评论用户Forum.find_element(By.XPATH, '//div[@id="details_reply_area"]//a[@class="a_reply_user_profile"]').click()time.sleep(2)# forumfristPase.forumList("首页")
postDetailsPase = PostDetailsPase()
4.2.6 我的帖子
import timefrom selenium.webdriver.common.by import By
from selenium.webdriver.support.select import Selectfrom Common.Utials import Forum
from Test.ForumFristPase import forumfristPase
from Test.ForumRegisiter import forumRegiter
class Mepost():driver = ""url = ""def __init__(self):self.driver = Forum.driverself.url = Forum.urldef post(self):forumfristPase.forumList("首页")time.sleep(2)Forum.find_element(By.CSS_SELECTOR,"body > div.page > header.navbar.navbar-expand-md.navbar-light.d-print-none > div > div > div.nav-item.dropdown > a").click()Forum.find_element(By.CSS_SELECTOR, "#index_user_profile").click()# 获取当前的帖子数量time.sleep(2)post_1 = int(Forum.find_element(By.CSS_SELECTOR,"#profile_articleCount").text)#实际的帖子数量lis_1 = Forum.find_elements(By.XPATH, '//*[@id="profile_article_body"]/li')for i in lis_1:post_1-=1if(post_1 < 0):print("帖子数量有误")return None
3.2.7 私信回复
import timefrom selenium.webdriver.common.by import By
from selenium.webdriver.support.select import Selectfrom Common.Utials import Forumclass ReplyPrivate:driver = ""url = ""def __init__(self):self.driver = Forum.driverself.url = Forum.urldef Reply(self,content = "11111"):time.sleep(1)Forum.find_element(By.CSS_SELECTOR,"body > div.page > header.navbar.navbar-expand-md.navbar-light.d-print-none > div > div > div:nth-child(2) > div > a").click()time.sleep(1)Forum.imagetSave()# 获取所有的私信i= Forum.find_element(By.XPATH,'//div[@id="index_div_message_list"]/div//a[@class="text-body d-block index_message_title"]')print(i.get_attribute("href"))time.sleep(1)self.driver.execute_script("arguments[0].click();", i)time.sleep(1)# 回复self.driver.execute_script("arguments[0].click();",Forum.find_element(By.CSS_SELECTOR, "#btn_index_message_reply"))Forum.find_element(By.CSS_SELECTOR, "#index_message_reply_receive_content").send_keys(content)Forum.find_element(By.CSS_SELECTOR, "#btn_index_send_message_reply").click()try:Forum.find_element(By.CSS_SELECTOR, "#index_message_offcanvasEnd > div.offcanvas-header > button").click()time.sleep(12)except:passForum.imagetSave()
Bug简述
bug1:
版本 135.0.7049.96(正式版本) (64 位)
环境:Windons10
步骤:进入论坛主页,点击模块
预期结果:模块信息正常,功能正常切换
实际结果:模块信息存在缺陷,功能正常切换
Bug2
版本 135.0.7049.96(正式版本) (64 位)
环境:Windons10
步骤:进入论坛主页,点击右上角搜索框,输入内容
预期结果:搜索正常,功能正常切换
实际结果:搜索不成功,功能不正常
Bug3:
版本 135.0.7049.96(正式版本) (64 位)
环境:Windons10
步骤:进入论坛主页,点击头像,点击个人主页,更换头像,
预期结果:更换成功
实际结果:更换失败
Bug4
版本 135.0.7049.96(正式版本) (64 位)
环境:Windons10
步骤:进入论坛主页,点击帖子列表的帖子,跳转页面, 点击点赞按钮,
预期结果:每个用户只能点赞一次
实际结果:可以无限点赞
Bug5
版本 135.0.7049.96(正式版本) (64 位)
环境:Windons10
步骤:进入论坛主页,点击帖子列表的自己帖子,跳转页面, 进帖子删除或者修改
预期结果:可以删除或者修改
实际结果:个人帖子无删除和修改按钮
测试总结
本次测试覆盖了注册、登入、论坛主页面、个人中心、帖子详情页、私信回复等相关模块功能的测试。从中总结如下:
- 功能测试:部分模块存在功能未完善或者部分完善的状态,严重影响软件使用
- 界面测试:测试过程中,部分模块存在数值不准确,界面显示
- 易用性测试:测试过程中,存在较大问题,点击返回页面,直接跳转到登入界面,以及注册没有注册成功标识等
结论:基本功能大部分可以使用、用户体验感较差,缺失功能的模块应该增加修复速度。进一步完善。
Gitee
论坛测试脚本
相关文章:
论坛测试报告
作者前言 🎂 ✨✨✨✨✨✨🍧🍧🍧🍧🍧🍧🍧🎂 🎂 作者介绍: 🎂🎂 🎂 🎉🎉🎉…...
IPMI 与 Redfish API简介
--- ### **IPMI 与 Redfish API 详解** #### **1. IPMI(智能平台管理接口)** **简介** IPMI(Intelligent Platform Management Interface)是一种硬件级别的带外管理标准,允许管理员通过独立于操作系统的网络通道(BMC)监控和管理服务器硬件,即使主机已关机或操作系…...
zset.
zset 有序集合 zset 保留了 set 不能有重复元素的特点 zset 中的每个元素都有一个唯一的浮点类型的分数(score)与之关联,使得 zset 内部的元素是可以维护有序性的。但是这个有序不是用下标作为排序依据的,而是根据分数…...
Windows 部署 DeepSeek 详细教程
一、准备工作 系统要求: 建议Windows 10 22H2 或更高版本,家庭版或专业版上网环境: 建议科学上网,国内访问部分网站会很慢设备要求: 内存8G以上、关闭防火墙 二、安装Ollama 官网链接: https://ollama.com/downloadg…...
过去十年前端框架演变与技术驱动因素剖析
一、技术演进脉络(2013-2023) 2013-2015:结构化需求催生框架雏形 早期的jQuery虽然解决了跨浏览器兼容性问题(如IE8兼容性处理),但其松散的代码组织方式难以支撑复杂应用开发。Backbone.js的出现首次引入M…...
从零开始学A2A一:A2A 协议的高级应用与优化
A2A 协议的高级应用与优化 学习目标 掌握 A2A 高级功能 理解多用户支持机制掌握长期任务管理方法学习服务性能优化技巧 理解与 MCP 的差异 分析多智能体场景下的优势掌握不同场景的选择策略 第一部分:多用户支持机制 1. 用户隔离架构 #mermaid-svg-Awx5UVYtqOF…...
#Linux动态大小裁剪以及包大小变大排查思路
1 动态库裁剪 库分为动态库和静态库,动态库是在程序运行时才加载,静态库是在编译时就加载到程序中。动态库的大小通常比静态库小,因为动态库只包含了程序需要的函数和数据,而静态库则包含了所有的函数和数据。静态库可以理解为引入…...
基于微信小程序的中医小妙招系统的设计与实现
hello hello~ ,这里是 code袁~💖💖 ,欢迎大家点赞🥳🥳关注💥💥收藏🌹🌹🌹 🦁作者简介:一名喜欢分享和记录学习的在校大学生…...
sqlite3的API以及命令行
sqlite是目前最流行的嵌入式数据库。 所谓嵌入式,就是足够简单,可以嵌入到我们自己开发的应用程序之中。 在Linux系统中,sqlite的使用只需要使用它的API,连接它的动态连接库,甚至都不用连接,sqlite的实现…...
css button 点击效果
<!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><title>button点击效果</title><style>#container {display: flex;align-items: center;justify-content: center;}.pushable {position: relat…...
表征流体作用力的参数及其特性
在圆柱绕流研究中,这些参数分别表征流体作用力的关键特性,以下是详细解析: 📊 参数物理意义及工程应用 符号名称物理意义典型值范围(参考)工程意义 C d m a x C_{dmax} Cdmax最大阻力系数瞬时阻力系数&a…...
Foundation Agent:深度赋能AI4DATA
2025年5月17日,第76期DataFunSummit:AI Agent技术与应用峰会将在DataFun线上社区举办。Manus的爆火并非偶然,随着基础模型效果不断的提升,Agent作为大模型的超级应用备受全世界的关注。为了推动其技术和应用,本次峰会计…...
Docker--Docker镜像原理
docker 是操作系统层的虚拟化,所以 docker 镜像的本质是在模拟操作系统。 联合文件系统(UnionFS) 联合文件系统(UnionFS) 是Docker镜像实现分层存储的核心技术,它通过将多个只读层(Image Laye…...
SpringAI+DeepSeek大模型应用开发——2 大模型应用开发架构
目录 2.大模型开发 2.1 模型部署 2.1.1 云服务-开放大模型API 2.1.2 本地部署 搜索模型 运行大模型 2.2 调用大模型 接口说明 提示词角色 编辑 会话记忆问题 2.3 大模型应用开发架构 2.3.1 技术架构 纯Prompt模式 FunctionCalling RAG检索增强 Fine-tuning …...
Transformer 架构 - 编码器 (Transformer Architecture - Encoder)
1.Transformer 编码器整体结构 Transformer 编码器的结构相对直观:它由 N 个完全相同的编码器层 (Encoder Layer) 堆叠而成。 图1: Transformer 编码器整体结构示意图 (简化) 输入序列(例如,通过 embedding 层转换后的词向量)首先会加上位置编码,然后传入第一个编码器层…...
2.2/Q2,Charls最新文章解读
文章题目:Association of uric acid to high-density lipoprotein cholesterol ratio with the presence or absence of hypertensive kidney function: results from the China Health and Retirement Longitudinal Study (CHARLS) DOI:10.1186/s12882-…...
下拉框select标签类型
在我们很多页面里有下拉框的选择,这种元素怎么定位呢?下拉框分为两种类型:我们分别针对这两种元素进行定位和操作 select标签 : 通过select类处理。 非select标签 1、针对下拉框元素,如果是Select标签类型,…...
CentOS 7 linux系统从无到有部署项目
环境部署操作手册 一、Maven安装与配置 1. 下载与解压 下载地址:https://maven.apache.org/download.cgi?spm5238cd80.38b417da.0.0.d54c32cbnOpQh2&filedownload.cgi上传并解压解压命令: tar -zxvf apache-maven-3.9.9-bin.tar.gz -C /usr/loc…...
李飞飞团队新作WorldScore:“世界生成”能力迎来统一评测,3D/4D/视频模型同台PK
从古老神话中对世界起源的幻想,到如今科学家们在实验室里对虚拟世界的构建,人类探索世界生成奥秘的脚步从未停歇。如今,随着人工智能和计算机图形学的深度融合,我们已站在一个全新的起点,能够以前所未有的精度和效率去…...
如何在米尔-STM32MP257开发板上部署环境监测系统
本文将介绍基于米尔电子MYD-LD25X开发板(米尔基于STM35MP257开发板)的环境监测系统方案测试。 摘自优秀创作者-lugl4313820 一、前言 环境监测是当前很多场景需要的项目,刚好我正在论坛参与的一个项目:Thingy:91X 蜂窝物联网原型…...
MySQL之SQL优化
目录 1.插入数据 2.大批量插入数据 3.order by优化 4.group by优化 5.limit优化 6.count优化 count用法 7.update优化 1.插入数据 如果我们需要一次性往数据库表中插入多条记录,可以从以下三个方面进行优化 第一个:批量插入数据 Insert into tb_test va…...
python_level1.2
目录 一、变量 例如:小正方形——>大正方形 【1】第一次使用这个变量,所以说:定义一个变量length; 【2】:是赋值符号,不是等于符号。(只有赋值,该变量才会被创建)…...
Linux、Kylin OS挂载磁盘,开机自动加载
0.实验环境: 1.确定挂载目录,如果没有使用mkdir 进行创建: mkdir /data 2.查看磁盘 lsblk #列出所有可用的块设备df -T #查看磁盘文件系统类型 3.格式化成xfs文件系统 (这里以xfs为例,ext4类似) mkfs.xfs /dev/vdb 4.挂载到…...
FPGA-VGA
目录 前言 一、VGA是什么? 二、物理接口 三、VGA显示原理 四、VGA时序标准 五、VGA显示参数 六、模块设计 七、波形图设计 八、彩条波形数据 前言 VGA的FPGA驱动 一、VGA是什么? VGA(Video Graphics Array)是IBM于1987年推出的…...
java的lambda和stream流操作
Lambda 表达式 ≈ 匿名函数 (Lambda接口)函数式接口:传入Lambda表达作为函数式接口的参数 函数式接口 只能有一个抽象方法的接口 Lambda 表达式必须赋值给一个函数式接口,比如 Java 8 自带的: 接口名 作用 Functio…...
【嵌入式】【阿里云服务器】【树莓派】学习守护进程编程、gdb调试原理和内网穿透信息
目录 一. 守护进程的含义及编程实现的主要过程 1.1守护进程 1.2编程实现的主要过程 二、在树莓派中通过三种方式创建守护进程 2.1nohup命令创建 2.2fork()函数创建 2.3daemon()函数创建 三、在阿里云中通过三种方式创建守护进程 3.1nohup命令创建 3.2fork()函数创建 …...
数据结构学习笔记 :树与二叉树详解
目录 树的基本概念二叉树的定义与特性二叉树的存储结构 3.1 顺序存储 3.2 链式存储二叉树遍历特殊二叉树类型总结与应用场景 一、树的基本概念 核心定义 树:由根节点和若干子树构成的层次结构。叶子节点(终端节点):没有子节点的…...
前沿篇|CAN XL 与 TSN 深度解读
引言 1. CAN XL 标准演进与设计目标 2. CAN XL 物理层与帧格式详解 3. 时间敏感网络 (TSN) 关键技术解析 4. CAN XL + TSN 在自动驾驶领域的典型应用...
七、LangChain Tool类参数对接机制解析:基于Pydantic的类型安全与流程实现
LangChain 的 Tool 类(包括 BaseTool 和 StructuredTool)通过 参数校验、输入解析、函数调用 的流程,将外部函数与 Agent 的逻辑对接。以下是其内部逻辑的详细解析: 1. 工具与函数对接的核心机制 (1) 工具的定义方式 LangChain 提供了两种主要方式定义工具: 继承 BaseTo…...
Spring-AI-alibaba 结构化输出
1、将模型响应转换为 ActorsFilms 对象实例: ActorsFilms package com.alibaba.cloud.ai.example.chat.openai.entity;import java.util.List;public record ActorsFilms(String actor, List<String> movies) { } GetMapping("/toBean")public Ac…...
