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

YOLOv8目标检测(六)_封装API接口

YOLOv8目标检测(一)_检测流程梳理:YOLOv8目标检测(一)_检测流程梳理_yolo检测流程-CSDN博客

YOLOv8目标检测(二)_准备数据集:YOLOv8目标检测(二)_准备数据集_yolov8 数据集准备-CSDN博客

YOLOv8目标检测(三)_训练模型:YOLOv8目标检测(三)_训练模型_yolo data.yaml-CSDN博客

YOLOv8目标检测(三*)_最佳超参数训练:YOLOv8目标检测(三*)_最佳超参数训练_yolo 为什么要选择yolov8m.pt进行训练-CSDN博客

YOLOv8目标检测(四)_图片推理:YOLOv8目标检测(四)_图片推理-CSDN博客

YOLOv8目标检测(五)_结果文件(run/detrct/train)详解:YOLOv8目标检测(五)_结果文件(run/detrct/train)详解_yolov8 yolov8m.pt可以训练什么-CSDN博客

YOLOv8目标检测(六)_封装API接口:YOLOv8目标检测(六)_封装API接口-CSDN博客

YOLOv8目标检测(七)_AB压力测试:YOLOv8目标检测(七)_AB压力测试-CSDN博客

在Python中将YOLOv8模型封装为API接口后,用户可以通过调用该接口上传自定义的测试图片,并获取识别结果

为什么要封装成API接口使用?

  • 模块化和可重用性:封装成API后,模型可以独立于其他代码运行,使得它更容易被其他应用或服务调用,而不需要直接依赖模型的具体实现细节。
  • 易于扩展:API接口可以方便地进行版本管理和功能扩展。如果未来需要替换或升级YOLOv8模型,可以通过修改API内部实现而不影响其他依赖该API的系统。
  • 跨平台兼容性:通过API,可以让不同平台或不同编程语言的应用访问和使用YOLOv8模型,而无需关心底层的实现细节。比如,前端应用可以通过HTTP请求访问API,得到模型的推理结果。
  • 简化部署与维护:API接口使得模型部署变得更加标准化和可管理。你可以将模型托管在服务器上,任何需要使用该模型的用户或系统都可以通过API进行交互,方便维护和监控。
  • 灵活性:API接口可以通过参数化设计,支持不同的输入输出形式,甚至可以根据请求动态调整模型的行为(如使用不同的推理参数、处理不同类型的输入等)。
  • 分离前后端:对于Web应用来说,封装成API接口可以将前端和后端分离,前端只需要通过HTTP请求和API进行交互,无需了解YOLOv8模型的具体实现。

注:笔者的情况是模型和API代码都在服务器(linux)Docker容器中,在容器中起服务,本地调用服务推理图片。

1.Python封装API

服务器中操作

app.py具体代码如下

