Django 入门实战:从环境搭建到构建你的第一个 Web 应用
Django 入门实战:从环境搭建到构建你的第一个 Web 应用
恭喜你选择 Django 作为你学习 Python Web 开发的起点!Django 是一个强大、成熟且功能齐全的框架,非常适合构建中大型的 Web 应用程序。本篇将通过一个简单的例子,带你走完 Django 开发的核心流程。
我们将构建一个非常简单的应用:一个显示项目列表的页面,这些项目数据存储在数据库中,并且可以通过 Django 自带的管理后台进行管理。
我们将要完成的步骤:
- 搭建开发环境 (Python, pip, 虚拟环境, Django)。
- 创建一个 Django 项目。
- 创建一个 Django 应用。
- 定义一个简单的视图 (View)。
- 配置 URL 路由 (URL Dispatcher)。
- 使用模板 (Template) 渲染 HTML。
- 定义模型 (Model),与数据库交互。
- 使用 Django 自带的管理后台管理数据。
- 在页面上显示数据库中的数据。
开始吧!
Part 1: 环境搭建
首先,确保你的电脑已经安装了 Python 和 pip
。建议使用 Python 3.7 或更高版本。
-
创建和激活虚拟环境:
使用虚拟环境是 Python 开发的最佳实践,它可以隔离不同项目之间的依赖,避免冲突。
打开命令提示符 (Command Prompt) 或 PowerShell。
-
创建一个新的虚拟环境(例如命名为
Bashmyproject_venv
):python -m venv myproject_venv
这会在当前目录下创建一个名为
myproject_venv
的文件夹。 -
激活虚拟环境:
- Windows 命令提示符 (Command Prompt): Bash
myproject_venv\Scripts\activate.bat
- Windows PowerShell: PowerShell
如果遇到执行策略问题,可以尝试运行myproject_venv\Scripts\Activate.ps1
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
并同意。
激活成功后,你的命令行提示符前面会显示虚拟环境的名称,例如
(myproject_venv) C:\YourProject>
。 - Windows 命令提示符 (Command Prompt): Bash
-
-
在虚拟环境中安装 Django:
确保虚拟环境已激活,然后使用 pip 安装 Django。
Bashpip install django
等待安装完成。
-
验证 Django 安装:
可以运行以下命令检查 Django 是否成功安装以及版本号。
Bashdjango-admin --version
如果显示版本号,说明安装成功。
Part 2: 创建一个 Django 项目
Django 项目是整个 Web 应用的容器,包含配置和设置。
-
在项目目录下创建 Django 项目:
在你的项目目录(例如,你刚刚创建虚拟环境的那个目录)下,运行以下命令:
Bashdjango-admin startproject myproject .
django-admin
是 Django 的命令行工具。startproject
是一个命令,用于创建一个新项目。myproject
是你给项目取的名称。- 后面的
.
表示在当前目录创建项目文件和目录,而不是在当前目录下再创建一个myproject
子目录。
成功运行后,你的项目目录下会生成以下文件和目录结构:
. ├── manage.py └── myproject├── __init__.py├── asgi.py├── settings.py├── urls.py└── wsgi.py
manage.py
: 一个命令行工具,用于与项目进行各种交互,如运行服务器、执行数据库迁移等。myproject/
: 项目的配置目录。settings.py
: 项目的主要配置文件。urls.py
: 项目的 URL 路由配置文件。wsgi.py
,asgi.py
: 用于部署的服务器入口文件。
-
运行开发服务器:
进入包含 manage.py 文件的项目根目录,运行以下命令:
Bashpython manage.py runserver
服务器会启动,默认运行在
http://127.0.0.1:8000/
。打开你的浏览器,访问
http://127.0.0.1:8000/
。如果看到一个带有火箭图标的“The install worked successfully! Congratulations!”页面,说明你的 Django 项目已经成功创建并运行起来了!在命令行窗口中,按下
Ctrl + C
可以停止开发服务器。
Part 3: 创建一个应用 (App)
Django 鼓励将项目功能拆分成独立、可复用的“应用”(App)。每个 App 通常负责一个特定的功能模块。
-
在项目根目录下创建应用:
确保你仍在包含 manage.py 的项目根目录下,运行以下命令:
Bashpython manage.py startapp myapp
startapp
是用于创建一个新应用的命令。myapp
是你给应用取的名称。
成功运行后,你的项目目录下会新增一个
myapp
目录:. ├── manage.py ├── myenv # 你的虚拟环境目录 ├── myproject # 项目配置目录 └── myapp # 新增的应用目录├── migrations # 数据库迁移文件目录├── __init__.py├── admin.py # 应用的管理后台配置├── apps.py # 应用的配置├── models.py # 应用的模型定义├── tests.py # 应用的测试└── views.py # 应用的视图定义
-
将应用添加到项目设置:
新创建的应用需要添加到项目的配置文件 settings.py 中,让 Django 知道这个应用的存在。
- 打开
myproject/settings.py
文件。 - 找到
INSTALLED_APPS
列表。 - 在列表中添加你的应用名称
'myapp'
。
# myproject/settings.pyINSTALLED_APPS = ['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','myapp', # <--- 在这里添加你的应用名称 ]# ... 文件其他内容
- 打开
Part 4: 定义第一个视图 (View)
视图负责接收 Web 请求并返回响应。我们先创建一个简单的视图,只返回一段文本。
-
打开应用的
views.py
文件:myapp/views.py
。 -
编写一个简单的函数式视图 (FBV):
Python# myapp/views.pyfrom django.http import HttpResponse # 需要导入 HttpResponse 类def index(request):# 这个函数接收一个 HttpRequest 对象作为参数 (命名为 request 是约定)# 它返回一个 HttpResponse 对象,其中包含了要发送给浏览器的文本内容return HttpResponse("Hello, Django!")
Part 5: 配置 URL 路由 (URL Routing)
我们需要告诉 Django,当用户访问某个特定的 URL 时,应该由哪个视图来处理。这通过配置 URL 路由实现。通常,一个应用有自己的 urls.py
文件,然后项目的根 urls.py
包含应用的 URL。
-
在应用目录中创建 urls.py 文件:
在 myapp 目录下创建一个新的 Python 文件 urls.py。
-
编辑应用的 urls.py:
定义一个 urlpatterns 列表,其中包含 URL 模式与视图函数的对应关系。
Python# myapp/urls.pyfrom django.urls import path # 需要导入 path 函数 from . import views # 从当前应用目录导入 views.py# urlpatterns 是一个列表,定义了 URL 模式 urlpatterns = [# path(route, view, name=None)# route: 匹配的 URL 路径 (这里是空字符串 '', 表示匹配应用 URL 的根路径)# view: 处理该请求的视图函数 (views.index)# name: 给这个 URL 起一个名字,方便在模板或代码中引用 (可选但推荐)path('', views.index, name='index'),# 你可以在这里添加更多 path() 来定义其他 URL# path('about/', views.about, name='about'), ]
-
编辑项目的根 urls.py:
打开 myproject/urls.py 文件,包含 myapp 应用的 URL 配置。
Python# myproject/urls.pyfrom django.contrib import admin from django.urls import path, include # 需要导入 include 函数urlpatterns = [# 这是 Django 内置管理后台的 URLpath('admin/', admin.site.urls),# 使用 include() 将 myapp 应用的 URL 配置包含进来# 当用户访问以 'myapp/' 开头的 URL 时,Django 会将剩余的 URL 部分传递给 myapp.urls 去处理path('myapp/', include('myapp.urls')),# 你也可以直接在项目根 urls.py 中定义简单的 URL 模式# path('', views.home, name='home'), # 如果你的 home 视图在项目根目录的 views.py 中 ]
-
测试第一个视图和 URL:
确保你在项目根目录(manage.py 所在目录),运行开发服务器:
Bashpython manage.py runserver
打开浏览器,访问
http://127.0.0.1:8000/myapp/
。你应该能看到页面上显示“Hello, Django!”。这表明你成功地将一个 URL 映射到了一个视图,并返回了响应。
Part 6: 使用模板 (Template)
直接在视图中返回 HTML 字符串不适合复杂的页面。Django 使用模板来分离视图逻辑和页面展示。
-
创建模板目录和模板文件:
按照 Django 的约定,模板文件通常放在应用的 templates 目录下的一个与应用同名的子目录中。
- 在
myapp
目录下创建templates
目录:myapp/templates/
。 - 在
templates
目录下创建myapp
子目录:myapp/templates/myapp/
。 - 在
myapp/templates/myapp/
目录下创建一个新的 HTML 文件,例如index.html
。
- 在
-
编辑模板文件 (myapp/templates/myapp/index.html):
编写一些 HTML 代码,并使用 Django 模板语言 (DTL) 显示一个变量。
HTML<!DOCTYPE html> <html> <head><title>我的第一个 Django 模板</title> </head> <body>{# 这是一个模板注释 #}<h1>{{ greeting }}</h1> {# 使用 {{ 变量名 }} 显示从视图传递的变量 #}<p>这是一个使用模板渲染的页面。</p> </body> </html>
-
修改视图以使用模板:
修改 myapp/views.py 中的 index 视图,使用 render() 快捷函数来加载和渲染模板。render() 函数会自动查找 templates 目录。
Python# myapp/views.py# from django.http import HttpResponse # 不再直接返回 HttpResponse from django.shortcuts import render # 需要导入 render 函数def index(request):# 准备传递给模板的数据 (上下文)context = {'greeting': 'Hello from Template Context!', # 定义一个变量 'greeting''other_variable': '...' # 可以传递更多变量}# 使用 render 函数加载并渲染模板# render(request, template_name, context=None)# request: HttpRequest 对象# template_name: 模板文件相对于某个 templates 目录的路径 (如 'myapp/index.html')# context: 传递给模板的数据字典return render(request, 'myapp/index.html', context)
-
测试使用模板的视图:
确保服务器正在运行,再次访问 http://127.0.0.1:8000/myapp/。你应该能看到一个标准的 HTML 页面,其中 H1 标题显示着“Hello from Template Context!”。这表明你成功地将数据从视图传递到了模板并进行了渲染。
Part 7: 使用模型 (Model) 与数据库
Django 的 ORM 让你用 Python 类定义数据结构,然后自动映射到数据库。
-
数据库设置:
Django 默认使用 SQLite 数据库,配置在 settings.py 的 DATABASES 字典中。对于入门而言,默认设置即可,无需安装额外数据库软件。
-
定义第一个模型:
打开应用的 models.py 文件 (myapp/models.py),定义一个简单的 Item 模型。
Python# myapp/models.pyfrom django.db import models # 需要导入 models 模块class Item(models.Model): # 继承自 models.Model# 定义模型字段,对应数据库表的列name = models.CharField(max_length=100) # 字符串字段,最大长度 100created_at = models.DateTimeField(auto_now_add=True) # 日期时间字段,创建时自动设置当前时间# __str__ 方法定义了模型对象在被打印或在管理后台显示时的字符串表示def __str__(self):return self.name# 你可以在这里定义其他字段,如 models.IntegerField(), models.TextField(), models.BooleanField(), models.ForeignKey() 等
-
创建数据库迁移 (Migrations):
模型定义完成后,需要告诉 Django 根据模型的变化创建数据库迁移文件。
- 确保你在项目根目录(
manage.py
所在目录),并且虚拟环境已激活。 - 运行命令: Bash
python manage.py makemigrations myapp # 指定应用名称
- Django 会检测到你在
myapp/models.py
中定义了Item
模型,并在myapp/migrations/
目录下生成一个 Python 文件(例如0001_initial.py
),记录了创建Item
表的步骤。
- 确保你在项目根目录(
-
应用数据库迁移:
生成迁移文件后,需要将其应用到数据库,创建实际的数据库表。
- 确保你在项目根目录,虚拟环境已激活。
- 运行命令: Bash
python manage.py migrate
- Django 会执行所有未应用的迁移,包括你的应用和 Django 内置应用(如用户认证、管理后台)的迁移,创建所需的数据库表。如果使用 SQLite,你会在项目根目录看到一个
db.sqlite3
文件被创建或更新。
Part 8: 使用 Django 自带的管理后台管理数据
Django 的杀手级功能之一是自动化的管理后台,可以让你方便地查看和管理数据库中的数据。
-
创建超级用户 (Superuser):
你需要创建一个超级用户账号来登录管理后台。
- 确保你在项目根目录,虚拟环境已激活。
- 运行命令: Bash
python manage.py createsuperuser
- 按照提示输入用户名、邮箱(可选)和密码。密码输入时不会显示字符,输完按回车即可。
-
注册模型到管理后台:
默认情况下,你的自定义模型不会显示在管理后台。你需要显式地注册它们。
- 打开应用的
admin.py
文件 (myapp/admin.py
)。 - 导入你的模型,并使用
admin.site.register()
函数注册。
# myapp/admin.pyfrom django.contrib import admin from .models import Item # 导入你的 Item 模型# 在管理后台注册 Item 模型 admin.site.register(Item)# 你也可以在这里注册其他模型 # from .models import AnotherModel # admin.site.register(AnotherModel)
- 打开应用的
-
访问管理后台并添加数据:
- 确保开发服务器正在运行 (
python manage.py runserver
)。 - 打开浏览器,访问
http://127.0.0.1:8000/admin/
。 - 使用你刚刚创建的超级用户账号登录。
- 登录成功后,你应该能在侧边栏看到你的应用名称(myapp)以及下面的
Items
。 - 点击
Items
,然后点击右上角的“添加 Item”按钮。 - 输入一些 Item 数据(只需要输入 Name 字段,created_at 会自动生成),点击“保存”。添加几个 Item。
- 确保开发服务器正在运行 (
Part 9: 在页面上显示数据库中的数据
现在,我们回到前面创建的页面,修改视图和模板,从数据库中获取 Item 数据并显示出来。
-
修改视图,从数据库获取数据:
打开 myapp/views.py 文件,修改 index 视图,使用 ORM 查询 Item 模型的数据。
Python# myapp/views.pyfrom django.shortcuts import render from .models import Item # 需要导入你的 Item 模型类def index(request):# 使用 ORM 从数据库获取所有的 Item 对象# Item.objects 是一个管理器,提供数据库查询接口# .all() 方法获取所有的 Item 对象,返回一个 QuerySet (类似列表)items_list = Item.objects.all()# 准备传递给模板的数据context = {'greeting': '我的项目列表','items': items_list # 将获取到的 Item 列表传递给模板,变量名为 'items'}# 渲染模板return render(request, 'myapp/index.html', context)
-
修改模板,显示获取到的数据:
打开 myapp/templates/myapp/index.html 文件,使用 Django 模板语言循环遍历 items 列表并显示每个 Item 的信息。
HTML<!DOCTYPE html> <html> <head><title>我的项目列表</title> </head> <body><h1>{{ greeting }}</h1><h2>项目列表:</h2>{% if items %} {# 检查 items 列表是否存在且非空 #}<ul>{% for item in items %} {# 模板标签:循环遍历 items 列表,每次循环将当前元素赋给 item #}<li>{# 显示当前 item 对象的属性 #}{{ item.name }} (创建时间: {{ item.created_at }})</li>{% endfor %}</ul>{% else %}{# 如果 items 列表为空,显示此段落 #}<p>目前还没有项目数据。</p>{% endif %}</body> </html>
-
最终测试:
确保开发服务器正在运行,访问 http://127.0.0.1:8000/myapp/。现在,你应该能看到页面上显示着“我的项目列表”,并且下方列出了你在管理后台添加的所有 Item 数据!
Part 9: 总结回顾
恭喜你!你已经完成了你的第一个 Django Web 应用的入门开发。在这个过程中,你接触并使用了 Django 的核心组件和开发流程:
- 虚拟环境和 pip: 搭建和管理项目环境。
django-admin
和manage.py
: 创建项目和应用,运行服务器,执行管理任务。- 项目和应用结构: 理解 Django 的模块化组织方式。
- 视图 (View): 编写处理请求的 Python 函数。
- URL 路由 (URLconf): 配置 URL 与视图的映射。
- 模板 (Template): 使用 Django 模板语言渲染 HTML 页面。
- 模型 (Model) 和 ORM: 使用 Python 类定义数据结构,并通过 ORM 与数据库交互。
- 数据库迁移 (Migrations): 管理数据库 schema 变化。
- 管理后台 (Admin Site): 利用自动生成的界面管理数据。
这只是 Django 的冰山一角,但它涵盖了构建任何 Django 应用都必需的核心概念和步骤。接下来,你可以深入学习 Django 的更多功能,例如:
- 基于类的视图 (CBV): 更强大的视图组织方式。
- 表单 (Forms): 处理用户输入和验证。
- 用户认证和授权: 构建用户系统。
- 静态文件和媒体文件: 处理 CSS、JS、图片等资源。
- 测试: 编写自动化测试用例。
- 部署: 将应用部署到生产环境。
希望这个入门实战指南能帮助你顺利迈进 Django 的大门!继续探索和实践吧!
相关文章:
Django 入门实战:从环境搭建到构建你的第一个 Web 应用
Django 入门实战:从环境搭建到构建你的第一个 Web 应用 恭喜你选择 Django 作为你学习 Python Web 开发的起点!Django 是一个强大、成熟且功能齐全的框架,非常适合构建中大型的 Web 应用程序。本篇将通过一个简单的例子,带你走完…...
【后端】构建简洁的音频转写系统:基于火山引擎ASR实现
在当今数字化时代,语音识别技术已经成为许多应用不可或缺的一部分。无论是会议记录、语音助手还是内容字幕,将语音转化为文本的能力对提升用户体验和工作效率至关重要。本文将介绍如何构建一个简洁的音频转写系统,专注于文件上传、云存储以及…...
http通信之axios vs fecth该如何选择?
在HTTP通信中,axios和fetch都是常用的库或原生API用于发起网络请求。两者各有特点,适用于不同的场景。下面详细介绍它们的差异和各自的优势: fetch 特点: 原生支持:fetch是现代浏览器内置的API,不需要额外…...
iostat指令介绍
文章目录 1. 功能介绍2. 语法介绍3. 应用场景4. 示例分析 1. 功能介绍 iostat (input/output statistics),是 Linux/Unix 系统中用于监控 CPU 使用率和 磁盘 I/O 性能的核心工具,可实时展示设备负载、吞吐量、队列状态等关键指标。 可以使用 man iostat查…...
NLP高频面试题(五十)——大模型(LLMs)分词(Tokenizer)详解
在自然语言处理(NLP)任务中,将文本转换为模型可处理的数字序列是必不可少的一步。这一步通常称为分词(tokenization),即把原始文本拆分成一个个词元(token)。对于**大型语言模型(LLM,Large Language Model,大型语言模型)**而言,选择合适的分词方案至关重要:分词的…...
桌面我的电脑图标不见了怎么恢复 恢复方法指南
在Windows操作系统中,“我的电脑”或在较新版本中称为“此电脑”的图标,是访问硬盘驱动器、外部存储设备和系统文件的重要入口。然而,有些用户可能会发现桌面上缺少了这个图标,这可能是由于误操作、系统设置更改或是不小心删除造成…...
【Qt】控件的理解 和 基础控件 QWidget 属性详解(通俗易懂+附源码+思维导图框架)
每日激励:“不设限和自我肯定的心态:I can do all things。 — Stephen Curry” 绪论: 通过上一章对信号槽的理解相信你对Qt的认识肯定有了很大的进步,下面将通过本篇文章带你深入的认识Widget控件(主窗口࿰…...
oracle将表字段逗号分隔的值进行拆分,并替换值
需求背景:需要源数据变动,需要对历史表已存的字段值根据源数据进行更新。如果是单字段存值,直接根据映射表关联修改即可。但字段里面若存的值是以逗号分割,比如旧值:‘old1,old2,old3’,要根据映射关系调整…...
用c语言实现——一个带头节点的链队列,支持用户输入交互界面、初始化、入队、出队、查找、判空判满、显示队列、遍历计算长度等功能
一、知识介绍 带头节点的链队列是一种基于链表实现的队列结构,它在链表的头部添加了一个特殊的节点,称为头节点。头节点不存储实际的数据元素,主要作用是作为链表的起点,简化队列的操作和边界条件处理。 1.节点结构 链队列的每…...
webpack基础使用了解(入口、出口、插件、加载器、优化、别名、打包模式、环境变量、代码分割等)
目录 1、webpack简介2、简单示例3、入口(entry)和输出(output)4、自动生成html文件5、打包css代码6、优化(单独提取css代码)7、优化(压缩过程)8、打包less代码9、打包图片10、搭建开发环境(webpack-dev-server…...
【项目】基于MCP+Tabelstore架构实现知识库答疑系统
基于MCPTabelstore架构实现知识库答疑系统 整体流程设计(一)Agent 架构(二)知识库存储(1)向量数据库Tablestore(2)MCP Server (三)知识库构建(1&a…...
C语言高频面试题——malloc 和 calloc区别
在 C 语言中,malloc 和 calloc 都是用于动态内存分配的函数,但它们在 内存初始化、参数形式 和 使用场景 上有显著区别。以下是详细的对比分析: 1. 函数原型 malloc void* malloc(size_t size);功能:分配 未初始化 的连续内存块…...
深入探讨JavaScript性能瓶颈与优化实战指南
JavaScript作为现代Web开发的核心语言,其性能直接影响用户体验与业务指标。随着2025年前端应用的复杂性持续增加,性能优化已成为开发者必须掌握的核心技能。本文将从性能瓶颈分析、优化策略、工具使用三个维度,结合实战案例,系统梳理JavaScript性能优化的关键路径。 一、Ja…...
[创业之路-376]:企业法务 - 创业,不同的企业形态,个人承担的风险、收益、税费、成本不同
在企业法务领域,创业时选择不同的企业形态,个人在风险承担、收益分配、税费负担及运营成本方面存在显著差异。以下从个人独资企业、合伙企业、有限责任公司、股份有限公司四种常见形态展开分析: 一、个人承担的风险 个人独资企业 风险类型&…...
【Lua】Lua 入门知识点总结
Lua 入门学习笔记 本教程旨在帮助有编程基础的学习者快速入门Lua编程语言。包括Lua中变量的声明与使用,包括全局变量和局部变量的区别,以及nil类型的概念、数值型、字符串和函数的基本操作,包括16进制表示、科学计数法、字符串连接、函数声明…...
低空经济 WebGIS 无人机配送 | 图扑数字孪生
2024 年,”低空经济” 首次写入政府工作报告,在政策驱动下各地纷纷把握政策机遇,从基建网络、场景创新、产业生态、政策激励等方面,构建 “规划-建设-应用-赋能” 的系统性布局,作为新质生产力的重要体现,推…...
【程序员 NLP 入门】词嵌入 - 如何基于计数的方法表示文本? (★小白必会版★)
🌟 嗨,你好,我是 青松 ! 🌈 希望用我的经验,让“程序猿”的AI学习之路走的更容易些,若我的经验能为你前行的道路增添一丝轻松,我将倍感荣幸!共勉~ 【程序员 NLP 入门】词…...
基于机器学习的多光谱遥感图像分类方法研究与定量评估
多光谱遥感技术通过获取可见光至红外波段的光谱信息,为地质勘探、农业监测、环境调查等领域提供了重要支持。与普通数码相机相比,多光谱成像能记录更丰富的波段数据(如近红外、短波红外等),从而更精准地识别地物特征。…...
BEVDepth: Acquisition of Reliable Depth for Multi-View 3D Object Detection
背景 基于多视角图片的3D感知被LSS证明是可行的,它使用估计的深度将图像特征转化为3D视椎,再将其压缩到BEV平面上。对于这个得到的BEV特征图,它支持端到端训练以及各种下游任务。但是对于深度估计这一块学习的深度质量如何,到目前为止没有相关工作研究。 贡献 本文的贡献…...
【Linux】静态库 动态库
🌻个人主页:路飞雪吖~ 🌠专栏:Linux 目录 一、👑静态库和动态库 静态库: 动态库: 🌠手动制作静态库 && 手动调用一下我们自己写的静态库 1> 安装到系统里面 ✨生成静…...
Java转Go日记(六):TCP黏包
服务端代码如下: // socket_stick/server/main.gofunc process(conn net.Conn) {defer conn.Close()reader : bufio.NewReader(conn)var buf [1024]bytefor {n, err : reader.Read(buf[:])if err io.EOF {break}if err ! nil {fmt.Println("read from client…...
(51单片机)LCD显示温度(DS18B20教程)(LCD1602教程)(延时函数教程)(单总线教程)
演示视频: LCD显示温度 源代码 如上图将9个文放在Keli5 中即可,然后烧录在单片机中就行了 烧录软件用的是STC-ISP,不知道怎么安装的可以去看江科大的视频: 【51单片机入门教程-2020版 程序全程纯手打 从零开始入门】https://www.…...
【通过Docker快速部署Tomcat9.0】
文章目录 前言一、部署docker二、部署Tomcat2.1 创建存储卷2.2 运行tomcat容器2.3 查看tomcat容器2.4 查看端口是否监听2.5 防火墙开放端口 三、访问Tomcat 前言 Tomcat介绍 Tomcat 是由 Apache 软件基金会(Apache Software Foundation)开发的一个开源 …...
云原生--基础篇-3--云原生概述(云、原生、云计算、核心组成、核心特点)
1、什么是云和原生 (1)、什么是云? “云”指的是云计算环境,代表应用运行的基础设施和资源。依赖并充分利用云计算的弹性、分布式和资源池化能力。 核心含义: 1、云计算基础设施 云原生应用的设计和运行完全基于云…...
Spark-Streaming
Spark-Streaming概述 DStream实操 案例一:WordCount案例 需求:使用 netcat 工具向 9999 端口不断的发送数据,通过 SparkStreaming 读取端口数据并统计不同单词出现的次数 实验步骤: 添加依赖 <dependency> <gro…...
乐视系列玩机------乐视2 x620红灯 黑砖刷写教程以及新版刷写工具的详细释义
乐视x620在上期解析了普通黑砖情况下的救砖刷机过程。但在一些例外的情况下。使用上面的步骤会一直刷写报错 。此种情况就需要另外一种强制刷写方法来救砖 通过博文了解💝💝💝 1💝💝💝-----详细解析乐视2 x620系列 红灯 黑砖线刷救砖的步骤 2💝💝💝----图…...
若依SpringCloud项目-定制微服务模块
若依SpringCloud项目-定制微服务模块 关于微服务先不过多介绍,刚开始熟悉并不能讲的很彻底,成熟的微服务项目-若依SpringCloud就是一个典型的微服务架构工程(网上有很多教程了,不明白的可以学习一下)。 我正在看的视…...
【扫描件批量改名】批量识别扫描件PDF指定区域内容,用识别的内容修改PDF文件名,基于C++和腾讯OCR的实现方案,超详细
批量识别扫描件PDF指定区域内容并重命名文件方案 应用场景 本方案适用于以下场景: 企业档案数字化管理:批量处理扫描的合同、发票等文件,按内容自动分类命名财务票据处理:自动识别票据上的关键信息(如发票号码、日期)用于归档医疗记录管理:从扫描的检查报告中提取患者I…...
学习Docker遇到的问题
目录 1、拉取hello-world镜像报错 1. 检查网络连接 排查: 2. 配置 Docker 镜像加速器(推荐) 具体解决步骤: 1.在服务器上创建并修改配置文件,添加Docker镜像加速器地址: 2. 重启Docker 3. 拉取hello-world镜像 2、删除镜像出现异常 3、 容器内部不能运行ping命令 …...
Docker 数据卷
目录 一、数据卷(Data Volume) 二、使用 1、单独建立数据卷 2、挂载主机数据卷 3、数据卷容器挂载 基本语法: 工作原理: 主要用途: 使用事例: 一、数据卷(Data Volume) 数据卷的使用,类似于 Linux 下对目录或文件进行 mount 数据卷(Data Volume)是一个可供一个或多…...
【数据结构】励志大厂版·初级(二刷复习)双链表
前引:今天学习的双链表属于链表结构中最复杂的一种(带头双向循环链表),按照安排,我们会先进行复习,如何实现双链表,如基本的头插、头删、尾删、尾插,掌握每个细节,随后进…...
通过dogssl申请ssl免费证书
SSL证书作为实现HTTPS加密的核心工具,能够确保用户与网站之间的数据传输安全。尤其是在小程序之类的开发时,要求必须通过https发起请求的情况下。学会如何免费申请一个ssl证书就很有必要了。这里我分享一下,我通过dogssl如何申请ssl的。 一&…...
路由与路由器
路由的概念 路由是指在网络通讯中,从源设备到目标设备路径的选择过程。路由器是实现这一过程的关键设备,它通过转发数据包来实现网络的互联。路由工作在OSI参考模型的第三层,‘网络层’。 路由器的基本原理 路由器通过维护一张路由表来决定…...
Docker底层原理浅析 | namespace+cgroups+文件系统
本文目录 1. Linux NamespaceLinux系统里是否只能有一个pid为1的进程?namespace机制查看namespacenamespace机制测试使用Docker验证namespace机制 2. Dcoerk网络模式3.Control groups4.文件系统(联合文件系统)5. 容器格式 1. Linux Namespace…...
【无人机】使用扩展卡尔曼滤波 (EKF) 算法来处理传感器测量,各传感器的参数设置,高度数据融合、不同传感器融合模式
目录 #1、IMU #2、磁力计 #3、高度 #典型配置 #4、气压计 #静压位置误差修正 #气压计偏置补偿 #5、全球导航系统/全球定位系统--GNSS/GPS #位置和速度测量 #偏航测量 #GPS 速度的偏航 #双接收器 #GNSS 性能要求 #6、测距 #条件范围辅助-Conditional range aidin…...
常见的raid有哪些,使用场景是什么?
RAID(Redundant Array of Independent Disks,独立磁盘冗余阵列)是一种将多个物理硬盘组合成一个逻辑硬盘的技术,目的是通过数据冗余和/或并行访问提高性能、容错能力和存储容量。不同的 RAID 级别有不同的实现方式和应用场景。以下…...
《 C++ 点滴漫谈: 三十四 》从重复到泛型,C++ 函数模板的诞生之路
一、引言 在 C 编程的世界里,类型是一切的基础。我们为 int 写一个求最大值的函数,为 double 写一个相似的函数,为 std::string 又写一个……看似合理的行为,逐渐堆积成了难以维护的 “函数墙”。这些函数逻辑几乎一致࿰…...
EasyRTC打造无人机低延迟高清实时通信监控全场景解决方案
一、方案背景 随着无人机技术的飞速发展,其在航拍、物流配送、农业监测、应急救援等多个领域的应用日益广泛。然而,无人机在实际作业过程中面临着诸多挑战,如通信延迟、数据传输不稳定、监控范围有限等。EasyRTC作为一种高效、低延迟的实时通…...
【MATLAB第117期】#源码分享 | 基于MATLAB的SSM状态空间模型多元时间序列预测方法(多输入单输出)
【MATLAB第117期】#源码分享 | 基于MATLAB的SSM状态空间模型多元时间序列预测方法(多输入单输出) 引言 本文使用状态空间模型实现失业率递归预测,状态空间模型(State Space Model, SSM)是一种用于描述动态系统行为的…...
关于大数据的基础知识(三)——数据安全与合规
成长路上不孤单😊😊😊😊😊😊 【14后😊///计算机爱好者😊///持续分享所学😊///如有需要欢迎收藏转发///😊】 今日分享关于大数据的基础知识(三&a…...
从信息泄露到内网控制
0x01 背景 之前常见用rce、文件上传等漏洞获取webshell,偶然遇到一次敏感信息泄露获取权限的渗透,简单记录一下过程。 0x02 信息泄露 发现系统某端口部署了minio服务,经过探测发现存在minio存储桶遍历 使用利用工具把泄露的文件全部整理一…...
【Qt】QDialog类
🌈 个人主页:Zfox_ 🔥 系列专栏:Qt 目录 一:🔥 对话框 - QDialog 🦋 基本介绍🦋 对话框分类🦋 Qt 内置对话框🎀 QMessageBox -消息对话框🎀 QColo…...
【Spring Boot基础】MyBatis的基础操作:增删查改、列名和属性名匹配 -- XML实现
MyBatis的基础操作 1. MyBatis XML配置文件1.1 简单介绍1.2 配置连接字符串和MyBatis1.3 XMl文件实现--分层1.4 XMl文件实现--举例 2.增删改查操作2.1 增(insert)2.1.1 不使用Param2.1.2 用Param2.1.3 返回自增键 2.2 删(delete)2…...
谷歌推出探索型推荐新范式:双LLM架构重塑用户兴趣挖掘
文章目录 1. 背景1.1 闭环困境1.2 谷歌的两次失败尝试1.2.1 尝试一:轻量微调1.2.2 尝试二:RLHF 强化学习微调 1.3 双LLM范式的提出1.3.1 模型1:Novelty LLM — 负责生成“探索方向”1.3.2 模型2:Alignment LLM — 负责评估“相关性…...
Linux kernel signal原理(下)- aarch64架构sigreturn流程
一、前言 在上篇中写到了linux中signal的处理流程,在do_signal信号处理的流程最后,会通过sigreturn再次回到线程现场,上篇文章中介绍了在X86_64架构下的实现,本篇中介绍下在aarch64架构下的实现原理。 二、sigaction系统调用 #i…...
使用 LangChain + Higress + Elasticsearch 构建 RAG 应用
RAG(Retrieval Augmented Generation,检索增强生成) 是一种结合了信息检索与生成式大语言模型(LLM)的技术。它的核心思想是:在生成模型输出内容之前,先从外部知识库或数据源中检索相关信息&…...
【Linux】46.网络基础(3.3)
文章目录 5. 其他重要协议或技术5.1 DNS(Domain Name System)5.1.1 DNS背景5.1.2 域名简介 5.2 ICMP协议5.2.1 ICMP功能5.2.2 ICMP的报文格式5.2.3 ping命令5.2.4 一个值得注意的坑5.2.5 traceroute命令 5.3 NAT技术5.3.1 NAT技术背景5.3.2 NAT IP转换过程5.3.3 NAPT5.3.4 NAT技…...
【Unity笔记】Unity + OpenXR项目无法启动SteamVR的排查与解决全指南
图片为AI生成 一、前言 随着Unity在XR领域全面转向OpenXR标准,越来越多的开发者选择使用OpenXR来构建跨平台的VR应用。但在项目实际部署中发现:打包成的EXE程序无法正常启动SteamVR,或者SteamVR未能识别到该应用。本文将以“Unity OpenXR …...
【sylar-webserver】重构 增加内存池
文章目录 内存池设定结构ThreadCacheCentralCachePageCache allocatedeallocate测试 参考 https://github.com/youngyangyang04/memory-pool 我的代码实现见 https://github.com/star-cs/webserver 内存池 ThreadCache(线程本地缓存) 每个线程独立的内存…...
云账号安全事件分析:黑客利用RAM子账户发起ECS命令执行攻击
事件背景 某企业云监控系统触发高危告警,提示API请求中包含黑客工具特征(cf_framework),攻击者试图通过泄露的RAM子账户凭据调用ECS高危API。以下是攻击关键信息整理: 字段详情告警原因API请求包含黑客工具特征(cf_framework)攻击实体RAM子账户 mq泄露凭证AccessKey ID…...