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

Maven入门学习笔记

一、maven介绍

Maven是一款自动化构建工具,专注服务于JAVA平台的项目构建和依赖管理。在javaEE开发的历史上构建工具的发展也经历了一系列的演化和变迁。

管理jar包

当我们使用SSM之后我们就需要使用非常多的jar包

没有maven找jar包非常的麻烦。

使用maven下载,快捷,方便,便捷。

jar包之间复杂的依赖关系maven也可以非常方便的处理。

jar包之间复杂的引用关系,不可能通过人工来管理,因为其非常的复杂。

Maven作为构建管理工具

之前的构建是idea帮我们完成的也就是,在部署javaweb时的工件,war包是idea自动替我们生成出来了,idea帮我们做了打包和部署的工作。运行后出来的out目录就是编译后得到的文件。

在Tomact中真正运行的是out目录中的文件,也就是编译后的out目录。

1.maven是用来管理规模庞大的jar包。

2.maven可以让web程序脱离IDE环境执行,也就是发布给用户使用。

1.2:构建环节

构建不等于创建,构建就是使用原材料来生产产品。就是用你写的代码组成一个最终的产品。也就是在服务器上运行的项目,能提供给用户使用。

(1)清理:删除以前的编译结果,为重新编译做好准备。

(2)编译:将java源码程序编译为字节码文件。

(3)测试:运行单元测试用例程序,确报项目在开发过程中关键点的正确性。

(4)报告:测试程序的结果。

(5)打包:将java项目打成jar包;将web项目打成war包。

(6)安装:将jar包或war包安装到本地仓库

(7)部署:将jar包或war从Maven仓库中部署到Web服务器上运行。

对结构进行了统一:

把一个项目运用对象的管理的方式去管理。

1.3:依赖

如果工程A里面用到了B工程的接口、类、配置文件等等这样的资源,那么我们是A依赖于B

对A来说没有B,A就不能正常工作。

1.4:Maven的工作机制

二、Maven下载与安装配置

2.1:Maven下载:

官网:

Maven – Welcome to Apache Maven

下载地址:

http://maven.apache.org/download.cgi

2.2:配置MAVEN—HOME

三、Maven的仓库和坐标

3.1:仓库:用于存储资源,包含各种jar包。

中央仓库都是开源的。

私服不是开源的。

3.2:坐标:用于查找需要的资源

Maven中的坐标用于描述仓库中资源的位置

Central Repository:

https://mvnrepository.com

用于查找你需要的jar包和资源。

坐标的书写方式,通过复制粘贴的方式使用。

3.3:本地仓库配置:

1.执行mvn后C:\Users\Administrator路径下会出现.m2文件夹,这个就是你的仓库

因为C盘为系统盘,为了系统的流畅我们需要修改仓库的位置

2.修改仓库位置

在maven中的conf文件夹中的setting文件中修改默认的仓库位置

这样就配置好了本地仓库的位置。

3.4:远程仓库配置:

将获取网址改为国内的阿里镜像仓库网址

将这段代码加入到setting.xml文件中的mirror标签中

3.5:全局setting和用户setting用户的区别

  • 全局就是所有用户登录都会按照setting中的配置。

  • 用户setting就是不同用户登录有自己个性化的setting配置。

在本地仓库中再建立一个setting文件,这样就可以实现用户的自定义个性化的setting配置。

四、第一个Maven项目(手工制作)

4.1:Maven工程目录结构

4.2:Maven的pom配置

maven工程要求再src的同级目录下创建一个pom.xml文件来管理项目

这样目录结构就做好了,接下来需要构建项目。

4.3:Maven项目构建命令

在pom所在文件夹进入cmd执行

4.3.1:maven的编译(mvn compile)

执行编译后会下载所需要的插件,执行compile所对应的插件,也是maven项目所需要的东西,我们现在就是将各种东西拼凑出一个maven项目。mvn compile命令可以用来编译,当你的文件中没有能编译的环境时,它就会下载所需要的插件,来帮助它完成编译操作。

下载完成后编译,编译完成后显示编译成功

编译完成后多出一个目录target

target中放的就是编译完成的结果

target文件夹中的classes文件夹中放的是源程序编译后字节码。

test-classes中放的是测试程序编译后生成的字节码

4.3.2:maven清理编译(mvn clean)

同样是先下载运行命令所需要的插件

然后执行命令的功能

清理完成后target文件夹将会被清空

