简单的maven nexus私服学习

简单的maven nexus私服学习

1.需求

我们现在使用的maven私服是之前同事搭建的,是在公司的一台windows电脑上面,如果出问题会比较难搞,所以现在想将私服迁移到我们公司的测试服务器上,此处简单了解一下私服的一些配置记录一下,方便以后的学习使用。

2.简介

Maven Nexus 私服是一种企业级的仓库管理系统,主要用于管理Maven项目的依赖关系和构建产物。Nexus是由Sonatype公司开发的,它可以作为一个中心化的仓库来存储和分发各种类型的构建工件,包括但不限于Maven、Gradle、npm、Docker等。

Maven Nexus 私服的主要功能包括

  • 依赖管理:代理外部仓库:Nexus可以作为代理,帮助项目从外部仓库(如Maven Central)下载依赖,同时缓存这些依赖以提高下载速度。
  • 本地仓库:项目可以将构建的工件发布到Nexus的本地仓库,供其他项目或团队成员使用。
  • 版本控制:快照和发布版本管理:Nexus可以区分快照版本(SNAPSHOT)和正式版本(RELEASE),并提供相应的生命周期管理功能。
  • 安全性:身份验证和授权:可以配置Nexus来保护仓库资源,只有经过身份验证和授权的用户才能访问或上传工件。
  • 监控和报告:工件版本历史记录:提供详细的工件版本历史记录,方便追踪工件的变化。
  • 依赖分析:帮助识别项目中使用的依赖及其版本,以及潜在的问题,如过时的依赖或安全漏洞。
  • 集成能力:与其他工具集成:Nexus可以轻松地与CI/CD工具(如Jenkins)、IDEs和其他构建工具集成。
  • REST API:提供了丰富的RESTful API来自动化仓库操作。
  • 用户界面:友好的UI,Nexus提供了一个直观的用户界面,便于管理员和开发者进行仓库管理和工件浏览。

Maven Nexus 私服使用场景:

  • 内部项目依赖管理:在一个组织内部,不同的开发团队可能会共享一些通用库或组件,通过Nexus可以集中管理这些内部依赖。
  • 隔离外部网络:对于无法直接访问互联网的企业环境,Nexus可以作为一个内部的代理,使得开发人员无需直接连接到外部仓库即可获取依赖。
  • 构建产物发布:除了管理依赖之外,Nexus还可以用来发布和管理应用的不同版本,包括快照版本和最终发布的版本。
    通过使用Nexus作为Maven私服,可以有效地提高开发效率,减少网络带宽消耗,并加强依赖管理的安全性和可控性。

3.私服安装

3.1 下载应用包

我们首先需要下载私服包,具体的下载地址,找到自己需要的版本下载即可
在这里插入图片描述

3.2 上传并且解压

上传包到自定义目录,我使用的是/root/nexus目录下,然后进行解压,然后进入到 /root/nexus/nexus-3.49.0-02/etc目录下,然后修改默认启动端口信息,解压后有两个目录信息nexus-3.49.0-02以及sonatype-work,两个目录分别为程序文件以及存储信息目录。

tar -zxvf nexus-3.49.0-02-unix.tar.gz
cd /root/nexus/nexus-3.49.0-02
vim nexus-default.properties

在这里插入图片描述

3.3 启动服务

我们主要进行的是nexus的私服学习,所以此处就是简单启动即可,没有设置为开机自启动。具体步骤我们进入到nexus/bin目录中,执行启动脚本即可

./nexus start

在这里插入图片描述
查看是否已经启动成功,查看进程启动后代表启动成功,启动之后便可以使用ip:8888访问私服了,首次启动稍微有点慢,稍微等一会儿便可以访问

ps -ef | grep nexus

在这里插入图片描述
我们具体的访问地址为 http://192.168.138.134:8888/,首次登录我们需要使用admin登录,然后admin用户的密码我们可以在 /sonatype-work/nexus3/admin.password中获取,然后更新密码即可
在这里插入图片描述
我们点击登录,使用admin用户进行登录,之后我们便可以进行私服的创建了
在这里插入图片描述
在这里插入图片描述

