模型


模型准确且唯一的描述了数据。它包含存储的数据的重要字段和行为。一般来说,每一个模型都映射一张数据库表。

基础:

  • 每个模型都是一个Python的类,继承django.db.models.Model

  • 模型类的每个属性都相当于一个数据库的字段

  • Django提供了一个自动生成访问数据库的API

示例

  • 定义一个Person模型,拥有first_name和last_name
form django.db import modelsclass Person(models.Model):first_name = models.CharField(max_length=30)last_name = models.CharField(max_length=30)

first_name和last_name是模型的字段,每个字段都被指定为一个类属性,并且每个属性映射为一个数据库列。

Person模型会创建一个如下的数据库表

CREATE TABLE myapp_person ("id" serial NOT NULL PRIMARY KEY,"first_name" varchar(30) NOT NULL,"last_name" varchar(30) NOT NULL
);

说明:

  • 该表的名称myapp_person是自动从某些模型元数据中派生出来,可以被改写。

  • id字段会被自动添加,可以被改写。

  • 例子中创建数据库的语法是PostgreSQL。Django会依据配置文件中指定的数据库后端生成对应的SQL语句。

使用模型

一旦定义了模型,就需要配置这些模型。

修改设置文件中的INSTALLED_APPS

示例

  • 若模型位于项目中的myapp.models模块,INSTALLED_APPS配置如下
INSTALLED_APPS = [#...'myapp',#...
]

添加模型后,需要使用

python manage.py makemigrations # 迁移
python manage.py migrate

字段

模型中最重要且唯一必要的是数据库的字段定义。

示例

from django.db import modelsclass Musician(models.Model):first_name = models.CharField(max_length=50)last_name = models.CharField(max_length=50)instrument = models.CharField(max_length=100)class Album(models.Model):artist = models.ForeignKey(Musician, on_delete=models.CASCADE)name = models.CharField(max_length=100)release_date = models.DateField()num_stars = models.IntegerField()

字段类型

模型中每一个字段都应该是某个Field类的实例

  • 字段类型用以指定数据库数据类型(如:INTEGER,VARCHAR)
  • 在渲染表单字段时默认使用HTML
  • 基本的有效性验证功能,用于Django后台和自动生成的表单。

字段选项

每一种字段都需要指定一些特定的参数。例CharField(以及它的子类)需要接受一个max_length参数,用以指定数据库存储VARCHAR数据时用的字节数。

一些可选的参数是通用的

  • null

如果设置为Ture,当该字段为空时,Django会将数据库中该字段设置为NULL。默认为False

  • blank

如果这是为True,当该字段允许为空,默认为False

该选项与null不同,null选项仅仅是数据库层面的设置,然后blank是涉及表单验证方面。如果一个字段设置为blank=True,在进行表单验证时,接受的数据该字段值允许为空,而设置为False时,不允许为空。

  • choices

一系列二元组,用作此字段的选项,如果提供了二元组,默认表单小部件是一个选择框,而不是标准文字段,并将限制给出的选项。

示例

YEAR_IN_SCHOOL_CHOICES = [('FR', 'Freshman'),('SO', 'Sophomore'),('JR', 'Junior'),('SR', 'Senior'),('GR', 'Graduate'),
]

注:每当choices的顺序变动时将会创建新的迁移

每个二元组的第一个值会存储在数据库中,而第二个值将只会用于存在表单中显示。

对于一个模型实例,要获取该字段二元组中相对应的第二个值,使用get_FOO_display()方法。

示例

from django.db import modelsclass Person(models.Model):SHIRT_SIZES = (('S', 'Small'),('M', 'Medium'),('L', 'Large'),)name = models.CharField(max_length=60)shirt_size = models.CharField(max_length=1, choices=SHIRT_SIZES)
>>> p = Person(name="Fred Flintstone", shirt_size="L")
>>> p.save()
>>> p.shirt_size
'L'
>>> p.get_shirt_size_display()
'Large'
  • default

该字段的默认值,可以是一个值或者是个可调用的对象,如果是个可调用对象,每次实例化模型时都会调用该对象。

  • help_text

额外的“帮助”文本,随表单空间一同显示。

  • primary_key

如果设置为True,将该字段设置为该模型的主键

在一个模型中,如果没有对任何一个字段设置primary_key=True选项。Django会自动添加一个IntegerField字段,并设置为主键。

主键字段是只可读的,如果修改一个模型实例的主键并保存,等同于新创一个模型实例。

