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

news2024/12/29 9:00:53

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/nexus3

docker 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://www.coloradmin.cn/o/1617100.html

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

相关文章

网盘兼职真的能月入过万吗?你适合做哪种网盘分享牛?

1. 分享大容量文件&#xff1a; 提供常见软件安装包、系统镜像、游戏资源等常用的大容量文件&#xff0c;以满足用户的需求。 创建分类目录&#xff0c;便于用户浏览和查找所需文件。 编写详细的文件描述&#xff0c;包括文件版本、适用系统、安装方法等信息&#xff0c;帮助用…

Promise.all 的方法还没执行完就执行了.then

碰见一个问题&#xff0c;接盘了一个有问题的页面修改。 改变日期后 查询很多数据再去重新加载页面上的数据显示相关的组件。 问题就来了。 加载异常捏…… 最后我一通查&#xff1a; 重点来了 是因为这个Promise.all(数组)&#xff0c;里边这个数组的问题。现在是在数据中…

XYCTF 部分wp及学习记录

1.ezmd5 根据题目提示 我们知道应该是要上传两张md5值相同的图片 根据原文链接&#xff1a;cryptanalysis - Are there two known strings which have the same MD5 hash value? - Cryptography Stack Exchange 把保存下来的图片上传一下 得到flag 2.ezhttp 根据原文链接&…

STM32H7的LCD控制学习和应用

STM32H7的LCD控制 LTDC基础硬件框图LTDC时钟源选择LTDC的时序配置LTDC背景层、图层1、图层2和Alpha混合LTDC的水平消隐和垂直消隐LCD的DE同步模式和HV同步模式的区别区分FPS帧率和刷新率避免LTDC刷新撕裂感的解决方法 驱动示例分配栈的大小MPU和Cache配置初始化SDRAM初始化LCD应…

鸿蒙 harmonyos 线程 并发 总结 async promise Taskpool woker(三)多线程并发 Worker

Worker Worker是与主线程并行的独立线程。创建Worker的线程称之为宿主线程&#xff0c;Worker自身的线程称之为Worker线程。创建Worker传入的url文件在Worker线程中执行&#xff0c;可以处理耗时操作但不可以直接操作UI。 Worker主要作用是为应用程序提供一个多线程的运行环境…

办公设备租赁行业内卷瞎扯

办公设备租赁行业内卷瞎扯 最近听到很多同行抱怨&#xff0c;现在市场太卷了&#xff0c;真的有点到了卷不死就往死里卷的节奏&#xff0c;让大家都开始想换地方&#xff0c;或者转行。但是今天&#xff0c;我想从另外一个角度聊一下这个问题&#xff0c;分析一下&#xff0c;…

苍穹外卖day9 (1)用户端历史订单

文章目录 前言用户端历史订单1. 查询历史订单1.1 业务规则1.2 接口设计1.3 代码实现 2. 查询历史订单详情2.1 接口设计2.2 代码实现 3. 取消订单3.1 业务规则3.2 接口设计3.3 代码设计 4. 再来一单4.1 业务规则4.2 接口设计4.3 代码实现 前言 用户端对历史订单的操作&#xff…

机器人系统开发ros2-基础学习16-使用 rosdep 管理依赖关系

1. what is rosdep? rosdep是一个依赖管理实用程序&#xff0c;可以与包和外部库一起使用。它是一个命令行实用程序&#xff0c;用于识别和安装依赖项以构建或安装包。 其本身rosdep并不是一个包管理器&#xff1b;它是一个元包管理器&#xff0c;它使用自己的系统知识和依赖…

Day10案例分页查询,条件查询

对要求进行逻辑分析,传递固定参数{page,pagesize}任意参数{name,gender,begin,end},返回总记录数以及当前页码的记录 不使用pagehelper插件,首先完成SQL语句 SQL语句 //固定头 <?xml version"1.0" encoding"UTF-8" ?> <!DOCTYPE mapperPUBLI…

SQL-DML数据操纵语言(Oracle)