4. 创建私服

4.1 私服的种类

常见的使用的仓库类型有三种,每种仓库作用如下:

类型作用描述
group(仓库组类型)整合多个仓库,统一对外暴露服务地址,方便用户使用,不需要用户配置多个仓库地址
proxy(代理类型)代理仓库,如果有坐标请求到代理仓库,仓库首先确定仓库本地是否存在,存在则返回,不存在则去配置代理地址进行坐标获取
hosted(宿主类型)用户自定义仓库,用户可以将自己的本地仓库部署到此仓库中

4.2 私服命名含义

仓库名称一般都有含义,一般名称含义如下:

名称名称含义
centralmaven中央库,默认从https://repo1.maven.org/maven2/ 获取坐标
release用户私服的稳定发型版本
snapshot用户私服快照版本
public一般将上方的central,release,snapshot三个版本进行整合,在maven的setting.conf配置文件中配置地址,统一对外提供服务

4.3 私服创建

我们了解了私服的种类以及名称含义,那么我们可以本地尝试新建几个仓库,进行测试使用,我们分别建立hosted类型,proxy类型以及group类型仓库,具体的步骤如下:

  • proxy 代理仓库
    我们新增maven-ali-proxy[阿里云代理仓库],点击 新增仓库
    在这里插入图片描述
    然后选择maven2 下的自己需要的仓库种类 proxy
    在这里插入图片描述
    然后填写需要的代理私服名称以及代理私服地址信息
    在这里插入图片描述
    在这里插入图片描述
    点击 View certificate 按钮,查看服务器的SSL证书信息。
    在这里插入图片描述
    最后点击 save 按钮保存即可
    在这里插入图片描述
    这样我们便建立好了一个代理仓库

  • hosted 宿主仓库
    我们开始建立一个宿主仓库,宿主仓库我们建立我们spring boot 应用包上传的仓库,包含snapshot以及release,此处我们以snapshot仓库为例,进行仓库建造,首先还是点击 新增仓库按钮
    在这里插入图片描述
    然后选择maven2 下的自己需要的仓库种类 hosted
    在这里插入图片描述
    填写名称等基本信息
    在这里插入图片描述
    最后点击保存 save 按钮即可
    在这里插入图片描述
    完成snapshot版本仓库后,再使用相同的方法再次新增 release 版本仓库

  • group 仓库
    首先同样是点击 新增仓库按钮
    在这里插入图片描述
    然后选择maven2 下的自己需要的仓库种类 group
    在这里插入图片描述
    然后填写名称信息等基本信息
    在这里插入图片描述
    最后选择其整合的仓库列表信息,选择好后则点击 save按钮 进行保存即可
    在这里插入图片描述

这样我们的几个自定义的仓库便建立好了,那我们在仓库管理页面查看一下
在这里插入图片描述

5. 仓库的使用

在上面新增仓库之后,我们便可以使用新增的仓库了,我们使用的是gourp类型的仓库对外提供服务,我们本地需要配置好jdk环境以及maven环境,再配置自定义的maven setting.conf 文件,然后项目中便可以从库中引入pom坐标了,具体的实现如下

5.1 java & maven环境

我们需要先配置java 以及 maven 环境,我已经准备好了
在这里插入图片描述

5.2 idea 配置maven

在这里插入图片描述
其中 setting-local-nexus.xml 主要配置了server连接信息,以及minor镜像信息,其中server连接信息里面的id 需要与 pom文件中的 distributionManagement.repository.id 保持一致,这样才能上传本地jar包到私服中,里面的配置文件内容如下:

<?xml version="1.0" encoding="UTF-8"?><!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License.  You may obtain a copy of the License athttp://www.apache.org/licenses/LICENSE-2.0Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied.  See the License for the
specific language governing permissions and limitations
under the License.
--><!--| This is the configuration file for Maven. It can be specified at two levels:||  1. User Level. This settings.xml file provides configuration for a single user,|                 and is normally provided in ${user.home}/.m2/settings.xml.||                 NOTE: This location can be overridden with the CLI option:||                 -s /path/to/user/settings.xml||  2. Global Level. This settings.xml file provides configuration for all Maven|                 users on a machine (assuming they're all using the same Maven|                 installation). It's normally provided in|                 ${maven.conf}/settings.xml.||                 NOTE: This location can be overridden with the CLI option:||                 -gs /path/to/global/settings.xml|| The sections in this sample file are intended to give you a running start at| getting the most out of your Maven installation. Where appropriate, the default| values (values used when the setting is not specified) are provided.||-->
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"><!-- localRepository| The path to the local repository maven will use to store artifacts.|| Default: ${user.home}/.m2/repository<localRepository>/path/to/local/repo</localRepository>--><localRepository>D:\apache-maven-3.6.3\repos_local_nexus</localRepository><!--<localRepository>D:\old computer\Snxxxt_new\repository\LLNXWFWHTReprository</localRepository>--><!-- interactiveMode| This will determine whether maven prompts you when it needs input. If set to false,| maven will use a sensible default value, perhaps based on some other setting, for| the parameter in question.|| Default: true<interactiveMode>true</interactiveMode>--><!-- offline| Determines whether maven should attempt to connect to the network when executing a build.| This will have an effect on artifact downloads, artifact deployment, and others.|| Default: false<offline>false</offline>--><!-- pluginGroups| This is a list of additional group identifiers that will be searched when resolving plugins by their prefix, i.e.| when invoking a command line like "mvn prefix:goal". Maven will automatically add the group identifiers| "org.apache.maven.plugins" and "org.codehaus.mojo" if these are not already contained in the list.|--><pluginGroups><!-- pluginGroup| Specifies a further group identifier to use for plugin lookup.<pluginGroup>com.your.plugins</pluginGroup>--></pluginGroups><!-- proxies| This is a list of proxies which can be used on this machine to connect to the network.| Unless otherwise specified (by system property or command-line switch), the first proxy| specification in this list marked as active will be used.|--><proxies><!-- proxy| Specification for one proxy, to be used in connecting to the network.|<proxy><id>optional</id><active>true</active><protocol>http</protocol><username>proxyuser</username><password>proxypass</password><host>proxy.host.net</host><port>80</port><nonProxyHosts>local.net|some.host.com</nonProxyHosts></proxy>--></proxies><servers><!-- servers| This is a list of authentication profiles, keyed by the server-id used within the system.| Authentication profiles can be used whenever maven must make a connection to a remote server.|--><server><id>group</id><username>admin</username><password>101022li</password></server><server><id>release</id><username>admin</username><password>101022li</password></server><server><id>snapshot</id><username>admin</username><password>101022li</password></server><!-- server| Specifies the authentication information to use when connecting to a particular server, identified by| a unique name within the system (referred to by the 'id' attribute below).|| NOTE: You should either specify username/password OR privateKey/passphrase, since these pairings are|       used together.|<server><id>deploymentRepo</id><username>repouser</username><password>repopwd</password></server>--><!-- Another sample, using keys to authenticate.<server><id>siteServer</id><privateKey>/path/to/private/key</privateKey><passphrase>optional; leave empty if not used.</passphrase></server>--></servers><!-- mirrors| This is a list of mirrors to be used in downloading artifacts from remote repositories.|| It works like this: a POM may declare a repository to use in resolving certain artifacts.| However, this repository may have problems with heavy traffic at times, so people have mirrored| it to several places.|| That repository definition will have a unique id, so we can create a mirror reference for that| repository, to be used as an alternate download site. The mirror site will be the preferred| server for that repository.|--><mirrors><!-- 配置远程仓库 --><mirror><id>maven-git-group</id><name>nexus repository</name><url>http://192.168.138.134:8888/repository/maven-git-group/</url><mirrorOf>central</mirrorOf></mirror><!--<mirror><id>nexus-aliyun</id><mirrorOf>central</mirrorOf><name>Nexus aliyun</name><url>http://maven.aliyun.com/nexus/content/groups/public</url></mirror>--><!-- mirror| Specifies a repository mirror site to use instead of a given repository. The repository that| this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used| for inheritance and direct lookup purposes, and must be unique across the set of mirrors.|<mirror><id>mirrorId</id><mirrorOf>repositoryId</mirrorOf><name>Human Readable Name for this Mirror.</name><url>http://my.repository.com/repo/path</url></mirror>--></mirrors><!-- profiles| This is a list of profiles which can be activated in a variety of ways, and which can modify| the build process. Profiles provided in the settings.xml are intended to provide local machine-| specific paths and repository locations which allow the build to work in the local environment.|| For example, if you have an integration testing plugin - like cactus - that needs to know where| your Tomcat instance is installed, you can provide a variable here such that the variable is| dereferenced during the build process to configure the cactus plugin.|| As noted above, profiles can be activated in a variety of ways. One way - the activeProfiles| section of this document (settings.xml) - will be discussed later. Another way essentially| relies on the detection of a system property, either matching a particular value for the property,| or merely testing its existence. Profiles can also be activated by JDK version prefix, where a| value of '1.4' might activate a profile when the build is executed on a JDK version of '1.4.2_07'.| Finally, the list of active profiles can be specified directly from the command line.|| NOTE: For profiles defined in the settings.xml, you are restricted to specifying only artifact|       repositories, plugin repositories, and free-form properties to be used as configuration|       variables for plugins in the POM.||--><!-- profile| Specifies a set of introductions to the build process, to be activated using one or more of the| mechanisms described above. For inheritance purposes, and to activate profiles via <activatedProfiles/>| or the command line, profiles have to have an ID that is unique.|| An encouraged best practice for profile identification is to use a consistent naming convention| for profiles, such as 'env-dev', 'env-test', 'env-production', 'user-jdcasey', 'user-brett', etc.| This will make it more intuitive to understand what the set of introduced profiles is attempting| to accomplish, particularly when you only have a list of profile id's for debug.|| This profile example uses the JDK version to trigger activation, and provides a JDK-specific repo.<profile><id>jdk-1.4</id><activation><jdk>1.4</jdk></activation><repositories><repository><id>jdk14</id><name>Repository for JDK 1.4 builds</name><url>http://www.myhost.com/maven/jdk14</url><layout>default</layout><snapshotPolicy>always</snapshotPolicy></repository></repositories></profile>--><!--| Here is another profile, activated by the system property 'target-env' with a value of 'dev',| which provides a specific path to the Tomcat instance. To use this, your plugin configuration| might hypothetically look like:|| ...| <plugin>|   <groupId>org.myco.myplugins</groupId>|   <artifactId>myplugin</artifactId>||   <configuration>|     <tomcatLocation>${tomcatPath}</tomcatLocation>|   </configuration>| </plugin>| ...|| NOTE: If you just wanted to inject this configuration whenever someone set 'target-env' to|       anything, you could just leave off the <value/> inside the activation-property.|<profile><id>env-dev</id><activation><property><name>target-env</name><value>dev</value></property></activation><properties><tomcatPath>/path/to/tomcat/instance</tomcatPath></properties></profile>--><!-- activeProfiles| List of profiles that are active for all builds.|<activeProfiles><activeProfile>alwaysActiveProfile</activeProfile><activeProfile>anotherAlwaysActiveProfile</activeProfile></activeProfiles>-->
</settings>

如果想要上传代码到私服,需要添加maven deploy 插件,我的项目的pom文件内容配置具体如下:

<?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.git</groupId><artifactId>docker-hello</artifactId><version>1.0-SNAPSHOT</version><packaging>jar</packaging><properties><maven.deploy.skip>true</maven.deploy.skip><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version><mybatis-plus.version>3.3.0</mybatis-plus.version><fastjson.version>1.2.83</fastjson.version><druid.version>1.2.4</druid.version><hutool.version>5.5.7</hutool.version><lombok.version>1.18.6</lombok.version><mapstruct.version>1.4.1.Final</mapstruct.version><swagger.version>3.0.0</swagger.version><elasticjob.version>3.0.0-RC1</elasticjob.version><druid.version>1.2.4</druid.version><poi-tl.version>1.9.1</poi-tl.version><poi.version>4.1.2</poi.version><easyexcel.version>2.2.8</easyexcel.version></properties><!-- springboot dependency --><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.8.RELEASE</version><relativePath/></parent><!-- 项目级别的maven配置 --><repositories><repository><id>maven-git-group</id><name>maven-git-group</name><url>http://192.168.138.134:8888/repository/maven-git-group/</url><releases><enabled>true</enabled><updatePolicy>always</updatePolicy></releases><snapshots><enabled>true</enabled><updatePolicy>always</updatePolicy></snapshots></repository></repositories><!-- 部署jar包到私服配置,包含快照版本以及release版本  --><distributionManagement><repository><id>release</id><name>maven-git-release</name><url>http://192.168.138.134:8888/repository/maven-git-release/</url></repository><snapshotRepository><id>snapshot</id><name>maven-git-snapshot</name><url>http://192.168.138.134:8888/repository/maven-git-snapshot/</url></snapshotRepository></distributionManagement><dependencyManagement><dependencies><!-- hutool --><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>${hutool.version}</version></dependency><!-- lombok --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>${lombok.version}</version></dependency><!-- mapstruct --><dependency><groupId>org.mapstruct</groupId><artifactId>mapstruct</artifactId><version>${mapstruct.version}</version></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>${mybatis-plus.version}</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>${druid.version}</version></dependency></dependencies></dependencyManagement><dependencies><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>${fastjson.version}</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><exclusions><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-log4j2</artifactId></dependency><dependency><groupId>com.lmax</groupId><artifactId>disruptor</artifactId><version>3.3.4</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-autoconfigure</artifactId></dependency><!-- 结巴分词 --><dependency><groupId>com.huaban</groupId><artifactId>jieba-analysis</artifactId><version>1.0.2</version></dependency><!-- 验证码 --><dependency><groupId>com.github.whvcse</groupId><artifactId>easy-captcha</artifactId><version>1.6.2</version></dependency><!-- 远程执行shell --><dependency><groupId>com.jcraft</groupId><artifactId>jsch</artifactId><version>0.1.55</version></dependency><!-- ftp上传下载--><dependency><groupId>commons-net</groupId><artifactId>commons-net</artifactId><version>3.7</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-cache</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId><version>2.3.8.RELEASE</version></dependency><dependency><groupId>org.apache.commons</groupId><artifactId>commons-pool2</artifactId><version>2.8.1</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId></dependency></dependencies><build><plugins><!-- compiler --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><configuration><source>1.8</source><target>1.8</target><annotationProcessorPaths><path><groupId>org.mapstruct</groupId><artifactId>mapstruct-processor</artifactId><version>${mapstruct.version}</version></path><path><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>${lombok.version}</version></path></annotationProcessorPaths></configuration></plugin><!-- package --><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin><!-- maven私服jar包部署插件 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-deploy-plugin</artifactId><version>${maven-deploy-plugin.version}</version><configuration><skip>false</skip></configuration></plugin></plugins></build></project>

6. 测试

配置完毕后,我们点击 spring boot 项目 maven 的 install 即可,执行后效果如下,发现代码已经成功的打包了,我们去maven-git-group 库中查看,包已经下载好了。
在这里插入图片描述
在这里插入图片描述
点击 deploy 部署本地jar包到服务端,具体测试效果如下:
在这里插入图片描述
查看snapshot仓库,代码已经上传,
在这里插入图片描述

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

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

相关文章

多线程(二):Thread类常见的属性和方法

目录 1、run & start 2、Thread类常见的属性和方法 2.1 构造方法 2.2 属性 3、后台进程 & 前台进程 4、setDaemon 5、isAlive 6、终止一个线程 6.1 变量捕获 6.2 currentThread & isInterrupted & interrupt 1、run & start 在多线程&#xff08…

Java面试宝典-Java集合01

Java面试宝典-Java集合01 目录 Java面试宝典-Java集合01 1、Java中常用的集合有哪些&#xff1f; 2、Collection 和 Collections 有什么区别&#xff1f; 3、为什么集合类没有实现 Cloneable 和 Serializable 接口&#xff1f; 4、数组和集合有什么本质区别&#xff1f; 5、数组…

Java | Leetcode Java题解之第470题用Rand7()实现Rand10()

题目&#xff1a; 题解&#xff1a; class Solution extends SolBase {public int rand10() {int a, b, idx;while (true) {a rand7();b rand7();idx b (a - 1) * 7;if (idx < 40) {return 1 (idx - 1) % 10;}a idx - 40;b rand7();// get uniform dist from 1 - 63…

蓝桥杯【物联网】零基础到国奖之路:十七. 扩展模块之单路ADC和NE555

蓝桥杯【物联网】零基础到国奖之路:十七. 扩展模块之单路ADC和NE555 第一节 硬件解读第二节 CubeMx配置第三节 代码1&#xff0c;脉冲部分代码2&#xff0c;ADC部分代码![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/57531a4ee76d46daa227ae0a52993191.png) 第一节 …

React技术在Meta Connect 2024大会

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

熵权法计算评价指标权重——使用Excel VBA实现

[ 熵权法 ] 信息是系统有序程度的一个度量&#xff0c;熵是系统无序程度的一个度量&#xff1b;根据信息熵的定义&#xff0c;对于某项指标&#xff0c;可以用熵值来判断某个指标的离散程度&#xff0c;其信息熵值越小&#xff0c;指标的离散程度越大&#xff0c; 该指标对综合…

数据库——表格之间的关系(表格之间的连接和处理)

数据库表格之间经常存在各种关系&#xff1a; 一对一、一对多、多对多 1.一对一 —— 丈夫表&#xff0c;妻子表为例 连接方式一&#xff1a;合并为一张表 这种方式对于一对一来说最优 连接方式二&#xff1a;在其中一张表内加入一个外键&#xff0c;连接另一张表 连…

ARM base instruction -- sdiv

有符号除法运算 Signed Divide divides a signed integer register value by another signed integer register value, and writes the result to the destination register. The condition flags are not affected. 将一个有符号整数寄存器值除以另一个有符号整数寄存器值&am…

Java中的switch分支结构

switch分支结构 switch分支结构1.基本语法2.说明3.流程图4.案例5.注意事项6.练习7.switch和if的比较 switch分支结构 1.基本语法 switch&#xff08;表达式&#xff09;{case 常量1: //当...语句块1;break;case 常量2: 语句块2;break;...case 常量n: 语句块n;break;defaul…

路径跟踪之导航向量场——二维导航向量场

今天带来一期轨迹跟踪算法的讲解&#xff0c;首先讲解二维平面中的导航向量场[1]。该方法具有轻量化、计算简便、收敛性强等多项优点。该方法根据期望的轨迹函数&#xff0c;计算全局位置的期望飞行向量&#xff0c;将期望飞行向量转为偏光角&#xff0c;输入底层控制器&#x…

prometheus client_java实现进程的CPU、内存、IO、流量的可观测

文章目录 1、获取进程信息的方法1.1、通过读取/proc目录获取进程相关信息1.2、通过Linux命令获取进程信息1.2.1、top&#xff08;CPU/内存&#xff09;命令1.2.2、iotop&#xff08;磁盘IO&#xff09;命令1.2.3、nethogs&#xff08;流量&#xff09;命令 2、使用prometheus c…

AAA Mysql与redis的主从复制原理

一 &#xff1a;Mysql主从复制 重要的两个日志文件&#xff1a;bin log 和 relay log bin log&#xff1a;二进制日志&#xff08;binnary log&#xff09;以事件形式记录了对MySQL数据库执行更改的所有操作。 relay log&#xff1a;用来保存从节点I/O线程接受的bin log日志…

用凡尔码系统进行隐患排查二维码的制作

隐患排查是企业安全管理的重要环节&#xff0c;通过定期或不定期地对生产设备、作业场所、作业人员等进行检查&#xff0c;发现并消除安全隐患&#xff0c;预防事故的发生。隐患排查的效率和质量直接影响到企业的安全生产水平和经济效益。 传统的隐患排查方法主要依靠纸质进行…

PostgreSQL学习笔记七:常规SQL操作

PostgreSQL 支持标准的 SQL 语句&#xff0c;同时也扩展了一些特有的功能。以下是一些常规的 SQL 语句示例&#xff0c;这些示例涵盖了数据定义、数据操作和数据查询的基本操作&#xff1a; 数据定义语言 (DDL 创建数据库&#xff1a; CREATE DATABASE mydatabase;创建表&#…

Vue/组件的生命周期

这篇文章借鉴了coderwhy大佬的Vue生命周期 在Vue实例化或者创建组件的过程中 内部涉及到一系列复杂的阶段 每一个阶段的前后时机都可能对应一个钩子函数 以下是我根据coderwhy大佬文章对于每一个阶段的一些看法 1.过程一 首先实例化Vue或者组件 在实例化之前 会对应一个钩子函…

安装最新 MySQL 8.0 数据库(教学用)

安装 MySQL 8.0 数据库&#xff08;教学用&#xff09; 文章目录 安装 MySQL 8.0 数据库&#xff08;教学用&#xff09;前言MySQL历史一、第一步二、下载三、安装四、使用五、语法总结 前言 根据 DB-Engines 网站的数据库流行度排名&#xff08;2024年&#xff09;&#xff0…

使用 Go 语言与 Redis 构建高效缓存与消息队列系统

什么是 Redis&#xff1f; Redis 是一个开源的内存数据库&#xff0c;支持多种数据结构&#xff0c;包括字符串、列表、集合、哈希和有序集合。由于 Redis 运行在内存中&#xff0c;读写速度极快&#xff0c;常被用于构建缓存系统、实时排行榜、会话存储和消息队列等高并发场景…

【浏览器】如何正确使用Microsoft Edge

1、清理主页广告 如今的Microsoft Edge 浏览器 主页太乱了&#xff0c;各种广告推送&#xff0c;点右上角⚙️设置&#xff0c;把快速链接、网站导航、信息提要、背景等全部关闭。这样你就能得到一个超级清爽的主页。 网站导航       关闭 …

十款文件防泄密软件推荐,保护您的重要信息

信息安全是现代社会不可忽视的重要话题&#xff0c;尤其是在工作和生活中接触到大量敏感数据时。选择合适的文件防泄密软件&#xff0c;可以有效防止信息泄露。以下是我们为您推荐的十款优秀软件。 Ping32 以高效的文件加密功能而闻名&#xff0c;Ping32 可以轻松保护您的文件&…

【JavaEE】——回显服务器的实现

阿华代码&#xff0c;不是逆风&#xff0c;就是我疯 你们的点赞收藏是我前进最大的动力&#xff01;&#xff01; 希望本文内容能够帮助到你&#xff01;&#xff01; 目录 一&#xff1a;引入 1&#xff1a;基本概念 二&#xff1a;UDP socket API使用 1&#xff1a;socke…