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

使用Django自带的后台管理系统进行数据库管理的实例

Django自带的后台管理系统主要用来对数据库进行操作和管理。它是Django框架的一个强大功能,可以让你快速创建一个管理界面,用于管理你的应用程序的数据模型。

使用Django后台管理系统,你可以轻松地进行以下操作:

  1. 数据库管理:你可以查看、添加、编辑和删除数据库中的记录,而无需编写自定义的管理界面或数据库查询语句。

  2. 模型管理:Django后台管理系统会自动检测你在应用程序中定义的模型,并为每个模型创建相应的管理界面。这样,你就可以直接在后台管理界面对模型进行操作。

  3. 用户权限管理:Django后台管理系统支持用户认证和权限控制,你可以通过定义用户组和权限,限制特定用户对数据的访问和操作。

  4. 自定义管理页面:尽管Django后台管理系统提供了很多默认功能,但你也可以根据需要自定义管理页面,添加自定义的功能和视图。

总体而言,Django后台管理系统是一个强大的工具,使得对数据库进行操作和管理变得简单而高效,这使得开发者可以更专注于业务逻辑和功能开发,而无需为了管理界面而花费大量时间和精力。

在本文中,我们在Django中创建与商品分类、商品信息有关的数据表模型,并利用Django自带的后台管理系统对商品分类、商品信息的数据表进行管理。

01-新建一个名为“good_info”的Project

命令如下:

CD E:\Python_project\P_001\myshop-test
E:
django-admin startproject good_info

02-新建两个应用

执行下面条命令依次创建两个应用:

CD E:\Python_project\P_001\myshop-test\good_info\
E:
python manage.py startapp goods
python manage.py startapp users

上面的两个应用,主要的就是goods,我们会在goods的models.py中写入商品分类和商品信息的数据库类模型。
但由于商品信息中有用户的信息,所以还需要有users模型。
在这里插入图片描述

03-在settings.py中对两个应用进行注册

在settings.py中进行注册的代码如下:

INSTALLED_APPS = ['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','users','goods',
]

04-编写两个应用的数据库模型类

04-01-users的模型创建及代码详解

打开文件:E:\Python_project\P_001\myshop-test\myshop_background\apps\users\apps.py
写入以下代码:

