使用Docker搭建本地Nexus私有仓库

0-1开始Java语言编程之路
一、Ubuntu下Java语言环境搭建
二、Ubuntu下Docker环境安装
三、使用Docker搭建本地Nexus Maven私有仓库
四、Ubuntu下使用VisualStudioCode进行Java开发

你需要Nexus

Java应用编译构建的一种主流方式就是通过Maven, Maven可以很方便的管理Java应用的各种依赖包。但是在默认情况下,maven在进行java应用编译的时候,会从maven远程仓库下载相应的依赖包。Maven公共仓库是在国外的,网络不好的情况下,依赖包的下载会相当的耗时,这时私有库就派上了用场。

通过Docker 快速搭建Nexus私有仓库

Nexus是一款开源的私有仓库,他们也提供了官方的docker镜像,使用docker部署起来非常的方便,不过也有一些小细节需要我们注意,下面我们一步一步来搭建这个本地私用库吧。

拉取最新Nexus镜像

docker pull sonatype/nexus3docker images
REPOSITORY                    TAG            IMAGE ID       CREATED         SIZE
prom/prometheus-linux-amd64   latest         051cb67876a6   6 days ago      262MB
apache/apisix                 3.9.0-debian   5e90db4294cd   2 weeks ago     326MB
sonatype/nexus3               latest         b630de26992b   4 months ago    570MB
hello-world                   latest         d2c94e258dcb   11 months ago   13.3kB
bitnami/etcd                  3.5.7          985a23c47893   12 months ago   146MB

我们可以看到 sonatype/nexus3这个镜像,570MB大小,所以下载的时候,需要一些时间,请大家耐心等待。

创建nexus数据卷

Nexus需要从远程仓库同步依赖库,所以需要持久化存储这些依赖库到本地,因此我们需要选创建一个数据卷。

另外,在Nexus第一次启动时,会在数据卷中创建初始密码文件,我们需要查看该文件,获得初始密码我们才能进行进一步的Nexus初始化工作。

#创建一个名为 nexus-data的数据卷
docker volume create --name nexus3#查看数据卷信息
docker volume inspect nexus3
[{"CreatedAt": "2024-04-17T16:32:30+08:00","Driver": "local","Labels": null,"Mountpoint": "/var/lib/docker/volumes/nexus3/_data","Name": "nexus3","Options": null,"Scope": "local"}
]root@txzq1899-ubuntu: cd /var/lib/docker/volumes/nexus3/_data
root@txzq1899-ubuntu:/var/lib/docker/volumes/nexus3/_data# pwd
/var/lib/docker/volumes/nexus3/_data
root@txzq1899-ubuntu:/var/lib/docker/volumes/nexus3/_data# ll
总计 80
drwxr-xr-x  14  200  200  4096  417 16:34 ./
drwx-----x   3 root root  4096  417 16:32 ../
-rw-r--r--   1  200  200    36  417 16:33 admin.password
drwxr-xr-x   3  200  200  4096  417 16:34 blobs/
drwxr-xr-x 336  200  200 12288  417 16:33 cache/
drwxr-xr-x   7  200  200  4096  417 16:33 db/
drwxr-xr-x   3  200  200  4096  417 16:34 elasticsearch/
drwxr-xr-x   3  200  200  4096  417 16:33 etc/
drwxr-xr-x   2  200  200  4096  417 16:33 generated-bundles/
drwxr-xr-x   2  200  200  4096  417 16:33 instances/
-rw-r--r--   1  200  200     1  417 16:33 karaf.pid
drwxr-xr-x   3  200  200  4096  417 16:33 keystores/
-rw-r--r--   1  200  200    14  417 16:33 lock
drwxr-xr-x   3  200  200  4096  417 16:34 log/
drwxr-xr-x   2  200  200  4096  417 16:33 orient/
-rw-r--r--   1  200  200     5  417 16:33 port
drwxr-xr-x   2  200  200  4096  417 16:33 restore-from-backup/
drwxr-xr-x   7  200  200  4096  417 16:34 tmp/
root@txzq1899-ubuntu:/var/lib/docker/volumes/nexus3/_data# 

这里要注意docker默认将数据卷存放在
/var/lib/docker/volumes 目录,而这个目录需要root权限才能访问。