import json
import numpy as np
from flask import Flask, request, jsonify
from loguru import logger
import base64
import cv2
from ultralytics import YOLOapp = Flask(__name__)# 只处理 base64 编码图像
def read_img_cv(base64_str):try:img_data = base64.b64decode(base64_str)img = np.frombuffer(img_data, np.uint8)return cv2.imdecode(img, cv2.IMREAD_COLOR)except Exception:return Nonedef invasion(xyxy, points):# 检查目标框中心是否在给定区域内center_x, center_y = (xyxy[0] + xyxy[2]) / 2, (xyxy[1] + xyxy[3]) / 2return any(point[0] < center_x < point[2] and point[1] < center_y < point[3] for point in points)# 设置日志记录
logger.add("./logs/{0}".format("log.log"), rotation="10 MB")# 自定义标签列表
custom_labels = {0: 'backpack',1: 'plastic bag',2: 'shoulder bag', 3: 'person',4: 'handbag',5: 'suitcase'# 根据你的标签数目和顺序调整
}# 参数设置
def set_parameters():return {'device': 'cuda', 'port': 5000}args = set_parameters()
logger.info("start load Model!")
model = YOLO('/your_path/best.pt')  # 修改为你自己的路径@app.route('/predict', methods=['POST'])
def predict():if request.method == 'POST':try:data = request.get_json()img_object = data.get('image')minScore = float(data.get('minScore', 0.45))maxScore = float(data.get('maxScore', 1.0))customerID = data.get('customerID')imageID = data.get('imageID')axisall = data.get('axis', [])# 校验置信度范围if not (0 <= minScore <= 1 and 0 <= maxScore <= 1 and minScore <= maxScore):return jsonify({'customerID': customerID, 'imageID': imageID, 'code': 1, 'msg': '置信度错误', "marks": None, "result": None})# 解码图像img0 = read_img_cv(img_object)if img0 is None:return jsonify({'customerID': customerID, 'imageID': imageID, 'code': 1, 'msg': '图片解码出错', "marks": None, "result": None})w, h = img0.shape[:2]if axisall:axisall = [[max(0, a[0]), max(0, a[1]), min(w, a[2]), min(h, a[3])] for a in axisall]det_list = []try:# 使用YOLO模型进行预测annos = model(img0, conf=minScore)annos = annos[0].boxes.data.clone().cpu().detach().tolist()if annos:for cls, *xyxy, conf in zip(np.array(annos)[:, -1], np.array(annos)[:, :-2], np.array(annos)[:, -2]):category = str(int(cls))# 映射到自定义标签custom_category = custom_labels.get(int(cls), "未知")x0, y0, x1, y1 = map(int, xyxy[0])info = {"cls": custom_category, "axis": [x0, y0, x1, y1], "score": round(conf, 2)}if axisall and not invasion(xyxy[0], axisall):continuedet_list.append(info)except Exception:return jsonify({'customerID': customerID, 'imageID': imageID, 'code': 1, 'msg': '内部错误', "marks": None, "result": None})out = {'customerID': customerID, 'imageID': imageID, 'code': 0, 'msg': 'OK', "marks": det_list, "result": bool(det_list)}logger.info(f'outputs: {out}')return jsonify(out)except Exception:return jsonify({'customerID': None, 'imageID': None, 'code': 1, 'msg': '未知错误', "marks": None, "result": None})if __name__ == "__main__":app.run(host='0.0.0.0', port=args['port'], debug=True)

2.起服务

服务器中操作

运行python app.py,成功截图如下:

3.推理

本地操作

