2024年发布jar到国外maven中央仓库最新教程

2024年发布jar到国外maven中央仓库最新教程

文章目录

  • 1.国外sonatype仓库的版本
    • 1.1老OSSHR账号注册说明
    • 1.2新账号注册说明
  • 2.新账号注册(必选)
  • 3.新账号登录创建Namespace
    • 3.1创建Namespace的名字的格式要求(必选)
    • 3.2发布一个静态网站(可选)
    • 3.3设置dns(可选)
    • 3.3 namespace的校验(必选)
  • 4.下载安装好gpg 创建和私钥
  • 5.idea中maven的setting.xml文件配置
  • 6.项目中配置pom
  • 7.发布项目
    • 7.1 idea中点击deploy发布
    • 7.2新账号登录后点击发布
    • 7.3搜索发布的依赖
  • 8.github使用生成的token拉取项目
  • 9.总结

1.国外sonatype仓库的版本

1.1老OSSHR账号注册说明

https://central.sonatype.org/faq/what-happened-to-issues-sonatype-org/

  这篇官网链接说了在2024年1月9号,他们宣布将很快停用issues.sonatype.org,并用 Zendesk 电子邮件接收方法替换了 Jira 的审核跟进。

image-20240318110515121

  2024.1之前老OSSHR账号注册的老账号使用推送jar到maven仓库还是使用之前的方式即可,网上都有教程的,千篇一律,坑人得很

  老式账号及配置发布参看:

https://blog.csdn.net/SpongeBob_shouse/article/details/128803753

1.2新账号注册说明

https://central.sonatype.org/publish-ea/publish-ea-guide/#why-do-we-have-requirements

image-20240318110711675

  网上很多的文章是2024年之前的教程,使用的是OSSRH来注册账号,然后去给官方提issue,去看之前那些坑文教程,就会发现访问OSSRH的官方账号注册链接(上面1.1),点开1.1的这个注册OSSRH的链接找不到提issues的crete的按钮,这个是一个很坑的地方。

2.新账号注册(必选)

https://central.sonatype.com/
https://central.sonatype.org/register/legacy/

  手册点sign in会跳到这个注册页面,填写用户名、邮箱(我使用的是qq邮箱账号)、设置下登录密码,然后点击下一步,就登录到首页了

image-20240318111226833

  如果是已经注册登录过了,访问下面的地址,点击sign in直接是弹出的是登录页面,数据用户名、登录密码直接登录即可

https://central.sonatype.com/

3.新账号登录创建Namespace

  点击pulish到创建Namespace界面,然后点击Add Namespace按钮弹框如下:

image-20240318111803528

3.1创建Namespace的名字的格式要求(必选)

  首先得准备一个能访问的、你自己的域名,一般都是将域名反写,如果你没有一个自己的域名,可以使用开源仓库gitHub/gitee的pages发布一个静态的网页,最好是发布一下这个网页能被访问到

https://central.sonatype.org/register/namespace/#managing-your-credentials

  格式要求如下:拿github和gitee来举例子:

github的格式:io.github.你的github的账号username
gitee的格式:io.gitee.你的gitee的账号username
如果你的github、gitee的username是大写的,这里默认使用的是小写,也就是它不区分大小写(如果你的账号是大写注册,这里你填写小写即可)

image-20240318112410664

  这种通过公共代码托管仓库的方式,必须按照它官方要求的这个namespace的格式来定义和去校验。

3.2发布一个静态网站(可选)

image-20240318112726047

  index.html的内容如下:

<html>
<head>我的page-test</head>
<body>this is my project<body>
</html>

  然后点击setting找到pages

image-20240318113354955

  发布pages

image-20240318113556078

  访问https://bigbigfeifei.github.io/

image-20240318113637914

  为什么这种搞呢?因为使用gitHub的pages来发布一个页面,然后我们就可以使用io.github.github的username来作为一个groupId如下的项目:

 <groupId>io.github.bigbigfeifei</groupId>

  这个是github的是这种搞的,gitee的page估计也是跟github差不多的操作,gitee的pages需要实名认证才可以使用,需要上传身份证正反面和手持身份证正反面的照片,这个也比较严格,经过验证这一步是不需要的,因为我亲测了github这种搞了一个静态页面域名可以访问到,然后发布一个项目可以发布到中央仓库上,然后我的gitee的pages提交的实名认证还没有审核过,gitee就没有发布一个bigbigfeifei.gitee.io的域名能访问到的静态页面,访问的时候是404,然后我也去发布了一个groupId如下的项目,然后去账号后台申请配置下setting的token-username和token后,也是可以正常发到中央仓库,所以这一步可以不做,略过即可