4.3.3:maven测试(mvn test)

在target文件下的surefire-reports中的txt文件中可以看到测试的结果。

详细信息在xml文件中,xml文件中有测试所用到的各种东西的信息,比如jdk版本所用字符集等。

4.3.4:maven打包(mvn package)

maven只会打包你的源程序

打包指令会先将你的项目编译,然后执行测试程序,当测试程序没有问题之后再进行打包

打包的结果放到target文件夹下

就是这个后缀为jar的文件。

4.3.5:maven安装(mvn install)

就是把现在的项目放到本地仓库里

放在com文件夹下

在pom文件中配置的groupid为com.itheima所以放到了com文件夹下

maven安装也会执行一遍编译和测试,以便于确保打包的准确性

4.4:使用模板创建Maven工程

使用模板来创建工程

在目录中执行命令就可以快速的创建一个maven项目

4.5:pom.xml解读

pom.xml是maven工程的核心配置文件,后续所要做的所有的配置都是在pom.xml中做的。

甚至可以说我们学习maven怎么用就是在学pom.xml怎么用。

<!--project标签:根标签:project project就是工程的意思可以翻译成工程也可以翻译成项目,代表着我们这个pom.xml是对当前工程进行配置、管理-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><!--modelVersion标签:从maven2固定是4.0.0  代表当前pom.xml所采用的标签结构--><modelVersion>4.0.0</ modelVersion><!--groupId 标签:坐标向量之一:代表公司或组织开发的某一个项目artifactId标签:坐标向量之一:代表项目下的某一个模块version标签:坐标向量之一:代表当前模块的版本就是我们的坐标信息,工程的坐标信息简称gav--><groupId>com.atiguigu.maven</groupId><artifactId>pro01-maven-java</artifactId><version>1.0-SNAPSHOT</version><!--packaging标签:当前maven工程打包的方式,默认方式是以jar包的方式进行打包,生成jar包说明这是一个java工程,如果取值是war那么打包说明这是一个web工程--><!--取值pom:说明这个这个工程是用来管理其它工程的工程--><packaging>jar</packaging><!--name是工程名--><name>pro01-maven-java</name><!--url是maven的官网--><url>http://maven.apache.org</url>
<!--properties标签:在Maven中定义属性值,其中包含的标签是属性名,其中的内容是属性值,可以是maven给我们提供的属性值也可以是我们自定义的属性值--><properties><!--在构建过程中读取源码时使用的字符集--><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties>
<!--dependencies 标签:配置具体依赖信息,就是通过dependencies来导入jar包--><dependencies><!--dependency 标签用来配置一个具体的依赖信息--><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope><!--通过坐标来指定依赖,想导入哪个jar包就配置她的坐标信息即可scope标签用来配置当前依赖的范围。就像junit就是用来做单元测试的它的范围就是test--></dependency></dependencies>
</project>

4.6: Maven核心概念:POM

4.6.1:含义

POM:Project Object Model,项目对象模型。和POM类似的是DOM(Document Object Model),文档对象模型,它们都是模型化思想的具体体现。

4.6.2:模型化思想

POM表示将工程抽象为一个模型,再用程序中的对象来描述这个模型,这样我们就可以用程序来管理项目了。我们在开发过程中,最基本的做法就是将生活中的事物抽象为模型,然后封装模型相关的的数据作为一个对象,这样就可以在程序中计算与现实事物相关的数据。

4.6.3:对应的配置文件

POM理念集中体现在Maven工程根目录下pom.xml这个配置文件中。所以这个pom.xml配置文件就是Maven工程的核心配置文件。其实学习Maven就是学习这个文件怎么配置,各个配置有什么用。

4.7:简单的maven程序测试

程序代码

测试代码

4.8:创建Maven版的Web工程

1.说明

使用mvn archetype:generate命令生成web工程时,需要使用一个专门的archtype.这个专门生成web工程骨架的archtype可以参照官网看它的用法:

2.操作

mvn archetype:generate -DarchetypeGroupId=org.apache.maven.archetypes -Da

 运行完这个命令目录结构为

接下来需要自己创建servlet和test目录 

7.编译

此时直接执行编译会报错,因为缺少HttpServlet程序包(类)不存在。

我们需要自己去导入包

HttpServlet这个类是在servlet-api这个jar包中,所以我们要导入这个包。

8.配置对servlet-api.jar包的依赖:

https://mvnrepository.com/

网站查询到相应的jar包并使用。

 

五、让Web工程去依赖Java工程(两个工程都是我们之前创建的,这里学习怎样依赖我们自己创建的工程)

5.1:观念

明确从来只有Web工程依赖java工程,没有java工程依赖Web工程。本质上来说,Web工程依赖的Java工程实际上就是导入Web工程中的jar包。最终java工程会变成jar包放在Web工程的WEB-INF/lib目录下。

5.2:操作

只需要在pom.xml中加入对应java工程的坐标就可以了

创建test目录将TestHelloServlet.java复制到test目录中执行mvn test这时是可以正确执行的也就是我们通过maven将我们的java工程导入到了我们的web工程这时候我们再对pro02项目进行打包,导入的java工程的jar包就会出现在WEB-INF/lib文件夹下

六、测试依赖的范围

6.1:依赖范围

标签的位置:dependencies/dependency/scope

标签的可选值:

  1. compile(编译范围):这是<scope>标签的默认选项。被标记为compile的依赖会在项目的编译、测试和运行阶段都被包含进来。在项目打包时,这些依赖会被打入最终的包里面。
  2. test(测试范围):被标记为test的依赖仅在测试阶段有效,它们不会被包含进最终的打包结果中。这适用于仅在测试时需要的库,比如JUnit或TestNG等测试框架。
  3. runtime(运行时范围):runtime范围的依赖在运行和测试阶段可用,但在编译阶段不可用。这通常用于那些在编译时期不需要,但在运行时期需要用到的依赖项。
  4. provided(已提供范围):provided依赖在编译和测试时有效,但在运行时预期由容器或运行环境提供。例如,当你的Web应用运行在Servlet容器中时,servlet-api就是一个provided依赖,因为容器已经提供了这个API。
  5. system(系统范围):system范围的依赖与provided类似,它表示依赖在编译和测试时有效,但不会在运行时由Maven自动提供,必须手动提供。这种类型的依赖很少使用,因为它破坏了Maven跨平台一致性的目标。
  6. import(导入范围):import范围的依赖只在dependencyManagement中使用,它不会影响到实际的项目依赖树。也就是说,这样的依赖不会被传递到项目的其他部分。
  7. optional(可选范围):被标记为optional的依赖意味着即使没有这个依赖,项目也能正常构建。它通常用于可选功能,如果存在,可以增加一些附加的功能,但并不是必需的。

 

 

 七、Maven之间的依赖传递

7.1:compile依赖传递

只要与上一级依赖的关系是compile就可以传递给之后的依赖使用

mvn dependency:tree

mvn dependency:list

7.2:compile依赖传递中的版本冲突 

如图所示,如果B和C都依赖与D但是所依赖的版本不同,那么就会出现冲突,这时我们只需要在A依赖B时做配置,那么A项目中就不再会有D0.1的版本,同时不影响B对D0.1的依赖。 

八、Maven中的继承

8.1:概念

Maven工程之间,A工程继承B工程

  • B工程:父工程

  • A工程:子工程

Maven中的继承本质上就是POM.XML文件的继承

本质上是A工程中的pom.xml中的配置继承了B工程中的pom.xml的配置。

8.2:作用

在父工程中统一管理项目中的依赖信息,具体来说是管理依赖信息的版本

作用:将父工程作为模板,模板内容就是依赖的jar包,以这个模板开发众多项目,当模板改变时因为开发的项目是该模板的子工程,这时就可以通过修改父工程来实现一处修改,处处生效,避免了模板改动,所有子项目都需要一,一改动,避免了重复无意义的工作。

8.3:创建父工程

父工程中是不写java程序的仅仅提供pom文件即可。

不写java代码

8.4:在父工程中创建子工程 

8.5:在父工程中统一管理依赖信息 

在父工程中管理这些依赖,后子工程并不会直接能使用这些依赖。

想要使用依赖仍旧要引用,但是不用再写版本号,因为父类已经选好了

  • 情况一:子工程省略version标签

    子工程使用的依赖版本就是父工程管理的依赖版本。

  • 情况二:没有省略version标签

    1.和父工程管理的版本一样:多此一举

    2.和父工程管理的版本不一样:子工程指定的版本覆盖了父工程管理的版本最终采纳的子工程中配的

子工程按自己的需要从父工程中拿就好,不用全部拿过来。

如果想升级依赖版本,在父工程中一处修改,处处生效