创建并运行Nexus容器

  • –name nexus3
    • 指定容器名称为 nexus3
  • -e NEXUS_CONTEXT=nexus
    • 指定访问上下文,即通过http://localhost:8081/nexus访问
  • INSTALL4J_ADD_VM_PARAMS
    • 调整JVM参数
  • -v nexus3:/nexus-data
    • 映射数据卷
docker run -d -p 8081:8081 \--name nexus3 -e NEXUS_CONTEXT=nexus \-e INSTALL4J_ADD_VM_PARAMS="-Xms1024m -Xmx1024m -XX:MaxDirectMemorySize=1024m" \-v nexus3:/nexus-data \sonatype/nexus3 

查看容器日志

#Nexus 初次启动会比较慢,我们可以查看nexus3的容器日志。
#当我们看到 Started Sonatype Nexus OSS 3.63.0-01 
#就表示Nexus 已经启动成功了。
docker logs -f nexus3
2024-04-17 08:34:21,619+0000 INFO  [jetty-main-1] *SYSTEM org.sonatype.nexus.siesta.SiestaServlet - JAX-RS RuntimeDelegate: org.sonatype.nexus.siesta.internal.resteasy.SisuResteasyProviderFactory@2cba0cc4
2024-04-17 08:34:21,663+0000 INFO  [jetty-main-1] *SYSTEM org.jboss.resteasy.plugins.validation.i18n - RESTEASY008550: Unable to find CDI supporting ValidatorFactory. Using default ValidatorFactory
2024-04-17 08:34:23,205+0000 INFO  [jetty-main-1] *SYSTEM org.sonatype.nexus.siesta.SiestaServlet - Initialized
2024-04-17 08:34:23,215+0000 INFO  [jetty-main-1] *SYSTEM org.sonatype.nexus.repository.httpbridge.internal.ViewServlet - Initialized
2024-04-17 08:34:23,240+0000 INFO  [FelixStartLevel] *SYSTEM org.sonatype.nexus.extender.NexusLifecycleManager - Start TASKS
2024-04-17 08:34:23,279+0000 INFO  [jetty-main-1] *SYSTEM org.eclipse.jetty.server.handler.ContextHandler - Started o.e.j.w.WebAppContext@1705e4a6{Sonatype Nexus,/nexus,file:///opt/sonatype/nexus/public/,AVAILABLE}
2024-04-17 08:34:23,404+0000 INFO  [jetty-main-1] *SYSTEM org.eclipse.jetty.server.AbstractConnector - Started ServerConnector@195ab70a{HTTP/1.1, (http/1.1)}{0.0.0.0:8081}
2024-04-17 08:34:23,405+0000 INFO  [jetty-main-1] *SYSTEM org.eclipse.jetty.server.Server - Started @81852ms
2024-04-17 08:34:23,407+0000 INFO  [jetty-main-1] *SYSTEM org.sonatype.nexus.bootstrap.jetty.JettyServer - 
-------------------------------------------------Started Sonatype Nexus OSS 3.63.0-01-------------------------------------------------
2024-04-17 08:34:23,413+0000 INFO  [FelixStartLevel] *SYSTEM org.sonatype.nexus.quartz.internal.task.QuartzTaskInfo - Task 'Metric aggregation' [content.usage.aggregation] : state=WAITING
2024-04-17 08:34:23,498+0000 INFO  [FelixStartLevel] *SYSTEM org.sonatype.nexus.scheduling.TaskSchedulerImpl - Task 'Metric aggregation' [content.usage.aggregation] scheduled: cron

访问Nexus

  • 先打开admin.password文件,复制初始密码

打开本地Nexus:
Local Nexus3

第一次登录Nexus
第一次登录后,会提示修改管理员密码

配置阿里云代理

进到Repository设置页面,点Create Rrepository,Repository 管理

这里我们选择《maven2 proxy》选择maven2 proxy

  • 输入Name : aliyun
  • Proxy 设置,输入Remote storage :
    • http://maven.aliyun.com/nexus/content/groups/public

保存配置
在这里插入图片描述

配置maven-public(group)

回到Repository管理页面,找到maven-public,并点击 maven-public进入编辑页面

  • 在Member repositories 左则 Available List中的aliyun 添加右则的 Members中,并将aliyun 上移至第一的位置。
  • 点Save进行保存
    在这里插入图片描述

测试验证

到这里本地的Nexus 私有库就已经基本上搭建好了。
在使用之前,首先要在maven的配置文件中使用我们本地的私有仓库

通常在~/.m2/目录下,有一个 setting.xml 文件,如果没有,请创建。

<?xml version="1.0" encoding="UTF-8"?><settings xmlns="http://maven.apache.org/SETTINGS/1.2.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.2.0 https://maven.apache.org/xsd/settings-1.2.0.xsd"><localRepository>/home/vian/Dev_Environment/maven_repository</localRepository><servers><server><id>maven-releases</id><username>nexus-user</username><password>hello-world</password></server><server><id>maven-snapshots</id><username>nexus-user</username><password>hello-world</password></server><server><id>nexus</id><username>nexus-user</username><password>hello-world</password></server><server><id>maven-central</id><username>nexus-user</username><password>hello-world</password></server></servers><mirrors><mirror><id>maven-default-http-blocker</id><mirrorOf>external:http:*</mirrorOf><name>Pseudo repository to mirror external repositories initially using HTTP.</name><url>http://0.0.0.0/</url><blocked>true</blocked></mirror><mirror><id>nexus</id><name>本地Nexus私有仓库镜像</name><url>http://localhost:8081/nexus/repository/maven-public/</url><mirrorOf>*,!spring-milestones</mirrorOf></mirror></mirrors><profiles><profile><id>txzq-dev</id><repositories><repository><id>nexus</id><name>Public Repositories</name><url>http://localhost:8081/nexus/repository/maven-public/</url><releases><enabled>true</enabled></releases></repository><repository><id>maven-central</id><name>Central Repositories</name><url>http://localhost:8081/nexus/repository/maven-central/</url><releases><enabled>true</enabled></releases><snapshots><enabled>false</enabled></snapshots></repository><repository><id>maven-releases</id><name>Release Repositories</name><url>http://localhost:8081/nexus/repository/maven-releases/</url><releases><enabled>true</enabled></releases><snapshots><enabled>false</enabled></snapshots></repository><repository><id>maven-snapshots</id><name>Snapshot Repositories</name><url>http://localhost:8081/nexus/repository/maven-snapshots/</url><releases><enabled>true</enabled></releases><snapshots><enabled>true</enabled></snapshots></repository></repositories></profile></profiles><activeProfiles><activeProfile>txzq-dev</activeProfile></activeProfiles>
</settings>

我们通过Visual Studio Code 创建一个SpringBoot 项目,并找开该项目。
在这里插入图片描述
打开一个终端,通过Maven进行一次编译

mvn clean install

查看编译过程,我们可以看到在repackage阶段,已经从本地nexus下载依赖包了。


vian@txzq1899-ubuntu:/media/vian/Work/Workspace/hello-world$ mvn clean install[INFO] Scanning for projects...
[INFO] 
[INFO] ------------------------< com.txzq:hello-world >------------------------
[INFO] Building hello-world 0.0.1-SNAPSHOT
[INFO]   from pom.xml
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] --- clean:3.3.2:clean (default-clean) @ hello-world ---
[INFO] Deleting /media/vian/Work/Workspace/hello-world/target
[INFO] 
[INFO] --- resources:3.3.1:resources (default-resources) @ hello-world ---
[INFO] Copying 1 resource from src/main/resources to target/classes
[INFO] Copying 0 resource from src/main/resources to target/classes
[INFO] 
[INFO] --- compiler:3.11.0:compile (default-compile) @ hello-world ---
[INFO] Changes detected - recompiling the module! :source
[INFO] Compiling 1 source file with javac [debug release 17] to target/classes
[INFO] 
[INFO] --- resources:3.3.1:testResources (default-testResources) @ hello-world ---
[INFO] skip non existing resourceDirectory /media/vian/Work/Workspace/hello-world/src/test/resources
[INFO] 
[INFO] --- compiler:3.11.0:testCompile (default-testCompile) @ hello-world ---
[INFO] Changes detected - recompiling the module! :dependency
[INFO] Compiling 1 source file with javac [debug release 17] to target/test-classes
[INFO] 
[INFO] --- surefire:3.1.2:test (default-test) @ hello-world ---
[INFO] Using auto detected provider org.apache.maven.surefire.junitplatform.JUnitPlatformProvider
[INFO] 
[INFO] -------------------------------------------------------
[INFO]  T E S T S
[INFO] -------------------------------------------------------
[INFO] Running com.txzq.helloworld.HelloWorldApplicationTests
19:28:21.256 [main] INFO org.springframework.test.context.support.AnnotationConfigContextLoaderUtils -- Could not detect default configuration classes for test class [com.txzq.helloworld.HelloWorldApplicationTests]: HelloWorldApplicationTests does not declare any static, non-private, non-final, nested classes annotated with @Configuration.
19:28:21.413 [main] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper -- Found @SpringBootConfiguration com.txzq.helloworld.HelloWorldApplication for test class com.txzq.helloworld.HelloWorldApplicationTests.   ____          _            __ _ _/\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \\\/  ___)| |_)| | | | | || (_| |  ) ) ) )'  |____| .__|_| |_|_| |_\__, | / / / /=========|_|==============|___/=/_/_/_/:: Spring Boot ::                (v3.2.4)2024-04-17T19:28:21.903+08:00  INFO 183809 --- [hello-world] [           main] c.t.h.HelloWorldApplicationTests         : Starting HelloWorldApplicationTests using Java 17.0.9 with PID 183809 (started by vian in /media/vian/Work/Workspace/hello-world)
2024-04-17T19:28:21.905+08:00  INFO 183809 --- [hello-world] [           main] c.t.h.HelloWorldApplicationTests         : No active profile set, falling back to 1 default profile: "default"
2024-04-17T19:28:23.656+08:00  INFO 183809 --- [hello-world] [           main] c.t.h.HelloWorldApplicationTests         : Started HelloWorldApplicationTests in 2.067 seconds (process running for 3.35)
Java HotSpot(TM) 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 3.697 s -- in com.txzq.helloworld.HelloWorldApplicationTests
[INFO] 
[INFO] Results:
[INFO] 
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
[INFO] 
[INFO] 
[INFO] --- jar:3.3.0:jar (default-jar) @ hello-world ---
[INFO] Building jar: /media/vian/Work/Workspace/hello-world/target/hello-world-0.0.1-SNAPSHOT.jar
[INFO] 
[INFO] --- spring-boot:3.2.4:repackage (repackage) @ hello-world ---
Downloading from nexus: http://localhost:8081/nexus/repository/maven-public/org/springframework/boot/spring-boot-buildpack-platform/3.2.4/spring-boot-buildpack-platform-3.2.4.pom
Downloaded from nexus: http://localhost:8081/nexus/repository/maven-public/org/springframework/boot/spring-boot-buildpack-platform/3.2.4/spring-boot-buildpack-platform-3.2.4.pom (3.2 kB at 2.7 kB/s)
Downloading from nexus: http://localhost:8081/nexus/repository/maven-public/org/springframework/boot/spring-boot-loader-tools/3.2.4/spring-boot-loader-tools-3.2.4.pom
Downloaded from nexus: http://localhost:8081/nexus/repository/maven-public/org/springframework/boot/spring-boot-loader-tools/3.2.4/spring-boot-loader-tools-3.2.4.pom (2.2 kB at 4.7 kB/s)
Downloading from nexus: http://localhost:8081/nexus/repository/maven-public/org/springframework/boot/spring-boot-buildpack-platform/3.2.4/spring-boot-buildpack-platform-3.2.4.jar
Downloaded from nexus: http://localhost:8081/nexus/repository/maven-public/org/springframework/boot/spring-boot-buildpack-platform/3.2.4/spring-boot-buildpack-platform-3.2.4.jar (272 kB at 331 kB/s)
Downloading from nexus: http://localhost:8081/nexus/repository/maven-public/org/springframework/boot/spring-boot-loader-tools/3.2.4/spring-boot-loader-tools-3.2.4.jar
Downloaded from nexus: http://localhost:8081/nexus/repository/maven-public/org/springframework/boot/spring-boot-loader-tools/3.2.4/spring-boot-loader-tools-3.2.4.jar (434 kB at 732 kB/s)
[INFO] Replacing main artifact /media/vian/Work/Workspace/hello-world/target/hello-world-0.0.1-SNAPSHOT.jar with repackaged archive, adding nested dependencies in BOOT-INF/.
[INFO] The original artifact has been renamed to /media/vian/Work/Workspace/hello-world/target/hello-world-0.0.1-SNAPSHOT.jar.original
[INFO] 
[INFO] --- install:3.1.1:install (default-install) @ hello-world ---
[INFO] Installing /media/vian/Work/Workspace/hello-world/pom.xml to /home/vian/Dev_Environment/maven_repository/com/txzq/hello-world/0.0.1-SNAPSHOT/hello-world-0.0.1-SNAPSHOT.pom
[INFO] Installing /media/vian/Work/Workspace/hello-world/target/hello-world-0.0.1-SNAPSHOT.jar to /home/vian/Dev_Environment/maven_repository/com/txzq/hello-world/0.0.1-SNAPSHOT/hello-world-0.0.1-SNAPSHOT.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  12.542 s
[INFO] Finished at: 2024-04-17T19:28:29+08:00
[INFO] ------------------------------------------------------------------------

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

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

