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

DjangoORM字段参数、常用字段类型及参数、模型和表单验证器详解

由于项目原因必须使用DjangoORM模型,所以今天整理了一下关于DjangoORM模型里的详细内容。包含字段参数、常用字段类型及参数、模型和表单验证器。


一、通用字段参数
这些参数可以应用于多种字段类型:

(1)null:如果为 True,则数据库中该字段可以存储 NULL 值。默认为 False。

(2)blank: 布尔值。如果为 True,则表单验证允许该字段为空。默认为 False。关键区别:blank 控制表单验证(是否允许在表单中留空),而 null 控制数据库存储(是否允许存储 NULL 值)。 它们是独立的设置。通常,对于字符串类型(CharFieldTextField 等),如果允许为空,应该同时设置 blank=Truenull=True

(3)choices: 一个由二元组 (实际存储值, 显示值) 组成的序列,用于提供字段的可选项。例如:STATUS_CHOICES = [(0, '草稿'), (1, '发布')]。在表单中会显示为下拉框。

(4)default: 字段的默认值。

(5)help_text: 在表单中显示的帮助文本,用于提供字段的说明。

(6)primary_key: 布尔值。如果为 True,则该字段为主键。每个模型只能有一个字段设置 primary_key=True。 通常 Django 会自动添加 AutoFieldBigAutoField 作为主键,除非你需要自定义主键字段名或使用复合主键(不推荐)。

(7)unique: 布尔值。如果为 True,则该字段的值在数据库中必须是唯一的。

(8)verbose_name: 字段的人类可读的名称,用于在管理后台等地方显示。如果不指定,Django 会使用字段名并把下划线转换为空格。

(9)db_column: 用于指定数据库字段的名称。通常不需要手动指定,Django 会根据字段名自动生成。只有在需要与现有数据库集成或有特殊的命名规范时才需要使用。

(10)db_index: 布尔值。如果为 True,则在数据库中为此字段创建索引,可以加快查询速度。索引会提高查询速度,但会降低写入速度,并且会占用额外的存储空间。因此,应该只为经常用于查询的字段创建索引。

二、常用字段类型及参数

(1)AutoField: 一个自动递增的整数类型字段,通常用作主键。在 Django 3.2 之前,默认主键类型是 AutoField,之后是 BigAutoField。强烈建议不要手动指定主键,除非有特殊需求。

BigAutoField: 64 位整数类型字段,类似于 AutoField,但支持更大的数值范围。Django 3.2 之后成为默认主键类型。

(2)CharField: 用于存储短字符串。

max_length: 字符串的最大长度,必须指定。

(3)TextField: 用于存储大量文本。

没有 max_length 限制。

IntegerField、BigIntegerField、SmallIntegerField、PositiveIntegerField、PositiveSmallIntegerField: 用于存储各种大小的整数。

(4)FloatField: 用于存储浮点数。对应 SQL 的 FLOATDOUBLE。精度可能存在问题,对于需要精确计算的场景,建议使用 DecimalField

(5)DecimalField: 用于存储固定精度的十进制数。

max_digits: 数字的最大位数(包括整数部分和小数部分)。

decimal_places: 小数位数。

(6)BooleanField: 用于存储布尔值(TrueFalse)。对应 SQL 的 TINYINT(1)BOOLEAN

(7)NullBooleanField:已完全弃用,应该使用 BooleanField(null=True)

(8)DateField: 用于存储日期。

auto_now: 每次保存对象时自动更新为当前日期。通常用于记录修改时间。

auto_now_add: 对象第一次创建时自动设置为当前日期。通常用于记录创建时间。

auto_nowauto_now_add 互斥,不能同时使用。

(9)DateTimeField: 用于存储日期和时间。

auto_now: 每次保存对象时自动更新为当前日期和时间。

auto_now_add: 对象第一次创建时自动设置为当前日期和时间。

auto_nowauto_now_add 互斥,不能同时使用。

(10)TimeField: 用于存储时间。

(11)DurationField: 用于存储时间间隔。

(12)EmailField: 用于存储电子邮件地址。会对输入进行基本的电子邮件格式验证。

(13)FileField: 用于存储文件。

upload_to: 指定文件上传的目录。强烈推荐使用可调用对象(函数或方法),以便更灵活地组织文件存储路径,例如按日期或用户ID等。

max_length: 文件路径的最大长度。

(14)ImageField: 用于存储图像文件。继承自 FileField。需要安装 Pillow 库 (pip install Pillow)。

(15)URLField: 用于存储 URL。会对输入进行基本的 URL 格式验证。

(16)UUIDField: 用于存储 UUID。

(17)GenericIPAddressField: 用于存储 IPv4 或 IPv6 地址。

