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

【Django】REST 常用类

ModelSerializer

serializers.ModelSerializer 是 Django REST framework(DRF)里的一个强大工具,它能极大简化序列化和反序列化 Django 模型实例的流程。下面从多个方面详细介绍它:

1. 基本概念

序列化是把 Django 模型实例转化为 Python 原生数据类型(像字典、列表等),进而能方便地转换为 JSON、XML 等格式用于传输;反序列化则是将接收到的数据转换回 Django 模型实例。ModelSerializer 会自动依据模型的字段定义来生成序列化器的字段,减少了手动编写序列化器字段的工作量。

2. 基本用法

假设你有一个简单的 Django 模型 Book

from django.db import modelsclass Book(models.Model):title = models.CharField(max_length=100)author = models.CharField(max_length=100)published_date = models.DateField()def __str__(self):return self.title

可以创建一个对应的 ModelSerializer

from rest_framework import serializers
from .models import Bookclass BookSerializer(serializers.ModelSerializer):class Meta:model = Bookfields = ['id', 'title', 'author', 'published_date']

在上述代码里,Meta 类的 model 属性指定要序列化的模型,fields 属性指定要包含在序列化结果中的字段。

3. 常用属性和方法

Meta 类属性
  • model:指定要序列化的 Django 模型。
  • fields:指定要包含在序列化结果中的字段,可以是字段名的列表或字符串 '__all__'(表示包含模型的所有字段)。
  • exclude:指定要排除的字段,不能与 fields 同时使用。
  • read_only_fields:指定只读字段,这些字段在反序列化时会被忽略。
  • extra_kwargs:用于为特定字段提供额外的参数,例如设置字段的 requiredwrite_only 等属性。

示例:

class BookSerializer(serializers.ModelSerializer):class Meta:model = Bookfields = '__all__'read_only_fields = ['id']extra_kwargs = {'title': {'required': True},'author': {'write_only': True}}
序列化方法
  • data:返回序列化后的 Python 原生数据类型。
book = Book.objects.first()
serializer = BookSerializer(book)
print(serializer.data)
  • is_valid():验证反序列化的数据是否有效。
data = {'title': 'New Book', 'author': 'John Doe', 'published_date': '2023-01-01'}
serializer = BookSerializer(data=data)
if serializer.is_valid():book = serializer.save()
else:print(serializer.errors)
  • save():保存反序列化后的数据,创建或更新模型实例。

4. 自定义序列化行为

可以通过重写序列化器的方法来自定义序列化和反序列化行为。

重写 to_representation 方法
class BookSerializer(serializers.ModelSerializer):class Meta:model = Bookfields = '__all__'def to_representation(self, instance):data = super().to_representation(instance)data['title'] = data['title'].upper()return data
重写 createupdate 方法
class BookSerializer(serializers.ModelSerializer):class Meta:model = Bookfields = '__all__'def create(self, validated_data):# 自定义创建逻辑return Book.objects.create(**validated_data)def update(self, instance, validated_data):# 自定义更新逻辑instance.title = validated_data.get('title', instance.title)instance.author = validated_data.get('author', instance.author)instance.published_date = validated_data.get('published_date', instance.published_date)instance.save()return instance

5. 优点

  • 代码简洁:自动生成序列化器字段,减少了手动编写的工作量。
  • 一致性:序列化器的字段与模型的字段保持一致,方便维护。
  • 验证功能:自动提供基本的验证功能,确保数据的有效性。

总之,serializers.ModelSerializer 是 Django REST framework 中非常实用的工具,能让你更高效地处理 Django 模型的序列化和反序列化。


在 Django REST framework(DRF)里,ModelSerializer 中的 update 方法主要用于处理更新现有模型实例的逻辑。当你使用序列化器来更新一个已存在的模型对象时,update 方法会被调用。下面为你详细介绍它的作用、工作机制以及使用示例。

作用

update 方法的核心作用是接收经过验证的数据,把这些数据应用到已有的模型实例上,并且保存更新后的实例。它是序列化器在处理 PUT 或者 PATCH 请求时的关键部分,能够帮助你定制模型实例更新的具体逻辑。

