框架基础-Maven+SpringBoot入门

news2024/11/15 8:38:49

框架基础

Maven基础

  1. Maven概述

    Maven是为Java项目提供项目构建和依赖管理的工具

  2. Maven三大功能

- 项目构建
	构建:是一个将代码从开发阶段到生产阶段的一个过程:清理,编译,测试,打包,安装,部署等
- 依赖管理
	Jar包下载,Jar包依赖,jar包冲突
- 契约编程
	约定大于配置,配置大于编码

注意:Maven连接远程仓库是需要联网的,如果没有网络那么会构建失败

  1. Maven仓库

所谓仓库就是用来存放Jar包和插件的地方,在Maven中仓库又分为三种:

  • 本地仓库

  • 远程仓库

    • 中央仓库
    中央仓库依赖搜索地址,**建议收藏**:https://mvnrepository.com/
    
    • 私服仓库

    注意:私服仓库搭建技术:Nexus

  1. Maven配置
第一步:创建本地仓库文件夹
第二步:修改settings.xml配置文件中的本地仓库地址
第三步:配置阿里云镜像
第四步:配置JDK版本

注意:记得保存配置

  1. Maven坐标

    Maven中的坐标是项目的唯一标识,通过该坐标可以确定项目Jar包在仓库中的位置,也可以通过坐标来引入项目中所需要的三方依赖

    Maven坐标主要组成

    • groupId:当前Maven项目隶属于组织名称,通常都是公司域名反写,例如:cn.itsource
    • artifactId:项目或者是项目中的一个模块的名称
    • version:当前Maven项目版本号,根据需求进行设定
      • SNAPSHOT:快照版本,正在迭代过程中,不稳定的版本
      • RELEASE:释放,表示正式版本,稳定版本

    注意:当我们需要某一个jar包时,可以通过坐标本地仓库的jar包或依赖包

    当然:我们的项目也可以安装到本地仓库,执行install命令将项目打成Jar包放在本地仓库中

     <parent>
            <groupId>cn.zhj</groupId>
            <artifactId>parent</artifactId>
            <version>1.0-SNAPSHOT</version>
        </parent>
    
  2. Maven命令

**mvn compile:**编译 - 将java源文件.java 编译成 字节码文件.class

**mvn clean:**清理 - 将编译好的字节码文件删除掉

**mvn clean compile:**清理+编译

**mvn test:**测试 - 运行测试代码,测试代码编译在target的test-classes中

​	注意:src/test/java中的所有测试类的所有方法都会自动运行,但是测试类的类名有要求:TestXxx 或 XxxTest

**mvn package:**打包【.class字节码文件】

**mvn source:jar:**打源码包【.java文件】

**mvn install:**安装 - 将项目打包然后将jar包安装到本地仓库中

**mvn package -Dmaven.test.skip=true:**打包的时候跳过测试类

注意:测试的时候看下目录结构的变化和maven仓库目录的变化

  1. 搜索并下载依赖

    第一步:中央仓库依赖搜索地址:https://mvnrepository.com/

    第二步:将搜索到的依赖导入拷贝到pom.xml中,然后点击刷新,点击刷新时如果本地仓库有当前版本的依赖就不会去下载,直接引用本地仓库的依赖。如果没有就会去远程仓库下载,下载到本地再引用

    注意:如果本地仓库有,可以直接提示直接引入

  2. IDEA执行Maven命令

    在IDEA中执行Maven命令非常简单,只需要点击右侧Maven按钮,然后在工程的生命周期中双击想要执行的命令即可

  3. 查看工程依赖(略)

  4. 依赖传递

    在Maven中依赖是具有传递性的,例如我们刚才项目中只引入了Junit依赖,但是我们也间接依赖了Junit的其他依赖。在Maven项目中依赖分为直接依赖和间接依赖:

    • 直接依赖:Junit就是工程的直接依赖

    • 间接依赖:hamcrest-core就是工程的间接依赖

  5. 依赖排除

    Maven具有依赖的传递性对我们来说是非常大的一个好处,因为这样就避免我们需要去自己引入间接依赖。但是有时候我们在引入多个依赖时,简介依赖的版本不一致会导致依赖冲突,那么此时我们就需要阻断依赖。以Junit为例,阻断间接依赖

	<dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.13.2</version>
        <scope>test</scope>
        <!--排除依赖标签,可以写多个-->
        <exclusions>
            <!--排除依赖标签,写具体要排除那个依赖,只需要写GA坐标即可-->
            <exclusion>
                <!--要排除依赖的G坐标-->
                <groupId>org.hamcrest</groupId>
                <!--要排除依赖的A坐标-->
                <artifactId>hamcrest-core</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
  1. 依赖范围