from datetime import datetime
from django.db import models
from django.contrib.auth.models import AbstractUser, Group, Permissionclass MyUser(AbstractUser):SEX = ((0, '男'),(1, '女'),)LEVEL = ((1, '寂寞卡会员'),(2, '钻石卡会员'),(3, '金卡会员'),(4, '银卡会员'),)STATUS = ((0, '正常'),(1, '异常'),)groups = models.ManyToManyField(Group,verbose_name='groups',blank=True,help_text='The groups this user belongs to.',related_name='user_groups'  # 设置不同的 related_name)user_permissions = models.ManyToManyField(Permission,verbose_name='user permissions',blank=True,help_text='Specific permissions for this user.',related_name='user_permissions'  # 设置不同的 related_name)truename = models.CharField('真实姓名', blank=True, max_length=50)mobile = models.CharField('手机号码', max_length=11, default="")sex = models.IntegerField(default=0, choices=SEX)birthday = models.DateField(blank=True, null=True)user_img = models.ImageField("头像", upload_to="user_img", default="")level = models.IntegerField(default=4, choices=LEVEL)status = models.IntegerField(default=0, choices=STATUS)create_time = models.DateTimeField(default=datetime.now, verbose_name='创建时间')update_time = models.DateTimeField(default=datetime.now, verbose_name="更新时间")def __str__(self):return self.usernameclass Meta(AbstractUser.Meta):permissions = (['check_myuser', '审核用户信息'],)

①关于字段groups和字段user_permissions的说明。
字段groups和字段user_permissions实际上是没有作用的,那为什么要定义呢?原因请见博文:https://blog.csdn.net/wenhao_ir/article/details/131773627

②问:能不能介绍下代码from django.contrib.auth.models import AbstractUser中涉及到的类AbstractUser?
答:在Django框架中,django.contrib.auth.models模块提供了用于身份验证和授权的相关功能。其中,AbstractUser类是Django默认的用户模型(user model)的抽象基类。详情请参见链接:https://blog.csdn.net/wenhao_ir/article/details/131594115

③代码 truename=models.CharField(‘真实姓名’,blank=True,max_length=50) 的blank=True,是什么意思?
在Django模型中,blank=True是一个参数,用于指示模型字段是否可以为空。当blank=True时,该字段在表单验证过程中可以为空,不会引发验证错误。如果blank=False,则该字段在表单验证过程中是必需的,不能为空。

在代码中,truename是一个CharField,它表示一个字符型字段,用于存储真实姓名。由于指定了blank=True,这意味着在创建或更新该模型实例时,可以将truename字段留空。这对于某些情况下真实姓名是可选的场景很有用。但需要注意的是,即使blank=True,数据库中存储的字段值仍然可以是空字符串,而不是NULL值。

④代码 mobile=models.CharField(‘手机号码’,max_length=11,default=“”)中的 default=“” 是什么意思?
答:default=""models.CharField的一个参数,用于指定字段的默认值。

default=""表示当创建新的模型实例时,如果没有为mobile字段提供具体的值,那么该字段将默认为空字符串。

在数据库中,如果没有为该字段提供值,它将被存储为空字符串,而不是NULL值。这意味着在查询和检索数据时,如果mobile字段没有被显式地赋值,它将返回空字符串作为默认值。

通过设置默认值,可以确保即使没有为该字段提供值,模型实例的mobile字段始终有一个默认的空字符串值。这在某些情况下可能是有用的,例如当手机号码是可选的字段时,可以将其默认为空字符串。

注意:如果在代码mobile=models.CharField('手机号码',max_length=11)中不指定default参数或将其设置为default=None,则在创建新的模型实例时,如果没有为mobile字段提供具体的值,该字段将默认为NULL值。

⑤语句 sex = models.IntegerField(default=0,choices=SEX) 的理解:
这个代码中的choices=SEX定义了一个选项列表,其中每个选项都由一个值和对应的显示标签组成。在这个例子中,SEX是一个包含元组的元组,每个元组有两个元素,第一个是存储的值,第二个是显示的标签。

在数据库中,sex字段将使用整数存储,而不是字符串。当你在创建或更新对象时,可以使用这些选项中的任何一个值来表示性别。数据库中存储的是相应的整数值(0代表男,1代表女),但是在界面上或其他需要显示的地方,你可以使用元组中的显示标签(‘男’和’女’)来表示。

也就是说如果我写入一个值,这个值是字符串’男’,那么写入数据库的是整数0哈。

⑥语句 user_img=models.ImageField(“头像”,upload_to=“user_img”,default=“”) 的 upload_to=“user_img” 是什么意思?
答:在Django中,上传路径可以在模型字段的定义中通过upload_to参数设置,也可以通过Django的配置文件进行全局设置。

  1. 模型字段中的设置:
    在定义模型字段时,可以使用upload_to参数来指定上传路径。例如:

    from django.db import modelsclass MyModel(models.Model):image = models.ImageField(upload_to='my_upload_path/')
    

    上述代码中,upload_to参数设置为'my_upload_path/',表示上传的文件将保存在MEDIA_ROOT/my_upload_path/路径下,其中MEDIA_ROOT是在Django的配置文件中设置的媒体文件根路径。

  2. 全局配置文件中的设置:
    Django还提供了一个全局配置文件settings.py,可以在其中设置默认的上传路径。在配置文件中,可以使用MEDIA_ROOTMEDIA_URL两个设置来定义上传文件的根路径和对应的URL。例如:

    # settings.pyMEDIA_ROOT = os.path.join(BASE_DIR, 'media')
    MEDIA_URL = '/media/'
    

    上述配置中,MEDIA_ROOT指定了媒体文件的根路径为BASE_DIR/mediaMEDIA_URL指定了该路径对应的URL为/media/。在模型字段中不指定upload_to参数时,文件将被保存在MEDIA_ROOT设置的路径下。关于BASE_DIR的详细介绍,请参考我的另一篇博文:https://blog.csdn.net/wenhao_ir/article/details/131598936

需要注意的是,在使用MEDIA_ROOTMEDIA_URL进行设置时,确保在Django的URL配置中包含了相应的URL映射,以便可以正确地访问上传的文件。

⑦内部类Meta是什么东西?
关于这个问题的答案,请参见我的另一篇博文 https://blog.csdn.net/wenhao_ir/article/details/131600645

04-02-goods的模型创建及代码详解

04-02-1-拷贝common文件夹

把下面的common文件夹拷贝到根目录 E:\Python_project\P_001\myshop-test\good_info 中。
https://pan.baidu.com/s/115vpHu68sR3vDJqvBHuFUg?pwd=g9ow
在这里插入图片描述
在 common 目录下有文件base_model.py:
在这里插入图片描述
文件base_model.py的内容如下:

from django.db import modelsclass BaseModel(models.Model):"""抽象基类"""create_time = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")update_time = models.DateTimeField(auto_now=True, verbose_name="更新时间")class Meta:# 指定抽象基类abstract = True

注意:在这个抽象基类中定义了字段“create_time”和“update_time ”。

04-02-2-代码写入模型文件 goods\models.py

打开文件:E:\Python_project\P_001\myshop-test\good_info\goods\models.py
定入下面的代码:

from django.db import models
from datetime import datetimefrom users.models import MyUser
from common.base_model import BaseModelclass GoodsCategory(BaseModel):id = models.AutoField(primary_key=True)name = models.CharField(max_length=50, verbose_name='分类名称', default='')parent = models.ForeignKey("self", null=True, blank=True, verbose_name="父类", on_delete=models.DO_NOTHING, related_name="sub_cat")is_nav = models.BooleanField(default=False, verbose_name='是否显示在导航栏')sort = models.IntegerField(verbose_name='排序')def __str__(self):return self.nameclass Meta:verbose_name = '商品分类'verbose_name_plural = '商品分类'db_table = 'd_goods_category'  # 在数据库中的表名class Goods(models.Model):STATUS = ((0, '正常'),(1, '下架'),)name = models.CharField(max_length=50, verbose_name='商品名称', default='')category = models.ForeignKey(GoodsCategory, blank=True, null=True, verbose_name='商品分类', on_delete=models.DO_NOTHING)market_price = models.DecimalField(max_digits=8, default=0, decimal_places=2, verbose_name='市场价格')price = models.DecimalField(max_digits=8, decimal_places=2, default=0, verbose_name='实际价格')unit = models.CharField(max_length=10, verbose_name='计量单位', blank=True, null=True)click_num = models.IntegerField(default=0, verbose_name="点击数")amount = models.IntegerField(default=0, verbose_name="销售量")stock_num = models.IntegerField(default=0, verbose_name="库存数")fav_num = models.IntegerField(default=0, verbose_name="收藏数")goods_desc = models.CharField(max_length=200, verbose_name='商品详情', default='',)status = models.IntegerField(default=0, choices=STATUS)is_recommend = models.BooleanField(default=False, verbose_name="是否推荐")user = models.ForeignKey(MyUser, blank=True, null=True, verbose_name="用户", on_delete=models.DO_NOTHING)createDate = models.DateTimeField(default=datetime.now, verbose_name='创建时间')def __str__(self):return self.nameclass Meta:verbose_name = '商品信息'verbose_name_plural = '商品信息'db_table = 'd_goods'  # 在数据库中的表名

下面这句代码的理解请参考博文 https://blog.csdn.net/wenhao_ir/article/details/131708665

parent = models.ForeignKey("self", null=True, blank=True, verbose_name="父类", on_delete=models.DO_NOTHING, related_name="sub_cat")

05-创建数据库

数据库名:goodtest01
数据库用户名:goodtest01
数据库密码:aa123456
在这里插入图片描述

06-配置setting.py文件中的数据库信息

打开文件:E:\Python_project\P_001\myshop-test\good_info\good_info\settings.py
写入下面的数据库配置信息:

DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','NAME': 'goodtest01','USER': 'goodtest01','PASSWORD': 'aa123456','HOST': 'localhost','PORT': '3306',# 取消外键约束,否则多对多模型迁移报django.db.utils.IntegrityError: (1215, 'Cannot add foreign key constraint')'OPTIONS': {"init_command": "SET foreign_key_checks = 0;",'charset': 'utf8'},}
}