protocol: 指定协议('both''IPv4''IPv6')。

unpack_ipv4: 如果为 True,则将 IPv4 地址解包为 IPv6 格式。

(18)ForeignKey: 用于定义多对一关系。

to: 关联的模型。

on_delete: 非常重要! 指定删除关联对象时的行为:

models.CASCADE: 级联删除。

models.PROTECT: 阻止删除。

models.SET_NULL: 设置为 NULL,必须配合 null=True 使用。

models.SET_DEFAULT: 设置为默认值,必须配合 default 参数使用。

models.DO_NOTHING: 什么也不做(不推荐,容易造成数据不一致)。

models.SET(value): 设置为指定的值 valuevalue 也可以是一个可调用对象。

related_name: 反向关联的名称。强烈推荐显式指定,提高代码可读性。

related_query_name: 用于反向查询时的查询名称。

db_constraint: 是否在数据库中创建外键约束,默认为 True。通常保持默认值。

(19)ManyToManyField: 用于定义多对多关系。

through: 指定中间模型。当需要在关系中存储额外数据(例如关系创建时间)时,必须使用 through 指定中间模型。

db_table: 指定数据库表的名称。通常不需要指定,Django 会自动生成。

parent_link: 仅用于多表继承的情况,表示该字段是父模型的链接。并非所有 ManyToManyField 都会用到。

(20)OneToOneField: 用于定义一对一关系。本质上就是一个 unique=TrueForeignKey

再次强调的重要点:

理解 blanknull 的区别及其组合使用方式。

on_delete 参数至关重要,根据业务逻辑谨慎选择。

强烈建议为 ForeignKeyManyToManyField 指定 related_name

NullBooleanField 已完全弃用。

Django 3.2 之后,默认主键类型是 BigAutoField

auto_nowauto_now_add 互斥。

对于浮点数精确计算,使用 DecimalField

结合上面通用字段参数和常用字段类型及参数编写几个关于电商平台的表:

import uuid
from django.db import models
from django.core.exceptions import ValidationError
from django.db.models import F
from django.utils.translation import gettext_lazy as _class Category(models.Model):"""商品分类"""name = models.CharField(_("分类名称"), max_length=50, unique=True)description = models.TextField(_("分类描述"), blank=True, null=True)def __str__(self):return self.nameclass Meta:verbose_name = _("商品分类")verbose_name_plural = _("商品分类") # 添加复数形式class Tag(models.Model):"""商品标签"""name = models.CharField(_("标签名称"), max_length=20, unique=True)def __str__(self):return self.nameclass Meta:verbose_name = _("商品标签")verbose_name_plural = _("商品标签")class Product(models.Model):"""商品信息"""STATUS_CHOICES = [(0, _('下架')),(1, _('上架')),]id = models.UUIDField(_("商品ID"), primary_key=True, default=uuid.uuid4, editable=False)name = models.CharField(_("商品名称"), max_length=100, db_index=True)description = models.TextField(_("商品描述"), blank=True, null=True)price = models.DecimalField(_("商品价格"), max_digits=14, decimal_places=2)stock = models.PositiveIntegerField(_("商品库存"), default=0)created_at = models.DateTimeField(_("创建时间"), auto_now_add=True)updated_at = models.DateTimeField(_("更新时间"), auto_now=True)status = models.IntegerField(_("商品状态"), choices=STATUS_CHOICES, default=1)category = models.ForeignKey(Category, on_delete=models.PROTECT, related_name='products', verbose_name=_("商品分类"))tags = models.ManyToManyField(Tag, related_name='products', blank=True, verbose_name=_("商品标签"))image = models.ImageField(_("商品图片"), upload_to='products/', blank=True, null=True)def __str__(self):return self.nameclass Meta:verbose_name = _("商品")verbose_name_plural = _("商品")ordering = ['-created_at']class Order(models.Model):"""订单信息"""STATUS_CHOICES = [(0, _('待付款')),(1, _('已付款')),(2, _('已发货')),(3, _('已完成')),(4, _('已取消')),]order_number = models.CharField(_("订单编号"), max_length=20, unique=True)created_at = models.DateTimeField(_("下单时间"), auto_now_add=True)status = models.IntegerField(_("订单状态"), choices=STATUS_CHOICES, default=0)def __str__(self):return self.order_numberclass Meta:verbose_name = _("订单")verbose_name_plural = _("订单")class OrderItem(models.Model):"""订单条目"""order = models.ForeignKey(Order, on_delete=models.CASCADE, related_name='items', verbose_name=_("所属订单"))product = models.ForeignKey(Product, on_delete=models.PROTECT, related_name='order_items', verbose_name=_("商品"))quantity = models.PositiveIntegerField(_("购买数量"))price = models.DecimalField(_("购买时价格"), max_digits=14, decimal_places=2)def clean(self):if self.quantity > self.product.stock:raise ValidationError({'quantity': _('库存不足')}) # 翻译错误信息def save(self, *args, **kwargs):# 使用 F() 表达式原子性地更新库存,避免并发问题if self.pk is None: #仅在创建新OrderItem时更新库存Product.objects.filter(pk=self.product.pk).update(stock=F('stock') - self.quantity)super().save(*args, **kwargs)class Meta:verbose_name = _("订单条目")verbose_name_plural = _("订单条目")# 移除信号处理,使用 F() 表达式更高效和安全
# @receiver(pre_save, sender=OrderItem)
# def check_stock(sender, instance, **kwargs):
#     if instance.quantity > instance.product.stock:
#         raise ValidationError({'quantity': '库存不足'})
# 关于库存管理的更详细解释:
# 使用 F() 表达式是解决并发环境下库存管理的最佳实践。假设有两个用户同时购买同一件商品,如果使用 Python 代码先读取库存,然后减去购买数量再保存,就可能出现以下情况:
# 用户 A 读取库存,假设为 10。
# 用户 B 读取库存,此时库存仍然为 10。
# 用户 A 购买 5 件,库存更新为 5。
# 用户 B 购买 5 件,库存更新为 5。
# 结果是两个用户都购买了 5 件,总共购买了 10 件,而实际上库存只减少了 5 件,导致超卖。

