ORM模型类

模型

创建两个表

创建模型类

from django.db import models


# Create your models here.
class BookInfo(models.Model):
    name = models.CharField(max_length=10, unique=True)  # 书名
    pub_date = models.DateField(null=True)  # 发布时间
    read_count = models.IntegerField(default=0)  # 阅读量
    comment_count = models.IntegerField(default=0)  # 点击量
    is_delete = models.BooleanField(default=False)  # 软删除

    class Meta:
        db_table = "bookinfo"  # 修改表的名字
        verbose_name = "书籍管理"  # admin站点使用的
    def __str__(self):
        return self.name


class PeopleInfo(models.Model):
    # 定义一个有序字典
    GENDER_CHOICE = {
        (1, "male"),
        (2, "female"),
    }

    name = models.CharField(max_length=10)  # 人物名字
    gender = models.SmallIntegerField(choices=GENDER_CHOICE, default=1)  # 人物性别
    description = models.CharField(max_length=100, null=True)  # 人物描述
    is_delete = models.BooleanField(default=False)  # 软删除
    book = models.ForeignKey(BookInfo, on_delete=models.CASCADE)  # 外键

    class Meta:
        db_table = "peopleinfo"
    def __str__(self):
        return self.name

生成迁移文件

 python .\manage.py makemigrations

执行迁移文件 

 python .\manage.py migrate    

数据库表名

模型类如果未指明表名,django默认以小写app应用名_小写模型名为数据库表名

可通过db_table指明数据库表名,在模型类里面进行定义

    class Meta:
        db_table = "bookinfo"  # 修改表的名字
        verbose_name = "书籍管理"  # admin站点使用的

关于主键

django会为表创建自动增长的主键列,每个模型只能有一个主键列,如果使用选项设置某属性为主键列后django不会再创建自动增长的主键列

属性名命名限制

  • 不能是python的保留关键字
  • 不允许使用连续的下划线,这是由django的查询方式决定的
  • 定义属性时需要指定字段类型,通过 字段类型的参数指定选项
属性名=models.字段类型(选项)

字段类型

类型说明
AutoField自增整数,不指定是django会自动创建,属性名为id
BooleanField布尔字段,值为True或False
NullBooleanField支持Null、True、False三种值
CharField字符串,参数max_length表示最大字符个数
TextField大文本字段,一般超过4000个字符时使用
IntegerField整数
DecimaIField十进制浮点数,参数max_digits表示总位数,参数decimal_places表示小数位数
FloatField浮点数
DateField日期,参数auto_now每次保存时设置为当前时间,参数auto_now_add第一次被创建时设置为当前时间,默认都为False,不可组合
TimeFoeld时间,参数同DateField
DateTimeField

日期时间,参数同DateField

FileField上传文件字段
ImageFiled继承于FileField,对上传的内容进行校验,确保是有效的图片

选项

null是数据库范畴的概念,blank是表单验证的范畴

选项说明
null如果为True,表示允许为空,默认False
blank如果为True,表示允许为空白,默认False
db_column字段名称,若未指定,使用属性的名称
db_index若值为True,则会为表中的字段创建索引,默认False
default指定默认值
primary_key若为True,字段成为模型主键,默认False
unique如果为True,字段中的值不可重复,默认False

外键

on_delete=

指外键被删除后被关联字段的数据要做什么操作

可选参数

  • CASCADE级联:删除主表数据时,连同外键表字段中的数据一起删除
  • PROTECT保护:通过抛出ProtecteError异常,无法删除主表中的数据
  • SET_NULL设置为NULL,仅在该字段null=True允许为空时,将关联字段数据置为空
  • SET_DEFAULT设置默认值:仅在该字段设置了默认值时可用
  • SET()设置为特定值或调用特定方法
  • DO_NOTHING:不做任何操作,如果数据库前置指明级联性,会抛出IntegrityError异常
返回一个对象=models.ForeignKey(外键类名,on_delete=[])

shell

作用

快速验证增删改查的结果,最终的代码还是要写在视图中

进入shell命令

python manage.py shell

增加数据

方式一,创建对象,一个对象就是一条数据

需要调用save()方法,保存

导入模型类
from bookmanager.book.models import BookInfo

book=BookInfo(
    name="django",
    pub_date="2000-1-1",
    read_count="10"

)
book.save()

