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

论坛系统测试报告

目录

  • 一、项目背景
  • 二、论坛系统测试用例思维导图
  • 三、论坛系统测试
    • 3.1界面测试
    • 3.2登陆测试
    • 3.3主页测试
    • 3.4个人中心测试
  • 四、自动化测试脚本
    • 4.1配置驱动
    • 4.2创建浏览器类
    • 4.3功能测试
      • 4.3.1登陆测试
      • 4.3.2注册测试
      • 4.3.3主页测试
      • 4.3.4帖子编辑
      • 4.3.5运行主代码
  • 五、BUG分析
    • 六、测试总结

一、项目背景

论坛系统致力于打造一个多元交流社区,吸引各领域专业人士、爱好者及普通用户汇聚一堂。用户可在开放的环境中充分交流。伴随互联网用户群体持续壮大,尤其是年轻一代网民对在线交流和知识获取的需求不断攀升,论坛作为经典且有效的互动平台,蕴藏着巨大发展潜力。通过论坛系统建设,期望满足不同用户的多样化需求,提升信息交流效率与质量,为用户创造更多价值,助力互联网内容生态的健康、持续发展。

二、论坛系统测试用例思维导图

对于论坛系统简单可以分为六类方面进行测试:界面测试、安全测试、易用性测试、兼容性测试、功能测试
在这里插入图片描述

三、论坛系统测试

3.1界面测试

在这里插入图片描述

  • 用户登陆框虽然没有在屏幕正中央,好在用白色和背景板颜色区分更加显眼,并标有黑体“用户登陆”。
  • 用户名及密码输入框大小合适,让用户容易输入。
  • 登陆按钮用蓝色框格包围使得用户能加轻松登陆。
  • “点击注册”字样用蓝色标识,时用户容易找到。
  • 密码框内“小眼睛”有显示密码功能。

3.2登陆测试

  • 用户名及密码为空时输入框下显示红色“用户名不能为空”或“密码不能为空”字样。
    (用户名:zhangsan 密码:12345 为例)
    在这里插入图片描述
  • 输入正确用户名及错误密码,提示用户名或密码错误.
    在这里插入图片描述
  • 输入错误用户名及正确密码.
    在这里插入图片描述
  • 输入正确用户名及正确密码
    进入论坛主页
    在这里插入图片描述

3.3主页测试

  • 1.点击发帖子

在这里插入图片描述

  • 2.选择板块

在这里插入图片描述

  • 3.输入标题及内容

在这里插入图片描述

  • 4.点击发布

在这里插入图片描述

  • 5.发布成功!!!

在这里插入图片描述

  • 6.点击输入框输入论坛测试

在这里插入图片描述
测试发现点击搜索框内的放大镜无法搜索。

  • 7.点击帖子标题

在这里插入图片描述
显示进入帖子

  • 8.点击发私信

在这里插入图片描述

  • 9.发布成功

在这里插入图片描述
测试显示没有查找私信功能

  • 10.点击回复

在这里插入图片描述
回复成功!!!

3.4个人中心测试

  1. 点击主页头像

在这里插入图片描述

  1. 进入个人中心

在这里插入图片描述

  1. 点击修改昵称/邮箱地址/电话号码

在这里插入图片描述
测试结果发现无法修改

  1. 点击修改密码

在这里插入图片描述

  1. 修改成功

在这里插入图片描述

四、自动化测试脚本

4.1配置驱动

Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera,Edge等。
WebDriverManager 是一个开源的 Java 库,用于自动管理 Selenium WebDriver 所需的驱动程序(如 ChromeDriver、GeckoDriver、EdgeDriver 等)。它可以自动下载、设置和维护这些驱动程序,从而简化了 Selenium 测试的配置过程

在pycharm软件的设置中观察是否安装这两个软件包,如果没有可能无法正常驱动打开本地浏览器
在这里插入图片描述

4.2创建浏览器类

  • 每个功能都需要pycharm驱动浏览,若每个功能都有一份浏览器驱动,功能过多可能导致软件崩溃,将驱动器类放入一个common文件,功能测试则放入test文件,image用于保存截屏图片


