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

Django视图与URLs路由详解

        在Django Web框架中,视图(Views)和URLs路由(URL routing)是Web应用开发的核心概念。它们共同负责将用户的请求映射到相应的Python函数,并返回适当的响应。本篇博客将深入探讨Django的视图和URLs路由系统,提供实际的代码示例和操作指导,确保读者能够具体而实际地了解如何使用这些功能来构建健壮的Web应用。


目录

Django视图与URLs路由详解

一、理解Django视图

1. 创建基本视图

2. 使用通用视图

3. 视图高级用法

二、配置URLs路由

1. 基本路由配置

1.动态路由参数

2. 高级路由技术

1.使用视图类

2.使用视图集

3.嵌套路令

三、进阶:使用装饰器和混入

1. 装饰器

2. 混入

四、安全性和权限

1. 安全性防护

2. 权限控制

五、测试和调试

1. 单元测试和集成测试

2. 调试工具

3. 测试覆盖率

六、总结


Django视图与URLs路由详解

一、理解Django视图

        Django视图是一个Python函数,它接收一个Web请求并返回一个Web响应。视图函数处理从用户那里接收的数据,与模型交互(如果需要的话),并返回包含HTML内容的HttpResponse对象或其他类型的响应。

结合菜鸟观看:Django 视图 | 菜鸟教程

1. 创建基本视图

        创建视图的第一步是定义一个函数。这个函数需要接收几个特定的参数,通常是request对象加上任意数量的HTTP方法(如GET或POST)。

from django.http import HttpResponsedef hello(request):return HttpResponse("Hello, World!")

        在这个例子中,hello函数就是一个简单视图。当用户访问与该视图相关联的URL时,他们将看到消息"Hello, World!"。

2. 使用通用视图

        虽然可以手动编写视图来处理常见的Web请求,但Django提供了一系列的通用视图,这些视图可以帮助你快速实现标准的Web功能,例如创建、读取、更新和删除(CRUD)操作。

from django.views.generic import TemplateViewclass AboutView(TemplateView):template_name = 'about.html'

        这里,AboutView类使用TemplateView来呈现一个关于页面。你只需指定模板的名称即可。

3. 视图高级用法

        在更复杂的应用中,我们可能需要对视图进行更精细的控制,比如处理表单数据、文件上传或实现基于用户的权限控制。Django通过中间件和类视图提供了强大的定制能力。

from django.views.generic.edit import CreateView
from .models import CustomModelclass CustomCreateView(CreateView):model = CustomModelfields = ['field1', 'field2']

        在这里,CustomCreateView继承自CreateView,用于处理特定模型的创建操作。通过指定模型和字段,您可以控制哪些字段是用户可以编辑的。

二、配置URLs路由

        在Django中,URLs路由是通过在应用的urls.py文件中定义一组URL模式来实现的。这些模式决定了哪个视图应该响应哪个URL请求。让我们更深入地探讨如何配置和管理URLs路由,以确保您的应用不仅结构清晰,而且能高效地将请求引导到正确的视图。

        结合菜鸟观看:Django 路由 | 菜鸟教程 (runoob.com)

1. 基本路由配置

        每个URL模式都映射到一个视图函数上,这可以通过使用path()函数或re_path()(支持正则表达式)来完成。

from django.urls import path
from . import viewsurlpatterns = [path('hello/', views.hello, name='hello'),
]

        这里定义了一个路径hello/,它将被映射到views.hello视图。通过指定name参数,您可以在模板和其他地方使用这个名称来引用这个URL模式。

1.动态路由参数

        路由也可以接受动态参数,例如:

path('user/<str:username>/', views.profile, name='user_profile'),

        在这个例子中,<str:username>是一个字符串类型的动态字段,这个URL将会匹配像/user/johndoe/这样的URL,并将johndoe作为username参数传递给views.profile函数。

2. 高级路由技术

        对于更复杂的应用,可以使用Django的高级路由技术,包括使用视图类、视图集以及嵌套路由等。

1.使用视图类

        视图类为管理URL路由和视图逻辑提供了一种更加结构化的方式。

from django.urls import re_path
from .views import AboutViewurlpatterns = [re_path(r'^about/$', AboutView.as_view(), name='about'),
]

        这里,AboutView类的实例化由AboutView.as_view()完成,并通过re_path与URL模式关联。

2.使用视图集

        视图集(ViewSets)提供了一个API的集合,可以在多个URL中重复使用。