在这里插入图片描述

07-创建模型迁移和执行模型迁移命令

首先请把数据库打开。
首先请把数据库打开。
首先请把数据库打开。

然后执行下面的命令。

CD E:\Python_project\P_001\myshop-test\good_info\
E:
manage.py makemigrations
manage.py migrate

在这里插入图片描述

E:\Python_project\P_001\myshop-test\good_info>manage.py makemigrations
Migrations for 'goods':goods\migrations\0001_initial.py- Create model GoodsCategory- Create model Goodsgoods\migrations\0002_goods_user.py- Add field user to goods
Migrations for 'users':users\migrations\0001_initial.py- Create model MyUser

在这里插入图片描述

08-创建后台管理员用户

运行下面的命令:

CD E:\Python_project\P_001\myshop-test\good_info\
E:
manage.py createsuperuser

在这里插入图片描述
从上面的过程来看,如果不指定管理员的用户名,则默认为:administrator,同时还可以输入管理员的邮箱。
我在上面设的密码为:bb123456

09-启动后台web服务并测试是否能登陆管理员帐户

运行下面这三条命令启动:

CD E:\Python_project\P_001\myshop-test\good_info\
E:
python manage.py runserver

在这里插入图片描述
访问下面这个URL进入Django自带的后台登陆页面:
http://127.0.0.1:8000/admin/
在这里插入图片描述
输入用户名(administrator)和密码(bb123456),登陆:
在这里插入图片描述

