maven的settings.xml、pom.xml配置文件
1、配置文件
maven的配置文件主要有 settings.xml 和pom.xml 两个文件。
其中在maven安装目录下的settings.xml,如:D:\Program Files\apache-maven-3.6.3\conf\settings.xml 是全局配置文件
用户目录的.m2子目录下的settings.xml,如:C:\Users\chenxc.m2\settings.xml 配置只是针对当前用户的配置文件。
项目根路径下的pom.xml主要是对当前项目的配置。
局部配置优先于全局配置。 配置优先级从高到低:pom.xml> user settings > global settings
2、settings.xml 配置详解
2.1、localRepository 本地仓库配置
该值是此构建系统的本地存储库的路径。默认值为 ${user.home}/.m2/repository
。此元素对于主构建服务器特别有用,允许所有登录用户从公共本地存储库进行构建。
<localRepository>D:\repository</localRepository>
2.2、interactiveMode 用户输入配置
interactiveMode
元素用于配置Maven是否在需要用户输入时进入交互模式。默认情况下,Maven设置为true
,这意味着它会在需要输入时提示用户。
如果你想要Maven在需要输入时总是自动做出决定或者永远不要提示用户,你可以将interactiveMode
设置为false。
<interactiveMode>true</interactiveMode>
2.3、offline 离线模式
表示此构建系统是否应在离线模式下运行,则默认为false。 此元素对于由于网络设置或安全原因而无法连接到远程存储库的构建服务器非常有用。
<offline>false</offline>
2.4、pluginGroups 插件组
插件组,该元素包含一个元素列表pluginGroup,每个元素包含一个groupId。当使用插件且命令行中未提供 groupId 时,将搜索该列表。该列表默认包含 org.apache.maven.plugins和org.codehaus.mojo。
<pluginGroups><pluginGroup>org.eclipse.jetty</pluginGroup>
</pluginGroups>
如下,在pom文件中没有设置<groupId>,那么将会从<pluginGroups>列表中指定的位置搜索插件
<!-- 打包跳过测试 -->
<plugin><!-- <groupId>org.apache.maven.plugins</groupId> --><artifactId>maven-surefire-plugin</artifactId><configuration><skipTests>true</skipTests></configuration>
</plugin>
2.5、servers 私服服务器配置
私服服务器配置,配置私服的用户名和密码。配置的私服服务器可以用来发布jar包,与pom 中 distributionManagement
标签中配置的仓库ID相互对应。
<servers><server><id>server001</id><username>my_login</username><password>my_password</password><privateKey>${user.home}/.ssh/id_dsa</privateKey><passphrase>some_passphrase</passphrase><!--文件被创建时的权限。 --><filePermissions>664</filePermissions><!--目录被创建时的权限。 --><directoryPermissions>775</directoryPermissions><configuration></configuration></server>
</servers>
- id :该id与<distributionManagement>中<repository>元素的<id>相匹配(注意不是用户登陆的id)。
如下,在pom文件中设置的<distributionManagement>中<repository>元素的<id>要与settings.xml文件中<server>的<id>值一致才能匹配的上。
<distributionManagement><repository><id>server001</id><url>http://url:端口/repository/maven/</url></repository>
</distributionManagement>
- username、password:这两元素以一对形式出现,表示向该服务器进行身份验证所需的登录名和密码。
- privateKey、passphrase:与前两个元素一样,指定了一个私钥位置(默认是${user.home}/.ssh/id_dsa)以及私钥密码(私钥密码可以没有)。将来<passphrase>和<password>元素可能会被提取到外部,但目前它们必须在settings.xml文件以纯文本的形式声明。
- filePermissions、DirectoryPermissions:在部署时创建存储库文件或目录时,这些是要使用的权限。每个的合法值都是与 unix 文件权限相对应的三位数,例如 664 或 775。
注意:如果您使用私钥<privateKey>登录服务器,请确保没有填写<password>元素。否则<privateKey>将被忽略。
2.6、mirrors 镜像配置
<mirrors><mirror><id>planetmirror.com</id><name>PlanetMirror Australia</name><url>http://downloads.planetmirror.com/pub/maven2</url><mirrorOf>central</mirrorOf></mirror>
</mirrors>
- id , name:此镜像的唯一标识、定义一个容易看懂的名称。id用于区分镜像元素,并在连接到镜像时从<servers>部分选择相应的凭据。
- url :该镜像的基本 URL。当Maven在建立系统的时候就会使用这个url来连接到我们的远程仓库。
- mirrorOf:用来表示该mirror是关联的哪一个仓库,其值为其关联仓库的id。例如,要指向 Mavencentral存储库 ( https://repo.maven.apache.org/maven2/) 的镜像,请将此元素设置为 central。更高级的映射如下:
- 当要同时关联多个仓库时,多个仓库之间可以用逗号隔开;
- 当要关联所有的仓库时,可以使用“*”表示;
- 当要关联除某一个仓库以外的其他所有仓库时,可以表示为“ ,!repositoryId”;
- 当要关联不是localhost或用file请求的仓库时,可以表示为“external:”。
2.7、proxies 代理设置
代理设置,内部由n个proxy节点组成,表示Maven在进行联网时需要使用到的代理。
部分公司出于安全考虑会需要员工通过代理才可上网,这时,就需配置该节点的参数了。
<proxies><proxy><id>myproxy</id><active>true</active><protocol>http</protocol><host>proxy.somewhere.com</host><port>8080</port><username>proxyuser</username><password>somepassword</password><nonProxyHosts>*.google.com|ibiblio.org</nonProxyHosts></proxy>
</proxies>
- id:唯一标识符;
- active:是否被激活使用,默认为true。当有多个proxy节点存在时,用于选择使用哪个代理,但同一时间仅有一个代理会被被激活;
- protocol:协议类型;
- username:用户名,没有可不填
- password:密码,没有可不填
- host:IP地址
- port:端口号
- nonProxyHosts:不使用代理的地址
以上参数在通常配置代理的情况都会使用到,最终的代理地址为 protocol://host:port
2.8、profiles 个性配置
个性配置,内部由n个profile节点组成。setting.xml文件中的<profile>是pom中的<profile>的其中一部分,<profile>里包含<activation>、 <repositories>、<pluginRepositories>、<properties>这四个主要元素。因为它们关注的是整个构建系统(这就是settings.xml文件的作用),而不是单个项目对象模型设置。如果一个settings.xml中的<profile>被激活,它的值会覆盖任何其它定义在pom中带有相同id的<profile>。
<profiles><profile><id>test</id>...</profile>
</profiles>
参数说明:
- id:唯一标识符
- activation:激活条件。
- properties:用于定义属性键值对的。
- repositories:远程仓库列表。
- pluginRepositories:插件仓库。
2.8.1、activation 激活条件
<activation>是用来确定该<profile>是否被激活使用,当<profile>被激活的时候, <repositories>、<pluginRepositories>、<properties>这三个元素里的配置才生效。所以<activation>这个元素要至少要和其他三个元素之一同时使用才有意义。
<profiles><profile><id>test</id><activation><activeByDefault>false</activeByDefault><jdk>1.5</jdk><os><name>Windows XP</name><family>Windows</family><arch>x86</arch><version>5.1.2600</version></os><property><name>mavenVersion</name><value>2.0.3</value></property><file><exists>${basedir}/file2.properties</exists><missing>${basedir}/file1.properties</missing></file></activation>...</profile>
</profiles>
- activeByDefault:<profile>默认是否激活的标识。
- jdk :当运行的java程序的jdk的版本与指定的版本匹配时<profile>将被激活。如:上面的例子中,当运行的java程序的jdk版本为1.5.0_06时<profile>将被激活。jdk的版本还支持范围配。 有关支持范围匹配的更多详细信息,请参阅 maven-enforcer-plugin 。
- os:该os元素可以定义上面所示的一些操作系统特定属性。 当满足条件时<profile>将被激活。
- name:操作系统的名字匹配则激活该<profile>。
- family:操作系统所属家族则激活该<profile>。
- arch:操作系统体系结构则激活该<profile>。
- version:操作系统版本则激活该<profile>。
- property:如果Maven检测到对应的name=value对的属性(其值可以在pom中通过${name}引用),则<profile>将激活。如果值字段是空的,那么存在属性名称字段就会激活profile,如:上面例子中如果存在mavenVersion=2.0.3,那么<profile>将激活。
- file:通过给定的文件存在或丢失来激活<profile>
- exists:如果指定的文件存在,则激活<profile>。
- missing:如果指定的文件不存在,则激活<profile>。
注意:这多个激活条件的关系是这样的:Maven 3.2.2之前是只要满足其中之一就可以激活该<profile>,Maven 3.2.2之后是满足所有才可以激活该<profile>。
2.8.2、properties 扩展属性列表
对应<profile>
的扩展属性列表。可以用来存放一些值。这些值可以在pom文件中的任何地方使用标记${X}
来使用,这里X是指属性的名称(如下例中的${user.install}
)。
<profiles><profile>...<properties><user.install>${user.home}/our-project</user.install></properties>...</profile>
</profiles>
属性的值有五种不同的形式:
- env.X : 在一个变量前加上"env."的前缀,会返回一个shell环境变量。例如:env.PATH指代了$path环境变量(在Windows上是%PATH%)。
- project.x :指代了pom中对应的元素值。例如: <project><version>1.0</version></project>通过${project.version}获得version的值。
- settings.x : 指代了settings.xml中对应元素的值。例如:<settings><offline>false</offline></settings>通过${settings.offline}获得<offline>的值。
- java系统属性 : 所有可通过java.lang.System.getProperties()获取的属性都能在pom中使用该形式获取,例如 ${java.home}。
- x : 在<properties/>元素中,或者外部文件中设置,以${someVar}的形式使用。
如果我们想在application.peoperties文件中引用这个user.install属性,这里注意引用时要用占位符
user.install=@user.install@
在springboot工程中只能使用@xxx@(xxx为自定义的属性名)
2.8.3、repositories 远程仓库列表
远程仓库列表,它是Maven用来填充构建系统本地仓库所使用的一组远程仓库列表。
<profiles><profile>...<repositories><repository><id>codehausSnapshots</id><name>Codehaus Snapshots</name><releases><enabled>false</enabled><updatePolicy>always</updatePolicy><checksumPolicy>warn</checksumPolicy></releases><snapshots><enabled>true</enabled><updatePolicy>never</updatePolicy><checksumPolicy>fail</checksumPolicy></snapshots><url>http://snapshots.maven.codehaus.org/maven2</url><layout>default</layout></repository></repositories>...</profile></profiles>
- id、name:远程仓库唯一标识和远程仓库名称;
- releases、snapshots:如何处理远程仓库里发布版本(releases)和快照版本(snapshots)的下载
- enabled:true或者false表示该仓库是否开启下载某种类型构件(发布版,快照版)。
- updatePolicy:该元素指定更新发生的频率。Maven会比较本地pom 和远程pom 的时间戳。这里的选项是:always(一直),daily(默认,每日),interval:X(这里X是以分钟为单位的时间间隔),或者never(从不)。
- checksumPolicy:当Maven验证构件校验文件失败时该怎么做-ignore(忽略),fail(失败),或者warn(警告)。
- layout:在上面对存储库的描述中,提到它们都遵循通用布局。这基本上是正确的。Maven 2 的存储库有一个默认布局;然而,Maven 1.x 有不同的布局。使用此元素指定是default(默认)还是legacy(遗留)。
2.8.4、pluginRepositories 插件仓库
在Maven中有两种类型的仓库,一种是存储工件的仓库,另一种就是存储plugin插件的仓库。pluginRepositories的定义和repositories的定义类似,它表示Maven在哪些地方可以找到所需要的插件。
<profiles><profile>...<pluginRepositories><pluginRepository><id>myPluginRepo</id><name>My Plugins repo</name><releases><enabled>true</enabled></releases><snapshots><enabled>false</enabled></snapshots><url>https://maven-central-eu....com/maven2/</url></pluginRepository></pluginRepositories>...</profile></profiles>
2.9、activeProfiles 激活的profile
它包含一组<activeProfile>元素,每个元素的值都是一个<profile>中<id>里的值。无论任何环境设置如何,<activeProfile>定义的任何<profile>都将处于活动状态。如果没有找到匹配的配置文件,则不会发生任何事情。和<activation> 配置相比 <activeProfiles> 配置比较简单,也比较常用。
<activeProfiles><activeProfile>env-test</activeProfile>
</activeProfiles>
3、pom.xml配置文件
<parent><!--父项目的构件标识符 --><artifactId /><!--父项目的唯一标识符 --><groupId /><!--父项目的版本 --><version /><!-- 父项目的pom.xml文件的相对路径。默认值是../pom.xml。Maven首先在构建当前项目的地方寻找父项目的pom,其次在文件系统的这个位置(relativePath位置),然后在本地仓库,最后在远程仓库寻找父项目的pom。 注意:如果在父项目中通过<modules>指定了子模块,且子模块在父项目目录下,则不需要指定此配置。如果子项目不在父项目的目录下,应该指定此配置。--><relativePath>../pom.xml</relativePath>
</parent><!-- 模型版本 -->
<modelVersion>4.0.0</modelVersion>
<!-- 公司或者组织的唯一标志-->
<groupId>com.companyname.project-group</groupId>
<!-- 项目的唯一ID->
<artifactId>project</artifactId>
<!-- 版本号 -->
<version>1.0</version><!--项目产生的构件类型,例如jar、war、ear、pom -->
<packaging>jar</packaging><!-- 属性配置 -->
<properties><!-- 编译时的编码 --><maven.compiler.encoding>UTF-8</maven.compiler.encoding><spring-boot.version>2.3.7.RELEASE</spring-boot.version>
</properties>
<!-- 依赖配置 -->
<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId><version>${spring-boot.version}</version><scope>compile</scope></dependency>
</dependencies>
<!-- 依赖声明,不会真正引入包。一般在父pom中进行声明,在子pom中真正引入 -->
<dependencyManagement><dependencies><!-- import 依赖范围使用要求: 1、打包类型必须是pom; 2、必须放在 dependencyManagement 中 --><!-- 以下示例:在项目中引入 SpringBoot、SpringCloud 依赖 --><!-- SpringCloud 微服务 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency> <!-- SpringCloud Alibaba 微服务 --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>${spring-cloud-alibaba.version}</version><type>pom</type><scope>import</scope></dependency><!-- runtime专门用于编译时不需要,但是运行时需要的jar包。比如:编译时我们根据接口调用方法,但是实际运行时需要的是接口的实现类。典型案例是: --><!--热部署 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></dependency><dependency><groupId>cn.hutool</groupId><artifactId>hutool-core</artifactId><version>${hutool.version}</version></dependency></dependencies>
</dependencyManagement> <!-- 编译构建相关配置 -->
<build><!-- 插件申明,一般在父pom中声明,在子pom中真正引入 --><pluginManagement><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>${spring-boot.version}</version></plugin></plugins></pluginManagement><!-- 插件引入,在父pom中引入以后,所有子pom中都会引入 --><plugins><plugin><groupId>org.sonarsource.scanner.maven</groupId><artifactId>sonar-maven-plugin</artifactId><version>3.6.0.1398</version></plugin></plugins>
</build> <!-- 针对当前项目的远程仓库配置 -->
<repositories><repository><id>aliyun-public</id><url>https://maven.aliyun.com/repository/public</url><snapshots><enabled>false</enabled></snapshots><releases><enabled>true</enabled></releases></repository>
</repositories>
<!-- 针对当前项目的远程插件仓库配置 -->
<pluginRepositories><pluginRepository><id>aliyun-public</id><url>https://maven.aliyun.com/repository/public</url><snapshots><enabled>false</enabled></snapshots><releases><enabled>true</enabled></releases></pluginRepository>
</pluginRepositories><!--jar包发布私服配置-->
<distributionManagement><!--发布版本--><repository><!-- 此ID和setting.xml 中server中配置的服务器进行对应 --><id>maven-releases</id><name>releases</name><url>http://nexus.maven.cn/repository/maven-releases/</url><uniqueVersion>true</uniqueVersion></repository><!--快照版本--><snapshotRepository><id>maven-snapshots</id><name>snapshots</name><url>http://nexus.maven.cn/repository/maven-snapshots/</url></snapshotRepository>
</distributionManagement><!--动态构建配置,通过设置活动的profile,profile中的配置会作用于当前的项目编译构建 -->
<profiles><profile><id>dev</id><properties><spring.profiles.active>dev</spring.profiles.active></properties><activation><activeByDefault>true</activeByDefault></activation></profile><profile><id>prod</id><properties><spring.profiles.active>prod</spring.profiles.active></properties></profile>
</profiles>
4、远程仓库的加载
- maven仓库依赖下载顺序:
- 在settings.xml文件中配置的本地仓库中寻找依赖,没找到则进入第2步。
- 在settings.xml文件中配置的全局远程仓库中寻找,没找到则进入第3步。
- 在当前项目的pom.xml中配置的远程仓库中寻找,如果没找到则进入第4步。
- 在中央仓库 https://repo.maven.apache.org/maven2 中寻找,如果没找到则抛出依赖无法加载异常。
镜像替换:
- 如果在找寻的过程中,如果发现该仓库有镜像匹配,则直接从镜像仓库中加载。
- 如果仓库的 id 设置成 <mirrorOf>central</mirrorOf>,则会覆盖 maven 的中央仓库配置。
- 如果镜像 ID 设置为 <mirrorOf>*</mirrorOf> 表示匹配所有的仓库,则所有依赖只从此镜像仓库中下载。
- 如果镜像ID 设置为 <mirrorOf>repo1,repo2</mirrorOf>,则匹配仓库repo1和repo2,使用逗号分隔多个远程仓库
- 如果镜像ID设置为 <mirrorOf>*,!repo1</miiroOf>匹配所有远程仓库,repo1除外,使用感叹号将仓库从匹配中排除
建议将镜像地址作为一个 普通仓库repository 进行配置,这样可以在其他 仓库下载不了的情况下查找到此仓库。如果配置了镜像仓库代替其他仓库容易出现在镜像中找不到依赖,导致项目无法编译的问题。
相关文章:

maven的settings.xml、pom.xml配置文件
1、配置文件 maven的配置文件主要有 settings.xml 和pom.xml 两个文件。 其中在maven安装目录下的settings.xml,如:D:\Program Files\apache-maven-3.6.3\conf\settings.xml 是全局配置文件 用户目录的.m2子目录下的settings.xml,如&#…...

使用MQTT.fx接入新版ONENet(24.4.8)
新版ONENet使用MQTT.fx 模拟接入 目录 新版ONENet使用MQTT.fx 模拟接入开始前的准备创建产品设备获取关键参数 计算签名使用MQTT.fx连接服务器数据流准备与上传数据流准备数据发送与接收 开始前的准备 创建产品 设备下载Token签名工具生成签名 创建产品设备 根据以下内容填写…...

Selenium 自动化遇见 shadow-root 元素怎么处理?
shadow-root是前端的特殊元素节点,其使用了一个叫做shadowDOM的技术做了封装,shadowDOM的作用可以理解为在默认的DOM结构中又嵌套了一个DOM结构(和iframe有点类似,只不过iframe内嵌的是HTML),我们遇见shado…...

软件系统质量属性_2.面向架构评估的质量属性
为了评价一个软件系统,特别是软件系统的架构,需要进行架构评估。在架构评估过程中,评估人员所关注的是系统的质量属性。评估方法所普遍关注的质量属性有:性能、可靠性、可用性、安全性、可修改性、功能性、可变性、互操作性。 1.…...

设计模式:抽象工厂
定义 抽象工厂模式是一种创建型设计模式,它提供了一个接口,用于创建一系列相关或相互依赖的对象,而无需指定它们具体的类。这种模式特别适用于处理产品族,但在不可能修改的情况下扩展产品族是困难的。 应用场景 抽象工厂模式通…...

【环境搭建】ubuntu工作站搭建全流程(显卡4090)
安装ubuntu22.04系统 首先,先压缩windows分区,按住Win X快捷键,选择磁盘管理,压缩分区,压缩出新的分区用于安装ubuntu22.04 windows插入系统盘,点击重启,一直按F12,选择系统盘启动方式语言选择chinese–…...

蓝桥杯每日一题:有序分数(递归)
给定一个整数 N,请你求出所有分母小于或等于 N,大小在 [0,1] 范围内的最简分数,并按从小到大顺序依次输出。 例如,当 N5 时,所有满足条件的分数按顺序依次为: 0/1,1/5,1/4,1/3,2/5,12/,35,2/3,3/4,4/5,1/…...

SpringBoot学习之Kibana下载安装和启动(Mac版)(三十二)
一、简介 Kibana是一个开源的分析与可视化平台,设计出来用于和Elasticsearch一起使用的。你可以用kibana搜索、查看存放在Elasticsearch中的数据。Kibana与Elasticsearch的交互方式是各种不同的图表、表格、地图等,直观的展示数据,从而达到高级的数据分析与可视化的目的。 …...

Mac下Docker Desktop starting的解决方法
记录下自己在新增了一个新的容器后,Disk Size过大导致启动Docker Desktop会一直卡在Docker Desktop starting,并且重启无效的解决方法。该方法无需重新卸载,并且能保留原有的镜像和容器。 一、确认问题 首先确认Docker.raw大小以确认是否和笔…...

Leetcode面试经典150_Q80删除有序数组中的重复项 II
题目: 给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使得出现次数超过两次的元素只出现两次 ,返回删除后数组的新长度。 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件…...

android 使用ollvm混淆so
使用到的工具 ndk 21.1.6352462(android studio上下载的)cmake 3.10.2.4988404(android studio上下载的)llvm-9.0.1llvm-mingw-20230130-msvcrt-x86_64.zipPython 3.11.5 环境配置 添加cmake mingw环境变量如下图: 编译 下载…...

Swift:在 Win10 上编程入门
访问 https://swift.org/download/ 找到 Windows 10:x86_64 下载 swift-5.10-RELEASE-windows10.exe 大约490MB 建议安装在 D:\Swift\ ,安装后大约占2.56GB 官网文档:https://www.swift.org/documentation/ 中文教程:The swift…...

Linux多进程通信(4)——消息队列从入门到实战!
Linux多进程通信总结——进程间通信看这一篇足够啦! 1.基本介绍 1)消息队列的本质其实是一个内核提供的链表,内核基于这个链表,实现了一个数据结构,向消息队列中写数据,实际上是向这个数据结构中插入一个…...