from rest_framework.routers import DefaultRouter
from .views import MyModelViewSetrouter = DefaultRouter()
router.register(r'models', MyModelViewSet)urlpatterns = router.urls

        此例中,我们使用了Django REST framework的路由器来自动为我们的MyModelViewSet生成CRUD相关的URL模式。

3.嵌套路令

        Django也支持嵌套路令,这对于建立具有层级结构的URL非常有帮助。假设您正在建立一个博客应用,可能会用到如下的嵌套路令配置:

from django.urls import include, path
from .views import blog_viewsurlpatterns = [path('blog/', include([path('post/', blog_views.post_list, name='post-list'),path('post/<int:year>/', blog_views.post_year, name='post-year'),path('post/new/', blog_views.post_new, name='post-new'),path('post/<int:pk>/edit/', blog_views.post_edit, name='post-edit'),path('post/<int:pk>/remove/', blog_views.post_remove, name='post-remove'),])),
]

        在此配置中,所有以/blog/开头的URL都会被include函数捕获,然后根据后续的URL片段路由到对应的视图。这种方法可以清晰地组织代码,使URLs的结构保持整洁。

        通过精心设计和应用这些路由配置,您可以确保您的Django应用不仅功能强大,而且易于理解和维护。

三、进阶:使用装饰器和混入

        在Django中,装饰器和混入都是用于扩展视图功能的机制。装饰器是一种在不修改函数代码的情况下增强函数功能的方式,通常用于视图函数以添加如权限校验、缓存控制等功能。而混入则通过包含特定的属性或方法来扩展类的功能,提供了组合继承的替代方法。

1. 装饰器

        装饰器是一种修改函数或类的行为的方法,无需直接更改其代码。在Django中,装饰器常用于为视图添加额外的功能,如检查用户是否已登录。

from django.contrib.auth.decorators import login_required@login_required
def profile(request):# 逻辑代码...

        这里,login_required装饰器确保只有登录的用户才能访问profile视图。

2. 混入

        混入是多重继承的一种形式,允许你组合多个类的行为。在Django中,混入常用于重用视图逻辑。

from django.contrib.auth.mixins import LoginRequiredMixin
from django.views.generic.detail import DetailViewclass ProfileView(LoginRequiredMixin, DetailView):model = Usertemplate_name = 'user_detail.html'

        在此例中,ProfileView通过继承LoginRequiredMixinDetailView获得了两种行为:需要用户登录和显示单个对象的详情。

四、安全性和权限

        在Web应用中,保证视图的安全是非常重要的。Django提供了一系列的工具和中间件来帮助开发者实现这一目标。

1. 安全性防护

        Django框架自带了一系列安全措施,包括防止跨站请求伪造(CSRF)、跨站脚本(XSS)以及其他Web安全威胁的保护。确保每个视图都使用这些措施是至关重要的。

from django.views.decorators.csrf import csrf_protect@csrf_protect
def my_view(request):# 逻辑代码...

        通过使用csrf_protect装饰器,您确保了视图受到CSRF保护。

2. 权限控制

        在许多应用中,某些视图应该只对具有特定权限的用户开放。Django的权限系统可以方便地实现这种需求。

from django.contrib.auth.decorators import permission_required@permission_required('myapp.change_my_model')
def edit_model(request):# 逻辑代码...

        使用permission_required装饰器,您限制了只有具有change_my_model权限的用户才能访问edit_model视图。

五、测试和调试

        在开发过程中,确保您的视图和路由正常工作是非常重要的。Django提供了几种工具来帮助您测试和调试代码,保证应用的稳定性和可靠性。

1. 单元测试和集成测试

        测试是确保代码按预期工作的关键。Django的测试框架允许您轻松地编写单元测试和集成测试来验证您的视图。

from django.test import TestCase, Client
from .views import helloclass HelloViewTest(TestCase):def test_hello(self):client = Client()response = client.get('/hello/')self.assertEqual(response.status_code, 200)self.assertEqual(response.content.decode(), "Hello, World!")

        这段代码演示了如何编写一个简单的测试案例来测试hello视图。使用Django的Client来模拟发送请求并检查响应。

2. 调试工具

        当开发中出现问题时,调试是定位和解决问题的关键步骤。Django内置了一些调试工具,帮助您跟踪问题和错误。

        在DEBUG模式下运行您的应用,可以获取详细的错误信息和栈跟踪,帮助您理解问题的来源。此外,可以使用像django-extensions包中的RunServerPlus这样的第三方扩展,它提供了一个交互式的调试器,可以直接进入代码中的断点进行调试。