10-配置Admin后台管理系统

10-1-配置 goods/app.py 文件

把 goods/app.py 文件原来的代码:

from django.apps import AppConfigclass GoodsConfig(AppConfig):default_auto_field = 'django.db.models.BigAutoField'name = 'goods'

改成下面这样:

from django.apps import AppConfigclass GoodsConfig(AppConfig):default_auto_field = 'django.db.models.BigAutoField'name = 'goods'verbose_name = "商品管理"

即加上代码verbose_name = "商品管理",这样“商品管理”会显示在Admin后台管理系统中的左侧菜单导航中。

10-2-设置 goods/__init__.py 文件

goods/__init__.py 文件中写入下面的代码:

from .apps import GoodsConfig
default_app_config = 'goods.GoodsConfig'

关于语句:from .apps import GoodsConfig的解释如下:
在Django中,.apps是指从当前包(package)【也可以理解为当前目录】中导入一个名为apps的模块(module)或子包(sub-package)。在上面的代码中,from .apps import GoodsConfig的作用是从当前目录的apps模块中导入类 GoodsConfig 。

.apps用于从当前包中导入GoodsConfig

具体来说,Django的应用(app)通常是一个包含apps.py文件的Python包。apps.py文件用于定义Django应用的配置类,其中包含应用的元数据信息,例如应用名称、显示名称等。通常情况下,Django会自动生成apps模块,你可以通过导入它来访问应用的配置类。

假设你的项目结构如下:

my_project/my_app/__init__.pyapps.pymodels.pyviews.py

apps.py中,可能会定义类似如下的应用配置类:

# my_project/my_app/apps.pyfrom django.apps import AppConfigclass GoodsConfig(AppConfig):name = 'my_app'verbose_name = 'My Goods Application'

现在,如果你想在其他文件中引用GoodsConfig这个配置类,可以使用相对导入的方式,如下所示:

# 任何其他.py文件from .apps import GoodsConfig# 使用GoodsConfig进行配置或其它操作

在这里,.apps表示当前包(my_app)中的apps模块,然后从中导入了GoodsConfig类。注意,apps这个名称是由Django约定的,用于表示应用的配置模块。

总之,.apps在这里是一个相对导入的语法,用于引用当前包中的apps模块,并从中导入GoodsConfig类。

关于语句:default_app_config = 'goods.GoodsConfig'的解释如下:
在Django中,default_app_config变量用于指定一个应用的默认配置类。当一个Django应用被加载时,它将查找该应用的apps.py文件,并在其中寻找继承自AppConfig的配置类(如果存在的话)。然后,Django将使用该配置类来配置应用的行为和元数据。

然而,有时候你可能希望在应用的apps.py文件中定义配置类,但不希望Django自动使用它作为默认的应用配置。这种情况下,你可以手动指定默认的配置类,而不是让Django自动识别。