三、模型和表单验证器

(1)数值验证器:

MaxValueValidator(limit_value): 验证值是否小于或等于 limit_value

MinValueValidator(limit_value): 验证值是否大于或等于 limit_value

DecimalValidator(max_digits, decimal_places): 验证十进制数的位数和精度。max_digits 是总位数(包括小数位),decimal_places 是小数位数。

IntegerValidator: 验证值是否为整数。

(2)字符串验证器:

EmailValidator(message=None, code=None, allowlist=None): 验证值是否为有效的电子邮件地址。allowlist 参数允许指定额外的域名白名单。

RegexValidator(regex, message=None, code=None, inverse_match=None, flags=0): 使用正则表达式 regex 验证值。inverse_match 参数用于反向匹配(即值 不 应该匹配正则表达式)。flags 参数用于设置正则表达式的标志(例如 re.IGNORECASE)。

URLValidator(schemes=None, message=None, code=None): 验证值是否为有效的 URL。schemes 参数允许指定允许的 URL 协议列表(例如 ['http', 'https'])。

MaxLengthValidator(limit_value): 验证字符串的最大长度。

MinLengthValidator(limit_value): 验证字符串的最小长度。

(3)文件验证器:

FileExtensionValidator(allowed_extensions, message=None, code=None): 验证上传文件的扩展名是否在 allowed_extensions 列表中。

(4)其他验证器和验证函数:

validate_email(value): 验证值是否为有效的电子邮件地址。(功能与 EmailValidator 类似,但可以直接作为函数使用。)

validate_slug(value): 验证值是否为有效的 slug(URL 中使用的短标签,通常只包含字母、数字、连字符和下划线)。

validate_unicode_slug(value): 验证值是否为有效的 Unicode slug。

validate_ipv4_address(value): 验证值是否为有效的 IPv4 地址。

validate_ipv6_address(value): 验证值是否为有效的 IPv6 地址。

validate_ipv46_address(value): 验证值是否为有效的 IPv4 或 IPv6 地址。

(5)使用方法:

这些验证器可以用于模型字段和表单字段。

(6)模型字段: 将验证器实例作为列表传递给字段的 validators 参数。

(7)表单字段: 同样,将验证器实例列表传递给字段的 validators 参数。

(8)自定义验证器:

除了内置验证器,你还可以创建自定义验证器。自定义验证器是一个可调用对象(例如函数或带有 __call__ 方法的类),它接收一个值,并在值无效时引发 django.core.exceptions.ValidationError 异常。

结合上面模型和表单验证器和上面的案例重新编写关于电商平台的表:

import uuid
from django.db import models, transaction
from django.db.models import F
from django.utils.translation import gettext_lazy as _
from django.core.validators import (MaxValueValidator,MinValueValidator,DecimalValidator,RegexValidator,URLValidator,MaxLengthValidator,MinLengthValidator,FileExtensionValidator,validate_email,validate_slug,
)
from django import formsclass Category(models.Model):"""商品分类"""name = models.CharField(_("分类名称"), max_length=50, unique=True)description = models.TextField(_("分类描述"), blank=True, null=True)def __str__(self):return self.nameclass Meta:verbose_name = _("商品分类")verbose_name_plural = _("商品分类")class Tag(models.Model):"""商品标签"""name = models.CharField(_("标签名称"), max_length=20, unique=True)def __str__(self):return self.nameclass Meta:verbose_name = _("商品标签")verbose_name_plural = _("商品标签")class Product(models.Model):"""商品信息"""STATUS_CHOICES = [(0, _('下架')),(1, _('上架')),]id = models.UUIDField(_("商品ID"), primary_key=True, default=uuid.uuid4, editable=False)name = models.CharField(_("商品名称"), max_length=100, db_index=True, validators=[MinLengthValidator(2)])description = models.TextField(_("商品描述"), blank=True, null=True)price = models.DecimalField(_("商品价格"), max_digits=14, decimal_places=2, validators=[MinValueValidator(0)])stock = models.PositiveIntegerField(_("商品库存"), default=0) # 移除不必要的MaxValueValidator,或根据实际业务调整created_at = models.DateTimeField(_("创建时间"), auto_now_add=True)updated_at = models.DateTimeField(_("更新时间"), auto_now=True)status = models.IntegerField(_("商品状态"), choices=STATUS_CHOICES, default=1)category = models.ForeignKey(Category, on_delete=models.PROTECT, related_name='products', verbose_name=_("商品分类"))tags = models.ManyToManyField(Tag, related_name='products', blank=True, verbose_name=_("商品标签"))image = models.ImageField(_("商品图片"), upload_to='products/', blank=True, null=True, validators=[FileExtensionValidator(['jpg', 'jpeg', 'png', 'gif'])])def __str__(self):return self.nameclass Meta:verbose_name = _("商品")verbose_name_plural = _("商品")ordering = ['-created_at']class Order(models.Model):"""订单信息"""STATUS_CHOICES = [(0, _('待付款')),(1, _('已付款')),(2, _('已发货')),(3, _('已完成')),(4, _('已取消')),]order_number = models.CharField(_("订单编号"), max_length=20, unique=True, db_index=True, validators=[RegexValidator(r'^[A-Za-z0-9-]+$', _('订单编号只能包含字母、数字和连字符'))])created_at = models.DateTimeField(_("下单时间"), auto_now_add=True)status = models.IntegerField(_("订单状态"), choices=STATUS_CHOICES, default=0)def __str__(self):return self.order_numberclass Meta:verbose_name = _("订单")verbose_name_plural = _("订单")class OrderItem(models.Model):"""订单条目"""order = models.ForeignKey(Order, on_delete=models.CASCADE, related_name='items', verbose_name=_("所属订单"))product = models.ForeignKey(Product, on_delete=models.PROTECT, related_name='order_items', verbose_name=_("商品"))quantity = models.PositiveIntegerField(_("购买数量"), validators=[MinValueValidator(1)])price = models.DecimalField(_("购买时价格"), max_digits=14, decimal_places=2, validators=[MinValueValidator(0)])def save(self, *args, **kwargs):with transaction.atomic():if self.pk is None:Product.objects.filter(pk=self.product.pk).update(stock=F('stock') - self.quantity)else:old_item = OrderItem.objects.get(pk=self.pk)stock_diff = old_item.quantity - self.quantityProduct.objects.filter(pk=self.product.pk).update(stock=F('stock') + stock_diff)super().save(*args, **kwargs)def delete(self, *args, **kwargs):with transaction.atomic():Product.objects.filter(pk=self.product.pk).update(stock=F('stock') + self.quantity)super().delete(*args, **kwargs)class Meta:verbose_name = _("订单条目")verbose_name_plural = _("订单条目")class OrderItemForm(forms.ModelForm):class Meta:model = OrderItemfields = '__all__'def clean_quantity(self):quantity = self.cleaned_data['quantity']product = self.cleaned_data['product']if quantity > product.stock:raise forms.ValidationError(_('库存不足'))return quantity

相关文章:

DjangoORM字段参数、常用字段类型及参数、模型和表单验证器详解

由于项目原因必须使用DjangoORM模型,所以今天整理了一下关于DjangoORM模型里的详细内容。包含字段参数、常用字段类型及参数、模型和表单验证器。 一、通用字段参数 这些参数可以应用于多种字段类型: (1)null:如果为 …...

【pyqt】(四)Designer布局

布局 之前我们利用鼠标拖动的控件的时候,发现一些部件很难完成对齐这些工作,pyqt为我们提供的多种布局功能不仅可以让排版更加美观,还能够让界面自适应窗口大小的变化,使得布局美观合理。最常使用的三种布局就是垂直河子布局、水…...

每日一学——自动化工具(Jenkins)