3. 测试覆盖率

        为了确保您的测试覆盖了足够的代码,Django可以与代码覆盖率工具如coverage.py集成。通过测量测试覆盖率,您可以发现哪些部分的代码没有被测试到,从而有针对性地添加更多的测试用例。

coverage run --source='.' manage.py test
coverage report

        通过上述命令,您可以运行测试并查看覆盖率报告,确保每个重要的代码分支都被测试到。

六、总结

        在本系列文章中,我们从多方面详细探讨了在Django中设置和使用视图、URL路由以及测试和调试的技巧。正确的路由配置对于网站结构的清晰性和用户体验都是至关重要的。我们也介绍了如何通过编写单元测试和集成测试来保证代码质量,以及如何使用Django的调试工具来识别和解决代码中的问题。

        希望这些内容能够帮助您更好地理解和利用Django的强大功能,为您的应用构建一个安全、高效且易于维护的后端系统。无论是正在开发一个小项目还是大型应用,掌握这些基本的技术都是成功开发的关键。

相关文章:

Django视图与URLs路由详解

在Django Web框架中&#xff0c;视图&#xff08;Views&#xff09;和URLs路由&#xff08;URL routing&#xff09;是Web应用开发的核心概念。它们共同负责将用户的请求映射到相应的Python函数&#xff0c;并返回适当的响应。本篇博客将深入探讨Django的视图和URLs路由系统&am…...

怎么关闭 Windows 安全中心,手动关闭 Windows Defender 教程

Windows 安全中心&#xff08;也称为 Windows Defender Security Center&#xff09;是微软 Windows 操作系统内置的安全管理工具&#xff0c;用于监控和控制病毒防护、防火墙、应用和浏览器保护等安全功能。然而&#xff0c;在某些情况下&#xff0c;用户可能需要关闭 Windows…...

洛谷看不了别人主页怎么办

首先&#xff0c;我们先点进去 可以看到&#xff0c;看不了一点 那我们看向上方&#xff0c;就可以发现&#xff0c;我们那有个URL&#xff0c;选中 把光标插到n和/中间 把.cn删了&#xff0c;变成国际服 我们就可以看了 但是国际服还没搭建完&#xff0c;跳转的时候可能503&a…...

邮件安全篇:企业电子邮件安全涉及哪些方面?

1. 邮件安全概述 企业邮件安全涉及多个方面&#xff0c;旨在保护电子邮件通信的机密性、完整性和可用性&#xff0c;防止数据泄露、欺诈、滥用及其他安全威胁。本文从身份验证与防伪、数据加密、反垃圾邮件和反恶意软件防护、邮件内容过滤与审计、访问控制与权限管理、邮件存储…...

软件测试09 自动化测试技术(Selenium)

重点/难点 重点&#xff1a;理解自动化测试的原理及其流程难点&#xff1a;Selinum自动化测试工具的使用 目录 系统测试 什么是系统测试什么是功能测试什么是性能测试常见的性能指标有哪些 自动化测试概述 测试面临的问题 测试用例数量增多&#xff0c;工作量增大&#xff…...

记录解决springboot项目上传图片到本地,在html里不能回显的问题

项目场景&#xff1a; 项目场景&#xff1a;在我的博客系统里&#xff1a;有个相册模块&#xff1a;需要把图片上传到项目里&#xff0c;在html页面上显示 解决方案 1.建一个文件夹 例如在windows系统下。可以在项目根目录下建个photos文件夹&#xff0c;把上传的图片文件…...

C++ 中 const 关键字

C 中 const 关键字 2009-02-19 2024-07-23 补充C11后的做法 在 C 中&#xff0c;const 是一个关键字&#xff08;也称为保留字&#xff09;&#xff0c;它用于指定变量或对象的值在初始化后不能被修改。关键字是编程语言中具有特殊含义的词汇&#xff0c;编译器会识别这些词并…...

客梯自动监测识别摄像机

当今社会&#xff0c;随着城市建设的快速发展&#xff0c;客梯作为现代化建筑不可或缺的一部分&#xff0c;其安全性与效率显得尤为重要。为了提升客梯的安全管理水平&#xff0c;智能监测技术应运而生&#xff0c;尤其是客梯自动监测识别摄像机系统的应用&#xff0c;为乘客和…...