[Flutter]导入singular_flutter_sdk后运行到Android报错
问题: 接入归因之前,flutter项目一起正常。接入归因之后,iOS正常Android有问题。 dependencies: # Singular归因singular_flutter_sdk: ^1.3.3 针对 Flutter 的 Singular SDK 集成指南 https://support.singular.net/hc/zh-cn/articles/…...

ChatGPT新手指南:如何用AI写出专业学术论文
ChatGPT无限次数:点击直达 ChatGPT新手指南:如何用AI写出专业学术论文 在当今信息爆炸的时代,人工智能技术的快速发展为我们提供了许多新的可能性。ChatGPT作为一种先进的自然语言处理技术,不仅能够进行对话和文本生成,还可以辅助…...

【ZZULIOJ】1047: 对数表(Java)
目录 题目描述 输入 输出 样例输入 Copy 样例输出 Copy code 题目描述 输入两个正整数m和n,输出m到n之间每个整数的自然对数。 输入 输入包括两个整数m和n(m<n),之间用一个空格隔开。 输出 每行输出一个整数及其对数,整数占4…...

thinkphp6使用阿里云SDK发送短信
使用composer安装sdk "alibabacloud/dysmsapi-20170525": "2.0.24"封装发送短信类 发送到的短信参数写在env文件里面的 #发送短信配置 [AliyunSms] AccessKeyId "" AccessKeySecret "" signName"" templateCode"&…...