在Maven中依赖是具有作用范围的,默认情况下依赖的Jar包在任何地方都可以使用,我们可以通过…进行依赖作用范围的指定:

  • 主程序范围有效:main文件夹范围内
  • 测试程序范围有效:test文件夹范围内
  • 是否参与打包运行:package指令范围内

scope取值

scope值主程序main测试程序test打包/运行
compile–默认YYY
testNYN
providedYYN
runtime-YY
  1. 清理Maven仓库

    初始情况下,我们的本地仓库是没有任何Jar包的,第一次会联网进行下载,可能由于网络的原因,Jar包下载不完全,这些不完整的jar包都是以lastUpdated结尾

    注意:如果依赖下载失败,Maven识别到以lastUpdated结尾的文件后就不会再重新帮你下载,需要你删除这些以lastUpdated结尾的文件,然后Maven才会再次自动下载这些Jar包,以后实际开发中如果项目引入了某Jar包刷新后依赖依然报错,那么就需要检查一下此Jar包是否下载成功

    解决方案:有时下载依赖有可能批量下载失败,那么此时我们手动去挨着找就非常麻烦,那么我们可以定义一个脚本文件,双击即可全部清除

    第一步:在桌面创建一个del_lastUpdated.bat文件,创建文本改后缀即可

    第二步:右键编辑bat文件,拷贝以下命令并修改本地仓库文件夹绝对地址

    set REPOSITORY_PATH=本地仓库文件夹绝对地址
    rem 正在搜索...
    del /s /q %REPOSITORY_PATH%\*.lastUpdated
    rem 搜索完毕
    pause
    

    第三步:双击执行脚本,即可清除本地仓库下所有lastUpdated文件

Maven高级

继承

在Java中有继承的概念,就是子类继承父类的所有方法和属性。在Maven中同样有继承的概念并且与Java一致都是单继承,本质上Maven的继承就是pom.xml配置的继承

  • A工程继承了B工程,那么A工程就继承了B工程的pom.xml所有配置
  • Maven继承的层级是没有限制的,大型互联网项目中层级会非常多,我们只需要按照规则去梳理层级即可
  1. 为什么需要继承

    原因一:真实开发中,依赖动则几十上百个依赖,那么这些依赖的版本管理是非常复杂的,为了方便版本管理,那么可以在父工程中统一管理版本信息。子工程直接使用对应版本即可,SpringBoot框架就是使用了Maven继承手段进行开发简化

    原因二:真实开发中,一个项目会有很多个子工程,这些子工程都有自己的依赖,那么肯定会有一些重复的依赖,为了减少子工程重复导入依赖坐标信息,可以放在父工程中进行依赖抽取,子工程通过继承的方式进行依赖的引入

  2. 搭建Maven继承工程

    第一步:创建一个Maven工程

    第二步

    • 删除父工程下的src文件夹,因为父工程只负责管理pom.xml,不负责编写代码,所以不需要src文件
    • 修改打包方式为pom,只有打包方式为pom的工程,才能管理其他Maven工程

    第三步:创建子工程/Maven模块

  3. 父子工程解析

    • 子工程创建好之后,会自动生成parent标签,指向父工程的GAV坐标
    • 子工程是不需要写GV坐标的,因为继承自父工程,子工程只需要提供A坐标即可
    • 父工程中有子工程后会自动生成modules标签,代表聚合配置,后续会进行讲解
  4. 父工程管理依赖

    第一步:父工程管理依赖

    • dependencyManagement:此标签用于在父工程中管理依赖,但是不负责引入此依赖到工程中,子工程需要使用什么依赖还是需要在自己的子工程中手动引入,只是不需要引入版本,版本来自父工程

    第二步:子工程引入依赖

  5. 配置自定义属性

    父工程在真实开发中会管理众多的依赖,那么这些依赖的版本号如果都写在各自的GAV坐标中其实管理起来也颇为复杂,所以我们可以自定义属性进行管理

    • properties:此标签是配置标签,我们可以在标签内自定义标签来定义属性值,此属性值可以被引用
      • itsource.junit.version:此标签是自定义的,标签名称就是属性引用名称,标签的值就是版本值
    • ${}:通过此方式可以引入自定义属性,大括号中的值就是自定义标签的值