也可以上传数据到你的服务器操作(参考https://blog.csdn.net/weixin_48870215/article/details/144425479?fromshare=blogdetail&sharetype=blogdetail&sharerId=144425479&sharerefer=PC&sharesource=weixin_48870215&sharefrom=from_link),那样需要频繁的导入导出,笔者觉得麻烦。

注:这个模型best.pt是检测人和背包的。

(1)准备测试图片

(2)请求服务器处理代码

client.py具体代码如下:

import os
import base64
import cv2
import requests
from pathlib import Path# 设置输入图片文件夹和输出文件夹
input_folder = r"D:\\Desktop/857"
output_folder = r"D:\\Desktop/857_123"
url = "<http://12.345.678.101:8888/predict>" #你的服务器ip和端口# 确保输出文件夹存在
os.makedirs(output_folder, exist_ok=True)# 类别颜色映射
class_colors = {"person": (0, 255, 0),  # 绿色"bag": (255, 0, 0),     # 蓝色"car": (0, 0, 255),     # 红色"phone": (255, 255, 0), # 黄色# 可以继续添加其他类别的颜色
}# 将图片转换为base64格式
def image_to_base64(image_path):with open(image_path, 'rb') as f:img_byte = f.read()img_b64 = base64.b64encode(img_byte)return img_b64.decode()# 从接口返回的结果画框和置信度
def draw_predictions(image, marks):for mark in marks:cls = mark["cls"]  # 获取类别x1, y1, x2, y2 = map(int, mark["axis"])  # 获取坐标score = mark["score"]  # 获取置信度label = f'{cls}: {score:.2f}'  # 标注类别和置信度# 获取类别颜色,如果没有指定颜色则使用默认颜色(白色)color = class_colors.get(cls, (255, 255, 255))# 画框cv2.rectangle(image, (x1, y1), (x2, y2), color, 5)font_scale = 0.8# 计算标签的大小label_size = cv2.getTextSize(label, cv2.FONT_HERSHEY_SIMPLEX, font_scale, 2)[0]label_x, label_y = x1, y1 - 10# 检查标签是否会超出图像或框的顶部if label_y - label_size[1] - 5 < 0:  label_y = y1 + 10  # 将标签位置调整到框的下方# 绘制背景色以便突出显示类别标签cv2.rectangle(image, (label_x, label_y - label_size[1] - 5), (label_x + label_size[0], label_y), color, -1)# 在框上方标注类别和置信度cv2.putText(image, label, (label_x, label_y - 5), cv2.FONT_HERSHEY_SIMPLEX, font_scale, (0, 0, 0), 2, cv2.LINE_AA)return image# 处理每一张图片
for image_name in os.listdir(input_folder):image_path = os.path.join(input_folder, image_name)# 跳过非图片文件if not image_name.lower().endswith(('.png', '.jpg', '.jpeg', '.bmp')):print(f"跳过非图片文件: {image_name}")continueprint(f'正在处理图片: {image_name}')try:# 读取图片并转换为base64image_base64 = image_to_base64(image_path)# 构建POST请求的JSON数据payload = {"customerID": "abc_123","imageID": image_name,"minScore": 0.35,"maxScore": 0.99,"timeStamp": "1234455","flexibleParams": "","image": image_base64}# 调用接口response = requests.post(url, json=payload, timeout=10)print("Response status code:", response.status_code)if response.status_code == 200:try:response_data = response.json()  # 尝试解析 JSON 数据print("Response JSON:", response_data)# 读取原始图片image = cv2.imread(image_path)# 获取并画出预测结果if response_data.get("marks"):image = draw_predictions(image, response_data["marks"])# 保存处理后的图片output_path = os.path.join(output_folder, image_name)cv2.imwrite(output_path, image)print(f"Processed and saved: {output_path}")except requests.exceptions.JSONDecodeError:print(f"JSON 解码失败,服务器返回内容: {response.text}")else:print(f"服务器返回错误状态码: {response.status_code}, 内容: {response.text}")except requests.exceptions.RequestException as e:print(f"请求失败: {e}")except Exception as e:print(f"处理图片时发生错误: {e}")

(3)查看结果

app.py服务器返回结果:

client返回结果:

图片返回结果:

看过这六期文章,恭喜你基本掌握了YOLOv8实战流程:数据处理、数据集制作、模型训练、API封装、调用API推理。

相关文章:

YOLOv8目标检测(六)_封装API接口

YOLOv8目标检测(一)_检测流程梳理&#xff1a;YOLOv8目标检测(一)_检测流程梳理_yolo检测流程-CSDN博客 YOLOv8目标检测(二)_准备数据集&#xff1a;YOLOv8目标检测(二)_准备数据集_yolov8 数据集准备-CSDN博客 YOLOv8目标检测(三)_训练模型&#xff1a;YOLOv8目标检测(三)_训…...

Firecrawl教程①:自动化抓取与数据转化,赋能AI应用

Firecrawl教程①:自动化抓取与数据转化,赋能AI应用 前言一、功能特点1. 支持 LLM 可处理的数据格式2. 全面抓取网站3. 强大的操作支持4. 灵活的定制选项5. 支持多种编程语言 SDK二、如何开始使用 Firecrawl第一步:获取 API 密钥第二步:官网在线工具使用第三步:安装 Firecr…...

2-2-18-17 QNX系统架构之“实时”

阅读前言 本文以QNX系统官方的文档英文原版资料为参考&#xff0c;翻译和逐句校对后&#xff0c;对QNX操作系统的相关概念进行了深度整理&#xff0c;旨在帮助想要了解QNX的读者及开发者可以快速阅读&#xff0c;而不必查看晦涩难懂的英文原文&#xff0c;这些文章将会作为一个…...

Linux下部署MySQL8.0集群 - 主从复制(一主两从)

目录 一、部署前准备 1、查看系统信息 # 查看系统版本 cat /etc/red* # 查看系统位数 getconf LONG_BIT[rootlocalhost ~]# cat /etc/red* CentOS Linux release 7.5.1804 (Core) [rootlocalhost ~]# getconf LONG_BIT 642、下载对应安装包 进入MySQL官网&#xff1a;https:…...

将HTML转换为PDF:使用Spire.Doc的详细指南

目录 引言 1. 为什么选择 Spire.Doc&#xff1f; 1.1 主要特点 1.2 适用场景 2. 准备工作 2.1 引入 Spire.Doc 依赖 2.2 禁用 SSL 证书验证 3. 实现功能 3.1 主类结构 3.2 代码解析 4. 处理图像 5. 性能优化 5.1 异步下载图像 示例代码 5.2 批量处理优化 示例代…...

HarmonyOS 实践 - 设计模式在代码中的作用

文章目录 前言设计模式概述单例模式&#xff1a;全局状态管理代码分析 策略模式&#xff1a;界面主题切换代码分析 示例测试单例模式测试策略模式测试 体验评价总结 前言 在软件开发中&#xff0c;设计模式是公认的最佳实践&#xff0c;它能帮助开发者通过模块化和规范化的代码…...

kubeadm一键部署K8S 集群架构

kubeadm一键部署K8S 集群架构(centos7) https://www.k8src.cn/ https://kubernetes.io/zh-cn/docs/home/ https://blog.csdn.net/m0_58709145/article/details/140128179 https://blog.csdn.net/jiaqijiaqi666/article/details/129745828 Kubeadm init报错[ERROR CRI]: contai…...

[NSSCTF 2022 Spring Recruit]factor

给了&#xff1a; 说n是p*q 先求一下p*q factordb.com 然后再让pq 得到&#xff1a;31207540994438423298 接着用md5加密得到falg NSSCTF{7957a92ef959998115a6bda6d992656e}...

go 中使用redis 基础用法

1、安装redis 参考链接&#xff1a;https://www.codeleading.com/article/98554130215/ 1.1 查看是否有redis yum 源 yum install redis没有可用的软件包&#xff0c;执行1.2 1.2下载fedora的epel仓库 yum install epel-release --下载fedora的epel仓库1.3启动redis s…...

git branch -r(--remotes )显示你本地仓库知道的所有 远程分支 的列表

好的&#xff0c;git branch -r 这个命令用于列出远程分支。让我详细解释一下&#xff1a; 命令&#xff1a; git branch -rdgqdgqdeMac-mini ProductAuthentication % git branch -rorigin/main作用&#xff1a; 这个命令会显示你本地仓库知道的所有 远程分支 的列表。它不…...

回归预测 | MATLAB实现CNN-BiGRU卷积神经网络结合双向门控循环单元多输入单输出回归预测

回归预测 | MATLAB实现CNN-BiGRU卷积神经网络结合双向门控循环单元多输入单输出回归预测 目录 回归预测 | MATLAB实现CNN-BiGRU卷积神经网络结合双向门控循环单元多输入单输出回归预测预测效果基本介绍程序设计参考资料预测效果 基本介绍 CNN-BiGRU,即卷积神经网络(CNN)与双…...

【人工智能数学基础】——深入详解贝叶斯理论:掌握贝叶斯定理及其在分类和预测中的应用

深入详解贝叶斯理论&#xff1a;掌握贝叶斯定理及其在分类和预测中的应用 贝叶斯理论&#xff08;Bayesian Theory&#xff09;是概率论和统计学中的一个重要分支&#xff0c;它以托马斯贝叶斯&#xff08;Thomas Bayes&#xff09;命名&#xff0c;主要关注如何根据新的证据更…...

Gin-vue-admin(1):环境配置和安装

目录 环境配置如果443网络连接问题&#xff0c;需要添加代理服务器 后端运行前端运行 环境配置 git clone https://gitcode.com/gh_mirrors/gi/gin-vue-admin.git到server文件目录下 go mod tidygo mod tidy 是 Go 语言模块系统中的一个命令&#xff0c;用于维护 go.mod 文件…...

深入解析与防范:基于缓冲区溢出的FTP服务器攻击及调用计算器示例

深入解析与防范&#xff1a;基于缓冲区溢出的FTP服务器攻击及调用计算器示例 摘要 本文将详细探讨一种利用缓冲区溢出漏洞对FTP服务器进行远程攻击的技术&#xff0c;并通过分析给定代码示例&#xff0c;揭示其工作原理和潜在风险。我们将重点讨论如何在靶机上实现调用计算器…...

Gargoyle路由安装dockerd

ea8500刷石像鬼路由1.14.0&#xff0c;安dockerd&#xff0c;需先下载并安装以下依赖包&#xff0c;逐个安装。 kernel_5.10.176-1-6b05bc664d80d655942a20fb9ef8c3cd_arm_cortex-a15_neon-vfpv4.ipk kmod-br-netfilter_5.10.176-1_arm_cortex-a15_neon-vfpv4.ipk kmod-crypto…...

在linux系统的docker中安装GitLab

一、安装GitLab&#xff1a; 在安装了docker之后就是下载安装GitLab了&#xff0c;在linux系统中输入命令&#xff1a;docker search gitlab就可以看到很多项目&#xff0c;一般安装第一个&#xff0c;它是英文版的&#xff0c;如果英文不好可以安装twang2218/gitlab-ce-zh。 …...

滑动窗口

滑动窗口 标志: 利用两个指针 只进不退的特性 &#xff08;样子与窗口类似&#xff09; 解题模板 更新结果的时机 应该具体题目具体分析。 例题&#xff1a; 438. 找到字符串中所有字母异位词 - 力扣&#xff08;LeetCode&#xff09; 1658. 将 x 减到 0 的最小操作数 - 力…...

人工智能 AI 大模型研究设计与实践应用技术研究报告

人工智能 AI 大模型研究设计与实践应用技术研究报告 摘要&#xff1a; 本报告深入探讨了人工智能 AI 大模型的研究设计架构以及在各领域的实践应用技术。通过对模型架构、训练方法、优化策略的详细阐述&#xff0c;结合实际案例分析其在自然语言处理、计算机视觉、智能医疗等领…...

【深度学习】 零基础介绍卷积神经网络(CNN)

CNN学习 零基础介绍写个CNN最简单的代码一. 概述二. 搭建CNN1. 输入层2. 卷积层3. 激活层4. 池化层5. 全连接层6. 网络搭建小结7. 损失函数8. 梯度下降9. 反向传播10. 模型评估与正则化11. 尝试搭建自己的第一个CNN 三. 经典CNN结构四. 猫狗识别项目实践1. Paddle实现版本&…...

答题考试系统v1.6.1高级版源码分享+uniapp+搭建测试环境

一.系统介绍 一款基于FastAdminThinkPHPUniapp开发的小程序答题考试系统&#xff0c;支持多种试题类型、多种试题难度、练题、考试、补考模式&#xff0c;提供全部前后台无加密源代码&#xff0c;支持私有化部署 二.测试环境 系统环境&#xff1a;CentOS、 运行环境&#x…...

PowerMILL 客制化宏 - 变量

从PowerMILL2012起&#xff0c;命令起始支持变量。支持变量将使宏命令更加灵活和功能强大。可以对变量做一些运算而不依赖其它语言。 当前支持有变量类型为&#xff1a; INT&#xff1b; REAL&#xff1b; STRING&#xff1b; ENTITY&#xff1b; ARRAY LIST; OBJECT; 以下就…...

第五篇:前后端如何“扯皮”——HTTP 在开发中的应用

文章目录 第五篇&#xff1a;前后端如何“扯皮”——HTTP 在开发中的应用1. HTTP 在前后端分离中的作用1.1 前后端分离的崛起1.2 HTTP 的职责 2. RESTful API 与 GraphQL 的对比2.1 RESTful API&#xff1a;标准化的老兵2.2 GraphQL&#xff1a;灵活的新秀2.3 RESTful 和 Graph…...

如何在 Ubuntu 22.04 服务器上安装 Jenkins

简介 Jenkins 是一个非常流行的免费自动化工具&#xff0c;每个人都应该了解它。DevOps 工程师使用它来自动化代码构建、测试和部署。本文将重点介绍如何在新的 Ubuntu LTS 版本&#xff0c;即 Ubuntu 22.04 中安装 Jenkins。 但在此之前&#xff0c;让我们快速讨论一下 Jenk…...

关于代码注释

代码注释的重要性与最佳实践 在软件开发过程中&#xff0c;代码注释被认为是代码质量的一个重要组成部分。它不仅帮助开发人员理解和维护代码&#xff0c;还有助于团队协作和代码的可持续性。然而&#xff0c;如何有效地使用注释是一个值得深思的问题。本文将探讨代码注释的重…...

Mitt 库使用笔记

1. 介绍 Mitt 是一个轻量级的 JavaScript 库&#xff0c;用于在应用程序中实现事件触发和监听。它不依赖任何外部库&#xff0c;功能简洁&#xff0c;主要用于在模块间进行事件传递。 体积小&#xff1a;Mitt 的压缩版本仅有几千字节&#xff0c;非常适合在前端框架中作为事件…...

OpenCVE:一款自动收集NVD、MITRE等多源知名漏洞库的开源工具,累计收录CVE 27万+

漏洞库在企业中扮演着至关重要的角色&#xff0c;不仅提升了企业的安全防护能力&#xff0c;还支持了安全决策、合规性要求的满足以及智能化管理的发展。前期博文《业界十大知名权威安全漏洞库介绍》介绍了主流漏洞库&#xff0c;今天给大家介绍一款集成了多款漏洞库的开源漏洞…...

uniapp中的uni-file-picker组件上传多张图片到服务器

由于在uniapp官方文档中的uni-file-picker组件可实现图片上传功能&#xff0c;默认的是上传到自带的服务&#xff0c;所以我们要修改成自己的服务器 1. 添加 :auto-upload"false" 加上这个取消自动上传 <uni-file-picker v-model"jobAddUpdateForm.imag…...

LIF神经元模型的显隐转换

本文星主将介绍LIF神经元模型的显式和隐式转换&#xff08;星主看见有论文[1]是这个称呼的&#xff0c;所以本文也称显式和隐式&#xff09;&#xff0c;并得到隐式模型的解析解。注意&#xff1a;理解本文内容需要有一定的微积分基础&#xff0c;如果大家看着数学头疼&#xf…...

Node的学习以及学习通过Node书写接口并简单操作数据库

Node的学习 Node的基础上述是关于Node的一些基础&#xff0c;总结的还行&#xff1b; 利用Node书写接口并操作数据库 1. 初始化项目 创建新的项目文件夹&#xff0c;并初始化 package.json mkdir my-backend cd my-backend npm init -y2. 安装必要的依赖 安装Express.js&…...

Android 获取屏幕物理尺寸

注&#xff1a;编译 sdk 需要使用 30 因为引入了 WindowMetrics、uild.VERSION_CODES.R 新 sdk 才存在的类和属性 某些场景处理 view &#xff0c;对 view 显示的位置要求比较精确&#xff0c;通常我们使用context.getResources().getDisplayMetrics().widthPixels 获取到的宽、…...

【FFmpeg】解封装 ① ( 封装与解封装流程 | 解封装函数简介 | 查找码流标号和码流参数信息 | 使用 MediaInfo 分析视频文件 )

文章目录 一、解封装1、封装与解封装流程2、解封装 常用函数 二、解封装函数简介1、avformat_alloc_context 函数2、avformat_free_context 函数3、avformat_open_input 函数4、avformat_close_input 函数5、avformat_find_stream_info 函数6、av_read_frame 函数7、avformat_s…...

#渗透测试#红队全栈 powshell基础使用

声明&#xff01; 学习视频来自B站up主 泷羽sec&#xff0c;任何违法事件与本人以及泷羽sec团队无关&#xff0c;切勿触碰法律底线&#xff0c;否则后果自负&#xff01;&#xff01;&#xff01;&#xff01; 目录标题 认识powsehll打开方式 使用方式美化自己的powershell简单…...

Qt之自定义标题栏拓展(十)

Qt开发 系列文章 - user-defined-titlebars&#xff08;十&#xff09; 目录 前言 一、方式一 1.效果演示 2.创建标题栏类 3.可视化UI设计 4.定义相关函数 5.使用标题栏类 二、方式二 1.效果演示 2.创建标题栏类 3.定义相关函数 1.初始化函数 2.功能函数 3.窗口关…...

设计模式之创建型

1、What 关注对象的创建过程&#xff0c;旨在通过不同的方式来创建对象&#xff0c;以解耦对象的创建与其使用过程。这些模式提供了创建对象的灵活性和可扩展性&#xff0c;使得代码更加易于维护和管理。 1.1 单例模式 确保一个类只有一个实例&#xff0c;并提供一个全局访问…...

记录一下自己对网络安全法的笔记

仅记录一下自己对网络安全法的笔记 文章来源&#xff08;https://www.cac.gov.cn/2016-11/07/c_1119867116_2.htm&#xff09;&#xff08;2016年11月7日第十二届全国人民代表大会常务委员会第二十四次会议通过&#xff09;该法自2017年6月1日起施行。《网络安全法》是我国第一…...

Mybatis-plus-Join--分页查询

数据表四张&#xff1a; user&#xff1a; id,username,create_time,update_time product&#xff1a; id,name,price,number(库存),create_time,update_times order&#xff1a; id,quantity,order_time(下单时间),update_time order_detail:id,product_id,order_id,quant…...

EE308FZ_Sixth Assignment_Beta Sprint_Sprint Essay 5

Assignment 6Beta SprintCourseEE308FZ[A] — Software EngineeringClass Link2401_MU_SE_FZURequirementsTeamwork—Beta SprintTeam NameFZUGOObjectiveSprint Essay 5_Day9-Day10 (12.19-12.20)Other Reference1. WeChat Mini Program Design Guide 2. Javascript Style Gui…...

【AI日记】24.12.19 kaggle 比赛 2-8 | 睡眠质量提高

【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】【AI日记】 工作 参加&#xff1a;kaggle 比赛 Regression with an Insurance Dataset时间&#xff1a;8 小时 读书 书名&#xff1a;富兰克林自传时间&#xff1a;0.5 小时阅读原因&#xff1a;100 美元纸币上的人物 …...

string

1.对象创建 // // Created by 徐昌真 on 2024/12/15. // #include <iostream> #include <string>using namespace std;int main() {string s "意思是不要沉迷于空洞的幻想 也不要追求无用的虚名 强调了做事要脚踏实地 专注于实际的目标与行动";// 1. 无…...

观龙鱼之态,察疾病之征

龙鱼&#xff0c;以其独特的外形、优雅的游姿&#xff0c;成为众多养鱼爱好者的心头好。然而&#xff0c;这些水中的 “精灵” 一旦患病&#xff0c;其状态会发生明显变化。了解龙鱼患病的表现&#xff0c;对于鱼主人及时发现并治疗至关重要。 当龙鱼出现食欲不振的情况时&…...

【NLP 16、实践 ③ 找出特定字符在字符串中的位置】

看着父亲苍老的白发和渐渐老态的面容 希望时间再慢一些 —— 24.12.19 一、定义模型 1.初始化模型 ① 初始化父类 super(TorchModel, self).__init__()&#xff1a; 调用父类 nn.Module 的初始化方法&#xff0c;确保模型能够正确初始化。 ② 创建嵌入层 self.embedding n…...

一.photoshop导入到spine

这里使用的是 photoshoptospine脚本 下载地址:https://download.csdn.net/download/boyxgb/90156744 脚本的使用,可以通过文件的脚本的浏览,浏览该脚本使用该脚本,也可以将该脚本放在photoshop安装文件夹里的script文件夹下,具体路径:Photoshop\Presets\Scripts,重启photosho…...

docsify

macos ➜ ~ node -v v16.20.2➜ ~ npm --version 8.19.4全局安装 docsify-cli 工具 npm i docsify-cli -g➜ ~ docsify -vdocsify-cli version:4.4.4初始化项目 docsify init ./docsls -ah docs . .. .nojekyll README.md index.htmlindex.html 入口文件README.md 会…...

在Windows Server路由和远程访问服务中启用L2TP/IPsec VPN

背景 路由和远程访问服务&#xff08;Routing and Remote Access Services&#xff0c;RRAS&#xff09;是Windows Server上的一个角色&#xff0c;包含很多功能&#xff0c;可以用来搭建VPN。然而&#xff0c;在什么也不做的初始配置中&#xff0c;它只允许PPTP协议连接。然而…...

感知机收敛性定理证明

1. 问题描述 感知机收敛性定理假设&#xff1a; 存在一个参数向量 θ&#xff08;被归一化为单位向量&#xff0c;&#xff0c;以及一个正数 &#xff0c;使得对所有训练样本 满足&#xff1a; 这是线性可分的假设&#xff0c;意味着每个样本点与正确超平面之间有一个至少为的…...

监控易平台:提升IDC 数据中心运维效率与质量

一、引言 随着信息技术的飞速发展&#xff0c;IDC 数据中心作为信息存储、处理和传输的核心枢纽&#xff0c;其规模和复杂性不断增加。数据中心的稳定运行对于企业业务的连续性和发展至关重要&#xff0c;然而&#xff0c;传统的运维方式在面对日益增长的运维需求时&#xff0c…...

WordPress 资源展示型下载类主题 CeoMax-Pro_v7.6 开心版

WordPress 资源展示型下载类主题 CeoMax-Pro_v7.6 开心版&#xff1b; CeoMax-Pro是一款极致美观强大的WordPress付费资源下载主题&#xff0c;它能满足您所有付费资源下载的业务需求&#xff01; 你的想法与业务不能被主题所限制&#xff01;CeoMax-Pro强大的功能&#xff0…...

java数据类型(补充-引用类型)

Java还提供了引用数据类型&#xff08;Reference Types&#xff09;。这些类型的变量存储的是对象的引用&#xff0c;而不是直接存储值。引用数据类型主要包括以下几类&#xff1a; 类型描述类(Class)每个对象都有自己的状态&#xff08;属性或字段&#xff09;、行为&#xf…...

【WRF教程第四期】WRF 初始化概述:以4.5版本为例

WRF 初始化&#xff08;WRF Initialization&#xff09; Building Initialization Programs编译方式 理想案例初始化&#xff08;Initialization for Idealized Cases&#xff09;理想化案例的输入可用的理想化案例 现实案例初始化&#xff08;Initialization for Real Data Ca…...

「Mac畅玩鸿蒙与硬件47」UI互动应用篇24 - 虚拟音乐控制台

本篇将带你实现一个虚拟音乐控制台。用户可以通过界面控制音乐的播放、暂停、切换歌曲&#xff0c;并查看当前播放的歌曲信息。页面还支持调整音量和动态显示播放进度&#xff0c;是音乐播放器界面开发的基础功能示例。 关键词 UI互动应用音乐控制播放控制动态展示状态管理按钮…...