《Python实战进阶》专栏 No.3:Django 项目结构解析与入门DEMO
《Python实战进阶》专栏 第3集:Django 项目结构解析与入门DEMO
在本集中,我们将深入探讨 Django 的项目结构,并实际配置并运行一个入门DEMO博客网站,帮助你在 Web 开发中更高效地使用 Django。Django 是一个功能强大的 Python Web 框架,它提供了开箱即用的工具和清晰的项目结构,但要真正掌握它,需要理解其内部机制并遵循良好的开发习惯。
本文将涵盖以下内容:
- Django 项目结构解析
- 项目结构的最佳实践
- 实际代码示例:构建一个简单的博客系统
- 总结与建议
一、Django 项目结构解析
当你运行 django-admin startproject myproject
创建一个新的 Django 项目时,Django 会生成一个默认的项目结构。以下是典型的 Django 项目结构:
myproject/
├── manage.py
├── myproject/
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
└── app1/├── migrations/│ └── __init__.py├── admin.py├── apps.py├── models.py├── tests.py├── views.py└── __init__.py
1. 核心文件说明
- manage.py: 项目的命令行工具,用于运行服务器、迁移数据库等。
- settings.py: 项目的配置文件,包含数据库设置、应用注册、中间件等。
- urls.py: 定义项目的 URL 路由规则。
- wsgi.py: 用于部署 WSGI 应用的入口文件。
- app1/: 这是一个应用目录,Django 鼓励将功能模块化为多个应用。
2. 应用结构说明
每个 Django 应用通常包含以下文件:
- models.py: 定义数据模型。
- views.py: 处理请求并返回响应。
- admin.py: 配置 Django 管理后台。
- tests.py: 编写单元测试。
- migrations/: 数据库迁移文件。
二、项目结构的最佳实践
项目最终总体结构图如下:
1. 模块化设计
Django 提倡“可插拔的应用”理念。每个应用应该专注于一个特定的功能模块,例如用户管理、博客文章、评论系统等。这样可以提高代码的复用性和可维护性。
建议:
- 将通用功能(如用户认证、日志记录)封装成独立的应用。
- 使用
INSTALLED_APPS
注册所有应用。
2. 配置分离
在实际项目中,开发环境和生产环境的配置可能不同。可以通过以下方式实现配置分离:
- 创建
settings/
目录,分为base.py
,dev.py
,prod.py
。 - 在
manage.py
和wsgi.py
中动态加载配置。
# manage.py
import os
import sysdef main():os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings.dev')try:from django.core.management import execute_from_command_lineexcept ImportError as exc:raise ImportError("Couldn't import Django. Are you sure it's installed?") from excexecute_from_command_line(sys.argv)if __name__ == '__main__':main()
3. 遵循 MVC 模式
虽然 Django 更像是 MTV(Model-Template-View),但核心思想是一致的:
- Model: 数据层,负责与数据库交互。
- Template: 视图层,负责渲染 HTML。
- View: 控制层,处理业务逻辑。
4. 使用 Django REST Framework (DRF)
如果你需要构建 API,推荐使用 DRF。它可以快速创建 RESTful 接口,并支持序列化、权限控制等功能。
三、实际代码示例:构建一个简单的博客系统
我们将通过一个简单的博客系统来演示 Django 的项目结构和最佳实践。
1. 创建项目和应用
pip install django
# 等待安装完成
pip show django
# 显示Django版本信息,我使用的是最新的 5.1.6版本
Name: Django
Version: 5.1.6
Summary: A high-level Python web framework that encourages rapid development and clean, pragmatic design.
Home-page:
Author:
Author-email: Django Software Foundation <foundation@djangoproject.com>
License: BSD-3-Clause
Location: D:\python_projects\django_demo\Lib\site-packages
Requires: asgiref, sqlparse, tzdata
Required-by:
# 新建一个Django项目,名字为 blog_project
django-admin startproject blog_project
cd blog_project
python manage.py startapp blog
2. 定义数据模型
在 blog/models.py
中定义博客文章模型:
from django.db import models
from django.utils import timezoneclass Post(models.Model):title = models.CharField(max_length=200)content = models.TextField()created_at = models.DateTimeField(default=timezone.now)updated_at = models.DateTimeField(auto_now=True)def __str__(self):return self.title
运行迁移命令以创建数据库表:
python manage.py makemigrations
python manage.py migrate
命令执行结果:
Operations to perform:Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:Applying contenttypes.0001_initial... OKApplying auth.0001_initial... OKApplying admin.0001_initial... OKApplying admin.0002_logentry_remove_auto_add... OKApplying admin.0003_logentry_add_action_flag_choices... OKApplying contenttypes.0002_remove_content_type_name... OKApplying auth.0002_alter_permission_name_max_length... OKApplying auth.0003_alter_user_email_max_length... OKApplying auth.0004_alter_user_username_opts... OKApplying auth.0005_alter_user_last_login_null... OKApplying auth.0006_require_contenttypes_0002... OKApplying auth.0007_alter_validators_add_error_messages... OKApplying auth.0008_alter_user_username_max_length... OKApplying auth.0009_alter_user_last_name_max_length... OKApplying auth.0010_alter_group_name_max_length... OKApplying auth.0011_update_proxy_permissions... OKApplying auth.0012_alter_user_first_name_max_length... OKApplying sessions.0001_initial... OK
3. 创建视图和模板
在 blog/views.py
中定义视图函数:
from django.shortcuts import render, get_object_or_404
from .models import Postdef post_list(request):posts = Post.objects.all().order_by('-created_at')return render(request, 'blog/post_list.html', {'posts': posts})def post_detail(request, pk):post = get_object_or_404(Post, pk=pk)return render(request, 'blog/post_detail.html', {'post': post})# 示例数据,创建一条博客
Post.objects.create(title='新文章标题', content='这是文章的内容')# 示例数据,创建一条博客
Post.objects.create(title='今日日记', content='今天我创建了第一个django项目。')
在 blog_project/blog/templates/blog/
目录下创建模板文件 post_list.html
和 post_detail.html
:
<!-- post_list.html -->
<h1>Blog Posts</h1>
<ul>{% for post in posts %}<li><a href="{% url 'post_detail' post.pk %}">{{ post.title }}</a></li>{% endfor %}
</ul><!-- post_detail.html -->
<h1>{{ post.title }}</h1>
<p>{{ post.content }}</p>
<p>Created at: {{ post.created_at }}</p>
4. 配置 URL 路由
在 blog/urls.py
中定义路由:
from django.urls import path
from . import viewsurlpatterns = [path('', views.post_list, name='post_list'),path('<int:pk>/', views.post_detail, name='post_detail'),
]
在主项目的 urls.py
中包含应用的路由:
from django.contrib import admin
from django.urls import path, includeurlpatterns = [path('admin/', admin.site.urls),path('blog/', include('blog.urls')),
]
在主项目文件夹 blog_project 下面的 settings.py 配置文件中注册APP和路由:
- 注册一行 ‘blog’,
# Application definitionINSTALLED_APPS = ["django.contrib.admin","django.contrib.auth","django.contrib.contenttypes","django.contrib.sessions","django.contrib.messages","django.contrib.staticfiles",'blog',
]
- 配置 templates 地址
TEMPLATES = [{"BACKEND": "django.template.backends.django.DjangoTemplates","DIRS": [BASE_DIR / 'templates'],# 如果使用项目根目录的 templates 文件夹"APP_DIRS": True,"OPTIONS": {"context_processors": ["django.template.context_processors.debug","django.template.context_processors.request","django.contrib.auth.context_processors.auth","django.contrib.messages.context_processors.messages",],},},
]
再次运行迁移命令以更新数据库表:
python manage.py makemigrations
python manage.py migrate
5. 启动服务器
运行开发服务器并访问博客系统:
python manage.py runserver
打开浏览器访问 http://127.0.0.1:8000/blog/
,即可看到博客列表。
要增加博客内容,您可以通过以下几种方式来丰富您的博客:
如果您使用的是 Django 的模型来存储博客文章,您可以通过 Django 管理后台添加更多内容。
- 使用 Django 管理后台
- 创建超级用户:
如果您还没有创建超级用户,可以在项目根目录下运行以下命令:
python manage.py createsuperuser
按照提示输入用户名、电子邮件和密码。
- 在 admin.py 中注册模型
# blog/admin.py
from django.contrib import admin
from .models import Post# 注册 Post 模型
admin.site.register(Post)
- 访问管理后台:
启动 Django 服务器后,访问 http://localhost:8000/admin/,使用您刚刚创建的超级用户登录。
- 添加博客文章:
在管理后台中,您应该能看到 Blog 应用下的 Posts(或您定义的模型名称)。点击进入后,您可以添加新的博客文章,输入标题、内容等信息。
四、总结与建议
通过本集的学习,你应该对 Django 的项目结构有了更深入的理解,可以发现,由于出色的封装,Django成为一个非常容易上手而且功能强大的CMS,是开发个人博客和网站的利器。 以下是一些额外的建议:
- 学习 Django REST Framework:如果需要构建 API,请务必掌握 DRF。
- 编写单元测试:确保代码的可靠性。
- 使用 Docker 部署:简化开发和部署流程。
- 关注性能优化:例如缓存、数据库索引等。
希望这篇文章对你有所帮助!如果你有任何问题或想法,欢迎在评论区留言讨论。
下集预告:第4集将聚焦于 GraphQL 与 RESTful API 对比与实现 。敬请期待!
相关文章:
《Python实战进阶》专栏 No.3:Django 项目结构解析与入门DEMO
《Python实战进阶》专栏 第3集:Django 项目结构解析与入门DEMO 在本集中,我们将深入探讨 Django 的项目结构,并实际配置并运行一个入门DEMO博客网站,帮助你在 Web 开发中更高效地使用 Django。Django 是一个功能强大的 Python Web…...
基于WebGIS技术的校园地图导航系统架构与核心功能设计
本文专为IT技术人员、地理信息系统(GIS)开发者、智慧校园解决方案架构师及相关领域的专业人士撰写。本文提出了一套基于WebGIS技术的校园地图导航系统构建与优化方案,旨在为用户提供高效、智能、个性化的导航体验。如需获取校园地图导航系统技…...
开源且免费的CMS系统有哪几个可以放心用?
既开源又免费的两全其美的CMS不多见,不过总会存在一些个例,给用户们带来更具有建设性的选择,以下是一些开源免费且值得信赖的CMS系统,可以根据你的需求选择合适的平台: 1、WordPress ▷ 特点:全球最流行的…...
逻辑架构与软件架构在PREEvision中的设计关系
1 Introduction 在如今汽车电子系统的开发过程中,系统架构设计是至关重要的环节。无论是汽车控制系统、信息娱乐系统,还是电动驱动系统,架构设计都决定了整个系统的功能、性能以及后期的可维护性和可扩展性。 在往期文章中,我们…...
DeepSeek vs ChatGPT:AI 领域的华山论剑,谁主沉浮?
一、引言 在当今科技飞速发展的时代,人工智能(AI)已然成为推动各领域变革的核心力量。而在人工智能的众多分支中,自然语言处理(NLP)因其与人类日常交流和信息处理的紧密联系,成为了最受瞩目的领…...
现场可以通过手机或者pad实时拍照上传到大屏幕的照片墙现场大屏电子照片墙功能
现场可以通过手机或者pad实时拍照上传到大屏幕的照片墙现场大屏电子照片墙功能,每个人都可以通过手机实时拍照上传到大屏幕上,同时还可以发布留言内容,屏幕上会同步滚动播放展示所有人的照片和留言。相比校传统的照片直播功能更加灵活方便,而…...
AF3 _process_single_hit 函数解读
AlphaFold3 中templates模块的_process_single_hit函数处理单个 HHsearch 比对的模板 TemplateHit,并从相应的 mmCIF 文件中提取模板特征,返回包含模板位置信息、比对质量等特征的 SingleHitResult 对象。它是 AlphaFold3 在模板模块中生成模板特征结构输入的重要步骤。 源代…...
go 模块管理
go version 查看版本 go version go1.21.12 windows/amd64 需要保证:go的版本升级为1.11以上,go mod依赖的最底版本 go env 查看go的环境变量 go env 开启go mod # 标识开启go的模块管理 set GO111MODULE=on GO111MODULE有三个值:off, on和auto(默认值)。 GO111M…...
23种设计模式 - 命令模式
模式定义 命令模式(Command Pattern)是一种行为型设计模式,它将请求封装为独立对象,使请求的发送者与接收者解耦。通过将操作抽象为命令对象,支持命令的存储、传递、撤销和重做,增强系统的灵活性和可扩展性…...
php-fpm
摘要 php-fpm(fastcgi process manager)是PHP 的FastCGI管理器,管理PHP的FastCGI进程,提升PHP应用的性能和稳定性 php-fpm是一个高性能的php FastCGI管理器,提供了更好的php进程管理方式,可以有效的控制内存和进程,支…...
Visual Studio 2022配置网址参考
代码格式化和清理冗余代码选项的配置: 代码样式选项和代码清理 - Visual Studio (Windows) | Microsoft Learn 调试时传递参数: 调试时传递命令行参数(C) - Visual Studio (Windows) | Microsoft Learn...
【含文档+PPT+源码】基于Django的新闻推荐系统的设计与实现
项目介绍 本课程演示的是一款基于Django的新闻推荐系统的设计与实现,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Python学习者。 1.包含:项目源码、项目文档、数据库脚本、软件工具等所有资料 2.带你从零开始部署运行本套系统 3.…...
2025年02月21日Github流行趋势
项目名称:source-sdk-2013 项目地址url:https://github.com/ValveSoftware/source-sdk-2013项目语言:C历史star数:7343今日star数:929项目维护者:JoeLudwig, jorgenpt, narendraumate, sortie, alanedwarde…...
后端开发:开启技术世界的新大门
在互联网的广阔天地中,后端开发宛如一座大厦的基石,虽不直接与用户 “面对面” 交流,却默默地支撑着整个互联网产品的稳定运行。它是服务器端编程的核心领域,负责处理数据、执行业务逻辑以及与数据库和其他后端服务进行交互。在当…...
Apache Doris 实现毫秒级查询响应
1. 引言 1.1 数据分析的重要性 随着大数据时代的到来,企业对实时数据分析的需求日益增长。快速、准确地获取数据洞察成为企业在竞争中脱颖而出的关键。传统的数据库系统在处理大规模数据时往往面临性能瓶颈,难以满足实时分析的需求。例如,一个电商公司需要实时监控销售数据…...
【Python项目】基于Python的语音数据及标注核对审核系统
【Python项目】基于Python的语音数据及标注核对审核系统 技术简介: 采用Python技术、MySQL数据库、Django框架等实现。 系统简介: 语音数据及标注核对审核系统是一个基于B/S架构的语音数据处理平台,旨在通过自动化的方式对语音数据进行标…...
路由基本配置
学习目标 • 根据拓扑图进行网络布线。 • 清除启动配置并将路由器重新加载为默认状态。 • 在路由器上执行基本配置任务。 • 配置并激活以太网接口。 • 测试并检验配置。 • 思考网络实施方案并整理成文档。 任务 1:网络布线 使用适当的电缆类型连接网络设备。…...
从WebRTC到EasyRTC:嵌入式适配的视频通话SDK实现低延迟、高稳定性音视频通信
WebRTC最初是为浏览器之间的实时通信设计的,其资源需求和复杂性可能对嵌入式设备的性能提出较高要求,因此在嵌入式系统中应用时面临一些挑战: 1)资源消耗较高 CPU和内存占用:WebRTC是一个功能强大的实时通信框架&…...
【Blender】二、建模篇--05,阵列修改器与晶格形变
阵列修改器是bender里面一个比较常用的修改器,所以我们单独开口来讲,我们会先从几片树叶出发,然后我们用阵列修改器把这几片树叶变成这样的造型和这样的造型。这两个造型分别就代表着阵列修改器最常用的两种偏移方法,我们现在就开始我们先来做几个树叶。 1.树叶建模 首先…...
Python爬虫实战:获取12306特定日期、城市车票信息,并做数据分析以供出行参考
注意:以下内容仅供技术研究,请遵守目标网站的robots.txt规定,控制请求频率避免对目标服务器造成过大压力! 1. 核心思路 需求:获取明天(2025 年 2 月 21 日)从北京到上海的车次、票价、出发时间、硬卧二等卧信息,并保存到 CSV 文件,然后分析出价格最低的 10 趟车次。目…...
C++ 设计模式-策略模式
支付策略 #include <iostream> #include <memory> #include <unordered_map> #include <vector> #include <ctime>// 基础策略接口 class PaymentStrategy { public:virtual ~PaymentStrategy() default;virtual std::string name() const 0;…...
数据结构:哈希表(unordered_map)
unordered_map 是 C 标准库中的一种哈希表实现,它提供了基于键值对(key-value)的存储,提供了常数时间复杂度的查找、插入和删除键值对的操作。 初始化代码示例: #include <unordered_map> using namespace std…...
鸿蒙-自定义布局-实现一个可限制行数的-Flex
文章目录 前提onMeasureSizeselfLayoutInfoconstraintchildren onPlaceChildren 实现思路属性准备测量组件布局小结 刷新 千呼万唤始出来的自定义布局功能终于可以用了,这就给了我们更多自由发挥创造的空间,不再局限于使用已有组件做组合。当然ÿ…...
安装可视化jar包部署平台JarManage
一、下载 下载地址:JarManage 发行版 - Gitee.com 🚒 下载 最新发行版 下载zip的里面linux和windows版本都有 二、运行 上传到服务器,解压进入目录 🚚 执行java -jar jarmanage-depoly.jar 命令运行 java -jar jarmanage-dep…...
1、Window Android 13模拟器 将编译的映像文件导入Android Studio
1、环境准备 编译环境:Ubuntu-18.04.5编译版本:android13-release下载地址:清华大学开源软件镜像站AOSP # 下载repo # 同步代码:repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android13-r…...
力扣27. 移除元素(快慢指针)
Problem: 27. 移除元素 文章目录 题目描述思路Code 题目描述 思路 定义快慢指针均指向数组起始位置,当fast指针指向的元素不等于val时将fast指针指向的元素赋值给slow并让slow指针向前移动,fast指针一直向前移动 时间复杂度: O ( n ) O(n) O(n); 空间复杂…...
Unity学习part4
1、ui界面的基础使用 ui可以在2d和矩形工具界面下操作,更方便,画布与游戏窗口的比例一般默认相同 如图所示,图片在画布上显示的位置和在游戏窗口上显示的位置是相同的 渲染模式:屏幕空间--覆盖,指画布覆盖在游戏物体渲…...
前端面试之Flex布局:核心机制与高频考点全解析
目录 引言:弹性布局的降维打击 一、Flex布局的本质认知 1. 两大核心维度 2. 容器与项目的权力边界 二、容器属性深度剖析 1. 主轴控制三剑客 2. 交叉轴对齐黑科技 三、项目属性关键要点 1. flex复合属性解密 2. 项目排序魔法 四、六大高频面试场景 1. 经…...
关系数据理论
一、函数依赖 若t1(X)t2(X),必有t1(Y)t2(Y),那么我们称属性组X函数确定属性组Y,或者说Y函数依赖于X。记为X->Y,其中X叫决定因素,Y叫依赖因素。 平凡函数依赖与非平凡函数依赖: 二、1-BCNF 评价关系模式“好坏”的理论标准就…...
低代码与开发框架的一些整合[2]
1.分析的项目资源说明 经过近期的的不断分析与运行对比,最终把注意力集中在了以下几个框架: 01.dibootdiboot.diboot: 写的更少, 性能更好 -> 为开发人员打造的低代码开发平台。Mybatis-plus关联查询,关联无SQL,性能高10倍&a…...
网络空间安全(1)web应用程序的发展历程
前言 Web应用程序的发展历程是一部技术创新与社会变革交织的长卷,从简单的文档共享系统到如今复杂、交互式、数据驱动的平台,经历了多个重要阶段。 一、起源与初期发展(1989-1995年) Web的诞生: 1989年,欧洲…...
Android 之 AIDL for HAL
Android AIDL for HAL 的作用与实现 作用: Android AIDL for HAL(Android Interface Definition Language for Hardware Abstraction Layer)旨在统一 HAL 开发接口,替代 HIDL(Hardware Interface Definition Language…...
Python爬虫基础文件操作
文件操作 引言 爬虫爬取的一切内容都是在内存进行的,这样会有什么问题吗?如果一旦短电或着发生意外电脑关机了那么你的工作成果将瞬间消失。所以,我们还缺少数据在本地文件系统进行持久化的能力,简单的来说就是文件读写操作。文…...
OpenGauss MySQL兼容库迁移
OpenGauss 提供了从MySQL到OG的迁移工具,虽然安装在起来及其繁琐,也不怎么好用,不过我现在需要的是,从MySQL到OG的MySQL兼容库,可以理解成从MySQL到MySQL的迁移。 但是很不幸的是,OG的MySQL的兼容模式&…...
SOME/IP--协议英文原文讲解10
前言 SOME/IP协议越来越多的用于汽车电子行业中,关于协议详细完全的中文资料却没有,所以我将结合工作经验并对照英文原版协议做一系列的文章。基本分三大块: 1. SOME/IP协议讲解 2. SOME/IP-SD协议讲解 3. python/C举例调试讲解 4.2.2 Req…...
linux shell 当命令执行出现错误立即退出的方法
在 Linux 脚本中,如果你想在整个脚本执行完毕后检查是否有错误发生,可以通过以下几种方式实现: 1. 使用 $? 检查上一条命令的退出状态 每个命令执行后,Shell 会将其退出状态存储在特殊变量 $? 中。$? 的值为 0 表示成功&#…...
Moonshot AI 新突破:MoBA 为大语言模型长文本处理提效论文速读
前言 在自然语言处理领域,随着大语言模型(LLMs)不断拓展其阅读、理解和生成文本的能力,如何高效处理长文本成为一项关键挑战。近日,Moonshot AI Research 联合清华大学、浙江大学的研究人员提出了一种创新方法 —— 混…...
vue2 和 vue3 中 computer 计算属性的用法
Vue 2 中的 computed 在 Vue 2 中,计算属性是响应式的,并且基于 getter 进行缓存,只有依赖的响应式数据发生变化时才会重新计算。 基本用法 <template><div><p>原始消息:{{ message }}</p><p>反…...
Python爬虫入门到精通:从零开始的数据采集之旅
一、网络世界的"小蜘蛛":什么是爬虫? 想象一下,你是一只勤劳的小蜘蛛,每天在互联网这张巨大的网上爬来爬去。你不需要自己织网,只需要顺着别人织好的网络路径,把有价值的信息收集到自己的小篮子里。这就是爬虫最形象的比喻——一个自动化的信息采集程序。 Py…...
Python+Selenium+Pytest+POM自动化测试框架封装
🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 1、测试框架简介 1)测试框架的优点 代码复用率高,如果不使用框架的话,代码会显得很冗余。可以组装日志、报告、邮件等一些高…...
【JMeter使用-2】JMeter中Java Request采样器的使用指南
Apache JMeter 是一款功能强大的性能测试工具,支持多种协议和测试场景。除了内置的采样器(如HTTP请求、FTP请求等),JMeter还允许通过 Java Request采样器 调用自定义的Java代码,从而实现更复杂的测试逻辑。本文将详细介…...
IntelliJ IDEA中Maven配置全指南
一、环境准备与基础配置 1.1 Windows 环境下载并配置 Maven 见此篇博文:环境配置 1.2 IDEA配置步骤 打开设置面板:File → Settings → Build → Build Tools → Maven 关键配置项: Maven home path E:\apache-maven-3.9.9 (…...
自学Java-AI结合GUI开发一个石头迷阵的游戏
自学Java-AI结合GUI开发一个石头迷阵的游戏 准备环节1、创建石头迷阵的界面2、打乱顺序3、控制上下左右移动4、判断是否通关5、统计移动步骤,重启游戏6、拓展问题 准备环节 技术: 1、GUI界面编程 2、二维数组 3、程序流程控制 4、面向对象编程 ∙ \bulle…...
NetLogon 权限提升漏洞
参考文章:CVE-2020-1472NetLogon权限提升漏洞_cve-2020-1472复现 谢公子-CSDN博客 域控机器账户:WIN-0V0GAORDC17 域控 ip:192.168.72.163 域内攻击者机器 ip:192.168.72.158,host:WIN10-01 攻击者 kali…...
UDP和TCP
UDP协议 报文中应该包含 源IP,源端口号目的IP,目的端口号UDP/TCP 一个进程是否可以绑定多个端口号? 可以。多个进程是否可以绑定一个端口号? 不可以,因为端口号的主要作用是唯一标识一台计算机上的一个特定服务或应…...
2025 年 1 月公链行业研报:比特币主导地位强化
2025 年 1 月公链行业研报 作者:Stella L (stellafootprint.network) 数据来源:Footprint Analytics 公链研究页面 2025 年 1 月,加密市场总市值增长 7.2% 至 2.8 万亿美元,主要区块链平台表现分化。在新的监管政策与人工智能基…...
在低功耗MCU上实现人工智能和机器学习
作者:Silicon Labs 人工智能(AI)和机器学习(ML)技术不仅正在快速发展,还逐渐被创新性地应用于低功耗的微控制器(MCU)中,从而实现边缘AI/ML解决方案。这些MCU是许多嵌入式…...
新数据结构(11)——Java类的产生和反射
反射是获取类信息的一种能力 类信息包括属性、方法、构造器、父类、接口等 类信息的来源 来自类的加载器,这是从.class文件到内存中的java虚拟器(JVM)中间的一个阶段(如下图) 类的加载器里,用Field数组存…...
智能网络感知,打造极致流畅的鸿蒙原生版中国移动云盘图文体验
背景 中国移动云盘(原“和彩云网盘”)是中国移动重磅推出的安全、智能、不限速、移动用户免流的智能云盘,致力于成为5G时代用户个人与家庭的数字资产管理中心,是中国移动继语音、短信、流量后的“第四项基础服务”。 照片、音视…...
MySQL查看视图
《MySQL 9从入门到性能优化(视频教学版)(数据库技术丛书)》(王英英)【摘要 书评 试读】- 京东图书 (jd.com) MySQL9数据库技术_夏天又到了的博客-CSDN博客 查看视图是查看数据库中已存在的视图的定义。查看视图必须要有SHOW VIE…...