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

Django 入门实战:从环境搭建到构建你的第一个 Web 应用

Django 入门实战:从环境搭建到构建你的第一个 Web 应用

恭喜你选择 Django 作为你学习 Python Web 开发的起点!Django 是一个强大、成熟且功能齐全的框架,非常适合构建中大型的 Web 应用程序。本篇将通过一个简单的例子,带你走完 Django 开发的核心流程。

我们将构建一个非常简单的应用:一个显示项目列表的页面,这些项目数据存储在数据库中,并且可以通过 Django 自带的管理后台进行管理。

我们将要完成的步骤:

  1. 搭建开发环境 (Python, pip, 虚拟环境, Django)。
  2. 创建一个 Django 项目。
  3. 创建一个 Django 应用。
  4. 定义一个简单的视图 (View)。
  5. 配置 URL 路由 (URL Dispatcher)。
  6. 使用模板 (Template) 渲染 HTML。
  7. 定义模型 (Model),与数据库交互。
  8. 使用 Django 自带的管理后台管理数据。
  9. 在页面上显示数据库中的数据。

开始吧!

Part 1: 环境搭建

首先,确保你的电脑已经安装了 Python 和 pip。建议使用 Python 3.7 或更高版本。

  1. 创建和激活虚拟环境:

    使用虚拟环境是 Python 开发的最佳实践,它可以隔离不同项目之间的依赖,避免冲突。

    打开命令提示符 (Command Prompt) 或 PowerShell。

    • 创建一个新的虚拟环境(例如命名为 myproject_venv):

      Bash

      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>

  2. 在虚拟环境中安装 Django:

    确保虚拟环境已激活,然后使用 pip 安装 Django。

    Bash

    pip install django
    

    等待安装完成。

  3. 验证 Django 安装:

    可以运行以下命令检查 Django 是否成功安装以及版本号。

    Bash

    django-admin --version
    

    如果显示版本号,说明安装成功。

Part 2: 创建一个 Django 项目

Django 项目是整个 Web 应用的容器,包含配置和设置。

  1. 在项目目录下创建 Django 项目:

    在你的项目目录(例如,你刚刚创建虚拟环境的那个目录)下,运行以下命令:

    Bash

    django-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: 用于部署的服务器入口文件。
  2. 运行开发服务器:

    进入包含 manage.py 文件的项目根目录,运行以下命令:

    Bash

    python 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 通常负责一个特定的功能模块。

  1. 在项目根目录下创建应用:

    确保你仍在包含 manage.py 的项目根目录下,运行以下命令:

    Bash

    python 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      # 应用的视图定义
    
  2. 将应用添加到项目设置:

    新创建的应用需要添加到项目的配置文件 settings.py 中,让 Django 知道这个应用的存在。

    • 打开 myproject/settings.py 文件。
    • 找到 INSTALLED_APPS 列表。
    • 在列表中添加你的应用名称 'myapp'
    Python

    # 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 请求并返回响应。我们先创建一个简单的视图,只返回一段文本。

  1. 打开应用的 views.py 文件: myapp/views.py

  2. 编写一个简单的函数式视图 (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。

  1. 在应用目录中创建 urls.py 文件:

    在 myapp 目录下创建一个新的 Python 文件 urls.py。

  2. 编辑应用的 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'),
    ]
    
  3. 编辑项目的根 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 中
    ]
    
  4. 测试第一个视图和 URL:

    确保你在项目根目录(manage.py 所在目录),运行开发服务器:

    Bash

    python manage.py runserver
    

    打开浏览器,访问 http://127.0.0.1:8000/myapp/。你应该能看到页面上显示“Hello, Django!”。这表明你成功地将一个 URL 映射到了一个视图,并返回了响应。

Part 6: 使用模板 (Template)