在你提供的代码中,default_app_config = 'goods.GoodsConfig'的作用是明确指定应用goods使用GoodsConfig作为其默认配置类。这样做的好处是,即使Django自动检测到其他配置类,它也会优先选择使用GoodsConfig作为该应用的配置类。

举例来说,假设你的应用goods有如下结构:

goods/__init__.pyapps.pymodels.py...

apps.py中定义了GoodsConfig配置类:

# goods/apps.pyfrom django.apps import AppConfigclass GoodsConfig(AppConfig):name = 'goods'verbose_name = 'Goods Application'

然后在goods/__init__.py中添加了default_app_config变量:

# goods/__init__.pyfrom .apps import GoodsConfig
default_app_config = 'goods.GoodsConfig'

通过这样的设置,你可以确保GoodsConfig会被作为goods应用的默认配置类。即使Django自动发现了其他配置类,也会忽略它们并使用GoodsConfig

需要注意的是,default_app_config变量只有在应用被加载之前设置才有效。在Django启动时,它会读取应用的__init__.py文件,找到default_app_config变量并应用它指定的配置类。因此,如果你在运行Django之前修改了该文件,确保default_app_config的设置在Django加载应用之前生效。

10-3-配置admin.py文件

在文件:E:\Python_project\P_001\myshop-test\good_info\goods\admin.py 中写入下面的代码:

from django.contrib import admin
from goods.models import *@admin.register(GoodsCategory)
class GoodsCategoryAdmin(admin.ModelAdmin):admin.site.site_title = "我的商城-标签页标题"admin.site.site_header = "我的商城-页面标题"admin.site.index_title = "商城平台管理-后台管理主页标题"# 设置列表中显示的字段list_display = ['name', 'sort', 'create_time']  # 字段create_time定义在 from common.base_model import BaseModel 中# 搜索search_fields = ['name', 'parent_id']# 过滤list_filter = ['name', 'parent_id']# 设置每页现实的数据量list_per_page = 10# 设置排序ordering = ['sort']@admin.register(Goods)
class GoodsAdmin(admin.ModelAdmin):# 设置列表中显示的字段list_display = ['name', 'market_price', 'price']

代码@admin.register(GoodsCategory)是什么意思?
答:有两个作用。
①在Django中,@admin.register() 是一个装饰器(decorator),用于注册数据库模型类(Model)到后台管理界面。具体来说,@admin.register(GoodsCategory) 这行代码的作用是将 GoodsCategory 数据库模型类注册到Django后台管理界面,从而允许您在后台对该模型进行管理和操作。

一旦通过 @admin.register() 注册了一个数据库模型类,Django会自动创建一个对应的管理页面,该页面允许您查看、添加、修改和删除模型的实例。这样,您就可以在后台管理界面轻松地管理您的数据库中的 GoodsCategory 数据。

②在上面的代码中,GoodsCategoryAdmin 类被用作 GoodsCategory 模型的管理类,它继承自 admin.ModelAdmin。通过在该类中定义不同的属性和方法,您可以自定义后台管理界面的外观和行为,例如定义要显示的字段、搜索和过滤选项、排序规则等等。

11-重新启动 Web服务及效果展示

CTRL+C结束掉之前启动的Web服务,然后重新启动:

CD E:\Python_project\P_001\myshop-test\good_info\
E:
python manage.py runserver

访问后台管理:
http://127.0.0.1:8000/admin/
用户名(administrator)和密码(bb123456)
在这里插入图片描述
在这里插入图片描述
把上面的这幅截图记为“Home图”
点击“Home图”中的“商品信息”,界面如下:
在这里插入图片描述
点击“Home图”中的“商品分类”,界面如下:
在这里插入图片描述
点击“Home图”中的“商品信息”右边的“+ Add”,界面如下:
在这里插入图片描述
点击“Home图”中的“商品分类”右边的“+ Add”,界面如下:
在这里插入图片描述

12-写入数据测试

12-1-创建一条“商品分类”数据

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

12-2-创建一条“商品信息”数据

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

13-整个Project的压缩包下载链接

整个Project的压缩包下载链接:
https://pan.baidu.com/s/1DwfwH79cE6SB67hZqa-Q3w?pwd=hyrd

相关文章:

使用Django自带的后台管理系统进行数据库管理的实例