"""
mysql> select * from bookinfo
    -> ;
+----+--------+---------------+-----------+------------+------------+
| id | name   | comment_count | is_delete | pub_date   | read_count |
+----+--------+---------------+-----------+------------+------------+
|  1 | django |             0 |         0 | 2000-01-01 |         10 |
+----+--------+---------------+-----------+------------+------------+
1 row in set (0.00 sec)
"""

方式二,使用objects

不需要save()

# objects相当于一个代理,直接跟数据库打交道
BookInfo.objects.create(
    name="flask",
    pub_date="2020-1-1",
    read_count="100"

)

"""
mysql> select * from bookinfo ;
+----+--------+---------------+-----------+------------+------------+
| id | name   | comment_count | is_delete | pub_date   | read_count |
+----+--------+---------------+-----------+------------+------------+
|  1 | django |             0 |         0 | 2000-01-01 |         10 |
|  2 | flask  |             0 |         0 | 2020-01-01 |        100 |
+----+--------+---------------+-----------+------------+------------+
2 rows in set (0.00 sec)
"""

更新数据

方式一get,需要调用save()方法

get查询,查询后返回一个对象,通过对象属性赋值来更改数据

from bookmanager.book.models import BookInfo

# get查询,查询后返回一个对象,通过对象属性赋值来更改数据
book=BookInfo.objects.get(id=1)
book.name="新版Django"
book.save()

"""
mysql> select * from bookinfo ;
+----+------------+---------------+-----------+------------+------------+
| id | name       | comment_count | is_delete | pub_date   | read_count |
+----+------------+---------------+-----------+------------+------------+
|  1 | 新版Django |             0 |         0 | 2000-01-01 |         10 |
|  2 | flask      |             0 |         0 | 2020-01-01 |        100 |
+----+------------+---------------+-----------+------------+------------+
2 rows in set (0.00 sec)

"""

方式二filter,不需要调用save()方法

BookInfo.objects.filter(id=2).update(name="升级flask",pub_date="2024-2-2")

"""
>>> BookInfo.objects.filter(id=2).update(name="升级flask",pub_date="2024-2-2") 
1


mysql> select * from bookinfo ;
+----+------------+---------------+-----------+------------+------------+
| id | name       | comment_count | is_delete | pub_date   | read_count |
+----+------------+---------------+-----------+------------+------------+
|  1 | 新版Django |             0 |         0 | 2000-01-01 |         10 |
|  2 | 升级flask  |             0 |         0 | 2024-02-02 |        100 |
+----+------------+---------------+-----------+------------+------------+
2 rows in set (0.00 sec)
"""

删除数据

删除分为两种

物理删除:从硬盘上彻底删除

逻辑删除:修改标志位,给数据打上标签

方式一get

先使用get查询数据,然后调用对象的呃delete方法,不用调用save()方法


book=BookInfo.objects.get(id=1)
book.delete

"""
>>> book=BookInfo.objects.get(id=1)
>>> book.delete()
(1, {'book.PeopleInfo': 0, 'book.BookInfo': 1})


mysql> select * from bookinfo ;
+----+-----------+---------------+-----------+------------+------------+
| id | name      | comment_count | is_delete | pub_date   | read_count |
+----+-----------+---------------+-----------+------------+------------+
|  2 | 升级flask |             0 |         0 | 2024-02-02 |        100 |
+----+-----------+---------------+-----------+------------+------------+
1 row in set (0.00 sec)
"""

方式二filter

BookInfo.objects.filter(id=2).delete()

"""
>>> BookInfo.objects.filter(id=2).delete()
(1, {'book.PeopleInfo': 0, 'book.BookInfo': 1})

mysql> select * from bookinfo ;
Empty set (0.00 sec)
"""

运算符

运算符说明

exact等于

id__exact=1,查询id=1
contains包含name__contains="刘",查询名字中包含刘的
endswith结尾name__endswith="刚",查询名字结尾包含刚的
isnull=True为空name__isnull=True,查询名字为空的
in=[]值是否在列表里面id__in=[1,3,5],查询id为1,3,5的数据
gt大于id__gt=3,查询id大于3的数据
gte大于等于id__gte=3,查询id大于等于3的数据
lt小于id__lt=3,查询id小于3的数据
lte小于等于id__lte=3,查询id小于等于3的数据
year年份date__year=2024,查询日期年是2024年的数据

查询

基础查询

  • get:只能查到一条数据,通常用于精确查询,如果不存在会抛出异常
  • all:查询多个结果,返回的一个数组
  • count:统计查询结果的数量 