直接在视图中返回 HTML 字符串不适合复杂的页面。Django 使用模板来分离视图逻辑和页面展示。

  1. 创建模板目录和模板文件:

    按照 Django 的约定,模板文件通常放在应用的 templates 目录下的一个与应用同名的子目录中。

    • myapp 目录下创建 templates 目录:myapp/templates/
    • templates 目录下创建 myapp 子目录:myapp/templates/myapp/
    • myapp/templates/myapp/ 目录下创建一个新的 HTML 文件,例如 index.html
  2. 编辑模板文件 (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>
    
  3. 修改视图以使用模板:

    修改 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)
    
  4. 测试使用模板的视图:

    确保服务器正在运行,再次访问 http://127.0.0.1:8000/myapp/。你应该能看到一个标准的 HTML 页面,其中 H1 标题显示着“Hello from Template Context!”。这表明你成功地将数据从视图传递到了模板并进行了渲染。

Part 7: 使用模型 (Model) 与数据库

Django 的 ORM 让你用 Python 类定义数据结构,然后自动映射到数据库。

  1. 数据库设置:

    Django 默认使用 SQLite 数据库,配置在 settings.py 的 DATABASES 字典中。对于入门而言,默认设置即可,无需安装额外数据库软件。

  2. 定义第一个模型:

    打开应用的 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() 等
    
  3. 创建数据库迁移 (Migrations):

    模型定义完成后,需要告诉 Django 根据模型的变化创建数据库迁移文件。

    • 确保你在项目根目录(manage.py 所在目录),并且虚拟环境已激活。
    • 运行命令: Bash

      python manage.py makemigrations myapp # 指定应用名称
      
    • Django 会检测到你在 myapp/models.py 中定义了 Item 模型,并在 myapp/migrations/ 目录下生成一个 Python 文件(例如 0001_initial.py),记录了创建 Item 表的步骤。
  4. 应用数据库迁移:

    生成迁移文件后,需要将其应用到数据库,创建实际的数据库表。

    • 确保你在项目根目录,虚拟环境已激活。
    • 运行命令: Bash

      python manage.py migrate
      
    • Django 会执行所有未应用的迁移,包括你的应用和 Django 内置应用(如用户认证、管理后台)的迁移,创建所需的数据库表。如果使用 SQLite,你会在项目根目录看到一个 db.sqlite3 文件被创建或更新。

Part 8: 使用 Django 自带的管理后台管理数据

Django 的杀手级功能之一是自动化的管理后台,可以让你方便地查看和管理数据库中的数据。

  1. 创建超级用户 (Superuser):

    你需要创建一个超级用户账号来登录管理后台。

    • 确保你在项目根目录,虚拟环境已激活。
    • 运行命令: Bash

      python manage.py createsuperuser
      
    • 按照提示输入用户名、邮箱(可选)和密码。密码输入时不会显示字符,输完按回车即可。
  2. 注册模型到管理后台:

    默认情况下,你的自定义模型不会显示在管理后台。你需要显式地注册它们。

    • 打开应用的 admin.py 文件 (myapp/admin.py)。
    • 导入你的模型,并使用 admin.site.register() 函数注册。
    Python

    # 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)
    
  3. 访问管理后台并添加数据:

    • 确保开发服务器正在运行 (python manage.py runserver)。
    • 打开浏览器,访问 http://127.0.0.1:8000/admin/
    • 使用你刚刚创建的超级用户账号登录。
    • 登录成功后,你应该能在侧边栏看到你的应用名称(myapp)以及下面的 Items
    • 点击 Items,然后点击右上角的“添加 Item”按钮。
    • 输入一些 Item 数据(只需要输入 Name 字段,created_at 会自动生成),点击“保存”。添加几个 Item。

Part 9: 在页面上显示数据库中的数据

现在,我们回到前面创建的页面,修改视图和模板,从数据库中获取 Item 数据并显示出来。

  1. 修改视图,从数据库获取数据:

    打开 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)
    
  2. 修改模板,显示获取到的数据:

    打开 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>
    
  3. 最终测试:

    确保开发服务器正在运行,访问 http://127.0.0.1:8000/myapp/。现在,你应该能看到页面上显示着“我的项目列表”,并且下方列出了你在管理后台添加的所有 Item 数据!