示例

from django.db import modelsclass Fruit(models.Model):name = models.CharField(max_length=100, primary_key=True)
>>> fruit = Fruit.objects.create(name='Apple')
>>> fruit.name = 'Pear'
>>> fruit.save()
>>> Fruit.objects.values_list('name', flat=True)
<QuerySet ['Apple', 'Pear']>
  • unique

如果设置为True,这个字段的值必须在整个表中保持唯一。

自动设置主键

默认情况下,Django会给每一个模型添加下面的字段

id = models.AutoField(primary_key=True)

这是一个自增主键。

每个模型都要有一个设置了primary_key=True的字段。

字段备注名

除了ForeignKey,ManyToManyField和OneToOneField,任何字段类型都接受一个可选的位置参数verbose_name,如果未指定该参数值,Django会自动使用字段的属性名作为该参数值,并且把下划线转换为空格。

示例

# 备注名:person's first name
first_name = models.CharField("person's first name", max_length=30)# 备注名:first name
first_name = models.CharField(max_length=30)

ForeignKey,ManyToManyField和OneToOneField接受的第一个参数为模型的类名,后面可以添加一个verbose_name参数。

poll = models.ForeignKey(Poll,on_delete=models.CASCADE,verbose_name="the related poll",
)
sites = models.ManyToManyField(Site, verbose_name="list of sites")
place = models.OneToOneField(Place,on_delete=models.CASCADE,verbose_name="related place",
)

关联关系

Django提供三种常见的数据库关联关系:多对一,多对多,一对一

多对一关联

定义一个多对一的关联关系,使用django.db.models.ForeignKey类。

ForeignKey类需要添加一个位置参数,即想要关联的模型类名。

示例

  • 如果一个Car模型有一个制造者Manufacturer(一个制造者制造许多辆车,但是每辆车都仅有一个制造者)
from django.db import modelsclass Manufacturer(models.Model):# ...passclass Car(models.Model):manufacturer = models.ForeignKey(Manufacturer, on_delete=models.CASCADE)# ...

多对多关联

定义一个多对多的关联关系,使用django.db.models.ManyToManyField类。

需要一个位置参数,即想要关联的模型类名

示例

  • 如果Pizza含有多种配料(也就是一种配料可能存在多个Pizza中,并且每个Pizza含有多种Topping)
from django.db import modelsclass Topping(models.Model):# ...passclass Pizza(models.Model):# ...toppings = models.ManyToManyField(Topping)

对于多对多关联关系的两个模型,可以在任何一个模型中添加ManyToManyField字段,但只能选择一个模型设置该字段,既不能同时在两个模型中添加该字段。

在多对多关系中添加额外的属性字段

如果需要在两个模型的关系中记录更多数据,需要使用throuht。

示例

  • 一个需要跟踪音乐人属于哪个音乐组的应用程序,在任何他们所在的组之间有一个多对多的关系,此时还想要记录更多的信息,例某人是何时加入一个组的。
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)

在设置中间模型的时候,显式地为多对多关系中涉及的中间模型指定外键。

中间模型中的一些限制条件

  • 中间模型有且仅有一个指向源模型(例子中的Group)的外键。
  • 在一个用于描述模型当中自己指向自己的多对多关系的中间模型当中,可以有两个指向同一个模型的外键,但这两个外键分别代表多对多关系(不同)的两端。
  • 定义模型自己指向自己的多对多关系时,如果使用中间模型,必须定义symmetrical=False。

通过实例化中间模型来创建关系

>>> ringo = Person.objects.create(name="Ringo Starr")
>>> paul = Person.objects.create(name="Paul McCartney")
>>> beatles = Group.objects.create(name="The Beatles")
>>> m1 = Membership(person=ringo, group=beatles,
...     date_joined=date(1962, 8, 16),
...     invite_reason="Needed a new drummer.")
>>> m1.save()
>>> beatles.members.all()
<QuerySet [<Person: Ringo Starr>]>
>>> ringo.group_set.all()
<QuerySet [<Group: The Beatles>]>
>>> m2 = Membership.objects.create(person=paul, group=beatles,
...     date_joined=date(1960, 8, 1),
...     invite_reason="Wanted to form a band.")
>>> beatles.members.all()
<QuerySet [<Person: Ringo Starr>, <Person: Paul McCartney>]>

一对一关联

使用OneToOneField来定义一对一关系。