在这里插入图片描述

  • 驱动器类
    Lunta实例化出Driver类,每次测试功能时调用类对象driver,防止每个功能模块都创建一个新的驱动器。
import datetime
import os
import sys
import timefrom selenium import webdriver
from selenium.webdriver.edge.service import Service
from webdriver_manager.microsoft import EdgeChromiumDriverManagerclass Driver:driver=""def __init__(self):#打开edge驱动管理EdsIns=EdgeChromiumDriverManager().install()options=webdriver.EdgeOptions()#创建edge浏览器对象self.driver=webdriver.Edge(service=Service(EdsIns),options=options)# 截屏功能def getScreenShot(self):dirname = datetime.datetime.now().strftime('%Y-%m-%d')if not os.path.exists("../images/" + dirname):os.mkdir("../images/" + dirname)filename = sys._getframe().f_back.f_code.co_name + "-" + datetime.datetime.now().strftime('%Y-%m-%d-%H%M%S') + ".png"self.driver.save_screenshot(f'../images/{dirname}/' + filename)
Lunta=Driver()

4.3功能测试

4.3.1登陆测试

  1. 函数find_element()分别找出用户名及密码输入框
  2. send_keys输入内容
  3. click模拟用户点击登陆按钮
  4. find_element找出主页信息判断是否登陆成功
import timefrom selenium.webdriver.common.by import Byfrom common.untils import Luntaclass LunTaLgoin:url=""driver=""def __init__(self):self.url="http://127.0.0.1:9580/sign-in.html"self.driver=Lunta.driverself.driver.get(self.url)#成功登陆def LTLoginTest(self):self.driver.find_element(By.CSS_SELECTOR, "#username").clear()self.driver.find_element(By.CSS_SELECTOR, "#password").clear()self.driver.find_element(By.CSS_SELECTOR,"#username").send_keys("zhangsan")self.driver.find_element(By.CSS_SELECTOR,"#password").send_keys("1234")self.driver.find_element(By.CSS_SELECTOR,"#submit").click()time.sleep(2)#查找头像是否登陆成功self.driver.find_element(By.CSS_SELECTOR,"#index_nav_avatar")#截屏登陆成功页面Lunta.getScreenShot()# self.driver.find_element(By.CSS_SELECTOR,"#index_nav_avatar").click()# self.driver.find_element(By.CSS_SELECTOR,"#index_user_logout").click()# Lunta.getScreenShot()#登陆失败def LTFailTest(self):#密码错误self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("zhangsan")self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("12345")self.driver.find_element(By.CSS_SELECTOR, "#submit").click()time.sleep(1)Lunta.getScreenShot()#检测是否出现密码错误弹窗self.driver.find_element(By.CSS_SELECTOR,"body > div.jq-toast-wrap.bottom-right > div")#清空内容self.driver.find_element(By.CSS_SELECTOR, "#username").clear()self.driver.find_element(By.CSS_SELECTOR, "#password").clear()# 用户名错误self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("zhang")self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("1234")self.driver.find_element(By.CSS_SELECTOR, "#submit").click()time.sleep(1)Lunta.getScreenShot()# 检测是否出现密码错误弹窗self.driver.find_element(By.CSS_SELECTOR, "body > div.jq-toast-wrap.bottom-right > div")# 清空内容self.driver.find_element(By.CSS_SELECTOR, "#username").clear()self.driver.find_element(By.CSS_SELECTOR, "#password").clear()# 用户名为空self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("")self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("12345")self.driver.find_element(By.CSS_SELECTOR, "#submit").click()time.sleep(1)Lunta.getScreenShot()# 检测是否出现用户名不能为空提示text=self.driver.find_element(By.CSS_SELECTOR, "#signInForm > div.mb-3 > div").textassert text=="用户名不能为空"# 清空内容self.driver.find_element(By.CSS_SELECTOR, "#username").clear()self.driver.find_element(By.CSS_SELECTOR, "#password").clear()# 用户名为空self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("zhang")self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("")self.driver.find_element(By.CSS_SELECTOR, "#submit").click()time.sleep(1)Lunta.getScreenShot()# 检测是否出现用户名不能为空提示text = self.driver.find_element(By.CSS_SELECTOR, "#signInForm > div.mb-2 > div > div").textassert text == "密码不能为空"