Part 9: 总结回顾

恭喜你!你已经完成了你的第一个 Django Web 应用的入门开发。在这个过程中,你接触并使用了 Django 的核心组件和开发流程:

  • 虚拟环境和 pip: 搭建和管理项目环境。
  • django-adminmanage.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 入门实战&#xff1a;从环境搭建到构建你的第一个 Web 应用 恭喜你选择 Django 作为你学习 Python Web 开发的起点&#xff01;Django 是一个强大、成熟且功能齐全的框架&#xff0c;非常适合构建中大型的 Web 应用程序。本篇将通过一个简单的例子&#xff0c;带你走完…...

【后端】构建简洁的音频转写系统:基于火山引擎ASR实现

在当今数字化时代&#xff0c;语音识别技术已经成为许多应用不可或缺的一部分。无论是会议记录、语音助手还是内容字幕&#xff0c;将语音转化为文本的能力对提升用户体验和工作效率至关重要。本文将介绍如何构建一个简洁的音频转写系统&#xff0c;专注于文件上传、云存储以及…...

http通信之axios vs fecth该如何选择?

在HTTP通信中&#xff0c;axios和fetch都是常用的库或原生API用于发起网络请求。两者各有特点&#xff0c;适用于不同的场景。下面详细介绍它们的差异和各自的优势&#xff1a; fetch 特点&#xff1a; 原生支持&#xff1a;fetch是现代浏览器内置的API&#xff0c;不需要额外…...

iostat指令介绍

文章目录 1. 功能介绍2. 语法介绍3. 应用场景4. 示例分析 1. 功能介绍 iostat (input/output statistics)&#xff0c;是 Linux/Unix 系统中用于监控 CPU 使用率和 磁盘 I/O 性能的核心工具&#xff0c;可实时展示设备负载、吞吐量、队列状态等关键指标。 可以使用 man iostat查…...

NLP高频面试题(五十)——大模型(LLMs)分词(Tokenizer)详解

在自然语言处理(NLP)任务中,将文本转换为模型可处理的数字序列是必不可少的一步。这一步通常称为分词(tokenization),即把原始文本拆分成一个个词元(token)。对于**大型语言模型(LLM,Large Language Model,大型语言模型)**而言,选择合适的分词方案至关重要:分词的…...

桌面我的电脑图标不见了怎么恢复 恢复方法指南

在Windows操作系统中&#xff0c;“我的电脑”或在较新版本中称为“此电脑”的图标&#xff0c;是访问硬盘驱动器、外部存储设备和系统文件的重要入口。然而&#xff0c;有些用户可能会发现桌面上缺少了这个图标&#xff0c;这可能是由于误操作、系统设置更改或是不小心删除造成…...

【Qt】控件的理解 和 基础控件 QWidget 属性详解(通俗易懂+附源码+思维导图框架)

每日激励&#xff1a;“不设限和自我肯定的心态&#xff1a;I can do all things。 — Stephen Curry” 绪论​&#xff1a; 通过上一章对信号槽的理解相信你对Qt的认识肯定有了很大的进步&#xff0c;下面将通过本篇文章带你深入的认识Widget控件&#xff08;主窗口&#xff0…...

oracle将表字段逗号分隔的值进行拆分,并替换值

需求背景&#xff1a;需要源数据变动&#xff0c;需要对历史表已存的字段值根据源数据进行更新。如果是单字段存值&#xff0c;直接根据映射表关联修改即可。但字段里面若存的值是以逗号分割&#xff0c;比如旧值&#xff1a;‘old1,old2,old3’&#xff0c;要根据映射关系调整…...

用c语言实现——一个带头节点的链队列,支持用户输入交互界面、初始化、入队、出队、查找、判空判满、显示队列、遍历计算长度等功能