8.6:通过配置自定义属性来实现只修改一处就可以改变所有

 通过引用的方式来实现动态的修改所有引用该值的依赖版本

8.7:父工程的实际意义

实践层面的意义就是可以吸取公司之前的项目经验使用合适的依赖版本,不用反复的造轮子,而是将更多的时间放到项目的功能开发。

九、聚合

9.1:配置方式

就是modules标签里面配moudle

9.2:配置聚合的意义

聚合就是部分组成整体,各个模块组成了我们整个的项目。

项目:整体

模块:部分

在总工程中执行mvn命令其中的模块也能同时执行。

总工程中会自动去按照项目之间依赖的关系来执行mvn命令。

例如在4中依赖5

在5中依赖6

那么在3中执行mvn install命令就会先安装6再安装5再安装4

这个时候不能让6依赖4,不能形成闭环,不然就会报错。 

十、在IDEA中使用Maven

10.1:创建父工程并配置Maven信息

10.1.1:设置idea中的Maven仓库地址为自己的地址

同时将配置文件改成自己的

 

10.1.2:修改POM文件

修改pom文件为自己需要的样子。

10.2:创建子工程模块

10.2.1:创建java模块工程

新建工程模块后父工程中IDEA会帮我们添加packing标签为pom,modules标签为子工程名

10.2.2:测试java子工程模块

1.导入junit,(如果是我们不熟悉的就去网站找然后复制配置信息)

2.编写测试程序

在main的java目录下编写程序

3.在test的java目录下编写测试程序 

4.运行测试程序

10.2.3:创建Web子工程模块

创建web子工程模块,选择webapp的archtype

10.2.4:编写web测试程序

1.java程序

2.index.jsp页面

3.配置本地Tomact 

4..测试效果

需要注意的是maven对web工程的目录上下级有特殊的要求如果没有按照要求来,那么打包的时候会出问题,所以建议使用maven的模板来创建工程

10.3:工程导入

怎样导入别人的maven工程

找到pom.xml存在的目录idea就能够识别,将它打开。

每一个新的project需要重新配置本地仓库位置,项目中的moudle则不需要。

10.4:模块导入

10.4.1:将需要导入的模块文件夹放入项目

这个时候IDEA还没有将其检测为模块,只是看成一个普通的文件夹

10.4.2:添加为模块

让IDEA以Maven的方式来导入文件夹为模块

当添加的模块为web模块时要配置正确的web.xml路径,否则maven在打包时不能正确的识别并进行打包。

相关文章:

Maven入门学习笔记

一、maven介绍 Maven是一款自动化构建工具&#xff0c;专注服务于JAVA平台的项目构建和依赖管理。在javaEE开发的历史上构建工具的发展也经历了一系列的演化和变迁。 管理jar包 当我们使用SSM之后我们就需要使用非常多的jar包 没有maven找jar包非常的麻烦。 使用maven下载…...

linux驱动开发-arm汇编基础

目录 写在前面 1、Cortex-A7 处理器有 9 种处理模式 2、Cortex-A 寄存器组 通用寄存器 1、汇编语法 2、Cortex-A7 常用汇编指令 2.1 处理器内部数据传输指令 2.1.1 传输数据操作类型 1、MOV指令 2、MRS指令 3、MSR指令 2.2、存储器访问指令 2.2.1 LDR指令 2.2.2 …...

【HarmonyOS】鸿蒙头像上传-(编辑个人信息页- 头像上传)+实时数据更新

#效果图 #思路 ##步骤&#xff1a; ###一、利用picker api选择1张图片 实例化选择器参数(使用new PhotoSelectOptions())实例化图片选择器 (使用newPhotoViewPicker() )调用图片选择器的select方法传入选择器参数完成图片选取获得结果 利用picker api选择1张图片 async sele…...

[数据集][目标检测]无人机识别检测数据集VOC+YOLO格式6986张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;6986 标注数量(xml文件个数)&#xff1a;6986 标注数量(txt文件个数)&#xff1a;6986 标注…...

基于SSM的二手交易管理系统的设计与实现 (含源码+sql+视频导入教程+文档)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1 、功能描述 基于SSM的二手交易管理系统1拥有两种角色 管理员&#xff1a;商品管理、订单管理、充值管理、用户管理等用户&#xff1a;发布商品、查看闲置、充值账户、查看所有订单、发布求购信息、修…...