4.3.2注册测试

  1. click模拟点击注册按钮
  2. find_element找出用户名,昵称,密码及确认密码输入框
  3. send_keys输入内容
  4. 注册失败是否有弹窗提示
  5. 注册成功返回登陆界面是否能登陆
import timefrom selenium.webdriver.common.by import Byfrom common.untils import Lunta
class LunTareg:driver=""url=""def __init__(self):self.url = "http://127.0.0.1:9580/sign-in.html"self.driver = Lunta.driverself.driver.get(self.url)def LTreg(self):time.sleep(2)self.driver.implicitly_wait(2)self.driver.find_element(By.CSS_SELECTOR,"body > div > div > div > div:nth-child(1) > div > div.text-center.text-muted.mt-3 > a").click()#注册成功self.driver.find_element(By.CSS_SELECTOR,"#username").send_keys("zhangs")self.driver.find_element(By.CSS_SELECTOR,"#nickname").send_keys("zhangs")self.driver.find_element(By.CSS_SELECTOR,"#password").send_keys("1234")self.driver.find_element(By.CSS_SELECTOR, "#passwordRepeat").send_keys("1234")self.driver.find_element(By.CSS_SELECTOR, "#policy").click()self.driver.find_element(By.CSS_SELECTOR,"#submit").click()time.sleep(2)Lunta.getScreenShot()self.driver.back()#登陆self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("zhangs")self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("1234")self.driver.find_element(By.CSS_SELECTOR, "#submit").click()time.sleep(2)# 查找头像是否登陆成功self.driver.find_element(By.CSS_SELECTOR, "#index_nav_avatar")# 截屏登陆成功页面Lunta.getScreenShot()time.sleep(2)self.driver.back()def LTrefaii(self):time.sleep(2)self.driver.implicitly_wait(2)#点击注册self.driver.find_element(By.CSS_SELECTOR,"body > div > div > div > div:nth-child(1) > div > div.text-center.text-muted.mt-3 > a").click()# 注册失败(用户已存在)self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("zhangs")self.driver.find_element(By.CSS_SELECTOR, "#nickname").send_keys("zhangs")self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("1234")self.driver.find_element(By.CSS_SELECTOR, "#passwordRepeat").send_keys("1234")self.driver.find_element(By.CSS_SELECTOR, "#policy").click()self.driver.find_element(By.CSS_SELECTOR, "#submit").click()#是否弹窗提示self.driver.find_element(By.CSS_SELECTOR,"body > div.jq-toast-wrap.bottom-right > div")Lunta.getScreenShot()# 注册失败(用户名为空)self.driver.find_element(By.CSS_SELECTOR, "#username").clear()self.driver.find_element(By.CSS_SELECTOR, "#submit").click()# 是否提示text=self.driver.find_element(By.CSS_SELECTOR, "#signUpForm > div > div:nth-child(2) > div").textassert text=="用户名不能为空"Lunta.getScreenShot()# 注册失败(昵称为空)self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("zhangs")self.driver.find_element(By.CSS_SELECTOR, "#nickname").clear()self.driver.find_element(By.CSS_SELECTOR, "#submit").click()# 是否提示text = self.driver.find_element(By.CSS_SELECTOR, "#signUpForm > div > div:nth-child(3) > div").textassert text == "昵称不能为空"Lunta.getScreenShot()# 注册失败(密码为空)self.driver.find_element(By.CSS_SELECTOR, "#nickname").send_keys("zhangs")self.driver.find_element(By.CSS_SELECTOR, "#password").clear()self.driver.find_element(By.CSS_SELECTOR, "#submit").click()time.sleep(2)# 是否提示text = self.driver.find_element(By.CSS_SELECTOR, "#signUpForm > div > div:nth-child(4) > div").textassert text == "密码不能为空"Lunta.getScreenShot()# 注册失败(确认密码错误)self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("1234")self.driver.find_element(By.CSS_SELECTOR, "#passwordRepeat").send_keys("12345")self.driver.find_element(By.CSS_SELECTOR, "#submit").click()text=self.driver.find_element(By.CSS_SELECTOR,"#signUpForm > div > div:nth-child(5) > div > div").textassert text=="请检查确认密码"#未点击同意self.driver.find_element(By.CSS_SELECTOR, "#policy").click()# 是否弹窗提示self.driver.find_element(By.CSS_SELECTOR, "body > div.jq-toast-wrap.bottom-right > div")Lunta.getScreenShot()self.driver.back()