file_get_contents(‘php://input‘); 这个postman要如何传参
在 Postman 中传递参数给 file_get_contents(php://input); 是通过请求的 Body 部分来实现的。使用 Postman 进行 API 接口测试时,可以按照以下步骤来传递参数: 打开 Postman 并创建一个新的请求。在请求的 URL 地址栏输入你的 API 地址。选择请求方法为…...

HDFS [MSST‘10] 论文阅读笔记
原论文:The Hadoop Distributed File System (MSST’10) HDFS关键技术要点概览 设计目标:HDFS旨在可靠地存储大型数据集,并以高带宽流式传输这些数据集到用户应用程序。它通过在大量服务器上分布存储和计算资源,使得资源可以随着需求的增长而扩展,同时保持经济高效。架构组…...

Feature Pyramid Networks for object detection
FPN 总述1.引言2.相关工作3. Feature Pyramid NetworksBottom-up pathwayTop-down pathway and lateral connections 4. 应用用于 RPN用于 Fast R-CNN 核心代码复现FPN网络结构ResNet Bottleneck完整代码 总述 下图中,蓝色边框表示的是特征图,边框越粗表…...

Linux下docker运行python
前言 本机开发环境众多,python版本都好多个,虽然可以通过conda管理多个虚拟环境,但还是不能像容器那样进行进程间的隔离。于是打算试下docker下运行python,而且生产环境很多时候也是用容器来跑应用,环境统一、方便扩容…...

MacOS下载和安装HomeBrew的详细教程
在MacOS上安装Homebrew的详细教程如下:(参考官网:macOS(或 Linux)缺失的软件包的管理器 — Homebrew) 步骤1:检查系统要求 确保你的MacOS版本至少为macOS Monterey (12) (or higher) 或更高版本…...

AI技术在金融领域/银行业的应用和风险
前言 随着科技的不断发展,人工智能(AI)技术已经在各行各业得到了广泛的应用,其中包括银行业。银行业作为经济的重要组成部分,一直在不断地探索和应用新技术,以提升服务效率、风险管理和客户体验。然而&…...

每日OJ题_两个数组dp⑤_力扣10. 正则表达式匹配
目录 力扣10. 正则表达式匹配 解析代码 力扣10. 正则表达式匹配 10. 正则表达式匹配 难度 困难 给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 . 和 * 的正则表达式匹配。 . 匹配任意单个字符* 匹配零个或多个前面的那一个元素 所谓匹配,…...

开源区块链系统/技术 总结(欢迎补充,最新)
一、联盟链 1. FISCO BCOS FISCO BCOS 2.0 技术文档 — FISCO BCOS 2.0 v2.9.0 文档https://fisco-bcos-documentation.readthedocs.io/ 2. ChainMaker(长安链) 文档导航 — chainmaker-docs v2.3.2 documentationhttps://docs.chainmaker.org.cn/v2…...

LeetCode 994—— 腐烂的橘子
阅读目录 1. 题目2. 解题思路3. 代码实现 1. 题目 2. 解题思路 1.记录下初始新鲜橘子的位置到 notRotting,我们按照行把二维数组拉成一维,所以,一个vector 就可以实现了;2.如果没有新鲜橘子,那么第 0 分钟所有橘子已经…...

向上向下采样
在数字图像处理中,向上采样(upsampling)和向下采样(downsampling)是两种常见的操作,用于改变图像的分辨率。 向上采样(Upsampling): 向上采样是指增加图像的分辨率&…...

Leetcode面试经典150_Q169多数元素
题目: 给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊n/2⌋ 的元素。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 解题思路: 1. 注意“大于 ⌊n/2⌋”,…...

Spring Cloud微服务入门(五)
Sentinel的安装与使用 安装部署Sentinel 下载Sentinel: https://github.com/alibaba/Sentinel/releases Sentinel控制台 https://localhost:8080 用户和密码为sentinel 使用Sentinel 加依赖: 写配置: 输入: java -Dserver.po…...

负荷预测 | Matlab基于TCN-GRU-Attention单输入单输出时间序列多步预测
目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab基于TCN-GRU-Attention单输入单输出时间序列多步预测; 2.单变量时间序列数据集,采用前12个时刻预测未来96个时刻的数据; 3.excel数据方便替换,运行环境matlab20…...