OntToOneField需要一个位置参数:与模型相关的类。

  • 建立一个有关位置信息的数据库,如果想建立一个关于餐厅的数据库,除了将位置数据库当中的字段复制到Restaurant模型,也可以将一个指向Place OneToOneField放到Restaurant当中

跨文件模型

Django支持关联另一个应用中的模型,需要在定义模型的文件开头导入需要被关联的模型

from django.db import models
from geography.models import ZipCodeclass Restaurant(models.Model):# ...zip_code = models.ForeignKey(ZipCode,on_delete=models.SET_NULL,blank=True,null=True,)

字段名限制

Django对模型的字段名有一些限制:

  • 一个字段的名称不能是Python保留字,因为会导致Python语法错误
class Example(models.Model):pass = models.IntegerField() # 'pass' is a reserved word!
  • 一个字段名称不能包含连续的多个下划线,原因在于Django查询语法的工作方式
class Example(models.Model):foo__bar = models.IntegerField() # 'foo__bar' has two underscores!
  • 字段名不能以下划线结尾,原因同上

自定义的字段类型

Meta选项

使用内部Meta类来给模型赋予元数据

from django.db import modelsclass Ox(models.Model):horn_length = models.IntegerField()class Meta:ordering = ["horn_length"]verbose_name_plural = "oxen"

模型的元数据即“所有不是字段的东西”,例排序选项(ordering),数据库表明(db_table),或是阅读友好的单复数明哥(verbose_name和verbose_name_plural)。在模型中添加Meta类是可选的。

模型属性

objects

模型当中最重要的属性是Manager。它是Django模型和数据库查询操作之间的接口,并且它被用作从数据库中当中获取实例,如果没有指定自定义的Manager默认名称是objects。

模型方法

  • _str_()

一个Python的魔法方法,返回值友好地展示了一个对象。Python和Django在要将模型实例展示为纯文本时调用。

  • get_absolute_url()

该方法告诉Django如何计算一个对象的URL。

任何需要一个唯一URL的对象需要定义此方法。

重写之前定义的模型方法

可以重写定制的方法(例:save()和delete())来更改方法的行为。

示例

from django.db import modelsclass Blog(models.Model):name = models.CharField(max_length=100)tagline = models.TextField()def save(self, *args, **kwargs):do_something()super().save(*args, **kwargs)  # Call the "real" save() method.do_something_else()

阻止保存

from django.db import modelsclass Blog(models.Model):name = models.CharField(max_length=100)tagline = models.TextField()def save(self, *args, **kwargs):if self.name == "Yoko Ono's blog":return # Yoko shall never have her own blog!else:super().save(*args, **kwargs)  # Call the "real" save() method.

调用父类的方法非常重要——super().save(*args, **kwargs)。确保对象正确的写入数据库。如果没有调用父类方法,默认行为不会被触发,数据库也不会被操作。传递模型方法接受的参数也很重要。

模型继承

模型继承在Django中与普通类继承在Python中的工作方式几乎完全相同。

抽象基类

抽象基类在将公共信息放入很多模型时会很有用。

编写基类,并在Meta类中填入abstract=True,该模型将不会创建任何数据表。

当其用作其他模型类的基类时,它的字段会自动添加至子类。

示例

from django.db import modelsclass CommonInfo(models.Model):name = models.CharField(max_length=100)age = models.PositiveIntegerField()class Meta:abstract = Trueclass Student(CommonInfo):home_group = models.CharField(max_length=5)

Student模型拥有三个字段:name,age和home_group。CommonInfo模型不能用作普通的Django模型,因为它是一个抽象基类。不会生成数据表,也没有管理器,也不能被实例化和保存。

从抽象基类继承来的字段可被其他字段或值重写,或用None删除。

Meta继承

当一个抽象基类被建立,Django将所有基类中声明的Meta内部以属性的形式提供。若子类未定义自己的Meta类,会继承父类的Meta。

子类也可以继承父类的Meta。

from django.db import modelsclass CommonInfo(models.Model):# ...class Meta:abstract = Trueordering = ['name']class Student(CommonInfo):# ...class Meta(CommonInfo.Meta):db_table = 'student_info'

Django允许继承一个抽象基类创建另一个抽象基类。

多表继承

Django支持的第二种模型继承方式是层次结构中的每个模型都是一个单独的模型。

某个模型都指向分离的数据表,且可被独立查询和创建。

from django.db import modelsclass Place(models.Model):name = models.CharField(max_length=50)address = models.CharField(max_length=80)class Restaurant(Place):serves_hot_dogs = models.BooleanField(default=False)serves_pizza = models.BooleanField(default=False)