4.3.3主页测试

1.click点击发帖子内容
2.send_keys输入标题
3.send_keys输入内容(编辑框外置无法完成交互)
4.Action链模拟点击(click无法点击)

import timefrom selenium.webdriver import ActionChains
from selenium.webdriver.common.by import Byfrom common.untils import Luntaclass LunTahome():driver=""url=""def __init__(self):# 登陆状态urlself.driver=Lunta.driverself.url="http://127.0.0.1:9580/index.html"self.driver.get(self.url)def LTPuTest(self):self.driver.implicitly_wait(5)#点击发布帖子self.driver.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.driver.find_element(By.CSS_SELECTOR,"#article_post_borad").click()#编辑框外置无法完成交互# 输入标题,若能交互则完成以下命令# self.driver.find_element(By.CSS_SELECTOR, "#article_post_title").send_keys("如何年薪百万")#self.driver.find_element(By.CSS_SELECTOR,"article_post_submit").click()# # Action链模拟点击# element = self.driver.find_element(By.XPATH, '//*[@id="article_post_submit"]')# ActionChains(self.driver).move_to_element(element).click().perform()# # 提示帖子内容不能为空# self.driver.find_element(By.CSS_SELECTOR, "body > div.jq-toast-wrap.bottom-right > div")# Lunta.getScreenShot()#输入标题self.driver.find_element(By.CSS_SELECTOR,"#article_post_title").send_keys("如何年薪百万")#Action链模拟点击element=self.driver.find_element(By.XPATH,'//*[@id="article_post_submit"]')ActionChains(self.driver).move_to_element(element).click().perform()#提示帖子内容不能为空self.driver.find_element(By.CSS_SELECTOR,"body > div.jq-toast-wrap.bottom-right > div")Lunta.getScreenShot()# 不输入标题self.driver.find_element(By.CSS_SELECTOR,"#article_post_title").clear()# Action链模拟点击element = self.driver.find_element(By.XPATH, '//*[@id="article_post_submit"]')ActionChains(self.driver).move_to_element(element).click().perform()# 提示输入标题不能为空self.driver.find_element(By.CSS_SELECTOR, "body > div.jq-toast-wrap.bottom-right > div")Lunta.getScreenShot()self.driver.back()

4.3.4帖子编辑

  • click点击发帖子>私信>send_keys输入内容>click点击回复>find_element搜索"回复成功弹窗">click点击回复>send_keys输入内容>click点击回复>find_element搜索“回复成功弹窗”>click点击点赞