3.2 Jenkins 3.2.1 CI/CD流程设计 嘿,小伙伴们!今天我们来聊聊Jenkins——这个在持续集成(CI)和持续部署(CD)领域里大名鼎鼎的工具。Jenkins不仅可以帮我们自动化构建和测试代码,还能自动部署…...

k8s基础(1)—Kubernetes-Pod

一、Pod简介 Pod是Kubernetes(k8s)系统中可以创建和管理的最小单元,是资源对象模型中由用户创建或部署的最小资源对象模型‌。Pod是由一个或多个容器组成的,这些容器共享存储和网络资源,可以看作是一个逻辑的主机‌。…...

《Java核心技术 卷II》流的创建

流的创建 Collection接口中stream方法可以将任何集合转换为一个流。 用静态Stream.of转化成数组。 Stream words Stream.of(contents.split("\\PL")); of方法具有可变长参数,可以构建具有任意数量的流。 使用Array.stream(array,from,to)可以用数组…...

单片机实物成品-010 智能宠物喂食系统(代码+硬件+论文)

项目介绍 版本1:oled显示定时投喂(舵机模拟)声光报警显示实时时间 ---演示视频: 智能宠物喂食001_哔哩哔哩_bilibili 1. STM32F103C8T6 单片机进行数据处理 2. OLED 液晶显示 3,按键1 在数据显示界面时按下按键1切…...

我用AI学Android Jetpack Compose之开篇

打算写一个系列,我用AI学Android Jetpack Compose,本教程需要有一定Android开发基础的同学,至少能运行成功Hello World!会基本的Java或Kotlin语法,如果不会,先去学习基本的Android应用开发,推荐…...

算法题(24):只出现一次的数字(二)

审题: 数组中除了答案元素只出现一次外,其他元素都会出现三次,我们需要找到并返回答案元素 思路: 由于现在会出现三次,所以利用异或运算符的方法就会失效。而所有数据都在32位二进制范围内,所以我们采用依次…...

计算机网络 (15)宽带接入技术

前言 计算机网络宽带接入技术是指通过高速、大容量的通信信道或网络,实现用户与互联网或其他通信网络之间的高速连接。 一、宽带接入技术的定义与特点 定义:宽带接入技术是指能够传输大量数据的通信信道或网络,其传输速度通常较高&#xff0c…...

什么是索引

在数据库管理系统中,索引是一种数据结构,用于快速定位数据库表中的特定记录。索引类似于一本书的目录,可以帮助数据库引擎迅速找到所需的数据,而不必扫描整个表。 类型:常见的数据库索引类型包括B树索引、哈希索引、全…...

【数据结构】树链刨分

1 u v k,修改路径上节点权值,将节点 uu 和节点 vv 之间路径上的所有节点(包括这两个节点)的权值增加 kk。2 u k,修改子树上节点权值,将以节点 uu 为根的子树上的所有节点的权值增加 kk。3 u v,询…...

perl包安装的CPAN大坑

先看一个用cpan安装的例子。 $cpan -i App::cpanminus Loading internal logger. Log::Log4perl recommended for better logging Reading /home/wubin/.cpan/MetadataDatabase was generated on Tue, 24 Dec 2024 15:29:01 GMT Running install for module App::cpanminusTry…...

打造三甲医院人工智能矩阵新引擎(四):医疗趋势预测大模型篇 EpiForecast与DeepHealthNet合成应用

一、引言 1.1 研究背景与意义 在当今数字化时代,医疗领域积累了海量的数据,涵盖电子病历、医学影像、基因序列、临床检验结果等多源异构信息。这些数据蕴含着疾病发生发展、治疗反应、疫情传播等规律,为医疗趋势预测提供了数据基础。准确的医疗趋势预测能辅助医疗机构提前…...

RSA e与phi不互质(AMM算法进行有限域开根)

e与phi不互质 这一部分学习来自trup师傅的博客 针对CTFer的e与phi不互素的问题 - 跳跳糖 1&#xff1a;m^t<n from Crypto.Util.number import * from secret import flag flag bflag{*********} m bytes_to_long(flag) p getPrime(1024) q getPrime(1024) n p * q …...

021-spring-springmvc-组件

SpringMVC的handMapping 比较重要的部分 比较重要的部分 比较重要的部分 关于组件的部分 这里以 RequestMappingHandlerMapping 为例子 默认的3个组件是&#xff1a; org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping org.springframework.web.servlet.mvc…...

【Leecode】Leecode刷题之路第99天之恢复二叉搜索树

题目出处 99-恢复二叉搜索树-题目出处 题目描述 个人解法 思路&#xff1a; todo代码示例&#xff1a;&#xff08;Java&#xff09; todo复杂度分析 todo官方解法 99-恢复二叉搜索树-官方解法 方法1&#xff1a;显式中序遍历 思路&#xff1a; 代码示例&#xff1a;&…...