一、知识介绍 带头节点的链队列是一种基于链表实现的队列结构&#xff0c;它在链表的头部添加了一个特殊的节点&#xff0c;称为头节点。头节点不存储实际的数据元素&#xff0c;主要作用是作为链表的起点&#xff0c;简化队列的操作和边界条件处理。 1.节点结构 链队列的每…...

webpack基础使用了解(入口、出口、插件、加载器、优化、别名、打包模式、环境变量、代码分割等)

目录 1、webpack简介2、简单示例3、入口(entry)和输出(output)4、自动生成html文件5、打包css代码6、优化&#xff08;单独提取css代码&#xff09;7、优化&#xff08;压缩过程&#xff09;8、打包less代码9、打包图片10、搭建开发环境&#xff08;webpack-dev-server&#xf…...

【项目】基于MCP+Tabelstore架构实现知识库答疑系统

基于MCPTabelstore架构实现知识库答疑系统 整体流程设计&#xff08;一&#xff09;Agent 架构&#xff08;二&#xff09;知识库存储&#xff08;1&#xff09;向量数据库Tablestore&#xff08;2&#xff09;MCP Server &#xff08;三&#xff09;知识库构建&#xff08;1&a…...

C语言高频面试题——malloc 和 calloc区别

在 C 语言中&#xff0c;malloc 和 calloc 都是用于动态内存分配的函数&#xff0c;但它们在 内存初始化、参数形式 和 使用场景 上有显著区别。以下是详细的对比分析&#xff1a; 1. 函数原型 malloc void* malloc(size_t size);功能&#xff1a;分配 未初始化 的连续内存块…...

深入探讨JavaScript性能瓶颈与优化实战指南

JavaScript作为现代Web开发的核心语言,其性能直接影响用户体验与业务指标。随着2025年前端应用的复杂性持续增加,性能优化已成为开发者必须掌握的核心技能。本文将从性能瓶颈分析、优化策略、工具使用三个维度,结合实战案例,系统梳理JavaScript性能优化的关键路径。 一、Ja…...

[创业之路-376]:企业法务 - 创业,不同的企业形态,个人承担的风险、收益、税费、成本不同

在企业法务领域&#xff0c;创业时选择不同的企业形态&#xff0c;个人在风险承担、收益分配、税费负担及运营成本方面存在显著差异。以下从个人独资企业、合伙企业、有限责任公司、股份有限公司四种常见形态展开分析&#xff1a; 一、个人承担的风险 个人独资企业 风险类型&…...

【Lua】Lua 入门知识点总结

Lua 入门学习笔记 本教程旨在帮助有编程基础的学习者快速入门Lua编程语言。包括Lua中变量的声明与使用&#xff0c;包括全局变量和局部变量的区别&#xff0c;以及nil类型的概念、数值型、字符串和函数的基本操作&#xff0c;包括16进制表示、科学计数法、字符串连接、函数声明…...

低空经济 WebGIS 无人机配送 | 图扑数字孪生

2024 年&#xff0c;”低空经济” 首次写入政府工作报告&#xff0c;在政策驱动下各地纷纷把握政策机遇&#xff0c;从基建网络、场景创新、产业生态、政策激励等方面&#xff0c;构建 “规划-建设-应用-赋能” 的系统性布局&#xff0c;作为新质生产力的重要体现&#xff0c;推…...

【程序员 NLP 入门】词嵌入 - 如何基于计数的方法表示文本? (★小白必会版★)

&#x1f31f; 嗨&#xff0c;你好&#xff0c;我是 青松 &#xff01; &#x1f308; 希望用我的经验&#xff0c;让“程序猿”的AI学习之路走的更容易些&#xff0c;若我的经验能为你前行的道路增添一丝轻松&#xff0c;我将倍感荣幸&#xff01;共勉~ 【程序员 NLP 入门】词…...

基于机器学习的多光谱遥感图像分类方法研究与定量评估

