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

Django3 - 开启Django Hello World

一、开启Django Hello World

        要学习Django首先需要了解Django的操作指令,了解了每个指令的作用,才能在MyDjango项目里编写Hello World网页,然后通过该网页我们可以简单了解Django的开发过程。

1.1 Django的操作指令

        无论是创建项目还是创建项目应用,都需要使用相关的指令才能得以实现,这些指令都是Django内置的操作指令。在PyCharm的Terminal中输入指令python manage.py help并按回车键,即可看到相关的指令信息,如图所示。

        Django的操作指令共有30条,每条指令的说明如表所示。

1.2 开启Hello World之旅

        首先在templates文件夹里新建index.html文件,该文件是Django的模板文件,如果MyDjango项目是在命令提示符窗口下创建的,就需要在MyDjango项目的路径下自行创建templates文件夹,如图所示。

        接着打开MyDjango文件夹的配置文件settings.py,找到配置属性INSTALLED_APPS和TEMPLATES,分别将项目应用index和模板文件夹templates添加到相应的配置属性,其配置如下所示:

        Django所有的功能都必须在配置文件settings.py中设置,否则项目在运行的时候无法生成相应的功能。最后在项目的urls.py(MyDjango文件夹的urls.py)​、views.py(项目应用index的views.py文件)和index.html(templates文件夹的index.html)文件里编写相应的代码,即可实现简单的Hello World网页,代码如下:

        在上述代码里可以简单映射出用户访问网页的过程,说明如下:

        当用户在浏览器访问网址的时候,该网址在项目所设置的路由(urls.py文件)里找到相应的路由信息。

        然后从路由信息里找到对应的视图函数(views.py文件)​,由视图函数处理用户请求。

        视图函数将处理结果传递到模板文件(index.html文件)​,由模板文件生成网页内容,并在浏览器里展现。

        启动MyDjango项目,并在浏览器上访问路由地址(http://127.0.0.1:8000)即可看到Hello World网页,如图所示。


        注意:由于Django默认配置的数据库是SQLite,因此在启动MyDjango项目之后,在MyDjango的目录里自动新建db.sqlite3文件。

二、调试Django项目

        在开发网站的过程中,为了确保功能可以正常运行及验证是否实现开发需求,开发人员需要对已实现的功能进行调试。Django的调试方式分为PyCharm断点调试和调试异常。

2.1 PyCharm断点调试

        我们知道,PyCharm调试Django开发的项目,PyCharm的版本必须为专业版,而社区版是不具备Web开发功能的。使用PyCharm启动Django的时候,可以发现PyCharm上带有爬虫的按钮,该按钮用于开启Django的Debug调试模式。

        单击调试按钮(带有爬虫的按钮)​,即可开启调试模式,在PyCharm的正下方可以看到相关的调试信息,如图所示。

        从图的调试界面可以看到有多个操作按钮,常用的调试按钮的功能说明以表格的形式表示,如表所示。

        我们通过简单的示例来讲述如何使用PyCharm的调试模式。以MyDjango项目为例,在index文件夹的views.py文件里,视图函数index添加变量value并且在返回值return处设置断点。

        设置断点是在图的方框里单击一下即可出现红色的圆点,该圆点代表断点设置,当项目开启调试模式并运行到断点所在的代码位置,程序就会暂停运行。开启MyDjango项目的调试模式并在浏览器上访问127.0.0.1:8000,在PyCharm正下方的调试界面里可以看到相关的代码信息,如图所示。

        调试界面Debugger的Frames是当前断点的程序所依赖的程序文件,单击某个文件,Variables就会显示当前文件的程序所生成的对象信息。单击按钮,PyCharm就会自动往下执行程序,直到下一个断点才暂停程序;单击按钮,PyCharm只会执行当前暂停位置的下一步代码,这样可以清晰地看到每行代码的执行情况。这两个按钮是断点调试最为常用的,它们能让开发者清晰地了解代码的执行情况和运行逻辑。

        如果程序在运行过程中出现异常或者代码中设有输出功能(如print)​,这些信息就可以在PyCharm正下方调试界面的Console里查看,如图所示。

        启动项目的时候,从图的运行信息看到“System check identified no issues (0silenced)”信息,该信息表示Django对项目里所有的代码语法进行检测,如果代码语法存在错误,在启动的过程中就会报出相关的异常信息。图中的“This is test!”是视图函数index的“print(value)”代码输出结果;"GET / HTTP/1.1"200代表浏览器成功访问127.0.0.1:8000,其中200代表HTTP的状态码。

        注意:断点调试无法在模板文件(templates的index.html)设置断点,因此无法对模板文件进行调试,只能通过PyChram调试界面Console或浏览器开发者工具进行调试。

2.2 调试异常

        PyCharm的调试模式无法调试模板文件,而模板文件需要使用Django的模板语法,若想调试模板文件,则最有效的方法是查看PyCharm或浏览器提示的异常信息。调试异常需要根据项目运行时所产生的异常信息进行分析,使用浏览器访问路由地址的时候,如果出现异常信息,就可以直接查看异常信息找出错误位置。比如在templates的模板文件index.html里添加错误的代码,如下所示:

        当运行MyDjango项目并在浏览器访问127.0.0.1:8000的时候,PyCharm正下方的调试界面Console就会出现异常信息,从异常信息中可以找到具体的异常位置。除了在PyCharm正下方的调试界面Console查看异常信息外,还可以在浏览器上分析异常信息,比如模板文件index.html的错误语法,Django还能标记出错位置,便于开发者调试和跟踪。

        还有一种常见的情况是网页能正常显示,但网页内容出现部分缺失。对于这种情况,只能使用浏览器的开发者工具对网页进行分析处理。以templates的模板文件index.html为例,对其添加正确的代码,但在网页里出现内容缺失。

        再次启动MyDjango项目并在浏览器访问127.0.0.1:8000的时候,浏览器能正常访问网页,但无法显示{{ value }}的内容,打开浏览器的开发者工具看到,{{ value }}的内容是不存在的。

        此外,浏览器的开发者工具对于调试AJAX和CSS样式非常有用。通过生成的网页内容进行分析来反向检测代码的合理性是常见的手段之一,这是通过校验结果与开发需求是否一致的方法来调试项目功能的。

三、HTML、CSS和JavaScript

        网站开发可以分为前端开发和后端开发,前端开发是指网页设计,我们在浏览器看到网站的图片、文字、音乐视频等内容排版都是由前端开发人员实现的;后端开发是为前端开发提供实际的数据内容和业务逻辑,比如提供文字内容、图片和音乐视频的路径地址等信息。

        前端开发人员必须掌握HTML、CSS和JavaScript的基础语言,这些基础语言上延伸了许多前端框架,比如jQuery、Bootstrap、Vue、React和AngularJS等。后端开发人员必须掌握一种或多种后端开发语言、数据库应用原理、Web服务器应用原理和基础运维技术,目前较为热门的后端开发语言分别有Java、PHP、Python和GO语言;数据库为MySQL、MSSQL、Oracle和Redis等。

        尽管明确划分了网站开发的职责,在实际工作中,特别是一些中小企业,他们也要求后端开发人员必须掌握前端开发技术,但无须精通前端开发,只要掌握基本的应用开发即可,比如调整网站布局或编写简单的JavaScript脚本。我们除了学习使用Django开发网站,还需要掌握前端的基础知识。

3.1 HTML

        HTML是超文本标记语言,标准通用标记语言下的一个应用。​“超文本”就是指页面内可以包含图片、链接,甚至音乐、程序等非文字元素。超文本标记语言的结构包括“头”部分(Head)和“主体”部分(Body),其中“头”部分提供关于网页的信息,​“主体”部分提供网页的具体内容。下面来看一个简单的HTML文档的结构:

        一个完整的网页必定以<html></html>为开头和结尾,整个HTML可分为两部分:

        (1)<head></head>,主要是对网页的描述、图片和JavaScript的引用。<head>元素包含所有的头部标签元素。在<head>元素中可以插入脚本(scripts)、样式文件(CSS)及各种meta信息。该区域可添加的元素标签有<title>、<style>、<meta>、<link>、<script>、<noscript>和<base>。

        (2)<body></body>是网页信息的主要载体。该标签下还可以包含很多类别的标签,不同的标签有不同的作用,标签以<>开头,以</>结尾,<>和</>之间的内容是标签的值和属性,每个标签之间可以是相互独立的,也可以是嵌套、层层递进的关系。

        根据这两个组成部分就能很容易地分析整个网页的布局。其中,<body></body>是整个HTML的重点部分,通过示例讲述如何分析<body></body>:

        上述例子分析如下:

        (1)<h1>和<div>是两个不相关的标签,两个标签是相互独立的。

        (2)<div>和<p>是嵌套关系,<p>的上一级标签是<div>。

        (3)<h1>和<p>这两个标签是毫无关系的。

        (4)<h2>标签包含一个<p>标签,<p>标签再包含一个<a>标签,一个标签可以包含多个标签在其中。

        除上述示例的标签之外,大部分标签都可以在<body></body>中添加,常用的标签如表所示。

3.2 CSS

        HTML代码是保存在后缀名为.html的文件,而CSS样式是保存在后缀名为.css的文件,然后在HTML代码中调用CSS样式文件。由于HTML代码中会存在多个不同的元素,并且每个元素的网页布局各不相同,因此需要使用CSS选择器定位每个HTML元素,然后再编写相应的CSS样式。

        CSS选择器划分了多种类型,同一个HTML元素可以使用不同的CSS选择器进行定位,实际开发中最常用的CSS选择器分别为:类别选择器、标签选择器、ID选择器、通用选择器和群组选择器,我们将简单讲述如何使用这些CSS选择器实现HTML元素的网页布局。

        打开index.html文件,在该文件中定义网页元素,详细代码如下:

        上述代码中使用link标签引入同一路径的index.css文件,link标签是在HTML代码中引入CSS文件,使CSS文件的样式代码能在HTML代码中生效。然后设置了5个不同类型的HTML标签,分别为<h3>、<div>、<p>、<input>和<button>,其中<div>设置了class属性,<input>和<button>设置了id属性。


        使用类别选择器、标签选择器、ID选择器、通用选择器和群组选择器分别对这些HTML标签进行样式设置。

        上述代码中,我们依次使用通用选择器、标签选择器、类别选择器、ID选择器和群组选择器设置index.html的网页布局,从代码中可以归纳总结CSS选择器的语法格式,如下所示。

XXX {
attribute:value;
attribute:value;
}

        CSS选择器的语法说明如下:

        (1)XXX代表CSS选择器的类型。

        (2)在CSS选择器后面使用空格并添加中括号{},在中括号{}里面编写具体的样式设置。

        (3)样式设置以attribute:value表示,attribute代表样式名称,value代表该样式设置的数值。多个样式之间使用分号“;”隔开。

        (4)如果要对样式添加注释,可以使用“/**/”添加说明。我们回看index.css文件,该文件的样式代码说明如下:

(1)通用选择器:它以符号“*”表示,这是设置整个网页所有元素的样式,用于网页的整体布局。上述代码是将整个网页的字体大小设为30px。

(2)标签选择器:它以标签名表示,如果网页中有多个相同的标签,那么标签选择器的样式设置都会作用在这些标签上。上述代码是将所有h3标签的字体颜色设为蓝色。

(3)类别选择器:它以.xxx表示,其中xxx代表标签属性class的属性值,这是开发中常用的样式设置之一。使用类别选择器,必须在HTML的标签中设置class属性,在class属性的属性值前面加上实心点“.”即可作为类别选择器。上述代码是将class="content"的标签放置网页居中位置。

(4)ID选择器:它以#xxx表示,其中xxx代表标签属性id的属性值,这也是开发中常用的样式设置之一。使用ID选择器,必须在HTML的标签中设置id属性,在id属性的属性值前面加上井号“#”即可作为ID选择器。上述代码是将id=" message"的标签设置宽度为500px。

(5)群组选择器:它是将多个CSS选择器组合成一个群组,并由这个群组对这些标签进行统一的样式设置,每个CSS选择器之间使用逗号隔开。上述代码是分别将id="submit"的标签和p标签的字体颜色设为红色。

        CSS样式也可以直接在HTML文件里编写,但在企业开发中,一般都采用HTML和CSS代码分离,这样便于维护和管理,而且利于开发者阅读。

3.3 JavaScript

        JavaScript(简称“JS”​)是一种具有函数优先的轻量级、解释型的编程语言。它是因为开发Web页面的脚本语言而出名的,但是也被用到了很多非浏览器环境中,JavaScript基于原型编程、多范式的动态脚本语言,并且支持面向对象、命令式和声明式的编程风格。简单来说,JavaScript是能被浏览器解释并执行的一种编程语言。

        JavaScript可以在HTML文件里编写,但在企业开发中也是采用HTML和JavaScript代码分离。

        首先打开index.html文件,在HTML代码中引入JS文件,并为button标签添加事件触发,详细代码如下:


        从上述代码看到,script标签是在HTML代码中引入JS文件,使得JS文件的JavaScript代码能在HTML代码中生效。button标签添加了onclick属性,该属性是JS的事件触发,当用户单击“提交”按钮的时候,浏览器将会触发事件onclick所绑定的函数getInfo()。JavaScript除了事件触发onclick之外,还提供了其他的事件触发,如表所示。

        看index.html的button标签,由于该标签的事件触发onclick绑定了函数getInfo(),因此下一步在index.js里定义函数getInfo(),函数代码如下:        上述代码的document.getElementById是获取id="message"的标签(即input标签)的属性value的属性值,JavaScript的document对象简称为DOM对象,它可以定位某个HTML标签并进行操作,从而实现网页的动态效果。document对象定义了7个对象方法,每个对象方法的详细说明如表所示。

        在实际开发中,我们经常使用getElementById、getElementsByName和getElementsByTagName方法来定位HTML标签,然后再对已定位的HTML标签进行操作。

四、小结

        网站是指在因特网上根据一定的规则,使用HTML等工具制作并用于展示特定内容相关网页的集合。在早期,域名、空间服务器与程序是网站的基本组成部分,随着科技的不断进步,网站的组成也日趋复杂,目前多数网站由域名、空间服务器、DNS域名解析、网站程序和数据库等组成。

        网站开发流程如下:

        (1)需求分析:当拿到一个项目时,必须进行需求分析,清楚知道网站的类型、具体功能、业务逻辑以及网站的风格,此外还要确定域名、网站空间或者服务器以及网站备案等。

        (2)规划静态内容:重新确定需求分析,并根据用户需求规划出网站的内容板块草图。

        (3)设计阶段:根据网站草图,由美工制作成效果图。就好比建房子一样,首先画出效果图,然后才开始建房子,网站开发也是如此。

        (4)程序开发阶段:根据草图划分页面结构和设计,前端和后台可以同时进行。前端根据美工效果负责制作静态页面;后台根据页面结构和设计,设计数据库数据结构和开发网站后台。

        (5)测试和上线:在本地搭建服务器,测试网站是否存在Bug。若无问题,则可以将网站打包,使用FTP上传至网站空间或者服务器。

        (6)维护推广:在网站上线之后,根据实际情况完善网站的不足,定期修复和升级,保障网站运营顺畅,然后对网站进行推广宣传等。

        Django采用MTV的框架模式,即模型(Model)、模板(Template)和视图(Views),三者之间各自负责不同的职责。

        模型:数据存取层,处理与数据相关的所有事务,例如如何存取、如何验证有效性、包含哪些行为以及数据之间的关系等。

        模板:表现层,处理与表现相关的决定,例如如何在页面或其他类型的文档中进行显示。

        视图:业务逻辑层,存取模型及调取恰当模板的相关逻辑,模型与模板的桥梁。

        建议使用pip命令安装Django,安装的方法如下:

# 方法一
pip install Django
# 方法二
pip install D:\Django-3.1.4-py3-none-any.whl

        两种不同的安装方法都是使用pip执行的,唯一的不同之处在于前者在安装过程中会从互联网下载安装包,而后者直接对本地已下载的安装包进行解压安装。Django安装完成后,在Python交互解释器模式校验安装是否成功:

>>> import django
>>> django.__version__

        Django的目录结构以及含义如下:

        manage.py:命令行工具,内置多种方式与项目进行交互。在命令提示符窗口下,将路径切换到MyDjango项目并输入python manage.py help,可以查看该工具的指令信息。

        __init__.py:初始化文件,一般情况下无须修改。

        asgi.py:开启一个ASGI服务,ASGI是异步网关协议接口。

        settings.py:项目的配置文件,项目的所有功能都需要从该文件里进行配置。

        urls.py:项目的路由设置,设置网站的具体网址内容。

        wsgi.py:全称为Python Web Server Gateway Interface,即Python服务器网关接口,是Python应用与Web服务器之间的接口,用于Django项目在服务器上的部署和上线,一般不需要修改。

        migrations:用于生成数据迁移文件,通过数据迁移文件可自动在数据库里生成相应的数据表。

        __init__.py:index文件夹的初始化文件。

        admin.py:用于设置当前App的后台管理功能。

        apps.py:当前App的配置信息,在Django 1.9版本后自动生成,一般情况下无须修改。

        models.py:定义数据库的映射类,每个类可以关联一张数据表,实现数据持久化,即MTV里面的模型(Model)。

        tests.py:自动化测试的模块,用于实现单元测试。

        views.py:视图文件,处理功能的业务逻辑,即MTV里面的视图(Views)。

 --------------------------------------

没有自由的秩序和没有秩序的自由,同样具有破坏性。

相关文章:

Django3 - 开启Django Hello World

一、开启Django Hello World 要学习Django首先需要了解Django的操作指令&#xff0c;了解了每个指令的作用&#xff0c;才能在MyDjango项目里编写Hello World网页&#xff0c;然后通过该网页我们可以简单了解Django的开发过程。 1.1 Django的操作指令 无论是创建项目还是创建项…...

JavaScript 基础特性

一、变量特性 1.1 变量提升 console.log(temp); // undefined&#xff08;变量提升但未初始化&#xff09; var temp hello; 现象&#xff1a;var声明的变量会提升至作用域顶部&#xff0c;但赋值不提升 建议&#xff1a;改用 let/const 避免变量提升问题 1.2 变量泄露 fo…...

MATLAB遇到内部问题,需要关闭,Crash Decoding : Disabled - No sandbox or build area path

1.故障界面 MATLAB运行时突然中断&#xff0c;停止运行。故障界面如图&#xff1a; MATLAB Log File: C:\Users\wei\AppData\Local\Temp\matlab_crash_dump.21720-1 ------------------------------------------------ MATLAB Log File -----------------------------------…...

L1-5 吉老师的回归

题目 L1-078 吉老师的回归&#xff08;15分&#xff09; 曾经在天梯赛大杀四方的吉老师决定回归天梯赛赛场啦&#xff01; 为了简化题目&#xff0c;我们不妨假设天梯赛的每道题目可以用一个不超过 500 的、只包括可打印符号的字符串描述出来&#xff0c;如&#xff1a;Probl…...

0413-多态、Object类方法、访问权限修饰符、装箱拆箱、128陷阱

1:A and A 2:A and A 3: A and D 4: B and A 5: B and A 6:A and D 7:B and A 8: B and A 9:A and D package 第四章对象和类;public class ForthThir {//多态&#xff1a;父类的引用指向子类的对象,只能调父类的方法和子类重写的方法&#xff0c;不能调子类独有的方法&…...

Kubernetes控制平面组件:APIServer 准入控制机制详解

云原生学习路线导航页&#xff08;持续更新中&#xff09; kubernetes学习系列快捷链接 Kubernetes架构原则和对象设计&#xff08;一&#xff09;Kubernetes架构原则和对象设计&#xff08;二&#xff09;Kubernetes架构原则和对象设计&#xff08;三&#xff09;Kubernetes控…...

苍穹外卖day02

菜品相关接口开发 图片上传-阿里云OSS 依赖注入 <dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>${aliyun.sdk.oss}</version> </dependency> ​ 配置密钥 sky:alioss:end…...

SpringBoot 自定义输出控制台图标

对于控制台输出的这个图标大家都不陌生吧&#xff0c;不仅在SpringBoot中有这种图标&#xff0c;在docker 、 nginx 启动时都有自身独特的图标&#xff0c;这是怎么实现的呢。 需要利用一个网站生成 banner 图标&#xff08;首页-bootschool.net&#xff09;&#xff0c; 将图标…...

联想电脑开机出现Defalut Boot Device Missing or Boot Failed怎么办

目录 一、恢复bios默认设置 二、关机重启 三、“物理”方法 在图书馆敲代码时&#xff0c;去吃了午饭回来发现刚开机就出现了下图的问题&#xff08;崩溃&#xff09;&#xff0c;想起之前也发生过一次 这样的问题&#xff0c;现在把我用到的方法写在下面&#xff0c;可能对…...

CST1020.基于Spring Boot+Vue汽车租赁管理系统

计算机/JAVA毕业设计 【CST1020.基于Spring BootVue汽车租赁管理系统】 【项目介绍】 汽车租赁管理系统&#xff0c;基于 Spring Boot Vue 实现&#xff0c;功能丰富、界面精美 【业务模块】 客户管理&#xff1a;查询客户信息、根据条件精准检索、添加客户信息、身份证号校验…...

ArkTS基础语法:从声明到类型的深度解析

# ArkTS基础语法&#xff1a;从声明到类型的深度解析 在鸿蒙应用开发的领域中&#xff0c;ArkTS作为重要的编程语言&#xff0c;其基础语法是开发者们必须掌握的关键内容。今天&#xff0c;我们就围绕ArkTS的声明和类型相关知识展开深入探讨&#xff0c;帮助大家更好地理解和运…...

Day15:关于MySQL的编程技术——基础知识

前言&#xff1a;先创建一个练习的数据库和数据 1.创建数据库并创建数据表的基本结构 -- 创建练习数据库 CREATE DATABASE db_programming; USE db_programming;-- 创建员工表&#xff08;包含各种数据类型&#xff09; CREATE TABLE employees (emp_id INT PRIMARY KEY AUTO…...

wsl下编译eXosip和osip库(Ubuntu 22.04)

1.下载eXosip和osip osip下载路径 Index of /mirror/gnu.org/savannah/osip eXosip下载路径 Index of /nongnu/exosip 我选的osip和eXosip版本为 5.2.0 2.编译osip库 tar -zxvf libosip2-5.2.0.tar.gz cd libosip2-5.2.0 ./configure make make install 在编译…...

《轨道力学导论》——第九章:轨道确定与导航

第九章 轨道确定与导航 引言 轨道确定与导航是轨道力学中最为核心的实践领域之一&#xff0c;它将理论与实际应用紧密结合&#xff0c;解决了"我们在哪里"以及"我们将去向何方"这两个航天活动中最基本的问题。无论是地球轨道上的人造卫星、飞向深空的探测…...

几何与游标

在arcgis中,数据组织方式如下 数据库(datasets): 要素类(feature class): 几何(geometry) 属性(attribute) 元数据(metadata) 游标: 查询游标:用于对数据进行查询的游标 arcpy.da.SearchCursor() 作用&#xff1a;用于对数据进行只读查询操作。它可以帮助你逐行读取数据表或…...

【使用jenkins+docker自动化部署java项目】

背景: 有A(打包机129)&#xff0c;B(游戏服130) 2个机器&#xff0c;他们都安装有docker&#xff0c;请完成部署。 一、准备好java项目&#xff0c;写好Dockerfile # 基础镜像&#xff0c;使用包含 JDK 17 的 OpenJDK 镜像 FROM openjdk:17-jdk-slim# 设置工作目录 WORKDIR /…...

Vue3+Element Plus如何实现左树右表页面案例:即根据左边的树筛选右侧表功能实现

文章目录 一、最终效果二、源代码2.1 AddDataSource.vue2.2 LeftTree.vue2.3 FieldDrawer.vue2.4 RightTable.vue2.5 Emp.vue 三、代码解读3.1 AddDataSource.vue —— 数据源新增对话框3.2 LeftTree.vue —— 数据源树视图3.3 FieldDrawer.vue —— 字段详情抽屉3.4 RightTabl…...

Redisson的红锁,分段锁,公平锁,联锁。。。。。。

红锁&#xff1a;Redisson红锁可以防止主从集群锁丢失问题。Redisson红锁要求&#xff0c;必须要构建至少三个Redis主从集群&#xff0c;若一个请求要申请锁&#xff0c;必须向所有主从集群中提交key写入请求&#xff0c;只有当大多数集群&#xff08;过半集群&#xff09;锁写…...

system V 共享内存

system V是一种标准&#xff0c;linux内核支持这种标准&#xff0c;专门设计了一个ipc模板(通信的接口设计&#xff0c;原理&#xff0c;接口&#xff0c;相似性) 使用各自的虚拟地址访问物理内存 共享内存描述共享内存的内核数据结构它所对应的物理空间 进程间通信的本质&…...

ResNet改进(27):融合EfficientViT 高效混合网络设计

在计算机视觉领域,卷积神经网络(CNN)和视觉Transformer(ViT)各有优势。 今天分享的是一种将两者巧妙结合的方案——在ResNet18基础上引入轻量化ViT模块的设计思路。 整体架构概览 这个混合网络主要由三部分组成: ResNet18骨干网络:作为特征提取器,去掉了原模型的平均池化…...

字符串与栈和队列-算法小结

字符串 双指针 反转字符串(双指针) 力扣题目链接 void reverseString(vector<char>& s) {for (int i 0, j s.size() - 1; i < s.size()/2; i, j--) {swap(s[i],s[j]);} }反转字符串II 力扣题目链接 遍历字符串的过程中&#xff0c;只要让 i (2 * k)&#…...

go语言学习笔记:gin + gorm + mysql 用户增删改查案例入门

大家好&#xff0c;我是此林。 Golang 语言现在已经成为了编程的趋势&#xff0c;毕竟是大厂背书嘛&#xff0c;Google 研发的。 目前很多云原生项目都是基于 go 来编写的&#xff0c;比如&#xff1a; Kubernetes (K8s)​ 容器编排系统&#xff0c; Docker​ 容器化技术&…...

设计模式——建造者模式(生成器模式)总结

当我们需要创建一个非常复杂的对象时&#xff0c;可以使用建造者模式&#xff0c;分步骤建造一个对象&#xff0c;最后将完整的对象返回给客户端。 比如&#xff0c;我们要生成一个房子对象&#xff0c;建造一个房子&#xff0c;需要打地基、盖围墙、盖地板、安装门、安装窗户…...

Nginx代理Minio出现AccessDeniedAccessDenied

一、问题描述 AccessDeniedAccessDenied.sight.jpgmediafiles/mediafiles/sight.jpg1835E50603CB8FE0dd9025bab4ad464b049177c95eb6ebf374d3b3fd1af9251148b658df7ac2e3e8 二、问题排查 &#xff08;1&#xff09;minio 和 nginx 是否正常启动 &#xff08;2&#xff09;检…...

在ArcGIS Pro中将栅格NoData值修改为特定值

目录 问题如下&#xff1a;栅格文件中NoData值为65535&#xff0c;要将该NoData值修改为-9999 步骤一&#xff1a;使用栅格计算器&#xff08;Raster Calculator&#xff09;输出具有新NoData值的栅格文件 步骤二&#xff1a;输出修改值后的栅格文件&#xff08;Export Rast…...

模糊表示学习 笔记

图表示学习通常从图的拓扑结构和高维节点属性中产生低维和清晰的表示。然而&#xff0c;节点或图的清晰表示实际上隐藏了特征的不确定性和可解释性。例如&#xff0c;在引文网络中&#xff0c;两篇论文之间的引用总是涉及表示相关度的future&#xff0c;也就是说&#xff0c;一…...

GitHub 趋势日报 (2025年04月12日)

本日报由 TrendForge 系统生成 https://trendforge.devlive.org/ &#x1f4c8; 今日整体趋势 Top 10 排名项目名称项目描述今日获星总星数语言1yeongpin/cursor-free-vip[Support 0.48.x]&#xff08;Reset Cursor AI MachineID & Auto Sign Up / In & Bypass Higher…...

FreertosHAL库笔记

堆和栈 堆&#xff1a;一块内存空间&#xff0c;用于存储程序运行时动态申请的内存空间。在堆上分配内存可以根据程序的需要灵活地申请和释放不同大小的内存块。可用pvProMalllloc()和vPortFree()函数来开辟和释放 栈&#xff1a;也是一块内存空间&#xff0c;主要用于函数调用…...

迷你世界脚本之容器接口:WorldContainer

容器接口&#xff1a;WorldContainer 彼得兔 更新时间: 2023-04-26 10:21:02 具体函数名及描述如下: 序号 函数名 函数描述 1 addFurnace(...) 新增熔炉 2 removeFurnace(...) 移除熔炉 3 checkFurnace(...) 检测是否为熔炉 4 getFurnaceHeatPerce…...

springboot框架集成websocket依赖实现物联网设备、前端网页实时通信!

需求&#xff1a; 最近在对接一个物联网里设备&#xff0c;他的通信方式是 websocket 。所以我需要在 springboot框架中集成websocket 依赖&#xff0c;从而实现与设备实时通信&#xff01; 框架&#xff1a;springboot2.7 java版本&#xff1a;java8 好了&#xff0c;还是直接…...

【linux知识】web服务环境搭建(一):用户以及开发环境初始化

toc 创建用户组以及用户 以下是 创建用户组 wendao 和用户 wendao 并指定 GID、UID 及家目录 的完整操作指南&#xff1a; 一、创建用户组&#xff08;指定 GID&#xff09; sudo groupadd -g 1500 wendao # 创建组并指定 GID 为 1500• 注意&#xff1a;GID 需唯一&#…...

消息中间件——RocketMQ(一)

前言&#xff1a;此篇文章系本人学习过程中记录下来的笔记&#xff0c;里面难免会有不少欠缺的地方&#xff0c;诚心期待大家多多给予指教。 RocketMQ&#xff08;一&#xff09; 一、MQ出现的背景 在传统的单体应用架构中&#xff0c;系统的各个模块紧密耦合在一起。随着业务…...

[oeasy]python087_[词根溯源]suspend词源_append_depend

087_[词根溯源]suspend词源_append [词根溯源]suspend词源_append_depend 回忆上次内容 上次了解了 方法 和 函数的 不同之处 方法(method) 函数(function) 需要对象调用 无需对象调用 可以根据 名字调用 无需名字 直接调用 基于类的对象 独立的 需要self 不需要self…...

Ubuntu 安装 Cursor AppImage 到应用程序中

如果 Cursor AppImage 安装到 Ubuntu 系统中&#xff08;而不是每次手动运行 .AppImage 文件&#xff09;&#xff0c;可以按照以下方法操作&#xff1a; 方法 1&#xff1a;直接运行 AppImage&#xff08;最简单&#xff0c;但不完全“安装”&#xff09; 赋予执行权限chmod …...

二叉树 --- 堆(下)

今天我们来把堆完结了。 对于一个高度为 h 的满二叉树&#xff0c;有 F(h) 2 ^ 0 2 ^ 1 …… 2 ^ (h - 1) 2 ^ h - 1 h log2 (N1) 对于一个高度为 h 的完全二叉树&#xff0c;且最后一层只有一个 &#xff0c;则 F(h) 2 ^ 0 2 ^ 1 …… 2 ^ (h - 2) 1 2 ^ (h -…...

数组对象[object],五种如何去重方法 js

前言 数组有很多方法都可以实现去重。本章分享比较常用的。 准备工作 准备一组数组对象 let arr [{ id: "1", name: "张晓", age: 14 },{ id: "2", name: "张晓", age: 14 },{ id: "3", name: "张晓", age: 1…...

PyRoboPlan 库,给 panda 机械臂微分 IK 上大分,关节限位、碰撞全不怕

视频讲解&#xff1a; PyRoboPlan 库&#xff0c;给 panda 机械臂微分 IK 上大分&#xff0c;关节限位、碰撞全不怕 代码仓库&#xff1a;https://github.com/LitchiCheng/mujoco-learning 今天分享PyRoboPlan库&#xff0c;比之前的方式优点在于&#xff0c;这个库考虑了机械…...

【模态分解】EMD-经验模态分解

算法配置页面&#xff0c;也可以一键导出结果数据 报表自定义绘制 获取和下载【PHM学习软件PHM源码】的方式 获取方式&#xff1a;Docshttps://jcn362s9p4t8.feishu.cn/wiki/A0NXwPxY3ie1cGkOy08cru6vnvc...

Sentinel规则持久化pull模式核心源码解析

文章目录 前言一、服务端新增/修改规则1.1、repository.save1.2、publishRules 二、客户端接收规则三、持久化扩展3.1、持久化原理3.1.1、FileRefreshableDataSource3.1.1.1、super关键字3.1.1.2、firstLoad()方法 3.1.2、FlowRuleManager.register2Property 3.2、持久化实现 总…...

【go】--编译

go build -o [编译完成的可执行文件] [需要编译的.go文件]#例如 go build -o myapp main.go#确保编译的结果和当前运行环境相同 #查看arch uname -a在 Linux 中查看和修改 GOOS 和 GOARCH 环境变量&#xff1a; 1. 查看当前 Go 环境变量 # 查看所有Go相关的环境变量 go env# …...

【Spring底层分析】Spring IoC

Spring IoC IoC&#xff1a;控制反转。将对象创建和对象之间的调用交给Spring容器来管理。好处是降低了对象之间的耦合度。 DI&#xff1a;依赖注入。给bean对象注入依赖的对象。 大白话就是&#xff1a;Spring帮你创建对象&#xff0c;对象的属性如果依赖于某个对象&#xf…...

Ubuntu系统进程管理

在Ubuntu系统中&#xff0c;进程管理是系统维护和性能调优的重要部分。以下是关键命令和技巧的总结&#xff0c;帮助你有效管理系统进程&#xff1a; 1. 查看进程 ps 命令&#xff1a;查看当前进程快照。 bash ps aux # 查看所有运行中的进程&#xff08;a所有用户…...

HDU2196 Computer 树形DP

原题链接 既然要查找每个节点的最远到达距离&#xff0c;由于该图是个树&#xff0c;我们就找从根节点向下遍历方向的终点的距离与先返回父节点再从最优的父节点沿着原来的方向的终点的距离的最大值 如图所示 也就是说&#xff0c;我们需要获得当前点的正距离最大值和正距离最…...

【第四十周】文献阅读:用于检索-增强大语言模型的查询与重写

目录 摘要Abstract用于检索-增强大语言模型的查询与重写研究背景方法论基于冻结LLM的重写方案基于可训练重写器的方案重写器预热训练&#xff08;Rewriter Warm-up&#xff09;强化学习&#xff08;Reinforcement Learning&#xff09; 创新性实验结果局限性总结 摘要 这篇论文…...

Istio常用命令

Istio常用命令 1. 安装和配置2. Sidecar 注入3. 验证和状态4. 升级和卸载5. 故障排除6. 配置管理 istioctl 的常用命令及其详细说明&#xff1a; 1. 安装和配置 安装 Istio # 使用指定的配置文件&#xff08;如 demo&#xff09;安装 Istio 到 Kubernetes 集群。 istioctl m…...

Linux基础15

一、网络模型 二、eNSP模拟器 拖拽操作建立模拟网络环境 交换机视图操作&#xff1a; <> 用户视图 [] 系统视图 接口视图 协议视图 ​ display version #显示版本和设备型号 ​ display current-configuration #查看设备配置(查错) ​…...

FISCO BCOS群组扩容实战指南:从原理到操作全解析

引言&#xff1a;为什么需要群组扩容&#xff1f; 在区块链技术迅猛发展的今天&#xff0c;企业级应用对区块链平台提出了更高的要求。"如何在不影响现有业务的情况下扩展区块链处理能力&#xff1f;"、"能否实现不同业务数据的物理隔离&#xff1f;"、&qu…...

【pytorch图像视觉】lesson17深度视觉应用(上)构建自己的深度视觉项目

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、 数据1、认识经典数据1.1入门数据&#xff1a;MNIST、其他数字与字母识别&#xff08;1&#xff09;数据加载&#xff08;2&#xff09;查看数据的特征和标…...

从“被动跳闸”到“主动预警”:智慧用电系统守护老旧小区安全

安科瑞顾强 近年来&#xff0c;老旧小区电气火灾事故频发&#xff0c;成为威胁居民生命财产安全的重要隐患。据统计&#xff0c;我国居住场所火灾伤亡人数远超其他场所&#xff0c;仅今年一季度就发生8.3万起住宅火灾&#xff0c;造成503人遇难。这些建筑多建于上世纪&#x…...

2.1 全栈运维管理:Proxmox VE单节点配置桥接、VLAN和Bonding的详细实验指南

本文是Proxmox VE 全栈管理体系的系列文章之一&#xff0c;如果对 Proxmox VE 全栈管理感兴趣&#xff0c;可以关注“Proxmox VE 全栈管理”专栏&#xff0c;后续文章将围绕该体系&#xff0c;从多个维度深入展开。 概要&#xff1a;本文介绍 Proxmox VE 单节点网络配置。桥接基…...