django基础学习

django基础学习

文章目录

  • django基础学习
    • django框架
      • `urls.py`将请求发送到正确的视图
      • `views.py`处理请求
      • `models.py`定义数据模型
      • 根据`models`查询数据
      • `HTML模板`呈现数据
    • Django项目结构
      • 创建虚拟环境下载django
      • 创建站点
      • 创建应用
      • `settings.py`项目设置
    • 通用类别视图
    • 会话框架
    • 身份验证视图
    • 使用表单
    • 使用表单
    • 测试

django框架

img

  • URLs: 虽然可以通过单个功能来处理来自每个 URL 的请求,但是编写单独的视图函数来处理每个资源是更加可维护的。URL 映射器用于根据请求 URL 将 HTTP 请求重定向到相应的视图。URL 映射器还可以匹配出现在 URL 中的字符串或数字的特定模式,并将其作为数据传递给视图功能。
  • View: 视图 是一个请求处理函数,它接收 HTTP 请求并返回 HTTP 响应。视图通过模型访问满足请求所需的数据,并将响应的格式委托给 模板。
  • Models: 模型 是定义应用程序数据结构的 Python 对象,并提供在数据库中管理(添加,修改,删除)和查询记录的机制。
  • Templates: 模板 是定义文件(例如 HTML 页面)的结构或布局的文本文件,用于表示实际内容的占位符。一个视图可以使用 HTML 模板,从数据填充它动态地创建一个 HTML 页面模型。可以使用模板来定义任何类型的文件的结构; 它不一定是 HTML!

urls.py将请求发送到正确的视图