为什么那么多人学习AI绘画?工资香啊!

在当今这个科技日新月异的时代&#xff0c;AI绘画作为数字艺术与人工智能融合的璀璨成果&#xff0c;正吸引着无数人投身其中&#xff0c;而“工资香啊&#xff01;”无疑是这一热潮背后不可忽视的驱动力之一。 AI绘画的高薪待遇是吸引众多学习者的关键因素。随着市场对AI艺术…...

国产JS库(js-tool-big-box)7月度总结

js-tool-big-box开发已经有3个月了&#xff0c;团队内的小伙伴进行了热烈的讨论&#xff0c;持续做了功能迭代。小伙伴们也做了艰苦卓绝的文档分享&#xff0c;有纯功能分享类的&#xff0c;有带有小故事的&#xff0c;有朋友们利用自己独自网站分发分享的。7月份快要结束了&am…...

c++ 高精度加法(只支持正整数)

再给大家带来一篇高精度&#xff0c;不过这次是高精度加法&#xff01;话不多说&#xff0c;开整&#xff01; 声明 与之前那篇文章一样&#xff0c;如果看起来费劲可以结合总代码来看 定义 由于加法进位最多进1位&#xff0c;所以我们的结果ans[]的长度定义为两个加数中最…...

python键盘操作工具:ctypes、pyautogui

这里模拟 Win Ctrl L 组合键 1、ctypes ctypes库&#xff0c;它允许我们直接调用Windows API来模拟键盘输入。 import ctypes import time# 定义所需的常量和结构 LONG ctypes.c_long DWORD ctypes.c_ulong ULONG_PTR ctypes.POINTER(DWORD) WORD ctypes.c_ushortclass…...

计算机网络发展历史

定义和基本概念 计算机网络是由多个计算设备通过通信线路连接起来的集合&#xff0c;这些设备能够互相交换数据、消息和资源。计算机网络的核心功能是实现数据的远程传输和资源共享&#xff0c;它使得地理位置的限制被大大减弱&#xff0c;极大地促进了信息的自由流动和人类社…...

记录安装android studio踩的坑 win7系统

最近在一台新电脑上安装android studio,报了很多错误&#xff0c;也是费了大劲才解决&#xff0c;发出来大家一起避免一些问题&#xff0c;找到解决方法。 安装时一定要先安装jdk&#xff0c;cmd命令行用java -version查当前的版本&#xff0c;没有的话&#xff0c;先安装jdk,g…...

Python图形编程-PyGame快速入门

PyGame快速入门 文章目录 PyGame快速入门1、什么是PyGame2、安装PyGame3、创建PyGame窗口4、处理事件5、绘制对象6、移动对象7、加载和显示图像8、播放声音9、处理用户输入10、碰撞检测11、动画精灵12、管理游戏状态13、Pygame 中的典型主游戏循环1、什么是PyGame Pygame 是一…...

邦芒宝典:8种方法调整职场心态

在职场中拼斗当然要有好的心态&#xff0c;您知道职场心态如何调整吗&#xff1f; ​ ​方法1&#xff1a;自我调整 ​“思想可以使天堂变成地狱&#xff0c;也可以使地狱变成天堂。”你不能样样顺利&#xff0c;但可以事事尽心;你不能左右天气&#xff0c;但可以改变心情;你…...

华为OD2024D卷机试题汇总,含D量50%+,按算法分类刷题,事半功倍

目录 专栏导读华为OD机试算法题太多了&#xff0c;知识点繁杂&#xff0c;如何刷题更有效率呢&#xff1f; 一、逻辑分析二、数据结构1、线性表① 数组② 双指针 2、map与list3、队列4、链表5、栈6、滑动窗口7、二叉树8、并查集9、矩阵 三、算法1、基础算法① 贪心思维② 二分查…...

Unity UGUI 之 Graphic Raycaster

本文仅作学习笔记与交流&#xff0c;不作任何商业用途 本文包括但不限于unity官方手册&#xff0c;唐老狮&#xff0c;麦扣教程知识&#xff0c;引用会标记&#xff0c;如有不足还请斧正 首先手册连接如下&#xff1a; Unity - Manual: Graphic Raycaster 笔记来源于&#xff…...

类和对象——相关的零碎知识