【从零开始入门unity游戏开发之——C#篇41】C#迭代器(Iterator)——自定义类实现 foreach 操作

文章目录 前言一、什么是迭代器&#xff1f;二、标准迭代器的实现方法1、自定义一个类CustomList2、让CustomList继承IEnumerable接口3、再继承IEnumerator接口4、完善迭代器功能5、**foreach遍历的本质**&#xff1a;6、在Reset方法里把光标复原 三、用yield return语法糖实现…...

运算符重载 - 自定义运算符行为

引言 C 是一种支持面向对象编程&#xff08;OOP&#xff09;的编程语言&#xff0c;它允许程序员通过运算符重载来自定义类的行为。运算符重载使得我们可以为自定义类型定义与内置类型相似的操作方式&#xff0c;从而使代码更加直观和易读。 本文将详细介绍 C 中的运算符重载…...

RabbitMQ-基本使用

RabbitMQ: One broker to queue them all | RabbitMQ 官方 安装到Docker中 docker run \-e RABBITMQ_DEFAULT_USERrabbit \-e RABBITMQ_DEFAULT_PASSrabbit \-v mq-plugins:/plugins \--name mq \--hostname mq \-p 15672:15672 \-p 5672:5672 \--network mynet\-d \rabbitmq:3…...

sklearn基础教程

sklearn&#xff0c;全称为Scikit-learn&#xff0c;是一个基于Python的开源机器学习库&#xff0c;广泛用于数据挖掘和数据分析。它建立在NumPy、SciPy和matplotlib这些科学计算库之上&#xff0c;提供了简单而高效的工具来解决各种机器学习问题。 安装 首先&#xff0c;确保…...

173. 矩阵距离 acwing -多路BFS

原题链接&#xff1a;173. 矩阵距离 - AcWing题库 给定一个 N行 M 列的 01矩阵 A&#xff0c;A[i][j] 与 A[k][l]]之间的曼哈顿距离定义为&#xff1a; dist(i,j,k,l)|i−k||j−l|| 输出一个 N 行 M 列的整数矩阵 B&#xff0c;其中&#xff1a; B[i][j]min1≤x≤N,1≤y≤M,A…...

【MySQL】--- 内置函数

Welcome to 9ilks Code World (๑•́ ₃ •̀๑) 个人主页: 9ilk (๑•́ ₃ •̀๑) 文章专栏&#xff1a; MySQL &#x1f3e0; 时间函数 约定&#xff1a;我们在MySQL中说的日期指的是年 月 日&#xff0c;时间指的是时 分 秒。 &#x1f9f7; now() select n…...

更改element-plus的table样式

表头样式&#xff1a; <el-table :data"props.tableData" style"width: 100%" :header-cell-style"headerCellStyle" :cell-style"cellStyle"> </el-table>样式&#xff1a; // 表头样式 const headerCellStyle {backgro…...

25.Java JUC 引入(进程与线程、线程的状态、并发与并行、管程、用户线程与守护线程)

一、JUC 简介 JUC 是 java.util.concurrent 工具包的简称&#xff0c;这是一个处理线程的工具包&#xff0c;从 JDK1.5 开始出现 二、进程与线程 1、基本介绍 &#xff08;1&#xff09;进程 进程是计算机中的程序关于某数据集合上的一次运行活动&#xff0c;是系统进行资源…...

双目视觉:reprojectImageTo3D函数

前言 reprojectImageTo3D 是 OpenCV 中用于从视差图生成三维点云的函数。它的原理是利用视差图和相机的校准参数&#xff0c;通过三角测量法&#xff0c;计算每个像素对应的三维坐标。以下内容根据源码分析所写&#xff0c;觉得可以的话&#xff0c;点赞收藏哈&#xff01;&am…...

深度解析 Kubernetes Service 负载均衡器及其在 Cube Studio 推理服务中的优化选择

目录 一、Kubernetes Service 负载均衡器概述 Service 的核心功能&#xff1a; 二、Kubernetes Service 类型及适用场景 1. ClusterIP&#xff08;默认类型&#xff09; 2. NodePort 3. LoadBalancer 4. ExternalName 5. Ingress&#xff08;增强型 Service&#xff09;…...

NLP 中文拼写检测纠正论文-07-NLPTEA-2020中文语法错误诊断共享任务概述

拼写纠正系列 NLP 中文拼写检测实现思路 NLP 中文拼写检测纠正算法整理 NLP 英文拼写算法&#xff0c;如果提升 100W 倍的性能&#xff1f; NLP 中文拼写检测纠正 Paper java 实现中英文拼写检查和错误纠正&#xff1f;可我只会写 CRUD 啊&#xff01; 一个提升英文单词拼…...