<groupId>io.gitee.bigbigfeifei</groupId>

3.3设置dns(可选)

  如果你不是用的上面的一些公共仓库代理的域名 + username反写来作为groupid的话你还得设置下dns,这个我没有试过的,只不过官方有这个dns的一个设置说明,因为我的这个是windows电脑,所以在本机设置下dns如下:

https://central.sonatype.org/faq/how-to-set-txt-record/#by-dns
这个里面还有比如阿里云的dns设置啊,就是一些云厂商的dns的设置

本机执行如下:

Windows:
CMD:
nslookup -type=TXT yourdomain.comPowershell:
Resolve-DnsName yourdomain.com -Type TXT
Linux⚓︎$ host -t txt yourdomain.com
yourdomain.com descriptive text "OSSRH-XXYYZZ"
ordig -t txt yourdomain.com
macOS⚓︎dig -t txt yourdomain.com

3.3 namespace的校验(必选)

https://central.sonatype.org/register/namespace/

  根据上面的namespace的格式创建了一个namespace后,是未提交审核的状态,可以提前在根据verification-key在对应的githue或gitee上创建一个公共的仓库,用于namespace提交审核的时候可以证明这个仓库是你自己所有,如果你是先创建namespace之后,没有创建对应verification-key的公共仓库,然后你点击提交审核,你的邮箱里面会收到一条短信如下:

image-20240318132631485

  该短信说的是让你在你对应的仓库根据你提交审核的verification-key新建一个公共的代码仓库,来证明这个仓库是你自己的仓库,我采用的是先提交审核后邮箱收到短信,然后我就去我对应的gitee、github上创建了对应verification-key的公开仓库,io.gethub.你的账号的verification-key的要去你的github上根据io.gethub.你的账号的namespace对应的verification-key去创建公开代码仓库,gitee的也是同理,不要搞了叉着了,我这里是创建了两个namespace,一个是github的namespace,一个是gitee的namespace,然后我就给那个老外的邮箱回复了一条短信如下:

根据namespace对应的verification-key去github或gitee代码仓库上创建各自的公开代码仓库如下:
https://github.com/BigBigFeiFei/verification-keyxxxxx
https://gitee.com/BigBigFeiFei/verification-keyxxxxx

  回复邮箱消息如下:

image-20240318133707759

  意思是:我的两个Namespace的Verification Key以及在github、gitee上创建了公开仓库了,请审核一下,我等您的消息,谢谢。

然后过了差不过了一天,我登录账号去查看着两个namespace已经审核过了,状态截图如下:

image-20240318131320717

  到此创建namespace到审核就已经完成了,等审核完成后,之前根据各自的Verification Key创建的公开仓库就可以删除了的。

4.下载安装好gpg 创建和私钥

gpg的下载地址如下:windows下载的是Gpg4win,这个根据你的电脑型号去下面第二个链接查看下载什么对应机子操作系统匹配的gpg即可

https://www.gpg4win.org/download.html
https://central.sonatype.org/publish/requirements/gpg/#answer

  gpg的安装位置截图:

  我选择的自定义安装,选择的是安装在D盘,所以profile的gpg.executable要这种配置,否则deploy的时候找不到gpg的命令,这里也是需要注意的一个地方

D:\GnuPG\bin\gpg

image-20240318123540206

  新建秘钥对:设置名称(默认是windows的账户名称,如果有账号了可以输入之间的即可)和邮箱、密码即可

image-20240318123307181

  填写用户名和邮箱,第一次deploy的时候会弹框提示需要输入gpg的账号和密码,然后输入即可,然后会弹框返回一个指纹的key,复制下来,下面配置会用到,如果第二次跟第一次设置的是同一个用户名和邮箱的话,在deploy的时候只要配置setting.xml的profile的pgp的账号密码相同即可,然后deploy的时候就不会弹框提示需要输入gpg的账号和密码。

  查看指纹的key,如果你第一次新建密钥对没有复制弹框返回的指纹的key,只需要点击添加的第一条数据回弹框如下会显示指纹的key,复制继续下面的配置