工作机制

  • 当你调用序列化器的 save 方法并且传入一个已存在的模型实例时,序列化器会自动调用 update 方法。
  • update 方法接收两个参数:
    • instance:代表要更新的模型实例。
    • validated_data:是一个字典,包含经过验证的要更新的数据。
  • update 方法内部,你可以从 validated_data 里提取数据,把这些数据赋给 instance 的相应字段,然后调用 instance.save() 方法保存更新后的实例。

示例代码

下面是一个简单的示例,展示了如何在 ModelSerializer 中重写 update 方法:

from rest_framework import serializers
from .models import Bookclass BookSerializer(serializers.ModelSerializer):class Meta:model = Bookfields = ['id', 'title', 'author', 'published_date']def update(self, instance, validated_data):# 更新实例的字段instance.title = validated_data.get('title', instance.title)instance.author = validated_data.get('author', instance.author)instance.published_date = validated_data.get('published_date', instance.published_date)# 保存更新后的实例instance.save()return instance

代码解释

  • instance.title = validated_data.get('title', instance.title):这行代码尝试从 validated_data 中获取 title 字段的值,如果 validated_data 中存在 title 字段,就将其赋值给 instance.title;如果不存在,就保持 instance.title 的原有值。
  • instance.save():调用 save 方法将更新后的实例保存到数据库中。
  • return instance:返回更新后的实例。

自定义更新逻辑

你可以在 update 方法中添加自定义的更新逻辑,例如在更新某些字段时执行额外的操作,或者根据特定条件更新不同的字段。

def update(self, instance, validated_data):if 'title' in validated_data:# 在更新标题时执行额外的操作new_title = validated_data['title'].upper()instance.title = new_titleif 'author' in validated_data:# 检查作者是否合法if len(validated_data['author']) > 5:instance.author = validated_data['author']instance.published_date = validated_data.get('published_date', instance.published_date)instance.save()return instance

在这个例子中,当更新 title 字段时,会将新标题转换为大写;更新 author 字段时,会检查作者名字的长度是否大于 5。

综上所述,update 方法为你提供了一种灵活的方式来定制模型实例的更新逻辑,以满足特定的业务需求。


ForeignKey

在 Django 中,models.ForeignKey 是一个非常重要的字段类型,用于在模型之间创建多对一(Many-to-One)的关联关系。下面将从多个方面对其进行详细介绍。

1. 基本概念

多对一关系表示一个模型的多个实例可以关联到另一个模型的一个实例。例如,在一个博客应用中,多篇文章(Article)可以属于同一个作者(Author),那么文章和作者之间就是多对一的关系。models.ForeignKey 就是用来在 Django 模型中定义这种关系的。

2. 基本语法

from django.db import modelsclass Author(models.Model):name = models.CharField(max_length=100)def __str__(self):return self.nameclass Article(models.Model):title = models.CharField(max_length=200)author = models.ForeignKey(Author, on_delete=models.CASCADE)def __str__(self):return self.title

在上述代码中,Article 模型中的 author 字段是一个 ForeignKey,它指向 Author 模型。这意味着每篇文章都关联到一个作者。

3. 参数说明

to
  • 作用:指定关联的模型。可以是模型类本身,也可以是模型类的字符串表示(如 'app_label.ModelName')。
  • 示例
author = models.ForeignKey('myapp.Author', on_delete=models.CASCADE)
on_delete
  • 作用:定义当关联的对象被删除时,当前对象应该如何处理。这是一个必需的参数。
  • 常见选项
    • models.CASCADE:级联删除。当关联的对象被删除时,与之关联的所有对象也会被删除。例如,当一个作者被删除时,他所写的所有文章都会被删除。
    • models.PROTECT:保护模式。如果有关联的对象存在,不允许删除关联的对象,会抛出 ProtectedError 异常。
    • models.SET_NULL:将关联字段设置为 NULL。前提是该字段必须允许为空(null=True)。例如,当一个作者被删除时,他所写的文章的 author 字段会被设置为 NULL
    • models.SET_DEFAULT:将关联字段设置为默认值。前提是该字段必须有默认值(default=...)。
    • models.SET():将关联字段设置为指定的值或调用指定的函数返回的值。
    • models.DO_NOTHING:不做任何处理。可能会导致数据库中的外键约束错误。