相关文章

wsl2 中docker安装完毕后无法正常启动

wsl2 中docker安装完毕后无法正常启动 1、背景2、目标3、环境4、原因4、操作5.1、查看配置5.2、 切换配置5.3、启动docker5.4、验证docker 1、背景 在win10中安装wsl2体验linux操作系统&#xff0c;按照docker官网步骤安装&#xff0c;安装完毕后面提示 $ docker ps Cannot co…

每日一题 — 二分查找

704. 二分查找 - 力扣&#xff08;LeetCode&#xff09; 朴素二分查找模板&#xff1a; while(.......){//防止溢出int mid left(right - left)/2;if(........){right mid-1;}else if(......){left mid1;}else{return mid;}} 代码&#xff1a; public int search(int[] num…

【前端】项目中如何快速构建vue脚手架

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、vue脚手架介绍二、构建vue脚手架三、总结 前言 随着开发语言的普及&#xff0c;越来越多的开发框架需要搭建ue脚手架来进行敏捷开发&#xff0c;本文主要介…

软考高项(已通过,E类人才)-学习笔记材料梳理汇总

软考高项&#xff0c;即软考高级信息系统项目管理师&#xff0c;全国计算机技术与软件专业技术资格&#xff08;水平&#xff09;考试中的高级水平测试。适用于从事计算机应用技术、软件、网络、信息系统和信息服务等领域的专业人员&#xff0c;以及各级企业管理人员和从事项目…