多光谱遥感技术通过获取可见光至红外波段的光谱信息&#xff0c;为地质勘探、农业监测、环境调查等领域提供了重要支持。与普通数码相机相比&#xff0c;多光谱成像能记录更丰富的波段数据&#xff08;如近红外、短波红外等&#xff09;&#xff0c;从而更精准地识别地物特征。…...

BEVDepth: Acquisition of Reliable Depth for Multi-View 3D Object Detection

背景 基于多视角图片的3D感知被LSS证明是可行的,它使用估计的深度将图像特征转化为3D视椎,再将其压缩到BEV平面上。对于这个得到的BEV特征图,它支持端到端训练以及各种下游任务。但是对于深度估计这一块学习的深度质量如何,到目前为止没有相关工作研究。 贡献 本文的贡献…...

【Linux】静态库 动态库

&#x1f33b;个人主页&#xff1a;路飞雪吖~ &#x1f320;专栏&#xff1a;Linux 目录 一、&#x1f451;静态库和动态库 静态库&#xff1a; 动态库&#xff1a; &#x1f320;手动制作静态库 && 手动调用一下我们自己写的静态库 1> 安装到系统里面 ✨生成静…...

Java转Go日记(六):TCP黏包

服务端代码如下&#xff1a; // 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教程)(延时函数教程)(单总线教程)

演示视频&#xff1a; LCD显示温度 源代码 如上图将9个文放在Keli5 中即可&#xff0c;然后烧录在单片机中就行了 烧录软件用的是STC-ISP&#xff0c;不知道怎么安装的可以去看江科大的视频&#xff1a; 【51单片机入门教程-2020版 程序全程纯手打 从零开始入门】https://www.…...

【通过Docker快速部署Tomcat9.0】

文章目录 前言一、部署docker二、部署Tomcat2.1 创建存储卷2.2 运行tomcat容器2.3 查看tomcat容器2.4 查看端口是否监听2.5 防火墙开放端口 三、访问Tomcat 前言 Tomcat介绍 Tomcat 是由 Apache 软件基金会&#xff08;Apache Software Foundation&#xff09;开发的一个开源 …...

云原生--基础篇-3--云原生概述(云、原生、云计算、核心组成、核心特点)

1、什么是云和原生 &#xff08;1&#xff09;、什么是云&#xff1f; “云”指的是云计算环境&#xff0c;代表应用运行的基础设施和资源。依赖并充分利用云计算的弹性、分布式和资源池化能力。 核心含义&#xff1a; 1、云计算基础设施 云原生应用的设计和运行完全基于云…...

Spark-Streaming

Spark-Streaming概述 DStream实操 案例一&#xff1a;WordCount案例 需求&#xff1a;使用 netcat 工具向 9999 端口不断的发送数据&#xff0c;通过 SparkStreaming 读取端口数据并统计不同单词出现的次数 实验步骤&#xff1a; 添加依赖 <dependency> <gro…...

乐视系列玩机------乐视2 x620红灯 黑砖刷写教程以及新版刷写工具的详细释义

乐视x620在上期解析了普通黑砖情况下的救砖刷机过程。但在一些例外的情况下。使用上面的步骤会一直刷写报错 。此种情况就需要另外一种强制刷写方法来救砖 通过博文了解💝💝💝 1💝💝💝-----详细解析乐视2 x620系列 红灯 黑砖线刷救砖的步骤 2💝💝💝----图…...

若依SpringCloud项目-定制微服务模块

若依SpringCloud项目-定制微服务模块 关于微服务先不过多介绍&#xff0c;刚开始熟悉并不能讲的很彻底&#xff0c;成熟的微服务项目-若依SpringCloud就是一个典型的微服务架构工程&#xff08;网上有很多教程了&#xff0c;不明白的可以学习一下&#xff09;。 我正在看的视…...

【扫描件批量改名】批量识别扫描件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)是一个可供一个或多…...

【数据结构】励志大厂版·初级(二刷复习)双链表