import timefrom selenium.webdriver.common.by import Byfrom common.untils import Luntaclass LunTaser:driver=""url=""def __init__(self):self.url="http://127.0.0.1:9580/index.html"self.driver=Lunta.driverself.driver.get(self.url)#搜索def LTaser(self):self.driver.implicitly_wait(5)self.driver.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("1234")#点击搜索self.driver.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").click()#搜索第一篇文章time.sleep(3)text=self.driver.find_element(By.CSS_SELECTOR,"#artical-items-body > div:nth-child(1) > div > div.col > div.text-truncate > a > strong").textLunta.getScreenShot()#断言是否搜索成功#assert text=="1234"#私信def LTiss(self):self.driver.implicitly_wait(5)Lunta.getScreenShot()self.driver.find_element(By.CSS_SELECTOR,"#artical-items-body > div:nth-child(1) > div > div.col > div.text-truncate > a > strong").click()self.driver.find_element(By.CSS_SELECTOR,"#btn_details_send_message").click()self.driver.find_element(By.CSS_SELECTOR,"#index_message_receive_content").send_keys("上转转回收了吧")self.driver.find_element(By.CSS_SELECTOR,"#btn_index_send_message").click()Lunta.getScreenShot()#是否发布成功弹窗self.driver.find_element(By.CSS_SELECTOR,"body > div.jq-toast-wrap.bottom-right > div")Lunta.getScreenShot()#回复def LTreply(self):self.driver.implicitly_wait(5)time.sleep(5)self.driver.find_element(By.CSS_SELECTOR,"#artical-items-body > div:nth-child(1) > div > div.col > div.text-truncate > a > strong").click()self.driver.find_element(By.CSS_SELECTOR,"#article_details_reply > div.CodeMirror.cm-s-default.CodeMirror-wrap.CodeMirror-empty > div.CodeMirror-scroll").send_keys("哇哈哈")self.driver.find_element(By.CSS_SELECTOR,"#details_btn_article_reply > span").click()#内容为空无法发送Lunta.getScreenShot()#提示请输入内容self.driver.find_element(By.CSS_SELECTOR,"body > div.jq-toast-wrap.bottom-right > div")#点赞def LTlike(self):self.driver.implicitly_wait(5)self.driver.find_element(By.CSS_SELECTOR,"#artical-items-body > div:nth-child(1) > div > div.col > div.text-truncate > a > strong").click()self.driver.find_element(By.CSS_SELECTOR,"#details_btn_like_count").click()#提示点赞成功self.driver.find_element(By.CSS_SELECTOR,"body > div.jq-toast-wrap.bottom-right > div > h2")time.sleep(1)Lunta.getScreenShot()

4.3.5运行主代码

from test import LunTaLgoin
from test import LunTahome
from test import LunTareg
from test import LunTaserif __name__ == '__main__':# 注册失败LunTareg.LunTareg().LTrefaii()# 注册成功LunTareg.LunTareg().LTreg()#登陆失败LunTaLgoin.LunTaLgoin().LTFailTest()#登陆成功LunTaLgoin.LunTaLgoin().LTLoginTest()#主页测试LunTahome.LunTahome().LTPuTest()# 帖子测试LunTaser.LunTaser().LTaser()LunTaser.LunTaser().LTiss()LunTaser.LunTaser().LTreply()LunTaser.LunTaser().LTlike()

五、BUG分析

  1. 搜索框输入内容无法点击搜索

在这里插入图片描述

  1. 主页板块内容显示不完全

在这里插入图片描述

  1. 昵称、邮箱地址、电话号码、个人简介无法修改

在这里插入图片描述
在这里插入图片描述

六、测试总结

本次论坛系统测试旨在全面验证系统功能的完整性、稳定性及用户体验,确保系统能够满足用户在信息交流、内容发布等方面的需求。测试范围涵盖了前台用户操作功能以及后台管理功能,采用了多种测试方法,包括功能测试、性能测试、兼容性测试等。

相关文章:

论坛系统测试报告

目录 一、项目背景二、论坛系统测试用例思维导图三、论坛系统测试3.1界面测试3.2登陆测试3.3主页测试3.4个人中心测试 四、自动化测试脚本4.1配置驱动4.2创建浏览器类4.3功能测试4.3.1登陆测试4.3.2注册测试4.3.3主页测试4.3.4帖子编辑4.3.5运行主代码 五、BUG分析六、测试总结…...

算法比赛中处理输入和输出

在算法比赛中,不推荐使用 Scanner 和 System.out.println()。Scanner 线程安全,有大量同步操作,读取输入时每次都要解析数据类型,处理大数据量时性能开销大、效率低,易使程序超时间限制。System.out.println() 每次调用…...

llama.cpp: GGUF格式及模型量化参数介绍

GGUF格式介绍 GGUF(GPT-Generated Unified Format)是推理框架llama.cpp 中使用的一种专为大语言模型设计的二进制文件格式,旨在实现模型的快速加载和保存,同时易于读取。GGUF格式的特点: 单文件部署:模型…...

PGlite:浏览器中运行的PostgreSQL

PGlite 是一款基于 WebAssembly(WASM)构建的轻量级 PostgreSQL 数据库引擎,旨在简化开发者在浏览器、Node.js、Bun 或 Deno 环境中运行 PostgreSQL。PGlite 无需复杂的安装或配置,特别适合开发测试、本地化应用及快速原型设计。 一…...

