从零创建一个 Django 项目
1. 准备环境
在开始之前,确保你的开发环境满足以下要求:
- 安装了 Python (推荐 3.8 或更高版本)。
- 安装
pip
包管理工具。 - 如果要使用 MySQL 或 PostgreSQL,确保对应的数据库已安装。
创建虚拟环境
在项目目录中创建并激活虚拟环境,保证项目依赖隔离:
# 创建虚拟环境
python -m venv env# 激活虚拟环境
# Windows
env\Scripts\activate
# Linux/Mac
source env/bin/activate
2. 安装 Django 和数据库驱动
在激活的虚拟环境中安装 Django:
pip install django
如果使用 MySQL 或 PostgreSQL,还需要安装相应的驱动:
- MySQL: 安装
mysqlclient
:pip install mysqlclient
- PostgreSQL: 安装
psycopg2
:pip install psycopg2-binary
如果只是使用 SQLite,Django 默认支持,无需额外安装。
3. 创建 Django 项目
使用 django-admin
创建一个新的项目:
django-admin startproject myproject
项目结构
创建后,项目的基本结构如下:
myproject/manage.py # 项目管理脚本myproject/__init__.py # 包标识settings.py # 项目设置urls.py # URL 配置asgi.py # ASGI 配置wsgi.py # WSGI 配置
4. 配置数据库
打开 myproject/myproject/settings.py
,找到 DATABASES
配置项,根据数据库类型修改配置:
默认的 SQLite 配置
DATABASES = {'default': {'ENGINE': 'django.db.backends.sqlite3','NAME': BASE_DIR / 'db.sqlite3',}
}
使用 MySQL
如果你使用 MySQL,修改为:
DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','NAME': 'your_database_name','USER': 'your_database_user','PASSWORD': 'your_database_password','HOST': 'localhost', # 数据库主机地址,通常是 localhost'PORT': '3306', # MySQL 默认端口}
}
使用 PostgreSQL
如果你使用 PostgreSQL,修改为:
DATABASES = {'default': {'ENGINE': 'django.db.backends.postgresql','NAME': 'your_database_name','USER': 'your_database_user','PASSWORD': 'your_database_password','HOST': 'localhost', # 数据库主机地址,通常是 localhost'PORT': '5432', # PostgreSQL 默认端口}
}
5. 创建 Django 应用
在项目目录中创建一个新的 Django 应用:
python manage.py startapp myapp
应用结构
创建后,应用的结构如下:
myapp/migrations/ # 数据库迁移文件目录__init__.py__init__.py # 包标识admin.py # 管理后台配置apps.py # 应用配置models.py # 数据模型定义tests.py # 单元测试views.py # 视图函数
6. 配置应用
打开 myproject/myproject/settings.py
,在 INSTALLED_APPS
中添加你的新应用:
INSTALLED_APPS = [# Django 自带的应用'django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles',# 你的应用'myapp',
]
7. 创建模型并生成数据库表
在 myapp/models.py
中定义数据模型。例如:
from django.db import modelsclass Lesson(models.Model):id = models.CharField(max_length=20, primary_key=True)name = models.CharField(max_length=50)def __str__(self):return self.name
生成迁移文件
运行以下命令生成迁移文件:
python manage.py makemigrations
Django 会检测到模型更改并生成迁移文件,例如:
Migrations for 'myapp':myapp/migrations/0001_initial.py- Create model Lesson
应用迁移文件
运行以下命令将迁移文件应用到数据库,生成表结构:
python manage.py migrate
生成并应用迁移文件的目的
- 将模型定义和数据库表结构同步,确保模型中的字段和属性能够在数据库中对应为实际的表和列;
迁移文件的作用
- 迁移文件是 Django 提供的一种机制,用于跟踪和记录数据模型的变化,然后将这些变化应用到数据库中。
- **作用1:**将模型转换为数据库表; (在 models.py 中定义的模型只是 Python 的类,它们描述了表的结构(如字段、类型、约束等),但它们并不会自动创建数据库中的实际表。)
- 迁移文件将这些模型转化为一组可以执行的指令(SQL 语句),以在数据库中创建实际的表。
- 举例: 在models.py中定义
from django.db import modelsclass User(models.Model):id = models.AutoField(primary_key=True)username = models.CharField(max_length=100)email = models.EmailField()
- 迁移文件会生成相应的SQL语句;
CREATE TABLE user (id INT AUTO_INCREMENT PRIMARY KEY,username VARCHAR(100) NOT NULL,email VARCHAR(254) NOT NULL
);
- **作用2:**跟踪和管理模型的变更; (当你对 models.py 中的模型做出修改(如新增字段、修改字段类型、删除字段等)时,Django 会通过迁移文件记录这些变化。)应用迁移文件后,Django 会将这些更改同步到数据库中,而不会丢失现有数据。
- 举例:假设你为User模型添加了一个新的字段age
age = models.IntegerField(default=18)
- 生成迁移文件以后,Django会创建一个指令来添加字段;
ALTER TABLE user ADD COLUMN age INT NOT NULL DEFAULT 18;
- **作用3:**管理多开发者协作中的数据库一致性; (在多人开发时,每个开发者可能对模型进行不同的更改,通过迁移文件可以记录这些更改,并在团队中共享。迁移文件以增量的形式记录每次更改,确保所有开发者和环境中的数据库表结构保持一致。)
8. 运行开发服务器
使用以下命令启动 Django 开发服务器:
python manage.py runserver
打开浏览器访问 http://127.0.0.1:8000/ 以查看项目是否正常运行。
9. 添加管理后台支持
如果需要通过 Django 的管理后台管理数据库,可以为模型添加管理支持。
注册模型
打开 myapp/admin.py
,注册模型:
from django.contrib import admin
from .models import Lessonadmin.site.register(Lesson)
创建超级用户
运行以下命令创建管理员账户:
python manage.py createsuperuser
按照提示输入用户名、邮箱和密码。
访问管理后台
启动开发服务器后,访问 http://127.0.0.1:8000/admin,使用管理员账户登录即可管理数据库中的数据。
10. 测试操作数据库
可以通过 manage.py shell
交互式操作数据库:
python manage.py shell
在交互环境中:
from myapp.models import Lesson# 创建记录
lesson = Lesson.objects.create(id='1', name='Django Basics')# 查询记录
lesson = Lesson.objects.get(id='1')
print(lesson.name)# 更新记录
lesson.name = 'Advanced Django'
lesson.save()# 删除记录
lesson.delete()
总结
通过以上步骤,你可以从零创建一个 Django 项目,并设置数据库支持。核心流程包括:
- 安装 Django 和数据库驱动。
- 配置数据库连接。
- 创建应用和模型。
- 生成并应用迁移文件。
- 运行开发服务器并使用 Django 提供的管理后台。
项目结构解读
env文件夹
- 概念;env 文件夹是一个 虚拟环境 的文件夹。
- 什么是虚拟环境?【虚拟环境是 Python 提供的一种工具,用于隔离项目的依赖。它允许你在每个项目中独立安装 Python 包,而不会干扰全局 Python 环境或其他项目的依赖。】
- 为什么需要虚拟环境?
- 依赖隔离:每个项目可能需要不同版本的库,如果不使用虚拟环境,可能会导致版本冲突。
- 防止污染全局环境:全局环境中的库安装可能会影响其他项目的正常运行。
- env文件夹的作用
- 环境隔离:当你激活虚拟环境时,所有安装的依赖包(如 Django)都被存储在 env 文件夹中。
- 存储依赖包:例如,你安装的 Django 和 MySQL 驱动等依赖,都会存储在 env/Lib/site-packages 下。
- 激活虚拟环境(window)
env\Scripts\activate
- 激活虚拟环境(Linux/Mac)
source env/bin/activate
- 关闭虚拟环境
deactivate
项目目录结构以及Django项目开发注意点
myproject/manage.pymyproject/__init__.pysettings.pyurls.pyasgi.pywsgi.pymyapp/migrations/__init__.pyadmin.pyapps.pymodels.pytests.pyviews.py
manage.py
- 概念;manage.py 是 Django 项目的入口点。它是一个命令行工具,允许你管理项目(如运行开发服务器、数据库迁移等)。常见的命令包括:
- 启动开发服务器
python manage.py runserver
- 创建数据库迁移
python manage.py makemigrations
python manage.py migrate
- 创建超级用户
python manage.py createsuperuser
myproject/(同名的文件夹)
- 概念;这个文件夹是Django项目的配置文件夹,它的名字和项目名一致
- settings.py:项目的核心配置文件,包括数据库配置、已安装的应用、静态文件路径等。
- urls.py:项目的 URL 路由配置文件,用于将 URL 路径映射到对应的视图函数。
- asgi.py:ASGI(异步服务器网关接口)配置,用于支持异步请求处理。
- wsgi.py:WSGI(Web服务器网关接口)配置,用于部署 Django 项目到生产环境。
myapp(创建的应用目录)
- myapp/ 是你创建的应用目录。Django 项目可以包含多个应用,每个应用负责不同的功能模块。
- 各文件的作用
- models.py:定义数据模型(数据库表结构)。
- views.py:处理用户的请求,并返回响应。
- admin.py:配置管理后台(Django admin)。
- apps.py:管理应用的配置信息。
- migrations/:存储数据库迁移文件,用于跟踪模型的变化。
- tests.py:定义测试用例,用于自动化测试。
- init: 标识这是一个Python包; (文件夹可以被 Python 识别为模块)
为什么 myproject 文件夹下有一个和项目同名的文件夹?
- 这是Django项目默认的目录结构
- 最外层的 myproject/ 是项目的根目录,存放项目入口点 manage.py 和其他项目相关的文件。
- 内层的 myproject/ 是项目的 配置文件夹,存放项目的配置(如 settings.py、urls.py 等)。
- 这样设计的目的
- Django 这样设计的原因是为了方便管理项目的全局文件和应用文件。分开这两层结构,可以更清晰地区分项目的配置文件和其他文件。
修改项目名称会影响哪些地方?
- 如果你需要修改项目名称,内层文件夹(myproject)中的配置文件需要同步更新。例如:
- asgi.py 和 wsgi.py 中引用的模块路径需要修改。
- 项目运行时的模块路径也需要更新。
如何添加更多的应用到项目中?
- Django 支持模块化的开发,可以为项目添加多个应用,每个应用负责不同的功能。
- 创建新的应用;使用startapp命令创建新应用;例如
python manage.py startapp blog
-
- 注册应用;将新应用注册到项目的 INSTALLED_APPS 中:
# settings.py
INSTALLED_APPS = [# 默认应用'django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles',# 你的自定义应用'myapp','blog',
]
-
- 添加URL路由;为新应用配置URL,例如,在新应用blog中创建urls.py
# blog/urls.py
from django.urls import path
from . import viewsurlpatterns = [path('', views.index, name='index'), # 主页
]
-
- 在项目的urls.py中包含这个应用的URL;
# myproject/urls.py
from django.contrib import admin
from django.urls import path, includeurlpatterns = [path('admin/', admin.site.urls),path('blog/', include('blog.urls')), # 包含 blog 的路由
]
项目结构总结
- env 文件夹:是虚拟环境的文件夹,用于隔离项目依赖。
- 项目结构:
- 外层 myproject/ 是根目录,存放入口文件(如 manage.py)。
- 内层 myproject/ 是项目的配置文件夹,存放 settings.py 等配置。
- myapp/ 是一个应用目录,你可以创建多个应用,每个应用负责不同的功能模块。
- 模块化开发:
- Django 项目可以包含多个应用,通过 startapp 命令创建新应用,并通过 INSTALLED_APPS 注册到项目中。
编辑数据库时,是否需要书写models.py文件
1. 使用models.py的场景
- 在大多数情况下,推荐通过models.py 文件来定义和操作数据库,这是 Django 的核心功能之一。
- 优点
- **ORM提供抽象层;**通过Django的ORM(对象关系映射),你可以直接使用Python类和方法操作数据库,而无需手写SQL;
- **数据变更自动管理:**通过迁移(migrations)功能,可以轻松跟踪和管理数据库结构的变更。
- 代码可维护性强: models.py 中的类定义直接对应数据库表,代码更直观、更易维护。
- **跨数据库支持:**通过 Django 的 ORM,同一套代码可以适配不同的数据库(如 SQLite、MySQL、PostgreSQL)。
2. 直接操作数据库的场景(无需models.py)
场景1:已有数据库表;
- 如果你的项目需要操作一个已有的数据库(非 Django 管理的表),你可以直接通过 SQL 或第三方库操作它,而不定义模型。
- 也可以使用Django的inspectdb功能自动生成模型;
场景2:复杂SQL查询
- 如果某些操作难以通过 ORM 实现(例如复杂的联表查询、多级嵌套查询等),可以直接使用 SQL 查询。
场景3:一次性脚本或数据迁移
- 如果只是临时操作数据库(如迁移数据、批量更新等),可以直接运行原生 SQL,而不需要定义模型。
利用Django操作数据库(编写接口)
- 目的:想要获取my_db_01数据库下的users表中的所有用户数据;
步骤1:在myproject文件夹下的settings.py文件中配置数据库信息
DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql', # 使用 MySQL 驱动'NAME': 'my_db_01', # 数据库名'USER': 'your_mysql_username', # MySQL 用户名'PASSWORD': 'your_mysql_password', # MySQL 密码'HOST': 'localhost', # 数据库主机,通常是 localhost'PORT': '3306', # MySQL 默认端口}
}
步骤2:定义users表的类型; (方法一)
- Django中可以操作多个应用,
- 打开myapp/models.py,并定义User模型
from django.db import modelsclass User(models.Model):id = models.AutoField(primary_key=True) # 自增主键username = models.CharField(max_length=45) # 用户名password = models.CharField(max_length=45) # 密码status = models.BooleanField(default=True) # 状态 (映射为 TINYINT(1))class Meta:db_table = 'users' # 映射到 MySQL 中的 users 表managed = False # 告诉 Django 不去管理(创建/迁移)此表
步骤3:编写视图获取所有用户信息;
- 在 myapp/views.py 中编写一个视图函数,用于获取 users 表的所有记录
from django.http import JsonResponse
from .models import Userdef get_all_users(request):try:# 查询所有用户users = User.objects.all().values('id', 'username', 'password', 'status')users_list = list(users) # 转换为列表以便返回 JSON 响应return JsonResponse({'status': 'success', 'data': users_list}, safe=False)except Exception as e:return JsonResponse({'status': 'error', 'message': str(e)}, status=500)
步骤4:配置URL路由
- 在myapp/urls.py 中添加路由,让接口与视图函数关联;
from django.urls import path
from .views import get_all_usersurlpatterns = [path('users/', get_all_users, name='get_all_users'), # 绑定接口到视图函数
]
- 然后在主项目中的urls.py中包含myapp路由即可;
from django.urls import path
from .views import get_all_usersurlpatterns = [path('users/', get_all_users, name='get_all_users'), # 绑定接口到视图函数
]
步骤5:测试接口(浏览器/postman都可)
操作数据库的时候为啥没有直接书写SQL代码?
- 使用了Django ORM(对象关系映射,Object-Relational Mapping),它是 Django 提供的一个强大的抽象工具,用于代替直接写 SQL 语句来操作数据库。
Django ORM的工作原理;
- 模型与数据库表的映射;
- 在 models.py 中定义的 User 模型,对应的是数据库中的 users 表。
- **Django会根据模型自动生成SQL语句来增删改查数据库; **
- Django ORM 方法与 SQL 的关系
- 当你使用 ORM 的方法(如 User.objects.all())时,Django 会在内部转换成对应的 SQL 查询,并向数据库发送请求。你不需要手动书写 SQL,Django 会为你生成高效的 SQL 查询。
- 例如
users = User.objects.all().values('id', 'username', 'password', 'status')
# 相当于sql
SELECT id, username, password, status FROM users;
Django ORM的优势
- 提高开发效率:通过 Python 代码实现数据库操作,无需手动编写 SQL。
- 跨数据库兼容性:同一段代码可以在不同数据库(如 SQLite、MySQL、PostgreSQL)上运行,Django 自动生成对应数据库的 SQL。
- 安全性:Django ORM 内部会自动处理一些常见的安全问题,如 SQL 注入。
使用raw() 方法来执行自定义SQL;
方法1,
- 如果需要执行更复杂的SQL查询(联表查询、子查询), 可以使用raw()方法;
from django.db import connection
from .models import Userdef get_all_users_raw(request):with connection.cursor() as cursor:cursor.execute("SELECT id, username, password, status FROM users")rows = cursor.fetchall()users_list = [{'id': row[0], 'username': row[1], 'password': row[2], 'status': row[3]}for row in rows]return JsonResponse({'status': 'success', 'data': users_list})
方法2;使用raw()和ORM
- 可以结合ORM的raw()方法来直接执行SQL查询;即将SQL语句直接放到raw()中, 具体效果如下:
users = User.objects.raw("SELECT id, username, password, status FROM users")
for user in users:print(user.username)
相关文章:
从零创建一个 Django 项目
1. 准备环境 在开始之前,确保你的开发环境满足以下要求: 安装了 Python (推荐 3.8 或更高版本)。安装 pip 包管理工具。如果要使用 MySQL 或 PostgreSQL,确保对应的数据库已安装。 创建虚拟环境 在项目目录中创建并激活虚拟环境ÿ…...
Spring Boot 3.4新特性:RestClient和RestTemplate的重大更新详解
本文将深入探讨Spring Boot 3.4版本中关于RestClient和RestTemplate的重要更新。。 1. 背景介绍 在Spring生态系统中,HTTP客户端一直是一个重要的组件。从最早的RestTemplate,到WebClient,再到现在的RestClient,每一次演进都带来…...
ANSYS EMC Plus:谐振腔中的天线
概述 本博客说明了如何使用 EMA3D 和 MHARNESS 模拟工具来模拟腔内天线产生的电场。下面简要概述了完成模拟所需的步骤,视频链接中提供了完整的演示。 步骤1:定义模拟域 准备模拟的第一步是定义模拟域。该域应包含所有需要分析的几何图形。在此演示中…...
lv_ffmpeg学习及播放rtsp
lvgl8.3有ffmpeg支持 FFmpeg support typedef struct {lv_img_t img;lv_timer_t * timer;lv_img_dsc_t imgdsc;bool auto_restart;struct ffmpeg_context_s * ffmpeg_ctx; } lv_ffmpeg_player_t;typedef enum {LV_FFMPEG_PLAYER_CMD_START,LV_FFMPEG_PLAYER_CMD_STOP,LV_FFMP…...
Java前端基础—HTML
Java前端基础—HTML 目录 Java前端基础—HTML1.简介2.基础语法2.1HTML页面固定结构2.2标题标签2.3段落标签2.4换行标签2.5水平线标签2.6文本标签2.7图片标签2.8音频标签2.9视频标签2.10链接标签2.11列表标签2.12表格标签2.13表单标签2.14语义标签 1.简介 1.网页组成࿱…...
salesforce 控制 Experience Cloud 站点用户可以看到哪些用户
在 Salesforce 的 Experience Cloud 中,您可以通过多种方式控制站点用户(如社区用户)之间的可见性。这包括用户之间的信息可见性以及他们可以访问的其他用户数据。以下是几种方法和设置,用于实现对 Experience Cloud 站点用户可见…...
C语言实现尼科彻斯定理
1.题目: 2.分析 【1】怎么输出连续奇数:下面是输出m个连续奇数的代码 #include<stdio.h>int main(){int m,x;scanf("%d",&m);for(int i0;i<m:i){printf("%d",x);xx2;}return 0; } 【2】啥叫尼科彻斯定理?…...
【Ubuntu添加右键wine运行exe程序文件】
【前提】你在Ubuntu中安装了wine 【效果展示】右键在打开方式中显示用wine运行 以bilibli安装包为例,在B站安装包右键选择打开方式 省去了在终端中输入wine命令 【步骤】如何添加右键wine运行exe程序文件 新建一个文本文档 其中填入以下内容 [Desktop Entry]…...
7. Linux网络服务配置全面指南
本章目录: 引言7. 网络服务配置7.1 DNS服务器配置安装BIND配置区域文件创建区域文件测试与重启DNS服务示例图:DNS解析流程 7.2 Web服务器部署(Apache/Nginx)Apache与Nginx的选择安装Apache示例:部署静态网站安装Nginx配…...
深入探讨 Nginx 性能优化:从基础到高级的最佳实践
目录 引言Nginx 性能优化的意义Nginx 性能优化的主要方向系统层面的优化 4.1 优化操作系统的文件描述符4.2 调整 TCP 参数4.3 使用高效的磁盘 I/O 调度器 Nginx 配置优化 5.1 优化 worker 进程和连接数5.2 使用异步和非阻塞 I/O 模式5.3 配置 Gzip 压缩5.4 开启缓存和缓存控制…...
纯 HTML+CSS+JS 实现一个炫酷的圣诞树动画特效
纯 HTMLCSSJS 实现一个炫酷的圣诞树动画特效 前言 圣诞节快到了,今天给大家带来一个简单但是效果不错的圣诞树动画特效。这个特效完全使用原生 HTML、CSS 和 JavaScript 实现,包含闪烁的星星、随机彩灯等元素,非常适合节日气氛!…...
Python使用requests_html库爬取掌阅书籍(附完整源码及使用说明)
教程概述 本教程先是幽络源初步教学分析掌阅书籍的网络结构,最后提供完整的爬取源码与使用说明,并展示结果,切记勿将本教程内容肆意非法使用。 原文链接:Python使用requests_html库爬取掌阅书籍(附完整源码及使用说明…...
Linux网络——UDP的运用
Linux网络——UDP的运用 文章目录 Linux网络——UDP的运用一、引入二、服务端实现2.1 创建socket套接字2.2 指定网络接口并bind2.3 接收数据并处理2.4 整体代码2.5 IP的绑定的细节 三、用户端实现3.1 创建套接字3.2 指定网络接口3.3 发生数据并接收3.4 绑定问题 四、代码五、UD…...
axios
文章目录 [TOC](文章目录) 一、axios的基本使用axios请求1、引用axios,并发送请求axios发送请求的简化写法2、接受响应数据,并对响应的数据进行处理 三、axios拦截器(instance)1、请求拦截2、响应拦截 axios拦截器、vue中的路由守卫、servlet…...
MacOS下TestHubo安装配置指南
TestHubo是一款开源免费的测试管理工具, 下面介绍MacOS私有部署的安装与配置。TestHubo 私有部署版本更适合有严格数据安全要求的企业,支持在本地或专属服务器上运行,以实现对数据和系统的完全控制。 1、Mac 服务端安装 Mac安装包下载地址&a…...
vue2/3,Spring Boot以及生产环境跨域解决方案
vue2和vue3跨域解决方案 Vue 2 (基于 Webpack) 的跨域解决方案 1. 创建或编辑 vue.config.js 文件 Vue CLI为Webpack项目提供了简单的代理配置方式。你可以通过创建或编辑项目的根目录下的 vue.config.js 文件来设置开发服务器的代理规则: // vue.config.js mod…...
TestMAX/DFT Compiler:时序单元的类型、连接顺序和后DFT优化
相关阅读 TestMAX/DFT Compilerhttps://blog.csdn.net/weixin_45791458/category_12865937.html?spm1001.2014.3001.5482 时序单元的状态 未映射的时序单元(Unmapped Sequential Cell) 在Design Compiler读取了一个RTL设计后,Design Compiler内置的HDL Compiler工…...
Elasticsearch:analyzer(分析器)
一、概述 可用于将字符串字段转换为单独的术语: 添加到倒排索引中,以便文档可搜索。级查询(如 生成搜索词的 match查询)使用。 分析器分为内置分析器和自定义的分析器,它们都是由若干个字符过滤器(chara…...
蓝桥杯——异或森林
问题描述 在一个神秘的世界中,存在着一个称为"异或森林"的地方。异或森林中的每个树木都拥有独特的力量。肖恩进入了这片森林,他得到了一个任务:找出数组中满足条件的连续子数组,使得连续子数组中所有元素异或运算结果…...
第一个C++程序 - Hello World, 编译与运行
引言 编写并运行你的第一个 C 程序是学习这门语言的第一步。通过这个简单的例子,你将了解如何创建、编译和运行一个基本的 C 程序。本文将详细介绍每个步骤,并确保初学者能够顺利上手。 一、编写 "Hello World" 程序 1. 创建源代码文件 首先…...
学习threejs,PerspectiveCamera透视相机和OrthographicCamera正交相机对比
👨⚕️ 主页: gis分享者 👨⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言1.1 ☘️THREE.PerspectiveCamera透…...
测试 - 4 ( 9000 字详解 )
一:性能测试 1.1 什么是性能测试 性能测试和功能测试虽然都在系统测试阶段进行,但两者有本质区别。功能测试主要关注系统“能否完成特定功能”,例如一辆车是否具备四个轮子、方向盘、挡风玻璃,以及是否能够正常行驶。而性能测试…...
从 Coding (Jenkinsfile) 到 Docker:全流程自动化部署 Spring Boot 实战指南(简化篇)
前言 本文记录使用 Coding (以 Jenkinsfile 为核心) 和 Docker 部署 Springboot 项目的过程,分享设置细节和一些注意问题。 1. 配置服务器环境 在实施此过程前,确保服务器已配置好 Docker、MySQL 和 Redis,可参考下列链接进行操作࿱…...
NIPS2014 | GAN: 生成对抗网络
Generative Adversarial Nets 摘要-Abstract引言-Introduction相关工作-Related Work对抗网络-Adversarial Nets理论结果-Theoretical Results实验-Experiments优势和不足-Advantages and disadvantages缺点优点 结论及未来工作-Conclusions and future work研究总结未来研究方…...
WebGPU入门初识
什么是 WebGPU? WebGPU 是一种现代图形 API,旨在取代 WebGL,提供更高性能和更灵活的 GPU 加速能力。它基于 Vulkan、Metal 和 Direct3D 12,为 Web 开发者带来了类似于原生图形 API 的性能和控制力。 与 WebGL 不同,Web…...
Go语言基础语法
文章目录 Go语言基础语法一、引言二、基础语法1、变量声明与作用域1.1、全局变量1.2、局部变量1.3、块作用域 2、基本数据类型3、控制流程3.1、条件语句3.2、循环语句 4、函数5、并发编程 三、使用示例四、并发编程示例五、变量作用域详解六、总结 Go语言基础语法 一、引言 G…...
易基因: BS+ChIP-seq揭示DNA甲基化调控非编码RNA(VIM-AS1)抑制肿瘤侵袭性|Exp Mol Med
大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。 肝细胞癌(hepatocellular carcinoma,HCC)早期复发仍然是一个具有挑战性的领域,其中涉及的机制尚未完全被理解。尽管微血管侵犯(…...
layui动态拼接生成下拉框验证必填项失效问题
利用 jQuery 动态拼接下拉框时,lay-verify"required" 失效了,有以下几种原因。 1. <form></form>标签 加入 layui 类,class"layui-form" 。提交按钮上加自动提交,lay-submit ""; 。需…...
Speckly:基于Speckle文档的RAG智能问答机器人
前言 Speckly 是一个基于 检索增强生成 (RAG) 技术的智能问答机器人,它能像一位经验丰富的工程师,理解你的问题,并从 Speckle 文档中精准地找到答案。更厉害的是,它甚至可以帮你生成代码片段!🚀 本文将详…...
NodeRed使用心得,实现增删改查等
使用场景介绍 在VUE中使用nodeRed实现对节点的 增删改查等功能,且储存成功之后下点击时启动对应流程 安装与配置 1.安装NodeRed npm install -g --unsafe-perm node-red 安装完成后,你可以通过运行以下命令来启动Node-RED node-red-start2. 配置文件 N…...
万物皆有解法(序)
万物皆有解法(序) 《万物有解》一:解的存在 解:可做解释解答,此文引申为原因。可做解除、解围,此文引申为解法、方法。 先有事物存于世-what,再有原因为何存-why,再有解法如何除去…...
OpenCV相机标定与3D重建(37)计算两幅图像之间单应性矩阵(Homography Matrix)的函数findHomography()的使用
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 找到两个平面之间的透视变换。 cv::findHomography 是 OpenCV 库中用于计算两幅图像之间单应性矩阵(Homography Matrix)的…...
从虚拟到现实:AI与AR/VR技术如何改变体验经济?
引言:体验经济的崛起 在当今消费环境中,产品与服务早已不再是市场竞争的唯一焦点,能够提供深刻感知和独特体验的品牌,往往更能赢得消费者的青睐。这种转变标志着体验经济的崛起。体验经济不仅仅是简单的买卖行为,而是通…...
Linux系统之stat命令的基本使用
Linux系统之stat命令的基本使用 一、stat命令 介绍二、stat命令帮助2.1 查询帮助信息2.2 stat命令的帮助解释 三、stat命令的基本使用3.1 查询文件信息3.2 查看文件系统状态3.3 使用格式化输出3.4 以简洁形式打印信息 四、注意事项 一、stat命令 介绍 stat 命令用于显示文件或文…...
c++ 命名空间
目录 目录 目录 namespace的定义 代码演示 先使用全局域,再使用namespace定义出的域 命名空间中可以定义变量/函数/类型等 命名空间可以嵌套 namespace的使用 指定命名空间访问 using将命名空间中某个成员展开 展开命名空间中全部成员 在c中,由…...
【实验记录】动手实现一个简单的神经网络实验(一)
最近上了“神经网络与深度学习”这门课,有一个自己动手实现调整神经网络模型的实验感觉还挺有记录意义,可以帮我巩固之前学习到的理论知识,所以就打算记录一下。 实验大概是使用LeNet(卷积神经网络)对MINIST数据集做图…...
【2024年最新】BilibiliB站视频动态评论爬虫
废话不多说,直接先放git仓库:GitHub - linyuye/Bilibili_crawler: bilibili爬虫,基于selenium获取oid与cookie,request获取api内容 〇:概念简述 oid:视频/动态的uuid,b站对于发布内容的通用唯…...
清空DNS 缓存
如果遇到修改了host文件,但是IP和域名的映射有问题的情况,可以尝试刷新DNS缓存。 ipconfig/flushdns win建加R建,然后输入cmd,然后回车 然后回车,或者点击确定按钮。 出现如下所示标识清空DNS 缓存成功。...
东土智能交通服务器助力北京市车路云一体化建设
背景及意义 北京高级别自动驾驶示范区自2020年启动建设,至今已经发展建设到3.0阶段,通州区作为3.0阶段扩建的重点区域之一,扩区建设范围共计约175平方公里,涉及18个属地街镇,涵盖580个路口。 作为北京市车路云一体化…...
HarmonyOS NEXT 实战之元服务:静态案例效果---妙语集语
背景: 前几篇学习了元服务,后面几期就让我们开发简单的元服务吧,里面丰富的内容大家自己加,本期案例 仅供参考 先上本期效果图 ,里面图片自行替换 效果图1完整代码案例如下: import { authentication } …...
python基础项目
1.联系人案例 # 导入的模块 from input_util import * import re import csv# 定义一个变量保存文件读取的信息 users {}# 封装读取文件的函数 def reader_file(path_name: str ./python基础/2024-11-15python基础项目/data/a.csv) -> None:try:with open(path_name, enco…...
mysql返回N/A
在写统计图的接口,sql查询一直无数据,给的默认值也没有实现: SELECTifnull( unit.num, 0 ) riskUnitCount,ifnull( EVENT.num, 0 ) riskEventCount,ifnull( measure.num, 0 ) riskMeasureCount FROMtb_companyLEFT JOIN (SELECTrisk.qyid,co…...
C++---------迭代策略与迭代器
一、迭代策略与迭代器 迭代器的概念 迭代器是一种对象,它提供了一种统一的方式来访问容器(如数组、向量、列表等)中的元素,而不暴露容器的内部结构。迭代器的行为类似于指针,可以用于遍历容器中的元素、修改元素以及…...
深入解析 Oracle 的聚合函数 ROLLUP
目录 深入解析 Oracle 的聚合函数 ROLLUP一、ROLLUP 函数概述二、ROLLUP 函数语法三、ROLLUP 实例详解(一)基础分组聚合(二)引入 ROLLUP 函数(三)ROLLUP 与 NULL 值(四)多列复杂分组…...
kipotix4靶机实战
信息收集 1.判断靶机ip 原理:开靶机之前nmap扫一次网段,再开靶机之后扫一次,查看多出来的ip就是靶机ip ip192.168.98.1742.判断端口服务,系统版本 a.确定端口 b.-p指定端口进一步收集 c.信息筛选 1.端口:22,80,139,…...
Java中处理if-else的几种高级方法
前言 在我看来多写几个if-else没啥大不了的,但是就是看起来没啥逼格,领导嫌弃。我根据开发的经历写几个不同的替代方法 一、枚举法替代 我先前写了一篇文章,可以去看看。 通过枚举替换if-else语句的解决方案_枚举代替if else c语言-CSDN博…...
LaTeX 是一种基于标记的排版系统,广泛用于创建高质量的文档,特别是在需要复杂数学公式、表格、文献引用等的场景中
LaTeX 是一种基于标记的排版系统,广泛用于创建高质量的文档,特别是在需要复杂数学公式、表格、文献引用等的场景中。以下是关于 LaTeX 的详细解释: 1. LaTeX 的基本概念 本质:LaTeX 是基于 TeX 的排版系统,提供了更高…...
Go入门篇:(一)golang的安装和编辑工具安装
一、前言 最近我有幸接触到Go语言,深入了解后,发现go语言确实有很多让人惊叹的地方。作为一个有着多年Java编程经验的程序员,我深深地被它所吸引,并且决定记录下我的学习之路,以便与大家分享我的经验和感悟。 与Java不同,Go语言的语法和运行效率都非常高,特别是对于并…...
【10】Selenium+Python UI自动化测试 邮件发送测试报告(某积载系统实例-04)
测试报告需要发送给相关人员,但每次都要在report目录下去复制太麻烦,可以使用邮件模块自动将生成的报告发送给相关人员 1、 新增utils文件夹,用于存放工具文件 在utils下新增sendmail.py文件 代码 sendmail.py import smtplib from email.…...
Playwright爬虫xpath获取技巧
示例一 <button class"MuiButtonBase-root MuiButton-root MuiLoadingButton-root MuiButton-contained MuiButton-containedPrimary MuiButton-sizeLarge MuiButton-containedSizeLarge MuiButton-colorPrimary MuiButton-fullWidth MuiButton-root MuiLoadingButton…...