Django系列:Django简介与MTV架构体系概述
作者:李俊才 (jcLee95):https://blog.csdn.net/qq_28550263
邮箱 :291148484@163.com
本文地址:https://blog.csdn.net/qq_28550263/article/details/132890054
【介绍】:Django简介与MTV架构体系概述。
目 录
- 1. 概述
- 2. MTV架构
- 2.1 概述
- 2.1.1 是什么 MTV
- 2.1.2 MTV 与 MVC的关系
- 2.2 Model(数据模型层)
- 数据结构定义
- 验证规则
- 数据表之间的关系
- 数据库查询方法
- 数据库迁移
- 2.3 View(视图层)
- 视图函数和视图类
- 基于函数的视图(Function-Based Views)
- 基于类的视图(Class-Based Views)
- URL映射
- 请求和响应处理
- HTTP响应
- 2.4 Template(模板层)
- 1. 模板语法的优点
- 2. 前后端分离的优势
- 3. Django模板使用场景
- 4. 其它建议
- 3. 学习Django的建议
- 3.1 开始学习Django
- 3.2 关于 Django 文档
- [1. 入门](https://docs.djangoproject.com/en/4.2/intro/overview/)
- 2.模型层
- 3.视图层
- 4.模板层
- 5.表单
- 6.开发过程
- 7.管理界面
- 8.安全性
- 9.国际化和本地化
- 10.性能和优化
- 11.地理框架
- 12.常见Web应用程序工具
- 13.其他核心功能
- 14.Django开源项目
1. 概述
1.1 为什么想写Django
记得2019年时初学Django,这也是我学习的第一个Web后端框架,也是至今为止我最喜欢的一个。19年时,当时发的第一篇博客就是关于Django中如何解决跨域问题的总结。近几年做过很多不同领域的项目,包括前端、桌面端、移动端的应用开发,应用开发中都会设计到一个共同的问题,就是数据从哪里来。
在软件应用开发中,关于数据的处理可以分成两大领域,一个是领域是处理内存中的数据,我们称之为状态管理;另一个领域是数据的持久化。当然,如果你说我做的时一个本地应用,比如单机游戏、计算器使用程序,等等,他们所涉及的数据处理往往集中与状态管理,以及简单的本地存储。但是如果你做的应用是一个网络应用,则一般不可避免要使用数据库,尤其是基于客户端-服务器体系的软件模式。
在网络应用中,数据的来源和管理变得更加复杂。这时候,我们需要一个强大的后端框架来帮助我们处理各种数据操作,包括接收、存储、检索和传输数据。这正是Django的用武之地。
Django是一个高度可定制的Python后端框架,它提供了丰富的功能和工具,用于处理与数据相关的所有任务。不管你是构建社交媒体平台、电子商务网站、博客、在线学习平台还是任何其他类型的Web应用,Django都可以成为你的得力助手。
在前后端分离的开发体系中,后端的作用至关重要。它充当着数据的守护者和处理者,负责接受前端发送的请求,处理这些请求,并将响应返回给前端。这种分离的开发模式使前端工程师和后端工程师能够独立开发各自的部分,从而提高了开发效率和代码的可维护性。
1.2 Django框架的优缺点
Django的优势在于其强大的数据处理能力。它提供了内置的数据库支持,你可以选择使用不同的数据库后端(如SQLite、MySQL、PostgreSQL等),根据项目的需求进行配置。Django的ORM(对象关系映射)让你可以使用Python类来表示数据库中的表格和关系,而不需要编写复杂的SQL查询语句。这简化了数据持久化的过程,并提高了代码的可读性。
此外,Django还提供了许多其他功能,如用户认证、安全性、缓存管理、国际化等,使开发者能够专注于业务逻辑而不必担心底层的技术细节。
总结起来,Django框架具体有以下优点。
概述 | 描述 |
---|---|
完整的开发框架 | Django提供了一个完整的开发框架,包括ORM(对象关系映射)、认证、管理后台、表单处理、国际化等功能。这意味着你可以更专注于业务逻辑,而不必从头构建这些常见的功能。 |
高度可定制 | 虽然Django提供了很多内置功能,但它也允许开发者高度定制应用程序。你可以轻松地根据项目需求添加自定义模型、视图、中间件等。 |
强大的社区支持 | Django拥有一个庞大的活跃社区,这意味着你可以找到大量的文档、教程、第三方库和插件,以及得到问题的快速解答。 |
安全性 | Django有内置的安全性功能,包括防止SQL注入、跨站点脚本攻击(XSS)、跨站点请求伪造(CSRF)等。这些功能有助于保护应用程序免受常见的Web安全漏洞。 |
ORM(对象关系映射) | Django的ORM允许你使用Python类来表示数据库模型,而不需要编写SQL语句。这简化了数据持久化的过程,提高了代码的可读性和可维护性。 |
丰富的第三方库 | Django生态系统中有许多第三方库和插件,可以扩展其功能,例如Django REST framework用于构建RESTful API,Django CMS用于内容管理等。 |
同时也必须要指出,作为一款重型Web框架,他虽然提供了强大丰富的功能,但也有显而易见的一些缺点。
概述 | 描述 |
---|---|
学习曲线 | 对于初学者来说,Django的学习曲线可能相对陡峭。尤其是对于那些没有经验的开发者,需要一些时间来理解框架的各个方面。 |
过于重量 | 虽然Django的完整性是其优点之一,但对于一些小型项目来说,它可能显得过于重量级。对于一些特定需求的微服务项目,选择更轻量级的框架可能更合适。 |
不适合实时应用 | Django在处理实时应用和长连接方面表现不佳。如果你的项目需要大规模实时数据处理,可能需要考虑其他框架或技术栈。 |
某些功能需要第三方库 | 尽管Django提供了很多功能,但某些高级功能可能需要依赖第三方库。这可能会导致项目的复杂性增加,需要额外的配置和集成工作。 |
接下来,本文将探讨如何配置Django的开发环境,以便你能够开始编写和测试自己的Web应用程序。在进行这一步之前,请确保你已经安装了Python,因为Django是一个基于Python的框架。
2. MTV架构
2.1 概述
2.1.1 是什么 MTV
Django的MTV架构是其成功的关键之一,它将应用程序的不同方面明确定义并分离开来,从而提供了一个强大而有组织的开发框架。
MTV 代表了 Model-Template-View,是Django框架的核心设计理念之一,它有助于将应用程序的不同组成部分分离开来,以提高代码的可维护性和可扩展性。
2.1.2 MTV 与 MVC的关系
广义上看,Django的MTV也属于MVC体系。在传统的MVC模式中,有三个主要组件:
Model(模型): 负责表示和管理应用程序的数据。
View(视图): 负责用户界面的呈现,将数据从模型传递到用户界面。
Controller(控制器): 负责接受用户输入,处理业务逻辑,并调用模型和视图来执行相应的操作。
MVC模式的关键思想是将应用程序分为 数据、用户界面 和 控制逻辑 三个独立的组件。
实际上,Django中也是如此,只不过它在术语和组织上有所不同:
Model(模型): 与MVC中的模型类似,负责表示和管理应用程序的数据。模型定义了数据库结构和数据之间的关系。
Template(模板): 与MVC中的视图(View)类似,但在Django中,模板用于呈现用户界面。它包含了 HTML 和 Django 模板语言的标记,用于渲染页面并显示数据。不过需要指出是,在如今的实际开发中,都采用前后端分离的体系,因此Template基本上是不怎么使用的(仅限于后端自己玩玩即可),前端框架如Vue、React等都有自己的模板语法,如React中使用的JSX/TSX,Vue中的单文件组件及其各种模板语法,开发效率都远远高于后端框架,毕竟后端的模板本质上都是拼凑和处理html、js、css字符串。
View(视图): 与MVC中的控制器(Controller)类似,但在Django中,视图负责接受HTTP请求,处理业务逻辑,然后使用模型和模板来生成HTTP响应。
之所以这样组术语,因为Django希望强调它的几大主要功能,比如说它的其功能强大的模板层,提供了 开箱即用 的 模板语法。事实上,在Django中多数功能都是开箱即用的,这在后续文章的详细介绍中将会看到。
接下来,本节将分别介绍绍Django的MTV架构中的每个组成部分。
2.2 Model(数据模型层)
模型是Django应用程序的数据存储部分。它定义了应用程序的数据结构,包括数据库表格、字段以及表格之间的关系。
模型通常由Python类表示,这些类继承自Django的模型基类。每个模型类代表了一个数据库表格。使用模型类,你可以定义数据的结构、验证规则、关系和数据库查询方法。Django的ORM(对象关系映射)允许你通过Python代码来操作数据库,而不需要直接编写SQL语句。
当使用Django开发Web应用程序时,模型(Model)是数据层的核心组件,它提供了一种高级、Pythonic 的方式来管理应用程序的数据。下面我们将初步从不同角度体验一下Django的Model层。
数据结构定义
在Django中,每个模型类代表了应用程序中的一个数据结构,通常对应数据库中的表格。这些模型类是Python类,它们定义了表格的字段和字段的数据类型。例如,你可以创建一个模型类来表示用户(User):
from django.db import modelsclass User(models.Model):username = models.CharField(max_length=100)email = models.EmailField()date_joined = models.DateTimeField(auto_now_add=True)
这个模型定义了一个名为 User
的数据结构,包括了用户名(username
)、电子邮件(email
)和注册日期(date_joined
)等字段。
验证规则
Django模型允许你定义字段的验证规则,以确保数据的完整性和一致性。例如,你可以要求电子邮件字段的值必须是有效的电子邮件地址,并且用户名字段的长度不得超过一定限制。这些验证规则可以在模型类中以参数的形式定义。
数据表之间的关系
在现实世界的应用程序中,数据之间通常存在复杂的关系。Django模型允许你定义不同表格之间的关系,如 一对多、多对一 和 多对多 关系。这些关系可以通过 字段 来表示,如 ForeignKey 和 ManyToManyField。
例如,如果你的应用程序需要表示用户和他们的文章之间的关系,可以使用 ForeignKey 字段:
class Article(models.Model):title = models.CharField(max_length=200)content = models.TextField()author = models.ForeignKey(User, on_delete=models.CASCADE)
这里的author
字段是一个外键,它建立了Article
模型和User
模型之间的关系,表示每篇文章都有一个作者,作者是一个User
对象。
数据库查询方法
Django的 ORM 允许你通过Python代码进行数据库查询,而不需要编写原生的SQL语句。你可以使用模型类的方法来执行常见的查询操作,如过滤、排序、聚合等。这使得数据的检索和操作变得更加容易和可读。
例如,你可以使用以下代码来获取所有用户名以字母顺序排列的用户:
users = User.objects.order_by('username')
这里的User.objects
是一个查询集(QuerySet),它允许你链式调用多个查询方法,以便构建复杂的查询。
数据库迁移
Django的模型还包括一个重要功能,即数据库迁移。它可以自动检测模型类的变化,并生成相应的数据库迁移文件,以便你可以轻松地将数据库模式更新到最新版本,而无需手动编写SQL迁移脚本。
例如,当你添加一个新的字段或修改字段的属性时,Django可以生成迁移文件,然后你可以运行迁移命令来更新数据库:
python manage.py makemigrations # 生成迁移文件
python manage.py migrate # 应用迁移以更新数据库
总而言之,Django的模型提供了一个强大的工具,用于定义数据结构、验证数据、建立数据之间的关系,并且可以通过Python代码进行数据库查询。这种高级的ORM能力大大简化了数据层的开发和维护,同时提高了代码的可读性和可维护性。
2.3 View(视图层)
Django视图层是Django应用程序的逻辑处理部分。它接收来自用户的HTTP请求,执行相应的操作,然后返回HTTP响应。视图层通常是Python函数(基于函数的视图)或类(基于类的视图),它们处理URL映射和请求处理逻辑。每个视图函数接收HTTP请求,执行必要的数据处理,然后通过模板生成响应。
视图层的任务包括从数据库中检索数据、对数据进行操作、验证用户身份、渲染模板以及返回HTTP响应。Django的URL映射机制将不同的URL路由到相应的视图函数。
视图函数和视图类
视图层通常由Python函数或类组成,它们被称为视图函数或视图类。
基于函数的视图(Function-Based Views)
这是最常见且简单的形式,其中视图是一个Python函数,接收HTTP请求作为参数,并返回HTTP响应。例如:
from django.http import HttpResponsedef my_view(request):# 处理请求的逻辑return HttpResponse("Hello, World!")
基于类的视图(Class-Based Views)
这是一种更高级的方式,它允许你使用类来组织视图逻辑,每个类的方法对应于不同的HTTP请求方法(如GET、POST)。这提供了更好的代码组织和可重用性。例如:
from django.http import HttpResponse
from django.views import Viewclass MyView(View):def get(self, request):# 处理GET请求的逻辑return HttpResponse("Hello, World!")
URL映射
Django的URL映射机制将不同的URL路由到相应的视图函数或视图类。通过在Django应用程序的URL配置中定义URL模式(URL patterns),你可以将特定的URL路径映射到特定的视图。这允许你组织和管理应用程序的URL结构。
请求和响应处理
Django 的 URL 映射机制将不同的URL路由到相应的视图函数或视图类。
通过在 Django 应用程序的URL配置中定义 URL模板(URL patterns),你可以将特定的 URL 路径映射到特定的视图。这允许你组织和管理应用程序的 URL 结构。
HTTP响应
视图函数或视图类的最终任务是返回 HTTP响应对象 。HTTP响应包含了要发送回客户端的内容,如HTML内容、JSON数据等。
通常,你可以使用Django提供的 HttpResponse类 来创建响应对象,或者使用更高级的响应类来处理不同的情况,如JsonResponse、HttpResponseRedirect 等。
其中,HttpResponse 类用于创建基本的 HTTP 响应对象,通常用于返回 HTML 内容;JsonResponse 类用于创建包含 JSON 数据的 HTTP 响应对象。这在构建 API 或需要返回结构化数据的情况下非常有用;而HttpResponseRedirect 类用于重定向用户到另一个URL。这在处理表单提交后通常用于将用户重定向到成功页面或其他页面。
2.4 Template(模板层)
Django模板层是Django应用程序的用户界面部分。它定义了应用程序的前端布局和显示方式。模板层中通常是HTML文件,但其中可以包含Django模板语言的标记和逻辑。Django模板语言允许你嵌入动态数据和逻辑控制,以便在渲染时生成具体的HTML内容。使用模板,你可以将数据从后端传递到前端,以便在浏览器中呈现给用户。模板层的重要任务是将数据和用户界面有效地结合起来。
虽然Django中提供了强大的模板语法功能,但是在前后端分离的大环境下,很多情况下我们并不怎么使用它。事实上,是否使用模板语法,理解和评价Django的模板语法以及前后端分离的实践,是一个重要的话题,它取决于不同方面的考量。读者可以参考下面的不同角度决定是否需要使用Django的模板层。
1. 模板语法的优点
项目 | 描述 |
---|---|
快速原型设计 | 模板语法允许后端开发人员快速创建原型并生成基本的前端界面,这在项目早期或需要快速迭代的情况下可能很有价值。对于一些简单的页面,使用模板语法可能更加高效 |
简化小规模项目 | 对于小规模项目或内部工具,Django的模板语法可以提供足够的功能,无需引入复杂的前端框架。这可以减少项目的复杂性和维护成本 |
无需前端开发人员 | 一些项目可能没有专门的前端开发人员或资源。在这种情况下,后端开发人员可以使用模板语法来处理整个应用程序的用户界面 |
2. 前后端分离的优势
项目 | 描述 |
---|---|
分工合作 | 前后端分离允许前端和后端开发人员专注于各自的领域。前端开发人员可以更好地处理用户界面的复杂性,而后端开发人员可以专注于业务逻辑和数据处理 |
更好的性能 | 前后端分离允许前端应用程序与后端API分离运行,这有助于提高应用程序的性能和加载速度。前端应用程序可以被缓存,并且可以独立扩展和优化 |
灵活性和创新 | 使用现代前端框架如React、Vue等,开发人员可以更轻松地实现复杂的用户交互和动画效果。这些框架提供了更多的灵活性和创新空间 |
3. Django模板使用场景
项目 | 描述 |
---|---|
适用于小型项目和原型 | Django模板语法在小型项目、原型设计或内部工具开发中可能仍然有用。这些情况下,可以快速构建简单的用户界面而无需引入前端框架 |
前后端分离对大型应用更合适 | 对于大型应用、高性能要求、复杂交互和多平台支持等场景,前后端分离通常更合适。现代前端框架提供了更多的工具和性能优势 |
4. 其它建议
- 混合使用: 在一些项目中,混合使用Django的模板语法和前端框架可以是一个有效的策略。你可以选择性地使用Django渲染部分页面,而使用前端框架构建复杂的单页应用。
- 根据需求选择: 最终,选择是否使用Django的模板语法或前后端分离取决于项目需求、团队技能和时间预算。在选择时应权衡各自的优缺点。
总的来说,Django的模板语法具有一些优点,比如在小型项目和原型设计中,但前后端分离的做法在大型应用和复杂用户界面方面更具竞争力。开发团队应根据具体项目需求和资源来做出决策,并根据情况选择使用何种技术和工具。
3. 学习Django的建议
3.1 开始学习Django
Django是基于Python的Web框架,所以首先需要熟悉Python编程语言。Django官方文档是学习Django的最佳资源之一。开始时,阅读官方教程是一个很好的起点。官方文档还提供了详细的参考资料,涵盖了Django的每个方面。
Django官方网站地址为:https://docs.djangoproject.com/,你可以在Document标签页阅读其文档:https://docs.djangoproject.com/en/4.2/intro/overview/。
一旦你理解了Django的基础概念,尝试构建一些小型项目来实践你的知识。这有助于你熟悉Django的工作流程。
3.2 关于 Django 文档
Django的官方文档分为以下几个部分,可以参考查询相应的页面。
1. 入门
-
From scratch(从零开始): 适用于初学Django或编程的人。这是你开始的地方,提供了有关Django的概览和安装的信息。
-
Tutorial(教程): 分为多个部分,通过一系列步骤引导你创建一个Web应用程序。教程包括请求和响应、模型和管理站点、视图和模板、表单和通用视图、测试、静态文件、自定义管理站点以及添加第三方包等主题。
-
Advanced Tutorials(高级教程): 包括如何编写可重用应用程序以及编写Django的第一个补丁的信息。
2.模型层
-
Models(模型): 介绍了Django提供的数据结构化和操作的抽象层,包括模型、字段类型、索引、元选项和模型类。
-
QuerySets(查询集): 学习如何使用查询集进行数据库查询,包括查询方法参考和查找表达式。
-
Model instances(模型实例): 讲解了如何访问相关对象和实例方法。
-
Migrations(迁移): 介绍了Django的迁移系统,包括迁移概述、操作参考、模式编辑器和编写迁移。
-
Advanced(高级): 涵盖了管理器、原始SQL、事务、聚合、搜索、自定义字段、多数据库、自定义查找、查询表达式、条件表达式和数据库函数等高级主题。
-
Other(其他): 包括支持的数据库、遗留数据库、提供初始数据、优化数据库访问以及特定于PostgreSQL的功能等信息。
3.视图层
-
基础知识: 学习有关视图的基础知识,包括URL配置、视图函数、快捷方式、装饰器和异步支持。
-
参考: 包括内置视图、请求/响应对象和模板响应对象的参考。
-
文件上传: 了解文件上传的概述、文件对象、存储API、文件管理以及自定义存储。
-
基于类的视图: 概述了基于类的视图,包括内置显示视图、内置编辑视图、使用混合、API参考以及扁平索引。
-
高级: 包括生成CSV和生成PDF等高级主题。
-
中间件: 包括中间件概述和内置中间件类。
4.模板层
-
基础知识: 介绍了模板层的概述。
-
**针对设计师:** 提供了设计师友好的语法概述、内置标签和过滤器以及人性化方面的信息。
-
**针对程序员:** 包括模板API、自定义标签和过滤器以及自定义模板后端方面的信息。
5.表单
-
The basics(基础知识): 介绍了Django提供的丰富框架,用于创建表单和操作表单数据。
-
Advanced(高级): 包括用于模型的表单、媒体集成、表单集和自定义验证等高级主题。
6.开发过程
-
Settings(设置): 概述了Django设置以及完整的设置列表。
-
Applications(应用程序): 介绍了应用程序的概述。
-
Exceptions(异常): 概述了异常的信息。
-
django-admin 和 manage.py: 包括django-admin和manage.py的概述以及如何添加自定义命令的信息。
-
测试: 学习有关Django应用程序开发和测试的各种组件和工具。
-
部署: 包括部署的概述、WSGI服务器
、ASGI服务器、部署静态文件、通过电子邮件跟踪代码错误以及部署检查表等信息。
7.管理界面
-
管理站点: 查找有关自动化管理界面的所有信息,这是Django中最受欢迎的功能之一。
-
管理操作: 学习有关管理操作的信息。
-
Admin documentation generator(管理文档生成器): 包括有关管理文档生成器的信息。
8.安全性
-
安全性概述: 介绍了在Web应用程序开发中安全性的重要性以及Django提供的多种保护工具和机制。
-
Django中披露的安全问题: 包括Django中已披露的安全问题的信息。
-
防止点击劫持攻击(Clickjacking protection): 介绍了防止点击劫持攻击的保护方法。
-
跨站点请求伪造保护(CSRF):](https://docs.djangoproject.com/en/4.2/ref/csrf/) 了解跨站点请求伪造保护的方法。
-
加密签名: 学习有关加密签名的信息。
-
安全性中间件: 包括安全性中间件的信息。
9.国际化和本地化
-
概述: 介绍了Django提供的强大的国际化和本地化框架,以帮助你开发多语言和多地区的应用程序。
-
时区: 学习关于时区的信息。
10.性能和优化
- 性能和优化概述: 包括一系列可帮助你提高代码运行效率、减少系统资源使用的技术和工具。
11.地理框架
- GeoDjango: 旨在成为一款世界级的地理Web框架,目标是尽可能地简化GIS Web应用程序的构建,以及利用具备空间功能的数据的强大功能。
12.常见Web应用程序工具
-
身份验证: 包括身份验证系统的概述、使用身份验证系统、密码管理、自定义身份验证和API参考。
-
缓存: 学习有关缓存的信息。
-
日志记录: 了解有关日志记录的信息。
-
发送电子邮件: 包括发送电子邮件的信息。
-
RSS/Atom订阅源: 学习有关RSS/Atom订阅源的信息。
-
分页: 了解分页的信息。
-
消息框架: 学习关于消息框架的信息。
-
序列化: 了解有关序列化的信息。
-
会话: 学习关于会话的信息。
-
网站地图: 包括网站地图的信息。
-
静态文件管理: 了解有关静态文件管理的信息。
-
数据验证: 学习有关数据验证的信息。
13.其他核心功能
-
条件内容处理: 学习关于条件内容处理的信息。
-
内容类型和通用关系: 了解内容类型和通用关系的信息。
-
平面页面: 学习有关平面页面的信息。
-
重定向: 包括重定向的信息。
-
信号: 了解有关信号的信息。
-
系统检查框架: 学习关于系统检查框架的信息。
-
站点框架: 了解有关站点框架的信息。
-
Django中的Unicode: 学习有关Django中的Unicode的信息。
14.Django开源项目
-
社区: 学习如何参与Django项目以及如何贡献,包括发布流程、团队组织、Django源代码存储库、安全策略以及邮件列表和论坛。
-
设计理念: 了解Django项目的设计理念。
-
文档: 关于本文档的信息。
-
第三方分发: 包括第三方分发的信息。
-
Django的发展历程: 学习Django的API稳定性、发布说明和升级说明以及弃用时间表等信息。
相关文章:

Django系列:Django简介与MTV架构体系概述
Django系列 Django简介与MTV架构体系概述 作者:李俊才 (jcLee95):https://blog.csdn.net/qq_28550263 邮箱 :291148484163.com 本文地址:https://blog.csdn.net/qq_28550263/article/details/132890054 【介…...

锐捷交换机WEB管理系统EXCU_SHELL密码信息泄漏漏洞
一、漏洞简介 锐捷交换机 WEB 管理系统 EXCU_SHELL存在密码信息泄露漏洞,攻击者可从漏洞获取到管理员账号密码,从而以管理员权限登录。 二、影响版本 锐捷交换机 WEB 管理系统 三、资产测绘 hunterweb.body"img/free_login_ge.gif"&&…...

线性代数(六) 线性变换
前言 《线性空间》定义了空间,这章节来研究空间与空间的关联性 函数 函数是一个规则或映射,将一个集合中的每个元素(称为自变量)映射到另一个集合中的唯一元素(称为因变量)。 一般函数从 “A” 的每个元…...
Python基础运算分享
Python的运算符和其他语言类似 (我们暂时只了解这些运算符的基本用法,方便我们展开后面的内容,高级应用暂时不介绍) 数学运算 >>>print 19 # 加法>>>print 1.3-4 # 减法>>>print 3*5 …...

【MySQL】mysql中有哪几种类型的备份技术?它们各自有什么优缺点?
为什么要备份?备份类型(从类型的角度)备份技术(从技术手段的角度)不同备份方法的比较感谢 💖 为什么要备份? 数据库或它所在的平台可能会出现问题,这时候数据库中的数据可能就遭到了…...

5基于pytorch的多目标粒子群算法,MOPSO,引导种群逼近真实Pareto前沿,算法运行结束后将外部存档中粒子作为获得的Pareto最优解近似。
基于pytorch的多目标粒子群算法,MOPSO,引导种群逼近真实Pareto前沿,算法运行结束后将外部存档中粒子作为获得的Pareto最优解近似。程序已调通,可以直接运行。 5pytorch多目标粒子群算法最优解5pytorch多目标粒子群算法最优解 (xiaohongshu.co…...

002 Linux 权限
前言 本文将会向您介绍关于linux权限方面的内容,包括文件类型,如何切换用户、基本权限、粘滞位等等 Linux具体的用户 超级用户:可以再linux系统下做任何事情,不受限制 普通用户:在linux下做有限的事情。 超级用户的…...

【Java 基础篇】Java可变参数:灵活处理不定数量的方法参数
在Java编程中,可变参数是一项强大的功能,它允许你编写更加灵活的方法,接受不定数量的参数。本文将详细解释Java可变参数的用法、语法以及最佳实践。 什么是可变参数? 可变参数是Java 5引入的一项功能,它允许你在方法…...
“网站建设流程详解:从概念到上线的每个细节“
以下是网站建设流程的详细步骤,从概念到上线的每个细节: 确定网站目标和定位:明确网站的主题和目标,根据目标受众和市场定位来决定网站的内容和设计风格。考虑网站的目的、目标受众、行业或领域等方面,以及网站的定位…...

DC/DC开关电源学习笔记(七)低压大电流DC/DC变换技术
低压大电流DC/DC变换技术 1. 无暂态要求的低压大电流DC/DC变换技术2. 负载极其快速变化的低压大电流DC/DC变换技术2.1 非隔离型 VRM2.2 隔离型VRM低压大电流高功率 DC/DC 变换技术,已从前些年的 3.3V 降至现在的 1.0V 左右,电流目前已可达到几十安至几百安。同时,电源的输出指标…...

XUbuntu22.04之查找进程号pidof、pgrep总结(一百九十)
简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…...
BI与数据治理以及数据仓库有什么区别
你可能已经听说过BI、数据治理和数据仓库这些术语,它们在现代企业中起着重要的作用。虽然它们都与数据相关,但它们之间有着明显的区别和各自独特的功能。数聚将详细探讨BI(商业智能)、数据治理和数据仓库之间的区别,帮…...
java---jar详解
一、help C:\Users\lichf1>jar 用法: jar {ctxui}[vfmn0PMe] [jar-file] [manifest-file] [entry-point] [-C dir] files ... 选项:-c 创建新档案-t 列出档案目录-x 从档案中提取指定的 (或所有) 文件-u 更新现有档案-v 在标准输出中生成详细输出-f 指定档案文件名-m…...

uni-app 新增 微信小程序之新版隐私协议
一、manifest.json中配置 "__usePrivacyCheck__": true 二、编写封装后的组件 <template><view class"privacy" v-if"showPrivacy"><view class"content"><view class"title">隐私保护指引</…...

nbcio-boot移植到若依ruoyi-nbcio平台里一formdesigner部分(四)
到目前为止,虽然基础的formdesigner部分已经完成,但流程用formdesigner提交与审批过程中的显示还有问题。 1、后端部分 其中FormConf修改如下: package com.ruoyi.flowable.core;import lombok.Data;import java.util.List; import java.uti…...

公交查询系统
目录 需求分析 1 概述 2 课题分析 3 实现功能步骤 4 项目背景 概要设计 1 系统流程图. 2 功能模块. 3 各功能模块 4 数据存储 5 类设计 三、详细设计 1公交线路查询系统用户界面 2公交信息存储模快 3公交信息查询模块 4用户信息输入和输出模块 四、调试分析 五、使用说明 六、…...
opencv 轮廓顶点重新排序----四边形
def reorder(myPoints):# print(myPoints.shape)# 创建一个与myPoints具有相同形状和类型的数组myPointsNew np.zeros_like(myPoints)# 数组重塑为一个4行2列的数组myPoints myPoints.reshape((4,2))# 计算myPoints数组中每一行(即每个点)的坐标和add …...

【项目实战】【已开源】USB2.0 HUB 集线器的制作教程(详细步骤以及电路图解释)
写在前面 本文是一篇关于 USB2.0 HUB 集线器的制作教程,包括详细的步骤以及电路图解释。 本文记录了笔者制作 USB2.0 HUB 集线器的心路历程,希望对你有帮助。 本文以笔记形式呈现,通过搜集互联网多方资料写成,非盈利性质…...

分布式运用之rsync远程同步
一、rsync的相关知识 1.1 rsync简介 rsync(Remote Sync,远程同步)是一个开源的快速备份工具,可以在不同主机之间镜像同步整个目录树,支持增量备份,并保持链接和权限,且采用优化的同步算法&am…...
誉天在线项目~ElementPlus实现浏览页面注意点
浏览按钮 点击浏览按钮,传递列表数据索引值。 根据索引值从列表数据数组中获取当前行数据。 <el-button click"toView(scope.$index)" type"success" size"small"><el-icon><EditPen /></el-icon> 浏览<…...

网络六边形受到攻击
大家读完觉得有帮助记得关注和点赞!!! 抽象 现代智能交通系统 (ITS) 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 (…...
Java 语言特性(面试系列2)
一、SQL 基础 1. 复杂查询 (1)连接查询(JOIN) 内连接(INNER JOIN):返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...

C++实现分布式网络通信框架RPC(3)--rpc调用端
目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中,我们已经大致实现了rpc服务端的各项功能代…...
【Linux】shell脚本忽略错误继续执行
在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令,并忽略错误 rm somefile…...
云计算——弹性云计算器(ECS)
弹性云服务器:ECS 概述 云计算重构了ICT系统,云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台,包含如下主要概念。 ECS(Elastic Cloud Server):即弹性云服务器,是云计算…...

MySQL 8.0 OCP 英文题库解析(十三)
Oracle 为庆祝 MySQL 30 周年,截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始,将英文题库免费公布出来,并进行解析,帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...

GC1808高性能24位立体声音频ADC芯片解析
1. 芯片概述 GC1808是一款24位立体声音频模数转换器(ADC),支持8kHz~96kHz采样率,集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器,适用于高保真音频采集场景。 2. 核心特性 高精度:24位分辨率,…...

2025季度云服务器排行榜
在全球云服务器市场,各厂商的排名和地位并非一成不变,而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势,对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析: 一、全球“三巨头”…...

从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践
作者:吴岐诗,杭银消费金融大数据应用开发工程师 本文整理自杭银消费金融大数据应用开发工程师在StarRocks Summit Asia 2024的分享 引言:融合数据湖与数仓的创新之路 在数字金融时代,数据已成为金融机构的核心竞争力。杭银消费金…...