image-20240318145148483

  将公钥或key发布到 PGP 密钥服务器:我用的是第二个命令带有这个的hkp://keyserver.ubuntu.com:11371命令,两条命令应该是一样的效果:cmd执行下面的命令即可,然后记住你设置的密码,下面的setting.xml中配置gpg需要用到。

gpg --keyserver hkp://pool.sks-keyservers.net --send-keys 公钥ID或上面提到的key
gpg --keyserver hkp://keyserver.ubuntu.com:11371 --send-keys 你自己的密钥(去重空格)

image-20240318143938825

  查询公钥是否发布成功:

gpg --keyserver hkp://pool.sks-keyservers.net --recv-keys 公钥ID或上面提到的key
gpg --keyserver hkp://keyserver.ubuntu.com:11371 --recv-keys 你自己的密钥(去除空格)

image-20240318144005826

  这种就是设置成功的,有输出且没有报错信息,我这个是设置第二次(换了一台电脑,又搞了一遍)都是同一个账号和邮箱,它提示信息没有改变,说明它沿用的还是第一次那个的信息

5.idea中maven的setting.xml文件配置

  idea中的setting.xml指定的文件路径中不要包含中文,否则会deplay失败,报错说是setting文件路径中包含中文字符而报错,这里需要注意下,每次修改server的token信息都要记得保存(ctrl + s)

<servers><server><!--id固定是central 每次deploy前就要去后台申请一个新的token,注意申请了新的token不要去点击比如maven的clean等非deploy的按钮,不然这个token就会被使用了,重复使用就会报错401,所以clean要在配置新的token前就去执行了,配置好新的token后,直接点击项目中maven的deploy发布即可--><id>central</id><username>token-username</username><password>token</password></server></servers><profiles><profile><id>central</id><activation><activeByDefault>true</activeByDefault></activation><properties><!-- gpg的安装位置的 GnuPG\bin\gpg,因为我是安装在D盘在,所以没有设置安装路径,所以子在D盘会有两个文件夹GnuPG和\Gpg4win,如果指定了安装路径的话,一个是在一个文件夹下有GnuPG和\Gpg4win,然后配置应该是这种的 安装位置   x盘:\xxxx+\GnuPG\bin\gpg --><gpg.executable>D:\GnuPG\bin\gpg</gpg.executable><gpg.passphrase>你的gpg的密码</gpg.passphrase></properties></profile></profiles>

  登录新账户创建token-username和token

image-20240318120810565

  点击创建token,将创建的username和password配置到上面setting.xml的server标签中

image-20240318120911149

  官方是建议使用这种方式的,不建议直接配置新账号的用户名和密码,并且使用token-username和token的这种方式,每次上传就要去后台生成一个然后将idea配置的seting.xml中的server的server的username、password重新使用新生成的,也就是说每次deploy都要去后台新生成一个token-username和token,生成的token-username和token只能使用一次,这个也是为了安全考虑,我试过配置setting.xml中server标签中新用户的账号(明文)和密码(明文)然后去发布也还是401的,不支持,老账号那种倒是支持的,并且密码中不能设置特殊字符,官网有说明的,但是现在这种使用token的方式就不用管密码中是否有特殊字符了,申请一次用一次。

https://central.sonatype.org/publish/generate-token/

6.项目中配置pom

  官方maven的pom配置规范:

https://central.sonatype.org/publish/requirements/#provide-files-checksums

  下面的可以直接copy过去使用的:

<properties><java.version>1.8</java.version><maven.compiler.source>${java.version}</maven.compiler.source><maven.compiler.target>${java.version}</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><serverId>central</serverId><!-- 服务id 也就是setting.xml中的servers.server.id -->
</properties><build><plugins><!-- 编译插件,设置源码以及编译的jdk版本 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>${maven.compiler.source}</source><target>${maven.compiler.target}</target></configuration></plugin><!-- Source --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-source-plugin</artifactId><version>2.2.1</version><executions><execution><phase>package</phase><goals><goal>jar-no-fork</goal></goals></execution></executions></plugin><!-- Javadoc --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-javadoc-plugin</artifactId><version>2.9.1</version><configuration><additionalparam>-Xdoclint:none</additionalparam></configuration><executions><execution><phase>package</phase><goals><goal>jar</goal></goals></execution></executions></plugin><!-- Javadoc --><!-- Gpg Signature --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-gpg-plugin</artifactId><version>1.6</version><executions><execution><phase>verify</phase><goals><goal>sign</goal></goals></execution></executions></plugin><!-- 老账号的配置:Gpg Signature --><!--将组件部署到OSSRH并将其发布到Central Repository--><!--<plugin><groupId>org.sonatype.plugins</groupId><artifactId>nexus-staging-maven-plugin</artifactId><version>1.6.8</version><extensions>true</extensions><configuration><serverId>${serverId}</serverId><nexusUrl>https://s01.oss.sonatype.org/</nexusUrl><autoReleaseAfterClose>true</autoReleaseAfterClose></configuration></plugin>--><!--新账号的配置:将组件部署到OSSRH并将其发布到Central Repository--><plugin><groupId>org.sonatype.central</groupId><artifactId>central-publishing-maven-plugin</artifactId><version>0.4.0</version><extensions>true</extensions><configuration><publishingServerId>central</publishingServerId><tokenAuth>true</tokenAuth></configuration></plugin></plugins></build><distributionManagement><snapshotRepository><!-- 与settings.xml的server.id保持一致 --><id>${serverId}</id><url>https://central.sonatype.com/</url></snapshotRepository><!-- 老账号配置<snapshotRepository>&lt;!&ndash;这个id和settings.xml中servers.server.id要相同,因为上传jar需要登录才有权限&ndash;&gt;<id>${serverId}</id><name>OSS Snapshots Repository</name><url>https://s01.oss.sonatype.org/content/repositories/snapshots/</url></snapshotRepository><repository>&lt;!&ndash;这个id和settings.xml中servers.server.id要相同,因为上传jar需要登录才有权限&ndash;&gt;<id>${serverId}</id><name>OSS Staging Repository</name><url>https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/</url></repository>--></distributionManagement>

  需要修改的配置:

  坐标id:

<groupId>io.github.账号username</groupId>
或者:
<groupId>io.gitee.账号username</groupId>

  下面是一个demo示例:需要注意的是version必须不带SNAPSHOT的,因为新版不支持发布SNAPSHOT,descriptio描述必须要有,这里也是要注意一下的,如果version设置的有问题或者description没有的话deploy的时候会报错提示的

    <groupId>io.github.bigbigfeifei</groupId><artifactId>es-spring-boot-start</artifactId><!-- 发布到这个上OSSRH:项目中的version,不要带上SNAPSHOT,这样就可以直接发布到中央仓库如果带上了,会发布到私服的snapshots下面,可以搜索进行查看,但是发布到Maven Central的新版本是不支持SNAPSHOT会被校验这个的,如果带来SNAPSHOT则推送失败,所以需要去掉version这个SNAPSHOT。 --><version>1.0</version><!--描述一定要有--><description>es启动器</description>

  下面是需要修改成你自己的项目地址即可:url、scm、developers修改成自己的即可,licenses不用修改直接使用

    <!--项目访问url -->   <url>https://github.com/BigBigFeiFei/es-spring-boot-start</url><scm><!--项目访问url --><url>https://github.com/BigBigFeiFei/es-spring-boot-start</url><!--项目访问url.git结尾 --><connection>scm:git:https://github.com/BigBigFeiFei/es-spring-boot-start.git</connection><!--项目访问url.git结尾 --><developerConnection>scm:git:https://github.com/BigBigFeiFei/es-spring-boot-start.git</developerConnection></scm><developers><developer><id>BigFei</id><name>BigFei</name><email>xxxx@qq.com</email><!--项目访问url --><url>https://github.com/BigBigFeiFei/es-spring-boot-start</url><timezone>+8</timezone></developer></developers><licenses><license><name>The Apache Software License, Version 2.0</name><url>http://www.apache.org/licenses/LICENSE-2.0.txt</url></license></licenses>

7.发布项目

7.1 idea中点击deploy发布

  做好了以上的配置准备后,我们就可以来发布项目到中央仓库了。

  在idea的项目中点击deploy,运行没有报错,能看到BUILD SUCCESS,说明是上传成功,要注意的是idea配置的maven的setting.xml中server的token-username、token每次点击deploy前都要去后台重新生成一个,然后配置到maven的setting.xml中的sever里面,每deploy前都要去搞一对新的token秘钥对来进行配置,一对只能使用一次,重复使用deploy会报401

image-20240318141515411

  或者是使用命令:

mvn clean deploy -e 
//-e参数可以打印出deploy的相关错误信息,以便排查问题

  mvn命令参考:

https://www.cnblogs.com/tobyhomels/p/15890023.html
https://blog.csdn.net/zdwzzu2006/article/details/130788625

  还有如果你按照老的那个账号的配置pom中的仓库地址是

  老式账号pom中配置了plugin和仓库地址如下,deploy的时候会报401,没有权限,身份认证失败

<plugin><groupId>org.sonatype.plugins</groupId><artifactId>nexus-staging-maven-plugin</artifactId><version>1.6.8</version><extensions>true</extensions><configuration><!--与settings.xml的server.id保持一致 --><serverId>${serverId}</serverId><nexusUrl>https://s01.oss.sonatype.org/</nexusUrl><autoReleaseAfterClose>true</autoReleaseAfterClose></configuration>
</plugin><distributionManagement><snapshotRepository><!--这个id和settings.xml中servers.server.id要相同,因为上传jar需要登录才有权限 --><id>${serverId}</id><name>OSS Snapshots Repository</name><url>https://s01.oss.sonatype.org/content/repositories/snapshots/</url></snapshotRepository><repository><!--这个id和settings.xml中servers.server.id要相同,因为上传jar需要登录才有权限 --><id>${serverId}</id><name>OSS Staging Repository</name><url>https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/</url></repository></distributionManagement>

  当你用新账号注册的账号和密码去登录:

https://s01.oss.sonatype.org/

  你会发现登录不上去,因为这个地址是之前的老的那种方式,官方都要不用这种方式了,所以这种搞就是牛头不对马嘴,让人感到蛋疼,这里也是之前那些旧文章坑文章里面这种搞的,这里是一个大坑。

  新账号的方式需要用如下的插件:

https://central.sonatype.org/publish/publish-portal-maven/#namespace-details-and-actions
<plugin><groupId>org.sonatype.central</groupId><artifactId>central-publishing-maven-plugin</artifactId><version>0.4.0</version><extensions>true</extensions><configuration><publishingServerId>central</publishingServerId><tokenAuth>true</tokenAuth></configuration>
</plugin>

7.2新账号登录后点击发布

登录注册地址:
https://central.sonatype.com/

image-20240318150836168

  发布了之后就删除不了了,看看能把namespace删除之后重新,创建namespace审核通过后去提交一个,这个没有必要去删除namespace,发布了之后删除不了就不要管它的,你修改版本号重新推送去发布即可,根据版本号来发布就是最新的包了,如果已经上传过了,再去执行deploy的话会报错,后台管理会有一条上传的消息说,你这个包已经上传过了,然后你可以把那个上传失败记录删除了。

image-20240318171844298

7.3搜索发布的依赖

image-20240318151021612

  搜索你建立的namespace下的组件名称就可以搜到了

8.github使用生成的token拉取项目

在账号的setting中点击

image-20240318153208287

  然后点击Developer settings:

image-20240318153252402

  创建token:两种方式随便选一种,

image-20240318153359703

  token的过期时间设置长一点,设置几千天(相当于永不过期),不然每次都要去搞一个token,然后给权限,权限设置如下:

image-20240318153741163

image-20240318153808095

  然后拉取代码之后需要进入到项目路径下(比如我git clone 下来一个项目叫xxx,那就进入到xxx目录,然后cmd执行如下命令)设置一下这个token(下面的token设置为自己的)

git remote set-url origin https://你的token@github.com/BigBigFeiFei/项目.git

  这种设置之后,在idea修改代码后就不用输入用户名和密码或token,即使是idea提交弹框输入用户名和token也会校验失败,所以的先这种设置一下,然后直接提交代码就可以提交上去了,不会弹框提示需要验证啥的,这个不知道为啥不支持输入用户名、密码/token记住了,这个是我试了不可以,也不知道为啥,估计是没有找到正确的姿势。

  弹框登录使用账号密码登录会跳转到idea的账号页面,然后去登录github的账号(那首先你就得有一个idea的账户,可以去idea申请注册一个,然后你的idea上登录这个账号,就可以把你idea的一些基本的配置同步到远端的账号上,后面你换电脑了之后,安装新的idea只有重新登录同步远端的账号的配置(setting sync 开启同步)即可,方便快捷的),这种方式可以去试下。

  idea的maven点击deploy控制台有中文乱码解决:设置maven的运行时的虚拟机参数文件编码为GBK即可

-Dfile.encoding=GBK

image-20240318161951189