linux-centos 设置系统时间

CentOS 系统提供了多种方式来设置和管理时间&#xff0c;包括手动设置时间和使用网络时间协议 (NTP) 自动同步时间。以下是几种常见的方法&#xff1a; 手动设置时间 使用date命令临时设置时间&#xff1a; 如果你只需要临时设置时间&#xff0c;可以使用 date 命令&#xff1…...

【Linux基础】冯诺依曼体系结构操作系统的理解

目录 前言一&#xff0c;冯诺依曼体系1. 为什么有内存结构?2. 对硬件中数据流动的再理解 二&#xff0c;操作系统(Operator System)1. 概念2. 操作系统结构的层状划分3. 操作系统对硬件管理的理解4. 用户与操作系统的关系的理解5. 系统调用和库函数的关系6. 为什么要有操作系统…...

算法题解:斐波那契数列(C语言)

斐波那契数列 斐波那契数列是一个经典的数学序列&#xff0c;其中每一项的值是前两项的和。数列的前两项通常定义为0和1&#xff0c;即&#xff1a; F(0) 0 F(1) 1 F(n) F(n-1) F(n-2) (n ≥ 2)输入一个正整数n&#xff0c;求斐波那契数列的第n项。 样例 假设输入 n …...

SSM 框架 个人使用习惯 详细

SpringMVC主要是controller、service、dao&#xff08;mapper&#xff09;层交互 controller&#xff1a;处理数据请求的接口 service&#xff1a;处理请求的数据 dao&#xff08;mapper&#xff09;&#xff1a;对数据进行持久化 下面我将对controller和service.impl进行讲…...

[羊城杯 2020]Blackcat1

知识点&#xff1a;数组加密绕过 进入页面熟悉的web三部曲&#xff08;url地址&#xff0c;web源代码&#xff0c;web目录扫描&#xff09; url地址没有什么东西去看看源代码. 这有一个mp3文件点一下看看. 在最后面发现了 PHP源码. if(empty($_POST[Black-Cat-Sheriff]) || em…...

腾讯云Ubuntu系统安装宝塔,配置Java环境,运行spring boot项目

致谢 本次学习宝塔部署spring boot项目&#xff0c;参考如下资料 https://www.cnblogs.com/daen/p/15997872.html 系统安装宝塔 直接用的腾讯云云服务器面板上的登录&#xff0c;你可以换成 xshell 进入宝塔官网&#xff1a; https://www.bt.cn/new/download.html 我们采…...

双亲委派机制知识点

类加载器 双亲委派模型 为什么采用双亲委派模型 打破双亲委派机制的场景 Tomcat 打破双亲委派机制:目的是可以加载不同版本的jar包 实现类隔离&#xff1a;在Tomcat中&#xff0c;每个Web应用使用独立的类加载器加载类文件&#xff0c;这样做的好处在于&#xff0c;当在同一T…...

vue part 11

vuex的模块化与namespace 115_尚硅谷Vue技术_vuex模块化namespace_1_哔哩哔哩_bilibili 116_尚硅谷Vue技术_vuex模块化namespace_2_哔哩哔哩_bilibili vue-router路由 很常见的很重要的应用&#xff1a;Ajax请求&#xff0c;将响应的数据替换掉原先的代码从而实现不跳转页面…...

【QT】常用类

欢迎来到Cefler的博客&#x1f601; &#x1f54c;博客主页&#xff1a;折纸花满衣 &#x1f3e0;个人专栏&#xff1a;QT 目录 &#x1f449;&#x1f3fb;QMediaPlayer&#x1f449;&#x1f3fb;QMediaPlaylistsetPlaybackMode &#x1f449;&#x1f3fb;QDir&#x1f449;…...

从index_put出发全面学习cuda和pytorch技术

一 前言 深感目前对于cuda和pytorch所涉及知识的广度和深度,但一时又不知道该如何去学习,经过多日的考虑,还是决定管中窥豹,从一个算子出发,抽丝剥茧,慢慢学习,把学习中碰到的问题都记录下来,希望可以坚持下去。 二 函数功能描述 【torch算子】torch.index_put和tor…...

浅谈住房城乡建设部科技创新平台布局重点方向

最近住房建设部组织开展住房城乡建设部科技创新平台&#xff08;以下简称部科技创新平台&#xff09;申报工作。详细内容见住房城乡建设部科技创新平台开始申报了 (qq.com)。在这里有4大方向共15个课题。内容见下图&#xff1a; 虽然我是做技术的&#xff0c;但是如何体现创新还…...