快速上手LangChain(三)构建检索增强生成(RAG)应用

文章目录 快速上手LangChain(三)构建检索增强生成(RAG)应用概述索引阿里嵌入模型 Embedding检索和生成RAG应用(demo:根据我的博客主页,分析一下我的技术栈)快速上手LangChain(三)构建检索增强生成(RAG)应用 langchain官方文档:https://python.langchain.ac.cn/do…...

深度学习中的离群值

文章目录 深度学习中有离群值吗&#xff1f;深度学习中的离群值来源&#xff1a;处理离群值的策略&#xff1a;1. 数据预处理阶段&#xff1a;2. 数据增强和鲁棒模型&#xff1a;3. 模型训练阶段&#xff1a;4. 异常检测集成模型&#xff1a; 如何处理对抗样本&#xff1f;总结…...

汽车燃油软件标定测试

油箱测试 确定油箱的参数&#xff1a; 总容积&#xff0c;额定容积&#xff0c;不可用容积等。油泵测试&#xff08;静态&#xff09; 分为加油测试&#xff0c;减油测试&#xff0c;1L或者500ml增减&#xff1b; 分别测试油泵的阻值输出&#xff0c;类似&#xff1a; 油量 阻…...

#C02L02P01. C02.L02.一维数组最值问题.知识点1.求最大值

从键盘读入n&#xff08;1<n<100&#xff09;个正整数&#xff0c;输出最大值。 算法分析 假设一个最大值 maxx0 &#xff1b; maxx 依次跟数组中的元素进行比较&#xff1b; 如果该数组元素大于 maxx &#xff0c;则将该数组元素值赋值给 maxx &#xff1b; maxx 即…...

pycharm如何拉取一个git项目,然后,修改后再上传到自建的项目中?

以chattts为例 https://github.com/2noise/ChatTTS.git 1.建一个虚拟环境&#xff0c;用于项目使用 2.pychar&#xff4d;新建工程 &#xff13;.忽略 提示 勾选&#xff0c;新建远程仓库 设置账号和密码 设置git路径&#xff0c;一般是正确的&#xff0c;点测试即可 &…...

【数据库初阶】MySQL中表的约束(上)

&#x1f389;博主首页&#xff1a; 有趣的中国人 &#x1f389;专栏首页&#xff1a; 数据库初阶 &#x1f389;其它专栏&#xff1a; C初阶 | C进阶 | 初阶数据结构 亲爱的小伙伴们&#xff0c;大家好&#xff01;在这篇文章中&#xff0c;我们将深入浅出地为大家讲解 MySQL…...

smbms超市管理系统

系统测试及实现效果 完整源码已上传资源 登录界面 系统首页 订单管理页面 用户管理页面 供应商管理页面 密码修改 SQL语句分析 存储引擎&#xff1a;InnoDB&#xff0c;支持事务和外键&#xff1b;字符集&#xff1a;utf8&#xff0c;支持多语言字符&#xff1b;排序规则&am…...

Visual Studio 中增加的AI功能

前言&#xff1a; 人工智能的发展&#xff0c;在现在&#xff0c;编程技术的IDE里面也融合了AI的基本操做。本例&#xff0c;以微软的Visual Studio中的人工智能的功能介绍例子。 本例的环境&#xff1a; Visual Studio 17.12 1 AI 智能变量检测&#xff1a; 上图展示了一…...

大功率PCB设计

1.电源和电机的走线用线径较大的铺铜&#xff0c;讲究的是走线顺畅&#xff1a; 2.同一个电源属性四层板都铺铜&#xff0c;并打很多过孔: 3.走线顺畅&#xff0c;可以看到从左到右供电。从右向左接地&#xff0c;加电流采样&#xff1a; 一个问题&#xff0c;这样会形成电源环…...

Nginx与frp结合实现局域网和公网的双重https服务

背景&#xff1a; 因为局域网内架设了 tiddlywiki、 Nextcloud 等服务&#xff0c;同时也把公司的网站架设在了本地&#xff0c;为了实现局域网直接在局域网内访问&#xff0c;而外部访问通过frps服务器作为反向代理的目的&#xff0c;才有此内容。 实现的效果如下图琐事 不喜欢…...

改投论文时如何重构

摘要: 不同期刊和会议对于论文的风格、页数限制等方面有一些差别, 论文在某个地方被拒, 改投别处时需要进行重构. 本贴描述重构的基本方案. 你的衣柜乱糟糟的, 如何清理呢? 方案 A. 把不喜欢的衣服一件件丢掉.方案 B. 把衣服全部丢出来, 然后再把喜欢的衣服一件件放进去. 对…...