9.总结

  由于我之前不是写了几个好用的start,然后我就想着能不能发布到国外的中央仓库上,给大家提供一个依赖,引入即可,然后我就去网上看了一些教程,结果实践下来发下,全部是过时的教程了,全网都没有一篇可行的教程么?然后我就通过看之前那些旧的教程博客和官方的文档,去做了各种的尝试,上传这个尝试也是花了我点时间,摸索了几天还是搞出来了的,去看官方的英文文档,也是有点蛋疼,英文不咋个好就只能用翻译软件翻译着看,或者边看边猜它的大概意思,最终还是发布上去了,特殊说明在访问github或国外的一些网站需要科学上网一下,不然有的是访问不到的,这个需要你去处理解决下这个网络不通的问题,后面我会把我之前写的那几个好用的start开源出来,然后提供出中央仓库的坐标,方便大家直接引入使用,通过本文你可以把自己的轮子发布到中央仓库给大家使用,so easy,敬请期待,希望我的分享对你有所启发和帮助,请一键三连,么么么哒!

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

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

相关文章

代码随想录算法训练营第day27|93.复原IP地址 、 78.子集 、 90.子集II

93.复原IP地址 93. 复原 IP 地址 - 力扣&#xff08;LeetCode&#xff09; 有效 IP 地址 正好由四个整数&#xff08;每个整数位于 0 到 255 之间组成&#xff0c;且不能含有前导 0&#xff09;&#xff0c;整数之间用 . 分隔。 例如&#xff1a;"0.1.2.201" 和 …

18 优先级队列

priority_queue介绍 1.优先级队列是一种容器适配器&#xff0c;根据弱排序标准&#xff0c;它的第一个元素总是最大的 2.此上下文类似于堆&#xff0c;堆中可以随时插入元素&#xff0c;检索最大堆元素 3.优先队列实现为容器适配器&#xff0c;容器适配器即将特定容器类封装作…

基于vue实现bilibili网页

学校要求的实验设计,基于vue实现bilibili网页版,可实现以下功能 (1)基本的悬浮动画和页面渲染 (2)可实现登录和未登录的页面变化 (3)在登录页面的,实现密码判断,或者短信验证方式的倒数功能 (4)实现轮播图 (5)实现预览视频(GIF) (6)页面下拉到一定高度出现top栏以及右下角的返回…

蓝桥杯单片机快速开发笔记——超声波测距

一、原理分析 超声波测距是一种常见的测距方法&#xff0c;其原理是利用超声波在空气中传播的速度恒定且较快的特性&#xff0c;通过发送超声波信号并接收回波&#xff0c;计算出物体与传感器之间的距离。以下是超声波测距的原理和应用&#xff1a; 原理&#xff1a; 发送超声…

gma 2.0.7 (2024.03.16) 更新日志

安装 gma 2.0.7 pip install gma2.0.7网盘下载&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1P0nmZUPMJaPEmYgixoL2QQ?pwd1pc8 提取码&#xff1a;1pc8 注意&#xff1a;此版本没有Linux版&#xff01; 编译gma的Linux虚拟机没有时间修复&#xff0c;本期Linux版继…

hadoop分布式环境搭建

准备三台centos虚拟机 。&#xff08;master&#xff0c;slave1&#xff0c;slave2&#xff09; (hadoop、jdk文件链接&#xff1a;https://pan.baidu.com/s/1wal1CSF1oO2h4dkSbceODg 提取码&#xff1a;4zra) 前四步可参考hadoop伪分布式环境搭建详解-CSDN博客 1.修改主机名…

论文阅读——MoCo

Momentum Contrast for Unsupervised Visual Representation Learning 动量在数学上理解为加权移动平均&#xff1a; yt-1是上一时刻输出&#xff0c;xt是当前时刻输入&#xff0c;m是动量&#xff0c;不想让当前时刻输出只依赖于当前时刻的输入&#xff0c;m很大时&#xff0…

pytorch升级打怪(六)

自动分化 torch.autograd张量、函数和计算图计算梯度禁用梯度跟踪 torch.autograd 在训练神经网络时&#xff0c;最常用的算法是反向传播。在该算法中&#xff0c;根据损失函数相对于给定参数的梯度调整参数&#xff08;模型权重&#xff09;。 为了计算这些梯度&#xff0c;…

软件测试6年,我的心路历程。。。

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 现在的大环境下&#xff0c;各行各业都开始内卷起来&#xff0c;测试也不例外&#xff0c;企业要…

LeetCode——两数相加