related_name
  • 作用:定义从关联模型反向查询时使用的名称。默认情况下,Django 会自动生成一个反向查询的名称,格式为 modelname_set(例如,article_set)。使用 related_name 可以自定义这个名称。
  • 示例
class Article(models.Model):title = models.CharField(max_length=200)author = models.ForeignKey(Author, on_delete=models.CASCADE, related_name='articles')

现在可以通过 author.articles.all() 来获取该作者的所有文章。

null
  • 作用:指定该字段是否可以为空。如果设置为 True,则允许该字段在数据库中存储 NULL 值。
  • 示例
author = models.ForeignKey(Author, on_delete=models.SET_NULL, null=True)
blank
  • 作用:指定在表单验证时该字段是否可以为空。如果设置为 True,则在表单中该字段可以不填写。
  • 示例
author = models.ForeignKey(Author, on_delete=models.CASCADE, blank=True)

4. 反向查询

通过 ForeignKey 建立的关联关系,可以进行反向查询。例如,有了上述的 ArticleAuthor 模型,可以这样进行反向查询:

author = Author.objects.get(name='John Doe')
articles = author.article_set.all()  # 如果没有指定 related_name
# 或者
articles = author.articles.all()  # 如果指定了 related_name='articles'

5. 数据库层面

在数据库中,ForeignKey 字段会被存储为一个整数,这个整数是关联模型实例的主键值。例如,Article 表中的 author 字段会存储对应的 Author 实例的 id

6. 注意事项

  • 当使用 ForeignKey 时,要确保 on_delete 参数设置合理,避免出现数据不一致的问题。
  • 频繁的级联删除可能会导致数据丢失,使用时要谨慎。

综上所述,models.ForeignKey 是 Django 中实现多对一关系的重要工具,通过合理使用其参数,可以灵活地管理模型之间的关联。


ModelViewSet

在 Django REST framework(DRF)里,viewsets.ModelViewSet 是一个强大且实用的工具,它简化了基于 Django 模型构建 RESTful API 的过程。下面我会详细讲解 viewsets.ModelViewSet 及其相关的 viewsets 模块。

1. viewsets 模块概述

viewsets 模块是 Django REST framework 提供的一组视图集类,它们把不同的视图逻辑(如列表视图、详情视图、创建视图、更新视图、删除视图等)组合在一起,让你能够以一种更简洁、高效的方式构建 API。视图集可以根据不同的 HTTP 请求方法(如 GETPOSTPUTDELETE 等)自动处理对应的操作。

2. ModelViewSet 简介

ModelViewSetviewsets 模块中的一个核心类,它继承自多个不同的混合类(如 CreateModelMixinRetrieveModelMixinUpdateModelMixinDestroyModelMixinListModelMixin),这些混合类为 ModelViewSet 提供了完整的 CRUD(创建、读取、更新、删除)操作功能。

3. 基本用法

假设你有一个简单的 Django 模型 Book

from django.db import modelsclass Book(models.Model):title = models.CharField(max_length=100)author = models.CharField(max_length=100)published_date = models.DateField()def __str__(self):return self.title

你可以创建一个对应的 ModelViewSet 来处理这个模型的 API 操作:

from rest_framework import viewsets
from .models import Book
from .serializers import BookSerializerclass BookViewSet(viewsets.ModelViewSet):queryset = Book.objects.all()serializer_class = BookSerializer

这里的 BookSerializer 是一个序列化器,用于将 Book 模型实例序列化为 JSON 数据,以及将 JSON 数据反序列化为 Book 模型实例。以下是一个简单的序列化器示例:

from rest_framework import serializers
from .models import Bookclass BookSerializer(serializers.ModelSerializer):class Meta:model = Bookfields = ['id', 'title', 'author', 'published_date']

4. 路由配置