【YOLOv5】源码(common.py)

该文件位于/models/common.py&#xff0c;提供了构建YOLOv5模型的各种基础模块&#xff0c;其中包含了常用的功能模块&#xff0c;如自动填充autopad函数、标准卷积层Conv、瓶颈层Bottleneck、C3、SPPF、Concat层等 参考笔记&#xff1a;【YOLOv3】 源码&#xff08;common.py…...

python中的赋值方法

python赋值方法有很多&#xff0c;主要可以分为链式赋值、系列解包赋值、常量形式赋值&#xff0c;下面介绍下三者间区别&#xff1a; 1、链式赋值&#xff1a; 链式赋值用于同一个对象赋值给多个变量 xy123 可以认为是 x 123 y 123 2、系列解包赋值&#xff1a; 系列数据…...

pyhton 掩码 筛选显示

目录 bitwise_and控制&#xff1a; 点乘&#xff1a; 性能对比&#xff1a; bitwise_and控制&#xff1a; import cv2# 读取彩色图和mask二值图 color_img cv2.imread(color_image.jpg) mask cv2.imread(mask.jpg, 0) # 以灰度模式读取二值图# 确保彩色图和mask的尺寸一…...

测试覆盖率

1、概念 覆盖率测试&#xff0c;也称为测试覆盖率分析&#xff0c;是软件测试中的一个重要概念&#xff0c;用来衡量测试用例执行时对代码的覆盖程度。它提供了一种量化的方法来评估测试集的充分性&#xff0c;即测试是否足够广泛地触及了应用程序的所有部分。覆盖率测试可以应…...

clickhouse query_log 常用查询语句

1、查询一段时间耗时超过3秒的语句。 SELECT* FROMsystem.query_log WHEREquery_duration_ms > 30000AND event_time > 2024-12-31 15:50:00 AND event_time < 2024-12-31 17:50:00 ORDER BYevent_time desc;2、查询一段时间报错的语句 SELECT* FROMsystem.query_lo…...

uni-app 资源引用(绝对路径和相对路径)方法汇总

文章目录 一、前言&#x1f343;二、绝对路径和相对路径2.1 绝对路径2.2 相对路径 三、引用组件四、引用js4.1 js 文件引入4.2 NPM支持 五、引用css六、引用json6.1 json文件引入 七、引用静态资源7.1 模板内引入静态资源7.2 css 引入静态资源7.3 js/uts 引入静态资源7.4 静态资…...

Java SpringBoot使用EasyExcel导入导出Excel文件

点击下载《Java SpringBoot使用EasyExcel导入导出Excel文件(源代码)》 在 Java Spring Boot 项目中&#xff0c;导入&#xff08;读取&#xff09;和导出&#xff08;写入&#xff09; Excel 文件是一项常见的需求。EasyExcel 是阿里巴巴开源的一个用于简化 Java 环境下 Excel…...

CDN SSLTLS以及安全

随着互联网的发展&#xff0c;内容分发网络&#xff08;CDN&#xff09;在提升网站访问速度和安全性方面发挥了重要作用。然而&#xff0c;CDN在带来便利的同时也面临一些安全挑战。本文将探讨CDN的安全风险&#xff0c;并深入解析SSL/TLS加密技术及其在CDN中的应用。 CDN的安全…...

安卓11 SysteUI添加按钮以及下拉状态栏的色温调节按钮

最近客户想要做一个台灯产品&#xff0c;需要实现 串口调节台灯功能 &#xff0c;其中包括 亮度调节 色温调节 开关 三个功能 话不多说&#xff0c;贴代码 diff --git a/packages/SystemUI/AndroidManifest.xml b/packages/SystemUI/AndroidManifest.xml old mode 100644 new …...

SpringMVC启动与请求处理流程解析

目录 SpringMVC的基本结构 1.MVC简介 2.基本结构 什么是Handler&#xff1f; 什么是HandlerMapping? 什么是HandlerAdapter&#xff1f; RequestMapping方法参数解析 DispatcherServlet的init()方法 DispatcherServlet的doService()方法 SpringBoot整合SpringMVC …...

RabbitMQ案例

1. 导入依赖 <!--AMQP依赖&#xff0c;包含RabbitMQ--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId></dependency> 发送消息 注入RabbitTemplate Autowired RabbitT…...

前路漫漫,曙光在望 !

起始 从20年大一开始写作至今&#xff0c;转眼五年时光已经过去了&#xff0c;最开始在CSDN这个平台写博客也只是因为一次机缘巧合情况下得知写博客可以获取奖赏&#xff0c;所以那个时期开始疯狂在CSDN发文记录自己编程学习过程&#xff0c;但是至今也未从写作中获利一分哈…...