get查询

book=BookInfo.objects.get(id=3)



"""
>>> book=BookInfo.objects.get(id=3)
>>> book
<BookInfo: 内测flask>


mysql> select * from bookinfo ;
+----+-----------+---------------+-----------+------------+------------+
| id | name      | comment_count | is_delete | pub_date   | read_count |
+----+-----------+---------------+-----------+------------+------------+
|  3 | 内测flask |             0 |         0 | 2020-01-01 |        100 |
|  4 | django    |             0 |         0 | 2000-01-01 |         10 |
+----+-----------+---------------+-----------+------------+------------+
2 rows in set (0.00 sec)
"""

all查询

books=BookInfo.object.all()
books

"""
>>> books=BookInfo.objects.all()
>>> books
<QuerySet [<BookInfo: 内测flask>, <BookInfo: django>]>


mysql> select * from bookinfo ;
+----+-----------+---------------+-----------+------------+------------+
| id | name      | comment_count | is_delete | pub_date   | read_count |
+----+-----------+---------------+-----------+------------+------------+
|  3 | 内测flask |             0 |         0 | 2020-01-01 |        100 |
|  4 | django    |             0 |         0 | 2000-01-01 |         10 |
+----+-----------+---------------+-----------+------------+------------+
2 rows in set (0.00 sec)
"""

 count统计查询

books_count=BookInfo.objects.all().count()
books_count

counts=BookInfo.objects.count()
counts  
"""
>>> books_count=BookInfo.objects.all().count() 
>>> books_count                                
2

>>> counts=BookInfo.objects.count()
>>> counts                          
2



mysql> select count(*) from bookinfo;
+----------+
| count(*) |
+----------+
|        2 |
+----------+
1 row in set (0.00 sec
"""

过滤查询

  • filter过滤出多个结果,返回的是一个列表
  • exclude排除掉符合条件剩下的结果,返回的也是一个列表
  • get过滤第单一结果,只返回一个结果

filter查询

模型名.objects.filter(属性名__运算符=值)

BookInfo.objects.filter(id=4)
BookInfo.objects.filter(id__exact=4)

"""
>>> BookInfo.objects.filter(id=4)
<QuerySet [<BookInfo: django>]>
>>> BookInfo.objects.filter(id__exact=4)
<QuerySet [<BookInfo: django>]>

"""

exclude查询

模型名.objects.exclude(属性名__运算符=值)

BookInfo.objects.exclude(id=4)
BookInfo.objects.exclude(id__exact=4)


"""
>>> BookInfo.objects.exclude(id=4)    
<QuerySet [<BookInfo: 内测flask>, <BookInfo: python>, <BookInfo: java>, <BookInfo: html>]>
>>> BookInfo.objects.exclude(id__exact=4) 
<QuerySet [<BookInfo: 内测flask>, <BookInfo: python>, <BookInfo: java>, <BookInfo: html>]>

"""

get查询

模型名.objects.get(属性名__运算符=值)


BookInfo.objects.get(id=4)
BookInfo.objects.get(id__excat=4)   
"""
>>> BookInfo.objects.get(id__exact=4)   
<BookInfo: django>
>>> BookInfo.objects.get(id=4)          
<BookInfo: django>

"""

F对象

对查询对象的属性进行比较,需要导入模块

from django.db.models import F

模型类名.objects.filter(属性名__运算符=F(“第二个属性名”))

from django.db.models import F

BookInfo.objects.filter(read_count__gt=F("comment_count"))

"""
>>> from django.db.models import F
>>> BookInfo.objects.filter(read_count__gt=F("comment_count"))
<QuerySet [<BookInfo: 内测flask>, <BookInfo: django>]>

mysql> select * from bookinfo ;
+----+-----------+---------------+-----------+------------+------------+
| id | name      | comment_count | is_delete | pub_date   | read_count |
+----+-----------+---------------+-----------+------------+------------+
|  3 | 内测flask |             0 |         0 | 2020-01-01 |        100 |
|  4 | django    |             0 |         0 | 2000-01-01 |         10 |
|  5 | python    |            10 |         0 | 2024-01-01 |          0 |
|  6 | java      |           200 |         0 | 2022-01-01 |          0 |
|  7 | html      |            50 |         0 | 2020-01-01 |          0 |
+----+-----------+---------------+-----------+------------+------------+
5 rows in set (0.00 sec)
"""