前引&#xff1a;今天学习的双链表属于链表结构中最复杂的一种&#xff08;带头双向循环链表&#xff09;&#xff0c;按照安排&#xff0c;我们会先进行复习&#xff0c;如何实现双链表&#xff0c;如基本的头插、头删、尾删、尾插&#xff0c;掌握每个细节&#xff0c;随后进…...

通过dogssl申请ssl免费证书

SSL证书作为实现HTTPS加密的核心工具&#xff0c;能够确保用户与网站之间的数据传输安全。尤其是在小程序之类的开发时&#xff0c;要求必须通过https发起请求的情况下。学会如何免费申请一个ssl证书就很有必要了。这里我分享一下&#xff0c;我通过dogssl如何申请ssl的。 一&…...

路由与路由器

路由的概念 路由是指在网络通讯中&#xff0c;从源设备到目标设备路径的选择过程。路由器是实现这一过程的关键设备&#xff0c;它通过转发数据包来实现网络的互联。路由工作在OSI参考模型的第三层&#xff0c;‘网络层’。 路由器的基本原理 路由器通过维护一张路由表来决定…...

Docker底层原理浅析 | namespace+cgroups+文件系统

本文目录 1. Linux NamespaceLinux系统里是否只能有一个pid为1的进程&#xff1f;namespace机制查看namespacenamespace机制测试使用Docker验证namespace机制 2. Dcoerk网络模式3.Control groups4.文件系统&#xff08;联合文件系统&#xff09;5. 容器格式 1. Linux Namespace…...

【无人机】使用扩展卡尔曼滤波 (EKF) 算法来处理传感器测量,各传感器的参数设置,高度数据融合、不同传感器融合模式

目录 #1、IMU #2、磁力计 #3、高度 #典型配置 #4、气压计 #静压位置误差修正 #气压计偏置补偿 #5、全球导航系统/全球定位系统--GNSS/GPS #位置和速度测量 #偏航测量 #GPS 速度的偏航 #双接收器 #GNSS 性能要求 #6、测距 #条件范围辅助-Conditional range aidin…...

常见的raid有哪些,使用场景是什么?

RAID&#xff08;Redundant Array of Independent Disks&#xff0c;独立磁盘冗余阵列&#xff09;是一种将多个物理硬盘组合成一个逻辑硬盘的技术&#xff0c;目的是通过数据冗余和/或并行访问提高性能、容错能力和存储容量。不同的 RAID 级别有不同的实现方式和应用场景。以下…...

《 C++ 点滴漫谈: 三十四 》从重复到泛型,C++ 函数模板的诞生之路

一、引言 在 C 编程的世界里&#xff0c;类型是一切的基础。我们为 int 写一个求最大值的函数&#xff0c;为 double 写一个相似的函数&#xff0c;为 std::string 又写一个……看似合理的行为&#xff0c;逐渐堆积成了难以维护的 “函数墙”。这些函数逻辑几乎一致&#xff0…...

EasyRTC打造无人机低延迟高清实时通信监控全场景解决方案

一、方案背景 随着无人机技术的飞速发展&#xff0c;其在航拍、物流配送、农业监测、应急救援等多个领域的应用日益广泛。然而&#xff0c;无人机在实际作业过程中面临着诸多挑战&#xff0c;如通信延迟、数据传输不稳定、监控范围有限等。EasyRTC作为一种高效、低延迟的实时通…...

【MATLAB第117期】#源码分享 | 基于MATLAB的SSM状态空间模型多元时间序列预测方法(多输入单输出)

【MATLAB第117期】#源码分享 | 基于MATLAB的SSM状态空间模型多元时间序列预测方法&#xff08;多输入单输出&#xff09; 引言 本文使用状态空间模型实现失业率递归预测&#xff0c;状态空间模型&#xff08;State Space Model, SSM&#xff09;是一种用于描述动态系统行为的…...

关于大数据的基础知识(三)——数据安全与合规