项目结构:

在这里插入图片描述

实例代码:

<!-- parent的pom.xml -->
<?xml version="1.0" encoding="UTF-8"?>
<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>4.0.0</modelVersion>

    <groupId>cn.zhj</groupId>
    <artifactId>parent</artifactId>
    <version>1.0-SNAPSHOT</version>

    <packaging>pom</packaging>
    <modules>
        <module>son1</module>
        <module>son2</module>
    </modules>

    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <dom4j-version>1.1</dom4j-version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>dom4j</groupId>
                <artifactId>dom4j</artifactId>
                <version>${dom4j-version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.1</version>
<!--            <scope>test</scope>-->
        </dependency>
    </dependencies>

</project>
<!-- son1的pom.xml -->
<?xml version="1.0" encoding="UTF-8"?>
<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>4.0.0</modelVersion>
    <parent>
        <groupId>cn.zhj</groupId>
        <artifactId>parent</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>

    <artifactId>son1</artifactId>

    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>dom4j</groupId>
            <artifactId>dom4j</artifactId>
        </dependency>
    </dependencies>

</project>
<!-- son2的pom.xml -->
<?xml version="1.0" encoding="UTF-8"?>
<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>4.0.0</modelVersion>
    <parent>
        <groupId>cn.zhj</groupId>
        <artifactId>parent</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>

    <artifactId>son2</artifactId>

    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
    <dependencies>
        <dependency>
            <groupId>dom4j</groupId>
            <artifactId>dom4j</artifactId>
        </dependency>
    </dependencies>
</project>

聚合

  1. 什么是聚合

    在父pom.xml中的modules标签就是聚合标签,他表示了此工程由哪些模块组成,modules下的module也代表了此父工程管理了哪些子模块

  2. 聚合的好处

    好处一:如果没有聚合,那么我们例如在执行mvn install命令时,Maven会要求有父工程时先安装父工程,有依赖工程时先安装依赖工程,那么我们自己来考虑这些规则就非常麻烦,我们可以直接对父工程执行mvn install,那么整个工程就自动打包好了

    好处二:配置聚合之后,各个子模块在父工程中展示一个列表,可以快速让我们知道整个项目的继承结构

MAVEN扩展知识

1. IDEA的目录结构
 Maven项目结构:
     .idea目录 - idea中项目配置文件,如果删除了项目崩溃
 	src - 项目开发目录
 	target - maven项目编译目录
 	.gitignore - git项目版本控制器上传到码云gitee,githup上时忽略文件
 	pom.xml - maven项目核心配置文件
 	设置如何不显示再IDEA中:
 		settings - Editor - File Types - Ignored Files and Folders

Spring概述

Spring发展史

  1. Spring时代

    Spring框架于2003年首次发布,由Rod Johnson创立,它的目标是简化Java开发,并提供一种更灵活、高效的替代方案

    Spring框架引入了依赖注入(DI)和面向切面编程(AOP)等新概念,以减少组件之间的耦合度、提高代码的可维护性和可测试性

    Spring通过IoC容器(控制反转容器)来管理对象之间的依赖关系,并提供了许多其他功能模块,如数据访问、事务管理、安全性等,使开发者能够更专注于业务逻辑的实现

    **小结:**Spring提供IOC控制反转 - 管理对象,提供了AOP - 抽取公共业务

  2. SpringBoot时代

    随着时间的推移,Spring框架变得越来越强大和复杂,为了简化Spring应用程序的开发和部署,SpringBoot在2014年推出

    Spring Boot是一个用于快速构建独立的、生产级的Spring应用程序的框架。它采用了约定大于配置的原则,通过自动配置和默认值设置,减少了繁琐的配置工作,提供了更简单、更轻量级的开发体验

    Spring Boot还集成了一些常用的第三方库和工具,如内嵌的Servlet容器、自动化的构建工具(如Maven和Gradle)、健康检查、监控等,使开发者能够更快速地启动和运行Spring应用程序

  3. 总结

    总体而言,Java企业级开发经历了从繁琐复杂的Java EE时代到简化灵活的Spring时代,再到更快速便捷的Spring Boot时代的演进

    这些框架和工具的不断演进和创新,推动了Java开发领域的发展,为开发者提供了更好的工具和技术支持,助力他们构建出高质量、可扩展的企业级应用程序

    现在在Java领域Spring已经形成了一种开发生态圈了,Spring提供了各个领域的开发解决方案,所以现在在任何Java项目中都有Spring的身影,有一句话叫做面向Spring编程,毫不夸张。Spring的这一套技术我们也称为Spring全家桶【spring,springJDBC,SpringMvc,SpringBoot,SpringCloud】

Spring简介

Spring框架全称SpringFramework,一般都简称为Spring

官网地址:https://spring.io/

在Spring中提供了很多的开源项目,这些开源项目为我们在Java开发中提供了各个领域的解决方案

在Spring全家桶中的众多项目中,SpringFramework项目是最为核心的,所有的项目都是基于Spring Framework的,其中SpringBoot是SpringFramework的高级版本

为什么不再选择Spring

  • 在企业级开发中,我们选择Spring Framework进行开发,那么我们会面临两个问题

    • 配置繁琐
    • 入门难度大

    SpringBoot中,很多配置都是已经默认配置好了,所以不再需要我们手动配置,但是Spring Framework则不然,这些配置不配置好就无法使用。同样的入门,在SpringFramework中可能需要半个小时,但是SpringBoot只需要5分钟

  • 现在企业都在追求高效开发,因为高效就意味着高利润,所以市面上的Java项目基本上都是基于SpringBoot进行开发。官方目前也更加推荐使用SpringBoot作为Java开发,并且在后续的SpringCloud微服务项目中,我们也必须需要使用SpringBoot

  • 使用SpringFramework开发web项目时,开发和部署都比较复杂,SpringBoot内置Tomcat,启动项目就像启动一个main方法一样的简单

SpringBoot入门

入门实现

搭建SpringBoot工程并实现浏览器与Java项目交互

实现步骤

第一步:使用SpringBoot骨架搭建SpringBoot项目

第二步:

  • SpringBoot依赖有很多版本,我们学习使用SpringBoot-2.6.13
  • 勾选初始化依赖,SpringBoot项目必须需要Web依赖,所以我们需要勾选Web依赖。其他依赖在以后项目使用中根据实际需要进行勾选

第三步:Springboot创建需要联网下载资源,等待构建完成即可

第四步:使用SpringBoot骨架进行创建会默认生成一些我们暂时使用不到的文件,为了项目简洁我们删除即可

第五步:创建请求处理类

  • 请求处理类:专门用来接收前端发起到后端的请求
  • 存储规范:请求处理类按照规范必须放入到controller包下

第六步:运行SpringBoot项目

  • SpringBoot项目中定义了一个启动类,运行这个启动类可以把整个SpringBoot项目运行起来

第七步:浏览器访问

浏览器输入地址:http://localhost:8080/hello

项目结构:

在这里插入图片描述

访问原理解析

  1. 入门案例访问原理

    1. 运行启动类启动项目,SpringBoot内置Tomcat,启动成功会看到控制台的默认端口号8080
    2. 当在地址栏输入http://localhost:8080/hello时,浏览器访问的就是当前项目
    3. 然后是用/hello去匹配我们的控制器Controller,即匹配注解@RequestMapping请求映射注解
    4. 匹配上之后就会自动执行hello方法中的内容
    

注解:

@RestController // 创建当前类的对象
@RequestMapping("/hello/a") // 请求映射 - 匹配请求【从上下文路径后面开始算】,匹配上之后会执行当前方法的所有代码 - 实例方法【通过对象】
@RequestMapping("/hello/a")中的("/hello/a") // http://localhost:8080/上下文路径/hello/a
@SpringBootApplication // 申请当前类是一个SpringBootApplication的启动类 - 启动 - main方法启动

application.properties:

#端口
server.port=80
#应用的上下文路径,也可以称为项目路径,是构成url地址的一部分,就是在你所有的请求路径之前加了一个前缀
server.servlet.context-path=/
  1. 资源路径

    • URL

      什么是URL:URL称为统一资源定位符,可以直接使用此地址找到互联网上的资源。例如:接口、页面

      URL组成:协议名://IP地址:端口号/资源名称。例如:http://localhost:8080/hello

    • URI

    什么是URI:URI统一资源标识符,俗称请求资源路径,URL地址中端口号后面的地址叫做URI。例如:/hello

“/hello/a”) // http://localhost:8080/上下文路径/hello/a
@SpringBootApplication // 申请当前类是一个SpringBootApplication的启动类 - 启动 - main方法启动