前提提示&#xff1a; 其实C中的类和对象&#xff0c;最重要的是6个默认函数&#xff0c;如有忘记&#xff0c;请移步到&#xff1a;类和对象。本章是对于一些细节知识的补充和拓展。 1. 隐示类型转换 在运算时&#xff0c;运算符左右两边的操作数的类型不同&#xff0c;编译器…...

【hadoop大数据集群 1】

hadoop大数据集群 1 文章目录 hadoop大数据集群 1一、环境配置1.安装虚拟机2.换源3.安装工具4.安装JDK5.安装Hadoop 一、环境配置 折腾了一下午/(ㄒoㄒ)/~~ 1.安装虚拟机 参考视频&#xff1a;https://www.bilibili.com/video/BV18y4y1G7JA?p17&vd_sourcee15e83ac6b22a…...

TQSDRPI开发板教程:实现PL端的UDP回环与GPSDO

本教程将完成一个全面的UDP运行流程与GPSDO测试&#xff0c;从下载项目的源代码开始&#xff0c;通过编译过程&#xff0c;最终将项目部署到目标板卡上运行演示。此外&#xff0c;我们还介绍如何修改板卡的IP地址&#xff0c;以便更好地适应您的网络环境或项目需求。 首先从Gi…...

array.some() ==> 查找数组list中,是否有包含与当前currKey的值不一样的misId

需求&#xff1a; const list [ {misId: e, name: 小白}, {misId: e, name: 小白白}, {misId: r, name: 小王}, {misId: r, name: 小小王} ] let currKey r 查找数组list中&#xff0c;是否有包含与当前currKey的值不一样的misId 解决&#xff1a; 要查找数组lis…...

最简单的typora+gitee+picgo配置图床

typoragiteepicgo图床 你是否因为管理图片而感到头大&#xff1f;是时候了解一下 Typora、Gitee 和 PicGo 这个超级三剑客了&#xff0c;它们可以帮你轻松打造自己的图床&#xff0c;让你的博客图片管理变得简单又有趣。让我们开始这场神奇的图床之旅吧&#xff01; Typora …...

【黄啊码】GPT的相关名词解释

GPT是一种基于互联网的、可用数据来训练的、文本生成的深度学习模型 GPT的核心技术是‌变换器&#xff08;Transformer&#xff09;&#xff0c;这是一种神经网络结构&#xff0c;可以有效地处理序列数据&#xff0c;比如文本、语音、图像等。GPT使用了大量的预训练数据&#…...

git stash 命令详解

git stash 描述 git stash 命令用于将当前工作目录中的未提交更改&#xff08;包括暂存区和工作区的更改&#xff09;保存到一个栈中&#xff0c;并恢复工作目录到干净的 HEAD 状态。这样您可以在不提交当前更改的情况下&#xff0c;切换到其他分支或进行其他操作。后续可以通…...

txt格式单词导入有道词典生词本 (java代码方式)

txt格式单词导入有道词典生词本 (java代码方式) 首先要求txt文档里单词的格式&#xff0c;大概需要像这种&#xff1a; 每行是一个单词&#xff0c;格式为&#xff1a;英文单词空格词性单词意思。 注意 导出单词本的名字就是你 txt 文件的名字 我这里是 公共英语三级 单词本 …...

轨迹优化 | 基于ESDF的共轭梯度优化算法(附ROS C++/Python仿真)

目录 0 专栏介绍1 数值优化&#xff1a;共轭梯度法2 基于共轭梯度法的轨迹优化2.1 障碍约束函数2.2 曲率约束函数2.3 平滑约束函数 3 算法仿真3.1 ROS C实现3.2 Python实现 0 专栏介绍 &#x1f525;课程设计、毕业设计、创新竞赛、学术研究必备&#xff01;本专栏涉及更高阶的…...

深入浅出WebRTC—ALR

ALR&#xff08;Application Limited Region&#xff09;指的是网络传输过程中&#xff0c;由于应用层的限制&#xff08;而非网络拥塞&#xff09;导致带宽未被充分利用的情况。在这种情况下&#xff0c;应用层可能因为处理能力、手动配置或其他因素无法充分利用可用带宽&…...

BSV区块链技术现实应用原理解析

BSV区块链以其卓越的可扩展性、坚如磐石的安全性、极低的交易成本等特性&#xff0c;成为满足企业当下需求并为企业未来成功奠基铺路的理想技术。 BSV协会近期发布了一个题为《驾驭数字化转型&#xff1a;在自动化世界中建立信任——区块链在数据保护和交易优化中的角色》的报…...