Django自带的后台管理系统主要用来对数据库进行操作和管理。它是Django框架的一个强大功能,可以让你快速创建一个管理界面,用于管理你的应用程序的数据模型。 使用Django后台管理系统,你可以轻松地进行以下操作: 数据库管理&…...

leetcode解题思路分析(一百四十五)1254 - 1266 题

统计封闭岛屿的数目 二维矩阵 grid 由 0 (土地)和 1 (水)组成。岛是由最大的4个方向连通的 0 组成的群,封闭岛是一个 完全 由1包围(左、上、右、下)的岛。请返回 封闭岛屿 的数目。 BFS或者DFS…...

使用 GORM 连接数据库并实现增删改查操作

步骤 1:安装 GORM 首先,我们需要安装 GORM 包。在终端中运行以下命令: shell go get -u gorm.io/gorm 步骤 2:导入所需的包 在 Go 代码的开头导入以下包: import ("gorm.io/driver/mysql" // 如果你使用…...

kafka集群搭建(Linux环境)

zookeeper搭建,可以搭建集群,也可以单机(本地学习,没必要搭建zookeeper集群,单机完全够用了,主要学习的是kafka) 1. 首先官网下载zookeeper:Apache ZooKeeper 2. 下载好之后上传到…...

树莓派本地快速搭建web服务器,并发布公网访问

文章目录 树莓派本地快速搭建web服务器,并发布公网访问 树莓派本地快速搭建web服务器,并发布公网访问 随着科技的发展,电子工业也在不断进步,我们身边的电子设备也在朝着小型化和多功能化演进,以往体积庞大的电脑也在…...

集合中的数据结构

栈 先进后出入口跟出口在同一侧 队列 先进先出入口跟出口在不同的一层 数组 查询快、增删慢查询快是因为数组的地址是连续的,我们通过数组的首地址就可以找到数组,之后通过数组的下标就可以访问数组的每一个元素。增删慢是因为数组的长度是固定的&…...

CentOS 8 错误: Error setting up base repository

配置ip、掩码、网关、DNS VMware网关可通过如下查看 打开网络连接 配置镜像的地址 vault.centos.org/8.5.2111/BaseOS/x86_64/os/...

java外观模式

在Java中,外观模式(Facade Design Pattern)用于为复杂的子系统提供一个简单的接口,以方便客户端的使用。外观模式是一种结构型设计模式,它隐藏了系统的复杂性,将多个类的复杂操作封装在一个外观类中&#x…...

3秒快速打开 jupyter notebook

利用 bat 脚本,实现一键打开 minconda 特点: 1、可指定 python 环境 2、可指定 jupyter 目录 一、配置环境 minconda 可以搭建不同的 python 环境,所以我们需要找到 minconda 安装目录,把对应目录添加到电脑环境 PATH 中&#…...

数据安全

数据的备份与恢复 1. 数据备份技术 任何数据在长期使用过程中,都存在一定的安全隐患。由于认为操作失误或系统故障,例如认为错误、程序出错、计算机失效、灾难和偷窃,经常造成数据丢失,给个人和企业造成灾难性的影响。在这种情况…...

华为nat64配置

1.前期环境准备 环境拓扑 拓扑分为两个区域,左边为trust区域,使用IPv4地址互访,右边为untrust区域,使用IPv6地址互访 2.接口地址配置 pc1地址配置 pc2地址配置 FW接口配置 (1)首先进入防火墙配置界面 注:防火墙初始账号密码为user:admin,pwd:Admin@123,进入之后…...

从分片传输到并行传输之大文件传输加速技术

随着大文件的传输需求越来越多,传输过程中也会遇到很多困难,比如传输速度慢、文件安全性低等。为了克服这些困难,探讨各种大文件传输加速技术。其中,分片传输和并行传输是两种比较常见的技术,下面将对它们进行详细说明…...

mybatisPlus入门篇

文章目录 初窥门径1.1 初识MybatisPlus1.2 MybatisPlus的特性1.3 MybatisPlus的架构模型 入门案例2.1 准备相关开发环境2.2 搭建springboot工程2.3 创建数据库2.4 引入相关依赖2.5 创建实体类2.6 集成MybatisPlus2.7 单元测试2.8 springboot日志优化 初窥门径 1.1 初识Mybatis…...

NineData支持最受欢迎数据库PostgreSQL

根据在 Stack Overflow 发布的 2023 开发者调研报告中显示,PostgreSQL 以 45% vs 41% 的受欢迎比率战胜 MySQL,成为新的最受欢迎的数据库。NineData 也在近期支持了 PostgreSQL,用户可以在 NineData 平台上进行创建数据库/Schema、管理用户与…...

Redis配置类

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…...

【前端知识】React 基础巩固(三十六)——RTK中的异步操作

React 基础巩固(三十六)——RTK中的异步操作 一、RTK中使用异步操作 引入RTK中的createAsyncThunk,在extraReducers中监听执行状态 import { createSlice, createAsyncThunk } from "reduxjs/toolkit"; import axios from "axios";export cons…...

33. 本地记事本

本地记事本 html部分 <button class"add"><i class"iconfont icon-jiahao"></i> </button>css部分 *{margin: 0;padding: 0; } body{background-color: #7bdaf3;display: flex;padding-top: 3rem;flex-wrap: wrap; } .add{pos…...

Android Glide预处理preload原始图片到成品resource 预加载RecyclerViewPreloader,Kotlin

Android Glide预处理preload原始图片到成品resource & 预加载RecyclerViewPreloader&#xff0c;Kotlin <uses-permission android:name"android.permission.READ_EXTERNAL_STORAGE" /><uses-permission android:name"android.permission.READ_MED…...

亚马逊云科技全新Amazon Bedrock,助力客户构建生成式AI应用

亚马逊云科技近日在纽约峰会上宣布全面扩展其全托管基础模型服务Amazon Bedrock&#xff0c;包括新增Cohere作为基础模型供应商&#xff0c;加入Anthropic和Stability AI的最新基础模型&#xff0c;并发布变革性的新功能Amazon Bedrock Agents功能。客户无需管理任何基础设施&a…...

题解:ABC275 C-Counting Squares

题解&#xff1a;ABC275 C-Counting Squares 题目 链接&#xff1a;Atcoder。 链接&#xff1a;洛谷。 难度 算法难度&#xff1a;入门。 思维难度&#xff1a;普及。 调码难度&#xff1a;普及。 综合评价&#xff1a;简单。 算法 dfs数论。 思路 由数学方法可严谨…...

加载已训练好的目标检测YOLOv8,v5,v3,v6模型,对数据集中某张图片中的object打上方框、标出类别,并将图片保存到本地

参考的教程&#xff1a;Python - Ultralytics YOLOv8 Docs 在与ultralytics代码同一层级下新建 predict.py 里面写下面的内容。运行即可 from ultralytics import YOLO from PIL import Image import cv2# 加载计划使用的模型 model YOLO("yolov8n.pt") # load a…...

《零基础入门学习Python》第073讲:GUI的终极选择:Tkinter10

我们不难发现&#xff0c;几乎每一个应用程序都有一些相同的地方&#xff0c;比如说&#xff1a;标题栏、状态栏、边框、滚动条、工作区。还有的就是 菜单。 传统的菜单有大家熟悉的 File&#xff0c;Edit&#xff0c;Help等&#xff0c;点开之后&#xff0c;是下拉菜单&#…...

Shell脚本实现分库分表操作

目录 一&#xff0c;分库备份 二&#xff0c;分库操作 三&#xff0c;分库分表备份 四&#xff0c;备份还原 一&#xff0c;分库备份 #!/bin/bash mysql_cmd-uroot -pzly666666 bak_path/backup/db [ -d ${bak_path} ] || mkdir -p ${bak_path}mysql ${mysql_cmd} -e show…...

区块链实验室(12) - 网络拓扑对PBFT共识流量的影响

区块链实验室(10) - 实例说明PBFT的共识过程说明了1个简单又极端的网络&#xff0c;在这个网络中完成1个交易的共识&#xff0c;需要26次通信&#xff0c;见下图所示。 换1个网络&#xff0c;这个网络是强连通图&#xff0c;见下图。 在这个网络中完成1次交易&#xff0c;流量见…...

聊聊这几年的科技风口

作者&#xff1a;朱金灿 来源&#xff1a;clever101的专栏 为什么大多数人学不会人工智能编程&#xff1f;>>> 数数这几年的科技风口&#xff1a;AR&#xff08;包括什么MR、VR&#xff09;、区块链(包括后来的什么web3)、元宇宙到现在的AI&#xff0c;下面逐一谈谈…...

【力扣每日一题】2023.7.30 环形链表2

题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 这道题属于是那种知道解法就很简单&#xff0c;不知道解法就很难独立想出来的那种&#xff0c;我们只需要稍微记住这类题的固定解法就可以。 所以接下来我先说解法&#xff0c;再解释为什么解法可以解出来。 那么我们都…...

Flink状态的理解

Flink是一个带状态的数据处理系统&#xff1b;系统在处理数据的过程中&#xff0c;各算子所记录的状态会随着数据的处理而不断变化&#xff1b; 1. 状态 所谓状态State&#xff0c;一般指一个具体的 Task 的状态&#xff0c;即线程处理过程中需要保存的历史数据或历史累计数据…...

6.3.tensorRT高级(1)-yolov5模型导出、编译到推理(无封装)

目录 前言1. YOLOv5导出2. YOLOv5推理3. 补充知识总结 前言 杜老师推出的 tensorRT从零起步高性能部署 课程&#xff0c;之前有看过一遍&#xff0c;但是没有做笔记&#xff0c;很多东西也忘了。这次重新撸一遍&#xff0c;顺便记记笔记。 本次课程学习 tensorRT 高级-yolov5模…...

如何利用设备数字化平台推动精益制造?

人工智能驱动技术的不断发展&#xff0c;尤其是基于机器学习的预测分析工具的使用&#xff0c;为制造业带来了全新的效率和价值水平。一直以来&#xff0c;精益生产&#xff08;也叫精益制造&#xff09;在制造业中扮演着重要角色&#xff0c;而现在通过与工业 4.0的融合&#…...

使用Wps减小PDF文件的大小

第一步、打开左上角的文件 第二步、点击打印选项 第三步、点击打印按钮...

移动网站开发技术/营销型高端网站建设

改变字符串的大小写NSString *string1 "A String"; NSString *string2 "string hu"; NSLog("string1:%",[string1 uppercaseString]);//uppercaseString返回转换为大写的字符串 NSLog("string2:%",[string2 lowercaseString]);//low…...

wordpress iis 404页面/线下引流推广方法

你不知道的JavaScript博文相关代码托管至Github&#xff0c;每次写完博客会把代码提交上去。 代码地址&#xff1a;https://github.com/rongbo-j/you-dont-know-js 点击Download Zip可下载源码&#xff0c;或者安装git版本控制工具&#xff0c;在控制台或终端敲两行命令可以检出…...

phpcms律师网站源码/免费的app推广平台

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2022安全员-A证试题是安全员-A证模拟考试题库的多种练习模式&#xff01;2022年安全员-A证特种作业证考试题库及答案依据安全员-A证新考试大纲。安全员-A证全部考试题库随时根据安全生产模拟考试一点通提高考试通过率…...

黑龙江企业网站建设公司/网络营销课程大概学什么内容

生产环境中微服务的发布是非常频繁的&#xff0c;对于一些互联网型的项目&#xff0c;甚至在你与他人谈话闲聊的几分钟内便有新的版本发布出来&#xff1b;一般的&#xff0c;每发布一个新的微服务&#xff0c;网关就可能需要为新发布的微服务定义对应的访问路由&#xff0c;如…...

c 网站开发实例/优化大师官方下载

题目&#xff1a; 月饼是中国人在中秋佳节时吃的一种传统食品&#xff0c;不同地区有许多不同风味的月饼。现给定所有种类月饼的库存量、总售价、以及市场的最大需求量&#xff0c;请你计算可以获得的最大收益是多少。 注意&#xff1a;销售时允许取出一部分库存。样例给出的情…...

自己做资讯网站/正规的推文平台

/usr/local/nginx/sbin/nginx -s reload 重新加载ngnix配置文件 /usr/local/nginx/sbin/nginx -t 查看配置文件信息 ./nginx 启动 drivers 本地域名映射 192.168.2.3 www.myapp.com ngnix.conf修改http{ upstream www.myapp.com { server 192.168.2.4:8080 weight1; server 19…...