URL 映射器通常存储在名为 urls.py 的文件中。在下面的示例中,mapper(urlpatterns)定义了特定 URL 模式 和相应视图函数之间的映射列表。如果接收到具有与指定模式匹配的 URL(例如 r’^$',下面)的 HTTP 请求,则将调用 相关联的视图功能(例如 views.index)并传递请求。

from django.urls import path
urlpatterns = [path(r'^$', views.index),path(r'^([0-9]+)/$', views.best),
]

在Django中,捕获 URL 中的特定部分(也称为路径参数或标记)是通过在 URL 模式中使用尖括号<>来完成的。常见的捕获标记有:

  • <int:pk>: 匹配一个整数,并将其作为pk参数传递给视图函数。
  • <slug:slug_text>: 匹配一个字母、数字、连字符或下划线组成的字符串,并将其作为slug_text参数传递给视图函数。
  • <str:my_string>: 匹配一个字符串,并将其作为my_string参数传递给视图函数。
  • <path:my_path>: 匹配一个路径(包含多个部分的字符串),并将其作为my_path参数传递给视图函数。
from django.urls import path
from . import viewsurlpatterns = [path('books/<int:pk>/', views.book_detail, name='book-detail'),path('authors/<slug:author_slug>/', views.author_detail, name='author-detail'),
]

在这个例子中,<int:pk><slug:author_slug>是捕获标记,分别匹配一个整数和一个slug格式的字符串,并将其作为pkauthor_slug参数传递给相应的视图函数。

views.py处理请求

在Django中,views.py文件包含了处理请求的视图函数。这些视图函数负责接收请求,处理数据并返回HTTP响应。

一个基本的视图函数通常会接收一个HttpRequest对象作为参数,并返回一个HttpResponse对象作为响应。例如:

from django.http import HttpResponsedef my_view(request):# 处理请求的逻辑return HttpResponse("Hello, this is the response!")

views.py中的视图函数可能包含以下逻辑:

  1. 接收请求参数:request对象(Django中,request对象是通过框架自动提供的)中获取GET或POST参数、路径参数(如果有的话)等。
  2. 处理业务逻辑: 执行与应用程序逻辑相关的操作,可能包括数据库查询、计算、验证等。
  3. 生成响应: 创建一个HttpResponse对象或其他适当的响应类型,将结果返回给用户。
  4. 返回响应: 将生成的响应返回给用户,响应可以是HTML页面、JSON数据、重定向或其他HTTP响应类型。

常用的方法

render()HttpResponse都用于构建HTTP响应,但它们有一些不同之处:

  • render(): 这是Django的一个辅助函数,它用于渲染模板并返回一个HTTP响应。render()接受request作为第一个参数,指定要渲染的模板名称作为第二个参数,还可以选择性地传递上下文参数。它会将模板和上下文数据合并,然后返回一个完整的HTTP响应对象。例如,你可以在视图中使用render()来渲染一个HTML模板:

    from django.shortcuts import renderdef my_view(request):# 一些数据处理...context = {'key': 'value'}return render(request, 'template_name.html', context)
  • HttpResponse: 这是Django的HTTP响应类。你可以使用HttpResponse手动创建HTTP响应,为其指定内容、状态码和其他HTTP头。当你想要直接返回文本、JSON数据或其他非HTML响应时,可以使用HttpResponse。例如:

    from django.http import HttpResponse
    import jsondef my_json_view(request):data = {'key': 'value'}json_data = json.dumps(data)return HttpResponse(json_data, content_type='application/json')

models.py定义数据模型

Django Web 应用程序通过被称为模型的 Python 对象来管理和查询数据。模型定义存储数据的结构,包括字段类型 以及字段可能的最大值,默认值,选择列表选项,文档帮助文本,表单的标签文本等。模型的定义与底层数据库无关 -你可以选择其中一个作为项目设置的一部分。一旦你选择了要使用的数据库,你就不需要直接与之交谈 - 只需编写模型结构和其他代码,Django 可以处理与数据库通信的所有辛苦的工作

创建 Django 中的模型涉及以下步骤:

  1. 定义模型类: 在你的应用程序的 models.py 文件中定义模型类。每个模型类都是一个继承自 django.db.models.Model 的 Python 类。

  2. 定义字段: 在模型类中定义字段,这些字段将成为数据库表中的列。Django 提供了许多不同类型的字段,例如 CharFieldIntegerFieldDateField 等,用于存储不同类型的数据。

  3. 定义元数据(可选): 你可以在模型类中定义一些元数据,例如数据库表名、排序方式等。

  4. 创建迁移: 使用 Django 的管理工具创建迁移文件。迁移文件包含了数据库模式的变更,通过执行迁移文件,可以将这些变更应用到数据库中。

  5. 应用迁移: 执行应用程序的迁移命令,将模型更改应用到数据库中。

    # 生成迁移文件
    python manage.py makemigrations
    # 应用迁移
    python manage.py migrate
    

根据models查询数据

在 Django 中,当你使用模型管理器方法进行查询时,Django 会根据你的查询转换为相应的 SQL 语句来执行数据库操作。以下是一些常见的查询方法以及对应的 SQL 查询:

  1. 获取所有对象:

    all_books = Book.objects.all() # SELECT * FROM yourapp_book;
    
  2. 根据条件过滤对象:

    filtered_books = Book.objects.filter(author='Author Name')
    # SELECT * FROM yourapp_book WHERE author = 'Author Name';
    
  3. 获取单个对象:

    book = Book.objects.get(author='Author Name')
    # SELECT * FROM yourapp_book WHERE author = 'Author Name' LIMIT 1;
    book = Book.objects.get(pk=1)
    # SELECT * FROM yourapp_book WHERE id = 1 LIMIT 1;
    
  4. 其他查询方法

    books = Book.objects.exclude(author='Author Name')
    # SELECT * FROM yourapp_book WHERE NOT (author = 'Author Name');books = Book.objects.order_by('title')
    # SELECT * FROM yourapp_book ORDER BY title ASC;
    

最后查询到的是对象实例

HTML模板呈现数据

HTML模板在Django中使用了特殊的模板语言,这些语言元素可以嵌入HTML中,实现动态的、基于数据的渲染。以下是HTML模板中常用的几个特殊语法:

  1. 模板标签:使用 {% %} 包裹起来的代码块,用于执行逻辑操作,如循环、条件判断等。

    {% if condition %}... some HTML code ...
    {% endif %}
    
  2. 变量:使用 {{ }} 包裹起来的变量名,用于在模板中显示动态数据。

    <p>Book Title: {{ book.title }}</p>
    
  3. 模板注释:使用 {# #} 包裹起来的注释,不会在最终的渲染结果中显示。

    {# This is a comment #}
    
  4. 模板过滤器:使用 | 可以对变量进行过滤或操作。

    djangoCopy code
    {{ value|filter }}
    
  5. 模板继承:使用 {% extends %}{% block %} 可以实现模板之间的继承和覆盖。

    {% extends 'base.html' %}{% block content %}... content specific to this template ...
    {% endblock %}
    
  6. 模板标签库:使用 {% load %} 加载自定义的模板标签或过滤器库。

    djangoCopy code
    {% load custom_tags %}
    

这些特殊的模板语法允许在HTML模板中嵌入逻辑、变量和控制结构,使得Django的模板可以根据数据动态生成页面内容。

数据由视图传递到模板,模板提取数据进行渲染

Django项目结构

创建虚拟环境下载django

mkdir myproject
cd myproject
# 创建虚拟环境
python3 -m venv myenv
# Linux下激活虚拟环境
source myenv/bin/activate
# 退出虚拟环境
deactivate
# 安装django
pip3 install django -i https://pypi.tuna.tsinghua.edu.cn/simple

创建站点

# 创建新项目
django-admin startproject locallibrary

此时会创建如下文件夹结构

locallibrary/manage.pylocallibrary/settings.pyurls.pywsgi.py

manage.py 是 Django 项目的命令行工具,用于执行多种任务,包括但不限于:

  1. 运行开发服务器:启动 Django 开发服务器以在本地运行项目。python3 manage.py runserver

  2. 创建应用程序:通过 python manage.py startapp app_name 创建一个新的应用程序。

  3. 执行数据库迁移:管理数据库模型变更并将其应用到数据库中。

    python3 manage.py makemigrations
    python3 manage.py migrate
    
  4. 创建超级用户:创建可以登录 Django 后台管理界面的管理员账号。python manage.py createsuperuser

  5. 收集静态文件:将静态文件(如 CSS、JavaScript 文件等)收集到一个位置,以便部署。python3 manage.py collectstatic

  6. 运行单元测试:执行项目中定义的单元测试。python manage.py test

  7. 查看 Django 命令列表:通过 python manage.py helppython manage.py 查看所有可用的 Django 命令列表。

locallibrary 项目的子文件夹是整个网站的进入点:

  • settings.py 包含所有的网站设置。这是可以注册所有创建的应用的地方,也是静态文件,数据库配置的地方,等等。
  • urls.py 定义了网站 url 到 view 的映射。虽然这里可以包含所有的 url,但是更常见的做法是把应用相关的 url 包含在相关应用中.
  • wsgi.py 帮助 Django 应用和网络服务器间的通讯。你可以把这个当作模板。

创建应用

python3 manage.py startapp catalog

在此之后的文件夹结构如下:

locallibrary/manage.pylocallibrary/catalog/admin.pyapps.pymodels.pytests.pyviews.py__init__.pymigrations/

其他一些说明:

  • admin.py 文件中,你可以注册模型以便在 Django 自带的管理界面中对这些模型进行管理和操作。这个文件用于配置管理员后台可以访问和管理的模型。
  • apps.py 文件的主要作用是提供关于应用程序的元数据信息,方便 Django 框架使用和展示。
  • tests.py 是 Django 应用程序中用于编写测试的文件。在这个文件中,你可以编写各种测试来验证你的应用程序的不同部分,确保它们按预期运行。
  • 一个migration文件夹,用来存储“migrations”——当你修改你的数据模型时,这个文件会自动升级你的数据库。
  • _init_.py — 一个空文件,Django/Python 会将这个文件作为Python 包并允许你在项目的其他部分使用它。

settings.py项目设置

  1. 注册应用

    INSTALLED_APPS = ['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','your_app.apps.Your_appConfig',
    ]
  2. 配置数据库

    默认使用SQLite

    DATABASES = {'default': {'ENGINE': 'django.db.backends.sqlite3','NAME': os.path.join(BASE_DIR, 'db.sqlite3'),}
    }
    

    使用Mysql

    DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','NAME': 'your_db_name','USER': 'your_username','PASSWORD': 'your_password','HOST': 'localhost','PORT': '',}
    }
    

    数据库之前的数据迁移

    python manage.py dumpdata > data.json # 导出SQLite数据
    python manage.py loaddata data.json # 导入数据到MySQL
    
  3. 静态文件配置

    STATIC_URL = '/static/' #  定义静态文件的URL前缀。
    STATICFILES_DIRS = [BASE_DIR / "static"] # 指定了额外的静态文件目录
    STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles') #  在collectstatic命令运行后,用于收集所有静态文件的文件夹路径。
    STATICFILES_FINDERS # 定义了查找静态文件的方式
    
  4. 模板配置

    TEMPLATES = [{'BACKEND': 'django.template.backends.django.DjangoTemplates','DIRS': ['/path/to/your/templates',  # 指定额外的模板目录],'APP_DIRS': True,  # 在应用程序的 templates 目录中查找模板# 其他设置...},
    ]
    
  5. 其他配置

    TIME_ZONE = 'Asia/Shanghai' # 时区配置
    DEBUG = True # 这个会在 debug 日志里输出错误信息,而不是输入 HTTP 的返回码。在生产环境中,它应设置为 false,因为输出的错误信息会帮助想要攻击网站的人。
    

通用类别视图

Django提供了通用类视图来简化开发常见的 Web 功能,其中之一是通用类别视图。这些类别视图可用于快速构建常见的应用程序组件,如列表、详情页等。常见的通用类别视图包括:

  1. ListView: 显示对象列表的视图,例如显示所有书籍或文章的列表。
  2. DetailView: 展示单个对象详细信息的视图,例如书籍的详细信息或文章的内容。
  3. CreateView: 用于创建新对象的视图,例如创建新书籍或新文章。
  4. UpdateView: 用于更新现有对象的视图,例如编辑现有书籍或文章的视图。
  5. DeleteView: 用于删除对象的视图,例如删除书籍或文章。

这些类别视图旨在减少代码量,通过约定俗成的命名和配置,提供了内置的处理逻辑。通过组合这些视图类和提供一些配置参数,你可以快速创建功能完善的视图。

常用参数

  1. model: 指定视图所使用的模型类。
  2. template_name: 指定用于渲染视图的模板名称。
  3. context_object_name: 指定传递给模板的上下文变量的名称。
  4. queryset: 自定义视图使用的查询集。
  5. paginate_by: 对于 ListView,指定每页显示的对象数量。
  6. get_context_data(): 可用于自定义向模板发送的上下文数据。

常用方法

  1. get_queryset(): 可用于覆盖查询集以自定义视图的数据。
  2. get_context_data(): 用于添加额外的上下文数据到模板渲染中。
  3. get_object(): 用于获取单个对象实例。
  4. form_valid(): 用于在表单提交成功后执行自定义逻辑。
  5. get_success_url(): 用于在视图成功后重定向到的 URL。
from django.views.generic import ListView, DetailView
from .models import YourModelclass YourModelListView(ListView):model = YourModeltemplate_name = 'your_template.html'class YourModelDetailView(DetailView):model = YourModeltemplate_name = 'your_template.html'

会话框架

会话是 Django(以及大多数 Internet)用于跟踪站点和特定浏览器之间“状态”的机制。

启动会话

INSTALLED_APPS = [...'django.contrib.sessions',....MIDDLEWARE = [...'django.contrib.sessions.middleware.SessionMiddleware',....

使用会话

# Get a session value by its key (e.g. 'my_car'), raising a KeyError if the key is not present
my_car = request.session['my_car']# Get a session value, setting a default if it is not present ('mini')
my_car = request.session.get('my_car', 'mini')# Set a session value
request.session['my_car'] = 'mini'# Delete a session value
del request.session['my_car']# 假设你修改了会话数据中的一些内容
request.session['my_car']['wheels'] = 'new_wheels'# 将会话标记为已修改
request.session.modified = True

如果你对会话数据做了更改,并希望这些更改被保存,你可以使用 modified 标志来手动告知 Django 会话已被修改。

身份验证视图

可以使用 Django 内置的身份验证视图类来实现这些功能。下面是示例代码:

from django.urls import path
from django.contrib.auth.views import (LoginView, LogoutView, PasswordChangeView, PasswordChangeDoneView,PasswordResetView, PasswordResetDoneView, PasswordResetConfirmView,PasswordResetCompleteView
)urlpatterns = [path('accounts/login/', LoginView.as_view(), name='login'),path('accounts/logout/', LogoutView.as_view(), name='logout'),path('accounts/password_change/', PasswordChangeView.as_view(), name='password_change'),path('accounts/password_change/done/', PasswordChangeDoneView.as_view(), name='password_change_done'),path('accounts/password_reset/', PasswordResetView.as_view(), name='password_reset'),path('accounts/password_reset/done/', PasswordResetDoneView.as_view(), name='password_reset_done'),path('accounts/reset/<uidb64>/<token>/', PasswordResetConfirmView.as_view(), name='password_reset_confirm'),path('accounts/reset/done/', PasswordResetCompleteView.as_view(), name='password_reset_complete'),# 其他 URL 配置...
]

这些路径配置了与 Django 内置的身份验证视图相关的 URL,并将每个视图与其对应的名称关联起来。使用这些视图类,你可以快速地设置登录、注销、密码更改和密码重置等功能。

这些身份验证视图使用 Django 的模板引擎渲染模板。默认情况下,它们使用以下模板:

  • registration/login.html 用于登录页面
  • registration/logged_out.html 用于注销确认页面
  • registration/password_change_form.html 用于密码更改表单页面
  • registration/password_change_done.html 用于密码更改完成页面
  • registration/password_reset_form.html 用于密码重置表单页面
  • registration/password_reset_done.html 用于密码重置确认页面
  • registration/password_reset_confirm.html 用于密码重置确认页面
  • registration/password_reset_complete.html 用于密码重置完成页面

你可以自定义这些模板,或者通过指定额外的参数template_name来使用不同的模板文件:

# 例如,更改登录视图的模板:
path('accounts/login/', LoginView.as_view(template_name='myapp/custom_login.html'), name='login'),

这将告诉 Django 使用myapp/custom_login.html作为登录页面的模板。同样的方法可以应用于其他身份验证视图,以便你可以为每个视图选择不同的模板。

使用表单

ne.html` 用于密码更改完成页面

  • registration/password_reset_form.html 用于密码重置表单页面
  • registration/password_reset_done.html 用于密码重置确认页面
  • registration/password_reset_confirm.html 用于密码重置确认页面
  • registration/password_reset_complete.html 用于密码重置完成页面

你可以自定义这些模板,或者通过指定额外的参数template_name来使用不同的模板文件:

# 例如,更改登录视图的模板:
path('accounts/login/', LoginView.as_view(template_name='myapp/custom_login.html'), name='login'),

这将告诉 Django 使用myapp/custom_login.html作为登录页面的模板。同样的方法可以应用于其他身份验证视图,以便你可以为每个视图选择不同的模板。

使用表单

测试

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL数据库的安装与环境配置

下载 下载MySQL8 安装 解压 配置MySQL环境变量 系统环境变量path D:\ProgramFiles\mysql-8.0.20-winx64\bin 1.点击属性 2.点击高级系统设置 3.点击环境变量 4.在系统变量中找到path 注意这里不是用户变量 5.新建后输入解压的地址 MySQL初始化和启动 以管理员身份运行cmd…

TOGAF架构开发方法

TOGAF针对架构开发方法定义了一系列阶段和步骤&#xff0c;这些阶段和步骤对架构的迭代过程进行了详细、标准的描述。 企业架构的项目过程 一、预备阶段&#xff08;Preliminary&#xff09; 1、目标 预备阶段的目标是&#xff1a; 对组织的背景和环境进行审查&#xff08;调…

css实现一个斑马条纹动画,实现一个理发店门口的小转转,进度条动画同理!

css实现一个斑马条纹动画&#xff0c;实现一个理发店门口的小转转 前置基础知识 css背景background的重复渐变属性repeating-linear-gradient() 该属性类似于linear-gradient(),但他会在整个方向上重复渐变以覆盖整个容器 一、先写一个普通渐变例子linear-gradient() &…

数据库的学习笔记——第一篇

SQL通用语法 SQL语句 DDL 数据定义 数据库、表字段 DML 数据操作 增删改 DQL 数据查询 查询表中记录 DCL 数据控制 创建用户、控制用户权限 DLL语句——数据库操作 SHOW DATABASES; # 查询数据库SELECT DATABASE(); # 查询当前数据库CREATE DATABASE [IF …

Cuk、Zeta和Sepic开关电源拓扑结构

Cuk、Zeta和Sepic变换器,三种拓扑结构大致类似。不同点在于电感和二极管&#xff0c;MOS管的位置关系的变化。 Cuk电源是一种非隔离的直流电源转换器&#xff0c;其基本结构包括输入滤波电容、开关管、输入电感、输出电感和输出电容等元件。Cuk电路可以看作是Boost和Buck电路的…

万物简单AIoT物联网平台快速开始

学物联网&#xff0c;来万物简单IoT物联网&#xff01;&#xff01; 万物简单AIoT物联网提供一站式的AI物联网的学习平台&#xff0c;以及物联网SaaS私有化部署的解决方案。从终端硬件系统、云平台到APP前端的物联网能力&#xff0c;助力企业和开发者的设备具备1分钟快速上云的…

用 Node.js 写一个爬虫

自己设计一个网站&#xff0c;然后去爬取别人家页面的数据来做一个自己的网站。哈哈哈&#xff0c;如果自己写着玩可能没啥事&#xff0c;但如果用这个网站来获利&#xff0c;你可能就要被寄律师函了&#xff0c;毕竟这有点‘刑’。这篇文章呢&#xff0c;就带大家爬取豆瓣TOP2…

Android APK未签名提醒

最近新建了一个项目&#xff0c;在build.gradle中配置好了签名&#xff0c;在执行打包的时候打出的包显示已签名&#xff0c;但是在上传市场的时候提示未签名。于是排查了好久&#xff0c;发现在build.gradle中配置的minsdk 24&#xff0c;会导致不使用V1签名&#xff0c;于是我…

用 Unity 实现的安检模拟小游戏源码,通过安检设备 (扫描仪) 检查乘客的随身物品 根据禁止名单对乘客做出判断是否允许通行

介绍 用 Unity 实现的安检模拟小游戏 软件版本 Unity 2019.4.9f1 (64-bit) Visual Studio 2019 游戏玩法 在游戏中你将扮演一名安全检查员 通过安检设备 (扫描仪) 检查每位乘客的随身物品 根据禁止名单对乘客做出判断&#xff1a;允许通行或者下令逮捕 游戏效果 游戏截图…

十三:爬虫-Scrapy框架(下)

一&#xff1a;各文件的使用回顾 1.items的使用 items 文件主要用于定义储存爬取到的数据的数据结构&#xff0c;方便在爬虫和 Item Pipeline 之间传递数据。 items.pyimport scrapyclass TencentItem(scrapy.Item):# define the fields for your item here like:title scr…

video数据的维度及维度变形

B*C*D*H*W的值并不是指输入模型的样本的总大小&#xff0c;它仅仅代表着输入模型的video数据的属性&#xff08;形状&#xff09;。 reshape 在reshape时&#xff0c;出现的报错“cant reshape of size input”之类的&#xff0c;是指&#xff1a;那些数据没法组成规定的形状…

vivado CDC约束-“设置总线倾斜”对话框

“设置总线倾斜”对话框 在AMD Vivado™ IDE中&#xff0c;可以通过多种方式设置总线偏斜约束&#xff1a; •通过时间约束编辑器。选择窗口 → 时间限制 → 断言 → 设置总线倾斜。从“时序约束编辑器”中&#xff0c;可以添加、删除或修改总线扭曲约束。 注意&#…

【Transformer】深入理解Transformer模型1——初步认识了解

前言 Transformer模型出自论文&#xff1a;《Attention is All You Need》 2017年 近年来&#xff0c;在自然语言处理领域和图像处理领域&#xff0c;Transformer模型都受到了极为广泛的关注&#xff0c;很多模型中都用到了Transformer或者是Transformer模型的变体&#xff0…

【分布式配置中心】聊聊Apollo的安装与具体配置变更的原理

【管理设计篇】聊聊分布式配置中心 之前就写过一篇文章&#xff0c;介绍配置中心&#xff0c;但是也只是简单描述了下配置中心的设计点。本篇从apollo的安装到部署架构到核心原理进一步解读&#xff0c;大概看了下apollo的原理&#xff0c;感觉没有必要深究&#xff0c;所以就…

SSM房屋租赁系统----计算机毕业设计

项目介绍 房屋租赁系统&#xff0c;基于 Spring5.x 的实战项目&#xff0c;此项目非Maven项目。 前台系统主要功能包括房源列表展示、房源详细信息展示、根据房源特征进行搜索&#xff0c;包括&#xff1a;房型、小区名;以及房源的预订功能。 后台管理&#xff1a; 用户信息管…

秒杀系统的设计思路(应对高并发,超卖等问题的解决思路)

首先我们先看一下设计秒杀系统时&#xff0c;我们应该考虑的问题。 解决方案&#xff1a; 一.页面静态化结合CDN内容分发 前端把能提前放入cdn服务器的东西都放进去&#xff0c;反正把所有能提升效率的步骤都做一下&#xff0c;减少真正秒杀时候服务器的压力。 秒杀活动的页面…

Halcon利用颜色信息提取背景相似的字符区域

Halcon利用颜色信息提取背景相似的字符区域 文章目录 Halcon利用颜色信息提取背景相似的字符区域 本文以一个例子说明利用颜色信息进行目标提取。如图所示&#xff0c;图&#xff08;a&#xff09;为输入的原始图像,目标为提取出字符区域。由图&#xff08;a&#xff09;可见&a…

【前端框架】 了不起的 TypeScript 入门教程

前言 想学习 TypeScript 的小伙伴看过来&#xff0c;本文将带你一步步学习 TypeScript 入门相关的十四个知识点&#xff0c;详细的内容大纲请看下图&#xff1a; TypeScript 是什么 TypeScript 是一种由微软开发的自由和开源的编程语言。它是 JavaScript 的一个超集&#xff…

【网络安全常用术语解读】SCAP详解

本文主要介绍什么是SCAP&#xff0c;SCAP的产生背景是怎样的&#xff0c;SCAP有什么用途&#xff0c;有哪些组件&#xff0c;各个组件的用途是什么&#xff1f; SCAP产生背景 由于计算机和网络技术的快速发展&#xff0c;越来越多的软件和系统被应用到企业和机构中&#xff0c…

2023十大编程语言及未来展望

2023十大编程语言及未来展望 1. 2023年十大编程语言排行榜2. 十大编程语言未来展望PythonCCJavaC#JavaScriptPHPVisual BasicSQLAssembly language 1. 2023年十大编程语言排行榜 TIOBE排行榜是根据互联网上有经验的程序员、课程和第三方厂商的数量&#xff0c;并使用搜索引擎&a…