七大基于比较的排序算法

目录 一、基于比较的排序算法概述 1. 插入排序&#xff08;Insertion Sort&#xff09; 2. 选择排序&#xff08;Selection Sort&#xff09; 3. 冒泡排序&#xff08;Bubble Sort&#xff09; 4. 归并排序&#xff08;Merge Sort&#xff09; 5. 快速排序&#xff08;Qu…...

web前端 React 框架面试200题(四)

面试题 97. React 两种路由模式的区别&#xff1f;hash和history&#xff1f; 参考回答&#xff1a; 1: hash路由 hash模式是通过改变锚点(#)来更新页面URL&#xff0c;并不会触发页面重新加载&#xff0c;我们可以通过window.onhashchange监听到hash的改变&#xff0c;从而处…...

5.Fabric的共识机制

在Fabric中,有以下3中典型共识机制。 Solo共识 solo共识机制只能用于单节点模式,即只能有一个Orderer节点,因此,其共识过程很简单,每接收到一个交易信息,就在共识模块的控制下产生区块并广播给节点存储到账本中。 Solo 模式下的共识只适用于一个Orderer节点,所以可以在…...

【safari】react在safari浏览器中,遇到异步时间差的问题,导致状态没有及时更新到state,引起传参错误。如何解决

在safari浏览器中&#xff0c;可能会遇到异步时间差的问题&#xff0c;导致状态没有及时更新到state&#xff0c;引起传参错误。 PS&#xff1a;由于useState是一个普通的函数&#xff0c; 定义为() > void;因此此处不能用await/async替代setTimeout&#xff0c;只能用在返…...

京准:GPS北斗卫星授时信号安全隔离防护装置

京准&#xff1a;GPS北斗卫星授时信号安全隔离防护装置 京准&#xff1a;GPS北斗卫星授时信号安全隔离防护装置 1、主要特点 ★信号加固功能&#xff1a; GPS/BDS单系统信号拒止情况下&#xff08;包含受到GPS L1欺骗干扰、GPS L1压制干扰、BDS B1欺骗干扰、BDS B1压制干扰&…...

解决方案架构师系列 - AWS - Pinpoint

AWS Pinpoint介绍 Amazon Pinpoint 为营销人员和开发人员提供了一款可自定义的工具&#xff0c;助力他们大规模地开展跨渠道、行业和活动的客户通信。 Amazon Pinpoint是一个全面的客户参与平台&#xff0c;‌旨在帮助营销人员和开发人员大规模地开展跨渠道、‌行业和活动的客…...

MF173:将多个工作表转换成PDF文件

我给VBA的定义&#xff1a;VBA是个人小型自动化处理的有效工具。利用好了&#xff0c;可以大大提高自己的工作效率&#xff0c;而且可以提高数据的准确度。“VBA语言専攻”提供的教程一共九套&#xff0c;分为初级、中级、高级三大部分&#xff0c;教程是对VBA的系统讲解&#…...

Docker、containerd、CRI-O 和 runc 之间的区别

容器与 Docker 这个名称并不紧密相关。你可以使用其他工具来运行容器 您可以使用 Docker 或一堆非Docker 的其他工具来运行容器。docker只是众多选项之一&#xff0c;Docker&#xff08;公司&#xff09;在生态系统中创建了一些很棒的工具&#xff0c;但不是全部。 容器方面有…...

PRISM-Python 中的规则一个简单的 Python 规则感应系统

欢迎来到雲闪世界.PRISM 是一种现有算法&#xff08;尽管我确实创建了一个 Python 实现&#xff09;&#xff0c;PRISM 相对简单&#xff0c;但在机器学习中&#xff0c;有时最复杂的解决方案效果最好&#xff0c;有时最简单的解决方案效果最好。然而&#xff0c;当我们希望建立…...

DB-GPT:LLM应用的集大成者

整体架构 架构解读 可以看到&#xff0c;DB-GPT把架构抽象为7层&#xff0c;自下而上分别为&#xff1a; 运行环境&#xff1a;支持本地/云端&单机/分布式等部署方式。顺便一提&#xff0c;RAY是蚂蚁深度参与的一个开源项目&#xff0c;所以对RAY功能的支持应该非常完善。…...

汉明权重(Hamming Weight)(统计数据中1的个数)VP-SWAR算法