成长路上不孤单&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a; 【14后&#x1f60a;///计算机爱好者&#x1f60a;///持续分享所学&#x1f60a;///如有需要欢迎收藏转发///&#x1f60a;】 今日分享关于大数据的基础知识&#xff08;三&a…...

从信息泄露到内网控制

0x01 背景 之前常见用rce、文件上传等漏洞获取webshell&#xff0c;偶然遇到一次敏感信息泄露获取权限的渗透&#xff0c;简单记录一下过程。 0x02 信息泄露 发现系统某端口部署了minio服务&#xff0c;经过探测发现存在minio存储桶遍历 使用利用工具把泄露的文件全部整理一…...

【Qt】QDialog类

&#x1f308; 个人主页&#xff1a;Zfox_ &#x1f525; 系列专栏&#xff1a;Qt 目录 一&#xff1a;&#x1f525; 对话框 - QDialog &#x1f98b; 基本介绍&#x1f98b; 对话框分类&#x1f98b; Qt 内置对话框&#x1f380; QMessageBox -消息对话框&#x1f380; QColo…...

【Spring Boot基础】MyBatis的基础操作:增删查改、列名和属性名匹配 -- XML实现

MyBatis的基础操作 1. MyBatis XML配置文件1.1 简单介绍1.2 配置连接字符串和MyBatis1.3 XMl文件实现--分层1.4 XMl文件实现--举例 2.增删改查操作2.1 增&#xff08;insert&#xff09;2.1.1 不使用Param2.1.2 用Param2.1.3 返回自增键 2.2 删&#xff08;delete&#xff09;2…...

谷歌推出探索型推荐新范式:双LLM架构重塑用户兴趣挖掘

文章目录 1. 背景1.1 闭环困境1.2 谷歌的两次失败尝试1.2.1 尝试一&#xff1a;轻量微调1.2.2 尝试二&#xff1a;RLHF 强化学习微调 1.3 双LLM范式的提出1.3.1 模型1&#xff1a;Novelty LLM — 负责生成“探索方向”1.3.2 模型2&#xff1a;Alignment LLM — 负责评估“相关性…...

Linux kernel signal原理(下)- aarch64架构sigreturn流程

一、前言 在上篇中写到了linux中signal的处理流程&#xff0c;在do_signal信号处理的流程最后&#xff0c;会通过sigreturn再次回到线程现场&#xff0c;上篇文章中介绍了在X86_64架构下的实现&#xff0c;本篇中介绍下在aarch64架构下的实现原理。 二、sigaction系统调用 #i…...

使用 LangChain + Higress + Elasticsearch 构建 RAG 应用

RAG&#xff08;Retrieval Augmented Generation&#xff0c;检索增强生成&#xff09; 是一种结合了信息检索与生成式大语言模型&#xff08;LLM&#xff09;的技术。它的核心思想是&#xff1a;在生成模型输出内容之前&#xff0c;先从外部知识库或数据源中检索相关信息&…...

【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标准&#xff0c;越来越多的开发者选择使用OpenXR来构建跨平台的VR应用。但在项目实际部署中发现&#xff1a;打包成的EXE程序无法正常启动SteamVR&#xff0c;或者SteamVR未能识别到该应用。本文将以“Unity OpenXR …...

【sylar-webserver】重构 增加内存池

文章目录 内存池设定结构ThreadCacheCentralCachePageCache allocatedeallocate测试 参考 https://github.com/youngyangyang04/memory-pool 我的代码实现见 https://github.com/star-cs/webserver 内存池 ThreadCache&#xff08;线程本地缓存&#xff09; 每个线程独立的内存…...

云账号安全事件分析:黑客利用RAM子账户发起ECS命令执行攻击

事件背景 某企业云监控系统触发高危告警,提示API请求中包含黑客工具特征(cf_framework),攻击者试图通过泄露的RAM子账户凭据调用ECS高危API。以下是攻击关键信息整理: 字段详情告警原因API请求包含黑客工具特征(cf_framework)攻击实体RAM子账户 mq泄露凭证AccessKey ID…...