application.properties:

#端口
server.port=80
#应用的上下文路径,也可以称为项目路径,是构成url地址的一部分,就是在你所有的请求路径之前加了一个前缀
server.servlet.context-path=/




2. 资源路径

   - URL

     什么是URL:URL称为统一资源定位符,可以直接使用此地址找到互联网上的资源。例如:接口、页面

     URL组成:协议名://IP地址:端口号/资源名称。例如:http://localhost:8080/hello

   -  URI

     什么是URI:URI统一资源标识符,俗称请求资源路径,URL地址中端口号后面的地址叫做URI。例如:/hello

 **区别**:URL包含URI,URI只是URL的一部分

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1391228.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

给WordPress网站增加一个带时间的led广告牌

WordPress 后台》外观》小工具》自定义html》添加到合适位置 其他系统可自行添加合适位置 <style type"text/css">.studytextgzbox {background: #F9F9F9; border: 1px solid #999999;margin: 1px;text-align:center; float: left;line-height: 28px;hei…

Spring IOC 之加载 BeanDefinition

1、前言 前面的文章我们已经对IOC之Spring统一资源加载策略有了一定的了解&#xff0c;本文我们将探讨Spring IOC 加载 BeanDefinition的整个过程。 我们先先看一段熟悉的代码&#xff1a; ClassPathResource resource new ClassPathResource("bean.xml"); // &l…

Java NIO (二)NIO Buffer类的重要方法(备份)

1 allocate()方法 在使用Buffer实例前&#xff0c;我们需要先获取Buffer子类的实例对象&#xff0c;并且分配内存空间。需要获取一个Buffer实例对象时&#xff0c;并不是使用子类的构造器来创建&#xff0c;而是调用子类的allocate()方法。 public class AllocateTest {static…

Flutter GetX 之 国际化

今天给大家介绍一下 GetX 的国际化功能,在日常开发过程中,我们经常会使用到国际化功能,需要们的应用支持 国际化,例如我们需要支持 简体、繁体、英文等等。 上几篇文章介绍了GetX的 路由管理 和 状态管理,看到大家的点赞和收藏,还是很开心的,说明这两篇文章给大家起到了…

CAN 节点状态转换

CAN节点 按照错误严重程度可分为三种不同的状态 主动错误状态&#xff08;Error Active&#xff09; 被动错误状态&#xff08;Error Passive&#xff09; 总线关闭状态&#xff08;Bus Off&#xff09; 存在两种错误计数器 发送错误计数值 TEC : Transmit Error Counter …

Python - 深夜数据结构与算法之 Sort

目录 一.引言 二.排序简介 1.排序类型 2.时间复杂度 3.初级排序 4.高级排序 A.快速排序 B.归并排序 C.堆排序 5.特殊排序 三.经典算法实战 1.Quick-Sort 2.Merge-Sort 3.Heap-Sort 4.Relative-Sort-Array [1122] 5.Valid-anagram [242] 6.Merge-Intervals […

Go新项目-配置文件的选取及区别和写法(1)

先说结论&#xff1a;我们选型TOML yaml&#xff0c;toml&#xff0c;json&#xff0c;ini 实际业务都有用 实际栗子是&#xff1a;我们想要把Go的切片作为配置文件&#xff0c;YAML写起来比较吃力&#xff0c;TOML就很容易了。 配置文件是用于配置计算机程序的参数、初始化设…

linux创建文件

创建文件夹&#xff1a; mkdir folder_name其中&#xff0c;folder_name是想要创建的文件夹的名称。 例如&#xff0c;如果想在当前目录下创建一个名为 "my_folder" 的文件夹&#xff0c;可以运行以下命令&#xff1a; mkdir my_folder如果想在特定路径下创建文件…

计算机导论10-软件与软件工程

文章目录 软件软件的概念软件的定义软件的特征 软件的保护与授权软件的法律保护软件许可 软件工程软件危机软件危机的概念产生软件危机的原因 软件工程的概念软件工程的定义软件工程基本原理软件工程框架软件工程三要素 软件工程方法学软件工程方法软件工程工具软件工程过程 软…

详细讲解Python中的aioschedule定时任务操作

目录 前言1. 基本概念2. 基本API3. Demo 前言 如果下面的函数库无法执行&#xff0c;出现类似&#xff1a;&#xff08;前提是python3.7以上&#xff09; AttributeError: module ‘asyncio‘ has no attribute ‘run‘请检查run是否可跳转&#xff0c;如果无法跳转&#xff…

【RPC】网络通信:哪种网络IO模型最适合RPC框架?

一、背景 RPC是解决进程间通信的一种方式。一次RPC调用&#xff0c;本质就是服务消费者与服务提供者间的一次网络信息交换的过程。服务调用者通过网络IO发送一条请求消息&#xff0c;服务提供者接收并解析&#xff0c;处理完相关的业务逻辑之后&#xff0c;再发送一条响应消息…

Qt命令行安装:linux(ubuntu)

起因是我上一篇文章说的&#xff0c;官网下的安装包卡死在第一步安装界面了。 于是我就问GPT有没有纯命令行的安装方式&#xff0c;果然是有的。 在Ubuntu上安装Qt可以使用以下命令&#xff1a; 1. 首先&#xff0c;添加Qt的官方存储库到系统中&#xff1a; sudo add-apt-rep…

Pandas.DataFrame.groupby() 数据分组(数据透视、分类汇总) 详解 含代码 含测试数据集 随Pandas版本持续更新

关于Pandas版本&#xff1a; 本文基于 pandas2.1.2 编写。 关于本文内容更新&#xff1a; 随着pandas的stable版本更迭&#xff0c;本文持续更新&#xff0c;不断完善补充。 Pandas稳定版更新及变动内容整合专题&#xff1a; Pandas稳定版更新及变动迭持续更新。 Pandas API参…

使用PyTorch实现混合专家(MoE)模型

Mixtral 8x7B 的推出在开放 AI 领域引发了广泛关注&#xff0c;特别是混合专家&#xff08;Mixture-of-Experts&#xff1a;MoEs&#xff09;这一概念被大家所认知。混合专家(MoE)概念是协作智能的象征&#xff0c;体现了“整体大于部分之和”的说法。MoE模型汇集了各种专家模型…

Transformer详解(附代码实现及翻译任务实现)

一&#xff1a;了解背景和动机 阅读Transformer论文&#xff1a; 阅读原始的Transformer论文&#xff1a;“Attention is All You Need”&#xff0c;由Vaswani等人于2017年提出&#xff0c;是Transformer模型的开创性工作。 二&#xff1a;理解基本构建块 注意力机制&#…

软件研发过程中,项目管理工具应该如何选择?

本文作者&#xff1a;极狐GitLab 资深解决方案架构师 尹学峰 许多企业依旧在用老旧的方式&#xff0c;如Excel离线表格进行项目管理。表格无法简介的呈现出项目的任务分解、完成进度、任务类别等多种项目管理过程中必备的要求&#xff0c;更无法实现与企业员工的日常即时通信系…

MATLAB - 加载预定义的机器人模型

系列文章目录 前言 一、 要快速访问常见的机器人模型&#xff0c;可使用 loadrobot 功能&#xff0c;该功能可加载市售的机器人模型&#xff0c;如 Universal Robots™ UR10 cobot、Boston Dynamics™ Atlas 人形机器人和 KINOVA™ Gen 3 机械手。探索如何生成关节配置并与机器…

day02_计算机常识丶第一个程序丶注释丶关键字丶标识符

计算机常识 计算机如何存储数据 计算机世界中只有二进制。那么在计算机中存储和运算的所有数据都要转为二进制。包括数字、字符、图片、声音、视频等。 进制 进制也就是进位计数制&#xff0c;是人为定义的带进位的计数方法 实例&#xff1a; // 在java 中 可以使用不同…

蓝桥杯备赛day02 -- 算法训练题 拿金币Java

目录 题目&#xff1a; 问题描述 输入格式 输出格式 解题过程 第一步 定义dp数组 第二步 确定 dp 数组递推公式 第三步 dp数组的初始化 第四步 dp数组的遍历顺序 第五步 举例说明 报错&#xff1a;内存超限 用dp数组去存储位置上的金币 dp数组从二维降为一维 收获&a…