MySQL学习笔记5——函数和索引

函数和索引 一、函数1、数学函数2、字符串函数3、条件判断函数 二、索引1、索引是什么2、单字段索引3、组合索引4、总结 一、函数 MySQL提供了很多功能强大&#xff0c;而且使用起来非常方便的函数&#xff0c;包括数学函数、字符串处理函数和条件判断函数等。 1、数学函数 …

Spring Cloud面试篇

面试篇-nacos面试题 1. springboot常见组件 注册中心组件&#xff1a;Eureka、Nacos 负载均衡组件&#xff1a;Ribbon 远程调用组件&#xff1a;OpenFeign 网关组件&#xff1a;Zuul、Gateway 服务保护组件&#xff1a;Hystrix、Sentinel 服务配置管理组件&#xff1a;SpringCl…

大模型的研究新方向:混合专家模型(MoE)

大模型的发展已经到了一个瓶颈期,包括被业内所诟病的罔顾事实而产生的“幻觉”问题、深层次的逻辑理解能力、数学推理能力等,想要解决这些问题就不得不继续增加模型的复杂度。随着不同应用场景的实际需求,大模型的参数会变得越来越大,复杂性和规模不断的增加,尤其是在多模…

18.基础乐理-音阶是什么、有什么用

音阶&#xff1a; 将调式中的音&#xff0c;从以主音开始到以主音结束&#xff0c;由低到高&#xff08;叫做上行&#xff08;xing&#xff09;&#xff09;&#xff0c;或由高到低&#xff08;叫做下行&#xff08;xing&#xff09;&#xff09;&#xff0c;以阶梯状排列起来&…