文章目录 DML数据操纵语言常见的字段属性字符型字段属性char(n)varchar2(n)/varchar(n) 数值型字段属性number([p],[s]int 日期型字段属性DATEtimestamp 如何查看字段属性增加数据INSERT快捷插入 删除数据DELETE修改数据UPDATE DML数据操纵语言 定义 是针对数据做处理&#xf…

JavaScript中的map()方法详解

1. map() 的返回值是一个新的数组&#xff0c;新数组中的元素为 “原数组调用函数处理过后的值” 2. 简单使用&#xff1a;遍历整个数组&#xff0c;将大于4的元素乘以2 const array [2, 3, 4, 4, 5, 6]console.log("array",array) const map array.map(x > {…

【THM】Linux Privilege Escalation(权限提升)-初级渗透测试

介绍 权限升级是一个旅程。没有灵丹妙药,很大程度上取决于目标系统的具体配置。内核版本、安装的应用程序、支持的编程语言、其他用户的密码是影响您通往 root shell 之路的几个关键要素。 该房间旨在涵盖主要的权限升级向量,并让您更好地了解该过程。无论您是参加 CTF、参加…

什么?双核A7双网口核心板只要49?

“性价比之王” 触觉智能IDO-SOM2D0X系列基于SigmaStar SSD201/202 SoC的超小SOM模组&#xff0c;双核A7 1.2GHz主频&#xff0c;1080P视频解码&#xff0c;支持MIPI/RGB显示接口&#xff0c;支持双以太网&#xff0c;支持SDIO/USB/SPI/I2C/UART/DMIC/I2S&#xff0c;集成音频C…

跨平台手机号:微信手机号授权登录、微信授权登录双登录实现账户生态融合,新时代的身份密钥

小程序厂商的多样性体现在开发工具、服务领域、商业模式等多方面&#xff0c;各厂商凭借独特的技术优势、行业解决方案和市场策略&#xff0c;满足不同企业和用户需求。与此同时&#xff0c;随着移动互联网发展&#xff0c;手机号统一登录成为提升用户体验、简化登录流程的关键…

CTFshow-PWN-栈溢出(pwn36)

存在后门函数&#xff0c;如何利用&#xff1f; 好好好&#xff0c;终于到了这种有后门函数的了 checksec 检查一下&#xff1a; 32 位程序&#xff0c;RELRO 保护部分开启 RWX: Has RWX segments 存在可读可写可执行的段 使用 ida32 看 main 函数 跟进 ctfshow 函数…

T2I-Adapter:学习适配器为文本到图像扩散模型挖掘更多可控能力

文章目录 一、研究动机二、T2I-Adapter的特点三、模型方法&#xff08;一&#xff09;关于stable diffusion&#xff08;二&#xff09;适配器设计1、结构控制2、空间调色板3、多适配器控制 &#xff08;三&#xff09;模型优化训练期间的非均匀时间步采样 一、研究动机 T2I模…

安卓手机如何改ip地址?探索方法与注意事项

在数字时代&#xff0c;IP地址成为了我们在线身份的重要标识。对于安卓手机用户而言&#xff0c;了解如何修改IP地址可能涉及多种场景&#xff0c;那么&#xff0c;如何安全、有效地进行这一操作呢&#xff1f;下面将为您提供相关方法&#xff0c;并探讨修改IP地址时的注意事项…

国外问卷调查如何做?需要借助海外住宅IP吗?

在数字化时代&#xff0c;国外问卷调查不仅是了解市场需求的重要手段&#xff0c;还成为了一项能够赚取额外收入的方式。随着全球范围内消费者行为的多样化&#xff0c;各类企业和机构越来越需要了解不同地区的用户观点和偏好&#xff0c;以优化产品和服务。 一、国外问卷调查…

接口测试和Mock学习路线(中)

1.什么是 swagger Swagger 是一个用于生成、描述和调用 RESTful 接口的 WEB 服务。 通俗的来讲&#xff0c;Swagger 就是将项目中所有想要暴露的接口展现在页面上&#xff0c;并且可以进行接口调用和测试的服务。 现在大部分的项目都使用了 swagger&#xff0c;因为这样后端…

基于STM32实现流水灯【Proteus仿真】

详情更多 wechat&#xff1a;嵌入式工程师成长日记 https://mp.weixin.qq.com/s?__bizMzg4Mzc3NDUxOQ&mid2247485624&idx1&sn4e553234c2624777409bd2067a07aad8&chksmcf430de0f83484f6189b119d9d83ea6e6f2a85d13afaa04d218483918231c38e6382d3007061&tok…