【C++】vector(上):vector的常用接口介绍

文章目录 前言一、vector的介绍二、vector的常用接口介绍1.vector类对象的常见构造2.vector iterator 的使用3.vector类对象的容量操作3.1 size、capacity 和 empty的使用3.2 reserve的使用3.3 resize的使用 4.vector类对象的访问(包含data:返回底层数组…...

【算法】二分查找(上)

目录 一、写好二分查找的四个步骤 二、在排序数组中查找元素的第一个和最后一个位置 三、搜索插入位置 四、x的平方根 通过上篇文章【手撕二分查找】,我们知道了二分查找的【四要素】:初始值、循环条件、mid的计算方式、左右边界更新语句。 循环条件…...

【人工智能】GPT-4 vs DeepSeek-R1:谁主导了2025年的AI技术竞争?

前言 2025年,人工智能技术将迎来更加激烈的竞争。随着OpenAI的GPT-4和中国初创公司DeepSeek的DeepSeek-R1在全球范围内崭露头角,AI技术的竞争格局开始发生变化。这篇文章将详细对比这两款AI模型,从技术背景、应用领域、性能、成本效益等多个方…...

linux nginx 安装后,发现SSL模块未安装,如何处理?

?? 主页: ?? 感谢各位大佬 点赞?? 收藏 留言?? 加关注! ?? 收录于专栏:运维工程师 文章目录 前言SSL模块安装 前言 nginx 安装后,发现SSL模块未安装,如果不需要配置SSL域名,就无关紧要。但是很多时候客户后…...

蓝桥杯 - 每日打卡(类斐波那契循环数)

题目: 解题思路: 假设输入数值为number 分析题目,如果想要解决这个问题,我们需要实现两个方法,第一个检查number是否是类斐波那契,第二个是模拟1e7 - 0的过程,因为是求最大的,那么我们从1e7开始…...

深入探索C++17文件系统库:std::filesystem全面解析

前言 在C编程中,文件系统操作是许多应用程序的基础功能之一。无论是读写文件、创建目录,还是遍历文件系统,文件系统操作几乎无处不在。然而,在C17之前,标准库并没有提供一个统一、高效且易用的文件系统操作接口。开发…...

LLM | 论文精读 | GIS Copilot : 面向空间分析的自主GIS代理

论文标题:GIS Copilot: Towards an Autonomous GIS Agent for Spatial Analysis 作者:Temitope Akinboyewa,Zhenlong Li,Huan Ning,M. Naser Lessani等 来源:arXiv DOI:10.48550/arXiv.2411.…...

Unity 适用Canvas 为任一渲染模式的UI 拖拽

RectTransformUtility-ScreenPointToWorldPointInRectangle - Unity 脚本 API 将一个屏幕空间点转换为世界空间中位于给定RectTransform 平面上的一个位置。 实现 获取平面位置。 parentRT transform.parent as RectTransform; 继承IPointerDownHandler 和IDragHandler …...

基于遗传算法的无人机三维路径规划仿真步骤详解

基于遗传算法的无人机三维路径规划仿真步骤详解 一、问题定义 目标:在三维空间内,寻找从起点到终点的最优路径,需满足: 避障:避开所有障碍物。路径最短:总飞行距离尽可能短。平滑性:转折角度不宜过大,降低机动能耗。输入: 三维地图(含障碍物,如立方体、圆柱体)。起…...

windows下使用Hyper+wsl实现ubuntu下git的平替

文章目录 前言一、安装Hyper、wsl1. 安装Hyper2. 安装wsl 二、配置Hyper三、安装并使用git总结 前言 众所周知,Ubuntu下安装git只需执行sudo apt install git即可使用默认终端拉取代码,但是Windows上使用git既没有linux便捷,又没有MacOS优雅…...

基于Java+SpringCloud+Vue的前后端分离的房产销售平台

基于JavaSpringCloudVue的前后端分离的房产销售平台 前言 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN[新星计划]导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末附源码下载链接&#x…...

以影像技术重构智能座舱体验,开启驾乘互动新纪元

在汽车智能化浪潮席卷全球的今天,座舱体验早已突破传统驾驶功能的边界,成为车企竞争的核心赛道。美摄科技凭借其在图像处理与AI算法领域的深厚积累,推出全链路智能汽车图像及视频处理方案,以创新技术重新定义车载影像系统&#xf…...

deepseek在pycharm 中的配置和简单应用

对于最常用的调试python脚本开发环境pycharm,如何接入deepseek是我们窥探ai代码编写的第一步,熟悉起来总没坏处。 1、官网安装pycharm社区版(免费),如果需要安装专业版,需要另外找破解码。 2、安装Ollama…...

LLM大型语言模型(一)

1. 什么是 LLM? LLM(大型语言模型)是一种神经网络,专门用于理解、生成并对人类文本作出响应。这些模型是深度神经网络,通常训练于海量文本数据上,有时甚至覆盖了整个互联网的公开文本。 LLM 中的 “大” …...

尚庭公寓项目记录

数据库准备 保留图像时,保存图像地址就可以数据表不是越多越好,可以用中间表来实现俩个表之间的联立这样方便查数据但是却带来性能问题而减少表的jion但是提高性能,以冗余来换去性能采用MySQL,InnoDB存储引擎物理删除和逻辑删除逻…...

飞算JavaAI编程工具集成到idea中

AI插件介绍 飞算AI的插件下载地址,里边也有安装步骤: JavaAI 以上图是不是看着很牛的样子,一下成为高手确实说的太夸张了点, 一键生成后端JavaWeb项目还是挺方便的。 飞算JavaAI插件安装 Idea->>file->>setting-&…...

基础测试工具使用经验

背景 vtune,perf, nsight system等基础测试工具,都是用过的,但是没有记录,都逐渐忘了。所以写这篇博客总结记录一下,只要以后发现新的用法,就记得来编辑补充一下 perf 比较基础的用法: 先改这…...

Mac软件卸载指南,简单易懂!

刚和Adobe分手,它却总在Library里给你写"回忆录"?卸载的Final Cut Pro像电子幽灵般阴魂不散?总是会有残留文件,别慌!这份Mac软件卸载指南,将用最硬核的方式教你"数字分手术"&#xff0…...

【配置 YOLOX 用于按目录分类的图片数据集】

现在的图标点选越来越多,如何一步解决,采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集(每个目录代表一个类别,目录下是该类别的所有图片),你需要进行以下配置步骤&#x…...

HTML前端开发:JavaScript 常用事件详解

作为前端开发的核心,JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例: 1. onclick - 点击事件 当元素被单击时触发(左键点击) button.onclick function() {alert("按钮被点击了!&…...

Linux --进程控制

本文从以下五个方面来初步认识进程控制: 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程,创建出来的进程就是子进程,原来的进程为父进程。…...

七、数据库的完整性

七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...

C++课设:简易日历程序(支持传统节假日 + 二十四节气 + 个人纪念日管理)

名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏介绍:《编程项目实战》 目录 一、为什么要开发一个日历程序?1. 深入理解时间算法2. 练习面向对象设计3. 学习数据结构应用二、核心算法深度解析…...

uniapp 字符包含的相关方法

在uniapp中,如果你想检查一个字符串是否包含另一个子字符串,你可以使用JavaScript中的includes()方法或者indexOf()方法。这两种方法都可以达到目的,但它们在处理方式和返回值上有所不同。 使用includes()方法 includes()方法用于判断一个字…...

BLEU评分:机器翻译质量评估的黄金标准

BLEU评分:机器翻译质量评估的黄金标准 1. 引言 在自然语言处理(NLP)领域,衡量一个机器翻译模型的性能至关重要。BLEU (Bilingual Evaluation Understudy) 作为一种自动化评估指标,自2002年由IBM的Kishore Papineni等人提出以来,…...

pycharm 设置环境出错

pycharm 设置环境出错 pycharm 新建项目,设置虚拟环境,出错 pycharm 出错 Cannot open Local Failed to start [powershell.exe, -NoExit, -ExecutionPolicy, Bypass, -File, C:\Program Files\JetBrains\PyCharm 2024.1.3\plugins\terminal\shell-int…...