Bingbong的回文路径

Here 利用回文串&#xff0c;从左往右与从右往左的hash值相同来判断从左往右&#xff0c;例&#xff1a;从右往左&#xff0c;例&#xff1a;由于在树上&#xff0c;考虑建两颗树&#xff0c;一颗根为最高位&#xff08;up&#xff09;&#xff0c;一棵根为最低位&#xff08;…

Rust 使用结构体组织相关联的数据

目录 结构体的定义和实例化 使用字段初始化简写语法使用结构体更新语法从其他实例创建实例使用没有命名字段的元组结构体来创建不同的类型没有任何字段的类单元结构体结构体示例程序 通过派生 trait 增加实用功能方法语法 定义方法带有更多参数的方法关联函数多个 impl 块本文有…

大厂常见算法50题-反转链表

专栏持续更新50道算法题&#xff0c;都是大厂高频算法题&#xff0c;建议关注。 文章目录 解法参考链接题目解法一 双指针解法二 递归解法三 妖魔化的双指针总结 解法参考链接 题目 解法一 双指针 定义两个指针&#xff1a; pre 和 cur。pre 在前 cur 在后。每次让 pre的 nex…

Day4 商品管理

Day4 商品管理 这里会总结构建项目过程中遇到的问题&#xff0c;以及一些个人思考&#xff01;&#xff01; 学习方法&#xff1a; 1 github源码 文档 官网 2 内容复现 &#xff0c;实际操作 项目源码同步更新到github 欢迎大家star~ 后期会更新并上传前端项目 编写品牌服务 …