目录 一、两数相加 1、题目 2、题目解读 3、代码 二、反转链表 1、题目 2、题目解读 3、代码 三、两数相加 II 1、题目 2、题目解读 3、代码 反转链表再进行计算 借助栈 一、两数相加 1、题目 2. 两数相加 - 力扣&#xff08;Leetcode&#xff09; 给你两个 非…

MS16_016 漏洞利用与安全加固

文章目录 环境说明1 MS16_016 简介2 MS16_016 复现过程3 MS16_016 安全加固 环境说明 渗透机操作系统&#xff1a;kali-linux-2024.1-installer-amd64漏洞复现操作系&#xff1a;cn_windows_7_professional_with_sp1_x64_dvd_u_677031 1 MS16_016 简介 MS16_016 漏洞产生的原因…

WebServer -- 八股(终章)

&#x1f442; Honey Honey - 孙燕姿 - 单曲 - 网易云音乐 目录 &#x1f33c;触类旁通 &#x1f6a9;线程 && 进程 线程与进程的区别 多线程锁是什么 进程 / 线程 / 协程 的区别 线程切换时&#xff0c;需要切换的状态 &#x1f382;并发 && 并行 并…

Java基础夯实——八股文【2024面试题案例代码】

1、Java当中的基本数据类型 Java中常见的数据类型及其对应的字节长度和取值范围如下&#xff1a; byte&#xff1a;1字节&#xff0c;取值范围为-128到127。short&#xff1a;2字节&#xff0c;取值范围为-32,768到32,767。int&#xff1a;4字节&#xff0c;取值范围为-2,147…

【数据挖掘】练习2:数据管理2

课后作业2&#xff1a;数据管理2 一&#xff1a;上机实验2 # 编写函数stat&#xff0c;要求该函数同时计算均值&#xff0c;最大值&#xff0c;最小值&#xff0c;标准差&#xff0c;峰度和偏度。 install.packages("timeDate") library(timeDate) stat <- func…

Swagger Array 使用指南:详解与实践

Swagger 允许开发者定义 API 的路径、请求参数、响应和其他相关信息&#xff0c;以便生成可读性较高的文档和自动生成客户端代码。而 Array &#xff08;数组&#xff09;是一种常见的数据结构&#xff0c;用于存储和组织多个相同类型的数据元素。数组可以有不同的维度和大小&a…

腾讯钟学丹:人工智能成为汽车行业新质生产力 推动数智化升级

近日&#xff0c;在中国电动汽车百人会论坛&#xff08;2024&#xff09;新质生产力分论坛上&#xff0c;腾讯智慧出行副总裁钟学丹发表了题为《AI驱动汽车“新智能”》的主题演讲&#xff0c;分享了腾讯AI大模型等新技术在汽车产业的创新应用成果。 腾讯智慧出行副总裁钟学丹 …

【鸿蒙HarmonyOS开发笔记】如何使用图片插帧将低像素图片清晰放大

开发UI时&#xff0c;当我们的原图分辨率较低并且需要放大显示时&#xff0c;图片会模糊并出现锯齿。如下图所示 这时可以使用interpolation()方法对图片进行插值&#xff0c;使图片显示得更清晰。该方法的参数为ImageInterpolation枚举类型&#xff0c;可选的值有: ImageInte…

主键约束

Oracle从入门到总裁:​​​​​​https://blog.csdn.net/weixin_67859959/article/details/135209645 主键约束可以看成是非空约束再加上唯一约束 也就是说设置为主键列&#xff0c;不能为空&#xff0c;不能重复 像一般用户编号是不可能重复的&#xff0c;也不可能为空的 …

C#开发中方法使用的问题注意

C#开发中&#xff0c;我们在进行方法内嵌时&#xff0c;需要注意方法回传带值时&#xff0c;我们需要对方法回传的值进行一个赋值传递 如下所示 console.WriteLine("请输入你的爱好&#xff1a;"); string aihao Console.ReadLine(); name ChangeData(name);同时在…

找不到msvcp110.dll怎么办,msvcp110.dll丢失的5种修复方法

在计算机使用过程中&#xff0c;我们经常会遇到一些错误提示&#xff0c;其中之一就是“msvcp110.dll丢失”。由于msvcp110.dll是Microsoft Visual C Redistributable Package的重要组成部分&#xff0c;它的缺失会导致依赖于该组件的软件无法正常启动或运行&#xff0c;比如某…