为了让 BookViewSet 能够响应 HTTP 请求,需要进行路由配置。Django REST framework 提供了 routers 模块来简化路由配置:

from rest_framework import routers
from .views import BookViewSetrouter = routers.DefaultRouter()
router.register(r'books', BookViewSet)urlpatterns = router.urls

这样,BookViewSet 就会自动处理以下几种类型的请求:

  • GET /books/:获取所有书籍的列表。
  • POST /books/:创建一本新的书籍。
  • GET /books/{id}/:获取指定 ID 的书籍详情。
  • PUT /books/{id}/:更新指定 ID 的书籍的所有字段。
  • PATCH /books/{id}/:部分更新指定 ID 的书籍的字段。
  • DELETE /books/{id}/:删除指定 ID 的书籍。

5. 方法和属性

  • queryset:指定要处理的模型实例集合,通常是一个查询集(QuerySet)。
  • serializer_class:指定用于序列化和反序列化的序列化器类。
  • get_queryset():可以重写这个方法来动态地返回不同的查询集,例如根据用户权限过滤数据。
class BookViewSet(viewsets.ModelViewSet):serializer_class = BookSerializerdef get_queryset(self):# 只返回已发布的书籍return Book.objects.filter(published=True)
  • perform_create():可以重写这个方法来在创建新实例时执行额外的操作,例如记录日志。
class BookViewSet(viewsets.ModelViewSet):queryset = Book.objects.all()serializer_class = BookSerializerdef perform_create(self, serializer):# 在创建书籍时记录日志print(f"Creating a new book: {serializer.validated_data['title']}")serializer.save()

6. 优点

  • 代码简洁:通过继承 ModelViewSet,可以用很少的代码实现完整的 CRUD 操作,减少了重复代码。
  • 可维护性高:将不同的视图逻辑封装在一个类中,使得代码结构更加清晰,易于维护和扩展。
  • 自动生成路由:结合 routers 模块,可以自动生成 API 的路由,简化了路由配置。

综上所述,viewsets.ModelViewSet 是 Django REST framework 中一个非常实用的工具,能够帮助你快速、高效地构建功能完整的 RESTful API。

相关文章:

【Django】REST 常用类

ModelSerializer serializers.ModelSerializer 是 Django REST framework(DRF)里的一个强大工具,它能极大简化序列化和反序列化 Django 模型实例的流程。下面从多个方面详细介绍它: 1. 基本概念 序列化是把 Django 模型实例转化…...

PyTorch常用命令详解:助力深度学习开发