在线预约订房酒店小程序源码系统 带完整的安装代码包以及=安装部署教程

传统的酒店预订方式往往依赖于电话、邮件或者到店咨询&#xff0c;这种方式不仅效率低下&#xff0c;而且容易造成信息不准确、沟通不畅等问题。随着智能手机的普及和移动互联网的发展&#xff0c;用户对于随时随地、方便快捷地进行酒店预订的需求日益增强。小编给大家分享一款…

[MySQL]运算符

1. 算术运算符 (1). 算术运算符 : , -, *, / 或 DIV, % 或MOD. (2). 例 : (3). 注 : DUAL是伪表.可以看到4/2结果为小数&#xff0c;并不会截断小数部分.(可能与其他语言不同&#xff0c;比如java中&#xff0c;两个操作数如果是整数&#xff0c;则计算得到的也是整数&…

羊大师:夏季羊奶的好处有哪些?

夏季羊奶的好处主要包括以下几点 1.增强免疫力&#xff1a;羊奶中的钙元素丰富&#xff0c;能有效为身体补充营养物质&#xff0c;增强自身的免疫能力。羊奶还富含上皮细胞生长因子&#xff08;EGF&#xff09;&#xff0c;对人体鼻腔、咽喉、血管、肠胃等黏膜有良好的修复作用…

Qt 跨平台开发的一丢丢总结

Qt 跨平台开发 文章目录 Qt 跨平台开发摘要第一 \ & /第二 神奇{不能换行显示第三 预处理宏 关键字&#xff1a; Qt、 win、 linux、 lib、 MSVC 摘要 最近一直在琢磨Qt跨平台开发的问题&#xff0c;缘由有以下几个&#xff0c; 首先第一个&#xff0c;我们目前开发…

几种比Serv-u更好满足企业的替代工具方案

很多目前企业面临的挑战是如何在保障数据安全的同时&#xff0c;提高文件传输的效率。传统的FTP服务器&#xff0c;如Serv-U&#xff0c;虽然长期服务于文件共享与传输&#xff0c;但在新兴需求面前显得力不从心。 于是企业开始寻求更先进的解决方案以应对跨地域、大容量的文件…

Vue 3中的ref和toRefs:响应式状态管理利器

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

【图说】VMware Ubuntu22.04 详细安装教程

前言 无论是从事 Linux 开发工作&#xff0c;还是希望电脑运行双系统&#xff0c;VMware 虚拟机都是我们日常工作不可或缺的工具。本章将会重点介绍 VMware 安装流程&#xff0c;以及在 VMware 上如何运行、使用 Ubuntu22.04 系统。 一、VMware 下载安装 1.1 VMware 官网下载…

【Hello算法】 > 第 3 关 >栈与队列

数据结构 之 数组与链表 1 栈 / 栈的常见操作、实现、应用2 队列 /队列的常见操作、实现、应用3 双向队列4 Tips ———————————————————————————————————————————————————————————- ————————————————…