Q对象

可用实现逻辑与和逻辑或的查询

需要导入模块

from django.db.models import Q

并且查询

BookInfo.objects.filter(id=5).filter(read_count__lt=10)
BookInfo.objects.filter(id=5,read_count__lt=10)

"""
>>> BookInfo.objects.filter(id=5).filter(read_count__lt=10)
<QuerySet [<BookInfo: python>]>
>>> BookInfo.objects.filter(id=5,read_count__lt=10)
<QuerySet [<BookInfo: python>]>

mysql> select * from bookinfo ;
+----+-----------+---------------+-----------+------------+------------+
| id | name      | comment_count | is_delete | pub_date   | read_count |
+----+-----------+---------------+-----------+------------+------------+
|  3 | 内测flask |             0 |         0 | 2020-01-01 |        100 |
|  4 | django    |             0 |         0 | 2000-01-01 |         10 |
|  5 | python    |            10 |         0 | 2024-01-01 |          0 |
|  6 | java      |           200 |         0 | 2022-01-01 |          0 |
|  7 | html      |            50 |         0 | 2020-01-01 |          0 |
+----+-----------+---------------+-----------+------------+------------+
5 rows in set (0.00 sec)
""

Q查询

或查询:模型类名.objects.filter(Q(属性名__运算符=值)|Q(属性名__运算符=值)|....)

from django.db.models import Q

BookInfo.objects.filter(Q(id=5)|Q(read_count__lt=10))

"""
>>> BookInfo.objects.filter(Q(id=5)|Q(read_count__lt=10)) 
<QuerySet [<BookInfo: python>, <BookInfo: java>, <BookInfo: html>]>

"""

并且查询:模型类名.objects.filter(Q(属性名__运算符=值)&Q(属性名__运算符=值)&.....)

BookInfo.objects.filter(Q(id=5)&Q(read_count__lt=10))

"""
>>> BookInfo.objects.filter(Q(id=5)&Q(read_count__lt=10)) 
<QuerySet [<BookInfo: python>]>

"""

非not查询:模型类名.objects.filter(~Q(属性名__运算符=值))

BookInfo.objects.filter(~Q(id=5)&Q(read_count__lt=10))
BookInfo.objects.filter(~Q(id=5)&~Q(read_count__lt=10)) 

BookInfo.objects.filter(~Q(id=5)|Q(read_count__lt=10))  
BookInfo.objects.filter(~Q(id=5)|~Q(read_count__lt=10)) 
"""
>>> BookInfo.objects.filter(~Q(id=5)&Q(read_count__lt=10))
<QuerySet [<BookInfo: java>, <BookInfo: html>]>
>>> BookInfo.objects.filter(~Q(id=5)&~Q(read_count__lt=10)) 
<QuerySet [<BookInfo: 内测flask>, <BookInfo: django>]>

>>> BookInfo.objects.filter(~Q(id=5)|Q(read_count__lt=10))  
<QuerySet [<BookInfo: 内测flask>, <BookInfo: django>, <BookInfo: python>, <BookInfo: java>, <BookInfo: html>]>
>>> BookInfo.objects.filter(~Q(id=5)|~Q(read_count__lt=10)) 
<QuerySet [<BookInfo: 内测flask>, <BookInfo: django>, <BookInfo: java>, <BookInfo: html>]>

"""

聚合函数

Sum、Max、Min、Avg、Count

模块名.objects.aggregate(聚合函数("字段名"))

需要导入模块

from django.db.models import Sum,Max,Min,Avg,Count
from django.db.models import Sum,Max,Min,Count,Avg

BookInfo.objects.aggregate(Sum("read_count"))
BookInfo.objects.aggregate(Avg("read_count"))
BookInfo.objects.aggregate(Max("read_count"))
BookInfo.objects.aggregate(Min("read_count"))
BookInfo.objects.aggregate(Count("read_count"))



"""
>>> from django.db.models import Sum,Max,Min,Count,Avg
>>> BookInfo.objects.aggregate(Sum("read_count"))
{'read_count__sum': 110}

>>> BookInfo.objects.aggregate(Avg("read_count"))
{'read_count__avg': 22.0}

>>> BookInfo.objects.aggregate(Max("read_count"))
{'read_count__max': 100}

>>> BookInfo.objects.aggregate(Min("read_count"))
{'read_count__min': 0}