Place的所有字段均可在Restaurant中可用,虽然数据分别存在不同的表中。

>>> Place.objects.filter(name="Bob's Cafe")
>>> Restaurant.objects.filter(name="Bob's Cafe")

Restaurant中自动创建的连接至Place的OneToOneField类似于

place_ptr = models.OneToOneField(Place, on_delete=models.CASCADE,parent_link=True,
)

Meta和多表继承

多表继承情况下,子类不会继承父类的Meta。

子类模型无法访问父类的Meta类。

不过,有几种情况除外:若子类未指定ordering属性或get_latest_by属性,子类会从父类继承这些。

如果父类有排序,子类不期望有排序,可以禁止

class ChildModel(ParentModel):# ...class Meta:# Remove parent's ordering effectordering = []

继承与反向关系

由于多表继承使用隐式的OneToOneField连接子类和父类,所以直接从父类访问子类是可能的。

然而,使用的名字是ForeignKey和ManyToManyField关系的默认值。如果在继承父类模型的子类中添加了这些关联,必须指定related_name属性,否则会报错

class Supplier(Place):customers = models.ManyToManyField(Place)#### 报错信息
Reverse query name for 'Supplier.customers' clashes with reverse query
name for 'Supplier.place_ptr'.HINT: Add or change a related_name argument to the definition for
'Supplier.customers' or 'Supplier.place_ptr'.

解决办法

models.ManyToManyField(Place, related_name='provider')

代理模型

使用多表继承,每个子类模型都会创建一个新表。

如果有时只想修改模型的Python级行为,可能是修改默认管理器,或添加一个方法。

代理模型继承的目的:为原模型创建一个代理,可以创建,删除和更新代理模型的实例,所有的数据都会存储的像使用原模型一样。不同点是可以修改代理默认的模型排序和默认管理器,而不需要修改原模型。

代理模型和普通模型一样声明,将Meta类的proxy属性设置为True

实例

  • 为Person模型添加一个方法
from django.db import modelsclass Person(models.Model):first_name = models.CharField(max_length=30)last_name = models.CharField(max_length=30)class MyPerson(Person):class Meta:proxy = Truedef do_something(self):# ...pass

MyPerson类与父类Person操作同一张数据表,Person的实例能通过MyPerson访问,反之亦然。

>>> p = Person.objects.create(first_name="foobar")
>>> MyPerson.objects.get(first_name="foobar")
<MyPerson: foobar>

可以用代理模型定义模型的类一种不同的默认排序方法。

class OrderedPerson(Person):class Meta:ordering = ["last_name"]proxy = True

普通的Person查询结果不会被排序,但OrderPerson查询结果会按last_name排序。

QuerySet仍会返回请求的模型

用Person对象查询时,Django永远不会返回MyPerson对象。代理对象存在的意义是复用Person提供的代码和自定义的功能代码(并未依赖其他代码)。

不存在方法能在创建代理后,替换所有Person模型。

基类约束

一个代理模型必须继承自一个非抽象模型类。

代理模型管理器

在代理模型中指定模型管理器,它会从父类模型中继承。如果在代理模型中指定了管理器,它会成为默认管理器,但父类中定义的管理器仍是可用的。

from django.db import modelsclass NewManager(models.Manager):# ...passclass MyPerson(Person):objects = NewManager()class Meta:proxy = True

多重继承

Django模型也能继承自多个父类模型。

注:继承自多个包含id主键的字段会抛出错误。

class Article(models.Model):article_id = models.AutoField(primary_key=True)...class Book(models.Model):book_id = models.AutoField(primary_key=True)...class BookReview(Book, Article):pass

或者在公共祖先中存储AutoField。并要求每个父类模型和公共祖先使用显性的OneToOneField,避免与子类自动生成或继承的字段发生冲突。

