《AI大模型趣味实战》构建基于Flask和Ollama的AI助手聊天网站:分布式架构与ngrok内网穿透实现
构建基于Flask和Ollama的AI助手聊天网站:分布式架构与ngrok内网穿透实现
引言
随着AI技术的快速发展,构建自己的AI助手聊天网站变得越来越流行。本研究报告将详细介绍如何通过两台电脑构建一个完整的AI聊天系统,其中一台作为WEB服务器运行Flask框架提供网页界面,另一台作为AI计算服务器部署Ollama提供大模型推理能力。两台电脑通过ngrok实现内网穿透,实现前后端分离架构,前端渲染和AI计算在不同的设备上运行。本报告将提供从环境搭建到代码实现的完整解决方案。
技术架构概述
系统架构设计
我们的AI聊天网站采用分布式架构设计,主要包含两个核心服务器:
- WEB服务器:运行Flask框架,负责提供网页界面渲染和用户交互
- AI计算服务器:部署Ollama,负责提供大模型生成和推理能力
这种架构设计的优势在于:
- 计算资源分离:将计算密集型的AI推理从WEB服务器中分离出来,减轻WEB服务器负担
- 可扩展性:可以独立扩展WEB服务器和AI计算服务器的资源
- 性能优化:AI计算可以在专用服务器上运行,提供更好的响应性能
通信架构设计
两台电脑通过ngrok实现内网穿透,建立安全的通信通道。ngrok在公共端点与本地运行的Web服务器之间建立一个安全的通道,使得外部用户可以访问内网中的服务。
环境搭建与配置
ngrok内网穿透配置
ngrok是一款强大的内网穿透工具,它允许用户将本地的服务器、服务或设备暴露到公共互联网上,而无需复杂的端口转发或动态DNS配置。以下是ngrok的基本配置步骤:
ngrok下载与安装
- 访问ngrok官方下载页面获取对应系统的安装包:
- 官方下载链接:https://download.ngrok.com/
- 根据您的操作系统选择合适的版本下载
- 解压下载的压缩包,将ngrok可执行文件放置在系统PATH目录中,或者将其添加到环境变量中以便全局访问[35]。
ngrok账户注册与认证
- 访问ngrok官网注册账户:
- 官网地址:https://ngrok.com/
- 使用谷歌邮箱或GitHub账户登录,或者注册新账户[36]
- 获取认证令牌(authtoken):
- 登录后,在仪表盘页面会显示您的authtoken
- authtoken是全局唯一的认证令牌,用于配置本地的ngrok客户端[30]
- 配置authtoken:
- 在命令行中输入以下命令设置认证令牌:
ngrok authtoken YOUR_AUTH_TOKEN
- 这一步是将认证令牌配置到ngrok中,以便ngrok在运行时能够连接到您的账户[33]
- 在命令行中输入以下命令设置认证令牌:
启动ngrok服务
配置完成后,可以使用以下命令启动ngrok服务,将本地服务映射到外部网络:
ngrok http 端口号
例如,要将本地的8080端口映射到外部网络,可以执行:
ngrok http 8080
执行后,ngrok会提供一个外部可访问的URL,例如:https://随机子域名.ngrok.io,通过这个URL,外部用户可以访问到您本地的8080端口的服务[31]。
Flask WEB服务器环境配置
Flask是一个轻量级的Python Web框架,适合构建AI聊天网站的前端界面。以下是Flask环境的基本配置步骤:
- 安装Python:确保系统上已安装Python,推荐使用Python 3.8或更高版本。
- 安装Flask:
pip install flask
- 创建基本的Flask应用结构:
project/ ├── app/ │ ├── __init__.py │ ├── routes.py │ ├── templates/ │ │ ├── index.html │ │ └── chat.html │ └── static/ │ ├── css/ │ │ └── style.css │ └── js/ │ └── chat.js ├── requirements.txt └── run.py
- 在
requirements.txt
中记录项目依赖:Flask==2.0.1 requests==2.26.0
- 安装项目依赖:
pip install -r requirements.txt
Ollama AI计算服务器配置
Ollama是一个基于Go语言的本地大语言模型运行框架,类Docker产品,支持上传大语言模型并提供推理服务。以下是Ollama的基本配置步骤:
- 下载并安装Ollama:
- 访问Ollama的官方GitHub页面下载适合系统的版本
- 安装完成后,确保ollama命令可以全局访问[49]
- 拉取大语言模型镜像:
或者ollama pull deepseek-r1
ollama pull llama3
- 运行Ollama服务:
默认情况下,Ollama会在localhost:11434上提供API服务[46]ollama serve
代码实现方案
Flask WEB服务器代码实现
以下是Flask WEB服务器的完整代码实现方案,提供聊天界面渲染和与Ollama服务器的通信功能:
routes.py
from flask import Blueprint, render_template, request, jsonify
import requests
# 定义蓝图
main = Blueprint('main', __name__)
# Ollama服务器地址
OLLAMA_SERVER = "http://localhost:11434"
@main.route('/')
def index():return render_template('index.html')
@main.route('/chat')
def chat():return render_template('chat.html')
@main.route('/api/generate', methods=['POST'])
def generate():data = request.jsonprompt = data.get('prompt', '')try:# 调用Ollama的generate接口response = requests.post(f"{OLLAMA_SERVER}/api/generate",json={"model": "deepseek-r1","prompt": prompt,"temperature": 0.7,"max_tokens": 1024})if response.status_code == 200:result = response.json()return jsonify({"success": True,"response": result["response"]})else:return jsonify({"success": False,"error": f"API调用失败,状态码:{response.status_code}"})except Exception as e:return jsonify({"success": False,"error": f"API调用异常:{str(e)}"})
run.py
from flask import Flask
from app.main import main
import logging
# 配置日志
logging.basicConfig(level=logging.INFO)
# 创建Flask应用
app = Flask(__name__)
app.register_blueprint(main)
if __name__ == '__main__':app.run(host='0.0.0.0', port=5000)
AI计算服务器代码实现
AI计算服务器主要负责运行Ollama服务,提供大模型生成和推理能力。以下是AI计算服务器的配置和使用方法:
Ollama服务启动脚本
#!/bin/bash
# 启动Ollama服务,指定端口和模型路径
ollama serve --listen :11434 --model-dir /path/to/models
Ollama API使用示例
import requests
def call_ollama_generate(prompt):try:response = requests.post("http://localhost:11434/api/generate",json={"model": "deepseek-r1","prompt": prompt,"temperature": 0.7,"max_tokens": 1024})if response.status_code == 200:return response.json()["response"]else:return f"API调用失败,状态码:{response.status_code}"except Exception as e:return f"API调用异常:{str(e)}"
前端页面代码实现
以下是前端页面的代码实现方案,提供用户交互界面:
templates/index.html
<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>AI助手聊天网站</title><link rel="stylesheet" href="{{ url_for('static', filename='css/style.css') }}">
</head>
<body><div class="container"><h1>AI助手聊天网站</h1><p>欢迎使用AI助手聊天网站,点击下方按钮开始聊天</p><a href="{{ url_for('main.chat') }}" class="btn">开始聊天</a></div>
</body>
</html>
templates/chat.html
<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>AI助手聊天</title><link rel="stylesheet" href="{{ url_for('static', filename='css/style.css') }}">
</head>
<body><div class="container"><h1>AI助手聊天</h1><div id="chat-container"><div id="chat-messages"></div><input type="text" id="user-input" placeholder="请输入您的消息..."><button onclick="sendChat()">发送</button></div></div><script src="{{ url_for('static', filename='js/chat.js') }}"></script>
</body>
</html>
static/js/chat.js
function sendChat() {const userInput = document.getElementById('user-input');const messagesDiv = document.getElementById('chat-messages');// 获取用户输入的消息const userMessage = userInput.value.trim();if (!userMessage) {alert('请输入消息内容');return;}// 清空输入框userInput.value = '';// 添加用户消息到聊天记录const userDiv = document.createElement('div');userDiv.className = 'user-message';userDiv.textContent = userMessage;messagesDiv.appendChild(userDiv);// 发送API请求fetch('/api/generate', {method: 'POST',headers: {'Content-Type': 'application/json',},body: JSON.stringify({ prompt: userMessage })}).then(response => {if (!response.ok) {throw new Error('网络请求失败');}return response.json();}).then(data => {if (data.success) {const aiDiv = document.createElement('div');aiDiv.className = 'ai-message';aiDiv.textContent = data.response;messagesDiv.appendChild(aiDiv);} else {alert('AI响应失败: ' + data.error);}}).catch(error => {alert('AI响应失败: ' + error.message);});
}
系统部署与运行
环境准备
- 准备两台电脑,分别作为WEB服务器和AI计算服务器
- 确保两台电脑处于同一局域网中,或者通过VPN等技术实现网络连通
- 在AI计算服务器上安装并配置Ollama服务
- 在WEB服务器上安装并配置Flask应用
系统启动流程
- 启动Ollama服务:
- 在AI计算服务器上执行Ollama服务启动脚本
- 确保Ollama服务正常运行,监听11434端口
- 配置ngrok内网穿透:
- 在WEB服务器上安装ngrok并配置认证令牌
- 使用ngrok映射Flask应用的端口:
ngrok http 5000
- 记录ngrok提供的外部访问URL
- 启动Flask应用:
- 在WEB服务器上执行run.py启动Flask应用
- 确保Flask应用能够正常访问,并能通过ngrok提供的外部URL访问
访问与使用
- 使用浏览器访问ngrok提供的外部URL,进入AI助手聊天网站
- 点击"开始聊天"按钮,进入聊天界面
- 在输入框中输入消息,点击"发送"按钮与AI助手进行交流
- 系统会显示用户消息和AI助手的响应,实现完整的聊天体验
系统优化与扩展
性能优化
- 缓存机制:实现请求缓存,减少重复计算
- 异步处理:使用异步处理技术,提高并发处理能力
- 负载均衡:添加负载均衡,提高系统稳定性
- 数据库优化:优化数据库查询,提高数据访问效率
功能扩展
- 多模型支持:支持多种大语言模型,用户可以选择不同的模型进行聊天
- 聊天记录存储:实现聊天记录的存储和查询功能
- 用户认证:添加用户认证功能,实现个性化聊天体验
- 多语言支持:支持多种语言的聊天交互
- 文件上传:支持用户上传文件,AI可以处理和分析文件内容
安全考虑
- 认证与授权:实现用户认证和授权机制,保护用户数据
- 数据加密:对敏感数据进行加密存储和传输
- 输入验证:对用户输入进行验证,防止SQL注入等安全漏洞
- API安全:限制API的访问频率,防止DDoS攻击
- 日志记录:记录系统日志,及时发现和处理安全问题
总结
本研究报告详细介绍了如何通过两台电脑构建一个完整的AI助手聊天网站,采用分布式架构设计,将WEB服务器和AI计算服务器分离,通过ngrok实现内网穿透,提供安全可靠的通信通道。我们提供了从环境搭建、代码实现到系统部署的完整解决方案,帮助开发者快速构建自己的AI聊天网站。
通过这种架构设计,我们可以实现计算资源的分离,提高系统的性能和可扩展性。Flask作为轻量级的Web框架,提供了高效的前端渲染能力;Ollama作为本地大语言模型运行框架,提供了强大的AI计算能力。两者的结合,为我们构建高性能的AI聊天网站提供了坚实的基础。
希望本研究报告能够为开发者提供有价值的参考,帮助他们快速入门AI聊天网站的开发和部署。随着技术的不断发展,我们可以进一步优化和扩展这个系统,实现更多功能和更好的用户体验。
参考文献
[30] 笔记ngrok 内网穿透及其身份认证authtoken 配置原创 - CSDN博客. https://blog.csdn.net/yong1585855343/article/details/112061049.
[31] ngrok用法(个人记录) 原创 - CSDN博客. https://blog.csdn.net/xulianguo528/article/details/129923823.
[33] termux 安装ngrok 教程-贝锐花生壳官网. https://hsk.oray.com/news/38805.html.
[35] Download ngrok. https://download.ngrok.com/.
[36] ngrok | API Gateway, Kubernetes Networking + Secure Tunnels. https://ngrok.com/.
[46] 本地LLM管理、WebUI对话、Python/Java客户端API应用- 老牛啊. https://www.cnblogs.com/obullxl/p/18295202/NTopic2024071001.
[49] Ollama本地模型部署+API接口调试超详细指南 - 阿里云开发者社区. https://developer.aliyun.com/article/1656872.
相关文章:
《AI大模型趣味实战》构建基于Flask和Ollama的AI助手聊天网站:分布式架构与ngrok内网穿透实现
构建基于Flask和Ollama的AI助手聊天网站:分布式架构与ngrok内网穿透实现 引言 随着AI技术的快速发展,构建自己的AI助手聊天网站变得越来越流行。本研究报告将详细介绍如何通过两台电脑构建一个完整的AI聊天系统,其中一台作为WEB服务器运行F…...
kubernets集群的安装-node节点安装-(简单可用)-超详细
一、kubernetes 1、简介 kubernetes,简称K8s(库伯内特),是用8代替名字中间的8个字符“ubernete”而成的缩写 云计算的三种主要服务模式——基础设施即服务(IaaS)、平台即服务(PaaS࿰…...
【Linux内核设计与实现】第三章——进程管理04
文章目录 8. exit() 进程退出8.1. exit() 系统调用的定义8.2. do_exit() 函数8.2.0. do_exit() 的参数和返回值8.2.1. 检查和同步线程组退出8.2.2. 清理与调试相关的资源8.2.3. 取消 I/O 和信号处理8.2.4. 检查线程组是否已终止8.2.5. 释放系统资源8.2.6. 释放线程和调度相关资…...
Golang | 迭代器模式
迭代器模式(Iterator Pattern)是一种行为型设计模式,它提供了一种顺序访问聚合对象(如列表、树等集合结构)中元素的方法,而无需暴露其底层实现细节。通过将遍历逻辑与集合本身解耦,迭代器模式使…...
美颜SDK动态贴纸实战教程:从选型、开发到上线的完整流程
在直播、短视频、社交娱乐全面崛起的当下,美颜SDK早已不再局限于“磨皮瘦脸”,而是逐步迈向更智能、更富互动体验的方向发展。动态贴纸功能,作为提升用户参与感和内容趣味性的关键手段,正在被越来越多的平台采纳并深度定制。本文将…...
ArkTS中的空安全:全面解析与实践
# ArkTS中的空安全:全面解析与实践 在ArkTS编程领域,空安全是一个极为关键的特性,它在很大程度上影响着代码的稳定性和可靠性。今天,我们就深入探究一下ArkTS中的空安全机制,看看它是如何保障我们的代码质量的。 ## A…...
C语言基础语法详解:从入门到掌握
C 基础语法 C 语言是一种通用的编程语言,广泛应用于系统编程、嵌入式开发和高性能计算等领域。 C 语言具有高效、灵活、可移植性强等特点,是许多其他编程语言的基础。 在 C 语言中,令牌(Token)是程序的基本组成单位…...
如何把两个视频合并成一个视频?无需视频编辑器即可搞定视频合并
在日常生活中,我们经常需要将多个视频片段合并成一个完整的视频,例如制作旅行记录、剪辑教学视频或拼接短视频素材。简鹿视频格式转换器是一款功能强大的工具,不仅可以进行视频格式转换,还支持视频合并功能。以下是使用简鹿视频格…...
Servlet小结
视频链接:黑马servlet视频全套视频教程,快速入门servlet原理servlet实战 什么是Servlet? 菜鸟教程:Java Servlet servlet: server applet Servlet是一个运行在Web服务器(如Tomcat、Jetty)或应用…...
C语言面试高频题——define 和typedef 的区别?
1. 基本概念 (1) #define 定义:#define 是预处理指令,用于定义宏。作用:在编译之前进行文本替换。语法:#define 宏名 替换内容示例:#define PI 3.14159 #define SQUARE(x) ((x) * (x))(2) typedef 定义:…...
计算机组成原理:指令系统
计算机组成原理:指令集系统 指令集体系结构(ISA)ISA定义ISA包含的内容举个栗子指令的基本组成(操作码+地址码)指令分类:地址码的个数定长操作码变长操作码变长操作码的原则变长操作码的设计指令寻址寻址方式的目的寻址方式分类有效地址直接在指令中给出有效地址间接给出有效地…...
自动清空 maven 项目临时文件,vue 的 node_modules 文件
echo off setlocal enabledelayedexpansion :: vue 的 node_modules 太大 :: maven 打包后的 target 文件也很大, :: 有些项目日志文件也很大,导致磁盘空间不足了, :: 所以写了个脚本,只要配置一下各项目目录, :: 双击…...
服务网格助力云原生后端系统升级:原理、实践与案例剖析
📝个人主页🌹:慌ZHANG-CSDN博客 🌹🌹期待您的关注 🌹🌹 一、引言:微服务的“通信焦虑”与服务网格的出现 云原生架构的兴起推动了微服务的大规模落地,系统拆分为成百上千个小服务,这些服务之间需要频繁通信。然而,通信带来的问题也开始显现: 如何确保服务间…...
基于DrissionPage的表情包爬虫实现与解析(含源码)
目录 编辑 一、环境配置与技术选型 1.1 环境要求 1.2 DrissionPage优势 二、爬虫实现代码 三、代码解析 3.1 类结构设计 3.2 目录创建方法 3.3 图片链接获取 3.4 图片下载方法 四、技术升级对比 4.1 代码复杂度对比 4.2 性能测试数据 五、扩展优化建议 5.1 并…...
Spring Cloud Gateway 如何将请求分发到各个服务
前言 在微服务架构中,API 网关(API Gateway)扮演着非常重要的角色。它负责接收客户端请求,并根据预定义的规则将请求路由到对应的后端服务。Spring Cloud Gateway 是 Spring 官方推出的一款高性能网关,支持动态路由、…...
【深度强化学习 DRL 快速实践】Value-based 方法总结
强化学习中的 Value-based 方法总结 在强化学习(Reinforcement Learning, RL)中,Value-based 方法主要是学习一个价值函数(Value Function),然后基于价值函数来决策。常见的 Value-based 方法包括…...
【计算机视觉】CV实战项目 - 基于YOLOv5的人脸检测与关键点定位系统深度解析
基于YOLOv5的人脸检测与关键点定位系统深度解析 1. 技术背景与项目意义传统方案的局限性YOLOv5多任务方案的优势 2. 核心算法原理网络架构改进关键点回归分支损失函数设计 3. 实战指南:从环境搭建到模型应用环境配置数据准备数据格式要求数据目录结构 模型训练配置文…...
git版本回退 | 远程仓库的回退 (附实战Demo)
目录 前言1. 基本知识2. Demo3. 彩蛋 前言 🤟 找工作,来万码优才:👉 #小程序://万码优才/r6rqmzDaXpYkJZF 爬虫神器,无代码爬取,就来:bright.cn 本身暂存区有多个文件,但手快了&…...
【KWDB 创作者计划】_深度学习篇---数据获取
文章目录 前言一、公开数据集资源库1. 综合型数据集平台Kaggle Datasets (https://www.kaggle.com/datasets)Google Dataset Search (https://datasetsearch.research.google.com)UCI Machine Learning Repository (https://archive.ics.uci.edu/ml) 2. 计算机视觉专用ImageNet…...
DeepSeek本地部署手册
版本:v1.0 适用对象:零基础开发者 一、部署前准备 1.1 硬件要求 组件最低配置推荐配置说明CPUIntel i5 8代Xeon Gold 6230需支持AVX指令集内存16GB64GB模型越大需求越高GPUNVIDIA GTX 1060 (6GB)RTX 3090 (24GB)需CUDA 11.7+存储50GB可用空间1TB NVMe SSD建议预留2倍模型大小…...
OpenCV中的SIFT特征提取
文章目录 引言一、SIFT算法概述二、OpenCV中的SIFT实现2.1 基本使用2.1.1 导入库2.1.2 图片预处理2.1.3 创建SIFT检测器2.1.4 检测关键点并计算描述符2.1.5 检测关键点并计算描述符并对关键点可视化2.1.6 印关键点和描述符的形状信息 2.2 参数调优 三、SIFT的优缺点分析3.1 优点…...
Kubernetes in action-初相识
初相识Kubernetes 1、构建、运行以及共享镜像1.1 运行镜像1.2 构建镜像1.3 推送镜像 2、Kubernetes初相识2.1 介绍Pod2.2 从构建到运行整体流程2.3 kubectl命令行工具 如有侵权,请联系~ 如有错误,也欢迎批评指正~ 本篇文章大部分是…...
九、小白如何用Pygame制作一款跑酷类游戏(添加前进小动物作为动态障碍物)
九、小白如何用Pygame制作一款跑酷类游戏(添加前进小动物作为动态障碍物) 文章目录 九、小白如何用Pygame制作一款跑酷类游戏(添加前进小动物作为动态障碍物)前言一、添加小动物素材1. 在根目录的图片文件夹下新建两个目录分别存放…...
Unity3D IK解算器技术分析
前言 在Unity3D中,逆向运动学(IK Solver)是实现角色动画自然交互的核心技术之一。以下是Unity中常见的IK解算器及其特点的综合分析,结合了原生功能、第三方插件与开源方案的对比: 对惹,这里有一个游戏开发…...
7.11 Python CLI开发实战:API集成与异步处理核心技术解析
Python CLI开发实战:API集成与异步处理核心技术解析 #mermaid-svg-fXGFud0phX2N2iZj {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-fXGFud0phX2N2iZj .error-icon{fill:#552222;}#mermaid-svg-fXGFud0phX2N2iZj .…...
百度Create2025 AI开发者大会:模型与应用的未来已来
今日,2025百度AI开发者大会(Create2025)在武汉体育中心盛大开幕。这场以“模型的世界,应用的天下”为主题的盛会,不仅汇聚了李彦宏、王海峰、沈抖等百度高层及行业领袖,更以多项重磅技术发布、前沿议题探讨…...
Java实现HTML转PDF(deepSeekAi->html->pdf)
Java实现HTML转PDF,主要为了解决将ai返回的html文本数据转为PDF文件方便用户下载查看。 一、deepSeek-AI提问词 基于以上个人数据。总结个人身体信息,分析个人身体指标信息。再按一个月为维度,详细列举一个月内训练计划,维度详细至每周每天…...
区间和数量统计 之 前缀和+哈希表
文章目录 1512.好数对的数目2845.统计趣味子数组的数目1371.每个元音包含偶数次的最长子字符串 区间和的数量统计是一类十分典型的问题:记录左边,枚举右边策略前置题目:统计nums[j]nums[i]的对数进阶版本:统计子数组和%modulo k的…...
【服务器操作指南】从 Hugging Face 上下载文件 | 从某一个网址上下载文件到 Linux 服务器的指定目录
引言 在服务器操作中,下载和管理文件是常见且重要的任务。从 Hugging Face 平台获取模型资源,或从特定网址下载文件至 Linux 服务器并进行解压,都需要明确的操作步骤。本指南旨在为您提供清晰的操作流程,帮助您快速上手相关任务并…...
PyCharm 中 FREECAD 二次开发:从基础建模到深度定制
一、引言 在当今的三维建模与设计领域,FREECAD 以其开源、参数化设计的强大特性,成为众多工程师、设计师和开发者的首选工具。然而,面对日益复杂和多样化的设计需求,仅仅依靠 FREECAD 的原生功能往往难以满足。此时,二…...
C++入侵检测与网络攻防之网络嗅探以及ARP攻击
目录 1.tcpdump基本使用 2.tcpdump条件过滤 3.wireshark介绍 4.wireshark的介绍 5.tcp握手挥手分析 6.telnet服务的介绍和部署 7.复习 8.telnet服务的报文嗅探 9.网络嗅探基础 10.arp协议的解析 11.arp攻击原理以及试验环境 12.arp实验以及防御方式 1.tcpdump基本使…...
Integer[]::new方法引用
Integer[]::new 这种写法是 Java 中方法引用的一种具体应用,它遵循 Java 方法引用的语法规则。 方法引用概述 方法引用是 Java 8 引入的一种简化 Lambda 表达式的语法糖,它允许你通过方法的名称直接引用已有的方法或构造函数。方法引用可以使代码更加简…...
Pycharm(三):梯度下降法
梯度下降算法(Gradient Descent Algorithm)是深度学习中常用的更新权重的方法,它采用的贪心法的思想,每次都往函数值下降最快的方向去更新,梯度方向是增长最快的方向,负梯度方向是下降最快的方向。 一、梯…...
系统测试的技术要求
文章目录 一、系统测试的概念二、测试对象三、测试目的四、进入条件五、内容要求1、基于需求的考核要求2、基于任务的考核要求 六、测试环境 一、系统测试的概念 系统测试(System Testing),主要是对多个软件组成的系统进行的整体测试。系统测…...
升级Ubuntu 20.04 LTS到22.04 LTS
按照 Ubuntu发布周期 每2年会发布一个 "长期支持版" (LTS, Long Term Support)。具体来说,就是每2年的4月份会发布一个支持周期长达5年的稳定版本,如: 20.04 和 22.04 分别代表 2020年4月 和 2022年4月 发布的长期支持版本. 当前(2022年9月)&a…...
【神经网络与深度学习】训练集与验证集的功能解析与差异探究
引言 在深度学习模型的训练过程中,训练集和验证集是两个关键组成部分,它们在模型性能的提升和评估中扮演着不可替代的角色。通过分析这两者的区别和作用,可以帮助我们深入理解模型的学习过程和泛化能力,同时为防止过拟合及优化超…...
单精度浮点运算/定点运算下 MATLAB (VS) VIVADO
VIVADO中单精度浮点数IP核计算结果与MATLAB单精度浮点数计算结果的对比 MATLAB定点运算仿真,对比VIVADO计算的结果 目录 前言 一、VIVADO与MATLAB单精度浮点数运算结果对比 二、MATLAB定点运算仿真 总结 前言 本文介绍了怎么在MATLAB中使用单精度浮点数进行运算…...
如何让 HTML 文件嵌入另一个 HTML 文件:详解与实践
目录 一、为什么需要在HTML中嵌入其他HTML文件? 二、常用的方法概览 三、利用 1. 基本原理 2. 使用场景 3. 优缺点 4. 实践示例 5. 适用建议 四、利用JavaScript动态加载内容 1. 原理简介 2. 实现步骤 示例代码 3. 优缺点分析 4. 应用场景 5. 实践建…...
7.10 GitHub Sentinel CLI开发实战:Python构建企业级监控工具的5大核心技巧
GitHub Sentinel CLI开发实战:Python构建企业级监控工具的5大核心技巧 GitHub Sentinel Agent 用户界面设计与实现:命令行工具开发实战 关键词:命令行工具开发、Python argparse、API 集成、错误处理、测试覆盖率 设计并实现基本的命令行工具 命令行界面(CLI)是企业级工…...
将AAB转APK的两种好用方法AAB to APK Converter
文章目录 第一种方法:Unity工具转换第二种方法:Python转换参数填写 第一种方法:Unity工具转换 适用人群: 策划,程序等装Unity的人 需要安装: Unity 下载AAB-to-APK-Converter 导入unity,点…...
netcore8.0项目部署到windows服务器中(或个人windows电脑),利用nginx反向代理
1、发布netcore项目,默认即可 1.1、前提,需在appsettings添加Kestrel代理 配置如下: {"Kestrel": {"Endpoints": {"http": {"Url": "http://localhost:7022"},"Https": {&qu…...
Python数据分析案例73——基于多种异常值监测算法探查内幕交易信息
背景 之前有监督模型案例都做烂了,现在来做一下无监督的模型吧,异常检测模型。 其实这个案例主要目的是为了展示这些异常值的无监督算法怎么使用的,本文是一个无监督算法的总结大全。只是恰巧有同学需要做这个内幕交易的数据,因…...
电商数据中台架构:淘宝 API 实时采集与多源数据融合技术拆解
引言 在当今竞争激烈的电商领域,数据已成为企业决策和业务发展的核心驱动力。电商数据中台能够整合和管理企业内外部的各种数据,为业务提供有力支持。其中,淘宝 API 实时采集与多源数据融合技术是数据中台架构中的关键部分。本文将深入探讨这…...
【C语言】动态经典试题练习
前言: 在上一章节讲解了动态的常见错误,在上上章节讲解了动态内存的概念。 古人云: 习题一 请大家看下面的习题,试着分析输出结果 / 找出代码错误的地方。 #include <stdio.h>void GetMemory(char* p) {p (char*)mall…...
Memcached 主主复制架构搭建与 Keepalived 高可用实现
实验目的 掌握基于 repcached 的 Memcached 主主复制配置 实现通过 Keepalived 的 VIP 高可用机制 验证数据双向同步及故障自动切换能力 实验环境 角色IP 地址主机名虚拟 IP (VIP)主节点10.1.1.78server-a10.1.1.80备节点10.1.1.79server-b10.1.1.80 操作系统: CentOS 7 软…...
详解 Servlet 处理表单数据
Servlet 处理表单数据 1. 什么是 Servlet?2. 表单数据如何发送到 Servlet?2.1 GET 方法2.2 POST 方法 3. Servlet 如何接收表单数据?3.1 获取单个参数:getParameter()示例: 3.2 获取多个参数:getParameterV…...
八大排序——冒泡排序/归并排序
八大排序——冒泡排序/归并排序 一、冒泡排序 1.1 冒泡排序 1.2 冒泡排序优化 二、归并排序 1.1 归并排序(递归) 1.2 递归排序(非递归) 一、冒泡排序 1.1 冒泡排序 比较相邻的元素。如果第一个比第二个大,就交换…...
高等数学第三章---微分中值定理与导数的应用(3.1微分中值定理3.2洛必达法则)
3.1 微分中值定理 一、罗尔(Rolle)中值定理 1. 费马(Fermat)引理 定义: 设函数 y f ( x ) y f(x) yf(x) 满足以下条件: 在点 x 0 x_0 x0 的某邻域 U ( x 0 ) U(x_0) U(x0) 内有定义࿱…...
AI超级智能体项目教程(二)---后端项目初始化(设计knif4j接口文档的使用)
文章目录 1.选择JDK的版本和相关配置2.添加依赖信息2.1指定lombok版本信息2.2引入hutool工具类2.3了解knif4j依赖2.4引入knif4j依赖 3.contrller测试3.1完成yml文件配置3.2修改默认扫描路径3.3controller具体的内容3.4配置接口和访问路径3.5如何访问3.6调试接口3.6调试接口 1.选…...
C++面试复习日记(8)2025.4.25,malloc,free和new,delete的区别
1,malloc,free和new,delete的区别 答:malloc和free是c语言中库函数; new和delete是c的操作符; 分配内存:malloc和new 区别: malloc:需要手动计算存储空间 new&#…...