调用 write()函数后,如何知道数据是否已经写入磁盘?

在 Linux 中调用 write() 函数后&#xff0c;可以通过以下几种方式来确定数据是否已经写入磁盘&#xff1a; 一、使用同步函数 1. fsync() 函数&#xff1a; - 这个函数会强制将与文件描述符相关的所有修改过的内核缓冲区写入磁盘&#xff0c;并等待直到磁盘 I/O 操作完…...

策略路由与路由策略的区别

&#x1f423;个人主页 可惜已不在 &#x1f424;这篇在这个专栏 华为_可惜已不在的博客-CSDN博客 &#x1f425;有用的话就留下一个三连吧&#x1f63c; 目录 一、主体不同 二、方式不同 三、规则不同 四、定义和基本概念 一、主体不同 1、路由策略&#xff1a;是为了改…...

从底层原理上理解ClickHouse 中的稀疏索引

稀疏索引&#xff08;Sparse Indexes&#xff09;是 ClickHouse 中一个重要的加速查询机制。与传统数据库使用的 B-Tree 或哈希索引不同&#xff0c;ClickHouse 的稀疏索引并不是为每一行数据构建索引&#xff0c;而是为数据存储的块或部分数据生成索引。这种索引的核心思想是通…...

xtu oj 锐角三角形

锐角三角形 题目描述 n条边&#xff0c;任选3条边&#xff0c;能组成多少个锐角三角形&#xff08;选的边不同就认为是不同的三角形&#xff09;&#xff1f; 输入 第一个是一个整数T(1≤T≤1000)&#xff0c;表示样例的个数。 每个样例占2行&#xff0c;第一行是一…...

变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析

一、变量声明设计&#xff1a;let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性&#xff0c;这种设计体现了语言的核心哲学。以下是深度解析&#xff1a; 1.1 设计理念剖析 安全优先原则&#xff1a;默认不可变强制开发者明确声明意图 let x 5; …...

超短脉冲激光自聚焦效应

前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应&#xff0c;这是一种非线性光学现象&#xff0c;主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场&#xff0c;对材料产生非线性响应&#xff0c;可能…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)

🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...

LLM基础1_语言模型如何处理文本

基于GitHub项目&#xff1a;https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken&#xff1a;OpenAI开发的专业"分词器" torch&#xff1a;Facebook开发的强力计算引擎&#xff0c;相当于超级计算器 理解词嵌入&#xff1a;给词语画"…...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)

本期内容并不是很难&#xff0c;相信大家会学的很愉快&#xff0c;当然对于有后端基础的朋友来说&#xff0c;本期内容更加容易了解&#xff0c;当然没有基础的也别担心&#xff0c;本期内容会详细解释有关内容 本期用到的软件&#xff1a;yakit&#xff08;因为经过之前好多期…...

保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek

文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama&#xff08;有网络的电脑&#xff09;2.2.3 安装Ollama&#xff08;无网络的电脑&#xff09;2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...

【Go语言基础【13】】函数、闭包、方法

文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数&#xff08;函数作为参数、返回值&#xff09; 三、匿名函数与闭包1. 匿名函数&#xff08;Lambda函…...

iview框架主题色的应用

1.下载 less要使用3.0.0以下的版本 npm install less2.7.3 npm install less-loader4.0.52./src/config/theme.js文件 module.exports {yellow: {theme-color: #FDCE04},blue: {theme-color: #547CE7} }在sass中使用theme配置的颜色主题&#xff0c;无需引入&#xff0c;直接可…...

十九、【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建

【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建 前言准备工作第一部分:回顾 Django 内置的 `User` 模型第二部分:设计并创建 `Role` 和 `UserProfile` 模型第三部分:创建 Serializers第四部分:创建 ViewSets第五部分:注册 API 路由第六部分:后端初步测…...

Kubernetes 节点自动伸缩(Cluster Autoscaler)原理与实践

在 Kubernetes 集群中&#xff0c;如何在保障应用高可用的同时有效地管理资源&#xff0c;一直是运维人员和开发者关注的重点。随着微服务架构的普及&#xff0c;集群内各个服务的负载波动日趋明显&#xff0c;传统的手动扩缩容方式已无法满足实时性和弹性需求。 Cluster Auto…...