class Piece(models.Model):passclass Article(Piece):article_piece = models.OneToOneField(Piece, on_delete=models.CASCADE, parent_link=True)...class Book(Piece):book_piece = models.OneToOneField(Piece, on_delete=models.CASCADE, parent_link=True)...class BookReview(Book, Article):pass
查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. 概率图模型(2)--马尔科夫随机场

    马尔可夫随机场(MRF)是典型的马尔可夫网,是一种著名的无向图模型。每个节点表示一个或一组变量,节点之间之间的边表示两个变量之间的依赖关系,马尔可夫随机场有一组势函数,定义在变量子集上的非负实函数,主要用于定义概率分布函数。对于图中节点的一个子集,若其中任意两…...

    2024/5/5 11:13:53
  2. mysql优化 个人笔记 (mysql 进阶索引 ) 非礼勿扰 -m15

    一、 limit 1. 测试案例 -- 创建表 ![在这里插入图片描述](https://img-blog.csdnimg.cn/cover1/248667912046641316.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,image_MjAyMDA3MTUxNjIxMDEzOC5wbmc=,size_16,color_FFFFFF,t_70,image/resize,m_l…...

    2024/4/21 22:47:02
  3. java知识面试知识点

    问题和知识点1.查看如下代码的运行结果2.什么是单例设计模式?常见的有哪几种形式?3.4.哪些方法不可以被重写?5.对象的多态性6.查看如下代码运行结果7.查看如下代码运行结果8.有n步台阶,一次只能上1步或2步,共有多少种走法?9.局部变量与成员变量的区别10.查看如下代码运行…...

    2024/4/20 4:05:43
  4. Linux下安装FastDFS详细流程

    FastDFS安装流程首先把相关资源上传到Linux上 : FastDFS资源地址 && 提取码 : 5fhy && 上传方法 安装相关依赖安装GCC依赖 : 对C语言代码进行编译运行sudo yum -y install gcc (sudo意思以管理员身份运行,yum软件包管理命令)安装unzip工具 : 压缩包进行解压su…...

    2024/5/5 10:02:49
  5. 攻防世界web2分题(php-rce)

    ThinkPHP版本5的相关漏洞发现版本号 查了查漏洞 构造payload ?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=ls修改下,寻找flag ?s=index/think\app/invokefunction&function=call_user_func_array&vars[…...

    2024/4/29 23:40:11
  6. Gulp学习

    ......

    2024/5/5 7:41:53
  7. C++关于参数是对象时要调用拷贝构造函数进行传参的问题探讨

    文章目录值传递(调用拷贝构造函数)地址传递(不调用拷贝,直接对原对象进行修改)注意:调用拷贝构造的三种情况相关问题:1 、c++,类的对象作为形参时一定会调用复制构造函数吗?2 、如果类中没有定义复制构造函数 那对象就不能作为形参? 对象也可以作为函数的参数传递给函…...

    2024/4/18 3:05:56
  8. vue组件传值,父子传值,子父传值,兄弟传值,组件主动获取数据及方法

    一.父子传值父组件引入子组件并注册 在标签通过动态绑定data里的值 子组件通过props接收父组件传递过来的参数主动获取值父组件里注册的子组件标签里写上ref 在mounted声明周期函数里打印this.$refs.name.msg即可效果图// 父组件 <template><div><fatherSon :nu…...

    2024/5/3 21:55:06
  9. JS——将一维数组拆分为指定长度二维数组

    1,将数组array分成长度为subGroupLength的小数组并返回新数组function group(array, subGroupLength) {let index = 0;let newArray = [];while(index < array.length) {newArray.push(array.slice(index, index += subGroupLength));}return newArray; }2,例如:var Array …...

    2024/4/30 14:14:20
  10. 常见网络设备

    园区网络安全部署场景如图是一般园区网络中常见的结构图。一个园区网络中存在许许多多的设备。包括的最基础的流量、数据包转发设备——路由器、交换机。安全设备——防火墙、Anti-DDoS、DMZ区、数据中心。 防火墙主要用来抵御来自互联网的攻击,完成初步的流量防护。An…...

    2024/5/2 15:49:31
  11. linux权限

    Linux的权限不是很细致,只有RWX三种 r(Read,读取):对文件而言,具有读取文件内容的权限;对目录来说,具有浏览目录的权限。 w(Write,写入):对文件而言,具有新增,修改,删除文件内容的权限;对目录来说,具有新建,删除,修改,移动目录内文件的权限。 x(eXecute,执行):对…...

    2024/5/4 5:33:48
  12. 顺时针打印矩阵

    顺指针打印矩阵 给出一个二维的矩阵数组,顺时针螺旋遍历矩阵的所有的数据元素。思路 属于细节题,考虑按圈打印,每次打印外围一圈,即上行、右行、下行、左行。特殊情况考虑:当只有一行的时候,当只有一列的时候的特殊处理。print子函数功能为每次打印一圈,传入的关键参数为…...

    2024/4/25 20:22:00
  13. Day_4字符串格式化和Python循环(whiole&for)和(break&continue&pass)

    Day_4字符串格式化和Python循环(whiole&for) 一.字符串格式化 1.占位符:%s,%d,%f(%.2f 保留2位数) name = 古天乐 age = 50 print(%s代言了传奇,今年%d岁)%(name, age) print(古天乐共捐了%f亿%money)2.format() name = 古天乐 age = 50 print({}代言了传奇,今年…...

    2024/4/24 6:47:18
  14. Gulp + Jenkins

    ......

    2024/4/29 15:34:36
  15. PY学习笔记2.1

    字符串是不可修改的 当我们要完整定义一个类似 It‘s a good day 的字符串时 有两种方法: 1: str= It‘s a good day “” //用双引号 2: str=‘It\‘s a good day’ //用转义字符 使用’’’ ‘’’、""" “”"时 可以定义多行文本 其中某一…...

    2024/4/26 16:38:44
  16. 第12届CDA考试

    坐标太原 考的建模分析师 下午场 只有三个人…少… 选择题100道 —— 总分70分 单选60(30分) 多选30(30分) 内容选择题10道(10分) 案例题1道——总分30分 分类题目 以模型F1值高低进行得分 考完觉得 考证其实没啥用 真本事最重要...

    2024/4/20 9:23:22
  17. Three.js无限3D时空穿梭特效

    可能每个人的童年都有个时空穿梭梦,印象深刻的是第一次看《机器猫》,主角康夫卧室的抽屉就是时空隧道的入口,跳进隧道的那一刻,时间浮光掠影般从身边流过,仿佛进入了异世界。这次我们用three.js实现一个3d隧道穿梭效果,打开异世界的大门。 它也可以是一个跑酷游戏原型,又…...

    2024/5/5 2:29:34
  18. Spring系列:JPA 原生SQL查询方法

    基础Spring系列:JPA JPQL使用方法原生SQL方法设置@Query的属性为nativeQuery = true@Query(value = "select u.* from Article u where u.title = ? ", nativeQuery = true):title 、?1 匹配第一个参数title@Query(value = "select u.* from Article u wher…...

    2024/4/25 4:01:18
  19. 50Mn18Cr4WN强度技术

    发挥网络力量,分享无磁技术。50Mn18Cr4WN奥氏体钢是制造发电机护环,特别是大型发电机护环的主要钢种。这类钢具有低的导磁率和优良的冷作硬化性能。 但由于50Mn18Cr4N这类钢在加热及冷却过程中无相变发生,护环毛坯锻造时形成的粗大和不均匀的晶粒得以保留到室温,使得材料的…...

    2024/5/2 9:07:00
  20. LeetCode#46.全排列

    46.全排列一、题目描述二、题解 一、题目描述 给定一个没有重复数字的序列,返回其所有可能的全排列。 示例:输入: [1,2,3] 输出: [[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1] ]二、题解 思路:本题可以使用回溯算法来模拟整个过程,实现时使用深度优先搜索+交换。具…...

    2024/4/24 19:33:04

最新文章

  1. 线下陪伴小程序app系统开发同城组局预约旅游约玩伴游搭子交友社交相亲

    线下陪伴小程序APP系统——同城组局、旅游、交友与相亲功能介绍 1. 同城组局功能 功能概述&#xff1a; 该功能允许用户基于地理位置&#xff0c;发现并参与同城的各种活动组局。无论是朋友聚会、户外运动、还是文化沙龙&#xff0c;用户都可以在这里找到感兴趣的活动&#…...

    2024/5/5 12:14:52
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. 从头开发一个RISC-V的操作系统(二)RISC-V 指令集架构介绍

    文章目录 前提ISA的基本介绍ISA是什么CISC vs RISCISA的宽度 RISC-V指令集RISC-V ISA的命名规范模块化的ISA通用寄存器Hart特权级别内存管理与保护异常和中断 目标&#xff1a;通过这一个系列课程的学习&#xff0c;开发出一个简易的在RISC-V指令集架构上运行的操作系统。 前提…...

    2024/5/5 1:33:57
  4. ARM FVP平台的terminal窗口大小如何设置

    当启动ARM FVP平台时&#xff0c;terminal窗口太小怎么办&#xff1f;看起来非常累眼睛&#xff0c;本博客来解决这个问题。 首先看下ARM FVP平台对Host主机的需求&#xff1a; 通过上图可知&#xff0c;UART默认使用的是xterm。因此&#xff0c;我们需要修改xterm的默认字体设…...

    2024/5/5 8:34:34
  5. 416. 分割等和子集问题(动态规划)

    题目 题解 class Solution:def canPartition(self, nums: List[int]) -> bool:# badcaseif not nums:return True# 不能被2整除if sum(nums) % 2 ! 0:return False# 状态定义&#xff1a;dp[i][j]表示当背包容量为j&#xff0c;用前i个物品是否正好可以将背包填满&#xff…...

    2024/5/4 12:05:22
  6. 【Java】ExcelWriter自适应宽度工具类(支持中文)

    工具类 import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellType; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet;/*** Excel工具类** author xiaoming* date 2023/11/17 10:40*/ public class ExcelUti…...

    2024/5/4 11:23:32
  7. Spring cloud负载均衡@LoadBalanced LoadBalancerClient

    LoadBalance vs Ribbon 由于Spring cloud2020之后移除了Ribbon&#xff0c;直接使用Spring Cloud LoadBalancer作为客户端负载均衡组件&#xff0c;我们讨论Spring负载均衡以Spring Cloud2020之后版本为主&#xff0c;学习Spring Cloud LoadBalance&#xff0c;暂不讨论Ribbon…...

    2024/5/4 14:46:16
  8. TSINGSEE青犀AI智能分析+视频监控工业园区周界安全防范方案

    一、背景需求分析 在工业产业园、化工园或生产制造园区中&#xff0c;周界防范意义重大&#xff0c;对园区的安全起到重要的作用。常规的安防方式是采用人员巡查&#xff0c;人力投入成本大而且效率低。周界一旦被破坏或入侵&#xff0c;会影响园区人员和资产安全&#xff0c;…...

    2024/5/4 23:54:44
  9. VB.net WebBrowser网页元素抓取分析方法

    在用WebBrowser编程实现网页操作自动化时&#xff0c;常要分析网页Html&#xff0c;例如网页在加载数据时&#xff0c;常会显示“系统处理中&#xff0c;请稍候..”&#xff0c;我们需要在数据加载完成后才能继续下一步操作&#xff0c;如何抓取这个信息的网页html元素变化&…...

    2024/5/4 12:10:13
  10. 【Objective-C】Objective-C汇总

    方法定义 参考&#xff1a;https://www.yiibai.com/objective_c/objective_c_functions.html Objective-C编程语言中方法定义的一般形式如下 - (return_type) method_name:( argumentType1 )argumentName1 joiningArgument2:( argumentType2 )argumentName2 ... joiningArgu…...

    2024/5/4 23:54:49
  11. 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】

    &#x1f468;‍&#x1f4bb;博客主页&#xff1a;花无缺 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 花无缺 原创 收录于专栏 【洛谷算法题】 文章目录 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】&#x1f30f;题目描述&#x1f30f;输入格…...

    2024/5/4 23:54:44
  12. 【ES6.0】- 扩展运算符(...)

    【ES6.0】- 扩展运算符... 文章目录 【ES6.0】- 扩展运算符...一、概述二、拷贝数组对象三、合并操作四、参数传递五、数组去重六、字符串转字符数组七、NodeList转数组八、解构变量九、打印日志十、总结 一、概述 **扩展运算符(...)**允许一个表达式在期望多个参数&#xff0…...

    2024/5/4 14:46:12
  13. 摩根看好的前智能硬件头部品牌双11交易数据极度异常!——是模式创新还是饮鸩止渴?

    文 | 螳螂观察 作者 | 李燃 双11狂欢已落下帷幕&#xff0c;各大品牌纷纷晒出优异的成绩单&#xff0c;摩根士丹利投资的智能硬件头部品牌凯迪仕也不例外。然而有爆料称&#xff0c;在自媒体平台发布霸榜各大榜单喜讯的凯迪仕智能锁&#xff0c;多个平台数据都表现出极度异常…...

    2024/5/4 14:46:11
  14. Go语言常用命令详解(二)

    文章目录 前言常用命令go bug示例参数说明 go doc示例参数说明 go env示例 go fix示例 go fmt示例 go generate示例 总结写在最后 前言 接着上一篇继续介绍Go语言的常用命令 常用命令 以下是一些常用的Go命令&#xff0c;这些命令可以帮助您在Go开发中进行编译、测试、运行和…...

    2024/5/4 14:46:11
  15. 用欧拉路径判断图同构推出reverse合法性:1116T4

    http://cplusoj.com/d/senior/p/SS231116D 假设我们要把 a a a 变成 b b b&#xff0c;我们在 a i a_i ai​ 和 a i 1 a_{i1} ai1​ 之间连边&#xff0c; b b b 同理&#xff0c;则 a a a 能变成 b b b 的充要条件是两图 A , B A,B A,B 同构。 必要性显然&#xff0…...

    2024/5/5 2:25:33
  16. 【NGINX--1】基础知识

    1、在 Debian/Ubuntu 上安装 NGINX 在 Debian 或 Ubuntu 机器上安装 NGINX 开源版。 更新已配置源的软件包信息&#xff0c;并安装一些有助于配置官方 NGINX 软件包仓库的软件包&#xff1a; apt-get update apt install -y curl gnupg2 ca-certificates lsb-release debian-…...

    2024/5/4 21:24:42
  17. Hive默认分割符、存储格式与数据压缩

    目录 1、Hive默认分割符2、Hive存储格式3、Hive数据压缩 1、Hive默认分割符 Hive创建表时指定的行受限&#xff08;ROW FORMAT&#xff09;配置标准HQL为&#xff1a; ... ROW FORMAT DELIMITED FIELDS TERMINATED BY \u0001 COLLECTION ITEMS TERMINATED BY , MAP KEYS TERMI…...

    2024/5/4 12:39:12
  18. 【论文阅读】MAG:一种用于航天器遥测数据中有效异常检测的新方法

    文章目录 摘要1 引言2 问题描述3 拟议框架4 所提出方法的细节A.数据预处理B.变量相关分析C.MAG模型D.异常分数 5 实验A.数据集和性能指标B.实验设置与平台C.结果和比较 6 结论 摘要 异常检测是保证航天器稳定性的关键。在航天器运行过程中&#xff0c;传感器和控制器产生大量周…...

    2024/5/4 13:16:06
  19. --max-old-space-size=8192报错

    vue项目运行时&#xff0c;如果经常运行慢&#xff0c;崩溃停止服务&#xff0c;报如下错误 FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory 因为在 Node 中&#xff0c;通过JavaScript使用内存时只能使用部分内存&#xff08;64位系统&…...

    2024/5/4 16:48:41
  20. 基于深度学习的恶意软件检测

    恶意软件是指恶意软件犯罪者用来感染个人计算机或整个组织的网络的软件。 它利用目标系统漏洞&#xff0c;例如可以被劫持的合法软件&#xff08;例如浏览器或 Web 应用程序插件&#xff09;中的错误。 恶意软件渗透可能会造成灾难性的后果&#xff0c;包括数据被盗、勒索或网…...

    2024/5/4 14:46:05
  21. JS原型对象prototype

    让我简单的为大家介绍一下原型对象prototype吧&#xff01; 使用原型实现方法共享 1.构造函数通过原型分配的函数是所有对象所 共享的。 2.JavaScript 规定&#xff0c;每一个构造函数都有一个 prototype 属性&#xff0c;指向另一个对象&#xff0c;所以我们也称为原型对象…...

    2024/5/5 3:37:58
  22. C++中只能有一个实例的单例类

    C中只能有一个实例的单例类 前面讨论的 President 类很不错&#xff0c;但存在一个缺陷&#xff1a;无法禁止通过实例化多个对象来创建多名总统&#xff1a; President One, Two, Three; 由于复制构造函数是私有的&#xff0c;其中每个对象都是不可复制的&#xff0c;但您的目…...

    2024/5/4 23:54:30
  23. python django 小程序图书借阅源码

    开发工具&#xff1a; PyCharm&#xff0c;mysql5.7&#xff0c;微信开发者工具 技术说明&#xff1a; python django html 小程序 功能介绍&#xff1a; 用户端&#xff1a; 登录注册&#xff08;含授权登录&#xff09; 首页显示搜索图书&#xff0c;轮播图&#xff0…...

    2024/5/4 9:07:39
  24. 电子学会C/C++编程等级考试2022年03月(一级)真题解析

    C/C++等级考试(1~8级)全部真题・点这里 第1题:双精度浮点数的输入输出 输入一个双精度浮点数,保留8位小数,输出这个浮点数。 时间限制:1000 内存限制:65536输入 只有一行,一个双精度浮点数。输出 一行,保留8位小数的浮点数。样例输入 3.1415926535798932样例输出 3.1…...

    2024/5/4 14:46:02
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57