>>> BookInfo.objects.aggregate(Count("read_count"))
{'read_count__count': 5}
"""

排序

升序

BookInfo.object.all().order_by("read_count")


"""
>>> BookInfo.objects.all().order_by("read_count") 
<QuerySet [<BookInfo: python>, <BookInfo: java>, <BookInfo: html>, <BookInfo: django>, <BookInfo: 内测flask>]>

"""

降序

BookInfo.objects.all().order_by("-read_count")
"""
>>> BookInfo.objects.all().order_by("-read_count") 
<QuerySet [<BookInfo: 内测flask>, <BookInfo: django>, <BookInfo: python>, <BookInfo: java>, <BookInfo: html>]>

"""

关联查询

关联查询往往是查询通过外键关联两个表的数据

系统会自动在主表中添加小写外键类名_set的方法

一对多模型类对象.多对应的模型类名小写_set

# 需要拿到主表数据的一个对象
# 然后去调用关联表的模型类_set
book=BookInfo.objects.get(id=6)
book.peopleinfo_set.all()
"""
>>> book=BookInfo.objects.get(id=6) 
>>> book.peopleinfo_set.all()       
<QuerySet [<PeopleInfo: 詹姆斯·高斯林>, <PeopleInfo: 余麻子>]>


mysql> select * from peopleinfo ;
+----+----------------+--------+---------+-------------+-----------+
| id | name           | gender | book_id | description | is_delete |
+----+----------------+--------+---------+-------------+-----------+
|  1 | 吉多·范罗苏姆 |      1 |       3 | python之夫  |         0 |
|  4 | 吉多·范罗苏姆 |      1 |       5 | python之夫  |         0 |
|  5 | 詹姆斯·高斯林 |      1 |       6 | java之夫    |         0 |
|  6 | 余麻子         |      1 |       6 | java继夫    |         0 |
+----+----------------+--------+---------+-------------+-----------+
4 rows in set (0.00 sec)

mysql> select * from bookinfo ;
+----+-----------+---------------+-----------+------------+------------+
| id | name      | comment_count | is_delete | pub_date   | read_count |
+----+-----------+---------------+-----------+------------+------------+
|  3 | 内测flask |             0 |         0 | 2020-01-01 |        100 |
|  4 | django    |             0 |         0 | 2000-01-01 |         10 |
|  5 | python    |            10 |         0 | 2024-01-01 |          0 |
|  6 | java      |           200 |         0 | 2022-01-01 |          0 |
|  7 | html      |            50 |         0 | 2020-01-01 |          0 |
+----+-----------+---------------+-----------+------------+------------+
5 rows in set (0.00 sec)
"""

多对一的模型类对象.多对应的模型类中的关系类属性名

因为从表的外键已经指向了一个主表对象,所以可以直接获取从表对象来调用主表模型类,可以获得主表模型类的对象,也可以获取主表模型类对象的属性

people=PeopleInfo.objects.get(id=1)
people.book.all()


"""
>>> people=PeopleInfo.objects.get(id=1) 
# 获取主表模型类对象
>>> people.book     
<BookInfo: 内测flask>
# 获取主表模型类对象的属性
>>> people.book.name                    
'内测flask'

"""

关联过滤查询

语法格式:模型类名.objects.(关联模型类名小写__字段名__运算符=值) 

从一的数据表中查询符合条件的从表的值(左一右多)

BookInfo.objects.filter(peopleinfo__name__exact="余麻子")
BookInfo.objects.filter(peopleinfo__name__contains="余")

"""
>>> BookInfo.objects.filter(peopleinfo__name__exact="余麻子")
<QuerySet [<BookInfo: java>]>
>>> BookInfo.objects.filter(peopleinfo__name__contains="余")
<QuerySet [<BookInfo: java>]>

"""

根据从表的数据查询主表数据(使用外键)

PeopleInfo.objects.filter(book.name__exact="python")


""""
>>> PeopleInfo.objects.filter(book__name__exact="python") 
<QuerySet [<PeopleInfo: 吉多·范罗苏姆>]>

"""

查询结果集QuerySet

什么是结果集,必须是结果集才有两大特性

返回的查询结果不是单一的数据,而是一个集合QuerySet

两大特性(影响效率,在views视图中不执行就不不会消耗资源)

  • 惰性执行:只有用的时候才会去执行,例如
# 在数据库中之句话并没有执行
book=BookInfo.objects.all()
# 当需要用到book时,才会请求数据库返回数据
book

"""
>>> book=BookInfo.objects.all() 
>>> book # 这是才会去看book是什么数据
<QuerySet [<BookInfo: 内测flask>, <BookInfo: django>, <BookInfo: python>, <BookInfo: java>, <BookInfo: html>]>

