Django系列教程(5)——Django模型详解
目录
模型定义小案例
模型的组成
模型的字段
基础字段
关系字段
on_delete删除选项
模型的META选项
模型的方法
标准方法
示例一:自定义方法
示例二:自定义Manager方法
完美的高级Django模型示例
小结
Model (模型) 简而言之即数据模型,是一个Django应用的核心。模型不是数据本身(比如数据表里的数据), 而是抽象的描述数据的构成和逻辑关系。
每个Django的模型(model)实际上是个类,继承了models.Model
。每个Model应该包括属性(字段),关系(比如单对单,单对多和多对多)和方法。当你定义好Model模型后,Django的接口会自动帮你在数据库生成相应的数据表(table)。这样你就不用自己用SQL语言创建表格或在数据库里操作创建表格了,是不是很省心?
模型定义小案例
假设你要开发一个名叫bookstore
的应用,专门来管理书店里的书籍。我们首先要为书本和出版社创建模型。出版社有名字和地址。书有名字,描述和添加日期。我们还需要利用ForeignKey定义了出版社与书本之间单对多的关系,因为一个出版社可以出版很多书,每本书都有对应的出版社。我们定义了Publisher
和Book
模型,它们都继承了models.Model
。你能看出代码有什么问题吗?
# models.py
from django.db import modelsclass Publisher(models.Model):name = models.CharField(max_length=30)address = models.CharField()def __str__(self):return self.nameclass Book(models.Model):name = models.CharField(max_length=30)description = models.TextField(blank=True, null=True)publisher = ForeignKey(Publisher)add_date = models.DateField()def __str__(self):return self.name
模型创建好后,当你运行python manage.py migrate
命令创建数据表的时候你会遇到错误,错误原因如下:
-
CharField
里的max_length
选项没有定义 -
ForeignKey(Publisher)
里的on_delete
选项有没有定义
所以当你定义Django模型Model的时候,你一定要十分清楚2件事:
-
这个Field是否有必选项, 比如
CharField
的max_length
和ForeignKey
的on_delete
选项是必须要设置的。 -
这个Field是否必需(blank = True or False),是否可以为空 (null = True or False)。这关系到数据的完整性。
下面是订正错误后的Django模型:
# models.py
from django.db import modelsclass Publisher(models.Model):name = models.CharField(max_length=30)address = models.CharField(max_length=60)def __str__(self):return self.nameclass Book(models.Model):name = models.CharField(max_length=30)description = models.TextField(blank=True, default='')publisher = ForeignKey(Publisher,on_delete=models.CASCADE)add_date = models.DateField(auto_now_add=True)def __str__(self):return self.name
修改模型后,你需要连续运行python manage.py makemigrations
和python manage.py migrate
这两个命令,前者检查模型有无变化,后者将变化迁移至数据表。如果一切顺利,Django会在数据库(默认sqlite)中生成或变更由appname_modelname
组成的数据表,本例两张数据表分别为bookstore_publisher
和bookstore_book
。
模型的组成
一个标准的Django模型分别由模型字段、META选项和方法三部分组成。我们接下来对各部分进行详细介绍。Django官方编码规范建议按如下方式排列:
- 定义的模型字段:包括基础字段和关系字段
- 自定义的Manager方法:改变模型
class Meta选项
: 包括排序、索引等等(可选)。def __str__()
:定义单个模型实例对象的名字(可选)。def save()
:重写save方法(可选)。def get_absolute_url()
:为单个模型实例对象生成独一无二的url(可选)- 其它自定义的方法。
模型的字段
models.Model
提供的常用模型字段包括基础字段和关系字段。
基础字段
**CharField() **
一般需要通过max_length = xxx 设置最大字符长度。如不是必填项,可设置blank = True和default = ‘‘。如果用于username, 想使其唯一,可以设置unique = True
。如果有choice选项,可以设置 choices = XXX_CHOICES
**TextField() **
适合大量文本,max_length = xxx选项可选。
**DateField() 和DateTimeField() **
可通过default=xx选项设置默认日期和时间。
- 对于DateTimeField: default=timezone.now - 先要
from django.utils import timezone
- 如果希望自动记录一次修改日期(modified),可以设置:
auto_now=True
- 如果希望自动记录创建日期(created),可以设置
auto_now_add=True
**EmailField() **
如不是必填项,可设置blank = True和default = ‘。一般Email用于用户名应该是唯一的,建议设置unique = True
IntegerField(), SlugField(), URLField(),BooleanField()
可以设置blank = True or null = True。对于BooleanField一般建议设置defaut = True or False
**FileField(upload_to=None, max_length=100) - 文件字段 **
- upload_to = “/some folder/”:上传文件夹路径
- max_length = xxxx:文件最大长度
**ImageField (upload_to=None, max_length=100,)- 图片字段 **
- upload_to = “/some folder/”: 指定上传图片路径
关系字段
OneToOneField(to, on_delete=xxx, options) - 单对单关系
- to必需指向其他模型,比如 Book or ‘self’ .
- 必需指定
on_delete
选项(删除选项): i.e, “on_delete = models.CASCADE
” or “on_delete = models.SET_NULL
” . - 可以设置 “
related_name = xxx
” 便于反向查询。
ForeignKey(to, on_delete=xxx, options) - 单对多关系
- to必需指向其他模型,比如 Book or ‘self’ .
- 必需指定
on_delete
选项(删除选项): i.e, “on_delete = models.CASCADE
” or “on_delete = models.SET_NULL
” . - 可以设置”default = xxx” or “null = True” ;
- 如果有必要,可以设置 “
limit_choices_to =
“, - 可以设置 “
related_name = xxx
” 便于反向查询。
ManyToManyField(to, options) - 多对多关系
- to 必需指向其他模型,比如 User or ‘self’ .
- 设置 “
symmetrical = False
“ 表示多对多关系不是对称的,比如A关注B不代表B关注A - 设置 “
through = 'intermediary model'
“ 如果需要建立中间模型来搜集更多信息。 - 可以设置 “
related_name = xxx
” 便于反向查询。
示例:一个人加入多个组,一个组包含多个人,我们需要额外的中间模型记录加入日期和理由。
from django.db import modelsclass Person(models.Model):name = models.CharField(max_length=128)def __str__(self):return self.nameclass Group(models.Model):name = models.CharField(max_length=128)members = models.ManyToManyField(Person, through='Membership')def __str__(self):return self.nameclass Membership(models.Model):person = models.ForeignKey(Person, on_delete=models.CASCADE)group = models.ForeignKey(Group, on_delete=models.CASCADE)date_joined = models.DateField()invite_reason = models.CharField(max_length=64)
对于OneToOneField
和ForeignKey
, on_delete
选项和related_name
是两个非常重要的设置,前者决定了了关联外键删除方式,后者决定了模型反向查询的名字。
on_delete删除选项
Django提供了如下几种关联外键删除选项, 可以根据实际需求使用。
CASCADE
:级联删除。当你删除publisher记录时,与之关联的所有 book 都会被删除。PROTECT
: 保护模式。如果有外键关联,就不允许删除,删除的时候会抛出ProtectedError错误,除非先把关联了外键的记录删除掉。例如想要删除publisher,那你要把所有关联了该publisher的book全部删除才可能删publisher。SET_NULL
: 置空模式。删除的时候,外键字段会被设置为空。删除publisher后,book 记录里面的publisher_id 就置为null了。SET_DEFAULT
: 置默认值,删除的时候,外键字段设置为默认值。SET()
: 自定义一个值。DO_NOTHING
:什么也不做。删除不报任何错,外键值依然保留,但是无法用这个外键去做查询。
related_name选项
related_name
用于设置模型反向查询的名字,非常有用。在文初的Publisher
和Book
模型里,我们可以通过book.publisher
获取每本书的出版商信息,这是因为Book
模型里有publisher
这个字段。但是Publisher
模型里并没有book
这个字段,那么我们如何通过出版商反查其出版的所有书籍信息呢?
Django对于关联字段默认使用模型名_set
进行反查,即通过publisher.book_set.all
查询。但是book_set
并不是一个很友好的名字,我们更希望通过publisher.books
获取一个出版社已出版的所有书籍信息,这时我们就要修改我们的模型了,将related_name
设为books
, 如下所示:
# models.py
from django.db import modelsclass Publisher(models.Model):name = models.CharField(max_length=30)address = models.CharField(max_length=60)def __str__(self):return self.name# 将related_name设置为books
class Book(models.Model):name = models.CharField(max_length=30)description = models.TextField(blank=True, default='')publisher = ForeignKey(Publisher,on_delete=models.CASCADE, related_name='books')add_date = models.DateField(auto_now_add=True)def __str__(self):return self.name
我们再来对比一下如何通过publisher查询其出版的所有书籍,你觉得哪个更好呢?
- 设置
related_name
前:publisher.book_set.all
- 设置
related_name
后:publisher.books.all
模型的META选项
abstract=True
: 指定该模型为抽象模型proxy=True
: 指定该模型为代理模型verbose_name=xxx
和verbose_name_plural=xxx
: 为模型设置便于人类阅读的别名db_table= xxx
: 自定义数据表名odering=['-pub-date']
: 自定义按哪个字段排序,-
代表逆序permissions=[]
: 为模型自定义权限managed=False
: 默认为True,如果为False,Django不会为这个模型生成数据表indexes=[]
: 为数据表设置索引,对于频繁查询的字段,建议设置索引constraints=
: 给数据库中的数据表增加约束。
模型的方法
标准方法
以下三个方法是Django模型自带的三个标准方法:
def __str__()
:给单个模型对象实例设置人为可读的名字(可选)。def save()
:重写save方法(可选)。def get_absolute_url()
:为单个模型实例对象生成独一无二的url(可选)
除此以外,我们经常自定义方法或Manager方法
示例一:自定义方法
# 为每篇文章生成独一无二的url
def get_absolute_url(self):return reverse('blog:article_detail', args=[str(self.id)])# 计数器
def viewed(self):self.views += 1self.save(update_fields=['views'])
示例二:自定义Manager方法
# First, define the Manager subclass.
class DahlBookManager(models.Manager):def get_queryset(self):return super().get_queryset().filter(author='Roald Dahl')# Then hook it into the Book model explicitly.
class Book(models.Model):title = models.CharField(max_length=100)author = models.CharField(max_length=50)objects = models.Manager() # The default manager.dahl_objects = DahlBookManager() # The Dahl-specific manager.
完美的高级Django模型示例
一个完美的django高级模型结构如下所示,可以满足绝大部分应用场景,希望对你有所帮助。
from django.db import models
from django.urls import reverse# 自定义Manager方法
class HighRatingManager(models.Manager):def get_queryset(self):return super().get_queryset().filter(rating=1)# CHOICES选项
class Rating(models.IntegerChoices):VERYGOOD = 1, 'Very Good'GOOD = 2, 'Good'BAD = 3, 'Bad'class Product(models.Model):# 数据表字段name = models.CharField('name', max_length=30)rating = models.IntegerField(max_length=1, choices=Rating.choices)# MANAGERS方法objects = models.Manager()high_rating_products =HighRatingManager()# META类选项class Meta:verbose_name = 'product'verbose_name_plural = 'products'# __str__方法def __str__(self):return self.name# 重写save方法def save(self, *args, **kwargs):do_something()super().save(*args, **kwargs) do_something_else()# 定义单个对象绝对路径def get_absolute_url(self):return reverse('product_details', kwargs={'pk': self.id})# 其它自定义方法def do_something(self):
小结
本章我们介绍了Django模型的组成: 字段(基础字段和关系字段), META选项和方法。我还没有介绍模型的继承及模型特殊字段(比如Choices枚举类型),这些我们将放在Django进阶教程的模型进阶部分。查询下章我们将重点介绍如何使用这些API语句操作我们的模型,对数据表里的数据进行增删查改。
相关文章:
Django系列教程(5)——Django模型详解
目录 模型定义小案例 模型的组成 模型的字段 基础字段 关系字段 on_delete删除选项 related_name选项 模型的META选项 模型的方法 标准方法 示例一:自定义方法 示例二:自定义Manager方法 完美的高级Django模型示例 小结 Model (模型) 简而…...
2008-2024年中国手机基站数据/中国移动通信基站数据
2008-2024年中国手机基站数据/中国移动通信基站数据 1、时间:2008-2024年 2、来源:OpenCelliD 3、指标:网络类型、网络代数、移动国家/地区、移动网络代码、区域代码、小区标识、单元标识、坐标经度、坐标纬度、覆盖范围、测量样本数、坐标…...
Java在word中动态增加表格行并写入数据
SpringBoot项目中在word中动态增加表格行并写入数据,不废话,直接上配置和代码: 模板内容如下图所示: 模板是一个空word表格即可,模板放在resources下的自定义目录下,如下图示例。 实体类定义如下: @Data @AllArgsConstructor @NoArgsConstructor public class Person …...
记录小白使用 Cursor 开发第一个微信小程序(二):创建项目、编译、预览、发布(250308)
文章目录 记录小白使用 Cursor 开发第一个微信小程序(二):创建项目、编译、预览、发布(250308)一、创建项目1.1 生成提示词1.2 生成代码 二、编译预览2.1 导入项目2.2 编译预览 三、发布3.1 在微信开发者工具进行上传3…...
JavaScript基础-比较运算符
在JavaScript编程中,比较运算符用于比较两个值,并返回一个布尔值(true或false),这对于我们进行条件判断和逻辑控制至关重要。掌握这些运算符不仅有助于编写高效的代码,也是处理复杂逻辑的基础。本文将详细介…...
2025 docker安装TiDB数据库
1.确保安装了docker和docker-compose sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-composesudo chmod x /usr/local/bin/docker-compose2.编写 Docker Compose 文…...
【大学生体质】智能 AI 旅游推荐平台(Vue+SpringBoot3)-完整部署教程
智能 AI 旅游推荐平台开源文档 项目前端地址 ☀️项目介绍 智能 AI 旅游推荐平台(Intelligent AI Travel Recommendation Platform)是一个利用 AI 模型和数据分析为用户提供个性化旅游路线推荐、景点评分、旅游攻略分享等功能的综合性系统。该系统融合…...
【定制开发】碰一碰发视频系统定制开发,支持OEM
在短视频营销爆发的2025年,"碰一碰发视频"技术已成为实体商家引流标配。某连锁餐饮品牌通过定制化开发,单月视频发布量突破10万条,获客成本降低80%!本文将深入解析该系统的技术架构与开发要点,助你快速搭建高…...
模型的原始输出为什么叫 logits
模型的原始输出为什么叫 logits flyfish 一、Logarithm(对数 log) 定义:对数是指数运算的逆运算,表示某个数在某个底数下的指数。 公式:若 b x a b^x a bxa,则 log b ( a ) x \log_b(a) x logb…...
YOLOv8改进SPFF-LSKA大核可分离核注意力机制
YOLOv8改进------------SPFF-LSKA 1、LSAK.py代码2、添加YAML文件yolov8_SPPF_LSKA.yaml3、添加SPPF_LSKA代码4、ultralytics/nn/modules/__init__.py注册模块5、ultralytics/nn/tasks.py注册模块6、导入yaml文件训练 1、LSAK.py代码 论文 代码 LSKA.py添加到ultralytics/nn/…...
Unity, AssetBundle的一些“隐藏”方法
只分享实战,理论不多说了,网上都烂大街了 在Project View可以通## 标题过输入“b:” 找到所有带assetbundleName的物件 AssetBundle打包前的查找和管理方法 若需要获取 每个AssetBundle名称对应的所有具体资源文件路径(类似AssetBundle Browser工具的功能),可以…...
分布式存储学习——HBase概述
1.1 HBase概述 1.1.1 理解大数据背景 1.1.2 HBase是什么 1.1.3 HBase与Hadoop的关系 1.1.4 HBase的核心功能模块 1.1.5 HBase的应用场景和经典案例 1.1.6 小结 本文参考于学校《HBase应用于开发》教材 1.1 HBase概述 本节将介绍大数据背景和HBase的基本概念,…...
Mysql表的复合查询
1.基本查询 使用scott案列 ----来源csdn: Mysql下-scott用户表的创建_风泊月mysql 员工表-CSDN博客 案列1:查询工资高于500或岗位为MANAGER的雇员,同时还要满足他们的姓名首字母为大小的J 查询雇员,从emp表中查询,s…...
RAG技术的PDF智能问答系统
关键要点 系统基于RAG(检索增强生成)技术,允许用户上传PDF并进行智能问答。 使用Ollama的deepseek-r1模型和FAISS向量数据库,支持普通对话和基于PDF的问答模式。 提供简洁的Web界面,支持文件拖拽上传和多轮对话。 研…...
【Java基础-52】Java中URL类的openConnection()方法:原理与应用场景
在Java编程中,java.net.URL类是一个非常重要的类,用于表示统一资源定位符(URL)。通过URL类,我们可以方便地访问网络资源。其中,openConnection()方法是URL类中一个非常强大的方法,它允许我们与U…...
android为第三方提供部分系统接口
文章目录 Settings - 亮灭屏Settings - 恢复出厂设置Settings - 数字锁屏/解锁Settings - 设置系统时间PackageInstaller - 安装/卸载第三方应用摘要:本文对系统模块进行改造,提供广播等形式的接口对外提供无法直接调用的系统级别接口,实现部分功能的集合。如果是广播形式,…...
C#控制台应用程序学习——3.8
一、语言概述 1、平台相关性 C# 主要运行在.NET 平台上。.NET 提供了一个庞大的类库,C# 程序可以方便地调用这些类库来实现各种功能,如文件操作、数据库访问、网络通信等。 2、语法风格 C# 的语法与 C、C 和 Java 有一定的相似性。例如,它使用…...
钣金加工行业数字化转型MES方案
一、 行业痛点:钣金加工行业普遍面临以下挑战: 订单多样化、小批量、定制化需求增多:传统生产模式难以适应快速变化的市场需求。 生产流程复杂、工序繁多:涉及切割、折弯、焊接、表面处理等多个环节,协同效率低。 生产…...
算法-回溯算法总结
回溯与递归的区别 回溯的本质是穷举,回溯一定代表有递归 递归就一直往深处递归就好了,但是回溯还伴随着递归结束之后的”回溯操作“,例如递归中处理的1,在回溯中要-1。 回溯的算法思路 一般都是返回void,参数不能一下子全部想定…...
ORACLE 执行查询语句慢(不走对应索引)
1. 索引未被创建或未正确创建 确保为查询中涉及的列创建了索引。例如,如果你经常需要按column_name列进行查询,确保已经为该列创建了索引,索引创建语句 CREATE INDEX idx_column_name ON table_name(column_name); 2、索引不可用 原因:索引可能被标记为不…...
零售交易流程相关知识(top-down拆解)
引入 关于POS机交易时的后台数据交互 模块之间数据交换,都可以能被窃取或篡改。由此引入加密、解密机制和签名、验签机制 经典的加密、解密机制: 对称加密:DES\ TDES\ AES\ RC4 非对称加密:RSA\ DSA\ ECC 经典的签名、验签…...
在人工智能软件的帮助下学习编程实例
1 引言 本文记录在人工智能软件的帮助下学习一种全新的编程环境的实例,之所以提人工智能软件而不是单指DeepSeek,一方面DeepSeek太火了,经常服务器繁忙,用本机本地部署的最多运行70b模型,又似乎稍差。另一方面也作为一…...
C语言_数据结构总结5:顺序栈
纯C语言代码,不涉及C 想了解链式栈的实现,欢迎查看这篇文章:C语言_数据结构总结6:链式栈-CSDN博客 这里分享插入一下个人觉得很有用的习惯: 1. 就是遇到代码哪里不理解的,你就问豆包,C知道&a…...
c++ 游戏入门指南
在C++游戏开发中,你需要结合高性能编程、图形学、数学和游戏设计等多方面的知识。以下是C++游戏开发的核心步骤、工具和资源整理,帮助你从入门到进阶: 1. 开发环境搭建 编译器:MSVC(Visual Studio)、GCC、Clang。IDE:Visual Studio(Windows)、JetBrains CLion(跨平台…...
npm : 无法加载文件 C:\Program Files\nodejs\npm.ps1,因为在此系统上禁止运行脚本。
1、在 vscode 终端执行 get-ExecutionPolicy 返回 Restricted 状态是禁止的 返回 RemoteSigned 状态是可正常执行npm命令 2、更改状态 set-ExecutionPolicy RemoteSigned 如果提示需要管理员权限,可加参数运行 Set-ExecutionPolicy -Scope CurrentUser RemoteSi…...
STM32项目分享:智能家居语音系统(ASRPRO版)
目录 一、前言 二、项目简介 1.功能详解 2.主要器件 三、原理图设计 四、PCB硬件设计 PCB图 五、程序设计 六、实验效果 七、资料内容 项目分享 一、前言 项目成品图片: 哔哩哔哩视频链接: STM32智能家居语音系统(ASRPRO版&am…...
vue2实现组件库的自动按需引入,unplugin-auto-import,unplugin-vue-components
1.使用ant-design-vue或者element-ui时,如何每个组件都去import导入组件,大大降低了开发效率,如果全局一次性注册会增加项目体积,那么如何实现既不局部引入,也不全局注册? 2.在element-plus官网看到有说明…...
前端安全面试题汇总及参考答案
目录 简述 XSS 攻击的原理及三种常见类型(存储型、反射型、DOM 型) 如何在前端防御 XSS 攻击?列举编码、过滤、CSP 策略的具体实现方式 富文本编辑器场景下如何安全处理用户输入的 HTML 内容? 如何通过 HttpOnly 属性增强 Cookie 安全性?它与 XSS 防御的关系是什么? …...
《打造视频同步字幕播放网页:从0到1的技术指南》
《打造视频同步字幕播放网页:从0到1的技术指南》 为什么要制作视频同步字幕播放网页 在数字化信息飞速传播的当下,视频已然成为内容输出与获取的核心载体,其在教育、娱乐、宣传推广等诸多领域发挥着举足轻重的作用 。制作一个视频同步字幕播…...
Redis 篇
一、数据结构 二、持久化方式 Redis 提供了两种主要的持久化方式,分别是 RDB(Redis Database)和 AOF(Append Only File),此外,还可以同时使用这两种方式以增强数据安全性,以下为你…...
STM32常见外设的驱动示例和代码解析
以下是针对STM32常见外设的驱动示例和代码解析,基于HAL库实现,适用于大多数STM32系列(如F1/F4/H7等),可根据具体型号调整引脚和时钟配置。 1. GPIO驱动 应用场景:控制LED、按键检测、继电器开关等。 示例代码: // 初始化LED(推挽输出) void LED_Init(void) {GPIO_In…...
docker-compose Install reranker(fastgpt支持) GPU模式
前言BGE-重新排名器 与 embedding 模型不同,reranker 或 cross-encoder 使用 question 和 document 作为输入,直接输出相似性而不是 embedding。 为了平衡准确性和时间成本,cross-encoder 被广泛用于对其他简单模型检索到的前 k 个文档进行重新排序。 例如,使用 bge 嵌入模…...
【计算机网络入门】应用层
目录 1.网络应用模型 1.1 C/S模型(客户端服务器模型) 1.2 P2P模型(对等模型) 2. DNS系统 2.1 域名 2.2 域名解析流程 3. FTP文件传输协议 4. 电子邮件系统 4.1 SMTP协议 4.2 pop3协议 4.3 IMAP协议 4.4 基于万维网的电…...
/***************************所有笔记汇总目录***************************/
文章分类目录 STM32CubeMX 01、STM32CubeMX——定时器(普通模式和PWM模式) 02、STM32CubeMX——串口(HAL库) 03、STM32CubeMX——(uart_IAP串口)简单示例 04、STM32CubeMX——ADC采集单通道,多通道,内部…...
mysql虚拟列
目录 1. 关于虚拟列 2. 虚拟列分类 3. 虚拟列使用 3.1 创建虚拟列 3.2 为虚拟列添加索引 3.3 验证虚拟列索引是否生效 3.4 删除虚拟列 1. 关于虚拟列 MySQL 5.7 版本引入了虚拟列(也称为生成列)的功能,这是一种在物理表上定义的虚拟列…...
【瞎折腾/ragflow】构建docker镜像并部署使用ragflow
说在前面 操作系统:win11docker desktop版本:4.29.0docker engin版本:v26.0.0ragflow版本:nightly 安装docker 官网 如果是win11,backend建议使用wsl2 安装好后打开docker desktop,不然docker命令用不了 …...
Django模型数据修改:详解两种方式
Django模型数据修改:详解两种方式 在Django框架中,数据模型(Model)定义了应用的数据结构,并提供了与数据库交互的接口。数据的修改是Django开发中的常见操作之一。本文将详细介绍两种在Django中修改数据的方式&#x…...
Gradle 配置 Lombok 项目并发布到私有 Maven 仓库的完整指南
Gradle 配置 Lombok 项目并发布到私有 Maven 仓库的完整指南 在 Java 项目开发中,使用 Lombok 可以极大地减少样板代码(如 getter/setter 方法、构造器等),提高开发效率。然而,当使用 Gradle 构建工具并将项目发布到私…...
docker 常用命令教程
文章目录 docker常用命令教程1. 镜像拉取镜像删除镜像查看镜像列表 2. 容器运行容器启动容器停止容器查看容器设置容器开机自启向容器输入命令 3. 镜像传输提交容器为镜像镜像解压缩登录命令推送远程仓库(需先在主机上登录账号) docker常用命令教程 1. 镜像 拉取镜像 docker…...
机器学习编译
一、机器学习概述 1.1 什么是机器学习编译 将机器学习算法从开发形态通过变换和优化算法使其变成部署形态。即将训练好的机器学习模型应用落地,部署在特定的系统环境之中的过程。 开发形态:开发机器学习模型时使用的形态。Pytorch,TensorFlow等通用框…...
mysql中什么机制保证宕机数据恢复
MySQL 通过多种机制来保证在宕机或意外崩溃时数据的完整性和可恢复性。这些机制主要包括 事务日志、崩溃恢复 和 数据持久化 等。以下是 MySQL 中保证数据恢复的核心机制: 1. 事务日志(Transaction Log) 事务日志是 MySQL 实现数据恢复的核心机制之一,主要包括 Redo Log(…...
使用 display: flex 实现动态布局:每行两个 item,单数时最后一个占满整行
文章目录 使用 display: flex 实现动态布局:每行两个 item,单数时最后一个占满整行 🎯一、需求分析二、实现思路三、代码实现1. HTML 结构2. CSS 样式关键点解析: 四、效果演示HTML 示例:效果: 五、完整代码…...
android 支持自定义布局、线程安全、避免内存泄漏的 Toast 工具类
支持自定义布局:可以灵活地显示自定义样式的 Toast。 线程安全:确保在主线程中显示 Toast,避免崩溃。 避免内存泄漏:使用 ApplicationContext 和取消机制,防止内存泄漏问题。 工具类:作为一个通用的工具…...
密码学系列 - 利用CPU指令加速
CPU擅长的操作: AES 指令, SHA 指令为了充分利用流水线带来的好处,出现了一种叫做RISC的CPU架构。RISC是Reduced Instruction Set Computer(精简指令集)的缩写 SHA加速 Filecoin系列 - 源码分析 - CPU SHA扩展 当前的构造在某些阶段确实涉…...
什么是美颜SDK?从几何变换到深度学习驱动的美颜算法详解
美颜SDK是一种用于处理图像与视频的开发工具,能够提供磨皮、美白、瘦脸、五官优化、动态贴纸等美颜特效。它广泛应用于直播、短视频、社交、在线会议、电商等行业,帮助用户在视频或图片中实现更好的视觉呈现。 一、从几何变换到深度学习:美颜…...
用Deepseek写一个五子棋微信小程序
在当今快节奏的生活中,休闲小游戏成为了许多人放松心情的好选择。五子棋作为一款经典的策略游戏,不仅规则简单,还能锻炼思维。最近,我借助 DeepSeek 的帮助,开发了一款五子棋微信小程序。在这篇文章中,我将…...
FPGA 实验报告:四位全加器与三八译码器仿真实现
目录 安装Quartus软件 四位全加器 全加器、半加器 半加器: 全加器: 四位全加器电路图 创建项目 半加器 全加器 四位全加器 代码实现 半加器 全加器 四位全加器 三八译码器 创建项目 代码展示 modelsim仿真波形图 四位全加器 三八译码…...
Vercel Serverless
1. 引言 现代应用程序是为适应当前技术环境需求而设计的软件,采用现代开发工具和实践,针对云部署和可扩展性优化。它们由多个模块化小组件组成,便于集成和缩放,具有高度的敏捷性和适应性,能快速响应用户或业务需求变化…...
胜软科技冲刺北交所一年多转港股:由盈转亏,毛利率大幅下滑
《港湾商业观察》施子夫 近期,山东胜软科技股份有限公司(以下简称,胜软科技)递表港交所获受理,独家保荐机构为广发证券(香港)。 在赴港上市之前,胜软科技还曾谋求过A股上市&#x…...
JJJ:linux sysfs相关
文章目录 1.sysfs(属性)文件的创建、读、写1.1 创建流程1.2 open流程1.3 read流程 2.补充2.1 sysfs下常见目录介绍2.2 属性相关2.2.1 简介2.2.2 attribute文件的创建 2.3 sysfs目录如何创建的 1.sysfs(属性)文件的创建、读、写 1…...