📌 友情提示: 本文内容由银河易创AI(https://ai.eaigx.com)创作平台的gpt-4-turbo模型生成,旨在提供技术参考与灵感启发。文中观点或代码示例需结合实际情况验证,建议读者通过官方文档或实践进一步确认其准…...

第二章 Logback的架构(二)

Logger, Appenders 和 Layouts Appenders 和 Layouts 基于日志记录器选择性地启用或禁用日志记录请求只是其中的一部分功能。Logback允许将日志记录请求输出到多个目标。在Logback术语中,输出目标被称为Appender。 目前,已经存在适用于控制台、文件、远…...

【大数据】服务器上部署Apache Paimon

1. 环境准备 在开始部署之前,请确保服务器满足以下基本要求: 操作系统: 推荐使用 Linux(如 Ubuntu、CentOS)。 Java 环境: Paimon 依赖 Java,推荐安装 JDK 8 或更高版本。 Flink 环境: Paimon 是基于 Apache Flink 的…...

【IP101】图像处理进阶:从直方图均衡化到伽马变换,全面掌握图像增强技术

🌟 图像增强魔法指南 🎨 在图像处理的世界里,增强就像是给图片化妆,让它展现出最佳的状态。让我们一起来探索这些神奇的增强术吧! 📚 目录 基础概念 - 图像增强的"美容院"直方图均衡化 - 光线的…...

【Azure Redis 缓存】关于Azure Cache for Redis 服务在传输和存储键值对(Key/Value)的加密问题

问题描述 Azure Cache for Redis 服务在传输和存储数据时是如何加密呢? 问题回答 一:关于Azure cache for Redis服务在数据传输过程中是如何加密的? 为了确保在Azure cache for Redis和客户端应用程序之间传输的数据安全,需要启用…...

Cursor 被封解决方案

一、注册一个无限邮箱 没事点点广告,让网站活久一点(✪ω✪) 2925邮箱-无限邮2925无限邮箱支持多种客户端收发邮件且数据安全加密多端同步。只需要注册一个账号,就能生成无限多个2925子邮箱账号,同时利用一邮多用功能对多个子邮箱邮件进行集…...

spring上传文件添加水印

1、实现 MultipartFile package com.pojo.common.core.domain;import java.io.ByteArrayInputStream; import java.io.File; import java.io.IOException; import java.io.InputStream;import org.springframework.lang.Nullable; import org.springframework.util.Assert; im…...

CSS分栏布局

分栏布局将区域划分为若干垂直的栏,子元素放置到栏中,填满一个后再填充下一个。如果设置了 column-count 栏数量或 column-width 栏宽度,元素就成为分栏容器。需要注意, column-width 实际上是最小栏宽度。浏览器使用这个值计算栏…...

通过 ModernBERT 实现零样本分类的性能提升

文本分类 是机器学习中最基础的任务之一,拥有悠久的研究历史和深远的实用价值。更重要的是,它是许多实际项目中不可或缺的组成部分,从搜索引擎到生物医学研究都离不开它。文本分类方法被广泛应用于科学论文分类、用户工单分类、社交媒体情感分…...

【AI】Ubuntu 22.04 4060Ti 16G vllm-api部署Qwen3-8B-FP8

下载模型 # 非常重要,否则容易不兼容报错 pip install modelscope -U cd /data/ai/models modelscope download --model Qwen/Qwen3-8B-FP8 --local_dir ./Qwen3-8B-FP8 安装vllm 创建虚拟环境 mkdir vllm cd vllm/ python -m venv venv ource venv/bin/activat…...

QML ProgressBar控件详解

在 QML 中,ProgressBar 是一个常用的进度条控件,用于显示任务的完成进度。以下是 ProgressBar 的详细用法,包括基本用法、自定义样式、动态绑定数据等。 1. 基本用法 1.1 最简单的 ProgressBar import QtQuick.Controls 2.15ProgressBar {w…...

STM32教程:串口USART通讯协议原理及分析(基于STM32F103C8T6最小系统板标准库开发)*详细教程*

前言: 本文主要介绍了单片机的通讯协议和STM32的串口USART通讯的原理及分析。 通信的目的 将一个设备的数据传送到另一个设备,扩展硬件系统。 通信协议 指定通信的规则,通信双方按照协议规则进行数据收发。 STM32常见通讯协议 各通讯特点 USART: TX(发送)、RX(接…...

EDA文件

不同的EDA软件使用不同的文件扩展名和格式,以下是主流工具对应的文件类型: EDA软件文件扩展名说明Altium Designer.PcbDocAltium专属格式,需用原软件打开,可导出为Gerber或STEP文件用于生产。KiCad.kicad_pcbKiCad项目文件&#…...

【C/C++】构造函数与析构函数

📘 C 构造函数与析构函数详解笔记 🧠 为什么需要构造函数与析构函数? 在 C 中,对象创建和销毁过程如果仅靠手动赋值和清理非常容易出错。为此,语言提供了构造函数和析构函数: 构造函数:用于在…...

在Unity AR应用中实现摄像头切换功能

本教程将详细讲解如何在Unity AR Foundation项目中实现前后摄像头切换功能,并提供完整的代码解析。我们将使用AR Foundation的核心组件和简单的UI交互来实现这一功能。 第一部分:环境准备 1.1 所需组件 Unity 2019.4或更高版本 AR Foundation 4.0+ ARCore XR Plugin(Andro…...

Pycharm(十九)深度学习

一、深度学习概述 1.1 什么是深度学习 深度学习是机器学习中的一种特殊方法,它使用称为神经网络的复杂结构,特别是“深层”的神经网络,来学习和做出预测。深度学习特别适合处理大规模和高维度的数据,如图像、声音和文本。深度学习、机器学习和人工智能之间的关系如下图所…...

状态模式 VS 策略模式

在软件开发的世界里,设计模式如同工匠手中的精良工具,能帮助开发者打造出结构清晰、易于维护和扩展的软件系统。状态模式和策略模式便是其中两个常用却容易让人混淆的设计模式。接下来,我们会详细剖析它们的区别、适用场景,并给出…...

如何在 Ubuntu 24.04 本地安装 DeepSeek ?

在本地 Ubuntu 系统上安装 DeepSeek 可以让您在本地使用高级 AI 功能,从而消除对云服务的依赖需求。 What is DeepSeek? DeepSeek 是一个先进的开源人工智能模型,专为自然语言理解和生成而设计。它提供了类似ChatGPT的强大功能。 Prerequisites: A …...

云计算训练营笔记day02(Linux、计算机网络、进制)

Linux 是一个操作系统 Linux版本 RedHat Rocky Linux CentOS7 Linux Ubuntu Linux Debian Linux Deepin Linux 登录用户 管理员 root a 普通用户 nsd a 打开终端 放大: ctrl shift 缩小: ctrl - 命令行提示符 [rootlocalhost ~]# ~ 家目录 /root 当前登录的用户…...

数据库实验10 函数存储

数据库实验10 一、实验目的 掌握函数和存储过程的定义方法,包括标量函数、表值函数、存储过程的语法结构。理解函数和存储过程的作用及原理,区分标量函数与表值函数的应用场景,掌握存储过程的参数传递、逻辑控制和错误处理机制。能够熟练运…...

SQL Server执行安装python环境

安装注意事项 启用python脚本支持 sp_configure external scripts enabled, 1; RECONFIGURE; 安装后接受 Python EULA协议 接受python授权 setup.exe /qs /ACTIONInstall /FEATURESSQL_INST_MR /INSTANCENAME您的实例名 /IACCEPTROPENLICENSETERMS1 /IACCEPTPYTHONLICENSETE…...

ActiveMQ 安全机制与企业级实践(二)

四、企业级实践案例分析 4.1 案例背景介绍 某大型电商企业拥有复杂的分布式系统,涵盖订单管理、库存管理、物流配送、用户服务等多个核心业务模块。在业务快速发展过程中,系统间的通信量呈爆发式增长,为了实现系统的高效解耦和异步通信&…...

ActiveMQ 安全机制与企业级实践(一)

一、引言 在当今数字化时代,企业级应用的架构愈发复杂,各个系统之间的通信和协作变得至关重要。消息队列作为一种高效的异步通信机制,在企业级应用集成中扮演着关键角色。ActiveMQ 作为一款广泛使用的开源消息中间件,以其丰富的功…...

【Python pass 语句】

在 Python 中,pass 语句是一个特殊的空操作(no-op)语句,它的核心作用是保持程序结构的完整性,同时不执行任何实际操作。以下是详细说明: 一、基础特性 语法占位符:当语法上需要一条语句&#x…...

Maven依赖未生效问题

在你描述的情况下,测试类无法找到 Maven 依赖的 jar 包,可能由以下原因导致: 依赖未正确添加到 pom.xml 检查 pom.xml 文件中是否正确添加了 Elasticsearch 和 JUnit 等相关依赖。例如,对于 Elasticsearch 的 TransportClient 相关…...

NGINX `ngx_http_auth_request_module` 模块详解基于子请求的认证授权方案

一、背景介绍 在 Web 系统中,我们常常需要根据外部服务(例如单点登录、API 网关、权限中心)的结果来判断用户是否有权限访问某个资源。NGINX 提供的 ngx_http_auth_request_module 模块,正是为这种场景而生。它允许通过向后端发送…...

Qwen3简要介绍(截止20250506)

Qwen3是阿里云推出的一个大语言模型系列,它在多个方面进行了升级和优化。以下是Qwen3的一些主要特点: 模型规模多样:Qwen3提供了一系列不同规模的模型,包括稠密模型(0.6B、1.7B、4B、8B、14B、32B)以及专家…...

精益数据分析(42/126):移动应用商业模式的深度剖析与实战要点

精益数据分析(42/126):移动应用商业模式的深度剖析与实战要点 在创业和数据分析的学习之路上,我们持续探索不同商业模式的奥秘,今天聚焦于移动应用商业模式。我希望和大家一起进步,深入解读《精益数据分析…...

2025.5.6总结

昨天12:30睡觉,结果翻来覆去睡不着,两点半左右才睡着。看了一下最近的睡眠打卡,平均入睡时间是凌晨12:30。 自五一一个人过了5天,我才明白,人是需要社交的,只有在社交中才能找到自我…...

UE5 脚部贴地不穿过地板方案

UE自带的IK RIG和ControlRig技术 【UE5】角色脚部IK——如何让脚贴在不同斜度的地面(设置脚的旋转)_哔哩哔哩_bilibili 实验后这个还是有一部分问题,首先只能保证高度不能穿过,但是脚步旋转还是会导致穿模 IK前,整个模型在斜坡上会浮空 参考制作:https://www.youtube.com/w…...

Spring AI 函数调用(Function Call)系统设计方案

一、系统概述与设计目标 1.1 核心目标 从零构建一个灵活、安全、高效的函数调用系统,使大语言模型能够在对话中调用应用程序中的方法,同时保持良好的开发体验和企业级特性。 1.2 主要功能需求 支持通过注解将普通Java方法标记为可被AI调用的函数自动生成符合LLM要求的函数…...

Jupyter Notebook为什么适合数据分析?

Jupyter Notebook 是一款超实用的 Web 应用程序,在数据科学、编程等诸多领域都发挥着重要作用。它最大的特点就是能让大家轻松创建和共享文学化程序文档。这里说的文学化程序文档,简单来讲,就是把代码、解释说明、数学公式以及数据可视化结果…...

Leetcode Hot 100字母异位词分词

题目描述 思路 根据题意,我们可以得知我们需要将字符统计数一样的字符串,放在一起,并以列表进行返回。因此我们可以通过一个哈希表,把统计相同的放在一起,最终返回即可 代码 class Solution:def groupAnagrams(self…...

用python实现鼠标监听与手势交互

摘要 本文探讨了一种基于Python的数学函数可视化系统的设计与实现,该系统整合了Pynput鼠标事件监听机制、Matplotlib绘图引擎以及PyQt5图形用户界面框架。系统通过人机交互方式实现了函数图像的直观构建与可视化表达,支持多种函数类型的参数化建模与实时…...

UE5 GAS开发P47 游戏标签

FGameplayTag 是 Unreal Engine 中用于标记游戏对象的系统。它允许开发者为游戏对象分配标签,以便在游戏中对其进行分类、识别和操作。 FGameplayTag 结构用于表示单个游戏标签,而 FGameplayTagContainer 则用于表示一组游戏标签。 这些标签可以用于诸…...

C# 实现PLC数据自动化定时采集与存储(无需界面,自动化运行)

C# 实现PLC数据自动化定时采集与存储(无需界面,自动化运行) 在平时开发中,我们时常会遇到需要后台静默运行的应用场景,这些程序不需要用户的直接操作或界面展示,而是专注于定时任务的执行。比如说&#xf…...

Java实现堆排序算法

1. 堆排序原理图解 堆排序是一种基于二叉堆(通常使用最大堆)的排序算法。其核心思想是利用堆的性质(父节点的值大于或等于子节点的值)来高效地进行排序。堆排序分为两个主要阶段:建堆和排序。 堆排序步骤: …...

封装axios,实现取消请求

封装axios import axios from axios// 创建自定义的请求类 class CancelableRequest {constructor() {this.controller new AbortController()}abort() {this.controller.abort()} }// 创建 axios 实例 const service axios.create({baseURL: process.env.VUE_APP_BASE_API,…...

在 Laravel 12 中实现 WebSocket 通信

在 Laravel 12 中实现 WebSocket 通信主要有两种主流方案:‌官方推荐的 Laravel Reverb‌ 和 ‌第三方库(如 Soketi/Pusher 或 Workerman/Swoole)‌。以下是详细实现步骤: 一、官方方案:Laravel Reverb(推…...

iPhone或iPad想要远程投屏到Linux系统电脑,要怎么办?

苹果手机自带AirPlay投屏功能,对于苹果电脑,自然可以随时投屏。但如果电脑是Linux系统,而且还想要远程投屏呢?这时候要怎么将iPhone或iPad投屏到Linux电脑? 方法很简单,用AirDroid Cast的网页版即可。 步骤…...

Ubuntu 22.04 安装配置远程桌面环境指南

在云服务器或远程主机上安装图形化桌面环境,可以极大地提升管理效率和用户体验。本文将详细介绍如何在 Ubuntu 22.04 (Jammy Jellyfish) 系统上安装和配置 Xfce4 桌面环境,并通过 VNC 实现远程访问。 系统环境 操作系统:Ubuntu 22.04 LTS (Jammy Jellyfish)架构:AMD64安装…...

【Redis | 基础总结篇 】

目录 前言: 1.Redis的介绍: 2.Redis的类型与命令: 3.Redis的安装: 3.1.Windows版本 3.2.Linux版本 4.在java中使用Redis: 4.1.介绍 4.2.Jedis 4.3.Spring Data Redis 前言: 本篇主要讲述了Redis的…...

如何通过外网访问内网?对比5个简单的局域网让互联网连接方案

在实际应用中,常常需要从外网访问内网资源,如远程办公访问公司内部服务器、在家访问家庭网络中的设备等。又或者在本地内网搭建的项目应用需要提供互联网服务。以下介绍几种常见的外网访问内网、内网提供公网连接实现方法参考。 一、公网IP路由器端口映…...

iMeta | 临床研究+scRNA-seq的组合思路 | 真实世界新辅助研究,HER2⁺就一定受益?单细胞揭示真正的“疗效敏感克隆”

👋 欢迎关注我的生信学习专栏~ 如果觉得文章有帮助,别忘了点赞、关注、评论,一起学习 近年来,临床医学与单细胞组学的结合开启了全新的研究范式,让临床医生能以“显微镜”般的精度,深入理解疾病机制与疗效…...

国标GB28181视频平台EasyCVR安防系统部署知识:如何解决异地监控集中管理和组网问题

在企业、连锁机构及园区管理等场景中,异地监控集中管控与快速组网需求日益迫切。弱电项目人员和企业管理者亟需整合分散监控资源,实现跨区域统一管理与实时查看。 一、解决方案 案例一:运营商专线方案​ 利用运营商专线,连接各分…...

220V降12V1000mA非隔离芯片WT5110

220V降12V1000mA非隔离芯片WT5110 以下是采用WT5110芯片的非隔离降压电源电路设计,将220V电压转换为12V、1000mA输出: 一、WT5110芯片简介 WT5110是一款用于非隔离降压应用的集成电路,具备宽输入电压范围和高效的转换功能。它可以将高输入电…...

【ES】Elasticsearch字段映射冲突问题分析与解决

在使用Elasticsearch作为搜索引擎时,经常会遇到一些映射(Mapping)相关的问题。本文将深入分析字段映射冲突问题,并通过原生的Elasticsearch API请求来复现和解决这个问题。 问题描述 在实际项目中,我们遇到以下错误: Transport…...

【上位机——MFC】绘图

相关类 CDC类(绘图设备类):封装了各种绘图相关的函数,以及两个非常重要的成员变量m_hDC和m_hAttribDC CPaintDC类,封装了在WM_PAINT消息中绘图的绘图设备 CClientDC类,封装了在客户区绘图的绘图设备 CGdiObject类(绘图对象类) 封…...

【AI】Ubuntu 22.04 evalscope 模型评测 Qwen3-4B-FP8

安装evalscope mkdir evalscope cd evalscope/ python3 -m venv venv source venv/bin/activate pip install evalscope[app,perf] -U -i https://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.compip install tiktoken omegaconf -i https://mirrors.aliyu…...