汉明权重&#xff08;Hamming Weight&#xff09;&#xff08;统计数据中1的个数&#xff09;VP-SWAR算法 定义 汉明重量是一串符号中非零符号的个数。它等于同样长度的全零符号串的汉明距离(在信息论中&#xff0c;两个等长字符串之间的汉明距离等于两个字符串对应位置的不同…...

基于 PyTorch 的模型瘦身三部曲:量化、剪枝和蒸馏,让模型更短小精悍!

基于 PyTorch 的模型量化、剪枝和蒸馏 1. 模型量化1.1 原理介绍1.2 PyTorch 实现 2. 模型剪枝2.1 原理介绍2.2 PyTorch 实现 3. 模型蒸馏3.1 原理介绍3.2 PyTorch 实现 参考文献 1. 模型量化 1.1 原理介绍 模型量化是将模型参数从高精度&#xff08;通常是 float32&#xff0…...

二、原型模式

文章目录 1 基本介绍2 实现方式深浅拷贝目标2.1 使用 Object 的 clone() 方法2.1.1 代码2.1.2 特性2.1.3 实现深拷贝 2.2 在 clone() 方法中使用序列化2.2.1 代码 2.2.2 特性 3 实现的要点4 Spring 中的原型模式5 原型模式的类图及角色5.1 类图5.1.1 不限制语言5.1.2 在 Java 中…...

【目标检测】Anaconda+PyTorch(GPU)+PyCharm(Yolo5)配置

前言 本文主要介绍在windows系统上的Anaconda、PyTorch、PyCharm、Yolov5关键步骤安装&#xff0c;为使用yolo所需的环境配置完善。同时也算是记录下我的配置流程&#xff0c;为以后用到的时候能笔记查阅。 Anaconda 软件安装 Anaconda官网&#xff1a;https://www.anaconda…...

Django实战项目之进销存数据分析报表——第二天:项目创建和 PyCharm 配置

在上一篇博客中&#xff0c;我们讨论了如何搭建一个全栈 Web 应用的开发环境&#xff0c;包括 Python 环境的创建、Django 和 MySQL 的安装以及前端技术栈的选择。现在&#xff0c;让我们继续深入&#xff0c;学习如何在 PyCharm 中创建一个新的 Django 项目并进行配置。 一…...

静态路由实验

1.实验拓扑图 二、实验要求 1.R6为ISP&#xff0c;接口IP地址均为公有地址&#xff0c;该设备只能配置IP地址&#xff0c;之后不能再对其进行任何配置&#xff1b; 2.R1-R5为局域网&#xff0c;私有IP地址192.168.1.0/24&#xff0c;请合理分配&#xff1b; 3.R1、R2、R4&…...

VSCode STM32嵌入式开发插件记录

要卸载之前搭建的VSCode嵌入式开发环境了&#xff0c;记录一下用的插件。 1.Cortex-Debug https://github.com/Marus/cortex-debug 2.Embedded IDE https://github.com/github0null/eide 3.Keil uVision Assistant https://github.com/jacksonjim/keil-assistant/ 4.RTO…...

linux cpu 占用超100% 分析。

感谢: https://www.cnblogs.com/wolfstark/p/16450131.html 总结&#xff1a; 查看进程中各个线程占用百分比 top -H -p <pid> 某线程100%了 说明 任务处理不过来 会卡 但是永远不可能超100% 系统监视器里面看到的是 所有线程占用的 总和会超100%。 所以最好的情况是&…...

自然学习法和科学学习法

一、自然学习法 自然学习法&#xff1a;什么事自然学习法&#xff0c;特意让kimi来回答了一下。所谓的自然学习法说的俗一点就是野路子学习方法。这种学习方法的特点是“慢”“没有系统性”&#xff0c;学完之后感觉都会了&#xff0c;但是又感觉什么都不会。 二、科学学习法 …...

力扣第二十四题——两两交换链表中的节点

内容介绍 给你一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题&#xff08;即&#xff0c;只能进行节点交换&#xff09;。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4] 输出&#xff…...

C语言柔性数组详解

目录 1.柔性数组 2.柔性数组的特点 3.柔性数组的使用 4.柔性数组的优势 1.柔性数组 C99 中&#xff0c;结构体中的最后一个元素允许是未知大小的数组&#xff0c;这就叫做『柔性数组』成员。 例如&#xff1a; struct S {char c;int n;int arr[];//柔性数组 }; struct …...