"""
  • 缓存:使用同一个查询集(QuerySet)第一次使用会直接查询,然后把结果缓存下来,再次使用结果集时候就会用到这个缓存数据,减少数据库查询的次数
# 这句话返回的是一个结果集QuerySet,它可以被缓存到内存中
books=BookInfo.objects.all() 


"""
>>> books=BookInfo.objects.all() 
>>> books                        
<QuerySet [<BookInfo: 内测flask>, <BookInfo: django>, <BookInfo: python>, <BookInfo: java>, <BookInfo: html>]>
>>> [book.id for book in books]  
[3, 4, 5, 6, 7]
"""

限制查询集(切片操作)

不支持复数索引

# 返回了一个结果集合,可以操作下标索引
books=BookInfo.objects.all()


"""
>>> books=BookInfo.objects.all() 
>>> books
<QuerySet [<BookInfo: 内测flask>, <BookInfo: django>, <BookInfo: python>, <BookInfo: java>, <BookInfo: html>]>
>>> books[1] 
<BookInfo: django>
>>> books[0:1] 
<QuerySet [<BookInfo: 内测flask>]>
""""

分页(查询文档学习)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/375418.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

TCP 粘包/拆包

文章目录 概述粘包拆包发生场景解决TCP粘包和拆包问题的常见方法Netty对粘包和拆包问题的处理小结 概述 TCP的粘包和拆包问题往往出现在基于TCP协议的通讯中&#xff0c;比如RPC框架、Netty等 TCP 粘包/拆包 就是你基于 TCP 发送数据的时候&#xff0c;出现了多个字符串“粘”…

查看网络配置的ipconfig命令

ipconfig是调试计算机网络的常用命令&#xff0c;通常大家使用它显示计算机中网络适配器的IP地址、子网掩码及默认网关。其实这只是ipconfig的不带参数用法&#xff0c;而它的带参数用法&#xff0c;在网络中应用也是相当不错的。 1.语法 ipconfig [/all] [/renew[Adapter]] [/…

(四)elasticsearch 源码之索引流程分析

https://www.cnblogs.com/darcy-yuan/p/17024341.html 1.概览 前面我们讨论了es是如何启动&#xff0c;本文研究下es是如何索引文档的。 下面是启动流程图&#xff0c;我们按照流程图的顺序依次描述。 其中主要类的关系如下: 2. 索引流程 (primary) 我们用postman发送请求&…

【Java八股面试系列】JVM-class文件结构

Class文件结构总结 根据 Java 虚拟机规范&#xff0c;Class 文件通过 ClassFile 定义&#xff0c;有点类似 C 语言的结构体。我们之前都是使用javap命令来对字节码文件进行反编译查看的&#xff0c;我们可以使用WinHex软件&#xff08;Mac平台可以使用010 Editor&#xff09;来…

如何决定K8S Pod的剔除优先级

在Kubernetes&#xff08;k8s&#xff09;中&#xff0c;当节点资源面临压力时&#xff0c;如何决定Pod的优先级是一个关键问题。在Kubernetes 1.8版本之后&#xff0c;引入了基于Pod优先级的调度策略&#xff0c;即Pod Priority Preemption。这种策略允许在资源不足的情况下&a…

git命令远程仓库推送本地项目报错了,解决方案

如果你在使用git命令上传本地项目到远程仓库遇到了如下错误&#xff1a; Updates were rejected because the tip of your current branch is behind。n 别慌&#xff0c;肯定是你的远程仓库里面有原始文件&#xff0c;需要你提前进行一下合并操作&#xff0c;然后才能使用pu…

蓝桥杯嵌入式第8届真题(完成) STM32G431

蓝桥杯嵌入式第8届真题(完成) STM32G431 题目 分析和代码 对比第六届和第七届&#xff0c;这届的题目在逻辑思维上确实要麻烦不少&#xff0c;可以从题目看出&#xff0c;这届题目对时间顺序的要求很严格&#xff0c;所以就可以使用状态机的思想来编程&#xff0c;拿到类似题…

MyBatis多数据源以及动态切换实现(基于SpringBoot 2.7.x)

MyBatis多数据源以及动态切换实现可以实现不同功能模块可以对应到不同的数据库&#xff0c;现在就让我们来讲解一下。 目录 一、引入Maven二、配置文件三、实现多数据源四、动态切换数据源 一、引入Maven 注意&#xff1a;博主这边使用的springboot版本是2.7.14的 <!-- htt…

thinkphp6入门(19)-- 中间件向控制器传参

可以通过给请求对象赋值的方式传参给控制器&#xff08;或者其它地方&#xff09;&#xff0c;例如 <?phpnamespace app\middleware;class Hello {public function handle($request, \Closure $next){$request->hello ThinkPHP;return $next($request);} } 然后在控制…

类图(Class diagram)

类图主要是用来展现软件系统中的类、接口以及它们之间的静态结构 。 一、元素 1、类 ​ 从上到下分为三部分&#xff0c;分别是类名、属性和操作。 类名是必须有的。​类如果有属性&#xff0c;则每一个属性必须有一个名字&#xff0c;另外还可以有其他的描述信息&#xff…

论文阅读-通过云特征增强的深度学习预测云工作负载转折点

论文名称&#xff1a;Cloud Workload Turning Points Prediction via Cloud Feature-Enhanced Deep Learning 摘要 云工作负载转折点要么是代表工作负载压力的局部峰值点&#xff0c;要么是代表资源浪费的局部谷值点。预测这些关键点对于向系统管理者发出警告、采取预防措施以…

选择大语言模型:2024 年开源 LLM 入门指南

作者&#xff1a;来自 Elastic Aditya Tripathi 如果说人工智能在 2023 年起飞&#xff0c;这绝对是轻描淡写的说法。数千种新的人工智能工具被推出&#xff0c;人工智能功能被添加到现有的应用程序中&#xff0c;好莱坞因对这项技术的担忧而戛然而止。 甚至还有一个人工智能工…

【网站项目】038汽车养护管理系统

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

sql实现将某一列下移一行

问题 实现如下图所示的 max_salary 下移一行 方法&#xff1a;使用开窗函数 select max_salary, max(max_salary) over(order by max_salary asc rows between 1 PRECEDING and 1 PRECEDING) max_salary_plus from jobs

电商小程序02数据源设计

上一篇我们讲解了电商小程序的需求分析&#xff0c;分析了需要具备的功能并且绘制了系统原型。有了原型之后下一步的事情就是根据原型来设计数据源。 数据源就像盖房子打地基一样&#xff0c;地基打不好&#xff0c;楼可能就盖不高&#xff0c;盖起来要再想调整就比较困难。 …

使用Qt创建项目 Qt中输出内容到控制台 设置窗口大小和窗口标题 Qt查看说明文档

按windows键&#xff0c;找到Qt Creator &#xff0c;打开 一.创建带模板的项目 新建项目 设置项目路径QMainWindow是带工具栏的窗口。 QWidget是无工具栏的窗口。 QDuakig是对话框窗口。创建好的项目如下&#xff1a; #include "widget.h"// 构造函数&#xff…

Windows系统安装Flink及实现MySQL之间数据同步

Apache Flink是一个框架和分布式处理引擎&#xff0c;用于对无界和有界数据流进行有状态计算。Flink的设计目标是在所有常见的集群环境中运行&#xff0c;并以内存执行速度和任意规模来执行计算。它支持高吞吐、低延迟、高性能的流处理&#xff0c;并且是一个面向流处理和批处理…

03 动力云客项目之登录功能后端实现

创建项目 使用Spring initializr初始化项目 老师讲的是3.2.0, 但小版本之间问题应该不大.

14.0 Zookeeper环球锁实现原理

全局锁是控制全局系统之间同步访问共享资源的一种方式。 下面介绍zookeeper如何实现全民锁&#xff0c;讲解他锁和共享锁两类全民锁。 排他锁 排他锁&#xff08;Exclusive Locks&#xff09;&#xff0c;又被称为写锁或独占锁&#xff0c;如果事务T1对数据对象O1加上排他锁…

2023年09月CCF-GESP编程能力等级认证C++编程一级真题解析

一、单选题(共15题,共30分) 第1题 我们通常说的“内存”属于计算机中的( )。 A:输出设备 B:输入设备 C:存储设备 D:打印设备 答案:C 第2题 以下C++不可以作为变量的名称的是( )。 A:redStar B:RedStar C:red_star D:red star 答案:D 第3题 C++表达式…